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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1332) hide show
  1. package/out/analyze-query/src/bin-analyze.js +258 -236
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/bin-transform.js +31 -23
  4. package/out/analyze-query/src/bin-transform.js.map +1 -1
  5. package/out/analyze-query/src/explain-queries.js +13 -16
  6. package/out/analyze-query/src/explain-queries.js.map +1 -1
  7. package/out/analyze-query/src/run-ast.d.ts +3 -2
  8. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  9. package/out/analyze-query/src/run-ast.js +79 -73
  10. package/out/analyze-query/src/run-ast.js.map +1 -1
  11. package/out/ast-to-zql/src/ast-to-zql.js +146 -180
  12. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  13. package/out/ast-to-zql/src/bin.js +51 -54
  14. package/out/ast-to-zql/src/bin.js.map +1 -1
  15. package/out/ast-to-zql/src/format.js +15 -14
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +223 -0
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -0
  19. package/out/otel/src/enabled.js +15 -15
  20. package/out/otel/src/enabled.js.map +1 -1
  21. package/out/otel/src/log-options.js +36 -31
  22. package/out/otel/src/log-options.js.map +1 -1
  23. package/out/otel/src/maybe-time.js +14 -11
  24. package/out/otel/src/maybe-time.js.map +1 -1
  25. package/out/otel/src/span.js +30 -27
  26. package/out/otel/src/span.js.map +1 -1
  27. package/out/otel/src/test-log-config.js +10 -7
  28. package/out/otel/src/test-log-config.js.map +1 -1
  29. package/out/otel/src/version.js +5 -2
  30. package/out/otel/src/version.js.map +1 -1
  31. package/out/replicache/src/async-iterable-to-array.js +11 -0
  32. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  33. package/out/replicache/src/bg-interval.js +38 -0
  34. package/out/replicache/src/bg-interval.js.map +1 -0
  35. package/out/replicache/src/btree/diff.js +8 -0
  36. package/out/replicache/src/btree/diff.js.map +1 -0
  37. package/out/replicache/src/btree/node.js +400 -0
  38. package/out/replicache/src/btree/node.js.map +1 -0
  39. package/out/replicache/src/btree/read.d.ts +3 -2
  40. package/out/replicache/src/btree/read.d.ts.map +1 -1
  41. package/out/replicache/src/btree/read.js +266 -0
  42. package/out/replicache/src/btree/read.js.map +1 -0
  43. package/out/replicache/src/btree/splice.js +83 -0
  44. package/out/replicache/src/btree/splice.js.map +1 -0
  45. package/out/replicache/src/btree/write.d.ts +1 -1
  46. package/out/replicache/src/btree/write.d.ts.map +1 -1
  47. package/out/replicache/src/btree/write.js +163 -0
  48. package/out/replicache/src/btree/write.js.map +1 -0
  49. package/out/replicache/src/call-default-fetch.js +34 -0
  50. package/out/replicache/src/call-default-fetch.js.map +1 -0
  51. package/out/replicache/src/connection-loop-delegates.js +34 -0
  52. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  53. package/out/replicache/src/connection-loop.js +251 -0
  54. package/out/replicache/src/connection-loop.js.map +1 -0
  55. package/out/replicache/src/cookies.js +40 -0
  56. package/out/replicache/src/cookies.js.map +1 -0
  57. package/out/replicache/src/dag/chunk.js +59 -0
  58. package/out/replicache/src/dag/chunk.js.map +1 -0
  59. package/out/replicache/src/dag/gc.js +117 -0
  60. package/out/replicache/src/dag/gc.js.map +1 -0
  61. package/out/replicache/src/dag/key.js +20 -0
  62. package/out/replicache/src/dag/key.js.map +1 -0
  63. package/out/replicache/src/dag/lazy-store.d.ts +2 -1
  64. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  65. package/out/replicache/src/dag/lazy-store.js +515 -0
  66. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  67. package/out/replicache/src/dag/store-impl.js +183 -0
  68. package/out/replicache/src/dag/store-impl.js.map +1 -0
  69. package/out/replicache/src/dag/store.js +27 -0
  70. package/out/replicache/src/dag/store.js.map +1 -0
  71. package/out/replicache/src/dag/visitor.js +22 -0
  72. package/out/replicache/src/dag/visitor.js.map +1 -0
  73. package/out/replicache/src/db/commit.js +358 -0
  74. package/out/replicache/src/db/commit.js.map +1 -0
  75. package/out/replicache/src/db/index-operation-enum.js +7 -0
  76. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  77. package/out/replicache/src/db/index.js +134 -0
  78. package/out/replicache/src/db/index.js.map +1 -0
  79. package/out/replicache/src/db/meta-type-enum.js +7 -0
  80. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  81. package/out/replicache/src/db/read.d.ts +3 -2
  82. package/out/replicache/src/db/read.d.ts.map +1 -1
  83. package/out/replicache/src/db/read.js +72 -0
  84. package/out/replicache/src/db/read.js.map +1 -0
  85. package/out/replicache/src/db/rebase.d.ts +2 -2
  86. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  87. package/out/replicache/src/db/rebase.js +85 -0
  88. package/out/replicache/src/db/rebase.js.map +1 -0
  89. package/out/replicache/src/db/write.d.ts +2 -1
  90. package/out/replicache/src/db/write.d.ts.map +1 -1
  91. package/out/replicache/src/db/write.js +296 -0
  92. package/out/replicache/src/db/write.js.map +1 -0
  93. package/out/replicache/src/deleted-clients.js +104 -0
  94. package/out/replicache/src/deleted-clients.js.map +1 -0
  95. package/out/replicache/src/error-responses.js +34 -0
  96. package/out/replicache/src/error-responses.js.map +1 -0
  97. package/out/replicache/src/format-version-enum.js +11 -0
  98. package/out/replicache/src/format-version-enum.js.map +1 -0
  99. package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
  100. package/out/replicache/src/frozen-json.js.map +1 -0
  101. package/out/replicache/src/get-default-puller.js +61 -0
  102. package/out/replicache/src/get-default-puller.js.map +1 -0
  103. package/out/replicache/src/get-default-pusher.js +39 -0
  104. package/out/replicache/src/get-default-pusher.js.map +1 -0
  105. package/out/replicache/src/get-kv-store-provider.js +23 -0
  106. package/out/replicache/src/get-kv-store-provider.js.map +1 -0
  107. package/out/replicache/src/hash.js +38 -0
  108. package/out/replicache/src/hash.js.map +1 -0
  109. package/out/replicache/src/http-request-info.js +10 -0
  110. package/out/replicache/src/http-request-info.js.map +1 -0
  111. package/out/replicache/src/http-status-unauthorized.js +5 -0
  112. package/out/replicache/src/http-status-unauthorized.js.map +1 -0
  113. package/out/replicache/src/index-defs.js +32 -0
  114. package/out/replicache/src/index-defs.js.map +1 -0
  115. package/out/replicache/src/invoke-kind-enum.js +7 -0
  116. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  117. package/out/{chunk-HCZQVP5R.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
  118. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  119. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
  120. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  121. package/out/replicache/src/kv/idb-store.js +183 -0
  122. package/out/replicache/src/kv/idb-store.js.map +1 -0
  123. package/out/replicache/src/kv/mem-store.js +51 -0
  124. package/out/replicache/src/kv/mem-store.js.map +1 -0
  125. package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
  126. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
  127. package/out/replicache/src/kv/op-sqlite/types.js +6 -0
  128. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
  129. package/out/replicache/src/kv/read-impl.js +27 -0
  130. package/out/replicache/src/kv/read-impl.js.map +1 -0
  131. package/out/{chunk-WPAQ4EPM.js → replicache/src/kv/sqlite-store.js} +15 -19
  132. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  133. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  134. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  135. package/out/replicache/src/kv/write-impl-base.js +57 -0
  136. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  137. package/out/replicache/src/kv/write-impl.js +30 -0
  138. package/out/replicache/src/kv/write-impl.js.map +1 -0
  139. package/out/replicache/src/lazy.js +13 -0
  140. package/out/replicache/src/lazy.js.map +1 -0
  141. package/out/replicache/src/log-options.js +9 -0
  142. package/out/replicache/src/log-options.js.map +1 -0
  143. package/out/replicache/src/make-idb-name.js +13 -0
  144. package/out/replicache/src/make-idb-name.js.map +1 -0
  145. package/out/replicache/src/new-client-channel.js +51 -0
  146. package/out/replicache/src/new-client-channel.js.map +1 -0
  147. package/out/replicache/src/on-persist-channel.js +36 -0
  148. package/out/replicache/src/on-persist-channel.js.map +1 -0
  149. package/out/replicache/src/patch-operation.js +42 -0
  150. package/out/replicache/src/patch-operation.js.map +1 -0
  151. package/out/replicache/src/pending-mutations.js +16 -0
  152. package/out/replicache/src/pending-mutations.js.map +1 -0
  153. package/out/replicache/src/persist/client-gc.js +58 -0
  154. package/out/replicache/src/persist/client-gc.js.map +1 -0
  155. package/out/replicache/src/persist/client-group-gc.js +43 -0
  156. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  157. package/out/replicache/src/persist/client-groups.js +184 -0
  158. package/out/replicache/src/persist/client-groups.js.map +1 -0
  159. package/out/replicache/src/persist/clients.d.ts +3 -2
  160. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  161. package/out/replicache/src/persist/clients.js +353 -0
  162. package/out/replicache/src/persist/clients.js.map +1 -0
  163. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  165. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  167. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  169. package/out/replicache/src/persist/heartbeat.js +48 -0
  170. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  171. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  173. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  174. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  175. package/out/replicache/src/persist/make-client-id.js +12 -0
  176. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  177. package/out/replicache/src/persist/persist.d.ts +2 -2
  178. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  179. package/out/replicache/src/persist/persist.js +183 -0
  180. package/out/replicache/src/persist/persist.js.map +1 -0
  181. package/out/replicache/src/persist/refresh.d.ts +4 -3
  182. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  183. package/out/replicache/src/persist/refresh.js +198 -0
  184. package/out/replicache/src/persist/refresh.js.map +1 -0
  185. package/out/replicache/src/process-scheduler.js +96 -0
  186. package/out/replicache/src/process-scheduler.js.map +1 -0
  187. package/out/replicache/src/pusher.js +33 -0
  188. package/out/replicache/src/pusher.js.map +1 -0
  189. package/out/replicache/src/replicache-impl.d.ts +1 -1
  190. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  191. package/out/replicache/src/replicache-impl.js +1200 -0
  192. package/out/replicache/src/replicache-impl.js.map +1 -0
  193. package/out/replicache/src/report-error.js +6 -0
  194. package/out/replicache/src/report-error.js.map +1 -0
  195. package/out/replicache/src/request-idle.js +13 -0
  196. package/out/replicache/src/request-idle.js.map +1 -0
  197. package/out/replicache/src/scan-iterator.js +146 -0
  198. package/out/replicache/src/scan-iterator.js.map +1 -0
  199. package/out/replicache/src/scan-options.js +45 -0
  200. package/out/replicache/src/scan-options.js.map +1 -0
  201. package/out/replicache/src/set-interval-with-signal.js +12 -0
  202. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  203. package/out/replicache/src/subscriptions.js +355 -0
  204. package/out/replicache/src/subscriptions.js.map +1 -0
  205. package/out/replicache/src/sync/diff.d.ts +3 -2
  206. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  207. package/out/replicache/src/sync/diff.js +72 -0
  208. package/out/replicache/src/sync/diff.js.map +1 -0
  209. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  210. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  211. package/out/replicache/src/sync/ids.js +9 -0
  212. package/out/replicache/src/sync/ids.js.map +1 -0
  213. package/out/replicache/src/sync/patch.js +49 -0
  214. package/out/replicache/src/sync/patch.js.map +1 -0
  215. package/out/replicache/src/sync/pull-error.js +16 -0
  216. package/out/replicache/src/sync/pull-error.js.map +1 -0
  217. package/out/replicache/src/sync/pull.d.ts +3 -2
  218. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  219. package/out/replicache/src/sync/pull.js +301 -0
  220. package/out/replicache/src/sync/pull.js.map +1 -0
  221. package/out/replicache/src/sync/push.js +88 -0
  222. package/out/replicache/src/sync/push.js.map +1 -0
  223. package/out/replicache/src/sync/request-id.js +20 -0
  224. package/out/replicache/src/sync/request-id.js.map +1 -0
  225. package/out/replicache/src/sync/sync-head-name.js +5 -0
  226. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  227. package/out/replicache/src/to-error.js +10 -0
  228. package/out/replicache/src/to-error.js.map +1 -0
  229. package/out/replicache/src/transaction-closed-error.js +19 -0
  230. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  231. package/out/replicache/src/transactions.js +152 -0
  232. package/out/replicache/src/transactions.js.map +1 -0
  233. package/out/replicache/src/version.js +5 -0
  234. package/out/replicache/src/version.js.map +1 -0
  235. package/out/replicache/src/with-transactions.js +28 -0
  236. package/out/replicache/src/with-transactions.js.map +1 -0
  237. package/out/shared/src/abort-error.js +6 -3
  238. package/out/shared/src/abort-error.js.map +1 -1
  239. package/out/shared/src/arrays.js +45 -43
  240. package/out/shared/src/arrays.js.map +1 -1
  241. package/out/shared/src/asserts.js +64 -68
  242. package/out/shared/src/asserts.js.map +1 -1
  243. package/out/shared/src/bigint-json.js +38 -42
  244. package/out/shared/src/bigint-json.js.map +1 -1
  245. package/out/shared/src/binary-search.js +18 -29
  246. package/out/shared/src/binary-search.js.map +1 -1
  247. package/out/shared/src/broadcast-channel.js +24 -0
  248. package/out/shared/src/broadcast-channel.js.map +1 -0
  249. package/out/shared/src/browser-env.js +25 -0
  250. package/out/shared/src/browser-env.js.map +1 -0
  251. package/out/shared/src/btree-set.js +464 -507
  252. package/out/shared/src/btree-set.js.map +1 -1
  253. package/out/shared/src/cache.js +34 -38
  254. package/out/shared/src/cache.js.map +1 -1
  255. package/out/shared/src/centroid.js +24 -24
  256. package/out/shared/src/centroid.js.map +1 -1
  257. package/out/shared/src/config.js +6 -3
  258. package/out/shared/src/config.js.map +1 -1
  259. package/out/shared/src/custom-key-map.js +58 -64
  260. package/out/shared/src/custom-key-map.js.map +1 -1
  261. package/out/shared/src/custom-key-set.js +51 -57
  262. package/out/shared/src/custom-key-set.js.map +1 -1
  263. package/out/shared/src/deep-clone.js +46 -0
  264. package/out/shared/src/deep-clone.js.map +1 -0
  265. package/out/shared/src/document-visible.js +74 -0
  266. package/out/shared/src/document-visible.js.map +1 -0
  267. package/out/shared/src/dotenv.js +5 -7
  268. package/out/shared/src/dotenv.js.map +1 -1
  269. package/out/shared/src/error.js +57 -56
  270. package/out/shared/src/error.js.map +1 -1
  271. package/out/shared/src/has-own.js +5 -3
  272. package/out/shared/src/has-own.js.map +1 -1
  273. package/out/shared/src/hash.js +15 -14
  274. package/out/shared/src/hash.js.map +1 -1
  275. package/out/shared/src/iterables.js +71 -73
  276. package/out/shared/src/iterables.js.map +1 -1
  277. package/out/shared/src/json-schema.js +30 -33
  278. package/out/shared/src/json-schema.js.map +1 -1
  279. package/out/shared/src/json.js +128 -143
  280. package/out/shared/src/json.js.map +1 -1
  281. package/out/shared/src/logging-test-utils.js +12 -19
  282. package/out/shared/src/logging-test-utils.js.map +1 -1
  283. package/out/shared/src/logging.js +83 -83
  284. package/out/shared/src/logging.js.map +1 -1
  285. package/out/shared/src/must.js +9 -7
  286. package/out/shared/src/must.js.map +1 -1
  287. package/out/shared/src/navigator.js +5 -0
  288. package/out/shared/src/navigator.js.map +1 -0
  289. package/out/shared/src/objects.js +21 -22
  290. package/out/shared/src/objects.js.map +1 -1
  291. package/out/shared/src/options.js +289 -322
  292. package/out/shared/src/options.js.map +1 -1
  293. package/out/shared/src/parse-big-int.js +12 -10
  294. package/out/shared/src/parse-big-int.js.map +1 -1
  295. package/out/shared/src/promise-race.js +20 -0
  296. package/out/shared/src/promise-race.js.map +1 -0
  297. package/out/shared/src/queue.js +119 -122
  298. package/out/shared/src/queue.js.map +1 -1
  299. package/out/shared/src/rand.js +8 -10
  300. package/out/shared/src/rand.js.map +1 -1
  301. package/out/shared/src/random-uint64.js +9 -0
  302. package/out/shared/src/random-uint64.js.map +1 -0
  303. package/out/shared/src/random-values.js +13 -0
  304. package/out/shared/src/random-values.js.map +1 -0
  305. package/out/shared/src/resolved-promises.js +12 -9
  306. package/out/shared/src/resolved-promises.js.map +1 -1
  307. package/out/shared/src/sentinels.js +13 -6
  308. package/out/shared/src/sentinels.js.map +1 -1
  309. package/out/shared/src/set-utils.js +63 -62
  310. package/out/shared/src/set-utils.js.map +1 -1
  311. package/out/shared/src/size-of-value.js +58 -0
  312. package/out/shared/src/size-of-value.js.map +1 -0
  313. package/out/shared/src/sleep.js +45 -53
  314. package/out/shared/src/sleep.js.map +1 -1
  315. package/out/shared/src/string-compare.js +12 -9
  316. package/out/shared/src/string-compare.js.map +1 -1
  317. package/out/shared/src/subscribable.js +34 -0
  318. package/out/shared/src/subscribable.js.map +1 -0
  319. package/out/shared/src/tdigest-schema.js +7 -7
  320. package/out/shared/src/tdigest-schema.js.map +1 -1
  321. package/out/shared/src/tdigest.js +247 -271
  322. package/out/shared/src/tdigest.js.map +1 -1
  323. package/out/shared/src/valita.js +195 -207
  324. package/out/shared/src/valita.js.map +1 -1
  325. package/out/z2s/src/compiler.d.ts.map +1 -1
  326. package/out/z2s/src/compiler.js +437 -310
  327. package/out/z2s/src/compiler.js.map +1 -1
  328. package/out/z2s/src/sql.js +186 -218
  329. package/out/z2s/src/sql.js.map +1 -1
  330. package/out/zero/package.json.js +9 -0
  331. package/out/zero/package.json.js.map +1 -0
  332. package/out/zero/src/adapters/drizzle.js +5 -2
  333. package/out/zero/src/adapters/drizzle.js.map +1 -1
  334. package/out/zero/src/adapters/pg.js +7 -2
  335. package/out/zero/src/adapters/pg.js.map +1 -1
  336. package/out/zero/src/adapters/postgresjs.js +7 -2
  337. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  338. package/out/zero/src/analyze-query.js +1 -1
  339. package/out/zero/src/analyze-query.js.map +1 -1
  340. package/out/zero/src/ast-to-zql.js +1 -1
  341. package/out/zero/src/ast-to-zql.js.map +1 -1
  342. package/out/zero/src/build-schema.js +3 -5
  343. package/out/zero/src/build-schema.js.map +1 -1
  344. package/out/zero/src/change-protocol/v0.js +5 -3
  345. package/out/zero/src/change-protocol/v0.js.map +1 -1
  346. package/out/zero/src/cli.js +2 -2
  347. package/out/zero/src/cli.js.map +1 -1
  348. package/out/zero/src/deploy-permissions.js +1 -1
  349. package/out/zero/src/deploy-permissions.js.map +1 -1
  350. package/out/zero/src/expo-sqlite.js +5 -0
  351. package/out/zero/src/expo-sqlite.js.map +1 -0
  352. package/out/zero/src/op-sqlite.js +5 -0
  353. package/out/zero/src/op-sqlite.js.map +1 -0
  354. package/out/zero/src/pg.js +31 -3
  355. package/out/zero/src/pg.js.map +1 -1
  356. package/out/zero/src/react-native.js +13 -0
  357. package/out/zero/src/react-native.js.map +1 -0
  358. package/out/zero/src/react.js +17 -0
  359. package/out/zero/src/react.js.map +1 -0
  360. package/out/zero/src/server.js +27 -3
  361. package/out/zero/src/server.js.map +1 -1
  362. package/out/zero/src/solid.js +15 -0
  363. package/out/zero/src/solid.js.map +1 -0
  364. package/out/zero/src/sqlite.js +7 -0
  365. package/out/zero/src/sqlite.js.map +1 -0
  366. package/out/zero/src/transform-query.js +1 -1
  367. package/out/zero/src/transform-query.js.map +1 -1
  368. package/out/zero/src/zero-cache-dev.js +135 -126
  369. package/out/zero/src/zero-cache-dev.js.map +1 -1
  370. package/out/zero/src/zero-out.js +6 -6
  371. package/out/zero/src/zero-out.js.map +1 -1
  372. package/out/zero/src/zero.js +55 -0
  373. package/out/zero/src/zero.js.map +1 -0
  374. package/out/zero/src/zqlite.js +11 -3
  375. package/out/zero/src/zqlite.js.map +1 -1
  376. package/out/zero-cache/src/auth/jwt.js +33 -38
  377. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  378. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  379. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  380. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  381. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  382. package/out/zero-cache/src/auth/write-authorizer.d.ts +2 -2
  383. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  384. package/out/zero-cache/src/auth/write-authorizer.js +394 -349
  385. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  386. package/out/zero-cache/src/config/network.js +42 -45
  387. package/out/zero-cache/src/config/network.js.map +1 -1
  388. package/out/zero-cache/src/config/normalize.js +86 -83
  389. package/out/zero-cache/src/config/normalize.js.map +1 -1
  390. package/out/zero-cache/src/config/zero-config.js +676 -682
  391. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  392. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  393. package/out/zero-cache/src/custom/fetch.js +166 -162
  394. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  395. package/out/zero-cache/src/custom-queries/transform-query.d.ts +7 -0
  396. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  397. package/out/zero-cache/src/custom-queries/transform-query.js +101 -106
  398. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  399. package/out/zero-cache/src/db/create.js +32 -36
  400. package/out/zero-cache/src/db/create.js.map +1 -1
  401. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  402. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  403. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  404. package/out/zero-cache/src/db/lite-tables.js +150 -174
  405. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  406. package/out/zero-cache/src/db/migration-lite.js +170 -165
  407. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  408. package/out/zero-cache/src/db/migration.js +157 -137
  409. package/out/zero-cache/src/db/migration.js.map +1 -1
  410. package/out/zero-cache/src/db/mode-enum.js +9 -4
  411. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  412. package/out/zero-cache/src/db/pg-copy.js +51 -90
  413. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  414. package/out/zero-cache/src/db/pg-to-lite.js +114 -109
  415. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  416. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  417. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  418. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  419. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  420. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  421. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  422. package/out/zero-cache/src/db/specs.d.ts +0 -6
  423. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  424. package/out/zero-cache/src/db/specs.js +66 -40
  425. package/out/zero-cache/src/db/specs.js.map +1 -1
  426. package/out/zero-cache/src/db/statements.d.ts +1 -1
  427. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  428. package/out/zero-cache/src/db/statements.js +59 -52
  429. package/out/zero-cache/src/db/statements.js.map +1 -1
  430. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  431. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  432. package/out/zero-cache/src/db/transaction-pool.js +375 -501
  433. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  434. package/out/zero-cache/src/db/warmup.js +25 -12
  435. package/out/zero-cache/src/db/warmup.js.map +1 -1
  436. package/out/zero-cache/src/observability/events.js +71 -82
  437. package/out/zero-cache/src/observability/events.js.map +1 -1
  438. package/out/zero-cache/src/observability/metrics.js +54 -32
  439. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  440. package/out/zero-cache/src/scripts/decommission.js +47 -43
  441. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  442. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  443. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  444. package/out/zero-cache/src/scripts/permissions.js +107 -99
  445. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  446. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  447. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  448. package/out/zero-cache/src/server/change-streamer.js +104 -60
  449. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  450. package/out/zero-cache/src/server/inspector-delegate.js +112 -109
  451. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  452. package/out/zero-cache/src/server/logging.d.ts +1 -1
  453. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  454. package/out/zero-cache/src/server/logging.js +26 -19
  455. package/out/zero-cache/src/server/logging.js.map +1 -1
  456. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  457. package/out/zero-cache/src/server/main.js +137 -120
  458. package/out/zero-cache/src/server/main.js.map +1 -1
  459. package/out/zero-cache/src/server/mutator.js +19 -0
  460. package/out/zero-cache/src/server/mutator.js.map +1 -0
  461. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  462. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  463. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  464. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  465. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  466. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  467. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  468. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  469. package/out/zero-cache/src/server/otel-start.js +57 -68
  470. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  471. package/out/zero-cache/src/server/reaper.js +34 -26
  472. package/out/zero-cache/src/server/reaper.js.map +1 -1
  473. package/out/zero-cache/src/server/replicator.js +53 -31
  474. package/out/zero-cache/src/server/replicator.js.map +1 -1
  475. package/out/zero-cache/src/server/runner/main.js +6 -4
  476. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  477. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  478. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  479. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  480. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  481. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  482. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  483. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  484. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  485. package/out/zero-cache/src/server/syncer.js +112 -63
  486. package/out/zero-cache/src/server/syncer.js.map +1 -1
  487. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  488. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  489. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  490. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  491. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  492. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  493. package/out/zero-cache/src/server/worker-urls.js +21 -0
  494. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  495. package/out/zero-cache/src/services/analyze.d.ts +3 -4
  496. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  497. package/out/zero-cache/src/services/analyze.js +96 -122
  498. package/out/zero-cache/src/services/analyze.js.map +1 -1
  499. package/out/zero-cache/src/services/change-source/column-metadata.js +152 -155
  500. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  501. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  502. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  503. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  504. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  505. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  506. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  507. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  508. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  509. package/out/zero-cache/src/services/change-source/pg/change-source.js +601 -622
  510. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  511. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  512. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  513. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  514. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  515. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  516. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  517. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  518. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  519. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  520. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  521. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  522. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  523. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  524. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  525. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  526. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  527. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  528. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  529. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  530. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  531. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  532. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  533. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  534. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  535. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  536. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  537. package/out/zero-cache/src/services/change-source/protocol/current/control.js +9 -19
  538. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  539. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  540. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  541. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  542. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  543. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  544. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  545. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  546. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  547. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  548. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  549. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  550. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  551. package/out/zero-cache/src/services/change-source/protocol/current.js +35 -7
  552. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  553. package/out/zero-cache/src/services/change-source/replica-schema.js +64 -47
  554. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  555. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -161
  556. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  557. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +2 -2
  558. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  559. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +178 -158
  560. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  561. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  562. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  563. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +234 -355
  564. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  565. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -26
  566. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  567. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  568. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  569. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  570. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  571. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  572. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  573. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +40 -44
  574. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  575. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  576. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  577. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  578. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  579. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  580. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  581. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -37
  582. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  583. package/out/zero-cache/src/services/change-streamer/storer.d.ts +2 -2
  584. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  585. package/out/zero-cache/src/services/change-streamer/storer.js +309 -372
  586. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  587. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -1
  588. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  589. package/out/zero-cache/src/services/change-streamer/subscriber.js +83 -90
  590. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  591. package/out/zero-cache/src/services/heapz.js +21 -25
  592. package/out/zero-cache/src/services/heapz.js.map +1 -1
  593. package/out/zero-cache/src/services/http-service.d.ts +1 -1
  594. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  595. package/out/zero-cache/src/services/http-service.js +56 -59
  596. package/out/zero-cache/src/services/http-service.js.map +1 -1
  597. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  598. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  599. package/out/zero-cache/src/services/life-cycle.js +216 -255
  600. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  601. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  602. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  603. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  604. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  605. package/out/zero-cache/src/services/litestream/commands.js +193 -178
  606. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  607. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  608. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  609. package/out/zero-cache/src/services/mutagen/mutagen.js +270 -267
  610. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  611. package/out/zero-cache/src/services/mutagen/pusher.js +351 -344
  612. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  613. package/out/zero-cache/src/services/replicator/change-processor.js +483 -530
  614. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  615. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  616. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  617. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  618. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  619. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  620. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  621. package/out/zero-cache/src/services/replicator/replication-status.js +100 -83
  622. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  623. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  624. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  625. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  626. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  627. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  628. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  629. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  630. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  631. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  632. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  633. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  634. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  635. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  636. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  637. package/out/zero-cache/src/services/run-ast.d.ts +5 -3
  638. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  639. package/out/zero-cache/src/services/run-ast.js +80 -79
  640. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  641. package/out/zero-cache/src/services/runner.d.ts +1 -1
  642. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  643. package/out/zero-cache/src/services/runner.js +40 -40
  644. package/out/zero-cache/src/services/runner.js.map +1 -1
  645. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  646. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  647. package/out/zero-cache/src/services/running-state.js +122 -119
  648. package/out/zero-cache/src/services/running-state.js.map +1 -1
  649. package/out/zero-cache/src/services/statz.js +184 -162
  650. package/out/zero-cache/src/services/statz.js.map +1 -1
  651. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  652. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  653. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  654. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  655. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  656. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  657. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  658. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +83 -92
  659. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  660. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  661. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  662. package/out/zero-cache/src/services/view-syncer/cvr-store.js +628 -616
  663. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  664. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  665. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  666. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -694
  667. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  668. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
  669. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  670. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  671. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  672. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +168 -158
  673. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  674. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +14 -13
  675. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  676. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +529 -482
  677. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  678. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -280
  679. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  680. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +53 -120
  681. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  682. package/out/zero-cache/src/services/view-syncer/schema/init.js +171 -150
  683. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  684. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  685. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  686. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  687. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  688. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  689. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  690. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  691. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  692. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -3
  693. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  694. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1485 -1307
  695. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  696. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  697. package/out/zero-cache/src/types/error-with-level.js +29 -25
  698. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  699. package/out/zero-cache/src/types/http.js +27 -14
  700. package/out/zero-cache/src/types/http.js.map +1 -1
  701. package/out/zero-cache/src/types/lexi-version.js +46 -31
  702. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  703. package/out/zero-cache/src/types/lite.js +118 -125
  704. package/out/zero-cache/src/types/lite.js.map +1 -1
  705. package/out/zero-cache/src/types/names.js +6 -3
  706. package/out/zero-cache/src/types/names.js.map +1 -1
  707. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  708. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  709. package/out/zero-cache/src/types/pg-types.js +17 -72
  710. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  711. package/out/zero-cache/src/types/pg.d.ts +1 -1
  712. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  713. package/out/zero-cache/src/types/pg.js +213 -233
  714. package/out/zero-cache/src/types/pg.js.map +1 -1
  715. package/out/zero-cache/src/types/processes.d.ts +2 -2
  716. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  717. package/out/zero-cache/src/types/processes.js +95 -143
  718. package/out/zero-cache/src/types/processes.js.map +1 -1
  719. package/out/zero-cache/src/types/profiler.js +29 -30
  720. package/out/zero-cache/src/types/profiler.js.map +1 -1
  721. package/out/zero-cache/src/types/row-key.js +30 -68
  722. package/out/zero-cache/src/types/row-key.js.map +1 -1
  723. package/out/zero-cache/src/types/schema-versions.js +25 -19
  724. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  725. package/out/zero-cache/src/types/shards.js +50 -36
  726. package/out/zero-cache/src/types/shards.js.map +1 -1
  727. package/out/zero-cache/src/types/sql.js +9 -13
  728. package/out/zero-cache/src/types/sql.js.map +1 -1
  729. package/out/zero-cache/src/types/streams.js +245 -254
  730. package/out/zero-cache/src/types/streams.js.map +1 -1
  731. package/out/zero-cache/src/types/strings.js +14 -11
  732. package/out/zero-cache/src/types/strings.js.map +1 -1
  733. package/out/zero-cache/src/types/subscription.js +200 -259
  734. package/out/zero-cache/src/types/subscription.js.map +1 -1
  735. package/out/zero-cache/src/types/url-params.js +35 -30
  736. package/out/zero-cache/src/types/url-params.js.map +1 -1
  737. package/out/zero-cache/src/types/websocket-handoff.d.ts +3 -2
  738. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  739. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  740. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  741. package/out/zero-cache/src/types/ws.js +56 -59
  742. package/out/zero-cache/src/types/ws.js.map +1 -1
  743. package/out/zero-cache/src/workers/connect-params.js +44 -40
  744. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  745. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  746. package/out/zero-cache/src/workers/connection.js +277 -243
  747. package/out/zero-cache/src/workers/connection.js.map +1 -1
  748. package/out/zero-cache/src/workers/mutator.js +24 -0
  749. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  750. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  751. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  752. package/out/zero-cache/src/workers/replicator.js +103 -106
  753. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  754. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  755. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  756. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  757. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  758. package/out/zero-cache/src/workers/syncer.js +192 -169
  759. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  760. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  761. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  762. package/out/zero-client/src/client/bindings.d.ts +8 -7
  763. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  764. package/out/zero-client/src/client/bindings.js +33 -0
  765. package/out/zero-client/src/client/bindings.js.map +1 -0
  766. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  767. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  768. package/out/zero-client/src/client/connection-manager.d.ts +12 -31
  769. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  770. package/out/zero-client/src/client/connection-manager.js +310 -0
  771. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  772. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  773. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  774. package/out/zero-client/src/client/connection.d.ts +45 -2
  775. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  776. package/out/zero-client/src/client/connection.js +103 -0
  777. package/out/zero-client/src/client/connection.js.map +1 -0
  778. package/out/zero-client/src/client/context.d.ts +3 -6
  779. package/out/zero-client/src/client/context.d.ts.map +1 -1
  780. package/out/zero-client/src/client/context.js +104 -0
  781. package/out/zero-client/src/client/context.js.map +1 -0
  782. package/out/zero-client/src/client/crud.js +225 -0
  783. package/out/zero-client/src/client/crud.js.map +1 -0
  784. package/out/zero-client/src/client/custom.d.ts +9 -12
  785. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  786. package/out/zero-client/src/client/custom.js +123 -0
  787. package/out/zero-client/src/client/custom.js.map +1 -0
  788. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  789. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  790. package/out/zero-client/src/client/enable-analytics.js +18 -0
  791. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  792. package/out/zero-client/src/client/error.d.ts +2 -1
  793. package/out/zero-client/src/client/error.d.ts.map +1 -1
  794. package/out/zero-client/src/client/error.js +148 -0
  795. package/out/zero-client/src/client/error.js.map +1 -0
  796. package/out/zero-client/src/client/http-string.js +11 -0
  797. package/out/zero-client/src/client/http-string.js.map +1 -0
  798. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  799. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  800. package/out/zero-client/src/client/inspector/client.js +28 -0
  801. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  802. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  803. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  804. package/out/zero-client/src/client/inspector/inspector.d.ts +1 -1
  805. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  806. package/out/zero-client/src/client/inspector/inspector.js +47 -0
  807. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  808. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +1 -1
  809. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  810. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  811. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  812. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  813. package/out/zero-client/src/client/inspector/query.js +82 -0
  814. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  815. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  816. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  817. package/out/zero-client/src/client/ivm-branch.js +149 -0
  818. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  819. package/out/zero-client/src/client/keys.js +45 -0
  820. package/out/zero-client/src/client/keys.js.map +1 -0
  821. package/out/zero-client/src/client/log-options.js +60 -0
  822. package/out/zero-client/src/client/log-options.js.map +1 -0
  823. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  824. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  825. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  826. package/out/zero-client/src/client/metrics.js +249 -0
  827. package/out/zero-client/src/client/metrics.js.map +1 -0
  828. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  829. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  830. package/out/zero-client/src/client/mutator-proxy.d.ts +1 -2
  831. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
  832. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  833. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  834. package/out/zero-client/src/client/options.d.ts +36 -19
  835. package/out/zero-client/src/client/options.d.ts.map +1 -1
  836. package/out/zero-client/src/client/options.js +11 -0
  837. package/out/zero-client/src/client/options.js.map +1 -0
  838. package/out/zero-client/src/client/query-manager.d.ts +4 -4
  839. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  840. package/out/zero-client/src/client/query-manager.js +377 -0
  841. package/out/zero-client/src/client/query-manager.js.map +1 -0
  842. package/out/zero-client/src/client/reload-error-handler.d.ts +1 -1
  843. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  844. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  845. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  846. package/out/zero-client/src/client/server-option.js +64 -0
  847. package/out/zero-client/src/client/server-option.js.map +1 -0
  848. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  849. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  850. package/out/zero-client/src/client/version.js +5 -0
  851. package/out/zero-client/src/client/version.js.map +1 -0
  852. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  853. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  854. package/out/zero-client/src/client/zero-rep.d.ts +2 -2
  855. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  856. package/out/zero-client/src/client/zero-rep.js +72 -0
  857. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  858. package/out/zero-client/src/client/zero.d.ts +26 -9
  859. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  860. package/out/zero-client/src/client/zero.js +1825 -0
  861. package/out/zero-client/src/client/zero.js.map +1 -0
  862. package/out/zero-client/src/mod.d.ts +4 -12
  863. package/out/zero-client/src/mod.d.ts.map +1 -1
  864. package/out/zero-client/src/util/nanoid.js +21 -0
  865. package/out/zero-client/src/util/nanoid.js.map +1 -0
  866. package/out/zero-client/src/util/socket.js +7 -0
  867. package/out/zero-client/src/util/socket.js.map +1 -0
  868. package/out/zero-protocol/src/analyze-query-result.js +32 -24
  869. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  870. package/out/zero-protocol/src/application-error.js +35 -37
  871. package/out/zero-protocol/src/application-error.js.map +1 -1
  872. package/out/zero-protocol/src/ast.d.ts +1 -1
  873. package/out/zero-protocol/src/ast.js +296 -277
  874. package/out/zero-protocol/src/ast.js.map +1 -1
  875. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  876. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  877. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  878. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  879. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  880. package/out/zero-protocol/src/client-schema.js +40 -26
  881. package/out/zero-protocol/src/client-schema.js.map +1 -1
  882. package/out/zero-protocol/src/close-connection.js +11 -18
  883. package/out/zero-protocol/src/close-connection.js.map +1 -1
  884. package/out/zero-protocol/src/connect.d.ts +4 -4
  885. package/out/zero-protocol/src/connect.js +46 -51
  886. package/out/zero-protocol/src/connect.js.map +1 -1
  887. package/out/zero-protocol/src/custom-queries.d.ts +4 -4
  888. package/out/zero-protocol/src/custom-queries.js +61 -39
  889. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  890. package/out/zero-protocol/src/data.js +9 -4
  891. package/out/zero-protocol/src/data.js.map +1 -1
  892. package/out/zero-protocol/src/delete-clients.js +16 -9
  893. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  894. package/out/zero-protocol/src/down.d.ts +6 -6
  895. package/out/zero-protocol/src/down.js +20 -4
  896. package/out/zero-protocol/src/down.js.map +1 -1
  897. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  898. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  899. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  900. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  901. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  902. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  903. package/out/zero-protocol/src/error.d.ts +17 -17
  904. package/out/zero-protocol/src/error.js +151 -89
  905. package/out/zero-protocol/src/error.js.map +1 -1
  906. package/out/zero-protocol/src/inspect-down.d.ts +18 -18
  907. package/out/zero-protocol/src/inspect-down.js +72 -54
  908. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  909. package/out/zero-protocol/src/inspect-up.d.ts +6 -6
  910. package/out/zero-protocol/src/inspect-up.js +38 -26
  911. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  912. package/out/zero-protocol/src/mutation-id.js +9 -5
  913. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  914. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  915. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  916. package/out/zero-protocol/src/mutations-patch.js +16 -17
  917. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  918. package/out/zero-protocol/src/ping.js +9 -4
  919. package/out/zero-protocol/src/ping.js.map +1 -1
  920. package/out/zero-protocol/src/poke.js +55 -72
  921. package/out/zero-protocol/src/poke.js.map +1 -1
  922. package/out/zero-protocol/src/pong.js +9 -4
  923. package/out/zero-protocol/src/pong.js.map +1 -1
  924. package/out/zero-protocol/src/primary-key.js +19 -5
  925. package/out/zero-protocol/src/primary-key.js.map +1 -1
  926. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  927. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  928. package/out/zero-protocol/src/protocol-version.js +7 -59
  929. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  930. package/out/zero-protocol/src/pull.js +26 -19
  931. package/out/zero-protocol/src/pull.js.map +1 -1
  932. package/out/zero-protocol/src/push.d.ts +4 -4
  933. package/out/zero-protocol/src/push.js +179 -176
  934. package/out/zero-protocol/src/push.js.map +1 -1
  935. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  936. package/out/zero-protocol/src/queries-patch.js +29 -22
  937. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  938. package/out/zero-protocol/src/query-hash.js +18 -14
  939. package/out/zero-protocol/src/query-hash.js.map +1 -1
  940. package/out/zero-protocol/src/row-patch.js +29 -20
  941. package/out/zero-protocol/src/row-patch.js.map +1 -1
  942. package/out/zero-protocol/src/up.d.ts +5 -5
  943. package/out/zero-protocol/src/up.js +18 -4
  944. package/out/zero-protocol/src/up.js.map +1 -1
  945. package/out/zero-protocol/src/version.js +9 -4
  946. package/out/zero-protocol/src/version.js.map +1 -1
  947. package/out/{inspector-GP3CBZRU.js → zero-react/src/components/inspector.js} +4 -9
  948. package/out/zero-react/src/components/inspector.js.map +1 -0
  949. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  950. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  951. package/out/zero-react/src/components/zero-inspector.js +44 -0
  952. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  953. package/out/zero-react/src/mod.d.ts +1 -3
  954. package/out/zero-react/src/mod.d.ts.map +1 -1
  955. package/out/zero-react/src/use-query.d.ts +4 -4
  956. package/out/zero-react/src/use-query.d.ts.map +1 -1
  957. package/out/{react.js → zero-react/src/use-query.js} +25 -217
  958. package/out/zero-react/src/use-query.js.map +1 -0
  959. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  960. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  961. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  962. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  963. package/out/zero-react/src/use-zero-online.js +14 -0
  964. package/out/zero-react/src/use-zero-online.js.map +1 -0
  965. package/out/zero-react/src/zero-provider.d.ts +7 -6
  966. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  967. package/out/zero-react/src/zero-provider.js +59 -0
  968. package/out/zero-react/src/zero-provider.js.map +1 -0
  969. package/out/zero-schema/src/builder/relationship-builder.js +27 -0
  970. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
  971. package/out/zero-schema/src/builder/schema-builder.js +88 -0
  972. package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
  973. package/out/zero-schema/src/builder/table-builder.js +129 -0
  974. package/out/zero-schema/src/builder/table-builder.js.map +1 -0
  975. package/out/zero-schema/src/compiled-permissions.js +23 -19
  976. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  977. package/out/zero-schema/src/name-mapper.js +43 -38
  978. package/out/zero-schema/src/name-mapper.js.map +1 -1
  979. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  980. package/out/zero-schema/src/permissions.js +199 -0
  981. package/out/zero-schema/src/permissions.js.map +1 -0
  982. package/out/zero-schema/src/schema-config.js +35 -51
  983. package/out/zero-schema/src/schema-config.js.map +1 -1
  984. package/out/zero-server/src/adapters/drizzle.d.ts +1 -1
  985. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  986. package/out/zero-server/src/adapters/drizzle.js +83 -100
  987. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  988. package/out/zero-server/src/adapters/pg.d.ts +3 -2
  989. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  990. package/out/zero-server/src/adapters/pg.js +53 -77
  991. package/out/zero-server/src/adapters/pg.js.map +1 -1
  992. package/out/zero-server/src/adapters/postgresjs.d.ts +1 -1
  993. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  994. package/out/zero-server/src/adapters/postgresjs.js +39 -57
  995. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  996. package/out/zero-server/src/custom.d.ts +6 -6
  997. package/out/zero-server/src/custom.d.ts.map +1 -1
  998. package/out/zero-server/src/custom.js +185 -117
  999. package/out/zero-server/src/custom.js.map +1 -1
  1000. package/out/zero-server/src/logging.js +7 -4
  1001. package/out/zero-server/src/logging.js.map +1 -1
  1002. package/out/zero-server/src/mod.d.ts +2 -0
  1003. package/out/zero-server/src/mod.d.ts.map +1 -1
  1004. package/out/zero-server/src/pg-query-executor.js +17 -14
  1005. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  1006. package/out/zero-server/src/process-mutations.js +293 -274
  1007. package/out/zero-server/src/process-mutations.js.map +1 -1
  1008. package/out/zero-server/src/push-processor.js +55 -31
  1009. package/out/zero-server/src/push-processor.js.map +1 -1
  1010. package/out/zero-server/src/queries/process-queries.d.ts +63 -2
  1011. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1012. package/out/zero-server/src/queries/process-queries.js +101 -95
  1013. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1014. package/out/zero-server/src/query-registry.d.ts +10 -0
  1015. package/out/zero-server/src/query-registry.d.ts.map +1 -0
  1016. package/out/zero-server/src/query-registry.js +35 -0
  1017. package/out/zero-server/src/query-registry.js.map +1 -0
  1018. package/out/zero-server/src/schema.js +136 -124
  1019. package/out/zero-server/src/schema.js.map +1 -1
  1020. package/out/zero-server/src/zql-database.d.ts +4 -4
  1021. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1022. package/out/zero-server/src/zql-database.js +66 -47
  1023. package/out/zero-server/src/zql-database.js.map +1 -1
  1024. package/out/zero-solid/src/mod.d.ts +1 -2
  1025. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1026. package/out/zero-solid/src/solid-view.d.ts +1 -1
  1027. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1028. package/out/{solid.js → zero-solid/src/solid-view.js} +42 -196
  1029. package/out/zero-solid/src/solid-view.js.map +1 -0
  1030. package/out/zero-solid/src/use-query.d.ts +1 -1
  1031. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1032. package/out/zero-solid/src/use-query.js +70 -0
  1033. package/out/zero-solid/src/use-query.js.map +1 -0
  1034. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1035. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1036. package/out/zero-solid/src/use-zero-connection-state.js +15 -0
  1037. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1038. package/out/zero-solid/src/use-zero-online.js +13 -0
  1039. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1040. package/out/zero-solid/src/use-zero.d.ts +1 -1
  1041. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1042. package/out/zero-solid/src/use-zero.js +74 -0
  1043. package/out/zero-solid/src/use-zero.js.map +1 -0
  1044. package/out/zero-types/src/format.js +7 -4
  1045. package/out/zero-types/src/format.js.map +1 -1
  1046. package/out/zero-types/src/name-mapper.js +43 -40
  1047. package/out/zero-types/src/name-mapper.js.map +1 -1
  1048. package/out/zql/src/builder/builder.d.ts +2 -1
  1049. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1050. package/out/zql/src/builder/builder.js +486 -428
  1051. package/out/zql/src/builder/builder.js.map +1 -1
  1052. package/out/zql/src/builder/debug-delegate.js +68 -64
  1053. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1054. package/out/zql/src/builder/filter.js +132 -138
  1055. package/out/zql/src/builder/filter.js.map +1 -1
  1056. package/out/zql/src/builder/like.js +44 -51
  1057. package/out/zql/src/builder/like.js.map +1 -1
  1058. package/out/zql/src/error.d.ts +5 -0
  1059. package/out/zql/src/error.d.ts.map +1 -1
  1060. package/out/zql/src/error.js +18 -6
  1061. package/out/zql/src/error.js.map +1 -1
  1062. package/out/zql/src/ivm/array-view.js +86 -92
  1063. package/out/zql/src/ivm/array-view.js.map +1 -1
  1064. package/out/zql/src/ivm/constraint.js +74 -127
  1065. package/out/zql/src/ivm/constraint.js.map +1 -1
  1066. package/out/zql/src/ivm/data.js +59 -85
  1067. package/out/zql/src/ivm/data.js.map +1 -1
  1068. package/out/zql/src/ivm/exists.js +236 -243
  1069. package/out/zql/src/ivm/exists.js.map +1 -1
  1070. package/out/zql/src/ivm/fan-in.js +50 -51
  1071. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1072. package/out/zql/src/ivm/fan-out.js +48 -50
  1073. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1074. package/out/zql/src/ivm/filter-operators.js +87 -87
  1075. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1076. package/out/zql/src/ivm/filter-push.js +26 -23
  1077. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1078. package/out/zql/src/ivm/filter.js +30 -32
  1079. package/out/zql/src/ivm/filter.js.map +1 -1
  1080. package/out/zql/src/ivm/flipped-join.js +343 -326
  1081. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1082. package/out/zql/src/ivm/join-utils.js +85 -79
  1083. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1084. package/out/zql/src/ivm/join.js +287 -207
  1085. package/out/zql/src/ivm/join.js.map +1 -1
  1086. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1087. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1088. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  1089. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1090. package/out/zql/src/ivm/memory-source.js +471 -489
  1091. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1092. package/out/zql/src/ivm/memory-storage.js +32 -31
  1093. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1094. package/out/zql/src/ivm/operator.js +8 -9
  1095. package/out/zql/src/ivm/operator.js.map +1 -1
  1096. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1097. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1098. package/out/zql/src/ivm/skip.js +92 -106
  1099. package/out/zql/src/ivm/skip.js.map +1 -1
  1100. package/out/zql/src/ivm/source.d.ts +3 -1
  1101. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1102. package/out/zql/src/ivm/stream.js +20 -16
  1103. package/out/zql/src/ivm/stream.js.map +1 -1
  1104. package/out/zql/src/ivm/take.js +502 -456
  1105. package/out/zql/src/ivm/take.js.map +1 -1
  1106. package/out/zql/src/ivm/union-fan-in.js +156 -134
  1107. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1108. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1109. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1110. package/out/zql/src/ivm/view-apply-change.js +246 -216
  1111. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1112. package/out/zql/src/ivm/view.d.ts +2 -2
  1113. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1114. package/out/zql/src/mutate/custom.d.ts +10 -10
  1115. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1116. package/out/zql/src/mutate/custom.js +15 -7
  1117. package/out/zql/src/mutate/custom.js.map +1 -1
  1118. package/out/zql/src/planner/planner-builder.js +238 -172
  1119. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1120. package/out/zql/src/planner/planner-connection.js +202 -251
  1121. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1122. package/out/zql/src/planner/planner-constraint.js +8 -11
  1123. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1124. package/out/zql/src/planner/planner-fan-in.js +154 -164
  1125. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1126. package/out/zql/src/planner/planner-fan-out.js +71 -60
  1127. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1128. package/out/zql/src/planner/planner-graph.d.ts +6 -6
  1129. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1130. package/out/zql/src/planner/planner-graph.js +315 -338
  1131. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1132. package/out/zql/src/planner/planner-join.js +234 -342
  1133. package/out/zql/src/planner/planner-join.js.map +1 -1
  1134. package/out/zql/src/planner/planner-source.js +23 -12
  1135. package/out/zql/src/planner/planner-source.js.map +1 -1
  1136. package/out/zql/src/planner/planner-terminus.js +28 -27
  1137. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1138. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1139. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1140. package/out/zql/src/query/complete-ordering.js +71 -0
  1141. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1142. package/out/zql/src/query/define-query.d.ts +47 -23
  1143. package/out/zql/src/query/define-query.d.ts.map +1 -1
  1144. package/out/zql/src/query/define-query.js +45 -51
  1145. package/out/zql/src/query/define-query.js.map +1 -1
  1146. package/out/zql/src/query/error.js +12 -8
  1147. package/out/zql/src/query/error.js.map +1 -1
  1148. package/out/zql/src/query/escape-like.js +7 -0
  1149. package/out/zql/src/query/escape-like.js.map +1 -0
  1150. package/out/zql/src/query/expression.js +153 -151
  1151. package/out/zql/src/query/expression.js.map +1 -1
  1152. package/out/zql/src/query/measure-push-operator.js +42 -35
  1153. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1154. package/out/zql/src/query/metrics-delegate.js +9 -5
  1155. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1156. package/out/zql/src/query/named.d.ts +9 -5
  1157. package/out/zql/src/query/named.d.ts.map +1 -1
  1158. package/out/zql/src/query/named.js +70 -85
  1159. package/out/zql/src/query/named.js.map +1 -1
  1160. package/out/zql/src/query/query-definitions.d.ts +32 -0
  1161. package/out/zql/src/query/query-definitions.d.ts.map +1 -0
  1162. package/out/zql/src/query/query-delegate-base.d.ts +6 -14
  1163. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  1164. package/out/zql/src/query/query-delegate-base.js +118 -134
  1165. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1166. package/out/zql/src/query/query-delegate.d.ts +6 -8
  1167. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1168. package/out/zql/src/query/query-impl.d.ts +17 -18
  1169. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1170. package/out/zql/src/query/query-impl.js +511 -433
  1171. package/out/zql/src/query/query-impl.js.map +1 -1
  1172. package/out/zql/src/query/query-internals.d.ts +11 -13
  1173. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  1174. package/out/zql/src/query/query-internals.js +13 -19
  1175. package/out/zql/src/query/query-internals.js.map +1 -1
  1176. package/out/zql/src/query/query.d.ts +15 -16
  1177. package/out/zql/src/query/query.d.ts.map +1 -1
  1178. package/out/zql/src/query/static-query.d.ts +3 -3
  1179. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1180. package/out/zql/src/query/static-query.js +41 -18
  1181. package/out/zql/src/query/static-query.js.map +1 -1
  1182. package/out/zql/src/query/ttl.js +69 -62
  1183. package/out/zql/src/query/ttl.js.map +1 -1
  1184. package/out/zql/src/query/validate-input.d.ts +15 -0
  1185. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1186. package/out/zql/src/query/validate-input.js +25 -0
  1187. package/out/zql/src/query/validate-input.js.map +1 -0
  1188. package/out/zqlite/src/database-storage.d.ts +1 -1
  1189. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1190. package/out/zqlite/src/database-storage.js +99 -102
  1191. package/out/zqlite/src/database-storage.js.map +1 -1
  1192. package/out/zqlite/src/db.js +241 -194
  1193. package/out/zqlite/src/db.js.map +1 -1
  1194. package/out/zqlite/src/explain-queries.js +13 -16
  1195. package/out/zqlite/src/explain-queries.js.map +1 -1
  1196. package/out/zqlite/src/internal/sql.js +15 -10
  1197. package/out/zqlite/src/internal/sql.js.map +1 -1
  1198. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1199. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1200. package/out/zqlite/src/query-builder.js +172 -143
  1201. package/out/zqlite/src/query-builder.js.map +1 -1
  1202. package/out/zqlite/src/query-delegate.d.ts +2 -2
  1203. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1204. package/out/zqlite/src/query-delegate.js +53 -43
  1205. package/out/zqlite/src/query-delegate.js.map +1 -1
  1206. package/out/zqlite/src/sqlite-cost-model.js +94 -125
  1207. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1208. package/out/zqlite/src/sqlite-stat-fanout.js +277 -353
  1209. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1210. package/out/zqlite/src/table-source.d.ts +9 -4
  1211. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1212. package/out/zqlite/src/table-source.js +424 -327
  1213. package/out/zqlite/src/table-source.js.map +1 -1
  1214. package/package.json +22 -25
  1215. package/out/chunk-424PT5DM.js +0 -23
  1216. package/out/chunk-424PT5DM.js.map +0 -7
  1217. package/out/chunk-AFADJQ2O.js +0 -1
  1218. package/out/chunk-AFADJQ2O.js.map +0 -7
  1219. package/out/chunk-ASRS2LFV.js.map +0 -7
  1220. package/out/chunk-EZM3XBAB.js.map +0 -7
  1221. package/out/chunk-FODUNUAD.js +0 -18850
  1222. package/out/chunk-FODUNUAD.js.map +0 -7
  1223. package/out/chunk-HCZQVP5R.js.map +0 -7
  1224. package/out/chunk-S633A55A.js +0 -495
  1225. package/out/chunk-S633A55A.js.map +0 -7
  1226. package/out/chunk-TAUDS4QP.js +0 -4129
  1227. package/out/chunk-TAUDS4QP.js.map +0 -7
  1228. package/out/chunk-VZOYWIRW.js.map +0 -7
  1229. package/out/chunk-WPAQ4EPM.js.map +0 -7
  1230. package/out/expo-sqlite.js +0 -11
  1231. package/out/expo-sqlite.js.map +0 -7
  1232. package/out/inspector-GP3CBZRU.js.map +0 -7
  1233. package/out/lazy-inspector-XLKVABX2.js +0 -575
  1234. package/out/lazy-inspector-XLKVABX2.js.map +0 -7
  1235. package/out/op-sqlite.js.map +0 -7
  1236. package/out/react-native.js +0 -25
  1237. package/out/react-native.js.map +0 -7
  1238. package/out/react.js.map +0 -7
  1239. package/out/shared/src/enum.js +0 -2
  1240. package/out/shared/src/enum.js.map +0 -1
  1241. package/out/shared/src/expand.js +0 -2
  1242. package/out/shared/src/expand.js.map +0 -1
  1243. package/out/shared/src/immutable.js +0 -2
  1244. package/out/shared/src/immutable.js.map +0 -1
  1245. package/out/shared/src/types.js +0 -2
  1246. package/out/shared/src/types.js.map +0 -1
  1247. package/out/shared/src/writable.js +0 -2
  1248. package/out/shared/src/writable.js.map +0 -1
  1249. package/out/solid.js.map +0 -7
  1250. package/out/sqlite.js +0 -15
  1251. package/out/sqlite.js.map +0 -7
  1252. package/out/zero/package.json +0 -195
  1253. package/out/zero/src/server/change-streamer.js +0 -2
  1254. package/out/zero/src/server/change-streamer.js.map +0 -1
  1255. package/out/zero/src/server/main.js +0 -2
  1256. package/out/zero/src/server/main.js.map +0 -1
  1257. package/out/zero/src/server/reaper.js +0 -2
  1258. package/out/zero/src/server/reaper.js.map +0 -1
  1259. package/out/zero/src/server/replicator.js +0 -2
  1260. package/out/zero/src/server/replicator.js.map +0 -1
  1261. package/out/zero/src/server/runner/main.js +0 -2
  1262. package/out/zero/src/server/runner/main.js.map +0 -1
  1263. package/out/zero/src/server/syncer.js +0 -2
  1264. package/out/zero/src/server/syncer.js.map +0 -1
  1265. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1266. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1267. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1268. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1269. package/out/zero-cache/src/services/service.js +0 -2
  1270. package/out/zero-cache/src/services/service.js.map +0 -1
  1271. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1272. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1273. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1274. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1275. package/out/zero-cache/src/types/satisfies.js +0 -2
  1276. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1277. package/out/zero-events/src/index.js +0 -2
  1278. package/out/zero-events/src/index.js.map +0 -1
  1279. package/out/zero-events/src/json.js +0 -2
  1280. package/out/zero-events/src/json.js.map +0 -1
  1281. package/out/zero-events/src/status.js +0 -3
  1282. package/out/zero-events/src/status.js.map +0 -1
  1283. package/out/zero-pg/src/mod.js +0 -6
  1284. package/out/zero-pg/src/mod.js.map +0 -1
  1285. package/out/zero-protocol/src/error-kind.js +0 -3
  1286. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1287. package/out/zero-protocol/src/error-origin.js +0 -3
  1288. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1289. package/out/zero-protocol/src/error-reason.js +0 -3
  1290. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1291. package/out/zero-schema/src/table-schema.js +0 -7
  1292. package/out/zero-schema/src/table-schema.js.map +0 -1
  1293. package/out/zero-server/src/mod.js +0 -8
  1294. package/out/zero-server/src/mod.js.map +0 -1
  1295. package/out/zero-types/src/schema-value.js +0 -2
  1296. package/out/zero-types/src/schema-value.js.map +0 -1
  1297. package/out/zero-types/src/schema.js +0 -2
  1298. package/out/zero-types/src/schema.js.map +0 -1
  1299. package/out/zero-types/src/server-schema.js +0 -2
  1300. package/out/zero-types/src/server-schema.js.map +0 -1
  1301. package/out/zero.js +0 -95
  1302. package/out/zero.js.map +0 -7
  1303. package/out/zql/src/ivm/change.js +0 -2
  1304. package/out/zql/src/ivm/change.js.map +0 -1
  1305. package/out/zql/src/ivm/default-format.js +0 -2
  1306. package/out/zql/src/ivm/default-format.js.map +0 -1
  1307. package/out/zql/src/ivm/schema.js +0 -2
  1308. package/out/zql/src/ivm/schema.js.map +0 -1
  1309. package/out/zql/src/ivm/source.js +0 -2
  1310. package/out/zql/src/ivm/source.js.map +0 -1
  1311. package/out/zql/src/ivm/view.js +0 -2
  1312. package/out/zql/src/ivm/view.js.map +0 -1
  1313. package/out/zql/src/planner/planner-debug.js +0 -176
  1314. package/out/zql/src/planner/planner-debug.js.map +0 -1
  1315. package/out/zql/src/planner/planner-node.js +0 -2
  1316. package/out/zql/src/planner/planner-node.js.map +0 -1
  1317. package/out/zql/src/query/chained-query.d.ts +0 -35
  1318. package/out/zql/src/query/chained-query.d.ts.map +0 -1
  1319. package/out/zql/src/query/chained-query.js +0 -66
  1320. package/out/zql/src/query/chained-query.js.map +0 -1
  1321. package/out/zql/src/query/query-delegate.js +0 -2
  1322. package/out/zql/src/query/query-delegate.js.map +0 -1
  1323. package/out/zql/src/query/query.js +0 -8
  1324. package/out/zql/src/query/query.js.map +0 -1
  1325. package/out/zql/src/query/root-named-query.d.ts +0 -33
  1326. package/out/zql/src/query/root-named-query.d.ts.map +0 -1
  1327. package/out/zql/src/query/root-named-query.js +0 -95
  1328. package/out/zql/src/query/root-named-query.js.map +0 -1
  1329. package/out/zql/src/query/typed-view.js +0 -2
  1330. package/out/zql/src/query/typed-view.js.map +0 -1
  1331. package/out/zqlite/src/mod.js +0 -5
  1332. package/out/zqlite/src/mod.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"anonymous-otel-start.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/anonymous-otel-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anonymous-otel-start.js","sources":["../../../../../zero-cache/src/server/anonymous-otel-start.ts"],"sourcesContent":["import type {ObservableResult} from '@opentelemetry/api';\nimport {type Meter} from '@opentelemetry/api';\nimport {OTLPMetricExporter} from '@opentelemetry/exporter-metrics-otlp-http';\nimport {resourceFromAttributes} from '@opentelemetry/resources';\nimport {\n MeterProvider,\n PeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport type {LogContext} from '@rocicorp/logger';\nimport {setupOtelDiagnosticLogger} from './otel-diag-logger.js';\nimport {execSync} from 'child_process';\nimport {randomUUID} from 'crypto';\nimport {existsSync, mkdirSync, readFileSync, writeFileSync} from 'fs';\nimport {homedir, platform} from 'os';\nimport {dirname, join} from 'path';\nimport {h64} from '../../../shared/src/hash.js';\nimport {\n getServerVersion,\n getZeroConfig,\n type ZeroConfig,\n} from '../config/zero-config.js';\n\nclass AnonymousTelemetryManager {\n static #instance: AnonymousTelemetryManager;\n #starting = false;\n #stopped = false;\n #meter!: Meter;\n #meterProvider!: MeterProvider;\n #totalCrudMutations = 0;\n #totalCustomMutations = 0;\n #totalCrudQueries = 0;\n #totalCustomQueries = 0;\n #totalRowsSynced = 0;\n #totalConnectionsSuccess = 0;\n #totalConnectionsAttempted = 0;\n #activeClientGroupsGetter: (() => number) | undefined;\n #activeUsersGetter: (() => number) | undefined;\n #lc: LogContext | undefined;\n #config: ZeroConfig | undefined;\n #processId: string;\n #cachedAttributes: Record<string, string> | undefined;\n #viewSyncerCount = 1;\n\n private constructor() {\n this.#processId = randomUUID();\n }\n\n static getInstance(): AnonymousTelemetryManager {\n if (!AnonymousTelemetryManager.#instance) {\n AnonymousTelemetryManager.#instance = new AnonymousTelemetryManager();\n }\n return AnonymousTelemetryManager.#instance;\n }\n\n start(lc?: LogContext, config?: ZeroConfig) {\n this.#lc = lc;\n\n // Set up OpenTelemetry diagnostic logger if not already configured\n setupOtelDiagnosticLogger(lc);\n\n if (!config) {\n try {\n config = getZeroConfig();\n } catch (e) {\n this.#lc?.info?.('telemetry: disabled - unable to parse config', e);\n return;\n }\n }\n\n if (process.env.DO_NOT_TRACK) {\n this.#lc?.info?.(\n 'telemetry: disabled - DO_NOT_TRACK environment variable is set',\n );\n return;\n }\n\n if (!config.enableTelemetry) {\n this.#lc?.info?.('telemetry: disabled - enableTelemetry is false');\n return;\n }\n\n if (this.#starting) {\n return;\n }\n\n this.#starting = true;\n this.#config = config;\n this.#viewSyncerCount = config.numSyncWorkers ?? 1;\n this.#cachedAttributes = undefined;\n\n this.#lc?.info?.(`telemetry: starting in 1 minute`);\n\n // Delay telemetry startup by 1 minute to avoid potential boot loop issues\n setTimeout(() => this.#run(), 60000);\n }\n\n #run() {\n if (this.#stopped) {\n return;\n }\n\n const resource = resourceFromAttributes(this.#getAttributes());\n\n // Add a random jitter to the export interval to avoid all view-syncers exporting at the same time\n const exportIntervalMillis =\n 60000 * this.#viewSyncerCount + Math.floor(Math.random() * 10000);\n const metricReader = new PeriodicExportingMetricReader({\n exportIntervalMillis,\n exporter: new OTLPMetricExporter({\n url: 'https://metrics.rocicorp.dev',\n timeoutMillis: 30000,\n }),\n });\n\n this.#meterProvider = new MeterProvider({\n resource,\n readers: [metricReader],\n });\n this.#meter = this.#meterProvider.getMeter('zero-anonymous-telemetry');\n\n this.#setupMetrics();\n this.#lc?.info?.(\n `telemetry: started (exports every ${exportIntervalMillis / 1000} seconds for ${this.#viewSyncerCount} view-syncers)`,\n );\n }\n\n #setupMetrics() {\n // Observable gauges\n const uptimeGauge = this.#meter.createObservableGauge('zero.uptime', {\n description: 'System uptime in seconds',\n unit: 'seconds',\n });\n\n // Observable counters\n const uptimeCounter = this.#meter.createObservableCounter(\n 'zero.uptime_counter',\n {\n description: 'System uptime in seconds',\n unit: 'seconds',\n },\n );\n const crudMutationsCounter = this.#meter.createObservableCounter(\n 'zero.crud_mutations_processed',\n {\n description: 'Total number of CRUD mutations processed',\n },\n );\n const customMutationsCounter = this.#meter.createObservableCounter(\n 'zero.custom_mutations_processed',\n {\n description: 'Total number of custom mutations processed',\n },\n );\n const totalMutationsCounter = this.#meter.createObservableCounter(\n 'zero.mutations_processed',\n {\n description: 'Total number of mutations processed',\n },\n );\n const crudQueriesCounter = this.#meter.createObservableCounter(\n 'zero.crud_queries_processed',\n {\n description: 'Total number of CRUD queries processed',\n },\n );\n const customQueriesCounter = this.#meter.createObservableCounter(\n 'zero.custom_queries_processed',\n {\n description: 'Total number of custom queries processed',\n },\n );\n const totalQueriesCounter = this.#meter.createObservableCounter(\n 'zero.queries_processed',\n {\n description: 'Total number of queries processed',\n },\n );\n const rowsSyncedCounter = this.#meter.createObservableCounter(\n 'zero.rows_synced',\n {\n description: 'Total number of rows synced',\n },\n );\n\n // Observable counters for connections\n const connectionsSuccessCounter = this.#meter.createObservableCounter(\n 'zero.connections_success',\n {\n description: 'Total number of successful connections',\n },\n );\n\n const connectionsAttemptedCounter = this.#meter.createObservableCounter(\n 'zero.connections_attempted',\n {\n description: 'Total number of attempted connections',\n },\n );\n\n const activeClientGroupsGauge = this.#meter.createObservableGauge(\n 'zero.gauge_active_client_groups',\n {\n description: 'Number of currently active client groups',\n },\n );\n\n const activeUsersGauge = this.#meter.createObservableGauge(\n 'zero.active_users_last_day',\n {\n description: 'Count of CVR instances active in the last 24h',\n },\n );\n\n // Callbacks\n const attrs = this.#getAttributes();\n uptimeGauge.addCallback((result: ObservableResult) => {\n const uptimeSeconds = Math.floor(process.uptime());\n result.observe(uptimeSeconds, attrs);\n this.#lc?.debug?.(`telemetry: uptime=${uptimeSeconds}s`);\n });\n uptimeCounter.addCallback((result: ObservableResult) => {\n const uptimeSeconds = Math.floor(process.uptime());\n result.observe(uptimeSeconds, attrs);\n this.#lc?.debug?.(`telemetry: uptime_counter=${uptimeSeconds}s`);\n });\n crudMutationsCounter.addCallback((result: ObservableResult) => {\n result.observe(this.#totalCrudMutations, attrs);\n this.#lc?.debug?.(\n `telemetry: crud_mutations=${this.#totalCrudMutations}`,\n );\n });\n customMutationsCounter.addCallback((result: ObservableResult) => {\n result.observe(this.#totalCustomMutations, attrs);\n this.#lc?.debug?.(\n `telemetry: custom_mutations=${this.#totalCustomMutations}`,\n );\n });\n totalMutationsCounter.addCallback((result: ObservableResult) => {\n const totalMutations =\n this.#totalCrudMutations + this.#totalCustomMutations;\n result.observe(totalMutations, attrs);\n this.#lc?.debug?.(`telemetry: total_mutations=${totalMutations}`);\n });\n crudQueriesCounter.addCallback((result: ObservableResult) => {\n result.observe(this.#totalCrudQueries, attrs);\n this.#lc?.debug?.(`telemetry: crud_queries=${this.#totalCrudQueries}`);\n });\n customQueriesCounter.addCallback((result: ObservableResult) => {\n result.observe(this.#totalCustomQueries, attrs);\n this.#lc?.debug?.(\n `telemetry: custom_queries=${this.#totalCustomQueries}`,\n );\n });\n totalQueriesCounter.addCallback((result: ObservableResult) => {\n const totalQueries = this.#totalCrudQueries + this.#totalCustomQueries;\n result.observe(totalQueries, attrs);\n this.#lc?.debug?.(`telemetry: total_queries=${totalQueries}`);\n });\n rowsSyncedCounter.addCallback((result: ObservableResult) => {\n result.observe(this.#totalRowsSynced, attrs);\n this.#lc?.debug?.(`telemetry: rows_synced=${this.#totalRowsSynced}`);\n });\n connectionsSuccessCounter.addCallback((result: ObservableResult) => {\n result.observe(this.#totalConnectionsSuccess, attrs);\n this.#lc?.debug?.(\n `telemetry: connections_success=${this.#totalConnectionsSuccess}`,\n );\n });\n connectionsAttemptedCounter.addCallback((result: ObservableResult) => {\n result.observe(this.#totalConnectionsAttempted, attrs);\n this.#lc?.debug?.(\n `telemetry: connections_attempted=${this.#totalConnectionsAttempted}`,\n );\n });\n activeClientGroupsGauge.addCallback((result: ObservableResult) => {\n const activeClientGroups = this.#activeClientGroupsGetter?.() ?? 0;\n result.observe(activeClientGroups, attrs);\n this.#lc?.debug?.(\n `telemetry: gauge_active_client_groups=${activeClientGroups}`,\n );\n });\n\n activeUsersGauge.addCallback((result: ObservableResult) => {\n if (this.#activeUsersGetter) {\n const activeUsers = this.#activeUsersGetter();\n result.observe(activeUsers, attrs);\n this.#lc?.debug?.(`telemetry: active_users_last_day=${activeUsers}`);\n } else {\n this.#lc?.debug?.(\n 'telemetry: no active users getter available, skipping observation',\n );\n }\n });\n }\n\n recordMutation(type: 'crud' | 'custom', count = 1) {\n if (type === 'crud') {\n this.#totalCrudMutations += count;\n } else {\n this.#totalCustomMutations += count;\n }\n }\n\n recordQuery(type: 'crud' | 'custom', count = 1) {\n if (type === 'crud') {\n this.#totalCrudQueries += count;\n } else {\n this.#totalCustomQueries += count;\n }\n }\n\n recordRowsSynced(count: number) {\n this.#totalRowsSynced += count;\n }\n\n recordConnectionSuccess() {\n this.#totalConnectionsSuccess++;\n }\n\n recordConnectionAttempted() {\n this.#totalConnectionsAttempted++;\n }\n\n setActiveClientGroupsGetter(getter: () => number) {\n this.#activeClientGroupsGetter = getter;\n }\n\n setActiveUsersGetter(getter: () => number) {\n this.#activeUsersGetter = getter;\n }\n\n shutdown() {\n this.#stopped = true;\n if (this.#meterProvider) {\n this.#lc?.info?.('telemetry: shutting down');\n void this.#meterProvider.shutdown();\n }\n }\n\n #getAttributes() {\n if (!this.#cachedAttributes) {\n this.#cachedAttributes = {\n 'zero.app.id': h64(this.#config?.upstream.db || 'unknown').toString(),\n 'zero.machine.os': platform(),\n 'zero.telemetry.type': 'anonymous',\n 'zero.infra.platform': this.#getPlatform(),\n 'zero.version': getServerVersion(this.#config),\n 'zero.task.id': this.#config?.taskID || 'unknown',\n 'zero.project.id': this.#getGitProjectId(),\n 'zero.process.id': this.#processId,\n 'zero.fs.id': this.#getOrSetFsID(),\n };\n this.#lc?.debug?.(\n `telemetry: cached attributes=${JSON.stringify(this.#cachedAttributes)}`,\n );\n }\n return this.#cachedAttributes;\n }\n\n #getPlatform(): string {\n if (process.env.FLY_APP_NAME || process.env.FLY_REGION) return 'fly.io';\n if (\n process.env.ECS_CONTAINER_METADATA_URI_V4 ||\n process.env.ECS_CONTAINER_METADATA_URI ||\n process.env.AWS_EXECUTION_ENV\n )\n return 'aws';\n if (process.env.RAILWAY_ENV || process.env.RAILWAY_STATIC_URL)\n return 'railway';\n if (process.env.RENDER || process.env.RENDER_SERVICE_ID) return 'render';\n if (\n process.env.GCP_PROJECT ||\n process.env.GCLOUD_PROJECT ||\n process.env.GOOGLE_CLOUD_PROJECT\n )\n return 'gcp';\n if (process.env.COOLIFY_URL || process.env.COOLIFY_CONTAINER_NAME)\n return 'coolify';\n if (process.env.CONTAINER_APP_REVISION) return 'azure';\n if (process.env.FLIGHTCONTROL || process.env.FC_URL) return 'flightcontrol';\n return 'unknown';\n }\n\n #findUp(startDir: string, target: string): string | null {\n let dir = startDir;\n while (dir !== dirname(dir)) {\n if (existsSync(join(dir, target))) return dir;\n dir = dirname(dir);\n }\n return null;\n }\n\n #getGitProjectId(): string {\n try {\n const cwd = process.cwd();\n const gitRoot = this.#findUp(cwd, '.git');\n if (!gitRoot) {\n return 'unknown';\n }\n\n const rootCommitHash = execSync('git rev-list --max-parents=0 HEAD -1', {\n cwd: gitRoot,\n encoding: 'utf8',\n timeout: 1000,\n stdio: ['ignore', 'pipe', 'ignore'], // Suppress stderr\n }).trim();\n\n return rootCommitHash.length === 40 ? rootCommitHash : 'unknown';\n } catch (error) {\n this.#lc?.debug?.('telemetry: unable to get Git root commit:', error);\n return 'unknown';\n }\n }\n\n #getOrSetFsID(): string {\n try {\n if (this.#isInContainer()) {\n return 'container';\n }\n const fsidPath = join(homedir(), '.rocicorp', 'fsid');\n const fsidDir = dirname(fsidPath);\n\n mkdirSync(fsidDir, {recursive: true});\n\n // Always try atomic file creation first - this eliminates any race conditions\n const newId = randomUUID();\n try {\n writeFileSync(fsidPath, newId, {encoding: 'utf8', flag: 'wx'});\n return newId;\n } catch (writeError) {\n if ((writeError as NodeJS.ErrnoException).code === 'EEXIST') {\n const existingId = readFileSync(fsidPath, 'utf8').trim();\n return existingId;\n }\n throw writeError;\n }\n } catch (error) {\n this.#lc?.debug?.(\n 'telemetry: unable to get or set filesystem ID:',\n error,\n );\n return 'unknown';\n }\n }\n\n #isInContainer(): boolean {\n try {\n if (process.env.ZERO_IN_CONTAINER) {\n return true;\n }\n\n if (existsSync('/.dockerenv')) {\n return true;\n }\n\n if (existsSync('/usr/local/bin/docker-entrypoint.sh')) {\n return true;\n }\n\n if (process.env.KUBERNETES_SERVICE_HOST) {\n return true;\n }\n\n if (\n process.env.DOCKER_CONTAINER_ID ||\n process.env.HOSTNAME?.match(/^[a-f0-9]{12}$/)\n ) {\n return true;\n }\n\n if (existsSync('/proc/1/cgroup')) {\n const cgroup = readFileSync('/proc/1/cgroup', 'utf8');\n if (\n cgroup.includes('docker') ||\n cgroup.includes('kubepods') ||\n cgroup.includes('containerd')\n ) {\n return true;\n }\n }\n\n return false;\n } catch (error) {\n this.#lc?.debug?.(\n 'telemetry: unable to detect container environment:',\n error,\n );\n return false;\n }\n }\n}\n\nconst manager = () => AnonymousTelemetryManager.getInstance();\n\nexport const startAnonymousTelemetry = (lc?: LogContext, config?: ZeroConfig) =>\n manager().start(lc, config);\nexport const recordMutation = (type: 'crud' | 'custom', count = 1) =>\n manager().recordMutation(type, count);\nexport const recordQuery = (type: 'crud' | 'custom', count = 1) =>\n manager().recordQuery(type, count);\nexport const recordRowsSynced = (count: number) =>\n manager().recordRowsSynced(count);\nexport const recordConnectionSuccess = () =>\n manager().recordConnectionSuccess();\nexport const recordConnectionAttempted = () =>\n manager().recordConnectionAttempted();\nexport const setActiveClientGroupsGetter = (getter: () => number) =>\n manager().setActiveClientGroupsGetter(getter);\nexport const setActiveUsersGetter = (getter: () => number) =>\n manager().setActiveUsersGetter(getter);\nexport const shutdownAnonymousTelemetry = () => manager().shutdown();\n"],"names":[],"mappings":"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"}
