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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1403) hide show
  1. package/out/analyze-query/src/bin-analyze.js +258 -236
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/bin-transform.js +31 -23
  4. package/out/analyze-query/src/bin-transform.js.map +1 -1
  5. package/out/analyze-query/src/explain-queries.js +13 -16
  6. package/out/analyze-query/src/explain-queries.js.map +1 -1
  7. package/out/analyze-query/src/run-ast.d.ts +3 -2
  8. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  9. package/out/analyze-query/src/run-ast.js +79 -73
  10. package/out/analyze-query/src/run-ast.js.map +1 -1
  11. package/out/ast-to-zql/src/ast-to-zql.js +146 -180
  12. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  13. package/out/ast-to-zql/src/bin.js +51 -54
  14. package/out/ast-to-zql/src/bin.js.map +1 -1
  15. package/out/ast-to-zql/src/format.js +15 -14
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +223 -0
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -0
  19. package/out/otel/src/enabled.js +15 -15
  20. package/out/otel/src/enabled.js.map +1 -1
  21. package/out/otel/src/log-options.js +36 -31
  22. package/out/otel/src/log-options.js.map +1 -1
  23. package/out/otel/src/maybe-time.js +14 -11
  24. package/out/otel/src/maybe-time.js.map +1 -1
  25. package/out/otel/src/span.js +30 -27
  26. package/out/otel/src/span.js.map +1 -1
  27. package/out/otel/src/test-log-config.js +10 -7
  28. package/out/otel/src/test-log-config.js.map +1 -1
  29. package/out/otel/src/version.js +5 -2
  30. package/out/otel/src/version.js.map +1 -1
  31. package/out/replicache/src/async-iterable-to-array.js +11 -0
  32. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  33. package/out/replicache/src/bg-interval.js +38 -0
  34. package/out/replicache/src/bg-interval.js.map +1 -0
  35. package/out/replicache/src/btree/diff.js +8 -0
  36. package/out/replicache/src/btree/diff.js.map +1 -0
  37. package/out/replicache/src/btree/node.js +400 -0
  38. package/out/replicache/src/btree/node.js.map +1 -0
  39. package/out/replicache/src/btree/read.d.ts +3 -2
  40. package/out/replicache/src/btree/read.d.ts.map +1 -1
  41. package/out/replicache/src/btree/read.js +266 -0
  42. package/out/replicache/src/btree/read.js.map +1 -0
  43. package/out/replicache/src/btree/splice.js +83 -0
  44. package/out/replicache/src/btree/splice.js.map +1 -0
  45. package/out/replicache/src/btree/write.d.ts +1 -1
  46. package/out/replicache/src/btree/write.d.ts.map +1 -1
  47. package/out/replicache/src/btree/write.js +163 -0
  48. package/out/replicache/src/btree/write.js.map +1 -0
  49. package/out/replicache/src/call-default-fetch.js +34 -0
  50. package/out/replicache/src/call-default-fetch.js.map +1 -0
  51. package/out/replicache/src/connection-loop-delegates.js +34 -0
  52. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  53. package/out/replicache/src/connection-loop.js +251 -0
  54. package/out/replicache/src/connection-loop.js.map +1 -0
  55. package/out/replicache/src/cookies.js +40 -0
  56. package/out/replicache/src/cookies.js.map +1 -0
  57. package/out/replicache/src/dag/chunk.js +59 -0
  58. package/out/replicache/src/dag/chunk.js.map +1 -0
  59. package/out/replicache/src/dag/gc.js +117 -0
  60. package/out/replicache/src/dag/gc.js.map +1 -0
  61. package/out/replicache/src/dag/key.js +20 -0
  62. package/out/replicache/src/dag/key.js.map +1 -0
  63. package/out/replicache/src/dag/lazy-store.d.ts +2 -1
  64. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  65. package/out/replicache/src/dag/lazy-store.js +515 -0
  66. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  67. package/out/replicache/src/dag/store-impl.js +183 -0
  68. package/out/replicache/src/dag/store-impl.js.map +1 -0
  69. package/out/replicache/src/dag/store.js +27 -0
  70. package/out/replicache/src/dag/store.js.map +1 -0
  71. package/out/replicache/src/dag/visitor.js +22 -0
  72. package/out/replicache/src/dag/visitor.js.map +1 -0
  73. package/out/replicache/src/db/commit.js +358 -0
  74. package/out/replicache/src/db/commit.js.map +1 -0
  75. package/out/replicache/src/db/index-operation-enum.js +7 -0
  76. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  77. package/out/replicache/src/db/index.js +134 -0
  78. package/out/replicache/src/db/index.js.map +1 -0
  79. package/out/replicache/src/db/meta-type-enum.js +7 -0
  80. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  81. package/out/replicache/src/db/read.d.ts +3 -2
  82. package/out/replicache/src/db/read.d.ts.map +1 -1
  83. package/out/replicache/src/db/read.js +72 -0
  84. package/out/replicache/src/db/read.js.map +1 -0
  85. package/out/replicache/src/db/rebase.d.ts +2 -2
  86. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  87. package/out/replicache/src/db/rebase.js +85 -0
  88. package/out/replicache/src/db/rebase.js.map +1 -0
  89. package/out/replicache/src/db/write.d.ts +2 -1
  90. package/out/replicache/src/db/write.d.ts.map +1 -1
  91. package/out/replicache/src/db/write.js +296 -0
  92. package/out/replicache/src/db/write.js.map +1 -0
  93. package/out/replicache/src/deleted-clients.js +104 -0
  94. package/out/replicache/src/deleted-clients.js.map +1 -0
  95. package/out/replicache/src/error-responses.js +34 -0
  96. package/out/replicache/src/error-responses.js.map +1 -0
  97. package/out/replicache/src/format-version-enum.js +11 -0
  98. package/out/replicache/src/format-version-enum.js.map +1 -0
  99. package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
  100. package/out/replicache/src/frozen-json.js.map +1 -0
  101. package/out/replicache/src/get-default-puller.js +61 -0
  102. package/out/replicache/src/get-default-puller.js.map +1 -0
  103. package/out/replicache/src/get-default-pusher.js +39 -0
  104. package/out/replicache/src/get-default-pusher.js.map +1 -0
  105. package/out/replicache/src/get-kv-store-provider.js +23 -0
  106. package/out/replicache/src/get-kv-store-provider.js.map +1 -0
  107. package/out/replicache/src/hash.js +38 -0
  108. package/out/replicache/src/hash.js.map +1 -0
  109. package/out/replicache/src/http-request-info.js +10 -0
  110. package/out/replicache/src/http-request-info.js.map +1 -0
  111. package/out/replicache/src/http-status-unauthorized.js +5 -0
  112. package/out/replicache/src/http-status-unauthorized.js.map +1 -0
  113. package/out/replicache/src/index-defs.js +32 -0
  114. package/out/replicache/src/index-defs.js.map +1 -0
  115. package/out/replicache/src/invoke-kind-enum.js +7 -0
  116. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  117. package/out/{chunk-HCZQVP5R.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
  118. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  119. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
  120. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  121. package/out/replicache/src/kv/idb-store.js +183 -0
  122. package/out/replicache/src/kv/idb-store.js.map +1 -0
  123. package/out/replicache/src/kv/mem-store.js +51 -0
  124. package/out/replicache/src/kv/mem-store.js.map +1 -0
  125. package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
  126. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
  127. package/out/replicache/src/kv/op-sqlite/types.js +6 -0
  128. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
  129. package/out/replicache/src/kv/read-impl.js +27 -0
  130. package/out/replicache/src/kv/read-impl.js.map +1 -0
  131. package/out/{chunk-WPAQ4EPM.js → replicache/src/kv/sqlite-store.js} +15 -19
  132. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  133. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  134. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  135. package/out/replicache/src/kv/write-impl-base.js +57 -0
  136. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  137. package/out/replicache/src/kv/write-impl.js +30 -0
  138. package/out/replicache/src/kv/write-impl.js.map +1 -0
  139. package/out/replicache/src/lazy.js +13 -0
  140. package/out/replicache/src/lazy.js.map +1 -0
  141. package/out/replicache/src/log-options.js +9 -0
  142. package/out/replicache/src/log-options.js.map +1 -0
  143. package/out/replicache/src/make-idb-name.js +13 -0
  144. package/out/replicache/src/make-idb-name.js.map +1 -0
  145. package/out/replicache/src/new-client-channel.js +51 -0
  146. package/out/replicache/src/new-client-channel.js.map +1 -0
  147. package/out/replicache/src/on-persist-channel.js +36 -0
  148. package/out/replicache/src/on-persist-channel.js.map +1 -0
  149. package/out/replicache/src/patch-operation.js +42 -0
  150. package/out/replicache/src/patch-operation.js.map +1 -0
  151. package/out/replicache/src/pending-mutations.js +16 -0
  152. package/out/replicache/src/pending-mutations.js.map +1 -0
  153. package/out/replicache/src/persist/client-gc.js +58 -0
  154. package/out/replicache/src/persist/client-gc.js.map +1 -0
  155. package/out/replicache/src/persist/client-group-gc.js +43 -0
  156. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  157. package/out/replicache/src/persist/client-groups.js +184 -0
  158. package/out/replicache/src/persist/client-groups.js.map +1 -0
  159. package/out/replicache/src/persist/clients.d.ts +3 -2
  160. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  161. package/out/replicache/src/persist/clients.js +353 -0
  162. package/out/replicache/src/persist/clients.js.map +1 -0
  163. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  165. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  167. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  169. package/out/replicache/src/persist/heartbeat.js +48 -0
  170. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  171. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  173. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  174. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  175. package/out/replicache/src/persist/make-client-id.js +12 -0
  176. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  177. package/out/replicache/src/persist/persist.d.ts +2 -2
  178. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  179. package/out/replicache/src/persist/persist.js +183 -0
  180. package/out/replicache/src/persist/persist.js.map +1 -0
  181. package/out/replicache/src/persist/refresh.d.ts +4 -3
  182. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  183. package/out/replicache/src/persist/refresh.js +198 -0
  184. package/out/replicache/src/persist/refresh.js.map +1 -0
  185. package/out/replicache/src/process-scheduler.js +96 -0
  186. package/out/replicache/src/process-scheduler.js.map +1 -0
  187. package/out/replicache/src/pusher.js +33 -0
  188. package/out/replicache/src/pusher.js.map +1 -0
  189. package/out/replicache/src/replicache-impl.d.ts +1 -1
  190. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  191. package/out/replicache/src/replicache-impl.js +1200 -0
  192. package/out/replicache/src/replicache-impl.js.map +1 -0
  193. package/out/replicache/src/report-error.js +6 -0
  194. package/out/replicache/src/report-error.js.map +1 -0
  195. package/out/replicache/src/request-idle.js +13 -0
  196. package/out/replicache/src/request-idle.js.map +1 -0
  197. package/out/replicache/src/scan-iterator.js +146 -0
  198. package/out/replicache/src/scan-iterator.js.map +1 -0
  199. package/out/replicache/src/scan-options.js +45 -0
  200. package/out/replicache/src/scan-options.js.map +1 -0
  201. package/out/replicache/src/set-interval-with-signal.js +12 -0
  202. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  203. package/out/replicache/src/subscriptions.js +355 -0
  204. package/out/replicache/src/subscriptions.js.map +1 -0
  205. package/out/replicache/src/sync/diff.d.ts +3 -2
  206. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  207. package/out/replicache/src/sync/diff.js +72 -0
  208. package/out/replicache/src/sync/diff.js.map +1 -0
  209. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  210. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  211. package/out/replicache/src/sync/ids.js +9 -0
  212. package/out/replicache/src/sync/ids.js.map +1 -0
  213. package/out/replicache/src/sync/patch.js +49 -0
  214. package/out/replicache/src/sync/patch.js.map +1 -0
  215. package/out/replicache/src/sync/pull-error.js +16 -0
  216. package/out/replicache/src/sync/pull-error.js.map +1 -0
  217. package/out/replicache/src/sync/pull.d.ts +3 -2
  218. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  219. package/out/replicache/src/sync/pull.js +301 -0
  220. package/out/replicache/src/sync/pull.js.map +1 -0
  221. package/out/replicache/src/sync/push.js +88 -0
  222. package/out/replicache/src/sync/push.js.map +1 -0
  223. package/out/replicache/src/sync/request-id.js +20 -0
  224. package/out/replicache/src/sync/request-id.js.map +1 -0
  225. package/out/replicache/src/sync/sync-head-name.js +5 -0
  226. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  227. package/out/replicache/src/to-error.js +10 -0
  228. package/out/replicache/src/to-error.js.map +1 -0
  229. package/out/replicache/src/transaction-closed-error.js +19 -0
  230. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  231. package/out/replicache/src/transactions.js +152 -0
  232. package/out/replicache/src/transactions.js.map +1 -0
  233. package/out/replicache/src/version.js +5 -0
  234. package/out/replicache/src/version.js.map +1 -0
  235. package/out/replicache/src/with-transactions.js +28 -0
  236. package/out/replicache/src/with-transactions.js.map +1 -0
  237. package/out/shared/src/abort-error.js +6 -3
  238. package/out/shared/src/abort-error.js.map +1 -1
  239. package/out/shared/src/arrays.js +45 -43
  240. package/out/shared/src/arrays.js.map +1 -1
  241. package/out/shared/src/asserts.js +64 -68
  242. package/out/shared/src/asserts.js.map +1 -1
  243. package/out/shared/src/bigint-json.js +38 -42
  244. package/out/shared/src/bigint-json.js.map +1 -1
  245. package/out/shared/src/binary-search.js +18 -29
  246. package/out/shared/src/binary-search.js.map +1 -1
  247. package/out/shared/src/broadcast-channel.js +24 -0
  248. package/out/shared/src/broadcast-channel.js.map +1 -0
  249. package/out/shared/src/browser-env.js +25 -0
  250. package/out/shared/src/browser-env.js.map +1 -0
  251. package/out/shared/src/btree-set.js +464 -507
  252. package/out/shared/src/btree-set.js.map +1 -1
  253. package/out/shared/src/cache.js +34 -38
  254. package/out/shared/src/cache.js.map +1 -1
  255. package/out/shared/src/centroid.js +24 -24
  256. package/out/shared/src/centroid.js.map +1 -1
  257. package/out/shared/src/config.js +6 -3
  258. package/out/shared/src/config.js.map +1 -1
  259. package/out/shared/src/custom-key-map.js +58 -64
  260. package/out/shared/src/custom-key-map.js.map +1 -1
  261. package/out/shared/src/custom-key-set.js +51 -57
  262. package/out/shared/src/custom-key-set.js.map +1 -1
  263. package/out/shared/src/deep-clone.js +46 -0
  264. package/out/shared/src/deep-clone.js.map +1 -0
  265. package/out/shared/src/deep-merge.d.ts +20 -3
  266. package/out/shared/src/deep-merge.d.ts.map +1 -1
  267. package/out/shared/src/deep-merge.js +27 -0
  268. package/out/shared/src/deep-merge.js.map +1 -0
  269. package/out/shared/src/document-visible.js +74 -0
  270. package/out/shared/src/document-visible.js.map +1 -0
  271. package/out/shared/src/dotenv.js +5 -7
  272. package/out/shared/src/dotenv.js.map +1 -1
  273. package/out/shared/src/error.js +57 -56
  274. package/out/shared/src/error.js.map +1 -1
  275. package/out/shared/src/has-own.js +5 -3
  276. package/out/shared/src/has-own.js.map +1 -1
  277. package/out/shared/src/hash.js +15 -14
  278. package/out/shared/src/hash.js.map +1 -1
  279. package/out/shared/src/iterables.js +71 -73
  280. package/out/shared/src/iterables.js.map +1 -1
  281. package/out/shared/src/json-schema.js +30 -33
  282. package/out/shared/src/json-schema.js.map +1 -1
  283. package/out/shared/src/json.js +128 -143
  284. package/out/shared/src/json.js.map +1 -1
  285. package/out/shared/src/logging-test-utils.js +12 -19
  286. package/out/shared/src/logging-test-utils.js.map +1 -1
  287. package/out/shared/src/logging.d.ts.map +1 -1
  288. package/out/shared/src/logging.js +99 -83
  289. package/out/shared/src/logging.js.map +1 -1
  290. package/out/shared/src/must.js +9 -7
  291. package/out/shared/src/must.js.map +1 -1
  292. package/out/shared/src/navigator.js +5 -0
  293. package/out/shared/src/navigator.js.map +1 -0
  294. package/out/shared/src/object-traversal.d.ts +19 -0
  295. package/out/shared/src/object-traversal.d.ts.map +1 -0
  296. package/out/shared/src/object-traversal.js +27 -0
  297. package/out/shared/src/object-traversal.js.map +1 -0
  298. package/out/shared/src/objects.js +21 -22
  299. package/out/shared/src/objects.js.map +1 -1
  300. package/out/shared/src/options.js +289 -322
  301. package/out/shared/src/options.js.map +1 -1
  302. package/out/shared/src/parse-big-int.js +12 -10
  303. package/out/shared/src/parse-big-int.js.map +1 -1
  304. package/out/shared/src/promise-race.js +20 -0
  305. package/out/shared/src/promise-race.js.map +1 -0
  306. package/out/shared/src/queue.js +119 -122
  307. package/out/shared/src/queue.js.map +1 -1
  308. package/out/shared/src/rand.js +8 -10
  309. package/out/shared/src/rand.js.map +1 -1
  310. package/out/shared/src/random-uint64.js +9 -0
  311. package/out/shared/src/random-uint64.js.map +1 -0
  312. package/out/shared/src/random-values.js +13 -0
  313. package/out/shared/src/random-values.js.map +1 -0
  314. package/out/shared/src/resolved-promises.js +12 -9
  315. package/out/shared/src/resolved-promises.js.map +1 -1
  316. package/out/shared/src/sentinels.js +13 -6
  317. package/out/shared/src/sentinels.js.map +1 -1
  318. package/out/shared/src/set-utils.js +63 -62
  319. package/out/shared/src/set-utils.js.map +1 -1
  320. package/out/shared/src/size-of-value.js +58 -0
  321. package/out/shared/src/size-of-value.js.map +1 -0
  322. package/out/shared/src/sleep.js +45 -53
  323. package/out/shared/src/sleep.js.map +1 -1
  324. package/out/shared/src/string-compare.js +12 -9
  325. package/out/shared/src/string-compare.js.map +1 -1
  326. package/out/shared/src/subscribable.js +34 -0
  327. package/out/shared/src/subscribable.js.map +1 -0
  328. package/out/shared/src/tdigest-schema.js +7 -7
  329. package/out/shared/src/tdigest-schema.js.map +1 -1
  330. package/out/shared/src/tdigest.js +247 -271
  331. package/out/shared/src/tdigest.js.map +1 -1
  332. package/out/shared/src/valita.js +195 -207
  333. package/out/shared/src/valita.js.map +1 -1
  334. package/out/z2s/src/compiler.d.ts.map +1 -1
  335. package/out/z2s/src/compiler.js +437 -310
  336. package/out/z2s/src/compiler.js.map +1 -1
  337. package/out/z2s/src/sql.js +186 -218
  338. package/out/z2s/src/sql.js.map +1 -1
  339. package/out/zero/package.json.js +9 -0
  340. package/out/zero/package.json.js.map +1 -0
  341. package/out/zero/src/adapters/drizzle.js +5 -2
  342. package/out/zero/src/adapters/drizzle.js.map +1 -1
  343. package/out/zero/src/adapters/pg.js +7 -2
  344. package/out/zero/src/adapters/pg.js.map +1 -1
  345. package/out/zero/src/adapters/postgresjs.js +7 -2
  346. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  347. package/out/zero/src/analyze-query.js +1 -1
  348. package/out/zero/src/analyze-query.js.map +1 -1
  349. package/out/zero/src/ast-to-zql.js +1 -1
  350. package/out/zero/src/ast-to-zql.js.map +1 -1
  351. package/out/zero/src/build-schema.js +3 -5
  352. package/out/zero/src/build-schema.js.map +1 -1
  353. package/out/zero/src/change-protocol/v0.js +5 -3
  354. package/out/zero/src/change-protocol/v0.js.map +1 -1
  355. package/out/zero/src/cli.js +2 -2
  356. package/out/zero/src/cli.js.map +1 -1
  357. package/out/zero/src/deploy-permissions.js +1 -1
  358. package/out/zero/src/deploy-permissions.js.map +1 -1
  359. package/out/zero/src/expo-sqlite.js +5 -0
  360. package/out/zero/src/expo-sqlite.js.map +1 -0
  361. package/out/zero/src/op-sqlite.js +5 -0
  362. package/out/zero/src/op-sqlite.js.map +1 -0
  363. package/out/zero/src/pg.js +29 -3
  364. package/out/zero/src/pg.js.map +1 -1
  365. package/out/zero/src/react-native.js +13 -0
  366. package/out/zero/src/react-native.js.map +1 -0
  367. package/out/zero/src/react.js +17 -0
  368. package/out/zero/src/react.js.map +1 -0
  369. package/out/zero/src/server.js +25 -3
  370. package/out/zero/src/server.js.map +1 -1
  371. package/out/zero/src/solid.js +15 -0
  372. package/out/zero/src/solid.js.map +1 -0
  373. package/out/zero/src/sqlite.js +7 -0
  374. package/out/zero/src/sqlite.js.map +1 -0
  375. package/out/zero/src/transform-query.js +1 -1
  376. package/out/zero/src/transform-query.js.map +1 -1
  377. package/out/zero/src/zero-cache-dev.js +135 -126
  378. package/out/zero/src/zero-cache-dev.js.map +1 -1
  379. package/out/zero/src/zero-out.js +6 -6
  380. package/out/zero/src/zero-out.js.map +1 -1
  381. package/out/zero/src/zero.js +71 -0
  382. package/out/zero/src/zero.js.map +1 -0
  383. package/out/zero/src/zqlite.js +11 -3
  384. package/out/zero/src/zqlite.js.map +1 -1
  385. package/out/zero-cache/src/auth/jwt.d.ts +3 -0
  386. package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
  387. package/out/zero-cache/src/auth/jwt.js +33 -38
  388. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  389. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  390. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  391. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  392. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  393. package/out/zero-cache/src/auth/write-authorizer.d.ts +4 -3
  394. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  395. package/out/zero-cache/src/auth/write-authorizer.js +385 -350
  396. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  397. package/out/zero-cache/src/config/network.js +42 -45
  398. package/out/zero-cache/src/config/network.js.map +1 -1
  399. package/out/zero-cache/src/config/normalize.js +86 -83
  400. package/out/zero-cache/src/config/normalize.js.map +1 -1
  401. package/out/zero-cache/src/config/zero-config.d.ts +27 -0
  402. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  403. package/out/zero-cache/src/config/zero-config.js +704 -682
  404. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  405. package/out/zero-cache/src/custom/fetch.d.ts +5 -5
  406. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  407. package/out/zero-cache/src/custom/fetch.js +170 -163
  408. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  409. package/out/zero-cache/src/custom-queries/transform-query.d.ts +7 -0
  410. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  411. package/out/zero-cache/src/custom-queries/transform-query.js +99 -106
  412. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  413. package/out/zero-cache/src/db/create.js +32 -36
  414. package/out/zero-cache/src/db/create.js.map +1 -1
  415. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  416. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  417. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  418. package/out/zero-cache/src/db/lite-tables.js +150 -174
  419. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  420. package/out/zero-cache/src/db/migration-lite.js +170 -165
  421. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  422. package/out/zero-cache/src/db/migration.js +157 -137
  423. package/out/zero-cache/src/db/migration.js.map +1 -1
  424. package/out/zero-cache/src/db/mode-enum.js +9 -4
  425. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  426. package/out/zero-cache/src/db/pg-copy.js +51 -90
  427. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  428. package/out/zero-cache/src/db/pg-to-lite.js +114 -109
  429. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  430. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  431. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  432. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  433. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  434. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  435. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  436. package/out/zero-cache/src/db/specs.d.ts +1 -7
  437. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  438. package/out/zero-cache/src/db/specs.js +66 -40
  439. package/out/zero-cache/src/db/specs.js.map +1 -1
  440. package/out/zero-cache/src/db/statements.d.ts +1 -1
  441. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  442. package/out/zero-cache/src/db/statements.js +59 -52
  443. package/out/zero-cache/src/db/statements.js.map +1 -1
  444. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  445. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  446. package/out/zero-cache/src/db/transaction-pool.js +375 -501
  447. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  448. package/out/zero-cache/src/db/warmup.js +25 -12
  449. package/out/zero-cache/src/db/warmup.js.map +1 -1
  450. package/out/zero-cache/src/observability/events.js +71 -82
  451. package/out/zero-cache/src/observability/events.js.map +1 -1
  452. package/out/zero-cache/src/observability/metrics.js +54 -32
  453. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  454. package/out/zero-cache/src/scripts/decommission.js +47 -43
  455. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  456. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  457. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  458. package/out/zero-cache/src/scripts/permissions.js +107 -99
  459. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  460. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  461. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  462. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  463. package/out/zero-cache/src/server/change-streamer.js +104 -60
  464. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  465. package/out/zero-cache/src/server/inspector-delegate.js +112 -109
  466. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  467. package/out/zero-cache/src/server/logging.d.ts +1 -1
  468. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  469. package/out/zero-cache/src/server/logging.js +26 -19
  470. package/out/zero-cache/src/server/logging.js.map +1 -1
  471. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  472. package/out/zero-cache/src/server/main.js +137 -120
  473. package/out/zero-cache/src/server/main.js.map +1 -1
  474. package/out/zero-cache/src/server/mutator.js +19 -0
  475. package/out/zero-cache/src/server/mutator.js.map +1 -0
  476. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  477. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  478. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  479. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  480. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  481. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  482. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  483. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  484. package/out/zero-cache/src/server/otel-start.js +57 -68
  485. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  486. package/out/zero-cache/src/server/reaper.js +34 -26
  487. package/out/zero-cache/src/server/reaper.js.map +1 -1
  488. package/out/zero-cache/src/server/replicator.js +53 -31
  489. package/out/zero-cache/src/server/replicator.js.map +1 -1
  490. package/out/zero-cache/src/server/runner/main.js +6 -4
  491. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  492. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  493. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  494. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  495. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  496. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  497. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  498. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  499. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  500. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  501. package/out/zero-cache/src/server/syncer.js +124 -63
  502. package/out/zero-cache/src/server/syncer.js.map +1 -1
  503. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  504. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  505. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  506. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  507. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  508. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  509. package/out/zero-cache/src/server/worker-urls.js +21 -0
  510. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  511. package/out/zero-cache/src/services/analyze.d.ts +3 -4
  512. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  513. package/out/zero-cache/src/services/analyze.js +104 -121
  514. package/out/zero-cache/src/services/analyze.js.map +1 -1
  515. package/out/zero-cache/src/services/change-source/column-metadata.js +152 -155
  516. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  517. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  518. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  519. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  520. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  521. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  522. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  523. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  524. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  525. package/out/zero-cache/src/services/change-source/pg/change-source.js +601 -622
  526. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  527. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  528. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  529. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  530. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  531. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  532. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  533. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  534. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  535. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  536. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  537. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  538. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  539. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  540. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  541. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
  542. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  543. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  544. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  545. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  546. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
  547. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  548. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  549. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
  550. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  551. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  552. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  553. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  554. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  555. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  556. package/out/zero-cache/src/services/change-source/protocol/current/control.js +9 -19
  557. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  558. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  559. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  560. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  561. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  562. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  563. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  564. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  565. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  566. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  567. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  568. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  569. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  570. package/out/zero-cache/src/services/change-source/protocol/current.js +35 -7
  571. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  572. package/out/zero-cache/src/services/change-source/replica-schema.js +64 -47
  573. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  574. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -161
  575. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  576. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +13 -4
  577. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  578. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +213 -157
  579. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  580. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  581. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  582. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +234 -355
  583. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  584. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -26
  585. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  586. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  587. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  588. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  589. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  590. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  591. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  592. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +40 -44
  593. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  594. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  595. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  596. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  597. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  598. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  599. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  600. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -37
  601. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  602. package/out/zero-cache/src/services/change-streamer/storer.d.ts +2 -2
  603. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  604. package/out/zero-cache/src/services/change-streamer/storer.js +309 -372
  605. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  606. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -1
  607. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  608. package/out/zero-cache/src/services/change-streamer/subscriber.js +83 -90
  609. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  610. package/out/zero-cache/src/services/heapz.js +21 -25
  611. package/out/zero-cache/src/services/heapz.js.map +1 -1
  612. package/out/zero-cache/src/services/http-service.d.ts +6 -5
  613. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  614. package/out/zero-cache/src/services/http-service.js +61 -59
  615. package/out/zero-cache/src/services/http-service.js.map +1 -1
  616. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  617. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  618. package/out/zero-cache/src/services/life-cycle.js +216 -255
  619. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  620. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  621. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  622. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  623. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  624. package/out/zero-cache/src/services/litestream/commands.js +193 -178
  625. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  626. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  627. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  628. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
  629. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  630. package/out/zero-cache/src/services/mutagen/mutagen.js +271 -267
  631. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  632. package/out/zero-cache/src/services/mutagen/pusher.d.ts +198 -0
  633. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  634. package/out/zero-cache/src/services/mutagen/pusher.js +351 -344
  635. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  636. package/out/zero-cache/src/services/replicator/change-processor.js +483 -530
  637. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  638. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  639. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  640. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  641. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  642. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  643. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  644. package/out/zero-cache/src/services/replicator/replication-status.js +100 -83
  645. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  646. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  647. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  648. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  649. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  650. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  651. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  652. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  653. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  654. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  655. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  656. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  657. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  658. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  659. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  660. package/out/zero-cache/src/services/run-ast.d.ts +9 -3
  661. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  662. package/out/zero-cache/src/services/run-ast.js +87 -79
  663. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  664. package/out/zero-cache/src/services/runner.d.ts +1 -1
  665. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  666. package/out/zero-cache/src/services/runner.js +40 -40
  667. package/out/zero-cache/src/services/runner.js.map +1 -1
  668. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  669. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  670. package/out/zero-cache/src/services/running-state.js +122 -119
  671. package/out/zero-cache/src/services/running-state.js.map +1 -1
  672. package/out/zero-cache/src/services/statz.js +184 -162
  673. package/out/zero-cache/src/services/statz.js.map +1 -1
  674. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  675. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  676. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  677. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  678. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  679. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  680. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  681. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +83 -92
  682. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  683. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  684. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  685. package/out/zero-cache/src/services/view-syncer/cvr-store.js +628 -616
  686. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  687. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  688. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  689. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -694
  690. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  691. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
  692. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  693. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  694. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  695. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +169 -158
  696. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  697. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +14 -13
  698. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  699. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +534 -480
  700. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  701. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -280
  702. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  703. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +53 -120
  704. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  705. package/out/zero-cache/src/services/view-syncer/schema/init.js +171 -150
  706. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  707. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
  708. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  709. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  710. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  711. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  712. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  713. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  714. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  715. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  716. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -3
  717. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  718. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1508 -1307
  719. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  720. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  721. package/out/zero-cache/src/types/error-with-level.js +29 -25
  722. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  723. package/out/zero-cache/src/types/http.js +27 -14
  724. package/out/zero-cache/src/types/http.js.map +1 -1
  725. package/out/zero-cache/src/types/lexi-version.js +46 -31
  726. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  727. package/out/zero-cache/src/types/lite.js +118 -125
  728. package/out/zero-cache/src/types/lite.js.map +1 -1
  729. package/out/zero-cache/src/types/names.js +6 -3
  730. package/out/zero-cache/src/types/names.js.map +1 -1
  731. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  732. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  733. package/out/zero-cache/src/types/pg-types.js +17 -72
  734. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  735. package/out/zero-cache/src/types/pg.d.ts +1 -1
  736. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  737. package/out/zero-cache/src/types/pg.js +213 -233
  738. package/out/zero-cache/src/types/pg.js.map +1 -1
  739. package/out/zero-cache/src/types/processes.d.ts +2 -2
  740. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  741. package/out/zero-cache/src/types/processes.js +95 -143
  742. package/out/zero-cache/src/types/processes.js.map +1 -1
  743. package/out/zero-cache/src/types/profiler.js +29 -30
  744. package/out/zero-cache/src/types/profiler.js.map +1 -1
  745. package/out/zero-cache/src/types/row-key.js +30 -68
  746. package/out/zero-cache/src/types/row-key.js.map +1 -1
  747. package/out/zero-cache/src/types/schema-versions.js +25 -19
  748. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  749. package/out/zero-cache/src/types/shards.js +50 -36
  750. package/out/zero-cache/src/types/shards.js.map +1 -1
  751. package/out/zero-cache/src/types/sql.js +9 -13
  752. package/out/zero-cache/src/types/sql.js.map +1 -1
  753. package/out/zero-cache/src/types/streams.js +245 -254
  754. package/out/zero-cache/src/types/streams.js.map +1 -1
  755. package/out/zero-cache/src/types/strings.js +14 -11
  756. package/out/zero-cache/src/types/strings.js.map +1 -1
  757. package/out/zero-cache/src/types/subscription.js +200 -259
  758. package/out/zero-cache/src/types/subscription.js.map +1 -1
  759. package/out/zero-cache/src/types/url-params.js +35 -30
  760. package/out/zero-cache/src/types/url-params.js.map +1 -1
  761. package/out/zero-cache/src/types/websocket-handoff.d.ts +3 -2
  762. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  763. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  764. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  765. package/out/zero-cache/src/types/ws.js +56 -59
  766. package/out/zero-cache/src/types/ws.js.map +1 -1
  767. package/out/zero-cache/src/workers/connect-params.js +44 -40
  768. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  769. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  770. package/out/zero-cache/src/workers/connection.js +282 -243
  771. package/out/zero-cache/src/workers/connection.js.map +1 -1
  772. package/out/zero-cache/src/workers/mutator.js +24 -0
  773. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  774. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  775. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  776. package/out/zero-cache/src/workers/replicator.js +103 -106
  777. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  778. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  779. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  780. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  781. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  782. package/out/zero-cache/src/workers/syncer.js +192 -169
  783. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  784. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  785. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  786. package/out/zero-client/src/client/bindings.d.ts +9 -8
  787. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  788. package/out/zero-client/src/client/bindings.js +33 -0
  789. package/out/zero-client/src/client/bindings.js.map +1 -0
  790. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  791. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  792. package/out/zero-client/src/client/connection-manager.d.ts +12 -31
  793. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  794. package/out/zero-client/src/client/connection-manager.js +310 -0
  795. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  796. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  797. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  798. package/out/zero-client/src/client/connection.d.ts +45 -2
  799. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  800. package/out/zero-client/src/client/connection.js +103 -0
  801. package/out/zero-client/src/client/connection.js.map +1 -0
  802. package/out/zero-client/src/client/context.d.ts +3 -6
  803. package/out/zero-client/src/client/context.d.ts.map +1 -1
  804. package/out/zero-client/src/client/context.js +104 -0
  805. package/out/zero-client/src/client/context.js.map +1 -0
  806. package/out/zero-client/src/client/crud.d.ts +7 -5
  807. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  808. package/out/zero-client/src/client/crud.js +225 -0
  809. package/out/zero-client/src/client/crud.js.map +1 -0
  810. package/out/zero-client/src/client/custom.d.ts +14 -15
  811. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  812. package/out/zero-client/src/client/custom.js +128 -0
  813. package/out/zero-client/src/client/custom.js.map +1 -0
  814. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  815. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  816. package/out/zero-client/src/client/enable-analytics.js +18 -0
  817. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  818. package/out/zero-client/src/client/error.d.ts +2 -1
  819. package/out/zero-client/src/client/error.d.ts.map +1 -1
  820. package/out/zero-client/src/client/error.js +148 -0
  821. package/out/zero-client/src/client/error.js.map +1 -0
  822. package/out/zero-client/src/client/http-string.js +11 -0
  823. package/out/zero-client/src/client/http-string.js.map +1 -0
  824. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  825. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  826. package/out/zero-client/src/client/inspector/client.js +28 -0
  827. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  828. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  829. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  830. package/out/zero-client/src/client/inspector/inspector.d.ts +6 -2
  831. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  832. package/out/zero-client/src/client/inspector/inspector.js +54 -0
  833. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  834. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +1 -1
  835. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  836. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  837. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  838. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  839. package/out/zero-client/src/client/inspector/query.js +82 -0
  840. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  841. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  842. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  843. package/out/zero-client/src/client/ivm-branch.js +149 -0
  844. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  845. package/out/zero-client/src/client/keys.js +45 -0
  846. package/out/zero-client/src/client/keys.js.map +1 -0
  847. package/out/zero-client/src/client/log-options.js +60 -0
  848. package/out/zero-client/src/client/log-options.js.map +1 -0
  849. package/out/zero-client/src/client/make-mutate-property.d.ts +43 -0
  850. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
  851. package/out/zero-client/src/client/make-mutate-property.js +38 -0
  852. package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
  853. package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
  854. package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
  855. package/out/zero-client/src/client/make-replicache-mutators.js +103 -0
  856. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
  857. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  858. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  859. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  860. package/out/zero-client/src/client/metrics.js +249 -0
  861. package/out/zero-client/src/client/metrics.js.map +1 -0
  862. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  863. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  864. package/out/zero-client/src/client/mutator-proxy.d.ts +1 -2
  865. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
  866. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  867. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  868. package/out/zero-client/src/client/options.d.ts +49 -20
  869. package/out/zero-client/src/client/options.d.ts.map +1 -1
  870. package/out/zero-client/src/client/options.js +11 -0
  871. package/out/zero-client/src/client/options.js.map +1 -0
  872. package/out/zero-client/src/client/query-manager.d.ts +4 -4
  873. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  874. package/out/zero-client/src/client/query-manager.js +377 -0
  875. package/out/zero-client/src/client/query-manager.js.map +1 -0
  876. package/out/zero-client/src/client/reload-error-handler.d.ts +1 -1
  877. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  878. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  879. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  880. package/out/zero-client/src/client/server-option.js +64 -0
  881. package/out/zero-client/src/client/server-option.js.map +1 -0
  882. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  883. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  884. package/out/zero-client/src/client/version.js +5 -0
  885. package/out/zero-client/src/client/version.js.map +1 -0
  886. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  887. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  888. package/out/zero-client/src/client/zero-rep.d.ts +2 -2
  889. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  890. package/out/zero-client/src/client/zero-rep.js +72 -0
  891. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  892. package/out/zero-client/src/client/zero.d.ts +25 -18
  893. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  894. package/out/zero-client/src/client/zero.js +1759 -0
  895. package/out/zero-client/src/client/zero.js.map +1 -0
  896. package/out/zero-client/src/mod.d.ts +13 -16
  897. package/out/zero-client/src/mod.d.ts.map +1 -1
  898. package/out/zero-client/src/util/nanoid.js +21 -0
  899. package/out/zero-client/src/util/nanoid.js.map +1 -0
  900. package/out/zero-client/src/util/socket.js +7 -0
  901. package/out/zero-client/src/util/socket.js.map +1 -0
  902. package/out/zero-protocol/src/analyze-query-result.d.ts +236 -0
  903. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  904. package/out/zero-protocol/src/analyze-query-result.js +159 -25
  905. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  906. package/out/zero-protocol/src/application-error.js +35 -37
  907. package/out/zero-protocol/src/application-error.js.map +1 -1
  908. package/out/zero-protocol/src/ast.d.ts +2 -2
  909. package/out/zero-protocol/src/ast.js +296 -277
  910. package/out/zero-protocol/src/ast.js.map +1 -1
  911. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  912. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  913. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  914. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  915. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  916. package/out/zero-protocol/src/client-schema.js +40 -26
  917. package/out/zero-protocol/src/client-schema.js.map +1 -1
  918. package/out/zero-protocol/src/close-connection.js +11 -18
  919. package/out/zero-protocol/src/close-connection.js.map +1 -1
  920. package/out/zero-protocol/src/connect.d.ts +4 -4
  921. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  922. package/out/zero-protocol/src/connect.js +50 -51
  923. package/out/zero-protocol/src/connect.js.map +1 -1
  924. package/out/zero-protocol/src/custom-queries.d.ts +4 -4
  925. package/out/zero-protocol/src/custom-queries.js +61 -39
  926. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  927. package/out/zero-protocol/src/data.js +9 -4
  928. package/out/zero-protocol/src/data.js.map +1 -1
  929. package/out/zero-protocol/src/delete-clients.js +16 -9
  930. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  931. package/out/zero-protocol/src/down.d.ts +105 -6
  932. package/out/zero-protocol/src/down.d.ts.map +1 -1
  933. package/out/zero-protocol/src/down.js +20 -4
  934. package/out/zero-protocol/src/down.js.map +1 -1
  935. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  936. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  937. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  938. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  939. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  940. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  941. package/out/zero-protocol/src/error.d.ts +17 -17
  942. package/out/zero-protocol/src/error.js +151 -89
  943. package/out/zero-protocol/src/error.js.map +1 -1
  944. package/out/zero-protocol/src/inspect-down.d.ts +315 -18
  945. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  946. package/out/zero-protocol/src/inspect-down.js +72 -54
  947. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  948. package/out/zero-protocol/src/inspect-up.d.ts +10 -6
  949. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  950. package/out/zero-protocol/src/inspect-up.js +39 -26
  951. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  952. package/out/zero-protocol/src/mutation-id.js +9 -5
  953. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  954. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  955. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  956. package/out/zero-protocol/src/mutations-patch.js +16 -17
  957. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  958. package/out/zero-protocol/src/ping.js +9 -4
  959. package/out/zero-protocol/src/ping.js.map +1 -1
  960. package/out/zero-protocol/src/poke.js +55 -72
  961. package/out/zero-protocol/src/poke.js.map +1 -1
  962. package/out/zero-protocol/src/pong.js +9 -4
  963. package/out/zero-protocol/src/pong.js.map +1 -1
  964. package/out/zero-protocol/src/primary-key.js +19 -5
  965. package/out/zero-protocol/src/primary-key.js.map +1 -1
  966. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  967. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  968. package/out/zero-protocol/src/protocol-version.js +7 -59
  969. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  970. package/out/zero-protocol/src/pull.js +26 -19
  971. package/out/zero-protocol/src/pull.js.map +1 -1
  972. package/out/zero-protocol/src/push.d.ts +4 -4
  973. package/out/zero-protocol/src/push.js +179 -176
  974. package/out/zero-protocol/src/push.js.map +1 -1
  975. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  976. package/out/zero-protocol/src/queries-patch.js +29 -22
  977. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  978. package/out/zero-protocol/src/query-hash.js +18 -14
  979. package/out/zero-protocol/src/query-hash.js.map +1 -1
  980. package/out/zero-protocol/src/row-patch.js +29 -20
  981. package/out/zero-protocol/src/row-patch.js.map +1 -1
  982. package/out/zero-protocol/src/up.d.ts +6 -5
  983. package/out/zero-protocol/src/up.d.ts.map +1 -1
  984. package/out/zero-protocol/src/up.js +18 -4
  985. package/out/zero-protocol/src/up.js.map +1 -1
  986. package/out/zero-protocol/src/version.js +9 -4
  987. package/out/zero-protocol/src/version.js.map +1 -1
  988. package/out/zero-react/src/components/inspector.d.ts +3 -2
  989. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  990. package/out/{inspector-GP3CBZRU.js → zero-react/src/components/inspector.js} +4 -9
  991. package/out/zero-react/src/components/inspector.js.map +1 -0
  992. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  993. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  994. package/out/zero-react/src/components/zero-inspector.d.ts +3 -2
  995. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  996. package/out/zero-react/src/components/zero-inspector.js +44 -0
  997. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  998. package/out/zero-react/src/mod.d.ts +1 -3
  999. package/out/zero-react/src/mod.d.ts.map +1 -1
  1000. package/out/zero-react/src/use-query.d.ts +6 -5
  1001. package/out/zero-react/src/use-query.d.ts.map +1 -1
  1002. package/out/{react.js → zero-react/src/use-query.js} +29 -220
  1003. package/out/zero-react/src/use-query.js.map +1 -0
  1004. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  1005. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  1006. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  1007. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  1008. package/out/zero-react/src/use-zero-online.js +14 -0
  1009. package/out/zero-react/src/use-zero-online.js.map +1 -0
  1010. package/out/zero-react/src/zero-provider.d.ts +5 -4
  1011. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  1012. package/out/zero-react/src/zero-provider.js +59 -0
  1013. package/out/zero-react/src/zero-provider.js.map +1 -0
  1014. package/out/zero-schema/src/builder/relationship-builder.js +27 -0
  1015. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
  1016. package/out/zero-schema/src/builder/schema-builder.js +88 -0
  1017. package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
  1018. package/out/zero-schema/src/builder/table-builder.js +129 -0
  1019. package/out/zero-schema/src/builder/table-builder.js.map +1 -0
  1020. package/out/zero-schema/src/compiled-permissions.js +23 -19
  1021. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  1022. package/out/zero-schema/src/name-mapper.js +43 -38
  1023. package/out/zero-schema/src/name-mapper.js.map +1 -1
  1024. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  1025. package/out/zero-schema/src/permissions.js +199 -0
  1026. package/out/zero-schema/src/permissions.js.map +1 -0
  1027. package/out/zero-schema/src/schema-config.js +35 -51
  1028. package/out/zero-schema/src/schema-config.js.map +1 -1
  1029. package/out/zero-server/src/adapters/drizzle.d.ts +1 -1
  1030. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  1031. package/out/zero-server/src/adapters/drizzle.js +83 -100
  1032. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  1033. package/out/zero-server/src/adapters/pg.d.ts +3 -2
  1034. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  1035. package/out/zero-server/src/adapters/pg.js +53 -77
  1036. package/out/zero-server/src/adapters/pg.js.map +1 -1
  1037. package/out/zero-server/src/adapters/postgresjs.d.ts +1 -1
  1038. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  1039. package/out/zero-server/src/adapters/postgresjs.js +39 -57
  1040. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  1041. package/out/zero-server/src/custom.d.ts +10 -11
  1042. package/out/zero-server/src/custom.d.ts.map +1 -1
  1043. package/out/zero-server/src/custom.js +185 -117
  1044. package/out/zero-server/src/custom.js.map +1 -1
  1045. package/out/zero-server/src/logging.js +7 -4
  1046. package/out/zero-server/src/logging.js.map +1 -1
  1047. package/out/zero-server/src/mod.d.ts +1 -0
  1048. package/out/zero-server/src/mod.d.ts.map +1 -1
  1049. package/out/zero-server/src/pg-query-executor.js +17 -14
  1050. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  1051. package/out/zero-server/src/process-mutations.d.ts +9 -14
  1052. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  1053. package/out/zero-server/src/process-mutations.js +337 -272
  1054. package/out/zero-server/src/process-mutations.js.map +1 -1
  1055. package/out/zero-server/src/push-processor.d.ts +5 -3
  1056. package/out/zero-server/src/push-processor.d.ts.map +1 -1
  1057. package/out/zero-server/src/push-processor.js +48 -32
  1058. package/out/zero-server/src/push-processor.js.map +1 -1
  1059. package/out/zero-server/src/queries/process-queries.d.ts +63 -2
  1060. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1061. package/out/zero-server/src/queries/process-queries.js +101 -95
  1062. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1063. package/out/zero-server/src/schema.js +136 -124
  1064. package/out/zero-server/src/schema.js.map +1 -1
  1065. package/out/zero-server/src/zql-database.d.ts +4 -4
  1066. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1067. package/out/zero-server/src/zql-database.js +67 -48
  1068. package/out/zero-server/src/zql-database.js.map +1 -1
  1069. package/out/zero-solid/src/mod.d.ts +1 -2
  1070. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1071. package/out/zero-solid/src/solid-view.d.ts +1 -1
  1072. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1073. package/out/{solid.js → zero-solid/src/solid-view.js} +42 -196
  1074. package/out/zero-solid/src/solid-view.js.map +1 -0
  1075. package/out/zero-solid/src/use-query.d.ts +3 -3
  1076. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1077. package/out/zero-solid/src/use-query.js +59 -0
  1078. package/out/zero-solid/src/use-query.js.map +1 -0
  1079. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1080. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1081. package/out/zero-solid/src/use-zero-connection-state.js +17 -0
  1082. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1083. package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
  1084. package/out/zero-solid/src/use-zero-online.js +15 -0
  1085. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1086. package/out/zero-solid/src/use-zero.d.ts +6 -5
  1087. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1088. package/out/zero-solid/src/use-zero.js +70 -0
  1089. package/out/zero-solid/src/use-zero.js.map +1 -0
  1090. package/out/zero-types/src/format.js +7 -4
  1091. package/out/zero-types/src/format.js.map +1 -1
  1092. package/out/zero-types/src/name-mapper.js +43 -40
  1093. package/out/zero-types/src/name-mapper.js.map +1 -1
  1094. package/out/zql/src/builder/builder.d.ts +3 -1
  1095. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1096. package/out/zql/src/builder/builder.js +487 -428
  1097. package/out/zql/src/builder/builder.js.map +1 -1
  1098. package/out/zql/src/builder/debug-delegate.js +68 -64
  1099. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1100. package/out/zql/src/builder/filter.js +132 -138
  1101. package/out/zql/src/builder/filter.js.map +1 -1
  1102. package/out/zql/src/builder/like.js +44 -51
  1103. package/out/zql/src/builder/like.js.map +1 -1
  1104. package/out/zql/src/error.d.ts +5 -0
  1105. package/out/zql/src/error.d.ts.map +1 -1
  1106. package/out/zql/src/error.js +18 -6
  1107. package/out/zql/src/error.js.map +1 -1
  1108. package/out/zql/src/ivm/array-view.js +86 -92
  1109. package/out/zql/src/ivm/array-view.js.map +1 -1
  1110. package/out/zql/src/ivm/constraint.js +74 -127
  1111. package/out/zql/src/ivm/constraint.js.map +1 -1
  1112. package/out/zql/src/ivm/data.js +59 -85
  1113. package/out/zql/src/ivm/data.js.map +1 -1
  1114. package/out/zql/src/ivm/exists.js +236 -243
  1115. package/out/zql/src/ivm/exists.js.map +1 -1
  1116. package/out/zql/src/ivm/fan-in.js +50 -51
  1117. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1118. package/out/zql/src/ivm/fan-out.js +48 -50
  1119. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1120. package/out/zql/src/ivm/filter-operators.js +87 -87
  1121. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1122. package/out/zql/src/ivm/filter-push.js +26 -23
  1123. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1124. package/out/zql/src/ivm/filter.js +30 -32
  1125. package/out/zql/src/ivm/filter.js.map +1 -1
  1126. package/out/zql/src/ivm/flipped-join.js +343 -326
  1127. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1128. package/out/zql/src/ivm/join-utils.js +85 -79
  1129. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1130. package/out/zql/src/ivm/join.js +287 -207
  1131. package/out/zql/src/ivm/join.js.map +1 -1
  1132. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1133. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1134. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  1135. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1136. package/out/zql/src/ivm/memory-source.js +471 -489
  1137. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1138. package/out/zql/src/ivm/memory-storage.js +32 -31
  1139. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1140. package/out/zql/src/ivm/operator.js +8 -9
  1141. package/out/zql/src/ivm/operator.js.map +1 -1
  1142. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1143. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1144. package/out/zql/src/ivm/skip.js +92 -106
  1145. package/out/zql/src/ivm/skip.js.map +1 -1
  1146. package/out/zql/src/ivm/source.d.ts +3 -1
  1147. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1148. package/out/zql/src/ivm/stream.js +20 -16
  1149. package/out/zql/src/ivm/stream.js.map +1 -1
  1150. package/out/zql/src/ivm/take.js +502 -456
  1151. package/out/zql/src/ivm/take.js.map +1 -1
  1152. package/out/zql/src/ivm/union-fan-in.js +156 -134
  1153. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1154. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1155. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1156. package/out/zql/src/ivm/view-apply-change.js +246 -216
  1157. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1158. package/out/zql/src/ivm/view.d.ts +2 -2
  1159. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1160. package/out/zql/src/mutate/custom.d.ts +21 -12
  1161. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1162. package/out/zql/src/mutate/custom.js +15 -7
  1163. package/out/zql/src/mutate/custom.js.map +1 -1
  1164. package/out/zql/src/mutate/mutator-registry.d.ts +142 -0
  1165. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
  1166. package/out/zql/src/mutate/mutator-registry.js +97 -0
  1167. package/out/zql/src/mutate/mutator-registry.js.map +1 -0
  1168. package/out/zql/src/mutate/mutator.d.ts +98 -0
  1169. package/out/zql/src/mutate/mutator.d.ts.map +1 -0
  1170. package/out/zql/src/mutate/mutator.js +35 -0
  1171. package/out/zql/src/mutate/mutator.js.map +1 -0
  1172. package/out/zql/src/planner/planner-builder.js +238 -172
  1173. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1174. package/out/zql/src/planner/planner-connection.d.ts +7 -15
  1175. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  1176. package/out/zql/src/planner/planner-connection.js +205 -248
  1177. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1178. package/out/zql/src/planner/planner-constraint.js +8 -11
  1179. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1180. package/out/zql/src/planner/planner-debug.d.ts +37 -43
  1181. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1182. package/out/zql/src/planner/planner-debug.js +227 -161
  1183. package/out/zql/src/planner/planner-debug.js.map +1 -1
  1184. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  1185. package/out/zql/src/planner/planner-fan-in.js +157 -164
  1186. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1187. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  1188. package/out/zql/src/planner/planner-fan-out.js +73 -59
  1189. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1190. package/out/zql/src/planner/planner-graph.d.ts +6 -6
  1191. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1192. package/out/zql/src/planner/planner-graph.js +322 -337
  1193. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1194. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  1195. package/out/zql/src/planner/planner-join.js +237 -342
  1196. package/out/zql/src/planner/planner-join.js.map +1 -1
  1197. package/out/zql/src/planner/planner-node.d.ts +4 -0
  1198. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1199. package/out/zql/src/planner/planner-node.js +8 -2
  1200. package/out/zql/src/planner/planner-node.js.map +1 -1
  1201. package/out/zql/src/planner/planner-source.js +23 -12
  1202. package/out/zql/src/planner/planner-source.js.map +1 -1
  1203. package/out/zql/src/planner/planner-terminus.js +28 -27
  1204. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1205. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1206. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1207. package/out/zql/src/query/complete-ordering.js +71 -0
  1208. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1209. package/out/zql/src/query/create-builder.d.ts +7 -0
  1210. package/out/zql/src/query/create-builder.d.ts.map +1 -0
  1211. package/out/zql/src/query/create-builder.js +44 -0
  1212. package/out/zql/src/query/create-builder.js.map +1 -0
  1213. package/out/zql/src/query/error.js +12 -8
  1214. package/out/zql/src/query/error.js.map +1 -1
  1215. package/out/zql/src/query/escape-like.js +7 -0
  1216. package/out/zql/src/query/escape-like.js.map +1 -0
  1217. package/out/zql/src/query/expression.js +153 -151
  1218. package/out/zql/src/query/expression.js.map +1 -1
  1219. package/out/zql/src/query/measure-push-operator.js +42 -35
  1220. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1221. package/out/zql/src/query/metrics-delegate.js +9 -5
  1222. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1223. package/out/zql/src/query/named.d.ts +8 -10
  1224. package/out/zql/src/query/named.d.ts.map +1 -1
  1225. package/out/zql/src/query/named.js +52 -88
  1226. package/out/zql/src/query/named.js.map +1 -1
  1227. package/out/zql/src/query/query-delegate-base.d.ts +6 -14
  1228. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  1229. package/out/zql/src/query/query-delegate-base.js +118 -134
  1230. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1231. package/out/zql/src/query/query-delegate.d.ts +6 -8
  1232. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1233. package/out/zql/src/query/query-impl.d.ts +19 -19
  1234. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1235. package/out/zql/src/query/query-impl.js +514 -433
  1236. package/out/zql/src/query/query-impl.js.map +1 -1
  1237. package/out/zql/src/query/query-internals.d.ts +11 -13
  1238. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  1239. package/out/zql/src/query/query-internals.js +9 -19
  1240. package/out/zql/src/query/query-internals.js.map +1 -1
  1241. package/out/zql/src/query/query-registry.d.ts +253 -0
  1242. package/out/zql/src/query/query-registry.d.ts.map +1 -0
  1243. package/out/zql/src/query/query-registry.js +131 -0
  1244. package/out/zql/src/query/query-registry.js.map +1 -0
  1245. package/out/zql/src/query/query.d.ts +30 -16
  1246. package/out/zql/src/query/query.d.ts.map +1 -1
  1247. package/out/zql/src/query/schema-query.d.ts +6 -0
  1248. package/out/zql/src/query/schema-query.d.ts.map +1 -0
  1249. package/out/zql/src/query/static-query.d.ts +3 -3
  1250. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1251. package/out/zql/src/query/static-query.js +41 -18
  1252. package/out/zql/src/query/static-query.js.map +1 -1
  1253. package/out/zql/src/query/ttl.js +69 -62
  1254. package/out/zql/src/query/ttl.js.map +1 -1
  1255. package/out/zql/src/query/validate-input.d.ts +15 -0
  1256. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1257. package/out/zql/src/query/validate-input.js +24 -0
  1258. package/out/zql/src/query/validate-input.js.map +1 -0
  1259. package/out/zqlite/src/database-storage.d.ts +1 -1
  1260. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1261. package/out/zqlite/src/database-storage.js +99 -102
  1262. package/out/zqlite/src/database-storage.js.map +1 -1
  1263. package/out/zqlite/src/db.js +241 -194
  1264. package/out/zqlite/src/db.js.map +1 -1
  1265. package/out/zqlite/src/explain-queries.js +13 -16
  1266. package/out/zqlite/src/explain-queries.js.map +1 -1
  1267. package/out/zqlite/src/internal/sql.js +15 -10
  1268. package/out/zqlite/src/internal/sql.js.map +1 -1
  1269. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1270. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1271. package/out/zqlite/src/query-builder.js +172 -143
  1272. package/out/zqlite/src/query-builder.js.map +1 -1
  1273. package/out/zqlite/src/query-delegate.d.ts +2 -2
  1274. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1275. package/out/zqlite/src/query-delegate.js +53 -43
  1276. package/out/zqlite/src/query-delegate.js.map +1 -1
  1277. package/out/zqlite/src/sqlite-cost-model.js +94 -125
  1278. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1279. package/out/zqlite/src/sqlite-stat-fanout.js +277 -353
  1280. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1281. package/out/zqlite/src/table-source.d.ts +9 -4
  1282. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1283. package/out/zqlite/src/table-source.js +424 -327
  1284. package/out/zqlite/src/table-source.js.map +1 -1
  1285. package/package.json +23 -25
  1286. package/out/chunk-424PT5DM.js +0 -23
  1287. package/out/chunk-424PT5DM.js.map +0 -7
  1288. package/out/chunk-AFADJQ2O.js +0 -1
  1289. package/out/chunk-AFADJQ2O.js.map +0 -7
  1290. package/out/chunk-ASRS2LFV.js.map +0 -7
  1291. package/out/chunk-EZM3XBAB.js.map +0 -7
  1292. package/out/chunk-FODUNUAD.js +0 -18850
  1293. package/out/chunk-FODUNUAD.js.map +0 -7
  1294. package/out/chunk-HCZQVP5R.js.map +0 -7
  1295. package/out/chunk-S633A55A.js +0 -495
  1296. package/out/chunk-S633A55A.js.map +0 -7
  1297. package/out/chunk-TAUDS4QP.js +0 -4129
  1298. package/out/chunk-TAUDS4QP.js.map +0 -7
  1299. package/out/chunk-VZOYWIRW.js.map +0 -7
  1300. package/out/chunk-WPAQ4EPM.js.map +0 -7
  1301. package/out/expo-sqlite.js +0 -11
  1302. package/out/expo-sqlite.js.map +0 -7
  1303. package/out/inspector-GP3CBZRU.js.map +0 -7
  1304. package/out/lazy-inspector-XLKVABX2.js +0 -575
  1305. package/out/lazy-inspector-XLKVABX2.js.map +0 -7
  1306. package/out/op-sqlite.js.map +0 -7
  1307. package/out/react-native.js +0 -25
  1308. package/out/react-native.js.map +0 -7
  1309. package/out/react.js.map +0 -7
  1310. package/out/shared/src/enum.js +0 -2
  1311. package/out/shared/src/enum.js.map +0 -1
  1312. package/out/shared/src/expand.js +0 -2
  1313. package/out/shared/src/expand.js.map +0 -1
  1314. package/out/shared/src/immutable.js +0 -2
  1315. package/out/shared/src/immutable.js.map +0 -1
  1316. package/out/shared/src/types.js +0 -2
  1317. package/out/shared/src/types.js.map +0 -1
  1318. package/out/shared/src/writable.js +0 -2
  1319. package/out/shared/src/writable.js.map +0 -1
  1320. package/out/solid.js.map +0 -7
  1321. package/out/sqlite.js +0 -15
  1322. package/out/sqlite.js.map +0 -7
  1323. package/out/zero/package.json +0 -195
  1324. package/out/zero/src/server/change-streamer.js +0 -2
  1325. package/out/zero/src/server/change-streamer.js.map +0 -1
  1326. package/out/zero/src/server/main.js +0 -2
  1327. package/out/zero/src/server/main.js.map +0 -1
  1328. package/out/zero/src/server/reaper.js +0 -2
  1329. package/out/zero/src/server/reaper.js.map +0 -1
  1330. package/out/zero/src/server/replicator.js +0 -2
  1331. package/out/zero/src/server/replicator.js.map +0 -1
  1332. package/out/zero/src/server/runner/main.js +0 -2
  1333. package/out/zero/src/server/runner/main.js.map +0 -1
  1334. package/out/zero/src/server/syncer.js +0 -2
  1335. package/out/zero/src/server/syncer.js.map +0 -1
  1336. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1337. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1338. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1339. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1340. package/out/zero-cache/src/services/service.js +0 -2
  1341. package/out/zero-cache/src/services/service.js.map +0 -1
  1342. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1343. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1344. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1345. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1346. package/out/zero-cache/src/types/satisfies.js +0 -2
  1347. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1348. package/out/zero-events/src/index.js +0 -2
  1349. package/out/zero-events/src/index.js.map +0 -1
  1350. package/out/zero-events/src/json.js +0 -2
  1351. package/out/zero-events/src/json.js.map +0 -1
  1352. package/out/zero-events/src/status.js +0 -3
  1353. package/out/zero-events/src/status.js.map +0 -1
  1354. package/out/zero-pg/src/mod.js +0 -6
  1355. package/out/zero-pg/src/mod.js.map +0 -1
  1356. package/out/zero-protocol/src/error-kind.js +0 -3
  1357. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1358. package/out/zero-protocol/src/error-origin.js +0 -3
  1359. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1360. package/out/zero-protocol/src/error-reason.js +0 -3
  1361. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1362. package/out/zero-schema/src/table-schema.js +0 -7
  1363. package/out/zero-schema/src/table-schema.js.map +0 -1
  1364. package/out/zero-server/src/mod.js +0 -8
  1365. package/out/zero-server/src/mod.js.map +0 -1
  1366. package/out/zero-types/src/schema-value.js +0 -2
  1367. package/out/zero-types/src/schema-value.js.map +0 -1
  1368. package/out/zero-types/src/schema.js +0 -2
  1369. package/out/zero-types/src/schema.js.map +0 -1
  1370. package/out/zero-types/src/server-schema.js +0 -2
  1371. package/out/zero-types/src/server-schema.js.map +0 -1
  1372. package/out/zero.js +0 -95
  1373. package/out/zero.js.map +0 -7
  1374. package/out/zql/src/ivm/change.js +0 -2
  1375. package/out/zql/src/ivm/change.js.map +0 -1
  1376. package/out/zql/src/ivm/default-format.js +0 -2
  1377. package/out/zql/src/ivm/default-format.js.map +0 -1
  1378. package/out/zql/src/ivm/schema.js +0 -2
  1379. package/out/zql/src/ivm/schema.js.map +0 -1
  1380. package/out/zql/src/ivm/source.js +0 -2
  1381. package/out/zql/src/ivm/source.js.map +0 -1
  1382. package/out/zql/src/ivm/view.js +0 -2
  1383. package/out/zql/src/ivm/view.js.map +0 -1
  1384. package/out/zql/src/query/chained-query.d.ts +0 -35
  1385. package/out/zql/src/query/chained-query.d.ts.map +0 -1
  1386. package/out/zql/src/query/chained-query.js +0 -66
  1387. package/out/zql/src/query/chained-query.js.map +0 -1
  1388. package/out/zql/src/query/define-query.d.ts +0 -51
  1389. package/out/zql/src/query/define-query.d.ts.map +0 -1
  1390. package/out/zql/src/query/define-query.js +0 -53
  1391. package/out/zql/src/query/define-query.js.map +0 -1
  1392. package/out/zql/src/query/query-delegate.js +0 -2
  1393. package/out/zql/src/query/query-delegate.js.map +0 -1
  1394. package/out/zql/src/query/query.js +0 -8
  1395. package/out/zql/src/query/query.js.map +0 -1
  1396. package/out/zql/src/query/root-named-query.d.ts +0 -33
  1397. package/out/zql/src/query/root-named-query.d.ts.map +0 -1
  1398. package/out/zql/src/query/root-named-query.js +0 -95
  1399. package/out/zql/src/query/root-named-query.js.map +0 -1
  1400. package/out/zql/src/query/typed-view.js +0 -2
  1401. package/out/zql/src/query/typed-view.js.map +0 -1
  1402. package/out/zqlite/src/mod.js +0 -5
  1403. package/out/zqlite/src/mod.js.map +0 -1
@@ -1,709 +1,731 @@
1
- /**
2
- * These types represent the _compiled_ config whereas `define-config` types represent the _source_ config.
3
- */
4
1
  import { logOptions } from "../../../otel/src/log-options.js";
5
- import { parseOptions, } from "../../../shared/src/options.js";
6
- import * as v from "../../../shared/src/valita.js";
7
- // @circular-dep-ignore - importing package.json for version info only
8
- import packageJson from '../../../zero/package.json' with { type: 'json' };
2
+ import { parseOptions } from "../../../shared/src/options.js";
3
+ import { literalUnion } from "../../../shared/src/valita.js";
4
+ import packageJson from "../../../zero/package.json.js";
9
5
  import { runtimeDebugFlags } from "../../../zql/src/builder/debug-delegate.js";
10
6
  import { singleProcessMode } from "../types/processes.js";
11
- import { ALLOWED_APP_ID_CHARACTERS, INVALID_APP_ID_MESSAGE, } from "../types/shards.js";
12
- import { assertNormalized, isDevelopmentMode, } from "./normalize.js";
13
- export const appOptions = {
14
- id: {
15
- type: v
16
- .string()
17
- .default('zero')
18
- .assert(id => ALLOWED_APP_ID_CHARACTERS.test(id), INVALID_APP_ID_MESSAGE),
19
- desc: [
20
- 'Unique identifier for the app.',
21
- '',
22
- 'Multiple zero-cache apps can run on a single upstream database, each of which',
23
- 'is isolated from the others, with its own permissions, sharding (future feature),',
24
- 'and change/cvr databases.',
25
- '',
26
- 'The metadata of an app is stored in an upstream schema with the same name,',
27
- 'e.g. "zero", and the metadata for each app shard, e.g. client and mutation',
28
- 'ids, is stored in the "\\{app-id\\}_\\{#\\}" schema. (Currently there is only a single',
29
- '"0" shard, but this will change with sharding).',
30
- '',
31
- 'The CVR and Change data are managed in schemas named "\\{app-id\\}_\\{shard-num\\}/cvr"',
32
- 'and "\\{app-id\\}_\\{shard-num\\}/cdc", respectively, allowing multiple apps and shards',
33
- 'to share the same database instance (e.g. a Postgres "cluster") for CVR and Change management.',
34
- '',
35
- 'Due to constraints on replication slot names, an App ID may only consist of',
36
- 'lower-case letters, numbers, and the underscore character.',
37
- '',
38
- 'Note that this option is used by both {bold zero-cache} and {bold zero-deploy-permissions}.',
39
- ],
40
- },
41
- publications: {
42
- type: v.array(v.string()).optional(() => []),
43
- desc: [
44
- `Postgres {bold PUBLICATION}s that define the tables and columns to`,
45
- `replicate. Publication names may not begin with an underscore,`,
46
- `as zero reserves that prefix for internal use.`,
47
- ``,
48
- `If unspecified, zero-cache will create and use an internal publication that`,
49
- `publishes all tables in the {bold public} schema, i.e.:`,
50
- ``,
51
- `CREATE PUBLICATION _\\{app-id\\}_public_0 FOR TABLES IN SCHEMA public;`,
52
- ``,
53
- `Note that changing the set of publications will result in resyncing the replica,`,
54
- `which may involve downtime (replication lag) while the new replica is initializing.`,
55
- `To change the set of publications without disrupting an existing app, a new app`,
56
- `should be created.`,
57
- ],
58
- },
7
+ import { ALLOWED_APP_ID_CHARACTERS, INVALID_APP_ID_MESSAGE } from "../types/shards.js";
8
+ import { assertNormalized, isDevelopmentMode } from "./normalize.js";
9
+ import { array, string, number, boolean } from "@badrap/valita";
10
+ const appOptions = {
11
+ id: {
12
+ type: string().default("zero").assert((id) => ALLOWED_APP_ID_CHARACTERS.test(id), INVALID_APP_ID_MESSAGE),
13
+ desc: [
14
+ "Unique identifier for the app.",
15
+ "",
16
+ "Multiple zero-cache apps can run on a single upstream database, each of which",
17
+ "is isolated from the others, with its own permissions, sharding (future feature),",
18
+ "and change/cvr databases.",
19
+ "",
20
+ "The metadata of an app is stored in an upstream schema with the same name,",
21
+ 'e.g. "zero", and the metadata for each app shard, e.g. client and mutation',
22
+ 'ids, is stored in the "\\{app-id\\}_\\{#\\}" schema. (Currently there is only a single',
23
+ '"0" shard, but this will change with sharding).',
24
+ "",
25
+ 'The CVR and Change data are managed in schemas named "\\{app-id\\}_\\{shard-num\\}/cvr"',
26
+ 'and "\\{app-id\\}_\\{shard-num\\}/cdc", respectively, allowing multiple apps and shards',
27
+ 'to share the same database instance (e.g. a Postgres "cluster") for CVR and Change management.',
28
+ "",
29
+ "Due to constraints on replication slot names, an App ID may only consist of",
30
+ "lower-case letters, numbers, and the underscore character.",
31
+ "",
32
+ "Note that this option is used by both {bold zero-cache} and {bold zero-deploy-permissions}."
33
+ ]
34
+ },
35
+ publications: {
36
+ type: array(string()).optional(() => []),
37
+ desc: [
38
+ `Postgres {bold PUBLICATION}s that define the tables and columns to`,
39
+ `replicate. Publication names may not begin with an underscore,`,
40
+ `as zero reserves that prefix for internal use.`,
41
+ ``,
42
+ `If unspecified, zero-cache will create and use an internal publication that`,
43
+ `publishes all tables in the {bold public} schema, i.e.:`,
44
+ ``,
45
+ `CREATE PUBLICATION _\\{app-id\\}_public_0 FOR TABLES IN SCHEMA public;`,
46
+ ``,
47
+ `Note that changing the set of publications will result in resyncing the replica,`,
48
+ `which may involve downtime (replication lag) while the new replica is initializing.`,
49
+ `To change the set of publications without disrupting an existing app, a new app`,
50
+ `should be created.`
51
+ ]
52
+ }
59
53
  };
60
- export const shardOptions = {
61
- id: {
62
- type: v
63
- .string()
64
- .assert(() => {
65
- throw new Error(`ZERO_SHARD_ID is no longer an option. Please use ZERO_APP_ID instead.`);
66
- })
67
- .optional(),
68
- hidden: true,
69
- },
70
- num: {
71
- type: v.number().default(0),
72
- desc: [
73
- `The shard number (from 0 to NUM_SHARDS) of the App. zero will eventually`,
74
- `support data sharding as a first-class primitive; until then, deploying`,
75
- `multiple shard-nums creates functionally identical shards. Until sharding is`,
76
- `actually meaningful, this flag is hidden but available for testing.`,
77
- ],
78
- hidden: true,
79
- },
54
+ const shardOptions = {
55
+ id: {
56
+ type: string().assert(() => {
57
+ throw new Error(
58
+ `ZERO_SHARD_ID is no longer an option. Please use ZERO_APP_ID instead.`
59
+ // TODO: Link to release / migration notes?
60
+ );
61
+ }).optional(),
62
+ hidden: true
63
+ },
64
+ num: {
65
+ type: number().default(0),
66
+ desc: [
67
+ `The shard number (from 0 to NUM_SHARDS) of the App. zero will eventually`,
68
+ `support data sharding as a first-class primitive; until then, deploying`,
69
+ `multiple shard-nums creates functionally identical shards. Until sharding is`,
70
+ `actually meaningful, this flag is hidden but available for testing.`
71
+ ],
72
+ hidden: true
73
+ }
80
74
  };
81
75
  const replicaOptions = {
82
- file: {
83
- type: v.string(),
84
- desc: [
85
- `File path to the SQLite replica that zero-cache maintains.`,
86
- `This can be lost, but if it is, zero-cache will have to re-replicate next`,
87
- `time it starts up.`,
88
- ],
89
- },
90
- vacuumIntervalHours: {
91
- type: v.number().optional(),
92
- desc: [
93
- `Performs a VACUUM at server startup if the specified number of hours has elapsed`,
94
- `since the last VACUUM (or initial-sync). The VACUUM operation is heavyweight`,
95
- `and requires double the size of the db in disk space. If unspecified, VACUUM`,
96
- `operations are not performed.`,
97
- ],
98
- },
76
+ file: {
77
+ type: string().default("zero.db"),
78
+ desc: [
79
+ `File path to the SQLite replica that zero-cache maintains.`,
80
+ `This can be lost, but if it is, zero-cache will have to re-replicate next`,
81
+ `time it starts up.`
82
+ ]
83
+ },
84
+ vacuumIntervalHours: {
85
+ type: number().optional(),
86
+ desc: [
87
+ `Performs a VACUUM at server startup if the specified number of hours has elapsed`,
88
+ `since the last VACUUM (or initial-sync). The VACUUM operation is heavyweight`,
89
+ `and requires double the size of the db in disk space. If unspecified, VACUUM`,
90
+ `operations are not performed.`
91
+ ]
92
+ }
99
93
  };
100
94
  const perUserMutationLimit = {
101
- max: {
102
- type: v.number().optional(),
103
- desc: [
104
- `The maximum mutations per user within the specified {bold windowMs}.`,
105
- `If unset, no rate limiting is enforced.`,
106
- ],
107
- },
108
- windowMs: {
109
- type: v.number().default(60_000),
110
- desc: [
111
- `The sliding window over which the {bold perUserMutationLimitMax} is enforced.`,
112
- ],
113
- },
95
+ max: {
96
+ type: number().optional(),
97
+ desc: [
98
+ `The maximum mutations per user within the specified {bold windowMs}.`,
99
+ `If unset, no rate limiting is enforced.`
100
+ ]
101
+ },
102
+ windowMs: {
103
+ type: number().default(6e4),
104
+ desc: [
105
+ `The sliding window over which the {bold perUserMutationLimitMax} is enforced.`
106
+ ]
107
+ }
114
108
  };
115
109
  const authOptions = {
116
- jwk: {
117
- type: v.string().optional(),
118
- desc: [
119
- `A public key in JWK format used to verify JWTs. Only one of {bold jwk}, {bold jwksUrl} and {bold secret} may be set.`,
120
- ],
121
- },
122
- jwksUrl: {
123
- type: v.string().optional(),
124
- desc: [
125
- `A URL that returns a JWK set used to verify JWTs. Only one of {bold jwk}, {bold jwksUrl} and {bold secret} may be set.`,
126
- ],
127
- },
128
- secret: {
129
- type: v.string().optional(),
130
- desc: [
131
- `A symmetric key used to verify JWTs. Only one of {bold jwk}, {bold jwksUrl} and {bold secret} may be set.`,
132
- ],
133
- },
110
+ jwk: {
111
+ type: string().optional(),
112
+ desc: [
113
+ `A public key in JWK format used to verify JWTs. Only one of {bold jwk}, {bold jwksUrl} and {bold secret} may be set.`
114
+ ]
115
+ },
116
+ jwksUrl: {
117
+ type: string().optional(),
118
+ desc: [
119
+ `A URL that returns a JWK set used to verify JWTs. Only one of {bold jwk}, {bold jwksUrl} and {bold secret} may be set.`
120
+ ]
121
+ },
122
+ secret: {
123
+ type: string().optional(),
124
+ desc: [
125
+ `A symmetric key used to verify JWTs. Only one of {bold jwk}, {bold jwksUrl} and {bold secret} may be set.`
126
+ ]
127
+ }
134
128
  };
135
129
  const makeMutatorQueryOptions = (replacement, suffix) => ({
136
- url: {
137
- type: v.array(v.string()).optional(), // optional until we remove CRUD mutations
138
- desc: [
139
- replacement ? `DEPRECATED. Use ${replacement} instead.` : ``,
140
- `The URL of the API server to which zero-cache will ${suffix}.`,
141
- ``,
142
- `{bold IMPORTANT:} URLs are matched using {bold URLPattern}, a standard Web API.`,
143
- ``,
144
- `{bold Pattern Syntax:}`,
145
- ` URLPattern uses a simple and intuitive syntax similar to Express routes.`,
146
- ` Wildcards and named parameters make it easy to match multiple URLs.`,
147
- ``,
148
- `{bold Basic Examples:}`,
149
- ` Exact URL match:`,
150
- ` "https://api.example.com/mutate"`,
151
- ` `,
152
- ` Any subdomain using wildcard:`,
153
- ` "https://*.example.com/mutate"`,
154
- ` `,
155
- ` Multiple subdomain levels:`,
156
- ` "https://*.*.example.com/mutate"`,
157
- ` `,
158
- ` Any path under a domain:`,
159
- ` "https://api.example.com/*"`,
160
- ` `,
161
- ` Named path parameters:`,
162
- ` "https://api.example.com/:version/mutate"`,
163
- ` ↳ Matches "https://api.example.com/v1/mutate", "https://api.example.com/v2/mutate", etc.`,
164
- ``,
165
- `{bold Advanced Patterns:}`,
166
- ` Optional path segments:`,
167
- ` "https://api.example.com/:path?"`,
168
- ` `,
169
- ` Regex in segments (for specific patterns):`,
170
- ` "https://api.example.com/:version(v\\\\d+)/mutate"`,
171
- ` ↳ Matches only "v" followed by digits`,
172
- ``,
173
- `{bold Multiple patterns:}`,
174
- ` ["https://api1.example.com/mutate", "https://api2.example.com/mutate"]`,
175
- ``,
176
- `{bold Note:} Query parameters and URL fragments (#) are automatically ignored during matching.`,
177
- ``,
178
- `For full URLPattern syntax, see: https://developer.mozilla.org/en-US/docs/Web/API/URLPattern`,
179
- ],
180
- },
181
- apiKey: {
182
- type: v.string().optional(),
183
- desc: [
184
- `An optional secret used to authorize zero-cache to call the API server handling writes.`,
185
- ],
186
- },
187
- forwardCookies: {
188
- type: v.boolean().default(false),
189
- desc: [
190
- `If true, zero-cache will forward cookies from the request.`,
191
- `This is useful for passing authentication cookies to the API server.`,
192
- `If false, cookies are not forwarded.`,
193
- ],
194
- },
130
+ url: {
131
+ type: array(string()).optional(),
132
+ // optional until we remove CRUD mutations
133
+ desc: [
134
+ replacement ? `DEPRECATED. Use ${replacement} instead.` : ``,
135
+ `The URL of the API server to which zero-cache will ${suffix}.`,
136
+ ``,
137
+ `{bold IMPORTANT:} URLs are matched using {bold URLPattern}, a standard Web API.`,
138
+ ``,
139
+ `{bold Pattern Syntax:}`,
140
+ ` URLPattern uses a simple and intuitive syntax similar to Express routes.`,
141
+ ` Wildcards and named parameters make it easy to match multiple URLs.`,
142
+ ``,
143
+ `{bold Basic Examples:}`,
144
+ ` Exact URL match:`,
145
+ ` "https://api.example.com/mutate"`,
146
+ ` `,
147
+ ` Any subdomain using wildcard:`,
148
+ ` "https://*.example.com/mutate"`,
149
+ ` `,
150
+ ` Multiple subdomain levels:`,
151
+ ` "https://*.*.example.com/mutate"`,
152
+ ` `,
153
+ ` Any path under a domain:`,
154
+ ` "https://api.example.com/*"`,
155
+ ` `,
156
+ ` Named path parameters:`,
157
+ ` "https://api.example.com/:version/mutate"`,
158
+ ` ↳ Matches "https://api.example.com/v1/mutate", "https://api.example.com/v2/mutate", etc.`,
159
+ ``,
160
+ `{bold Advanced Patterns:}`,
161
+ ` Optional path segments:`,
162
+ ` "https://api.example.com/:path?"`,
163
+ ` `,
164
+ ` Regex in segments (for specific patterns):`,
165
+ ` "https://api.example.com/:version(v\\\\d+)/mutate"`,
166
+ ` ↳ Matches only "v" followed by digits`,
167
+ ``,
168
+ `{bold Multiple patterns:}`,
169
+ ` ["https://api1.example.com/mutate", "https://api2.example.com/mutate"]`,
170
+ ``,
171
+ `{bold Note:} Query parameters and URL fragments (#) are automatically ignored during matching.`,
172
+ ``,
173
+ `For full URLPattern syntax, see: https://developer.mozilla.org/en-US/docs/Web/API/URLPattern`
174
+ ]
175
+ },
176
+ apiKey: {
177
+ type: string().optional(),
178
+ desc: [
179
+ `An optional secret used to authorize zero-cache to call the API server handling writes.`
180
+ ]
181
+ },
182
+ forwardCookies: {
183
+ type: boolean().default(false),
184
+ desc: [
185
+ `If true, zero-cache will forward cookies from the request.`,
186
+ `This is useful for passing authentication cookies to the API server.`,
187
+ `If false, cookies are not forwarded.`
188
+ ]
189
+ }
195
190
  });
196
- const mutateOptions = makeMutatorQueryOptions(undefined, 'push mutations');
197
- const pushOptions = makeMutatorQueryOptions('mutate-url', 'push mutations');
198
- const queryOptions = makeMutatorQueryOptions(undefined, 'send synced queries');
199
- // Note: --help will list flags in the order in which they are defined here,
200
- // so order the fields such that the important (e.g. required) ones are first.
201
- // (Exported for testing)
202
- export const zeroOptions = {
203
- upstream: {
204
- db: {
205
- type: v.string(),
206
- desc: [
207
- `The "upstream" authoritative postgres database.`,
208
- `In the future we will support other types of upstream besides PG.`,
209
- ],
210
- },
211
- type: {
212
- type: v.literalUnion('pg', 'custom').default('pg'),
213
- desc: [
214
- `The meaning of the {bold upstream-db} depends on the upstream type:`,
215
- `* {bold pg}: The connection database string, e.g. "postgres://..."`,
216
- `* {bold custom}: The base URI of the change source "endpoint, e.g.`,
217
- ` "https://my-change-source.dev/changes/v0/stream?apiKey=..."`,
218
- ],
219
- hidden: true, // TODO: Unhide when ready to officially support.
220
- },
221
- maxConns: {
222
- type: v.number().default(20),
223
- desc: [
224
- `The maximum number of connections to open to the upstream database`,
225
- `for committing mutations. This is divided evenly amongst sync workers.`,
226
- `In addition to this number, zero-cache uses one connection for the`,
227
- `replication stream.`,
228
- ``,
229
- `Note that this number must allow for at least one connection per`,
230
- `sync worker, or zero-cache will fail to start. See {bold num-sync-workers}`,
231
- ],
232
- },
233
- maxConnsPerWorker: {
234
- type: v.number().optional(),
235
- hidden: true, // Passed from main thread to sync workers
236
- },
237
- },
238
- push: pushOptions,
239
- mutate: mutateOptions,
240
- getQueries: queryOptions,
241
- cvr: {
242
- db: {
243
- type: v.string().optional(),
244
- desc: [
245
- `The Postgres database used to store CVRs. CVRs (client view records) keep track`,
246
- `of the data synced to clients in order to determine the diff to send on reconnect.`,
247
- `If unspecified, the {bold upstream-db} will be used.`,
248
- ],
249
- },
250
- maxConns: {
251
- type: v.number().default(30),
252
- desc: [
253
- `The maximum number of connections to open to the CVR database.`,
254
- `This is divided evenly amongst sync workers.`,
255
- ``,
256
- `Note that this number must allow for at least one connection per`,
257
- `sync worker, or zero-cache will fail to start. See {bold num-sync-workers}`,
258
- ],
259
- },
260
- maxConnsPerWorker: {
261
- type: v.number().optional(),
262
- hidden: true, // Passed from main thread to sync workers
263
- },
264
- garbageCollectionInactivityThresholdHours: {
265
- type: v.number().default(48),
266
- desc: [
267
- `The duration after which an inactive CVR is eligible for garbage collection.`,
268
- `Note that garbage collection is an incremental, periodic process which does not`,
269
- `necessarily purge all eligible CVRs immediately.`,
270
- ],
271
- },
272
- garbageCollectionInitialIntervalSeconds: {
273
- type: v.number().default(60),
274
- desc: [
275
- `The initial interval at which to check and garbage collect inactive CVRs.`,
276
- `This interval is increased exponentially (up to 16 minutes) when there is`,
277
- `nothing to purge.`,
278
- ],
279
- },
280
- garbageCollectionInitialBatchSize: {
281
- type: v.number().default(25),
282
- desc: [
283
- `The initial number of CVRs to purge per garbage collection interval.`,
284
- `This number is increased linearly if the rate of new CVRs exceeds the rate of`,
285
- `purged CVRs, in order to reach a steady state.`,
286
- ``,
287
- `Setting this to 0 effectively disables CVR garbage collection.`,
288
- ],
289
- },
290
- },
291
- queryHydrationStats: {
292
- type: v.boolean().optional(),
293
- desc: [
294
- `Track and log the number of rows considered by query hydrations which`,
295
- `take longer than {bold log-slow-hydrate-threshold} milliseconds.`,
296
- `This is useful for debugging and performance tuning.`,
297
- ],
298
- },
299
- enableQueryPlanner: {
300
- type: v.boolean().default(false),
301
- desc: [
302
- `Enable the query planner for optimizing ZQL queries.`,
303
- ``,
304
- `The query planner analyzes and optimizes query execution by determining`,
305
- `the most efficient join strategies. This feature`,
306
- `is being gradually rolled out and may improve performance for complex`,
307
- `queries that make use of WHERE EXISTS.`,
308
- ``,
309
- `When disabled (default), queries use the standard execution path.`,
310
- ],
311
- },
312
- change: {
313
- db: {
314
- type: v.string().optional(),
315
- desc: [
316
- `The Postgres database used to store recent replication log entries, in order`,
317
- `to sync multiple view-syncers without requiring multiple replication slots on`,
318
- `the upstream database. If unspecified, the {bold upstream-db} will be used.`,
319
- ],
320
- },
321
- maxConns: {
322
- type: v.number().default(5),
323
- desc: [
324
- `The maximum number of connections to open to the change database.`,
325
- `This is used by the {bold change-streamer} for catching up`,
326
- `{bold zero-cache} replication subscriptions.`,
327
- ],
328
- },
191
+ const mutateOptions = makeMutatorQueryOptions(void 0, "push mutations");
192
+ const pushOptions = makeMutatorQueryOptions("mutate-url", "push mutations");
193
+ const queryOptions = makeMutatorQueryOptions(void 0, "send synced queries");
194
+ const getQueriesOptions = makeMutatorQueryOptions(
195
+ "query-url",
196
+ "send synced queries"
197
+ );
198
+ const zeroOptions = {
199
+ upstream: {
200
+ db: {
201
+ type: string(),
202
+ desc: [
203
+ `The "upstream" authoritative postgres database.`,
204
+ `In the future we will support other types of upstream besides PG.`
205
+ ]
206
+ },
207
+ type: {
208
+ type: literalUnion("pg", "custom").default("pg"),
209
+ desc: [
210
+ `The meaning of the {bold upstream-db} depends on the upstream type:`,
211
+ `* {bold pg}: The connection database string, e.g. "postgres://..."`,
212
+ `* {bold custom}: The base URI of the change source "endpoint, e.g.`,
213
+ ` "https://my-change-source.dev/changes/v0/stream?apiKey=..."`
214
+ ],
215
+ hidden: true
216
+ // TODO: Unhide when ready to officially support.
217
+ },
218
+ maxConns: {
219
+ type: number().default(20),
220
+ desc: [
221
+ `The maximum number of connections to open to the upstream database`,
222
+ `for committing mutations. This is divided evenly amongst sync workers.`,
223
+ `In addition to this number, zero-cache uses one connection for the`,
224
+ `replication stream.`,
225
+ ``,
226
+ `Note that this number must allow for at least one connection per`,
227
+ `sync worker, or zero-cache will fail to start. See {bold num-sync-workers}`
228
+ ]
229
+ },
230
+ maxConnsPerWorker: {
231
+ type: number().optional(),
232
+ hidden: true
233
+ // Passed from main thread to sync workers
234
+ }
235
+ },
236
+ /** @deprecated */
237
+ push: pushOptions,
238
+ mutate: mutateOptions,
239
+ /** @deprecated */
240
+ getQueries: getQueriesOptions,
241
+ query: queryOptions,
242
+ cvr: {
243
+ db: {
244
+ type: string().optional(),
245
+ desc: [
246
+ `The Postgres database used to store CVRs. CVRs (client view records) keep track`,
247
+ `of the data synced to clients in order to determine the diff to send on reconnect.`,
248
+ `If unspecified, the {bold upstream-db} will be used.`
249
+ ]
250
+ },
251
+ maxConns: {
252
+ type: number().default(30),
253
+ desc: [
254
+ `The maximum number of connections to open to the CVR database.`,
255
+ `This is divided evenly amongst sync workers.`,
256
+ ``,
257
+ `Note that this number must allow for at least one connection per`,
258
+ `sync worker, or zero-cache will fail to start. See {bold num-sync-workers}`
259
+ ]
260
+ },
261
+ maxConnsPerWorker: {
262
+ type: number().optional(),
263
+ hidden: true
264
+ // Passed from main thread to sync workers
265
+ },
266
+ garbageCollectionInactivityThresholdHours: {
267
+ type: number().default(48),
268
+ desc: [
269
+ `The duration after which an inactive CVR is eligible for garbage collection.`,
270
+ `Note that garbage collection is an incremental, periodic process which does not`,
271
+ `necessarily purge all eligible CVRs immediately.`
272
+ ]
273
+ },
274
+ garbageCollectionInitialIntervalSeconds: {
275
+ type: number().default(60),
276
+ desc: [
277
+ `The initial interval at which to check and garbage collect inactive CVRs.`,
278
+ `This interval is increased exponentially (up to 16 minutes) when there is`,
279
+ `nothing to purge.`
280
+ ]
281
+ },
282
+ garbageCollectionInitialBatchSize: {
283
+ type: number().default(25),
284
+ desc: [
285
+ `The initial number of CVRs to purge per garbage collection interval.`,
286
+ `This number is increased linearly if the rate of new CVRs exceeds the rate of`,
287
+ `purged CVRs, in order to reach a steady state.`,
288
+ ``,
289
+ `Setting this to 0 effectively disables CVR garbage collection.`
290
+ ]
291
+ }
292
+ },
293
+ queryHydrationStats: {
294
+ type: boolean().optional(),
295
+ desc: [
296
+ `Track and log the number of rows considered by query hydrations which`,
297
+ `take longer than {bold log-slow-hydrate-threshold} milliseconds.`,
298
+ `This is useful for debugging and performance tuning.`
299
+ ]
300
+ },
301
+ enableQueryPlanner: {
302
+ type: boolean().default(true),
303
+ desc: [
304
+ `Enable the query planner for optimizing ZQL queries.`,
305
+ ``,
306
+ `The query planner analyzes and optimizes query execution by determining`,
307
+ `the most efficient join strategies.`,
308
+ ``,
309
+ `You can disable the planner if it is picking bad strategies.`
310
+ ]
311
+ },
312
+ change: {
313
+ db: {
314
+ type: string().optional(),
315
+ desc: [
316
+ `The Postgres database used to store recent replication log entries, in order`,
317
+ `to sync multiple view-syncers without requiring multiple replication slots on`,
318
+ `the upstream database. If unspecified, the {bold upstream-db} will be used.`
319
+ ]
320
+ },
321
+ maxConns: {
322
+ type: number().default(5),
323
+ desc: [
324
+ `The maximum number of connections to open to the change database.`,
325
+ `This is used by the {bold change-streamer} for catching up`,
326
+ `{bold zero-cache} replication subscriptions.`
327
+ ]
328
+ }
329
+ },
330
+ replica: replicaOptions,
331
+ log: logOptions,
332
+ app: appOptions,
333
+ shard: shardOptions,
334
+ auth: authOptions,
335
+ port: {
336
+ type: number().default(4848),
337
+ desc: [`The port for sync connections.`]
338
+ },
339
+ changeStreamer: {
340
+ uri: {
341
+ type: string().optional(),
342
+ desc: [
343
+ `When set, connects to the {bold change-streamer} at the given URI.`,
344
+ `In a multi-node setup, this should be specified in {bold view-syncer} options,`,
345
+ `pointing to the {bold replication-manager} URI, which runs a {bold change-streamer}`,
346
+ `on port 4849.`
347
+ ]
348
+ },
349
+ mode: {
350
+ type: literalUnion("dedicated", "discover").default("dedicated"),
351
+ desc: [
352
+ `As an alternative to {bold ZERO_CHANGE_STREAMER_URI}, the {bold ZERO_CHANGE_STREAMER_MODE}`,
353
+ `can be set to "{bold discover}" to instruct the {bold view-syncer} to connect to the `,
354
+ `ip address registered by the {bold replication-manager} upon startup.`,
355
+ ``,
356
+ `This may not work in all networking configurations, e.g. certain private `,
357
+ `networking or port forwarding configurations. Using the {bold ZERO_CHANGE_STREAMER_URI}`,
358
+ `with an explicit routable hostname is recommended instead.`,
359
+ ``,
360
+ `Note: This option is ignored if the {bold ZERO_CHANGE_STREAMER_URI} is set.`
361
+ ]
329
362
  },
330
- replica: replicaOptions,
331
- log: logOptions,
332
- app: appOptions,
333
- shard: shardOptions,
334
- auth: authOptions,
335
363
  port: {
336
- type: v.number().default(4848),
337
- desc: [`The port for sync connections.`],
338
- },
339
- changeStreamer: {
340
- uri: {
341
- type: v.string().optional(),
342
- desc: [
343
- `When set, connects to the {bold change-streamer} at the given URI.`,
344
- `In a multi-node setup, this should be specified in {bold view-syncer} options,`,
345
- `pointing to the {bold replication-manager} URI, which runs a {bold change-streamer}`,
346
- `on port 4849.`,
347
- ],
348
- },
349
- mode: {
350
- type: v.literalUnion('dedicated', 'discover').default('dedicated'),
351
- desc: [
352
- `As an alternative to {bold ZERO_CHANGE_STREAMER_URI}, the {bold ZERO_CHANGE_STREAMER_MODE}`,
353
- `can be set to "{bold discover}" to instruct the {bold view-syncer} to connect to the `,
354
- `ip address registered by the {bold replication-manager} upon startup.`,
355
- ``,
356
- `This may not work in all networking configurations, e.g. certain private `,
357
- `networking or port forwarding configurations. Using the {bold ZERO_CHANGE_STREAMER_URI}`,
358
- `with an explicit routable hostname is recommended instead.`,
359
- ``,
360
- `Note: This option is ignored if the {bold ZERO_CHANGE_STREAMER_URI} is set.`,
361
- ],
362
- },
363
- port: {
364
- type: v.number().optional(),
365
- desc: [
366
- `The port on which the {bold change-streamer} runs. This is an internal`,
367
- `protocol between the {bold replication-manager} and {bold view-syncers}, which`,
368
- `runs in the same process tree in local development or a single-node configuration.`,
369
- ``,
370
- `If unspecified, defaults to {bold --port} + 1.`,
371
- ],
372
- },
373
- address: {
374
- type: v.string().optional(),
375
- deprecated: [
376
- `Set the {bold ZERO_CHANGE_STREAMER_URI} on view-syncers instead.`,
377
- ],
378
- hidden: true,
379
- },
380
- protocol: {
381
- type: v.literalUnion('ws', 'wss').default('ws'),
382
- deprecated: [
383
- `Set the {bold ZERO_CHANGE_STREAMER_URI} on view-syncers instead.`,
384
- ],
385
- hidden: true,
386
- },
387
- discoveryInterfacePreferences: {
388
- type: v.array(v.string()).default([
389
- 'eth', // linux
390
- 'en', // macbooks
391
- ]),
392
- desc: [
393
- `The name prefixes to prefer when introspecting the network interfaces to determine`,
394
- `the externally reachable IP address for change-streamer discovery. This defaults`,
395
- `to commonly used names for standard ethernet interfaces in order to prevent selecting`,
396
- `special interfaces such as those for VPNs.`,
397
- ],
398
- // More confusing than it's worth to advertise this. The default list should be
399
- // adjusted to make things work for all environments; it is controlled as a
400
- // hidden flag as an emergency to unblock people with outlier network configs.
401
- hidden: true,
402
- },
403
- },
404
- taskID: {
405
- type: v.string().optional(),
406
- desc: [
407
- `Globally unique identifier for the zero-cache instance.`,
408
- ``,
409
- `Setting this to a platform specific task identifier can be useful for debugging.`,
410
- `If unspecified, zero-cache will attempt to extract the TaskARN if run from within`,
411
- `an AWS ECS container, and otherwise use a random string.`,
412
- ],
413
- },
414
- perUserMutationLimit,
415
- numSyncWorkers: {
416
- type: v.number().optional(),
417
- desc: [
418
- `The number of processes to use for view syncing.`,
419
- `Leave this unset to use the maximum available parallelism.`,
420
- `If set to 0, the server runs without sync workers, which is the`,
421
- `configuration for running the {bold replication-manager}.`,
422
- ],
423
- },
424
- autoReset: {
425
- type: v.boolean().default(true),
426
- desc: [
427
- `Automatically wipe and resync the replica when replication is halted.`,
428
- `This situation can occur for configurations in which the upstream database`,
429
- `provider prohibits event trigger creation, preventing the zero-cache from`,
430
- `being able to correctly replicate schema changes. For such configurations,`,
431
- `an upstream schema change will instead result in halting replication with an`,
432
- `error indicating that the replica needs to be reset.`,
433
- ``,
434
- `When {bold auto-reset} is enabled, zero-cache will respond to such situations`,
435
- `by shutting down, and when restarted, resetting the replica and all synced `,
436
- `clients. This is a heavy-weight operation and can result in user-visible`,
437
- `slowness or downtime if compute resources are scarce.`,
438
- ],
439
- },
440
- adminPassword: {
441
- type: v.string().optional(),
442
- desc: [
443
- `A password used to administer zero-cache server, for example to access the`,
444
- `/statz endpoint.`,
445
- '',
446
- 'A password is optional in development mode but {bold required in production} mode.',
447
- ],
448
- },
449
- websocketCompression: {
450
- type: v.boolean().default(false),
451
- desc: [
452
- 'Enable WebSocket per-message deflate compression.',
453
- '',
454
- 'Compression can reduce bandwidth usage for sync traffic but',
455
- 'increases CPU usage on both client and server. Disabled by default.',
456
- '',
457
- 'See: https://github.com/websockets/ws#websocket-compression',
458
- ],
459
- },
460
- websocketCompressionOptions: {
461
- type: v.string().optional(),
462
- desc: [
463
- 'JSON string containing WebSocket compression options.',
464
- '',
465
- 'Only used if websocketCompression is enabled.',
466
- '',
467
- 'Example: \\{"zlibDeflateOptions":\\{"level":3\\},"threshold":1024\\}',
468
- '',
469
- 'See https://github.com/websockets/ws/blob/master/doc/ws.md#new-websocketserveroptions-callback for available options.',
470
- ],
471
- },
472
- litestream: {
473
- executable: {
474
- type: v.string().optional(),
475
- desc: [`Path to the {bold litestream} executable.`],
476
- },
477
- configPath: {
478
- type: v.string().default('./src/services/litestream/config.yml'),
479
- desc: [
480
- `Path to the litestream yaml config file. zero-cache will run this with its`,
481
- `environment variables, which can be referenced in the file via $\\{ENV\\}`,
482
- `substitution, for example:`,
483
- `* {bold ZERO_REPLICA_FILE} for the db path`,
484
- `* {bold ZERO_LITESTREAM_BACKUP_LOCATION} for the db replica url`,
485
- `* {bold ZERO_LITESTREAM_LOG_LEVEL} for the log level`,
486
- `* {bold ZERO_LOG_FORMAT} for the log type`,
487
- ],
488
- },
489
- logLevel: {
490
- type: v.literalUnion('debug', 'info', 'warn', 'error').default('warn'),
491
- },
492
- backupURL: {
493
- type: v.string().optional(),
494
- desc: [
495
- `The location of the litestream backup, usually an {bold s3://} URL.`,
496
- `This is only consulted by the {bold replication-manager}.`,
497
- `{bold view-syncers} receive this information from the {bold replication-manager}.`,
498
- ],
499
- },
500
- port: {
501
- type: v.number().optional(),
502
- desc: [
503
- `Port on which litestream exports metrics, used to determine the replication`,
504
- `watermark up to which it is safe to purge change log records.`,
505
- ``,
506
- `If unspecified, defaults to {bold --port} + 2.`,
507
- ],
508
- },
509
- checkpointThresholdMB: {
510
- type: v.number().default(40),
511
- desc: [
512
- `The size of the WAL file at which to perform an SQlite checkpoint to apply`,
513
- `the writes in the WAL to the main database file. Each checkpoint creates`,
514
- `a new WAL segment file that will be backed up by litestream. Smaller thresholds`,
515
- `may improve read performance, at the expense of creating more files to download`,
516
- `when restoring the replica from the backup.`,
517
- ],
518
- },
519
- incrementalBackupIntervalMinutes: {
520
- type: v.number().default(15),
521
- desc: [
522
- `The interval between incremental backups of the replica. Shorter intervals`,
523
- `reduce the amount of change history that needs to be replayed when catching`,
524
- `up a new view-syncer, at the expense of increasing the number of files needed`,
525
- `to download for the initial litestream restore.`,
526
- ],
527
- },
528
- snapshotBackupIntervalHours: {
529
- type: v.number().default(12),
530
- desc: [
531
- `The interval between snapshot backups of the replica. Snapshot backups`,
532
- `make a full copy of the database to a new litestream generation. This`,
533
- `improves restore time at the expense of bandwidth. Applications with a`,
534
- `large database and low write rate can increase this interval to reduce`,
535
- `network usage for backups (litestream defaults to 24 hours).`,
536
- ],
537
- },
538
- restoreParallelism: {
539
- type: v.number().default(48),
540
- desc: [
541
- `The number of WAL files to download in parallel when performing the`,
542
- `initial restore of the replica from the backup.`,
543
- ],
544
- },
545
- multipartConcurrency: {
546
- type: v.number().default(48),
547
- desc: [
548
- `The number of parts (of size {bold --litestream-multipart-size} bytes)`,
549
- `to upload or download in parallel when backing up or restoring the snapshot.`,
550
- ],
551
- },
552
- multipartSize: {
553
- type: v.number().default(16 * 1024 * 1024),
554
- desc: [
555
- `The size of each part when uploading or downloading the snapshot with`,
556
- `{bold --multipart-concurrency}. Note that up to {bold concurrency * size}`,
557
- `bytes of memory are used when backing up or restoring the snapshot.`,
558
- ],
559
- },
560
- },
561
- storageDBTmpDir: {
562
- type: v.string().optional(),
563
- desc: [
564
- `tmp directory for IVM operator storage. Leave unset to use os.tmpdir()`,
565
- ],
566
- },
567
- initialSync: {
568
- tableCopyWorkers: {
569
- type: v.number().default(5),
570
- desc: [
571
- `The number of parallel workers used to copy tables during initial sync.`,
572
- `Each worker uses a database connection and will buffer up to (approximately)`,
573
- `10 MB of table data in memory during initial sync. Increasing the number of`,
574
- `workers may improve initial sync speed; however, note that local disk throughput`,
575
- `(i.e. IOPS), upstream CPU, and network bandwidth may also be bottlenecks.`,
576
- ],
577
- },
578
- profileCopy: {
579
- type: v.boolean().optional(),
580
- hidden: true,
581
- desc: [
582
- `Takes a cpu profile during the copy phase initial-sync, storing it as a JSON file`,
583
- `initial-copy.cpuprofile in the tmp directory.`,
584
- ],
585
- },
586
- },
587
- targetClientRowCount: {
588
- type: v.number().default(20_000),
589
- deprecated: [
590
- 'This option is no longer used and will be removed in a future version.',
591
- 'The client-side cache no longer enforces a row limit. Instead, TTL-based expiration',
592
- 'automatically manages cache size to prevent unbounded growth.',
593
- ],
594
- hidden: true,
595
- },
596
- lazyStartup: {
597
- type: v.boolean().default(false),
598
- desc: [
599
- 'Delay starting the majority of zero-cache until first request.',
600
- '',
601
- 'This is mainly intended to avoid connecting to Postgres replication stream',
602
- 'until the first request is received, which can be useful i.e., for preview instances.',
603
- '',
604
- 'Currently only supported in single-node mode.',
605
- ],
606
- },
607
- serverVersion: {
608
- type: v.string().optional(),
609
- desc: [`The version string outputted to logs when the server starts up.`],
610
- },
611
- enableTelemetry: {
612
- type: v.boolean().default(true),
613
- desc: [
614
- `Set to false to opt out of telemetry collection.`,
615
- ``,
616
- `This helps us improve Zero by collecting anonymous usage data.`,
617
- `Setting the DO_NOT_TRACK environment variable also disables telemetry.`,
618
- ],
619
- },
620
- cloudEvent: {
621
- sinkEnv: {
622
- type: v.string().optional(),
623
- desc: [
624
- `ENV variable containing a URI to a CloudEvents sink. When set, ZeroEvents`,
625
- `will be published to the sink as the {bold data} field of CloudEvents.`,
626
- `The {bold source} field of the CloudEvents will be set to the {bold ZERO_TASK_ID},`,
627
- `along with any extension attributes specified by the {bold ZERO_CLOUD_EVENT_EXTENSION_OVERRIDES_ENV}.`,
628
- ``,
629
- `This configuration is modeled to easily integrate with a knative K_SINK binding,`,
630
- `(i.e. https://github.com/knative/eventing/blob/main/docs/spec/sources.md#sinkbinding).`,
631
- `However, any CloudEvents sink can be used.`,
632
- ],
633
- },
634
- extensionOverridesEnv: {
635
- type: v.string().optional(),
636
- desc: [
637
- `ENV variable containing a JSON stringified object with an {bold extensions} field`,
638
- `containing attributes that should be added or overridden on outbound CloudEvents.`,
639
- ``,
640
- `This configuration is modeled to easily integrate with a knative K_CE_OVERRIDES binding,`,
641
- `(i.e. https://github.com/knative/eventing/blob/main/docs/spec/sources.md#sinkbinding).`,
642
- ],
643
- },
364
+ type: number().optional(),
365
+ desc: [
366
+ `The port on which the {bold change-streamer} runs. This is an internal`,
367
+ `protocol between the {bold replication-manager} and {bold view-syncers}, which`,
368
+ `runs in the same process tree in local development or a single-node configuration.`,
369
+ ``,
370
+ `If unspecified, defaults to {bold --port} + 1.`
371
+ ]
372
+ },
373
+ /** @deprecated */
374
+ address: {
375
+ type: string().optional(),
376
+ deprecated: [
377
+ `Set the {bold ZERO_CHANGE_STREAMER_URI} on view-syncers instead.`
378
+ ],
379
+ hidden: true
380
+ },
381
+ /** @deprecated */
382
+ protocol: {
383
+ type: literalUnion("ws", "wss").default("ws"),
384
+ deprecated: [
385
+ `Set the {bold ZERO_CHANGE_STREAMER_URI} on view-syncers instead.`
386
+ ],
387
+ hidden: true
388
+ },
389
+ discoveryInterfacePreferences: {
390
+ type: array(string()).default([
391
+ "eth",
392
+ // linux
393
+ "en"
394
+ // macbooks
395
+ ]),
396
+ desc: [
397
+ `The name prefixes to prefer when introspecting the network interfaces to determine`,
398
+ `the externally reachable IP address for change-streamer discovery. This defaults`,
399
+ `to commonly used names for standard ethernet interfaces in order to prevent selecting`,
400
+ `special interfaces such as those for VPNs.`
401
+ ],
402
+ // More confusing than it's worth to advertise this. The default list should be
403
+ // adjusted to make things work for all environments; it is controlled as a
404
+ // hidden flag as an emergency to unblock people with outlier network configs.
405
+ hidden: true
406
+ },
407
+ startupDelayKeepalives: {
408
+ type: number().default(3),
409
+ desc: [
410
+ `The number of /keepalive requests to wait for before the change-streamer takes over`,
411
+ `the replication stream (i.e. the handoff during replication-manager updates). This`,
412
+ `delay is used to verify that the task is recognized by the load balancer as a healthy`,
413
+ `target before the shutdown signal is sent to the previous replication-manager.`
414
+ ]
415
+ },
416
+ startupDelayMs: {
417
+ type: number().default(15e3),
418
+ desc: [
419
+ `The maximum delay to wait before the change-streamer takes over the replication`,
420
+ `stream (i.e. the handoff during replication-manager updates). The takeover will thus`,
421
+ `happen when (1) {bold ZERO_CHANGE_STREAMER_STARTUP_DELAY_KEEPALIVES} are received,`,
422
+ `(2) when {bold ZERO_CHANGE_STREAMER_STARTUP_DELAY_MS} has elapsed since the change-streamer`,
423
+ `service started (i.e. after the replica has been initialized or restored), or (3) when`,
424
+ `a change stream request is received by a view-syncer (i.e. serving-replicator).`
425
+ ]
426
+ }
427
+ },
428
+ taskID: {
429
+ type: string().optional(),
430
+ desc: [
431
+ `Globally unique identifier for the zero-cache instance.`,
432
+ ``,
433
+ `Setting this to a platform specific task identifier can be useful for debugging.`,
434
+ `If unspecified, zero-cache will attempt to extract the TaskARN if run from within`,
435
+ `an AWS ECS container, and otherwise use a random string.`
436
+ ]
437
+ },
438
+ perUserMutationLimit,
439
+ numSyncWorkers: {
440
+ type: number().optional(),
441
+ desc: [
442
+ `The number of processes to use for view syncing.`,
443
+ `Leave this unset to use the maximum available parallelism.`,
444
+ `If set to 0, the server runs without sync workers, which is the`,
445
+ `configuration for running the {bold replication-manager}.`
446
+ ]
447
+ },
448
+ autoReset: {
449
+ type: boolean().default(true),
450
+ desc: [
451
+ `Automatically wipe and resync the replica when replication is halted.`,
452
+ `This situation can occur for configurations in which the upstream database`,
453
+ `provider prohibits event trigger creation, preventing the zero-cache from`,
454
+ `being able to correctly replicate schema changes. For such configurations,`,
455
+ `an upstream schema change will instead result in halting replication with an`,
456
+ `error indicating that the replica needs to be reset.`,
457
+ ``,
458
+ `When {bold auto-reset} is enabled, zero-cache will respond to such situations`,
459
+ `by shutting down, and when restarted, resetting the replica and all synced `,
460
+ `clients. This is a heavy-weight operation and can result in user-visible`,
461
+ `slowness or downtime if compute resources are scarce.`
462
+ ]
463
+ },
464
+ adminPassword: {
465
+ type: string().optional(),
466
+ desc: [
467
+ `A password used to administer zero-cache server, for example to access the`,
468
+ `/statz endpoint.`,
469
+ "",
470
+ "A password is optional in development mode but {bold required in production} mode."
471
+ ]
472
+ },
473
+ websocketCompression: {
474
+ type: boolean().default(false),
475
+ desc: [
476
+ "Enable WebSocket per-message deflate compression.",
477
+ "",
478
+ "Compression can reduce bandwidth usage for sync traffic but",
479
+ "increases CPU usage on both client and server. Disabled by default.",
480
+ "",
481
+ "See: https://github.com/websockets/ws#websocket-compression"
482
+ ]
483
+ },
484
+ websocketCompressionOptions: {
485
+ type: string().optional(),
486
+ desc: [
487
+ "JSON string containing WebSocket compression options.",
488
+ "",
489
+ "Only used if websocketCompression is enabled.",
490
+ "",
491
+ 'Example: \\{"zlibDeflateOptions":\\{"level":3\\},"threshold":1024\\}',
492
+ "",
493
+ "See https://github.com/websockets/ws/blob/master/doc/ws.md#new-websocketserveroptions-callback for available options."
494
+ ]
495
+ },
496
+ litestream: {
497
+ executable: {
498
+ type: string().optional(),
499
+ desc: [`Path to the {bold litestream} executable.`]
500
+ },
501
+ configPath: {
502
+ type: string().default("./src/services/litestream/config.yml"),
503
+ desc: [
504
+ `Path to the litestream yaml config file. zero-cache will run this with its`,
505
+ `environment variables, which can be referenced in the file via $\\{ENV\\}`,
506
+ `substitution, for example:`,
507
+ `* {bold ZERO_REPLICA_FILE} for the db path`,
508
+ `* {bold ZERO_LITESTREAM_BACKUP_LOCATION} for the db replica url`,
509
+ `* {bold ZERO_LITESTREAM_LOG_LEVEL} for the log level`,
510
+ `* {bold ZERO_LOG_FORMAT} for the log type`
511
+ ]
512
+ },
513
+ logLevel: {
514
+ type: literalUnion("debug", "info", "warn", "error").default("warn")
515
+ },
516
+ backupURL: {
517
+ type: string().optional(),
518
+ desc: [
519
+ `The location of the litestream backup, usually an {bold s3://} URL.`,
520
+ `This is only consulted by the {bold replication-manager}.`,
521
+ `{bold view-syncers} receive this information from the {bold replication-manager}.`
522
+ ]
644
523
  },
524
+ port: {
525
+ type: number().optional(),
526
+ desc: [
527
+ `Port on which litestream exports metrics, used to determine the replication`,
528
+ `watermark up to which it is safe to purge change log records.`,
529
+ ``,
530
+ `If unspecified, defaults to {bold --port} + 2.`
531
+ ]
532
+ },
533
+ checkpointThresholdMB: {
534
+ type: number().default(40),
535
+ desc: [
536
+ `The size of the WAL file at which to perform an SQlite checkpoint to apply`,
537
+ `the writes in the WAL to the main database file. Each checkpoint creates`,
538
+ `a new WAL segment file that will be backed up by litestream. Smaller thresholds`,
539
+ `may improve read performance, at the expense of creating more files to download`,
540
+ `when restoring the replica from the backup.`
541
+ ]
542
+ },
543
+ incrementalBackupIntervalMinutes: {
544
+ type: number().default(15),
545
+ desc: [
546
+ `The interval between incremental backups of the replica. Shorter intervals`,
547
+ `reduce the amount of change history that needs to be replayed when catching`,
548
+ `up a new view-syncer, at the expense of increasing the number of files needed`,
549
+ `to download for the initial litestream restore.`
550
+ ]
551
+ },
552
+ snapshotBackupIntervalHours: {
553
+ type: number().default(12),
554
+ desc: [
555
+ `The interval between snapshot backups of the replica. Snapshot backups`,
556
+ `make a full copy of the database to a new litestream generation. This`,
557
+ `improves restore time at the expense of bandwidth. Applications with a`,
558
+ `large database and low write rate can increase this interval to reduce`,
559
+ `network usage for backups (litestream defaults to 24 hours).`
560
+ ]
561
+ },
562
+ restoreParallelism: {
563
+ type: number().default(48),
564
+ desc: [
565
+ `The number of WAL files to download in parallel when performing the`,
566
+ `initial restore of the replica from the backup.`
567
+ ]
568
+ },
569
+ multipartConcurrency: {
570
+ type: number().default(48),
571
+ desc: [
572
+ `The number of parts (of size {bold --litestream-multipart-size} bytes)`,
573
+ `to upload or download in parallel when backing up or restoring the snapshot.`
574
+ ]
575
+ },
576
+ multipartSize: {
577
+ type: number().default(16 * 1024 * 1024),
578
+ desc: [
579
+ `The size of each part when uploading or downloading the snapshot with`,
580
+ `{bold --multipart-concurrency}. Note that up to {bold concurrency * size}`,
581
+ `bytes of memory are used when backing up or restoring the snapshot.`
582
+ ]
583
+ }
584
+ },
585
+ storageDBTmpDir: {
586
+ type: string().optional(),
587
+ desc: [
588
+ `tmp directory for IVM operator storage. Leave unset to use os.tmpdir()`
589
+ ]
590
+ },
591
+ initialSync: {
592
+ tableCopyWorkers: {
593
+ type: number().default(5),
594
+ desc: [
595
+ `The number of parallel workers used to copy tables during initial sync.`,
596
+ `Each worker uses a database connection and will buffer up to (approximately)`,
597
+ `10 MB of table data in memory during initial sync. Increasing the number of`,
598
+ `workers may improve initial sync speed; however, note that local disk throughput`,
599
+ `(i.e. IOPS), upstream CPU, and network bandwidth may also be bottlenecks.`
600
+ ]
601
+ },
602
+ profileCopy: {
603
+ type: boolean().optional(),
604
+ hidden: true,
605
+ desc: [
606
+ `Takes a cpu profile during the copy phase initial-sync, storing it as a JSON file`,
607
+ `initial-copy.cpuprofile in the tmp directory.`
608
+ ]
609
+ }
610
+ },
611
+ /** @deprecated */
612
+ targetClientRowCount: {
613
+ type: number().default(2e4),
614
+ deprecated: [
615
+ "This option is no longer used and will be removed in a future version.",
616
+ "The client-side cache no longer enforces a row limit. Instead, TTL-based expiration",
617
+ "automatically manages cache size to prevent unbounded growth."
618
+ ],
619
+ hidden: true
620
+ },
621
+ lazyStartup: {
622
+ type: boolean().default(false),
623
+ desc: [
624
+ "Delay starting the majority of zero-cache until first request.",
625
+ "",
626
+ "This is mainly intended to avoid connecting to Postgres replication stream",
627
+ "until the first request is received, which can be useful i.e., for preview instances.",
628
+ "",
629
+ "Currently only supported in single-node mode."
630
+ ]
631
+ },
632
+ serverVersion: {
633
+ type: string().optional(),
634
+ desc: [`The version string outputted to logs when the server starts up.`]
635
+ },
636
+ enableTelemetry: {
637
+ type: boolean().default(true),
638
+ desc: [
639
+ `Set to false to opt out of telemetry collection.`,
640
+ ``,
641
+ `This helps us improve Zero by collecting anonymous usage data.`,
642
+ `Setting the DO_NOT_TRACK environment variable also disables telemetry.`
643
+ ]
644
+ },
645
+ cloudEvent: {
646
+ sinkEnv: {
647
+ type: string().optional(),
648
+ desc: [
649
+ `ENV variable containing a URI to a CloudEvents sink. When set, ZeroEvents`,
650
+ `will be published to the sink as the {bold data} field of CloudEvents.`,
651
+ `The {bold source} field of the CloudEvents will be set to the {bold ZERO_TASK_ID},`,
652
+ `along with any extension attributes specified by the {bold ZERO_CLOUD_EVENT_EXTENSION_OVERRIDES_ENV}.`,
653
+ ``,
654
+ `This configuration is modeled to easily integrate with a knative K_SINK binding,`,
655
+ `(i.e. https://github.com/knative/eventing/blob/main/docs/spec/sources.md#sinkbinding).`,
656
+ `However, any CloudEvents sink can be used.`
657
+ ]
658
+ },
659
+ extensionOverridesEnv: {
660
+ type: string().optional(),
661
+ desc: [
662
+ `ENV variable containing a JSON stringified object with an {bold extensions} field`,
663
+ `containing attributes that should be added or overridden on outbound CloudEvents.`,
664
+ ``,
665
+ `This configuration is modeled to easily integrate with a knative K_CE_OVERRIDES binding,`,
666
+ `(i.e. https://github.com/knative/eventing/blob/main/docs/spec/sources.md#sinkbinding).`
667
+ ]
668
+ }
669
+ }
645
670
  };
646
- export const ZERO_ENV_VAR_PREFIX = 'ZERO_';
671
+ const ZERO_ENV_VAR_PREFIX = "ZERO_";
647
672
  let loadedConfig;
648
- export function getZeroConfig(opts = {}) {
649
- if (!loadedConfig || singleProcessMode()) {
650
- loadedConfig = parseOptions(zeroOptions, {
651
- envNamePrefix: ZERO_ENV_VAR_PREFIX,
652
- emitDeprecationWarnings: false, // overridden at the top level parse
653
- ...opts,
654
- });
655
- if (loadedConfig.queryHydrationStats) {
656
- runtimeDebugFlags.trackRowCountsVended = true;
657
- }
673
+ function getZeroConfig(opts = {}) {
674
+ if (!loadedConfig || singleProcessMode()) {
675
+ loadedConfig = parseOptions(zeroOptions, {
676
+ envNamePrefix: ZERO_ENV_VAR_PREFIX,
677
+ emitDeprecationWarnings: false,
678
+ // overridden at the top level parse
679
+ ...opts
680
+ });
681
+ if (loadedConfig.queryHydrationStats) {
682
+ runtimeDebugFlags.trackRowCountsVended = true;
658
683
  }
659
- return loadedConfig;
684
+ }
685
+ return loadedConfig;
660
686
  }
661
- /**
662
- * Same as {@link getZeroConfig}, with an additional check that the
663
- * config has already been normalized (i.e. by the top level server/runner).
664
- */
665
- export function getNormalizedZeroConfig(opts = {}) {
666
- const config = getZeroConfig(opts);
667
- assertNormalized(config);
668
- return config;
687
+ function getNormalizedZeroConfig(opts = {}) {
688
+ const config = getZeroConfig(opts);
689
+ assertNormalized(config);
690
+ return config;
669
691
  }
670
- /**
671
- * Gets the server version from the config if provided. Otherwise it gets it
672
- * from the Zero package.json.
673
- */
674
- export function getServerVersion(config) {
675
- return config?.serverVersion ?? packageJson.version;
692
+ function getServerVersion(config) {
693
+ return config?.serverVersion ?? packageJson.version;
676
694
  }
677
- export function isAdminPasswordValid(lc, config, password) {
678
- // If development mode, password is optional
679
- // We use process.env.NODE_ENV === 'development' as a sign that we're in
680
- // development mode, rather than a custom env var like ZERO_DEVELOPMENT_MODE,
681
- // because NODE_ENV is more standard and is already used by many tools.
682
- // Note that if NODE_ENV is not set, we assume production mode.
683
- if (!password && !config.adminPassword && isDevelopmentMode()) {
684
- warnOnce(lc, 'No admin password set; allowing access in development mode only');
685
- return true;
686
- }
687
- if (!config.adminPassword) {
688
- lc.warn?.('No admin password set; denying access');
689
- return false;
690
- }
691
- if (password !== config.adminPassword) {
692
- lc.warn?.('Invalid admin password');
693
- return false;
694
- }
695
- lc.debug?.('Admin password accepted');
695
+ function isAdminPasswordValid(lc, config, password) {
696
+ if (!password && !config.adminPassword && isDevelopmentMode()) {
697
+ warnOnce(
698
+ lc,
699
+ "No admin password set; allowing access in development mode only"
700
+ );
696
701
  return true;
702
+ }
703
+ if (!config.adminPassword) {
704
+ lc.warn?.("No admin password set; denying access");
705
+ return false;
706
+ }
707
+ if (password !== config.adminPassword) {
708
+ lc.warn?.("Invalid admin password");
709
+ return false;
710
+ }
711
+ lc.debug?.("Admin password accepted");
712
+ return true;
697
713
  }
698
714
  let hasWarned = false;
699
715
  function warnOnce(lc, msg) {
700
- if (!hasWarned) {
701
- lc.warn?.(msg);
702
- hasWarned = true;
703
- }
716
+ if (!hasWarned) {
717
+ lc.warn?.(msg);
718
+ hasWarned = true;
719
+ }
704
720
  }
705
- // For testing purposes - reset the warning state
706
- export function resetWarnOnceState() {
707
- hasWarned = false;
708
- }
709
- //# sourceMappingURL=zero-config.js.map
721
+ export {
722
+ ZERO_ENV_VAR_PREFIX,
723
+ appOptions,
724
+ getNormalizedZeroConfig,
725
+ getServerVersion,
726
+ getZeroConfig,
727
+ isAdminPasswordValid,
728
+ shardOptions,
729
+ zeroOptions
730
+ };
731
+ //# sourceMappingURL=zero-config.js.map