@@ -14,70 +14,114 @@ import { ReplicaMonitor } from "../services/change-streamer/replica-monitor.js";
14
14
  import { AutoResetSignal } from "../services/change-streamer/schema/tables.js";
15
15
  import { exitAfter, runUntilKilled } from "../services/life-cycle.js";
16
16
  import { pgClient } from "../types/pg.js";
17
- import { parentWorker, singleProcessMode, } from "../types/processes.js";
17
+ import { singleProcessMode, parentWorker } from "../types/processes.js";
18
18
  import { getShardConfig } from "../types/shards.js";
19
19
  import { createLogContext } from "./logging.js";
20
20
  import { startOtelAuto } from "./otel-start.js";
21
- export default async function runWorker(parent, env, ...args) {
22
- assert(args.length > 0, `parent startMs not specified`);
23
- const parentStartMs = parseInt(args[0]);
24
- const config = getNormalizedZeroConfig({ env, argv: args.slice(1) });
25
- const { taskID, changeStreamer: { port, address, protocol }, upstream, change, replica, initialSync, litestream, } = config;
26
- startOtelAuto(createLogContext(config, { worker: 'change-streamer' }, false));
27
- const lc = createLogContext(config, { worker: 'change-streamer' }, true);
28
- initEventSink(lc, config);
29
- // Kick off DB connection warmup in the background.
30
- const changeDB = pgClient(lc, change.db, {
31
- max: change.maxConns,
32
- connection: { ['application_name']: 'zero-change-streamer' },
33
- });
34
- void warmupConnections(lc, changeDB, 'change');
35
- const { autoReset } = config;
36
- const shard = getShardConfig(config);
37
- let changeStreamer;
38
- for (const first of [true, false]) {
39
- try {
40
- // Note: This performs initial sync of the replica if necessary.
41
- const { changeSource, subscriptionState } = upstream.type === 'pg'
42
- ? await initializePostgresChangeSource(lc, upstream.db, shard, replica.file, initialSync)
43
- : await initializeCustomChangeSource(lc, upstream.db, shard, replica.file);
44
- changeStreamer = await initializeStreamer(lc, shard, taskID, address, protocol, changeDB, changeSource, subscriptionState, autoReset ?? false);
45
- break;
46
- }
47
- catch (e) {
48
- if (first && e instanceof AutoResetSignal) {
49
- lc.warn?.(`resetting replica ${replica.file}`, e);
50
- // TODO: Make deleteLiteDB work with litestream. It will probably have to be
51
- // a semantic wipe instead of a file delete.
52
- deleteLiteDB(replica.file);
53
- continue; // execute again with a fresh initial-sync
54
- }
55
- if (e instanceof DatabaseInitError) {
56
- throw new Error(`Cannot open ZERO_REPLICA_FILE at "${replica.file}". Please check that the path is valid.`, { cause: e });
57
- }
58
- throw e;
59
- }
21
+ async function runWorker(parent, env, ...args) {
22
+ assert(args.length > 0, `parent startMs not specified`);
23
+ const parentStartMs = parseInt(args[0]);
24
+ const config = getNormalizedZeroConfig({ env, argv: args.slice(1) });
25
+ const {
26
+ taskID,
27
+ changeStreamer: { port, address, protocol },
28
+ upstream,
29
+ change,
30
+ replica,
31
+ initialSync,
32
+ litestream
33
+ } = config;
34
+ startOtelAuto(createLogContext(config, { worker: "change-streamer" }, false));
35
+ const lc = createLogContext(config, { worker: "change-streamer" }, true);
36
+ initEventSink(lc, config);
37
+ const changeDB = pgClient(lc, change.db, {
38
+ max: change.maxConns,
39
+ connection: { ["application_name"]: "zero-change-streamer" }
40
+ });
41
+ void warmupConnections(lc, changeDB, "change");
42
+ const { autoReset } = config;
43
+ const shard = getShardConfig(config);
44
+ let changeStreamer;
45
+ for (const first of [true, false]) {
46
+ try {
47
+ const { changeSource, subscriptionState } = upstream.type === "pg" ? await initializePostgresChangeSource(
48
+ lc,
49
+ upstream.db,
50
+ shard,
51
+ replica.file,
52
+ initialSync
53
+ ) : await initializeCustomChangeSource(
54
+ lc,
55
+ upstream.db,
56
+ shard,
57
+ replica.file
58
+ );
59
+ changeStreamer = await initializeStreamer(
60
+ lc,
61
+ shard,
62
+ taskID,
63
+ address,
64
+ protocol,
65
+ changeDB,
66
+ changeSource,
67
+ subscriptionState,
68
+ autoReset ?? false
69
+ );
70
+ break;
71
+ } catch (e) {
72
+ if (first && e instanceof AutoResetSignal) {
73
+ lc.warn?.(`resetting replica ${replica.file}`, e);
74
+ deleteLiteDB(replica.file);
75
+ continue;
76
+ }
77
+ if (e instanceof DatabaseInitError) {
78
+ throw new Error(
79
+ `Cannot open ZERO_REPLICA_FILE at "${replica.file}". Please check that the path is valid.`,
80
+ { cause: e }
81
+ );
82
+ }
83
+ throw e;
60
84
  }
61
- // impossible: upstream must have advanced in order for replication to be stuck.
62
- assert(changeStreamer, `resetting replica did not advance replicaVersion`);
63
- const { backupURL, port: metricsPort } = litestream;
64
- const monitor = backupURL
65
- ? new BackupMonitor(lc, backupURL, `http://localhost:${metricsPort}/metrics`, changeStreamer,
66
- // The time between when the zero-cache was started to when the
67
- // change-streamer is ready to start serves as the initial delay for
68
- // watermark cleanup (as it either includes a similar replica
69
- // restoration/preparation step, or an initial-sync, which
70
- // generally takes longer).
71
- //
72
- // Consider: Also account for permanent volumes?
73
- Date.now() - parentStartMs)
74
- : new ReplicaMonitor(lc, replica.file, changeStreamer);
75
- const changeStreamerWebServer = new ChangeStreamerHttpServer(lc, config, { port }, parent, changeStreamer, monitor instanceof BackupMonitor ? monitor : null);
76
- parent.send(['ready', { ready: true }]);
77
- return runUntilKilled(lc, parent, changeStreamer, changeStreamerWebServer, monitor);
85
+ }
86
+ assert(changeStreamer, `resetting replica did not advance replicaVersion`);
87
+ const { backupURL, port: metricsPort } = litestream;
88
+ const monitor = backupURL ? new BackupMonitor(
89
+ lc,
90
+ backupURL,
91
+ `http://localhost:${metricsPort}/metrics`,
92
+ changeStreamer,
93
+ // The time between when the zero-cache was started to when the
94
+ // change-streamer is ready to start serves as the initial delay for
95
+ // watermark cleanup (as it either includes a similar replica
96
+ // restoration/preparation step, or an initial-sync, which
97
+ // generally takes longer).
98
+ //
99
+ // Consider: Also account for permanent volumes?
100
+ Date.now() - parentStartMs
101
+ ) : new ReplicaMonitor(lc, replica.file, changeStreamer);
102
+ const changeStreamerWebServer = new ChangeStreamerHttpServer(
103
+ lc,
104
+ config,
105
+ { port },
106
+ parent,
107
+ changeStreamer,
108
+ monitor instanceof BackupMonitor ? monitor : null
109
+ );
110
+ parent.send(["ready", { ready: true }]);
111
+ return runUntilKilled(
112
+ lc,
113
+ parent,
114
+ changeStreamer,
115
+ changeStreamerWebServer,
116
+ monitor
117
+ );
78
118
  }
79
- // fork()
80
119
  if (!singleProcessMode()) {
81
- void exitAfter(() => runWorker(must(parentWorker), process.env, ...process.argv.slice(2)));
120
+ void exitAfter(
121
+ () => runWorker(must(parentWorker), process.env, ...process.argv.slice(2))
122
+ );
82
123
  }
83
- //# sourceMappingURL=change-streamer.js.map
124
+ export {
125
+ runWorker as default
126
+ };
127
+ //# sourceMappingURL=change-streamer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"change-streamer.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-streamer.js","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport {DatabaseInitError} from '../../../zqlite/src/db.ts';\nimport {getNormalizedZeroConfig} from '../config/zero-config.ts';\nimport {deleteLiteDB} from '../db/delete-lite-db.ts';\nimport {warmupConnections} from '../db/warmup.ts';\nimport {initEventSink} from '../observability/events.ts';\nimport {initializeCustomChangeSource} from '../services/change-source/custom/change-source.ts';\nimport {initializePostgresChangeSource} from '../services/change-source/pg/change-source.ts';\nimport {BackupMonitor} from '../services/change-streamer/backup-monitor.ts';\nimport {ChangeStreamerHttpServer} from '../services/change-streamer/change-streamer-http.ts';\nimport {initializeStreamer} from '../services/change-streamer/change-streamer-service.ts';\nimport type {ChangeStreamerService} from '../services/change-streamer/change-streamer.ts';\nimport {ReplicaMonitor} from '../services/change-streamer/replica-monitor.ts';\nimport {AutoResetSignal} from '../services/change-streamer/schema/tables.ts';\nimport {exitAfter, runUntilKilled} from '../services/life-cycle.ts';\nimport {pgClient} from '../types/pg.ts';\nimport {\n parentWorker,\n singleProcessMode,\n type Worker,\n} from '../types/processes.ts';\nimport {getShardConfig} from '../types/shards.ts';\nimport {createLogContext} from './logging.ts';\nimport {startOtelAuto} from './otel-start.ts';\n\nexport default async function runWorker(\n parent: Worker,\n env: NodeJS.ProcessEnv,\n ...args: string[]\n): Promise<void> {\n assert(args.length > 0, `parent startMs not specified`);\n const parentStartMs = parseInt(args[0]);\n\n const config = getNormalizedZeroConfig({env, argv: args.slice(1)});\n const {\n taskID,\n changeStreamer: {port, address, protocol},\n upstream,\n change,\n replica,\n initialSync,\n litestream,\n } = config;\n\n startOtelAuto(createLogContext(config, {worker: 'change-streamer'}, false));\n const lc = createLogContext(config, {worker: 'change-streamer'}, true);\n initEventSink(lc, config);\n\n // Kick off DB connection warmup in the background.\n const changeDB = pgClient(lc, change.db, {\n max: change.maxConns,\n connection: {['application_name']: 'zero-change-streamer'},\n });\n void warmupConnections(lc, changeDB, 'change');\n\n const {autoReset} = config;\n const shard = getShardConfig(config);\n\n let changeStreamer: ChangeStreamerService | undefined;\n\n for (const first of [true, false]) {\n try {\n // Note: This performs initial sync of the replica if necessary.\n const {changeSource, subscriptionState} =\n upstream.type === 'pg'\n ? await initializePostgresChangeSource(\n lc,\n upstream.db,\n shard,\n replica.file,\n initialSync,\n )\n : await initializeCustomChangeSource(\n lc,\n upstream.db,\n shard,\n replica.file,\n );\n\n changeStreamer = await initializeStreamer(\n lc,\n shard,\n taskID,\n address,\n protocol,\n changeDB,\n changeSource,\n subscriptionState,\n autoReset ?? false,\n );\n break;\n } catch (e) {\n if (first && e instanceof AutoResetSignal) {\n lc.warn?.(`resetting replica ${replica.file}`, e);\n // TODO: Make deleteLiteDB work with litestream. It will probably have to be\n // a semantic wipe instead of a file delete.\n deleteLiteDB(replica.file);\n continue; // execute again with a fresh initial-sync\n }\n if (e instanceof DatabaseInitError) {\n throw new Error(\n `Cannot open ZERO_REPLICA_FILE at \"${replica.file}\". Please check that the path is valid.`,\n {cause: e},\n );\n }\n throw e;\n }\n }\n // impossible: upstream must have advanced in order for replication to be stuck.\n assert(changeStreamer, `resetting replica did not advance replicaVersion`);\n\n const {backupURL, port: metricsPort} = litestream;\n const monitor = backupURL\n ? new BackupMonitor(\n lc,\n backupURL,\n `http://localhost:${metricsPort}/metrics`,\n changeStreamer,\n // The time between when the zero-cache was started to when the\n // change-streamer is ready to start serves as the initial delay for\n // watermark cleanup (as it either includes a similar replica\n // restoration/preparation step, or an initial-sync, which\n // generally takes longer).\n //\n // Consider: Also account for permanent volumes?\n Date.now() - parentStartMs,\n )\n : new ReplicaMonitor(lc, replica.file, changeStreamer);\n\n const changeStreamerWebServer = new ChangeStreamerHttpServer(\n lc,\n config,\n {port},\n parent,\n changeStreamer,\n monitor instanceof BackupMonitor ? monitor : null,\n );\n\n parent.send(['ready', {ready: true}]);\n\n return runUntilKilled(\n lc,\n parent,\n changeStreamer,\n changeStreamerWebServer,\n monitor,\n );\n}\n\n// fork()\nif (!singleProcessMode()) {\n void exitAfter(() =>\n runWorker(must(parentWorker), process.env, ...process.argv.slice(2)),\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA0BA,eAA8B,UAC5B,QACA,QACG,MACY;AACf,SAAO,KAAK,SAAS,GAAG,8BAA8B;AACtD,QAAM,gBAAgB,SAAS,KAAK,CAAC,CAAC;AAEtC,QAAM,SAAS,wBAAwB,EAAC,KAAK,MAAM,KAAK,MAAM,CAAC,GAAE;AACjE,QAAM;AAAA,IACJ;AAAA,IACA,gBAAgB,EAAC,MAAM,SAAS,SAAA;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,gBAAc,iBAAiB,QAAQ,EAAC,QAAQ,kBAAA,GAAoB,KAAK,CAAC;AAC1E,QAAM,KAAK,iBAAiB,QAAQ,EAAC,QAAQ,kBAAA,GAAoB,IAAI;AACrE,gBAAc,IAAI,MAAM;AAGxB,QAAM,WAAW,SAAS,IAAI,OAAO,IAAI;AAAA,IACvC,KAAK,OAAO;AAAA,IACZ,YAAY,EAAC,CAAC,kBAAkB,GAAG,uBAAA;AAAA,EAAsB,CAC1D;AACD,OAAK,kBAAkB,IAAI,UAAU,QAAQ;AAE7C,QAAM,EAAC,cAAa;AACpB,QAAM,QAAQ,eAAe,MAAM;AAEnC,MAAI;AAEJ,aAAW,SAAS,CAAC,MAAM,KAAK,GAAG;AACjC,QAAI;AAEF,YAAM,EAAC,cAAc,kBAAA,IACnB,SAAS,SAAS,OACd,MAAM;AAAA,QACJ;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,MAAA,IAEF,MAAM;AAAA,QACJ;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA,QAAQ;AAAA,MAAA;AAGhB,uBAAiB,MAAM;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa;AAAA,MAAA;AAEf;AAAA,IACF,SAAS,GAAG;AACV,UAAI,SAAS,aAAa,iBAAiB;AACzC,WAAG,OAAO,qBAAqB,QAAQ,IAAI,IAAI,CAAC;AAGhD,qBAAa,QAAQ,IAAI;AACzB;AAAA,MACF;AACA,UAAI,aAAa,mBAAmB;AAClC,cAAM,IAAI;AAAA,UACR,qCAAqC,QAAQ,IAAI;AAAA,UACjD,EAAC,OAAO,EAAA;AAAA,QAAC;AAAA,MAEb;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO,gBAAgB,kDAAkD;AAEzE,QAAM,EAAC,WAAW,MAAM,YAAA,IAAe;AACvC,QAAM,UAAU,YACZ,IAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA,oBAAoB,WAAW;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,KAAK,QAAQ;AAAA,EAAA,IAEf,IAAI,eAAe,IAAI,QAAQ,MAAM,cAAc;AAEvD,QAAM,0BAA0B,IAAI;AAAA,IAClC;AAAA,IACA;AAAA,IACA,EAAC,KAAA;AAAA,IACD;AAAA,IACA;AAAA,IACA,mBAAmB,gBAAgB,UAAU;AAAA,EAAA;AAG/C,SAAO,KAAK,CAAC,SAAS,EAAC,OAAO,KAAA,CAAK,CAAC;AAEpC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAGA,IAAI,CAAC,qBAAqB;AACxB,OAAK;AAAA,IAAU,MACb,UAAU,KAAK,YAAY,GAAG,QAAQ,KAAK,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,EAAA;AAEvE;"}
@@ -3,122 +3,125 @@ import { mapValues } from "../../../shared/src/objects.js";
3
3
  import { TDigest } from "../../../shared/src/tdigest.js";
4
4
  import { ProtocolError } from "../../../zero-protocol/src/error.js";
5
5
  import { hashOfNameAndArgs } from "../../../zero-protocol/src/query-hash.js";
6
- import { isServerMetric, } from "../../../zql/src/query/metrics-delegate.js";
6
+ import { isServerMetric } from "../../../zql/src/query/metrics-delegate.js";
7
7
  import { isDevelopmentMode } from "../config/normalize.js";
8
- /**
9
- * Set of authenticated client group IDs. We keep this outside of the class to
10
- * share this state across all instances of the InspectorDelegate.
11
- */
12
- const authenticatedClientGroupIDs = new Set();
13
- export class InspectorDelegate {
14
- #globalMetrics = newMetrics();
15
- #perQueryServerMetrics = new Map();
16
- #hashToIDs = new Map();
17
- #queryIDToTransformationHash = new Map();
18
- #transformationASTs = new Map();
19
- #customQueryTransformer;
20
- constructor(customQueryTransformer) {
21
- this.#customQueryTransformer = customQueryTransformer;
8
+ const authenticatedClientGroupIDs = /* @__PURE__ */ new Set();
9
+ class InspectorDelegate {
10
+ #globalMetrics = newMetrics();
11
+ #perQueryServerMetrics = /* @__PURE__ */ new Map();
12
+ #hashToIDs = /* @__PURE__ */ new Map();
13
+ #queryIDToTransformationHash = /* @__PURE__ */ new Map();
14
+ #transformationASTs = /* @__PURE__ */ new Map();
15
+ #customQueryTransformer;
16
+ constructor(customQueryTransformer) {
17
+ this.#customQueryTransformer = customQueryTransformer;
18
+ }
19
+ addMetric(metric, value, ...args) {
20
+ assert(isServerMetric(metric), `Invalid server metric: ${metric}`);
21
+ const transformationHash = args[0];
22
+ for (const queryID of this.#hashToIDs.get(transformationHash) ?? []) {
23
+ let serverMetrics = this.#perQueryServerMetrics.get(queryID);
24
+ if (!serverMetrics) {
25
+ serverMetrics = newMetrics();
26
+ this.#perQueryServerMetrics.set(queryID, serverMetrics);
27
+ }
28
+ serverMetrics[metric].add(value);
22
29
  }
23
- addMetric(metric, value, ...args) {
24
- assert(isServerMetric(metric), `Invalid server metric: ${metric}`);
25
- const transformationHash = args[0];
26
- for (const queryID of this.#hashToIDs.get(transformationHash) ?? []) {
27
- let serverMetrics = this.#perQueryServerMetrics.get(queryID);
28
- if (!serverMetrics) {
29
- serverMetrics = newMetrics();
30
- this.#perQueryServerMetrics.set(queryID, serverMetrics);
31
- }
32
- serverMetrics[metric].add(value);
33
- }
34
- this.#globalMetrics[metric].add(value);
30
+ this.#globalMetrics[metric].add(value);
31
+ }
32
+ getMetricsJSONForQuery(queryID) {
33
+ const serverMetrics = this.#perQueryServerMetrics.get(queryID);
34
+ return serverMetrics ? mapValues(serverMetrics, (v) => v.toJSON()) : null;
35
+ }
36
+ getMetricsJSON() {
37
+ return mapValues(this.#globalMetrics, (v) => v.toJSON());
38
+ }
39
+ getASTForQuery(queryID) {
40
+ const transformationHash = this.#queryIDToTransformationHash.get(queryID);
41
+ return transformationHash ? this.#transformationASTs.get(transformationHash) : void 0;
42
+ }
43
+ removeQuery(queryID) {
44
+ this.#perQueryServerMetrics.delete(queryID);
45
+ this.#queryIDToTransformationHash.delete(queryID);
46
+ for (const [transformationHash, idSet] of this.#hashToIDs.entries()) {
47
+ idSet.delete(queryID);
48
+ if (idSet.size === 0) {
49
+ this.#hashToIDs.delete(transformationHash);
50
+ this.#transformationASTs.delete(transformationHash);
51
+ }
35
52
  }
36
- getMetricsJSONForQuery(queryID) {
37
- const serverMetrics = this.#perQueryServerMetrics.get(queryID);
38
- return serverMetrics ? mapValues(serverMetrics, v => v.toJSON()) : null;
53
+ }
54
+ addQuery(transformationHash, queryID, ast) {
55
+ const existing = this.#hashToIDs.get(transformationHash);
56
+ if (existing === void 0) {
57
+ this.#hashToIDs.set(transformationHash, /* @__PURE__ */ new Set([queryID]));
58
+ } else {
59
+ existing.add(queryID);
39
60
  }
40
- getMetricsJSON() {
41
- return mapValues(this.#globalMetrics, v => v.toJSON());
61
+ this.#queryIDToTransformationHash.set(queryID, transformationHash);
62
+ this.#transformationASTs.set(transformationHash, ast);
63
+ }
64
+ /**
65
+ * Check if the client is authenticated. We only require authentication once
66
+ * per "worker".
67
+ */
68
+ isAuthenticated(clientGroupID) {
69
+ return isDevelopmentMode() || authenticatedClientGroupIDs.has(clientGroupID);
70
+ }
71
+ setAuthenticated(clientGroupID) {
72
+ authenticatedClientGroupIDs.add(clientGroupID);
73
+ }
74
+ clearAuthenticated(clientGroupID) {
75
+ authenticatedClientGroupIDs.delete(clientGroupID);
76
+ }
77
+ /**
78
+ * Transforms a single custom query by name and args using the configured
79
+ * CustomQueryTransformer. This is primarily used by the inspector to transform
80
+ * queries for analysis.
81
+ */
82
+ async transformCustomQuery(name, args, headerOptions, userQueryURL) {
83
+ assert(
84
+ this.#customQueryTransformer,
85
+ "Custom query transformation requested but no CustomQueryTransformer is configured"
86
+ );
87
+ const queryID = hashOfNameAndArgs(name, args);
88
+ const queries = [
89
+ {
90
+ id: queryID,
91
+ type: "custom",
92
+ name,
93
+ args,
94
+ clientState: {}
95
+ }
96
+ ];
97
+ const results = await this.#customQueryTransformer.transform(
98
+ headerOptions,
99
+ queries,
100
+ userQueryURL
101
+ );
102
+ if ("kind" in results) {
103
+ throw new ProtocolError(results);
42
104
  }
43
- getASTForQuery(queryID) {
44
- const transformationHash = this.#queryIDToTransformationHash.get(queryID);
45
- return transformationHash
46
- ? this.#transformationASTs.get(transformationHash)
47
- : undefined;
105
+ const result = results[0];
106
+ if (!result) {
107
+ throw new Error("No transformation result returned");
48
108
  }
49
- removeQuery(queryID) {
50
- this.#perQueryServerMetrics.delete(queryID);
51
- this.#queryIDToTransformationHash.delete(queryID);
52
- // Remove queryID from all hash-to-ID mappings
53
- for (const [transformationHash, idSet] of this.#hashToIDs.entries()) {
54
- idSet.delete(queryID);
55
- if (idSet.size === 0) {
56
- this.#hashToIDs.delete(transformationHash);
57
- this.#transformationASTs.delete(transformationHash);
58
- }
59
- }
60
- }
61
- addQuery(transformationHash, queryID, ast) {
62
- const existing = this.#hashToIDs.get(transformationHash);
63
- if (existing === undefined) {
64
- this.#hashToIDs.set(transformationHash, new Set([queryID]));
65
- }
66
- else {
67
- existing.add(queryID);
68
- }
69
- this.#queryIDToTransformationHash.set(queryID, transformationHash);
70
- this.#transformationASTs.set(transformationHash, ast);
71
- }
72
- /**
73
- * Check if the client is authenticated. We only require authentication once
74
- * per "worker".
75
- */
76
- isAuthenticated(clientGroupID) {
77
- return (isDevelopmentMode() || authenticatedClientGroupIDs.has(clientGroupID));
78
- }
79
- setAuthenticated(clientGroupID) {
80
- authenticatedClientGroupIDs.add(clientGroupID);
81
- }
82
- clearAuthenticated(clientGroupID) {
83
- authenticatedClientGroupIDs.delete(clientGroupID);
84
- }
85
- /**
86
- * Transforms a single custom query by name and args using the configured
87
- * CustomQueryTransformer. This is primarily used by the inspector to transform
88
- * queries for analysis.
89
- */
90
- async transformCustomQuery(name, args, headerOptions, userQueryURL) {
91
- assert(this.#customQueryTransformer, 'Custom query transformation requested but no CustomQueryTransformer is configured');
92
- // Create a fake CustomQueryRecord for the single query
93
- const queryID = hashOfNameAndArgs(name, args);
94
- const queries = [
95
- {
96
- id: queryID,
97
- type: 'custom',
98
- name,
99
- args,
100
- clientState: {},
101
- },
102
- ];
103
- const results = await this.#customQueryTransformer.transform(headerOptions, queries, userQueryURL);
104
- if ('kind' in results) {
105
- throw new ProtocolError(results);
106
- }
107
- const result = results[0];
108
- if (!result) {
109
- throw new Error('No transformation result returned');
110
- }
111
- if ('error' in result) {
112
- const message = result.message ?? 'Unknown application error from custom query';
113
- throw new Error(`Error transforming custom query ${name} (${result.error}): ${message} ${JSON.stringify(result.details)}`);
114
- }
115
- return result.transformedAst;
109
+ if ("error" in result) {
110
+ const message = result.message ?? "Unknown application error from custom query";
111
+ throw new Error(
112
+ `Error transforming custom query ${name} (${result.error}): ${message} ${JSON.stringify(result.details)}`
113
+ );
116
114
  }
115
+ return result.transformedAst;
116
+ }
117
117
  }
118
118
  function newMetrics() {
119
- return {
120
- 'query-materialization-server': new TDigest(),
121
- 'query-update-server': new TDigest(),
122
- };
119
+ return {
120
+ "query-materialization-server": new TDigest(),
121
+ "query-update-server": new TDigest()
122
+ };
123
123
  }
124
- //# sourceMappingURL=inspector-delegate.js.map
124
+ export {
125
+ InspectorDelegate
126
+ };
127
+ //# sourceMappingURL=inspector-delegate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspector-delegate.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/inspector-delegate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspector-delegate.js","sources":["../../../../../zero-cache/src/server/inspector-delegate.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {mapValues} from '../../../shared/src/objects.ts';\nimport {TDigest} from '../../../shared/src/tdigest.ts';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport {ProtocolError} from '../../../zero-protocol/src/error.ts';\nimport type {ServerMetrics as ServerMetricsJSON} from '../../../zero-protocol/src/inspect-down.ts';\nimport {hashOfNameAndArgs} from '../../../zero-protocol/src/query-hash.ts';\nimport {\n isServerMetric,\n type MetricMap,\n type MetricsDelegate,\n} from '../../../zql/src/query/metrics-delegate.ts';\nimport {isDevelopmentMode} from '../config/normalize.ts';\nimport type {CustomQueryTransformer} from '../custom-queries/transform-query.ts';\nimport type {HeaderOptions} from '../custom/fetch.ts';\nimport type {CustomQueryRecord} from '../services/view-syncer/schema/types.ts';\n\n/**\n * Server-side metrics collected for queries during materialization and update.\n * These metrics are reported via the inspector and complement client-side metrics.\n */\nexport type ServerMetrics = {\n 'query-materialization-server': TDigest;\n 'query-update-server': TDigest;\n};\n\ntype ClientGroupID = string;\n\n/**\n * Set of authenticated client group IDs. We keep this outside of the class to\n * share this state across all instances of the InspectorDelegate.\n */\nconst authenticatedClientGroupIDs = new Set<ClientGroupID>();\n\nexport class InspectorDelegate implements MetricsDelegate {\n readonly #globalMetrics: ServerMetrics = newMetrics();\n readonly #perQueryServerMetrics = new Map<string, ServerMetrics>();\n readonly #hashToIDs = new Map<string, Set<string>>();\n readonly #queryIDToTransformationHash = new Map<string, string>();\n readonly #transformationASTs: Map<string, AST> = new Map();\n readonly #customQueryTransformer: CustomQueryTransformer | undefined;\n\n constructor(customQueryTransformer: CustomQueryTransformer | undefined) {\n this.#customQueryTransformer = customQueryTransformer;\n }\n\n addMetric<K extends keyof MetricMap>(\n metric: K,\n value: number,\n ...args: MetricMap[K]\n ): void {\n assert(isServerMetric(metric), `Invalid server metric: ${metric}`);\n const transformationHash = args[0];\n\n for (const queryID of this.#hashToIDs.get(transformationHash) ?? []) {\n let serverMetrics = this.#perQueryServerMetrics.get(queryID);\n if (!serverMetrics) {\n serverMetrics = newMetrics();\n this.#perQueryServerMetrics.set(queryID, serverMetrics);\n }\n serverMetrics[metric].add(value);\n }\n this.#globalMetrics[metric].add(value);\n }\n\n getMetricsJSONForQuery(queryID: string): ServerMetricsJSON | null {\n const serverMetrics = this.#perQueryServerMetrics.get(queryID);\n return serverMetrics ? mapValues(serverMetrics, v => v.toJSON()) : null;\n }\n\n getMetricsJSON() {\n return mapValues(this.#globalMetrics, v => v.toJSON());\n }\n\n getASTForQuery(queryID: string): AST | undefined {\n const transformationHash = this.#queryIDToTransformationHash.get(queryID);\n return transformationHash\n ? this.#transformationASTs.get(transformationHash)\n : undefined;\n }\n\n removeQuery(queryID: string): void {\n this.#perQueryServerMetrics.delete(queryID);\n this.#queryIDToTransformationHash.delete(queryID);\n // Remove queryID from all hash-to-ID mappings\n for (const [transformationHash, idSet] of this.#hashToIDs.entries()) {\n idSet.delete(queryID);\n if (idSet.size === 0) {\n this.#hashToIDs.delete(transformationHash);\n this.#transformationASTs.delete(transformationHash);\n }\n }\n }\n\n addQuery(transformationHash: string, queryID: string, ast: AST): void {\n const existing = this.#hashToIDs.get(transformationHash);\n if (existing === undefined) {\n this.#hashToIDs.set(transformationHash, new Set([queryID]));\n } else {\n existing.add(queryID);\n }\n this.#queryIDToTransformationHash.set(queryID, transformationHash);\n this.#transformationASTs.set(transformationHash, ast);\n }\n\n /**\n * Check if the client is authenticated. We only require authentication once\n * per \"worker\".\n */\n isAuthenticated(clientGroupID: ClientGroupID): boolean {\n return (\n isDevelopmentMode() || authenticatedClientGroupIDs.has(clientGroupID)\n );\n }\n\n setAuthenticated(clientGroupID: ClientGroupID): void {\n authenticatedClientGroupIDs.add(clientGroupID);\n }\n\n clearAuthenticated(clientGroupID: ClientGroupID) {\n authenticatedClientGroupIDs.delete(clientGroupID);\n }\n\n /**\n * Transforms a single custom query by name and args using the configured\n * CustomQueryTransformer. This is primarily used by the inspector to transform\n * queries for analysis.\n */\n async transformCustomQuery(\n name: string,\n args: readonly ReadonlyJSONValue[],\n headerOptions: HeaderOptions,\n userQueryURL: string | undefined,\n ): Promise<AST> {\n assert(\n this.#customQueryTransformer,\n 'Custom query transformation requested but no CustomQueryTransformer is configured',\n );\n\n // Create a fake CustomQueryRecord for the single query\n const queryID = hashOfNameAndArgs(name, args);\n const queries: CustomQueryRecord[] = [\n {\n id: queryID,\n type: 'custom',\n name,\n args,\n clientState: {},\n },\n ];\n\n const results = await this.#customQueryTransformer.transform(\n headerOptions,\n queries,\n userQueryURL,\n );\n\n if ('kind' in results) {\n throw new ProtocolError(results);\n }\n\n const result = results[0];\n if (!result) {\n throw new Error('No transformation result returned');\n }\n\n if ('error' in result) {\n const message =\n result.message ?? 'Unknown application error from custom query';\n throw new Error(\n `Error transforming custom query ${name} (${result.error}): ${message} ${JSON.stringify(result.details)}`,\n );\n }\n\n return result.transformedAst;\n }\n}\n\nfunction newMetrics(): ServerMetrics {\n return {\n 'query-materialization-server': new TDigest(),\n 'query-update-server': new TDigest(),\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { LogContext } from '@rocicorp/logger';
1
+ import type { LogContext } from '@rocicorp/logger';
2
2
  import { type LogConfig } from '../../../shared/src/logging.ts';
3
3
  export declare function createLogContext({ log }: {
4
4
  log: LogConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/logging.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAIX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,gCAAgC,CAAC;AAGxC,wBAAgB,gBAAgB,CAC9B,EAAC,GAAG,EAAC,EAAE;IAAC,GAAG,EAAE,SAAS,CAAA;CAAC,EACvB,OAAO,EAAE;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EACzB,WAAW,UAAO,GACjB,UAAU,CAMZ"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,gCAAgC,CAAC;AAGxC,wBAAgB,gBAAgB,CAC9B,EAAC,GAAG,EAAC,EAAE;IAAC,GAAG,EAAE,SAAS,CAAA;CAAC,EACvB,OAAO,EAAE;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EACzB,WAAW,UAAO,GACjB,UAAU,CAMZ"}