@rocicorp/zero 0.25.0 → 0.26.0-canary.0

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 (1588) hide show
  1. package/out/analyze-query/src/bin-analyze.js +268 -257
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/bin-transform.js +31 -23
  4. package/out/analyze-query/src/bin-transform.js.map +1 -1
  5. package/out/analyze-query/src/explain-queries.js +13 -16
  6. package/out/analyze-query/src/explain-queries.js.map +1 -1
  7. package/out/analyze-query/src/run-ast.d.ts +3 -2
  8. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  9. package/out/analyze-query/src/run-ast.js +82 -74
  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.d.ts +1 -1
  22. package/out/otel/src/log-options.d.ts.map +1 -1
  23. package/out/otel/src/log-options.js +35 -31
  24. package/out/otel/src/log-options.js.map +1 -1
  25. package/out/otel/src/maybe-time.js +14 -11
  26. package/out/otel/src/maybe-time.js.map +1 -1
  27. package/out/otel/src/span.js +30 -27
  28. package/out/otel/src/span.js.map +1 -1
  29. package/out/otel/src/test-log-config.js +10 -7
  30. package/out/otel/src/test-log-config.js.map +1 -1
  31. package/out/otel/src/version.js +5 -2
  32. package/out/otel/src/version.js.map +1 -1
  33. package/out/replicache/src/async-iterable-to-array.js +11 -0
  34. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  35. package/out/replicache/src/bg-interval.js +38 -0
  36. package/out/replicache/src/bg-interval.js.map +1 -0
  37. package/out/replicache/src/btree/diff.js +8 -0
  38. package/out/replicache/src/btree/diff.js.map +1 -0
  39. package/out/replicache/src/btree/node.js +400 -0
  40. package/out/replicache/src/btree/node.js.map +1 -0
  41. package/out/replicache/src/btree/read.d.ts +3 -2
  42. package/out/replicache/src/btree/read.d.ts.map +1 -1
  43. package/out/replicache/src/btree/read.js +266 -0
  44. package/out/replicache/src/btree/read.js.map +1 -0
  45. package/out/replicache/src/btree/splice.js +83 -0
  46. package/out/replicache/src/btree/splice.js.map +1 -0
  47. package/out/replicache/src/btree/write.d.ts +1 -1
  48. package/out/replicache/src/btree/write.d.ts.map +1 -1
  49. package/out/replicache/src/btree/write.js +163 -0
  50. package/out/replicache/src/btree/write.js.map +1 -0
  51. package/out/replicache/src/call-default-fetch.js +34 -0
  52. package/out/replicache/src/call-default-fetch.js.map +1 -0
  53. package/out/replicache/src/connection-loop-delegates.js +34 -0
  54. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  55. package/out/replicache/src/connection-loop.js +251 -0
  56. package/out/replicache/src/connection-loop.js.map +1 -0
  57. package/out/replicache/src/cookies.js +40 -0
  58. package/out/replicache/src/cookies.js.map +1 -0
  59. package/out/replicache/src/dag/chunk.js +59 -0
  60. package/out/replicache/src/dag/chunk.js.map +1 -0
  61. package/out/replicache/src/dag/gc.js +117 -0
  62. package/out/replicache/src/dag/gc.js.map +1 -0
  63. package/out/replicache/src/dag/key.js +20 -0
  64. package/out/replicache/src/dag/key.js.map +1 -0
  65. package/out/replicache/src/dag/lazy-store.d.ts +2 -1
  66. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  67. package/out/replicache/src/dag/lazy-store.js +515 -0
  68. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  69. package/out/replicache/src/dag/store-impl.js +183 -0
  70. package/out/replicache/src/dag/store-impl.js.map +1 -0
  71. package/out/replicache/src/dag/store.js +27 -0
  72. package/out/replicache/src/dag/store.js.map +1 -0
  73. package/out/replicache/src/dag/visitor.js +22 -0
  74. package/out/replicache/src/dag/visitor.js.map +1 -0
  75. package/out/replicache/src/db/commit.js +358 -0
  76. package/out/replicache/src/db/commit.js.map +1 -0
  77. package/out/replicache/src/db/index-operation-enum.js +7 -0
  78. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  79. package/out/replicache/src/db/index.js +134 -0
  80. package/out/replicache/src/db/index.js.map +1 -0
  81. package/out/replicache/src/db/meta-type-enum.js +7 -0
  82. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  83. package/out/replicache/src/db/read.d.ts +3 -2
  84. package/out/replicache/src/db/read.d.ts.map +1 -1
  85. package/out/replicache/src/db/read.js +72 -0
  86. package/out/replicache/src/db/read.js.map +1 -0
  87. package/out/replicache/src/db/rebase.d.ts +2 -2
  88. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  89. package/out/replicache/src/db/rebase.js +85 -0
  90. package/out/replicache/src/db/rebase.js.map +1 -0
  91. package/out/replicache/src/db/write.d.ts +2 -1
  92. package/out/replicache/src/db/write.d.ts.map +1 -1
  93. package/out/replicache/src/db/write.js +296 -0
  94. package/out/replicache/src/db/write.js.map +1 -0
  95. package/out/replicache/src/deleted-clients.js +104 -0
  96. package/out/replicache/src/deleted-clients.js.map +1 -0
  97. package/out/replicache/src/error-responses.js +34 -0
  98. package/out/replicache/src/error-responses.js.map +1 -0
  99. package/out/replicache/src/format-version-enum.js +11 -0
  100. package/out/replicache/src/format-version-enum.js.map +1 -0
  101. package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
  102. package/out/replicache/src/frozen-json.js.map +1 -0
  103. package/out/replicache/src/get-default-puller.js +61 -0
  104. package/out/replicache/src/get-default-puller.js.map +1 -0
  105. package/out/replicache/src/get-default-pusher.js +39 -0
  106. package/out/replicache/src/get-default-pusher.js.map +1 -0
  107. package/out/replicache/src/get-kv-store-provider.js +23 -0
  108. package/out/replicache/src/get-kv-store-provider.js.map +1 -0
  109. package/out/replicache/src/hash.js +38 -0
  110. package/out/replicache/src/hash.js.map +1 -0
  111. package/out/replicache/src/http-request-info.js +10 -0
  112. package/out/replicache/src/http-request-info.js.map +1 -0
  113. package/out/replicache/src/http-status-unauthorized.js +5 -0
  114. package/out/replicache/src/http-status-unauthorized.js.map +1 -0
  115. package/out/replicache/src/index-defs.js +32 -0
  116. package/out/replicache/src/index-defs.js.map +1 -0
  117. package/out/replicache/src/invoke-kind-enum.js +7 -0
  118. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  119. package/out/{chunk-ZZXMKAAG.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
  120. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  121. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
  122. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  123. package/out/replicache/src/kv/idb-store.js +183 -0
  124. package/out/replicache/src/kv/idb-store.js.map +1 -0
  125. package/out/replicache/src/kv/mem-store.js +51 -0
  126. package/out/replicache/src/kv/mem-store.js.map +1 -0
  127. package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
  128. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
  129. package/out/replicache/src/kv/op-sqlite/types.js +6 -0
  130. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
  131. package/out/replicache/src/kv/read-impl.js +27 -0
  132. package/out/replicache/src/kv/read-impl.js.map +1 -0
  133. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  134. package/out/{chunk-ECUMGQGC.js → replicache/src/kv/sqlite-store.js} +27 -21
  135. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  136. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  137. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  138. package/out/replicache/src/kv/write-impl-base.js +57 -0
  139. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  140. package/out/replicache/src/kv/write-impl.js +30 -0
  141. package/out/replicache/src/kv/write-impl.js.map +1 -0
  142. package/out/replicache/src/lazy.js +13 -0
  143. package/out/replicache/src/lazy.js.map +1 -0
  144. package/out/replicache/src/log-options.js +9 -0
  145. package/out/replicache/src/log-options.js.map +1 -0
  146. package/out/replicache/src/make-idb-name.js +13 -0
  147. package/out/replicache/src/make-idb-name.js.map +1 -0
  148. package/out/replicache/src/new-client-channel.js +51 -0
  149. package/out/replicache/src/new-client-channel.js.map +1 -0
  150. package/out/replicache/src/on-persist-channel.js +36 -0
  151. package/out/replicache/src/on-persist-channel.js.map +1 -0
  152. package/out/replicache/src/patch-operation.js +42 -0
  153. package/out/replicache/src/patch-operation.js.map +1 -0
  154. package/out/replicache/src/pending-mutations.js +16 -0
  155. package/out/replicache/src/pending-mutations.js.map +1 -0
  156. package/out/replicache/src/persist/client-gc.js +58 -0
  157. package/out/replicache/src/persist/client-gc.js.map +1 -0
  158. package/out/replicache/src/persist/client-group-gc.js +43 -0
  159. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  160. package/out/replicache/src/persist/client-groups.js +184 -0
  161. package/out/replicache/src/persist/client-groups.js.map +1 -0
  162. package/out/replicache/src/persist/clients.d.ts +3 -2
  163. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  164. package/out/replicache/src/persist/clients.js +353 -0
  165. package/out/replicache/src/persist/clients.js.map +1 -0
  166. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  167. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  168. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  169. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  170. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  171. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  172. package/out/replicache/src/persist/heartbeat.js +48 -0
  173. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  174. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  175. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  176. package/out/replicache/src/persist/idb-databases-store.d.ts +1 -0
  177. package/out/replicache/src/persist/idb-databases-store.d.ts.map +1 -1
  178. package/out/replicache/src/persist/idb-databases-store.js +103 -0
  179. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  180. package/out/replicache/src/persist/make-client-id.js +12 -0
  181. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  182. package/out/replicache/src/persist/persist.d.ts +2 -2
  183. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  184. package/out/replicache/src/persist/persist.js +183 -0
  185. package/out/replicache/src/persist/persist.js.map +1 -0
  186. package/out/replicache/src/persist/refresh.d.ts +4 -3
  187. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  188. package/out/replicache/src/persist/refresh.js +198 -0
  189. package/out/replicache/src/persist/refresh.js.map +1 -0
  190. package/out/replicache/src/process-scheduler.js +96 -0
  191. package/out/replicache/src/process-scheduler.js.map +1 -0
  192. package/out/replicache/src/pusher.js +33 -0
  193. package/out/replicache/src/pusher.js.map +1 -0
  194. package/out/replicache/src/replicache-impl.d.ts +1 -1
  195. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  196. package/out/replicache/src/replicache-impl.js +1200 -0
  197. package/out/replicache/src/replicache-impl.js.map +1 -0
  198. package/out/replicache/src/replicache-options.d.ts +3 -2
  199. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  200. package/out/replicache/src/report-error.js +6 -0
  201. package/out/replicache/src/report-error.js.map +1 -0
  202. package/out/replicache/src/request-idle.js +13 -0
  203. package/out/replicache/src/request-idle.js.map +1 -0
  204. package/out/replicache/src/scan-iterator.js +146 -0
  205. package/out/replicache/src/scan-iterator.js.map +1 -0
  206. package/out/replicache/src/scan-options.js +45 -0
  207. package/out/replicache/src/scan-options.js.map +1 -0
  208. package/out/replicache/src/set-interval-with-signal.js +12 -0
  209. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  210. package/out/replicache/src/subscriptions.js +355 -0
  211. package/out/replicache/src/subscriptions.js.map +1 -0
  212. package/out/replicache/src/sync/diff.d.ts +3 -2
  213. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  214. package/out/replicache/src/sync/diff.js +72 -0
  215. package/out/replicache/src/sync/diff.js.map +1 -0
  216. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  217. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  218. package/out/replicache/src/sync/ids.js +9 -0
  219. package/out/replicache/src/sync/ids.js.map +1 -0
  220. package/out/replicache/src/sync/patch.js +49 -0
  221. package/out/replicache/src/sync/patch.js.map +1 -0
  222. package/out/replicache/src/sync/pull-error.js +16 -0
  223. package/out/replicache/src/sync/pull-error.js.map +1 -0
  224. package/out/replicache/src/sync/pull.d.ts +3 -2
  225. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  226. package/out/replicache/src/sync/pull.js +301 -0
  227. package/out/replicache/src/sync/pull.js.map +1 -0
  228. package/out/replicache/src/sync/push.js +88 -0
  229. package/out/replicache/src/sync/push.js.map +1 -0
  230. package/out/replicache/src/sync/request-id.js +20 -0
  231. package/out/replicache/src/sync/request-id.js.map +1 -0
  232. package/out/replicache/src/sync/sync-head-name.js +5 -0
  233. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  234. package/out/replicache/src/to-error.js +10 -0
  235. package/out/replicache/src/to-error.js.map +1 -0
  236. package/out/replicache/src/transaction-closed-error.js +19 -0
  237. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  238. package/out/replicache/src/transactions.js +152 -0
  239. package/out/replicache/src/transactions.js.map +1 -0
  240. package/out/replicache/src/version.js +5 -0
  241. package/out/replicache/src/version.js.map +1 -0
  242. package/out/replicache/src/with-transactions.js +28 -0
  243. package/out/replicache/src/with-transactions.js.map +1 -0
  244. package/out/shared/src/abort-error.js +6 -3
  245. package/out/shared/src/abort-error.js.map +1 -1
  246. package/out/shared/src/arrays.js +45 -43
  247. package/out/shared/src/arrays.js.map +1 -1
  248. package/out/shared/src/asserts.js +64 -68
  249. package/out/shared/src/asserts.js.map +1 -1
  250. package/out/shared/src/bigint-json.js +38 -42
  251. package/out/shared/src/bigint-json.js.map +1 -1
  252. package/out/shared/src/binary-search.js +18 -29
  253. package/out/shared/src/binary-search.js.map +1 -1
  254. package/out/shared/src/broadcast-channel.js +24 -0
  255. package/out/shared/src/broadcast-channel.js.map +1 -0
  256. package/out/shared/src/browser-env.js +25 -0
  257. package/out/shared/src/browser-env.js.map +1 -0
  258. package/out/shared/src/btree-set.js +464 -507
  259. package/out/shared/src/btree-set.js.map +1 -1
  260. package/out/shared/src/cache.js +34 -38
  261. package/out/shared/src/cache.js.map +1 -1
  262. package/out/shared/src/centroid.js +24 -24
  263. package/out/shared/src/centroid.js.map +1 -1
  264. package/out/shared/src/config.js +6 -3
  265. package/out/shared/src/config.js.map +1 -1
  266. package/out/shared/src/custom-key-map.js +58 -64
  267. package/out/shared/src/custom-key-map.js.map +1 -1
  268. package/out/shared/src/custom-key-set.js +51 -57
  269. package/out/shared/src/custom-key-set.js.map +1 -1
  270. package/out/shared/src/deep-clone.js +46 -0
  271. package/out/shared/src/deep-clone.js.map +1 -0
  272. package/out/shared/src/deep-merge.d.ts +26 -4
  273. package/out/shared/src/deep-merge.d.ts.map +1 -1
  274. package/out/shared/src/deep-merge.js +28 -0
  275. package/out/shared/src/deep-merge.js.map +1 -0
  276. package/out/shared/src/document-visible.js +74 -0
  277. package/out/shared/src/document-visible.js.map +1 -0
  278. package/out/shared/src/dotenv.js +5 -7
  279. package/out/shared/src/dotenv.js.map +1 -1
  280. package/out/shared/src/error.js +57 -56
  281. package/out/shared/src/error.js.map +1 -1
  282. package/out/shared/src/has-own.js +5 -3
  283. package/out/shared/src/has-own.js.map +1 -1
  284. package/out/shared/src/hash.js +15 -14
  285. package/out/shared/src/hash.js.map +1 -1
  286. package/out/shared/src/iterables.d.ts +0 -1
  287. package/out/shared/src/iterables.d.ts.map +1 -1
  288. package/out/shared/src/iterables.js +44 -80
  289. package/out/shared/src/iterables.js.map +1 -1
  290. package/out/shared/src/json-schema.js +30 -33
  291. package/out/shared/src/json-schema.js.map +1 -1
  292. package/out/shared/src/json.js +128 -143
  293. package/out/shared/src/json.js.map +1 -1
  294. package/out/shared/src/logging-test-utils.js +12 -19
  295. package/out/shared/src/logging-test-utils.js.map +1 -1
  296. package/out/shared/src/logging.d.ts.map +1 -1
  297. package/out/shared/src/logging.js +99 -83
  298. package/out/shared/src/logging.js.map +1 -1
  299. package/out/shared/src/must.js +9 -7
  300. package/out/shared/src/must.js.map +1 -1
  301. package/out/shared/src/navigator.js +5 -0
  302. package/out/shared/src/navigator.js.map +1 -0
  303. package/out/shared/src/object-traversal.d.ts +19 -0
  304. package/out/shared/src/object-traversal.d.ts.map +1 -0
  305. package/out/shared/src/object-traversal.js +27 -0
  306. package/out/shared/src/object-traversal.js.map +1 -0
  307. package/out/shared/src/objects.js +21 -22
  308. package/out/shared/src/objects.js.map +1 -1
  309. package/out/shared/src/options-types.d.ts +113 -0
  310. package/out/shared/src/options-types.d.ts.map +1 -0
  311. package/out/shared/src/options.d.ts +4 -111
  312. package/out/shared/src/options.d.ts.map +1 -1
  313. package/out/shared/src/options.js +289 -318
  314. package/out/shared/src/options.js.map +1 -1
  315. package/out/shared/src/parse-big-int.js +12 -10
  316. package/out/shared/src/parse-big-int.js.map +1 -1
  317. package/out/shared/src/promise-race.js +20 -0
  318. package/out/shared/src/promise-race.js.map +1 -0
  319. package/out/shared/src/queue.js +119 -122
  320. package/out/shared/src/queue.js.map +1 -1
  321. package/out/shared/src/rand.js +8 -10
  322. package/out/shared/src/rand.js.map +1 -1
  323. package/out/shared/src/random-uint64.js +9 -0
  324. package/out/shared/src/random-uint64.js.map +1 -0
  325. package/out/shared/src/random-values.js +13 -0
  326. package/out/shared/src/random-values.js.map +1 -0
  327. package/out/shared/src/record-proxy.d.ts +13 -0
  328. package/out/shared/src/record-proxy.d.ts.map +1 -0
  329. package/out/shared/src/record-proxy.js +59 -0
  330. package/out/shared/src/record-proxy.js.map +1 -0
  331. package/out/shared/src/resolved-promises.js +12 -9
  332. package/out/shared/src/resolved-promises.js.map +1 -1
  333. package/out/shared/src/sentinels.js +13 -6
  334. package/out/shared/src/sentinels.js.map +1 -1
  335. package/out/shared/src/set-utils.js +63 -62
  336. package/out/shared/src/set-utils.js.map +1 -1
  337. package/out/shared/src/size-of-value.js +58 -0
  338. package/out/shared/src/size-of-value.js.map +1 -0
  339. package/out/shared/src/sleep.js +45 -53
  340. package/out/shared/src/sleep.js.map +1 -1
  341. package/out/shared/src/string-compare.js +12 -9
  342. package/out/shared/src/string-compare.js.map +1 -1
  343. package/out/shared/src/subscribable.js +34 -0
  344. package/out/shared/src/subscribable.js.map +1 -0
  345. package/out/shared/src/tdigest-schema.js +7 -7
  346. package/out/shared/src/tdigest-schema.js.map +1 -1
  347. package/out/shared/src/tdigest.js +247 -271
  348. package/out/shared/src/tdigest.js.map +1 -1
  349. package/out/shared/src/valita.js +195 -207
  350. package/out/shared/src/valita.js.map +1 -1
  351. package/out/z2s/src/compiler.d.ts +2 -2
  352. package/out/z2s/src/compiler.d.ts.map +1 -1
  353. package/out/z2s/src/compiler.js +439 -310
  354. package/out/z2s/src/compiler.js.map +1 -1
  355. package/out/z2s/src/sql.d.ts +1 -1
  356. package/out/z2s/src/sql.d.ts.map +1 -1
  357. package/out/z2s/src/sql.js +186 -218
  358. package/out/z2s/src/sql.js.map +1 -1
  359. package/out/zero/package.json.js +9 -0
  360. package/out/zero/package.json.js.map +1 -0
  361. package/out/zero/src/adapters/drizzle.d.ts +1 -1
  362. package/out/zero/src/adapters/drizzle.d.ts.map +1 -1
  363. package/out/zero/src/adapters/drizzle.js +8 -2
  364. package/out/zero/src/adapters/drizzle.js.map +1 -1
  365. package/out/zero/src/adapters/pg.js +7 -2
  366. package/out/zero/src/adapters/pg.js.map +1 -1
  367. package/out/zero/src/adapters/postgresjs.js +7 -2
  368. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  369. package/out/zero/src/analyze-query.js +1 -1
  370. package/out/zero/src/analyze-query.js.map +1 -1
  371. package/out/zero/src/ast-to-zql.js +1 -1
  372. package/out/zero/src/ast-to-zql.js.map +1 -1
  373. package/out/zero/src/bindings.d.ts +2 -0
  374. package/out/zero/src/bindings.d.ts.map +1 -0
  375. package/out/zero/src/bindings.js +27 -0
  376. package/out/zero/src/bindings.js.map +1 -0
  377. package/out/zero/src/build-schema.js +3 -5
  378. package/out/zero/src/build-schema.js.map +1 -1
  379. package/out/zero/src/change-protocol/v0.js +5 -3
  380. package/out/zero/src/change-protocol/v0.js.map +1 -1
  381. package/out/zero/src/cli.js +2 -2
  382. package/out/zero/src/cli.js.map +1 -1
  383. package/out/zero/src/deploy-permissions.js +1 -1
  384. package/out/zero/src/deploy-permissions.js.map +1 -1
  385. package/out/zero/src/expo-sqlite.js +5 -0
  386. package/out/zero/src/expo-sqlite.js.map +1 -0
  387. package/out/zero/src/op-sqlite.js +5 -0
  388. package/out/zero/src/op-sqlite.js.map +1 -0
  389. package/out/zero/src/pg.js +31 -3
  390. package/out/zero/src/pg.js.map +1 -1
  391. package/out/zero/src/react-native.js +13 -0
  392. package/out/zero/src/react-native.js.map +1 -0
  393. package/out/zero/src/react.js +15 -0
  394. package/out/zero/src/react.js.map +1 -0
  395. package/out/zero/src/server.js +27 -3
  396. package/out/zero/src/server.js.map +1 -1
  397. package/out/zero/src/solid.js +15 -0
  398. package/out/zero/src/solid.js.map +1 -0
  399. package/out/zero/src/sqlite.js +7 -0
  400. package/out/zero/src/sqlite.js.map +1 -0
  401. package/out/zero/src/transform-query.js +1 -1
  402. package/out/zero/src/transform-query.js.map +1 -1
  403. package/out/zero/src/zero-cache-dev.js +138 -104
  404. package/out/zero/src/zero-cache-dev.js.map +1 -1
  405. package/out/zero/src/zero-out.js +6 -6
  406. package/out/zero/src/zero-out.js.map +1 -1
  407. package/out/zero/src/zero.js +71 -0
  408. package/out/zero/src/zero.js.map +1 -0
  409. package/out/zero/src/zqlite.js +11 -3
  410. package/out/zero/src/zqlite.js.map +1 -1
  411. package/out/zero-cache/src/auth/jwt.d.ts +3 -0
  412. package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
  413. package/out/zero-cache/src/auth/jwt.js +33 -38
  414. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  415. package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
  416. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  417. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  418. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  419. package/out/zero-cache/src/auth/read-authorizer.d.ts +1 -1
  420. package/out/zero-cache/src/auth/read-authorizer.d.ts.map +1 -1
  421. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  422. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  423. package/out/zero-cache/src/auth/write-authorizer.d.ts +4 -3
  424. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  425. package/out/zero-cache/src/auth/write-authorizer.js +395 -328
  426. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  427. package/out/zero-cache/src/config/network.js +42 -45
  428. package/out/zero-cache/src/config/network.js.map +1 -1
  429. package/out/zero-cache/src/config/normalize.js +86 -83
  430. package/out/zero-cache/src/config/normalize.js.map +1 -1
  431. package/out/zero-cache/src/config/zero-config.d.ts +63 -0
  432. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  433. package/out/zero-cache/src/config/zero-config.js +743 -682
  434. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  435. package/out/zero-cache/src/custom/fetch.d.ts +5 -5
  436. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  437. package/out/zero-cache/src/custom/fetch.js +170 -162
  438. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  439. package/out/zero-cache/src/custom-queries/transform-query.d.ts +10 -3
  440. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  441. package/out/zero-cache/src/custom-queries/transform-query.js +101 -109
  442. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  443. package/out/zero-cache/src/db/create.js +32 -36
  444. package/out/zero-cache/src/db/create.js.map +1 -1
  445. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  446. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  447. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  448. package/out/zero-cache/src/db/lite-tables.js +150 -174
  449. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  450. package/out/zero-cache/src/db/migration-lite.js +170 -165
  451. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  452. package/out/zero-cache/src/db/migration.js +157 -137
  453. package/out/zero-cache/src/db/migration.js.map +1 -1
  454. package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
  455. package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
  456. package/out/zero-cache/src/db/mode-enum.js +9 -3
  457. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  458. package/out/zero-cache/src/db/pg-copy.js +51 -90
  459. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  460. package/out/zero-cache/src/db/pg-to-lite.d.ts +10 -0
  461. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
  462. package/out/zero-cache/src/db/pg-to-lite.js +116 -97
  463. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  464. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  465. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  466. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  467. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  468. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  469. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  470. package/out/zero-cache/src/db/specs.d.ts +1 -7
  471. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  472. package/out/zero-cache/src/db/specs.js +66 -40
  473. package/out/zero-cache/src/db/specs.js.map +1 -1
  474. package/out/zero-cache/src/db/statements.d.ts +1 -1
  475. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  476. package/out/zero-cache/src/db/statements.js +59 -52
  477. package/out/zero-cache/src/db/statements.js.map +1 -1
  478. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  479. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  480. package/out/zero-cache/src/db/transaction-pool.js +372 -501
  481. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  482. package/out/zero-cache/src/db/warmup.js +25 -12
  483. package/out/zero-cache/src/db/warmup.js.map +1 -1
  484. package/out/zero-cache/src/observability/events.js +71 -82
  485. package/out/zero-cache/src/observability/events.js.map +1 -1
  486. package/out/zero-cache/src/observability/metrics.js +54 -32
  487. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  488. package/out/zero-cache/src/scripts/decommission.js +47 -43
  489. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  490. package/out/zero-cache/src/scripts/deploy-permissions.js +132 -119
  491. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  492. package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
  493. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  494. package/out/zero-cache/src/scripts/permissions.js +106 -100
  495. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  496. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +10 -1
  497. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -1
  498. package/out/zero-cache/src/server/anonymous-otel-start.js +426 -366
  499. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  500. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  501. package/out/zero-cache/src/server/change-streamer.js +99 -64
  502. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  503. package/out/zero-cache/src/server/inspector-delegate.js +112 -109
  504. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  505. package/out/zero-cache/src/server/logging.d.ts +1 -1
  506. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  507. package/out/zero-cache/src/server/logging.js +26 -19
  508. package/out/zero-cache/src/server/logging.js.map +1 -1
  509. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  510. package/out/zero-cache/src/server/main.js +137 -120
  511. package/out/zero-cache/src/server/main.js.map +1 -1
  512. package/out/zero-cache/src/server/mutator.js +19 -0
  513. package/out/zero-cache/src/server/mutator.js.map +1 -0
  514. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  515. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  516. package/out/zero-cache/src/server/otel-diag-logger.js +48 -71
  517. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  518. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  519. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  520. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  521. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  522. package/out/zero-cache/src/server/otel-start.js +53 -68
  523. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  524. package/out/zero-cache/src/server/reaper.js +34 -26
  525. package/out/zero-cache/src/server/reaper.js.map +1 -1
  526. package/out/zero-cache/src/server/replicator.js +53 -31
  527. package/out/zero-cache/src/server/replicator.js.map +1 -1
  528. package/out/zero-cache/src/server/runner/main.js +6 -4
  529. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  530. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  531. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  532. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  533. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  534. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  535. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  536. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  537. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  538. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  539. package/out/zero-cache/src/server/syncer.js +130 -63
  540. package/out/zero-cache/src/server/syncer.js.map +1 -1
  541. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  542. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  543. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  544. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  545. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  546. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  547. package/out/zero-cache/src/server/worker-urls.js +21 -0
  548. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  549. package/out/zero-cache/src/services/analyze.d.ts +4 -9
  550. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  551. package/out/zero-cache/src/services/analyze.js +118 -121
  552. package/out/zero-cache/src/services/analyze.js.map +1 -1
  553. package/out/zero-cache/src/services/change-source/column-metadata.d.ts +10 -3
  554. package/out/zero-cache/src/services/change-source/column-metadata.d.ts.map +1 -1
  555. package/out/zero-cache/src/services/change-source/column-metadata.js +154 -144
  556. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  557. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  558. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  559. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  560. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  561. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  562. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  563. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  564. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  565. package/out/zero-cache/src/services/change-source/pg/change-source.js +622 -623
  566. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  567. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  568. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  569. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  570. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  571. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  572. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  573. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
  574. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  575. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  576. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  577. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  578. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  579. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  580. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  581. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  582. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  583. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
  584. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  585. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  586. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  587. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  588. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
  589. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts.map +1 -1
  590. package/out/zero-cache/src/services/change-source/pg/schema/published.js +70 -76
  591. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  592. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
  593. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  594. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  595. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  596. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  597. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  598. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  599. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts +1 -0
  600. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts.map +1 -1
  601. package/out/zero-cache/src/services/change-source/protocol/current/control.js +13 -19
  602. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  603. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  604. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  605. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +2 -0
  606. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  607. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  608. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  609. package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts +8 -0
  610. package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts.map +1 -0
  611. package/out/zero-cache/src/services/change-source/protocol/current/json.js +19 -0
  612. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -0
  613. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  614. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  615. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  616. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  617. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  618. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  619. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  620. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  621. package/out/zero-cache/src/services/change-source/protocol/current.d.ts +1 -0
  622. package/out/zero-cache/src/services/change-source/protocol/current.d.ts.map +1 -1
  623. package/out/zero-cache/src/services/change-source/protocol/current.js +38 -7
  624. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  625. package/out/zero-cache/src/services/change-source/replica-schema.d.ts.map +1 -1
  626. package/out/zero-cache/src/services/change-source/replica-schema.js +67 -37
  627. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  628. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
  629. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
  630. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -157
  631. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  632. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +11 -4
  633. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  634. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +208 -157
  635. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  636. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  637. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  638. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +242 -349
  639. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  640. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -1
  641. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  642. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -22
  643. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  644. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  645. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  646. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  647. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  648. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  649. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  650. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
  651. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
  652. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +48 -0
  653. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  654. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  655. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  656. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  657. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  658. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  659. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  660. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
  661. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
  662. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -18
  663. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  664. package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -2
  665. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  666. package/out/zero-cache/src/services/change-streamer/storer.js +308 -353
  667. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  668. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +3 -2
  669. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  670. package/out/zero-cache/src/services/change-streamer/subscriber.js +85 -87
  671. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  672. package/out/zero-cache/src/services/heapz.js +21 -25
  673. package/out/zero-cache/src/services/heapz.js.map +1 -1
  674. package/out/zero-cache/src/services/http-service.d.ts +5 -5
  675. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  676. package/out/zero-cache/src/services/http-service.js +57 -59
  677. package/out/zero-cache/src/services/http-service.js.map +1 -1
  678. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  679. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  680. package/out/zero-cache/src/services/life-cycle.js +216 -255
  681. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  682. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  683. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  684. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  685. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  686. package/out/zero-cache/src/services/litestream/commands.js +202 -154
  687. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  688. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  689. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  690. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
  691. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  692. package/out/zero-cache/src/services/mutagen/mutagen.js +271 -267
  693. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  694. package/out/zero-cache/src/services/mutagen/pusher.d.ts +202 -2
  695. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  696. package/out/zero-cache/src/services/mutagen/pusher.js +354 -348
  697. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  698. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  699. package/out/zero-cache/src/services/replicator/change-processor.js +483 -497
  700. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  701. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  702. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  703. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  704. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  705. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  706. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  707. package/out/zero-cache/src/services/replicator/replication-status.d.ts +2 -0
  708. package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +1 -1
  709. package/out/zero-cache/src/services/replicator/replication-status.js +113 -83
  710. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  711. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  712. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  713. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  714. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  715. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  716. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  717. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  718. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  719. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  720. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  721. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  722. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  723. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  724. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  725. package/out/zero-cache/src/services/run-ast.d.ts +9 -3
  726. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  727. package/out/zero-cache/src/services/run-ast.js +91 -78
  728. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  729. package/out/zero-cache/src/services/runner.d.ts +1 -1
  730. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  731. package/out/zero-cache/src/services/runner.js +40 -40
  732. package/out/zero-cache/src/services/runner.js.map +1 -1
  733. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  734. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  735. package/out/zero-cache/src/services/running-state.js +122 -119
  736. package/out/zero-cache/src/services/running-state.js.map +1 -1
  737. package/out/zero-cache/src/services/statz.js +184 -162
  738. package/out/zero-cache/src/services/statz.js.map +1 -1
  739. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +2 -1
  740. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +1 -1
  741. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +56 -42
  742. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  743. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  744. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  745. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  746. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  747. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  748. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +1 -1
  749. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  750. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +110 -96
  751. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  752. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -5
  753. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  754. package/out/zero-cache/src/services/view-syncer/cvr-store.js +676 -611
  755. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  756. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +4 -1
  757. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  758. package/out/zero-cache/src/services/view-syncer/cvr.js +643 -694
  759. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  760. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
  761. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  762. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  763. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  764. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +175 -85
  765. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  766. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +23 -22
  767. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  768. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +584 -461
  769. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  770. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +1 -1
  771. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  772. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -277
  773. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  774. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +1 -0
  775. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  776. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +79 -131
  777. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  778. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  779. package/out/zero-cache/src/services/view-syncer/schema/init.js +207 -131
  780. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  781. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
  782. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  783. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  784. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +5 -5
  785. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  786. package/out/zero-cache/src/services/view-syncer/snapshotter.js +309 -337
  787. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  788. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  789. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  790. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +5 -4
  791. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  792. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1514 -1311
  793. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  794. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  795. package/out/zero-cache/src/types/error-with-level.js +30 -21
  796. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  797. package/out/zero-cache/src/types/http.js +27 -14
  798. package/out/zero-cache/src/types/http.js.map +1 -1
  799. package/out/zero-cache/src/types/lexi-version.js +46 -31
  800. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  801. package/out/zero-cache/src/types/lite.js +118 -125
  802. package/out/zero-cache/src/types/lite.js.map +1 -1
  803. package/out/zero-cache/src/types/names.js +6 -3
  804. package/out/zero-cache/src/types/names.js.map +1 -1
  805. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  806. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  807. package/out/zero-cache/src/types/pg-types.js +17 -72
  808. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  809. package/out/zero-cache/src/types/pg.d.ts +1 -1
  810. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  811. package/out/zero-cache/src/types/pg.js +213 -233
  812. package/out/zero-cache/src/types/pg.js.map +1 -1
  813. package/out/zero-cache/src/types/processes.d.ts +2 -2
  814. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  815. package/out/zero-cache/src/types/processes.js +95 -143
  816. package/out/zero-cache/src/types/processes.js.map +1 -1
  817. package/out/zero-cache/src/types/profiler.js +29 -30
  818. package/out/zero-cache/src/types/profiler.js.map +1 -1
  819. package/out/zero-cache/src/types/row-key.js +30 -68
  820. package/out/zero-cache/src/types/row-key.js.map +1 -1
  821. package/out/zero-cache/src/types/schema-versions.js +25 -19
  822. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  823. package/out/zero-cache/src/types/shards.js +50 -36
  824. package/out/zero-cache/src/types/shards.js.map +1 -1
  825. package/out/zero-cache/src/types/sql.js +9 -13
  826. package/out/zero-cache/src/types/sql.js.map +1 -1
  827. package/out/zero-cache/src/types/streams.js +245 -254
  828. package/out/zero-cache/src/types/streams.js.map +1 -1
  829. package/out/zero-cache/src/types/strings.js +14 -11
  830. package/out/zero-cache/src/types/strings.js.map +1 -1
  831. package/out/zero-cache/src/types/subscription.js +200 -259
  832. package/out/zero-cache/src/types/subscription.js.map +1 -1
  833. package/out/zero-cache/src/types/url-params.js +35 -30
  834. package/out/zero-cache/src/types/url-params.js.map +1 -1
  835. package/out/zero-cache/src/types/websocket-handoff.d.ts +5 -4
  836. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  837. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  838. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  839. package/out/zero-cache/src/types/ws.js +56 -59
  840. package/out/zero-cache/src/types/ws.js.map +1 -1
  841. package/out/zero-cache/src/workers/connect-params.d.ts +1 -0
  842. package/out/zero-cache/src/workers/connect-params.d.ts.map +1 -1
  843. package/out/zero-cache/src/workers/connect-params.js +46 -40
  844. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  845. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  846. package/out/zero-cache/src/workers/connection.js +282 -243
  847. package/out/zero-cache/src/workers/connection.js.map +1 -1
  848. package/out/zero-cache/src/workers/mutator.js +24 -0
  849. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  850. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  851. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  852. package/out/zero-cache/src/workers/replicator.js +103 -106
  853. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  854. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  855. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +181 -147
  856. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  857. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  858. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  859. package/out/zero-cache/src/workers/syncer.js +192 -169
  860. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  861. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  862. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  863. package/out/zero-client/src/client/bindings.d.ts +13 -0
  864. package/out/zero-client/src/client/bindings.d.ts.map +1 -0
  865. package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
  866. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  867. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  868. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  869. package/out/zero-client/src/client/connection-manager.d.ts +20 -40
  870. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  871. package/out/zero-client/src/client/connection-manager.js +310 -0
  872. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  873. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  874. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  875. package/out/zero-client/src/client/connection.d.ts +48 -5
  876. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  877. package/out/zero-client/src/client/connection.js +110 -0
  878. package/out/zero-client/src/client/connection.js.map +1 -0
  879. package/out/zero-client/src/client/context.d.ts +9 -10
  880. package/out/zero-client/src/client/context.d.ts.map +1 -1
  881. package/out/zero-client/src/client/context.js +104 -0
  882. package/out/zero-client/src/client/context.js.map +1 -0
  883. package/out/zero-client/src/client/crud-impl.d.ts +11 -0
  884. package/out/zero-client/src/client/crud-impl.d.ts.map +1 -0
  885. package/out/zero-client/src/client/crud-impl.js +102 -0
  886. package/out/zero-client/src/client/crud-impl.js.map +1 -0
  887. package/out/zero-client/src/client/crud.d.ts +17 -47
  888. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  889. package/out/zero-client/src/client/crud.js +143 -0
  890. package/out/zero-client/src/client/crud.js.map +1 -0
  891. package/out/zero-client/src/client/custom.d.ts +52 -25
  892. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  893. package/out/zero-client/src/client/custom.js +87 -0
  894. package/out/zero-client/src/client/custom.js.map +1 -0
  895. package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
  896. package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
  897. package/out/zero-client/src/client/delete-clients-manager.js +98 -0
  898. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  899. package/out/zero-client/src/client/enable-analytics.js +18 -0
  900. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  901. package/out/zero-client/src/client/error.d.ts +30 -12
  902. package/out/zero-client/src/client/error.d.ts.map +1 -1
  903. package/out/zero-client/src/client/error.js +148 -0
  904. package/out/zero-client/src/client/error.js.map +1 -0
  905. package/out/zero-client/src/client/http-string.js +11 -0
  906. package/out/zero-client/src/client/http-string.js.map +1 -0
  907. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  908. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  909. package/out/zero-client/src/client/inspector/client.js +28 -0
  910. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  911. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
  912. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  913. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  914. package/out/zero-client/src/client/inspector/inspector.d.ts +8 -3
  915. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  916. package/out/zero-client/src/client/inspector/inspector.js +54 -0
  917. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  918. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
  919. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  920. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  921. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  922. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  923. package/out/zero-client/src/client/inspector/query.js +82 -0
  924. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  925. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  926. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  927. package/out/zero-client/src/client/ivm-branch.js +156 -0
  928. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  929. package/out/zero-client/src/client/keys.js +45 -0
  930. package/out/zero-client/src/client/keys.js.map +1 -0
  931. package/out/zero-client/src/client/log-options.js +60 -0
  932. package/out/zero-client/src/client/log-options.js.map +1 -0
  933. package/out/zero-client/src/client/make-mutate-property.d.ts +40 -0
  934. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
  935. package/out/zero-client/src/client/make-mutate-property.js +33 -0
  936. package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
  937. package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
  938. package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
  939. package/out/zero-client/src/client/make-replicache-mutators.js +108 -0
  940. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
  941. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  942. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  943. package/out/zero-client/src/client/metrics.d.ts +2 -2
  944. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  945. package/out/zero-client/src/client/metrics.js +249 -0
  946. package/out/zero-client/src/client/metrics.js.map +1 -0
  947. package/out/zero-client/src/client/mutation-tracker.d.ts +12 -4
  948. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  949. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  950. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  951. package/out/zero-client/src/client/mutator-proxy.d.ts +16 -0
  952. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
  953. package/out/zero-client/src/client/mutator-proxy.js +143 -0
  954. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  955. package/out/zero-client/src/client/options.d.ts +70 -10
  956. package/out/zero-client/src/client/options.d.ts.map +1 -1
  957. package/out/zero-client/src/client/options.js +11 -0
  958. package/out/zero-client/src/client/options.js.map +1 -0
  959. package/out/zero-client/src/client/query-manager.d.ts +9 -2
  960. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  961. package/out/zero-client/src/client/query-manager.js +377 -0
  962. package/out/zero-client/src/client/query-manager.js.map +1 -0
  963. package/out/zero-client/src/client/reload-error-handler.d.ts +4 -4
  964. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  965. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  966. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  967. package/out/zero-client/src/client/server-option.js +64 -0
  968. package/out/zero-client/src/client/server-option.js.map +1 -0
  969. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  970. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  971. package/out/zero-client/src/client/version.js +5 -0
  972. package/out/zero-client/src/client/version.js.map +1 -0
  973. package/out/zero-client/src/client/zero-poke-handler.d.ts +4 -4
  974. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  975. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  976. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  977. package/out/zero-client/src/client/zero-rep.d.ts +3 -2
  978. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  979. package/out/zero-client/src/client/zero-rep.js +72 -0
  980. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  981. package/out/zero-client/src/client/zero.d.ts +119 -28
  982. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  983. package/out/zero-client/src/client/zero.js +1800 -0
  984. package/out/zero-client/src/client/zero.js.map +1 -0
  985. package/out/zero-client/src/mod.d.ts +23 -20
  986. package/out/zero-client/src/mod.d.ts.map +1 -1
  987. package/out/zero-client/src/types/query-result.d.ts +5 -4
  988. package/out/zero-client/src/types/query-result.d.ts.map +1 -1
  989. package/out/zero-client/src/util/nanoid.js +21 -0
  990. package/out/zero-client/src/util/nanoid.js.map +1 -0
  991. package/out/zero-client/src/util/socket.js +7 -0
  992. package/out/zero-client/src/util/socket.js.map +1 -0
  993. package/out/zero-events/src/status.d.ts +1 -1
  994. package/out/zero-events/src/status.d.ts.map +1 -1
  995. package/out/zero-protocol/src/analyze-query-result.d.ts +238 -1
  996. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  997. package/out/zero-protocol/src/analyze-query-result.js +159 -24
  998. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  999. package/out/zero-protocol/src/application-error.d.ts +2 -8
  1000. package/out/zero-protocol/src/application-error.d.ts.map +1 -1
  1001. package/out/zero-protocol/src/application-error.js +35 -34
  1002. package/out/zero-protocol/src/application-error.js.map +1 -1
  1003. package/out/zero-protocol/src/ast.d.ts +2 -2
  1004. package/out/zero-protocol/src/ast.js +296 -277
  1005. package/out/zero-protocol/src/ast.js.map +1 -1
  1006. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  1007. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  1008. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  1009. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  1010. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  1011. package/out/zero-protocol/src/client-schema.js +40 -26
  1012. package/out/zero-protocol/src/client-schema.js.map +1 -1
  1013. package/out/zero-protocol/src/close-connection.js +11 -18
  1014. package/out/zero-protocol/src/close-connection.js.map +1 -1
  1015. package/out/zero-protocol/src/connect.d.ts +4 -4
  1016. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  1017. package/out/zero-protocol/src/connect.js +50 -51
  1018. package/out/zero-protocol/src/connect.js.map +1 -1
  1019. package/out/zero-protocol/src/custom-queries.d.ts +4 -4
  1020. package/out/zero-protocol/src/custom-queries.js +61 -39
  1021. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  1022. package/out/zero-protocol/src/data.js +9 -4
  1023. package/out/zero-protocol/src/data.js.map +1 -1
  1024. package/out/zero-protocol/src/delete-clients.js +16 -9
  1025. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  1026. package/out/zero-protocol/src/down.d.ts +107 -7
  1027. package/out/zero-protocol/src/down.d.ts.map +1 -1
  1028. package/out/zero-protocol/src/down.js +20 -4
  1029. package/out/zero-protocol/src/down.js.map +1 -1
  1030. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  1031. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  1032. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  1033. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  1034. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  1035. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  1036. package/out/zero-protocol/src/error.d.ts +17 -17
  1037. package/out/zero-protocol/src/error.js +151 -89
  1038. package/out/zero-protocol/src/error.js.map +1 -1
  1039. package/out/zero-protocol/src/inspect-down.d.ts +321 -21
  1040. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  1041. package/out/zero-protocol/src/inspect-down.js +72 -54
  1042. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  1043. package/out/zero-protocol/src/inspect-up.d.ts +10 -6
  1044. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  1045. package/out/zero-protocol/src/inspect-up.js +39 -26
  1046. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  1047. package/out/zero-protocol/src/mutation-id.js +9 -5
  1048. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  1049. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  1050. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  1051. package/out/zero-protocol/src/mutations-patch.js +16 -17
  1052. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  1053. package/out/zero-protocol/src/ping.js +9 -4
  1054. package/out/zero-protocol/src/ping.js.map +1 -1
  1055. package/out/zero-protocol/src/poke.js +55 -72
  1056. package/out/zero-protocol/src/poke.js.map +1 -1
  1057. package/out/zero-protocol/src/pong.js +9 -4
  1058. package/out/zero-protocol/src/pong.js.map +1 -1
  1059. package/out/zero-protocol/src/primary-key.js +19 -5
  1060. package/out/zero-protocol/src/primary-key.js.map +1 -1
  1061. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  1062. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  1063. package/out/zero-protocol/src/protocol-version.js +7 -58
  1064. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  1065. package/out/zero-protocol/src/pull.js +26 -19
  1066. package/out/zero-protocol/src/pull.js.map +1 -1
  1067. package/out/zero-protocol/src/push.d.ts +4 -4
  1068. package/out/zero-protocol/src/push.js +179 -176
  1069. package/out/zero-protocol/src/push.js.map +1 -1
  1070. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  1071. package/out/zero-protocol/src/queries-patch.js +29 -22
  1072. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  1073. package/out/zero-protocol/src/query-hash.js +18 -14
  1074. package/out/zero-protocol/src/query-hash.js.map +1 -1
  1075. package/out/zero-protocol/src/row-patch.js +29 -20
  1076. package/out/zero-protocol/src/row-patch.js.map +1 -1
  1077. package/out/zero-protocol/src/up.d.ts +6 -5
  1078. package/out/zero-protocol/src/up.d.ts.map +1 -1
  1079. package/out/zero-protocol/src/up.js +18 -4
  1080. package/out/zero-protocol/src/up.js.map +1 -1
  1081. package/out/zero-protocol/src/version.js +9 -4
  1082. package/out/zero-protocol/src/version.js.map +1 -1
  1083. package/out/zero-react/src/bindings.d.ts +2 -0
  1084. package/out/zero-react/src/bindings.d.ts.map +1 -0
  1085. package/out/zero-react/src/mod.d.ts +2 -13
  1086. package/out/zero-react/src/mod.d.ts.map +1 -1
  1087. package/out/zero-react/src/use-connection-state.d.ts +9 -0
  1088. package/out/zero-react/src/use-connection-state.d.ts.map +1 -0
  1089. package/out/zero-react/src/use-connection-state.js +14 -0
  1090. package/out/zero-react/src/use-connection-state.js.map +1 -0
  1091. package/out/zero-react/src/use-query.d.ts +5 -9
  1092. package/out/zero-react/src/use-query.d.ts.map +1 -1
  1093. package/out/zero-react/src/use-query.js +289 -0
  1094. package/out/zero-react/src/use-query.js.map +1 -0
  1095. package/out/zero-react/src/use-zero-online.d.ts +1 -1
  1096. package/out/zero-react/src/use-zero-online.js +14 -0
  1097. package/out/zero-react/src/use-zero-online.js.map +1 -0
  1098. package/out/zero-react/src/zero-provider.d.ts +19 -10
  1099. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  1100. package/out/zero-react/src/zero-provider.js +77 -0
  1101. package/out/zero-react/src/zero-provider.js.map +1 -0
  1102. package/out/zero-react/src/zero.d.ts +2 -0
  1103. package/out/zero-react/src/zero.d.ts.map +1 -0
  1104. package/out/zero-schema/src/builder/relationship-builder.js +22 -19
  1105. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  1106. package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
  1107. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  1108. package/out/zero-schema/src/builder/schema-builder.js +81 -71
  1109. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  1110. package/out/zero-schema/src/builder/table-builder.js +117 -116
  1111. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  1112. package/out/zero-schema/src/compiled-permissions.d.ts +22 -2
  1113. package/out/zero-schema/src/compiled-permissions.d.ts.map +1 -1
  1114. package/out/zero-schema/src/compiled-permissions.js +24 -19
  1115. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  1116. package/out/zero-schema/src/name-mapper.js +43 -38
  1117. package/out/zero-schema/src/name-mapper.js.map +1 -1
  1118. package/out/zero-schema/src/permissions.d.ts +12 -9
  1119. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  1120. package/out/zero-schema/src/permissions.js +193 -0
  1121. package/out/zero-schema/src/permissions.js.map +1 -0
  1122. package/out/zero-schema/src/schema-config.d.ts +1 -6
  1123. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  1124. package/out/zero-schema/src/schema-config.js +35 -51
  1125. package/out/zero-schema/src/schema-config.js.map +1 -1
  1126. package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
  1127. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  1128. package/out/zero-server/src/adapters/drizzle.js +84 -97
  1129. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  1130. package/out/zero-server/src/adapters/pg.d.ts +8 -2
  1131. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  1132. package/out/zero-server/src/adapters/pg.js +54 -74
  1133. package/out/zero-server/src/adapters/pg.js.map +1 -1
  1134. package/out/zero-server/src/adapters/postgresjs.d.ts +7 -2
  1135. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  1136. package/out/zero-server/src/adapters/postgresjs.js +40 -54
  1137. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  1138. package/out/zero-server/src/custom.d.ts +48 -19
  1139. package/out/zero-server/src/custom.d.ts.map +1 -1
  1140. package/out/zero-server/src/custom.js +278 -106
  1141. package/out/zero-server/src/custom.js.map +1 -1
  1142. package/out/zero-server/src/logging.js +7 -4
  1143. package/out/zero-server/src/logging.js.map +1 -1
  1144. package/out/zero-server/src/mod.d.ts +1 -1
  1145. package/out/zero-server/src/mod.d.ts.map +1 -1
  1146. package/out/zero-server/src/pg-query-executor.d.ts +11 -0
  1147. package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
  1148. package/out/zero-server/src/pg-query-executor.js +20 -0
  1149. package/out/zero-server/src/pg-query-executor.js.map +1 -0
  1150. package/out/zero-server/src/process-mutations.d.ts +13 -13
  1151. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  1152. package/out/zero-server/src/process-mutations.js +328 -272
  1153. package/out/zero-server/src/process-mutations.js.map +1 -1
  1154. package/out/zero-server/src/push-processor.d.ts +5 -3
  1155. package/out/zero-server/src/push-processor.d.ts.map +1 -1
  1156. package/out/zero-server/src/push-processor.js +50 -32
  1157. package/out/zero-server/src/push-processor.js.map +1 -1
  1158. package/out/zero-server/src/queries/process-queries.d.ts +76 -3
  1159. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1160. package/out/zero-server/src/queries/process-queries.js +104 -93
  1161. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1162. package/out/zero-server/src/schema.d.ts +2 -2
  1163. package/out/zero-server/src/schema.d.ts.map +1 -1
  1164. package/out/zero-server/src/schema.js +136 -124
  1165. package/out/zero-server/src/schema.js.map +1 -1
  1166. package/out/zero-server/src/zql-database.d.ts +9 -6
  1167. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1168. package/out/zero-server/src/zql-database.js +56 -51
  1169. package/out/zero-server/src/zql-database.js.map +1 -1
  1170. package/out/zero-solid/src/bindings.d.ts +2 -0
  1171. package/out/zero-solid/src/bindings.d.ts.map +1 -0
  1172. package/out/zero-solid/src/mod.d.ts +1 -9
  1173. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1174. package/out/zero-solid/src/solid-view.d.ts +3 -5
  1175. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1176. package/out/{solid.js → zero-solid/src/solid-view.js} +47 -196
  1177. package/out/zero-solid/src/solid-view.js.map +1 -0
  1178. package/out/zero-solid/src/{use-zero-connection-state.d.ts → use-connection-state.d.ts} +3 -3
  1179. package/out/zero-solid/src/use-connection-state.d.ts.map +1 -0
  1180. package/out/zero-solid/src/use-connection-state.js +17 -0
  1181. package/out/zero-solid/src/use-connection-state.js.map +1 -0
  1182. package/out/zero-solid/src/use-query.d.ts +4 -7
  1183. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1184. package/out/zero-solid/src/use-query.js +92 -0
  1185. package/out/zero-solid/src/use-query.js.map +1 -0
  1186. package/out/zero-solid/src/use-zero-online.d.ts +1 -1
  1187. package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
  1188. package/out/zero-solid/src/use-zero-online.js +15 -0
  1189. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1190. package/out/zero-solid/src/use-zero.d.ts +22 -11
  1191. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1192. package/out/zero-solid/src/use-zero.js +86 -0
  1193. package/out/zero-solid/src/use-zero.js.map +1 -0
  1194. package/out/zero-solid/src/zero.d.ts +2 -0
  1195. package/out/zero-solid/src/zero.d.ts.map +1 -0
  1196. package/out/zero-types/src/default-types.d.ts +38 -0
  1197. package/out/zero-types/src/default-types.d.ts.map +1 -0
  1198. package/out/zero-types/src/format.js +7 -4
  1199. package/out/zero-types/src/format.js.map +1 -1
  1200. package/out/zero-types/src/name-mapper.js +43 -40
  1201. package/out/zero-types/src/name-mapper.js.map +1 -1
  1202. package/out/zero-types/src/schema.d.ts +4 -4
  1203. package/out/zero-types/src/server-schema.d.ts.map +1 -0
  1204. package/out/zql/src/builder/builder.d.ts +10 -2
  1205. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1206. package/out/zql/src/builder/builder.js +474 -427
  1207. package/out/zql/src/builder/builder.js.map +1 -1
  1208. package/out/zql/src/builder/debug-delegate.d.ts +4 -0
  1209. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  1210. package/out/zql/src/builder/debug-delegate.js +68 -47
  1211. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1212. package/out/zql/src/builder/filter.js +132 -138
  1213. package/out/zql/src/builder/filter.js.map +1 -1
  1214. package/out/zql/src/builder/like.js +44 -51
  1215. package/out/zql/src/builder/like.js.map +1 -1
  1216. package/out/zql/src/error.d.ts +5 -0
  1217. package/out/zql/src/error.d.ts.map +1 -1
  1218. package/out/zql/src/error.js +9 -6
  1219. package/out/zql/src/error.js.map +1 -1
  1220. package/out/zql/src/ivm/array-view.d.ts +2 -2
  1221. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  1222. package/out/zql/src/ivm/array-view.js +89 -92
  1223. package/out/zql/src/ivm/array-view.js.map +1 -1
  1224. package/out/zql/src/ivm/constraint.js +74 -127
  1225. package/out/zql/src/ivm/constraint.js.map +1 -1
  1226. package/out/zql/src/ivm/data.d.ts +7 -2
  1227. package/out/zql/src/ivm/data.d.ts.map +1 -1
  1228. package/out/zql/src/ivm/data.js +53 -87
  1229. package/out/zql/src/ivm/data.js.map +1 -1
  1230. package/out/zql/src/ivm/exists.d.ts +6 -4
  1231. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  1232. package/out/zql/src/ivm/exists.js +206 -244
  1233. package/out/zql/src/ivm/exists.js.map +1 -1
  1234. package/out/zql/src/ivm/fan-in.d.ts +5 -3
  1235. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  1236. package/out/zql/src/ivm/fan-in.js +58 -52
  1237. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1238. package/out/zql/src/ivm/fan-out.d.ts +4 -2
  1239. package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
  1240. package/out/zql/src/ivm/fan-out.js +56 -48
  1241. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1242. package/out/zql/src/ivm/filter-operators.d.ts +13 -11
  1243. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  1244. package/out/zql/src/ivm/filter-operators.js +91 -88
  1245. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1246. package/out/zql/src/ivm/filter-push.d.ts +2 -1
  1247. package/out/zql/src/ivm/filter-push.d.ts.map +1 -1
  1248. package/out/zql/src/ivm/filter-push.js +27 -24
  1249. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1250. package/out/zql/src/ivm/filter.d.ts +4 -2
  1251. package/out/zql/src/ivm/filter.d.ts.map +1 -1
  1252. package/out/zql/src/ivm/filter.js +36 -32
  1253. package/out/zql/src/ivm/filter.js.map +1 -1
  1254. package/out/zql/src/ivm/flipped-join.d.ts +1 -2
  1255. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  1256. package/out/zql/src/ivm/flipped-join.js +372 -325
  1257. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1258. package/out/zql/src/ivm/join-utils.d.ts +9 -2
  1259. package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
  1260. package/out/zql/src/ivm/join-utils.js +104 -78
  1261. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1262. package/out/zql/src/ivm/join.d.ts +3 -16
  1263. package/out/zql/src/ivm/join.d.ts.map +1 -1
  1264. package/out/zql/src/ivm/join.js +225 -211
  1265. package/out/zql/src/ivm/join.js.map +1 -1
  1266. package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
  1267. package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
  1268. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1269. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1270. package/out/zql/src/ivm/memory-source.d.ts +9 -8
  1271. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1272. package/out/zql/src/ivm/memory-source.js +484 -491
  1273. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1274. package/out/zql/src/ivm/memory-storage.js +32 -31
  1275. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1276. package/out/zql/src/ivm/operator.d.ts +15 -12
  1277. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  1278. package/out/zql/src/ivm/operator.js +16 -9
  1279. package/out/zql/src/ivm/operator.js.map +1 -1
  1280. package/out/zql/src/ivm/push-accumulated.d.ts +2 -2
  1281. package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
  1282. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1283. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1284. package/out/zql/src/ivm/skip.d.ts +2 -3
  1285. package/out/zql/src/ivm/skip.d.ts.map +1 -1
  1286. package/out/zql/src/ivm/skip.js +95 -106
  1287. package/out/zql/src/ivm/skip.js.map +1 -1
  1288. package/out/zql/src/ivm/source.d.ts +18 -8
  1289. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1290. package/out/zql/src/ivm/stream.d.ts +2 -0
  1291. package/out/zql/src/ivm/stream.d.ts.map +1 -1
  1292. package/out/zql/src/ivm/stream.js +12 -17
  1293. package/out/zql/src/ivm/stream.js.map +1 -1
  1294. package/out/zql/src/ivm/take.d.ts +2 -3
  1295. package/out/zql/src/ivm/take.d.ts.map +1 -1
  1296. package/out/zql/src/ivm/take.js +525 -451
  1297. package/out/zql/src/ivm/take.js.map +1 -1
  1298. package/out/zql/src/ivm/union-fan-in.d.ts +4 -4
  1299. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  1300. package/out/zql/src/ivm/union-fan-in.js +213 -132
  1301. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1302. package/out/zql/src/ivm/union-fan-out.d.ts +2 -3
  1303. package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
  1304. package/out/zql/src/ivm/union-fan-out.js +43 -45
  1305. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1306. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  1307. package/out/zql/src/ivm/view-apply-change.js +247 -217
  1308. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1309. package/out/zql/src/ivm/view.d.ts +3 -2
  1310. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1311. package/out/zql/src/mutate/crud.d.ts +116 -0
  1312. package/out/zql/src/mutate/crud.d.ts.map +1 -0
  1313. package/out/zql/src/mutate/crud.js +41 -0
  1314. package/out/zql/src/mutate/crud.js.map +1 -0
  1315. package/out/zql/src/mutate/custom.d.ts +39 -63
  1316. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1317. package/out/zql/src/mutate/custom.js +12 -8
  1318. package/out/zql/src/mutate/custom.js.map +1 -1
  1319. package/out/zql/src/mutate/mutator-registry.d.ts +112 -0
  1320. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
  1321. package/out/zql/src/mutate/mutator-registry.js +88 -0
  1322. package/out/zql/src/mutate/mutator-registry.js.map +1 -0
  1323. package/out/zql/src/mutate/mutator.d.ts +94 -0
  1324. package/out/zql/src/mutate/mutator.d.ts.map +1 -0
  1325. package/out/zql/src/mutate/mutator.js +34 -0
  1326. package/out/zql/src/mutate/mutator.js.map +1 -0
  1327. package/out/zql/src/planner/planner-builder.d.ts +2 -1
  1328. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  1329. package/out/zql/src/planner/planner-builder.js +239 -148
  1330. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1331. package/out/zql/src/planner/planner-connection.d.ts +14 -15
  1332. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  1333. package/out/zql/src/planner/planner-connection.js +205 -247
  1334. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1335. package/out/zql/src/planner/planner-constraint.js +8 -11
  1336. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1337. package/out/zql/src/planner/planner-debug.d.ts +39 -44
  1338. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1339. package/out/zql/src/planner/planner-debug.js +227 -161
  1340. package/out/zql/src/planner/planner-debug.js.map +1 -1
  1341. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  1342. package/out/zql/src/planner/planner-fan-in.js +157 -159
  1343. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1344. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  1345. package/out/zql/src/planner/planner-fan-out.js +73 -59
  1346. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1347. package/out/zql/src/planner/planner-graph.d.ts +10 -9
  1348. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1349. package/out/zql/src/planner/planner-graph.js +323 -357
  1350. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1351. package/out/zql/src/planner/planner-join.d.ts +7 -3
  1352. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  1353. package/out/zql/src/planner/planner-join.js +239 -322
  1354. package/out/zql/src/planner/planner-join.js.map +1 -1
  1355. package/out/zql/src/planner/planner-node.d.ts +6 -1
  1356. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1357. package/out/zql/src/planner/planner-node.js +8 -2
  1358. package/out/zql/src/planner/planner-node.js.map +1 -1
  1359. package/out/zql/src/planner/planner-source.js +23 -12
  1360. package/out/zql/src/planner/planner-source.js.map +1 -1
  1361. package/out/zql/src/planner/planner-terminus.js +28 -27
  1362. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1363. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1364. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1365. package/out/zql/src/query/complete-ordering.js +71 -0
  1366. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1367. package/out/zql/src/query/create-builder.d.ts +10 -0
  1368. package/out/zql/src/query/create-builder.d.ts.map +1 -0
  1369. package/out/zql/src/query/create-builder.js +32 -0
  1370. package/out/zql/src/query/create-builder.js.map +1 -0
  1371. package/out/zql/src/query/error.js +12 -8
  1372. package/out/zql/src/query/error.js.map +1 -1
  1373. package/out/zql/src/query/escape-like.js +7 -0
  1374. package/out/zql/src/query/escape-like.js.map +1 -0
  1375. package/out/zql/src/query/expression.d.ts +5 -5
  1376. package/out/zql/src/query/expression.d.ts.map +1 -1
  1377. package/out/zql/src/query/expression.js +153 -151
  1378. package/out/zql/src/query/expression.js.map +1 -1
  1379. package/out/zql/src/query/measure-push-operator.d.ts +2 -3
  1380. package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
  1381. package/out/zql/src/query/measure-push-operator.js +39 -35
  1382. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1383. package/out/zql/src/query/metrics-delegate.js +9 -5
  1384. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1385. package/out/zql/src/query/named.d.ts +21 -12
  1386. package/out/zql/src/query/named.d.ts.map +1 -1
  1387. package/out/zql/src/query/named.js +46 -64
  1388. package/out/zql/src/query/named.js.map +1 -1
  1389. package/out/zql/src/query/query-delegate-base.d.ts +120 -0
  1390. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
  1391. package/out/zql/src/query/query-delegate-base.js +250 -0
  1392. package/out/zql/src/query/query-delegate-base.js.map +1 -0
  1393. package/out/zql/src/query/query-delegate.d.ts +27 -4
  1394. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1395. package/out/zql/src/query/query-impl.d.ts +30 -52
  1396. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1397. package/out/zql/src/query/query-impl.js +393 -459
  1398. package/out/zql/src/query/query-impl.js.map +1 -1
  1399. package/out/zql/src/query/query-internals.d.ts +68 -0
  1400. package/out/zql/src/query/query-internals.d.ts.map +1 -0
  1401. package/out/zql/src/query/query-internals.js +11 -0
  1402. package/out/zql/src/query/query-internals.js.map +1 -0
  1403. package/out/zql/src/query/query-registry.d.ts +239 -0
  1404. package/out/zql/src/query/query-registry.d.ts.map +1 -0
  1405. package/out/zql/src/query/query-registry.js +121 -0
  1406. package/out/zql/src/query/query-registry.js.map +1 -0
  1407. package/out/zql/src/query/query.d.ts +65 -242
  1408. package/out/zql/src/query/query.d.ts.map +1 -1
  1409. package/out/zql/src/query/runnable-query-impl.d.ts +22 -0
  1410. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -0
  1411. package/out/zql/src/query/runnable-query-impl.js +60 -0
  1412. package/out/zql/src/query/runnable-query-impl.js.map +1 -0
  1413. package/out/zql/src/query/schema-query.d.ts +7 -0
  1414. package/out/zql/src/query/schema-query.d.ts.map +1 -0
  1415. package/out/zql/src/query/static-query.d.ts +3 -25
  1416. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1417. package/out/zql/src/query/static-query.js +18 -32
  1418. package/out/zql/src/query/static-query.js.map +1 -1
  1419. package/out/zql/src/query/ttl.js +69 -62
  1420. package/out/zql/src/query/ttl.js.map +1 -1
  1421. package/out/zql/src/query/validate-input.d.ts +15 -0
  1422. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1423. package/out/zql/src/query/validate-input.js +24 -0
  1424. package/out/zql/src/query/validate-input.js.map +1 -0
  1425. package/out/zqlite/src/database-storage.d.ts +1 -1
  1426. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1427. package/out/zqlite/src/database-storage.js +99 -102
  1428. package/out/zqlite/src/database-storage.js.map +1 -1
  1429. package/out/zqlite/src/db.d.ts +2 -1
  1430. package/out/zqlite/src/db.d.ts.map +1 -1
  1431. package/out/zqlite/src/db.js +241 -192
  1432. package/out/zqlite/src/db.js.map +1 -1
  1433. package/out/zqlite/src/explain-queries.js +13 -16
  1434. package/out/zqlite/src/explain-queries.js.map +1 -1
  1435. package/out/zqlite/src/internal/sql-inline.d.ts +13 -0
  1436. package/out/zqlite/src/internal/sql-inline.d.ts.map +1 -0
  1437. package/out/zqlite/src/internal/sql-inline.js +45 -0
  1438. package/out/zqlite/src/internal/sql-inline.js.map +1 -0
  1439. package/out/zqlite/src/internal/sql.js +15 -10
  1440. package/out/zqlite/src/internal/sql.js.map +1 -1
  1441. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1442. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1443. package/out/zqlite/src/query-builder.js +172 -143
  1444. package/out/zqlite/src/query-builder.js.map +1 -1
  1445. package/out/zqlite/src/query-delegate.d.ts +5 -19
  1446. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1447. package/out/zqlite/src/query-delegate.js +56 -70
  1448. package/out/zqlite/src/query-delegate.js.map +1 -1
  1449. package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
  1450. package/out/zqlite/src/sqlite-cost-model.js +97 -121
  1451. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1452. package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
  1453. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
  1454. package/out/zqlite/src/sqlite-stat-fanout.js +301 -0
  1455. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
  1456. package/out/zqlite/src/table-source.d.ts +18 -6
  1457. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1458. package/out/zqlite/src/table-source.js +443 -311
  1459. package/out/zqlite/src/table-source.js.map +1 -1
  1460. package/package.json +32 -29
  1461. package/out/chunk-424PT5DM.js +0 -23
  1462. package/out/chunk-424PT5DM.js.map +0 -7
  1463. package/out/chunk-AFADJQ2O.js +0 -1
  1464. package/out/chunk-AFADJQ2O.js.map +0 -7
  1465. package/out/chunk-ASRS2LFV.js.map +0 -7
  1466. package/out/chunk-ECUMGQGC.js.map +0 -7
  1467. package/out/chunk-EZM3XBAB.js.map +0 -7
  1468. package/out/chunk-QZSBDHTA.js +0 -18337
  1469. package/out/chunk-QZSBDHTA.js.map +0 -7
  1470. package/out/chunk-TJFNGO7E.js +0 -4126
  1471. package/out/chunk-TJFNGO7E.js.map +0 -7
  1472. package/out/chunk-VZOYWIRW.js +0 -30
  1473. package/out/chunk-VZOYWIRW.js.map +0 -7
  1474. package/out/chunk-YTVU4GOY.js +0 -372
  1475. package/out/chunk-YTVU4GOY.js.map +0 -7
  1476. package/out/chunk-ZZXMKAAG.js.map +0 -7
  1477. package/out/expo-sqlite.js +0 -11
  1478. package/out/expo-sqlite.js.map +0 -7
  1479. package/out/inspector-IU2HG74I.js +0 -43
  1480. package/out/inspector-IU2HG74I.js.map +0 -7
  1481. package/out/lazy-inspector-OXIFYSSQ.js +0 -574
  1482. package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
  1483. package/out/op-sqlite.js.map +0 -7
  1484. package/out/react-native.js +0 -25
  1485. package/out/react-native.js.map +0 -7
  1486. package/out/react.js +0 -479
  1487. package/out/react.js.map +0 -7
  1488. package/out/shared/src/enum.js +0 -2
  1489. package/out/shared/src/enum.js.map +0 -1
  1490. package/out/shared/src/expand.js +0 -2
  1491. package/out/shared/src/expand.js.map +0 -1
  1492. package/out/shared/src/immutable.js +0 -2
  1493. package/out/shared/src/immutable.js.map +0 -1
  1494. package/out/shared/src/types.js +0 -2
  1495. package/out/shared/src/types.js.map +0 -1
  1496. package/out/shared/src/writable.js +0 -2
  1497. package/out/shared/src/writable.js.map +0 -1
  1498. package/out/solid.js.map +0 -7
  1499. package/out/sqlite.js +0 -15
  1500. package/out/sqlite.js.map +0 -7
  1501. package/out/zero/package.json +0 -194
  1502. package/out/zero/src/server/change-streamer.js +0 -2
  1503. package/out/zero/src/server/change-streamer.js.map +0 -1
  1504. package/out/zero/src/server/main.js +0 -2
  1505. package/out/zero/src/server/main.js.map +0 -1
  1506. package/out/zero/src/server/reaper.js +0 -2
  1507. package/out/zero/src/server/reaper.js.map +0 -1
  1508. package/out/zero/src/server/replicator.js +0 -2
  1509. package/out/zero/src/server/replicator.js.map +0 -1
  1510. package/out/zero/src/server/runner/main.js +0 -2
  1511. package/out/zero/src/server/runner/main.js.map +0 -1
  1512. package/out/zero/src/server/syncer.js +0 -2
  1513. package/out/zero/src/server/syncer.js.map +0 -1
  1514. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1515. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1516. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1517. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1518. package/out/zero-cache/src/services/service.js +0 -2
  1519. package/out/zero-cache/src/services/service.js.map +0 -1
  1520. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1521. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1522. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1523. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1524. package/out/zero-cache/src/types/satisfies.js +0 -2
  1525. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1526. package/out/zero-client/src/client/on-error.d.ts +0 -15
  1527. package/out/zero-client/src/client/on-error.d.ts.map +0 -1
  1528. package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
  1529. package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
  1530. package/out/zero-events/src/index.js +0 -2
  1531. package/out/zero-events/src/index.js.map +0 -1
  1532. package/out/zero-events/src/json.js +0 -2
  1533. package/out/zero-events/src/json.js.map +0 -1
  1534. package/out/zero-events/src/status.js +0 -3
  1535. package/out/zero-events/src/status.js.map +0 -1
  1536. package/out/zero-pg/src/mod.js +0 -6
  1537. package/out/zero-pg/src/mod.js.map +0 -1
  1538. package/out/zero-protocol/src/error-kind.js +0 -3
  1539. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1540. package/out/zero-protocol/src/error-origin.js +0 -3
  1541. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1542. package/out/zero-protocol/src/error-reason.js +0 -3
  1543. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1544. package/out/zero-react/src/components/inspector.d.ts +0 -8
  1545. package/out/zero-react/src/components/inspector.d.ts.map +0 -1
  1546. package/out/zero-react/src/components/mark-icon.d.ts +0 -3
  1547. package/out/zero-react/src/components/mark-icon.d.ts.map +0 -1
  1548. package/out/zero-react/src/components/zero-inspector.d.ts +0 -7
  1549. package/out/zero-react/src/components/zero-inspector.d.ts.map +0 -1
  1550. package/out/zero-react/src/use-zero-connection-state.d.ts +0 -9
  1551. package/out/zero-react/src/use-zero-connection-state.d.ts.map +0 -1
  1552. package/out/zero-schema/src/server-schema.d.ts.map +0 -1
  1553. package/out/zero-schema/src/server-schema.js +0 -2
  1554. package/out/zero-schema/src/server-schema.js.map +0 -1
  1555. package/out/zero-schema/src/table-schema.js +0 -7
  1556. package/out/zero-schema/src/table-schema.js.map +0 -1
  1557. package/out/zero-server/src/mod.js +0 -9
  1558. package/out/zero-server/src/mod.js.map +0 -1
  1559. package/out/zero-server/src/query.d.ts +0 -22
  1560. package/out/zero-server/src/query.d.ts.map +0 -1
  1561. package/out/zero-server/src/query.js +0 -61
  1562. package/out/zero-server/src/query.js.map +0 -1
  1563. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +0 -1
  1564. package/out/zero-types/src/schema-value.js +0 -2
  1565. package/out/zero-types/src/schema-value.js.map +0 -1
  1566. package/out/zero-types/src/schema.js +0 -2
  1567. package/out/zero-types/src/schema.js.map +0 -1
  1568. package/out/zero.js +0 -81
  1569. package/out/zero.js.map +0 -7
  1570. package/out/zql/src/ivm/change.js +0 -2
  1571. package/out/zql/src/ivm/change.js.map +0 -1
  1572. package/out/zql/src/ivm/default-format.js +0 -2
  1573. package/out/zql/src/ivm/default-format.js.map +0 -1
  1574. package/out/zql/src/ivm/schema.js +0 -2
  1575. package/out/zql/src/ivm/schema.js.map +0 -1
  1576. package/out/zql/src/ivm/source.js +0 -2
  1577. package/out/zql/src/ivm/source.js.map +0 -1
  1578. package/out/zql/src/ivm/view.js +0 -2
  1579. package/out/zql/src/ivm/view.js.map +0 -1
  1580. package/out/zql/src/query/query-delegate.js +0 -2
  1581. package/out/zql/src/query/query-delegate.js.map +0 -1
  1582. package/out/zql/src/query/query.js +0 -9
  1583. package/out/zql/src/query/query.js.map +0 -1
  1584. package/out/zql/src/query/typed-view.js +0 -2
  1585. package/out/zql/src/query/typed-view.js.map +0 -1
  1586. package/out/zqlite/src/mod.js +0 -5
  1587. package/out/zqlite/src/mod.js.map +0 -1
  1588. /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"view-syncer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/view-syncer/view-syncer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view-syncer.js","sources":["../../../../../../zero-cache/src/services/view-syncer/view-syncer.ts"],"sourcesContent":["import {trace} from '@opentelemetry/api';\nimport {Lock} from '@rocicorp/lock';\nimport type {LogContext} from '@rocicorp/logger';\nimport {resolver} from '@rocicorp/resolver';\nimport type {JWTPayload} from 'jose';\nimport type {Row} from 'postgres';\nimport {\n manualSpan,\n startAsyncSpan,\n startSpan,\n} from '../../../../otel/src/span.ts';\nimport {version} from '../../../../otel/src/version.ts';\nimport {assert, unreachable} from '../../../../shared/src/asserts.ts';\nimport {stringify} from '../../../../shared/src/bigint-json.ts';\nimport {CustomKeyMap} from '../../../../shared/src/custom-key-map.ts';\nimport {must} from '../../../../shared/src/must.ts';\nimport {randInt} from '../../../../shared/src/rand.ts';\nimport type {AST} from '../../../../zero-protocol/src/ast.ts';\nimport type {ChangeDesiredQueriesMessage} from '../../../../zero-protocol/src/change-desired-queries.ts';\nimport type {\n InitConnectionBody,\n InitConnectionMessage,\n} from '../../../../zero-protocol/src/connect.ts';\nimport type {ErroredQuery} from '../../../../zero-protocol/src/custom-queries.ts';\nimport type {DeleteClientsMessage} from '../../../../zero-protocol/src/delete-clients.ts';\nimport type {Downstream} from '../../../../zero-protocol/src/down.ts';\nimport {ErrorKind} from '../../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../../zero-protocol/src/error-origin.ts';\nimport {\n ProtocolError,\n type TransformFailedBody,\n} from '../../../../zero-protocol/src/error.ts';\nimport type {\n InspectUpBody,\n InspectUpMessage,\n} from '../../../../zero-protocol/src/inspect-up.ts';\nimport {clampTTL, MAX_TTL_MS} from '../../../../zql/src/query/ttl.ts';\nimport {\n transformAndHashQuery,\n type TransformedAndHashed,\n} from '../../auth/read-authorizer.ts';\nimport type {NormalizedZeroConfig} from '../../config/normalize.ts';\nimport type {ZeroConfig} from '../../config/zero-config.ts';\nimport type {CustomQueryTransformer} from '../../custom-queries/transform-query.ts';\nimport type {HeaderOptions} from '../../custom/fetch.ts';\nimport {\n getOrCreateCounter,\n getOrCreateHistogram,\n getOrCreateUpDownCounter,\n} from '../../observability/metrics.ts';\nimport type {InspectorDelegate} from '../../server/inspector-delegate.ts';\nimport {\n getLogLevel,\n ProtocolErrorWithLevel,\n} from '../../types/error-with-level.ts';\nimport type {PostgresDB} from '../../types/pg.ts';\nimport {rowIDString, type RowKey} from '../../types/row-key.ts';\nimport type {ShardID} from '../../types/shards.ts';\nimport type {Source} from '../../types/streams.ts';\nimport {Subscription} from '../../types/subscription.ts';\nimport type {ReplicaState} from '../replicator/replicator.ts';\nimport {ZERO_VERSION_COLUMN_NAME} from '../replicator/schema/replication-state.ts';\nimport type {ActivityBasedService} from '../service.ts';\nimport {\n ClientHandler,\n startPoke,\n type PatchToVersion,\n type PokeHandler,\n type RowPatch,\n} from './client-handler.ts';\nimport {ClientNotFoundError, CVRStore} from './cvr-store.ts';\nimport type {CVRUpdater} from './cvr.ts';\nimport {\n CVRConfigDrivenUpdater,\n CVRQueryDrivenUpdater,\n nextEvictionTime,\n type CVRSnapshot,\n type RowUpdate,\n} from './cvr.ts';\nimport type {DrainCoordinator} from './drain-coordinator.ts';\nimport {handleInspect} from './inspect-handler.ts';\nimport type {PipelineDriver} from './pipeline-driver.ts';\nimport {type RowChange} from './pipeline-driver.ts';\nimport {\n cmpVersions,\n EMPTY_CVR_VERSION,\n versionFromString,\n versionString,\n versionToCookie,\n type ClientQueryRecord,\n type CustomQueryRecord,\n type CVRVersion,\n type InternalQueryRecord,\n type NullableCVRVersion,\n type QueryRecord,\n type RowID,\n} from './schema/types.ts';\nimport {ResetPipelinesSignal} from './snapshotter.ts';\nimport {\n ttlClockAsNumber,\n ttlClockFromNumber,\n type TTLClock,\n} from './ttl-clock.ts';\n\nexport type TokenData = {\n readonly raw: string;\n /** @deprecated */\n readonly decoded: JWTPayload;\n};\n\nexport type SyncContext = {\n readonly clientID: string;\n readonly wsID: string;\n readonly profileID: string | null;\n readonly baseCookie: string | null;\n readonly protocolVersion: number;\n readonly schemaVersion: number | null;\n readonly tokenData: TokenData | undefined;\n readonly httpCookie: string | undefined;\n};\n\nconst tracer = trace.getTracer('view-syncer', version);\n\nconst PROTOCOL_VERSION_ATTR = 'protocol.version';\n\nexport interface ViewSyncer {\n initConnection(\n ctx: SyncContext,\n msg: InitConnectionMessage,\n ): Source<Downstream>;\n\n changeDesiredQueries(\n ctx: SyncContext,\n msg: ChangeDesiredQueriesMessage,\n ): Promise<void>;\n\n deleteClients(ctx: SyncContext, msg: DeleteClientsMessage): Promise<void>;\n inspect(context: SyncContext, msg: InspectUpMessage): Promise<void>;\n}\n\nconst DEFAULT_KEEPALIVE_MS = 5_000;\n\nfunction randomID() {\n return randInt(1, Number.MAX_SAFE_INTEGER).toString(36);\n}\n\ntype SetTimeout = (\n fn: (...args: unknown[]) => void,\n delay?: number,\n) => ReturnType<typeof setTimeout>;\n\n/**\n * We update the ttlClock in flush that writes to the CVR but\n * some flushes do not write to the CVR and in those cases we\n * use a timer to update the ttlClock every minute.\n */\nexport const TTL_CLOCK_INTERVAL = 60_000;\n\n/**\n * This is some extra time we delay the TTL timer to allow for some\n * slack in the timing of the timer. This is to allow multiple evictions\n * to happen in a short period of time without having to wait for the\n * next tick of the timer.\n */\nexport const TTL_TIMER_HYSTERESIS = 50; // ms\n\nexport class ViewSyncerService implements ViewSyncer, ActivityBasedService {\n readonly id: string;\n readonly #shard: ShardID;\n readonly #lc: LogContext;\n readonly #pipelines: PipelineDriver;\n readonly #stateChanges: Subscription<ReplicaState>;\n readonly #drainCoordinator: DrainCoordinator;\n readonly #keepaliveMs: number;\n readonly #slowHydrateThreshold: number;\n readonly #queryConfig: ZeroConfig['query'];\n\n userQueryURL?: string | undefined;\n\n // The ViewSyncerService is only started in response to a connection,\n // so #lastConnectTime is always initialized to now(). This is necessary\n // to handle race conditions in which, e.g. the replica is ready and the\n // CVR is accessed before the first connection sends a request.\n //\n // Note: It is fine to update this variable outside of the lock.\n #lastConnectTime = Date.now();\n\n /**\n * The TTL clock is used to determine the time at which queries are considered\n * expired.\n */\n #ttlClock: TTLClock | undefined;\n\n /**\n * The base time for the TTL clock. This is used to compute the current TTL\n * clock value. The first time a connection is made, this is set to the\n * current time. On subsequent connections, the TTL clock is computed as the\n * difference between the current time and this base time.\n *\n * Every time we write the ttlClock this is update to the current time. That\n * way we can compute how much time has passed since the last time we set the\n * ttlClock. When we set the ttlClock we just increment it by the amount of\n * time that has passed since the last time we set it.\n */\n #ttlClockBase = Date.now();\n\n /**\n * We update the ttlClock every minute to ensure that it is not too much\n * out of sync with the current time.\n */\n #ttlClockInterval: ReturnType<SetTimeout> | 0 = 0;\n\n // Note: It is okay to add/remove clients without acquiring the lock.\n readonly #clients = new Map<string, ClientHandler>();\n\n // Serialize on this lock for:\n // (1) storage or database-dependent operations\n // (2) updating member variables.\n readonly #lock = new Lock();\n readonly #cvrStore: CVRStore;\n readonly #stopped = resolver();\n readonly #initialized = resolver<'initialized'>();\n\n #cvr: CVRSnapshot | undefined;\n #pipelinesSynced = false;\n // DEPRECATED: remove `authData` in favor of forwarding\n // auth and cookie headers directly\n #authData: TokenData | undefined;\n\n #httpCookie: string | undefined;\n\n #expiredQueriesTimer: ReturnType<SetTimeout> | 0 = 0;\n readonly #setTimeout: SetTimeout;\n readonly #customQueryTransformer: CustomQueryTransformer | undefined;\n\n // Track query replacements for thrashing detection\n readonly #queryReplacements = new Map<\n string,\n {count: number; windowStart: number}\n >();\n\n readonly #activeClients = getOrCreateUpDownCounter(\n 'sync',\n 'active-clients',\n 'Number of active sync clients',\n );\n readonly #hydrations = getOrCreateCounter(\n 'sync',\n 'hydration',\n 'Number of query hydrations',\n );\n readonly #hydrationTime = getOrCreateHistogram('sync', 'hydration-time', {\n description: 'Time to hydrate a query.',\n unit: 's',\n });\n readonly #transactionAdvanceTime = getOrCreateHistogram(\n 'sync',\n 'advance-time',\n {\n description:\n 'Time to advance all queries for a given client group after applying a new transaction to the replica.',\n unit: 's',\n },\n );\n readonly #queryTransformations = getOrCreateCounter(\n 'sync',\n 'query.transformations',\n 'Number of query transformations performed',\n );\n readonly #queryTransformationTime = getOrCreateHistogram(\n 'sync',\n 'query.transformation-time',\n {\n description: 'Time to transform custom queries via API server',\n unit: 's',\n },\n );\n readonly #queryTransformationHashChanges = getOrCreateCounter(\n 'sync',\n 'query.transformation-hash-changes',\n 'Number of times query transformation hash changed',\n );\n readonly #queryTransformationNoOps = getOrCreateCounter(\n 'sync',\n 'query.transformation-no-ops',\n 'Number of times query transformation resulted in no-op (hash unchanged)',\n );\n\n readonly #inspectorDelegate: InspectorDelegate;\n\n readonly #config: NormalizedZeroConfig;\n\n constructor(\n config: NormalizedZeroConfig,\n lc: LogContext,\n shard: ShardID,\n taskID: string,\n clientGroupID: string,\n cvrDb: PostgresDB,\n upstreamDb: PostgresDB | undefined,\n pipelineDriver: PipelineDriver,\n versionChanges: Subscription<ReplicaState>,\n drainCoordinator: DrainCoordinator,\n slowHydrateThreshold: number,\n inspectorDelegate: InspectorDelegate,\n customQueryTransformer: CustomQueryTransformer | undefined,\n keepaliveMs = DEFAULT_KEEPALIVE_MS,\n setTimeoutFn: SetTimeout = setTimeout.bind(globalThis),\n ) {\n const queryConfig = config.query?.url ? config.query : config.getQueries;\n this.#config = config;\n this.id = clientGroupID;\n this.#shard = shard;\n this.#queryConfig = queryConfig;\n this.#lc = lc;\n this.#pipelines = pipelineDriver;\n this.#stateChanges = versionChanges;\n this.#drainCoordinator = drainCoordinator;\n this.#keepaliveMs = keepaliveMs;\n this.#slowHydrateThreshold = slowHydrateThreshold;\n this.#inspectorDelegate = inspectorDelegate;\n this.#customQueryTransformer = customQueryTransformer;\n this.#cvrStore = new CVRStore(\n lc,\n cvrDb,\n upstreamDb,\n shard,\n taskID,\n clientGroupID,\n // On failure, cancel the #stateChanges subscription. The run()\n // loop will then await #cvrStore.flushed() which rejects if necessary.\n () => this.#stateChanges.cancel(),\n );\n this.#setTimeout = setTimeoutFn;\n\n // Wait for the first connection to init.\n this.keepalive();\n }\n\n #getHeaderOptions(forwardCookie: boolean): HeaderOptions {\n return {\n apiKey: this.#queryConfig.apiKey,\n token: this.#authData?.raw,\n cookie: forwardCookie ? this.#httpCookie : undefined,\n };\n }\n\n #runInLockWithCVR(\n fn: (lc: LogContext, cvr: CVRSnapshot) => Promise<void> | void,\n ): Promise<void> {\n const rid = randomID();\n this.#lc.debug?.('about to acquire lock for cvr ', rid);\n return this.#lock.withLock(async () => {\n this.#lc.debug?.('acquired lock in #runInLockWithCVR ', rid);\n const lc = this.#lc.withContext('lock', rid);\n if (!this.#stateChanges.active) {\n // view-syncer has been shutdown. this can be a backlog of tasks\n // queued on the lock, or it can be a race condition in which a\n // client connects before the ViewSyncer has been deleted from the\n // ServiceRunner.\n this.#lc.debug?.('state changes are inactive');\n clearTimeout(this.#expiredQueriesTimer);\n throw new ProtocolErrorWithLevel({\n kind: ErrorKind.Rehome,\n message: 'Reconnect required',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n // If all clients have disconnected, cancel all pending work.\n if (await this.#checkForShutdownConditionsInLock()) {\n this.#lc.info?.(`closing clientGroupID=${this.id}`);\n this.#stateChanges.cancel(); // Note: #stateChanges.active becomes false.\n return;\n }\n if (!this.#cvr) {\n this.#lc.debug?.('loading CVR');\n this.#cvr = await this.#cvrStore.load(lc, this.#lastConnectTime);\n this.#ttlClock = this.#cvr.ttlClock;\n this.#ttlClockBase = Date.now();\n } else {\n // Make sure the CVR ttlClock is up to date.\n const now = Date.now();\n this.#cvr = {\n ...this.#cvr,\n ttlClock: this.#getTTLClock(now),\n };\n }\n\n try {\n await fn(lc, this.#cvr);\n } catch (e) {\n // Clear cached state if an error is encountered.\n this.#cvr = undefined;\n throw e;\n }\n });\n }\n\n readyState(): Promise<'initialized' | 'draining'> {\n return Promise.race([\n this.#initialized.promise,\n this.#drainCoordinator.draining,\n ]);\n }\n\n async run(): Promise<void> {\n try {\n // Wait for initialization if we need to process queries.\n // This ensures authData and cvr.clientSchema are available before\n // transforming custom queries (dependency on authData) and building\n // pipelines (dependency on cvr.clientSchema).\n if ((await this.readyState()) === 'draining') {\n this.#lc.debug?.(`draining view-syncer ${this.id} before running`);\n void this.stop();\n }\n for await (const {state} of this.#stateChanges) {\n if (this.#drainCoordinator.shouldDrain()) {\n this.#lc.debug?.(`draining view-syncer ${this.id} (elective)`);\n break;\n }\n assert(state === 'version-ready', 'state should be version-ready'); // This is the only state change used.\n\n await this.#runInLockWithCVR(async (lc, cvr) => {\n const clientSchema = must(\n cvr.clientSchema,\n 'cvr.clientSchema missing after initialization',\n );\n if (!this.#pipelines.initialized()) {\n // On the first version-ready signal, connect to the replica.\n this.#pipelines.init(clientSchema);\n }\n if (\n cvr.replicaVersion !== null &&\n cvr.version.stateVersion !== '00' &&\n this.#pipelines.replicaVersion < cvr.replicaVersion\n ) {\n const message = `Cannot sync from older replica: CVR=${\n cvr.replicaVersion\n }, DB=${this.#pipelines.replicaVersion}`;\n lc.info?.(`resetting CVR: ${message}`);\n throw new ClientNotFoundError(message);\n }\n\n if (this.#pipelinesSynced) {\n const result = await this.#advancePipelines(lc, cvr);\n if (result === 'success') {\n return;\n }\n lc.info?.(`resetting pipelines: ${result.message}`);\n this.#pipelines.reset(clientSchema);\n }\n\n // Advance the snapshot to the current version.\n const version = this.#pipelines.advanceWithoutDiff();\n const cvrVer = versionString(cvr.version);\n\n if (version < cvr.version.stateVersion) {\n lc.debug?.(`replica@${version} is behind cvr@${cvrVer}`);\n return; // Wait for the next advancement.\n }\n\n // stateVersion is at or beyond CVR version for the first time.\n lc.info?.(`init pipelines@${version} (cvr@${cvrVer})`);\n\n await this.#hydrateUnchangedQueries(lc, cvr);\n await this.#syncQueryPipelineSet(lc, cvr);\n this.#pipelinesSynced = true;\n });\n }\n\n // If this view-syncer exited due to an elective or forced drain,\n // set the next drain timeout.\n if (this.#drainCoordinator.shouldDrain()) {\n this.#drainCoordinator.drainNextIn(this.#totalHydrationTimeMs());\n }\n this.#cleanup();\n } catch (e) {\n this.#lc[getLogLevel(e)]?.(\n `stopping view-syncer ${this.id}: ${String(e)}`,\n e,\n );\n this.#cleanup(e);\n } finally {\n // Always wait for the cvrStore to flush, regardless of how the service\n // was stopped.\n await this.#cvrStore\n .flushed(this.#lc)\n .catch(e => this.#lc[getLogLevel(e)]?.(e));\n this.#lc.info?.(`view-syncer ${this.id} finished`);\n this.#stopped.resolve();\n }\n }\n\n // must be called from within #lock\n #removeExpiredQueries = async (\n lc: LogContext,\n cvr: CVRSnapshot,\n ): Promise<void> => {\n if (hasExpiredQueries(cvr)) {\n lc = lc.withContext('method', '#removeExpiredQueries');\n lc.debug?.('Queries have expired');\n // #syncQueryPipelineSet() will remove the expired queries.\n await this.#syncQueryPipelineSet(lc, cvr);\n this.#pipelinesSynced = true;\n }\n\n // Even if we have expired queries, we still need to schedule next eviction\n // since there might be inactivated queries that need to be expired queries\n // in the future.\n this.#scheduleExpireEviction(lc, cvr);\n };\n\n #totalHydrationTimeMs(): number {\n return this.#pipelines.totalHydrationTimeMs();\n }\n\n #keepAliveUntil: number = 0;\n\n /**\n * Guarantees that the ViewSyncer will remain running for at least\n * its configured `keepaliveMs`. This is called when establishing a\n * new connection to ensure that its associated ViewSyncer isn't\n * shutdown before it receives the connection.\n *\n * @return `true` if the ViewSyncer will stay alive, `false` if the\n * ViewSyncer is shutting down.\n */\n keepalive(): boolean {\n if (!this.#stateChanges.active) {\n return false;\n }\n this.#keepAliveUntil = Date.now() + this.#keepaliveMs;\n return true;\n }\n\n // oxlint-disable-next-line no-unused-private-class-members -- False positive, used in #scheduleShutdown\n #shutdownTimer: NodeJS.Timeout | null = null;\n\n #scheduleShutdown(delayMs = 0) {\n this.#shutdownTimer ??= this.#setTimeout(() => {\n this.#shutdownTimer = null;\n\n // All lock tasks check for shutdown so that queued work is immediately\n // canceled when clients disconnect. Queue an empty task to ensure that\n // this check happens.\n void this.#runInLockWithCVR(() => {}).catch(e =>\n // If an error occurs (e.g. ownership change), propagate the error\n // to the main run() loop via the #stateChanges Subscription.\n this.#stateChanges.fail(e),\n );\n }, delayMs);\n }\n\n async #checkForShutdownConditionsInLock(): Promise<boolean> {\n if (this.#clients.size > 0) {\n return false; // common case.\n }\n\n // Keep the view-syncer alive if there are pending rows being flushed.\n // It's better to do this before shutting down since it may take a\n // while, during which new connections may come in.\n await this.#cvrStore.flushed(this.#lc);\n\n if (Date.now() <= this.#keepAliveUntil) {\n this.#scheduleShutdown(this.#keepaliveMs); // check again later\n return false;\n }\n\n // If no clients have connected while waiting for the row flush, shutdown.\n return this.#clients.size === 0;\n }\n\n #deleteClientDueToDisconnect(clientID: string, client: ClientHandler) {\n // Note: It is okay to delete / cleanup clients without acquiring the lock.\n // In fact, it is important to do so in order to guarantee that idle cleanup\n // is performed in a timely manner, regardless of the amount of work\n // queued on the lock.\n const c = this.#clients.get(clientID);\n if (c === client) {\n this.#clients.delete(clientID);\n\n if (this.#clients.size === 0) {\n // It is possible to delete a client before we read the ttl clock from\n // the CVR.\n if (this.#ttlClock !== undefined) {\n this.#updateTTLClockInCVRWithoutLock(this.#lc);\n }\n this.#stopExpireTimer();\n this.#scheduleShutdown();\n }\n }\n }\n\n #stopExpireTimer() {\n this.#lc.debug?.('Stopping expired queries timer');\n clearTimeout(this.#expiredQueriesTimer);\n this.#expiredQueriesTimer = 0;\n }\n\n initConnection(\n ctx: SyncContext,\n initConnectionMessage: InitConnectionMessage,\n ): Source<Downstream> {\n this.#lc.debug?.('viewSyncer.initConnection');\n return startSpan(tracer, 'vs.initConnection', () => {\n const {\n clientID,\n profileID,\n wsID,\n baseCookie,\n schemaVersion,\n tokenData,\n httpCookie,\n protocolVersion,\n } = ctx;\n this.#authData = pickToken(this.#lc, this.#authData, tokenData);\n this.#lc.debug?.(\n `Picked auth token: ${JSON.stringify(this.#authData?.decoded)}`,\n );\n this.#httpCookie = httpCookie;\n\n // Handle custom query URL\n const [, {userQueryURL}] = initConnectionMessage;\n if (this.userQueryURL === undefined) {\n // First client in the group - store its parameters\n this.userQueryURL = userQueryURL;\n } else {\n // Validate that subsequent clients have compatible parameters\n if (this.userQueryURL !== userQueryURL) {\n this.#lc.warn?.(\n 'Client provided different query parameters than client group',\n {\n clientID,\n clientURL: userQueryURL,\n clientGroupURL: this.userQueryURL,\n },\n );\n }\n }\n\n const lc = this.#lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID);\n\n // Setup the downstream connection.\n const downstream = Subscription.create<Downstream>({\n cleanup: (_, err) => {\n err\n ? lc[getLogLevel(err)]?.(`client closed with error`, err)\n : lc.info?.('client closed');\n this.#deleteClientDueToDisconnect(clientID, newClient);\n this.#activeClients.add(-1, {\n [PROTOCOL_VERSION_ATTR]: protocolVersion,\n });\n },\n });\n this.#activeClients.add(1, {\n [PROTOCOL_VERSION_ATTR]: protocolVersion,\n });\n\n if (this.#clients.size === 0) {\n // First connection to this ViewSyncerService.\n\n // initConnection must be synchronous so that the downstream\n // subscription is returned immediately.\n const now = Date.now();\n this.#ttlClockBase = now;\n }\n\n const newClient = new ClientHandler(\n lc,\n this.id,\n clientID,\n wsID,\n this.#shard,\n baseCookie,\n schemaVersion,\n downstream,\n );\n this.#clients.get(clientID)?.close(`replaced by wsID: ${wsID}`);\n this.#clients.set(clientID, newClient);\n\n // Note: initConnection() must be synchronous so that `downstream` is\n // immediately returned to the caller (connection.ts). This ensures\n // that if the connection is subsequently closed, the `downstream`\n // subscription can be properly canceled even if #runInLockForClient()\n // has not had a chance to run.\n void this.#runInLockForClient(\n ctx,\n initConnectionMessage,\n async (lc, clientID, msg: InitConnectionBody, cvr) => {\n if (cvr.clientSchema === null && !msg.clientSchema) {\n throw new ProtocolErrorWithLevel({\n kind: ErrorKind.InvalidConnectionRequest,\n message:\n 'The initConnection message for a new client group must include client schema.',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n await this.#handleConfigUpdate(\n lc,\n clientID,\n msg,\n cvr,\n // Until the profileID is required in the URL, default it to\n // `cg${clientGroupID}`, as is done in the schema migration.\n // As clients update to the zero version with the profileID logic,\n // the value will be correspondingly in the CVR db.\n profileID ?? `cg${this.id}`,\n );\n // this.#authData and cvr (in particular cvr.clientSchema) have been\n // initialized, signal the run loop to run.\n this.#initialized.resolve('initialized');\n },\n newClient,\n ).catch(e => newClient.fail(e));\n\n return downstream;\n });\n }\n\n async changeDesiredQueries(\n ctx: SyncContext,\n msg: ChangeDesiredQueriesMessage,\n ): Promise<void> {\n await this.#runInLockForClient(ctx, msg, this.#handleConfigUpdate);\n }\n\n async deleteClients(\n ctx: SyncContext,\n msg: DeleteClientsMessage,\n ): Promise<void> {\n await this.#runInLockForClient(\n ctx,\n [msg[0], {deleted: msg[1]}],\n this.#handleConfigUpdate,\n );\n }\n\n #getTTLClock(now: number): TTLClock {\n // We will update ttlClock with delta from the ttlClockBase to the current time.\n const delta = now - this.#ttlClockBase;\n assert(this.#ttlClock !== undefined, 'ttlClock should be defined');\n const ttlClock = ttlClockFromNumber(\n ttlClockAsNumber(this.#ttlClock) + delta,\n );\n assert(\n ttlClockAsNumber(ttlClock) <= now,\n 'ttlClock should be less than or equal to now',\n );\n this.#ttlClock = ttlClock;\n this.#ttlClockBase = now;\n return ttlClock as TTLClock;\n }\n\n async #flushUpdater(\n lc: LogContext,\n updater: CVRUpdater,\n ): Promise<CVRSnapshot> {\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n const {cvr, flushed} = await updater.flush(\n lc,\n this.#lastConnectTime,\n now,\n ttlClock,\n );\n\n if (flushed) {\n // If the CVR was flushed, we restart the ttlClock interval.\n this.#startTTLClockInterval(lc);\n }\n\n return cvr;\n }\n\n #startTTLClockInterval(lc: LogContext): void {\n this.#stopTTLClockInterval();\n this.#ttlClockInterval = this.#setTimeout(() => {\n this.#updateTTLClockInCVRWithoutLock(lc);\n this.#startTTLClockInterval(lc);\n }, TTL_CLOCK_INTERVAL);\n }\n\n #stopTTLClockInterval(): void {\n clearTimeout(this.#ttlClockInterval);\n this.#ttlClockInterval = 0;\n }\n\n #updateTTLClockInCVRWithoutLock(lc: LogContext): void {\n lc.debug?.('Syncing ttlClock');\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n this.#cvrStore.updateTTLClock(ttlClock, now).catch(e => {\n lc.error?.('failed to update TTL clock', e);\n });\n }\n\n async #updateCVRConfig(\n lc: LogContext,\n cvr: CVRSnapshot,\n clientID: string,\n fn: (updater: CVRConfigDrivenUpdater) => PatchToVersion[],\n ): Promise<CVRSnapshot> {\n const updater = new CVRConfigDrivenUpdater(\n this.#cvrStore,\n cvr,\n this.#shard,\n );\n updater.ensureClient(clientID);\n const patches = fn(updater);\n\n this.#cvr = await this.#flushUpdater(lc, updater);\n\n if (cmpVersions(cvr.version, this.#cvr.version) < 0) {\n // Send pokes to catch up clients that are up to date.\n // (Clients that are behind the cvr.version need to be caught up in\n // #syncQueryPipelineSet(), as row data may be needed for catchup)\n const newCVR = this.#cvr;\n const pokers = startPoke(this.#getClients(cvr.version), newCVR.version);\n for (const patch of patches) {\n await pokers.addPatch(patch);\n }\n await pokers.end(newCVR.version);\n }\n\n if (this.#pipelinesSynced) {\n await this.#syncQueryPipelineSet(lc, this.#cvr);\n }\n\n return this.#cvr;\n }\n\n /**\n * Runs the given `fn` to process the `msg` from within the `#lock`,\n * optionally adding the `newClient` if supplied.\n */\n #runInLockForClient<B, M extends [cmd: string, B] = [string, B]>(\n ctx: SyncContext,\n msg: M,\n fn: (\n lc: LogContext,\n clientID: string,\n body: B,\n cvr: CVRSnapshot,\n ) => Promise<void>,\n newClient?: ClientHandler,\n ): Promise<void> {\n this.#lc.debug?.('viewSyncer.#runInLockForClient');\n const {clientID, wsID} = ctx;\n const [cmd, body] = msg;\n\n if (newClient || !this.#clients.has(clientID)) {\n this.#lastConnectTime = Date.now();\n }\n\n return startAsyncSpan(\n tracer,\n `vs.#runInLockForClient(${cmd})`,\n async () => {\n let client: ClientHandler | undefined;\n try {\n await this.#runInLockWithCVR((lc, cvr) => {\n lc = lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID)\n .withContext('cmd', cmd);\n lc.debug?.('acquired lock for cvr');\n\n client = this.#clients.get(clientID);\n if (client?.wsID !== wsID) {\n lc.debug?.('mismatched wsID', client?.wsID, wsID);\n // Only respond to messages of the currently connected client.\n // Connections may have been drained or dropped due to an error.\n return;\n }\n\n if (newClient) {\n assert(\n newClient === client,\n 'newClient must match existing client',\n );\n checkClientAndCVRVersions(client.version(), cvr.version);\n } else if (!this.#clients.has(clientID)) {\n lc.warn?.(`Processing ${cmd} before initConnection was received`);\n }\n\n lc.debug?.(cmd, body);\n return fn(lc, clientID, body, cvr);\n });\n } catch (e) {\n const lc = this.#lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID)\n .withContext('cmd', cmd);\n lc[getLogLevel(e)]?.(`closing connection with error`, e);\n if (client) {\n // Ideally, propagate the exception to the client's downstream subscription ...\n client.fail(e);\n } else {\n // unless the exception happened before the client could be looked up.\n throw e;\n }\n }\n },\n );\n }\n\n #getClients(atVersion?: CVRVersion): ClientHandler[] {\n const clients = [...this.#clients.values()];\n return atVersion\n ? clients.filter(\n c => cmpVersions(c.version() ?? EMPTY_CVR_VERSION, atVersion) === 0,\n )\n : clients;\n }\n\n // Must be called from within #lock.\n readonly #handleConfigUpdate = (\n lc: LogContext,\n clientID: string,\n\n {\n clientSchema,\n deleted,\n desiredQueriesPatch,\n activeClients,\n }: Partial<InitConnectionBody>,\n cvr: CVRSnapshot,\n profileID?: string,\n ) =>\n startAsyncSpan(tracer, 'vs.#patchQueries', async () => {\n const deletedClientIDs: string[] = [];\n const deletedClientGroupIDs: string[] = [];\n\n cvr = await this.#updateCVRConfig(lc, cvr, clientID, updater => {\n const {ttlClock} = cvr;\n const patches: PatchToVersion[] = [];\n\n if (clientSchema) {\n updater.setClientSchema(lc, clientSchema);\n }\n if (profileID) {\n updater.setProfileID(lc, profileID);\n }\n\n // Apply requested patches.\n lc.debug?.(`applying ${desiredQueriesPatch?.length} query patches`);\n if (desiredQueriesPatch?.length) {\n for (const patch of desiredQueriesPatch) {\n switch (patch.op) {\n case 'put':\n patches.push(...updater.putDesiredQueries(clientID, [patch]));\n break;\n case 'del':\n patches.push(\n ...updater.markDesiredQueriesAsInactive(\n clientID,\n [patch.hash],\n ttlClock,\n ),\n );\n break;\n case 'clear':\n patches.push(...updater.clearDesiredQueries(clientID));\n break;\n }\n }\n }\n\n const clientIDsToDelete: Set<string> = new Set();\n\n if (activeClients) {\n // We find all the clients in this client group that are not active.\n const allClientIDs = Object.keys(cvr.clients);\n const activeClientsSet = new Set(activeClients);\n for (const id of allClientIDs) {\n if (!activeClientsSet.has(id)) {\n clientIDsToDelete.add(id);\n }\n }\n }\n\n if (deleted?.clientIDs?.length) {\n for (const cid of deleted.clientIDs) {\n assert(cid !== clientID, 'cannot delete self');\n clientIDsToDelete.add(cid);\n }\n }\n\n for (const cid of clientIDsToDelete) {\n const patchesDueToClient = updater.deleteClient(cid, ttlClock);\n patches.push(...patchesDueToClient);\n deletedClientIDs.push(cid);\n }\n\n if (deleted?.clientGroupIDs?.length) {\n lc.debug?.(\n `ignoring ${deleted.clientGroupIDs.length} deprecated client group deletes`,\n );\n }\n\n return patches;\n });\n\n // Send 'deleteClients' ack to the clients.\n if (\n (deletedClientIDs.length && deleted?.clientIDs?.length) ||\n deletedClientGroupIDs.length\n ) {\n const clients = this.#getClients();\n await Promise.allSettled(\n clients.map(client =>\n client.sendDeleteClients(\n lc,\n deletedClientIDs,\n deletedClientGroupIDs,\n ),\n ),\n );\n }\n\n this.#scheduleExpireEviction(lc, cvr);\n });\n\n #scheduleExpireEviction(lc: LogContext, cvr: CVRSnapshot): void {\n const {ttlClock} = cvr;\n this.#stopExpireTimer();\n\n // first see if there is any inactive query with a ttl.\n const next = nextEvictionTime(cvr);\n\n if (next === undefined) {\n lc.debug?.('no inactive queries with ttl');\n // no inactive queries with a ttl. Cancel existing timeout if any.\n return;\n }\n\n // It is common for many queries to be evicted close to the same time, so\n // we add a small delay so we can collapse multiple evictions into a\n // single timer. However, don't add the delay if we're already at the\n // maximum timer limit, as that's not about collapsing.\n const delay = Math.max(\n TTL_TIMER_HYSTERESIS,\n Math.min(\n ttlClockAsNumber(next) -\n ttlClockAsNumber(ttlClock) +\n TTL_TIMER_HYSTERESIS,\n MAX_TTL_MS,\n ),\n );\n\n lc.debug?.('Scheduling eviction timer to run in ', delay, 'ms');\n this.#expiredQueriesTimer = this.#setTimeout(() => {\n this.#expiredQueriesTimer = 0;\n this.#runInLockWithCVR((lc, cvr) =>\n this.#removeExpiredQueries(lc, cvr),\n ).catch(e =>\n // If an error occurs (e.g. ownership change), propagate the error\n // to the main run() loop via the #stateChanges Subscription.\n this.#stateChanges.fail(e),\n );\n }, delay);\n }\n\n /**\n * Adds and hydrates pipelines for queries whose results are already\n * recorded in the CVR. Namely:\n *\n * 1. The CVR state version and database version are the same.\n * 2. The transformation hash of the queries equal those in the CVR.\n *\n * Note that by definition, only \"got\" queries can satisfy condition (2),\n * as desired queries do not have a transformation hash.\n *\n * This is an initialization step that sets up pipeline state without\n * the expensive of loading and diffing CVR row state.\n *\n * This must be called from within the #lock.\n */\n async #hydrateUnchangedQueries(lc: LogContext, cvr: CVRSnapshot) {\n assert(this.#pipelines.initialized(), 'pipelines must be initialized');\n\n const dbVersion = this.#pipelines.currentVersion();\n const cvrVersion = cvr.version;\n\n if (cvrVersion.stateVersion !== dbVersion) {\n lc.info?.(\n `CVR (${versionToCookie(cvrVersion)}) is behind db ${dbVersion}`,\n );\n return; // hydration needs to be run with the CVR updater.\n }\n\n const gotQueries = Object.entries(cvr.queries).filter(\n ([_, state]) => state.transformationHash !== undefined,\n );\n\n const customQueries: Map<string, CustomQueryRecord> = new Map();\n const otherQueries: (ClientQueryRecord | InternalQueryRecord)[] = [];\n\n for (const [, query] of gotQueries) {\n if (\n query.type !== 'internal' &&\n Object.values(query.clientState).every(\n ({inactivatedAt}) => inactivatedAt !== undefined,\n )\n ) {\n continue; // No longer desired.\n }\n\n if (query.type === 'custom') {\n customQueries.set(query.id, query);\n } else {\n otherQueries.push(query);\n }\n }\n\n const transformedQueries: TransformedAndHashed[] = [];\n if (customQueries.size > 0 && !this.#customQueryTransformer) {\n lc.warn?.(\n 'Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.',\n );\n }\n if (this.#customQueryTransformer && customQueries.size > 0) {\n // Always transform custom queries, even during initialization,\n // to ensure authorization validation with current auth context.\n const transformedCustomQueries =\n await this.#customQueryTransformer.transform(\n this.#getHeaderOptions(this.#queryConfig.forwardCookies),\n customQueries.values(),\n this.userQueryURL,\n );\n\n this.#processTransformedCustomQueries(\n lc,\n transformedCustomQueries,\n (q: TransformedAndHashed) => transformedQueries.push(q),\n customQueries,\n );\n }\n\n for (const q of otherQueries) {\n const transformed = transformAndHashQuery(\n lc,\n q.id,\n q.ast,\n must(this.#pipelines.currentPermissions()).permissions ?? {\n tables: {},\n },\n this.#authData?.decoded,\n q.type === 'internal',\n );\n if (transformed.transformationHash === q.transformationHash) {\n // only processing unchanged queries here\n transformedQueries.push(transformed);\n }\n }\n\n for (const {\n id: queryID,\n transformationHash,\n transformedAst,\n } of transformedQueries) {\n const timer = new TimeSliceTimer();\n let count = 0;\n await startAsyncSpan(\n tracer,\n 'vs.#hydrateUnchangedQueries.addQuery',\n async span => {\n span.setAttribute('queryHash', queryID);\n span.setAttribute('transformationHash', transformationHash);\n span.setAttribute('table', transformedAst.table);\n for (const change of this.#pipelines.addQuery(\n transformationHash,\n queryID,\n transformedAst,\n await timer.start(),\n )) {\n if (change === 'yield') {\n await timer.yieldProcess('yield in hydrateUnchangedQueries');\n } else {\n count++;\n }\n }\n },\n );\n\n const elapsed = timer.totalElapsed();\n this.#hydrations.add(1);\n this.#hydrationTime.record(elapsed / 1000);\n this.#addQueryMaterializationServerMetric(transformationHash, elapsed);\n lc.debug?.(`hydrated ${count} rows for ${queryID} (${elapsed} ms)`);\n }\n }\n\n #processTransformedCustomQueries(\n lc: LogContext,\n transformedCustomQueries:\n | (TransformedAndHashed | ErroredQuery)[]\n | TransformFailedBody,\n cb: (q: TransformedAndHashed) => void,\n customQueryMap: Map<string, CustomQueryRecord>,\n ): string[] {\n if ('kind' in transformedCustomQueries) {\n this.#sendQueryTransformErrorToClients(\n customQueryMap,\n transformedCustomQueries,\n );\n return transformedCustomQueries.queryIDs;\n }\n\n const appQueryErrors: ErroredQuery[] = [];\n\n for (const q of transformedCustomQueries) {\n if ('error' in q) {\n const errorMessage = `Error transforming custom query ${q.name}: ${q.error}${q.details ? ` ${JSON.stringify(q.details)}` : ''}`;\n lc.warn?.(errorMessage, q);\n appQueryErrors.push(q);\n continue;\n }\n cb(q);\n }\n\n this.#sendQueryTransformErrorToClients(customQueryMap, appQueryErrors);\n return appQueryErrors.map(q => q.id);\n }\n\n #sendQueryTransformErrorToClients(\n customQueryMap: Map<string, CustomQueryRecord>,\n errorOrErrors: ErroredQuery[] | TransformFailedBody,\n ) {\n const getAffectedClientIDs = (queryIDs: string[]): Set<string> => {\n const clientIds = new Set<string>();\n for (const queryID of queryIDs) {\n const q = customQueryMap.get(queryID);\n assert(\n q,\n `got an error for query ${queryID} that does not map back to a custom query`,\n );\n Object.keys(q.clientState).forEach(id => clientIds.add(id));\n }\n return clientIds;\n };\n\n // send the transform failed error to each affected client\n if ('queryIDs' in errorOrErrors) {\n for (const clientId of getAffectedClientIDs(errorOrErrors.queryIDs)) {\n this.#clients\n .get(clientId)\n ?.sendQueryTransformFailedError(errorOrErrors);\n }\n\n return;\n }\n\n // Group and send application errors to each affected client\n const appErrorGroups = new Map<string, ErroredQuery[]>();\n\n for (const err of errorOrErrors) {\n // Application errors need to be grouped by client\n for (const clientId of getAffectedClientIDs([err.id])) {\n const group = appErrorGroups.get(clientId) ?? [];\n group.push(err);\n appErrorGroups.set(clientId, group);\n }\n }\n\n for (const [clientId, errors] of appErrorGroups) {\n this.#clients.get(clientId)?.sendQueryTransformApplicationErrors(errors);\n }\n }\n\n #addQueryMaterializationServerMetric(\n transformationHash: string,\n elapsed: number,\n ) {\n this.#inspectorDelegate.addMetric(\n 'query-materialization-server',\n elapsed,\n transformationHash,\n );\n }\n\n /**\n * Adds and/or removes queries to/from the PipelineDriver to bring it\n * in sync with the set of queries in the CVR (both got and desired).\n * If queries are added, removed, or queried due to a new state version,\n * a new CVR version is created and pokes sent to connected clients.\n *\n * This must be called from within the #lock.\n */\n #syncQueryPipelineSet(lc: LogContext, cvr: CVRSnapshot) {\n return startAsyncSpan(tracer, 'vs.#syncQueryPipelineSet', async () => {\n assert(\n this.#pipelines.initialized(),\n 'pipelines must be initialized (syncQueryPipelineSet)',\n );\n\n const [hydratedQueries, byOriginalHash] = this.#pipelines.addedQueries();\n\n // Convert queries to their transformed ast's and hashes\n const hashToIDs = new Map<string, string[]>();\n\n if (this.#ttlClock === undefined) {\n // Get it from the CVR or initialize it to now.\n this.#ttlClock = cvr.ttlClock;\n }\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n\n // group cvr queries into:\n // 1. custom queries\n // 2. everything else\n // Handle transformation appropriately\n // Then hydrate as `serverQueries`\n const cvrQueryEntires = Object.entries(cvr.queries);\n const customQueries: Map<string, CustomQueryRecord> = new Map();\n const otherQueries: {\n id: string;\n query: ClientQueryRecord | InternalQueryRecord;\n }[] = [];\n const transformedQueries: {\n id: string;\n origQuery: QueryRecord;\n transformed: TransformedAndHashed;\n }[] = [];\n for (const [id, query] of cvrQueryEntires) {\n if (query.type === 'custom') {\n // This should always match, no?\n assert(id === query.id, 'custom query id mismatch');\n customQueries.set(id, query);\n } else {\n otherQueries.push({id, query});\n }\n }\n\n for (const {id, query: origQuery} of otherQueries) {\n // This should always match, no?\n assert(id === origQuery.id, 'query id mismatch');\n const transformed = transformAndHashQuery(\n lc,\n origQuery.id,\n origQuery.ast,\n must(this.#pipelines.currentPermissions()).permissions ?? {\n tables: {},\n },\n this.#authData?.decoded,\n origQuery.type === 'internal',\n );\n transformedQueries.push({\n id,\n origQuery,\n transformed,\n });\n }\n\n if (customQueries.size > 0 && !this.#customQueryTransformer) {\n lc.warn?.(\n 'Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.',\n );\n }\n\n let erroredQueryIDs: string[] | undefined;\n if (this.#customQueryTransformer && customQueries.size > 0) {\n // Always re-transform custom queries on client connection for security.\n // This ensures the user's API server validates authorization with the\n // current auth context.\n const transformStart = performance.now();\n let transformedCustomQueries;\n try {\n transformedCustomQueries =\n await this.#customQueryTransformer.transform(\n this.#getHeaderOptions(true),\n customQueries.values(),\n this.userQueryURL,\n );\n this.#queryTransformations.add(1, {result: 'success'});\n } catch (e) {\n this.#queryTransformations.add(1, {result: 'error'});\n throw e;\n } finally {\n const transformDuration = (performance.now() - transformStart) / 1000;\n this.#queryTransformationTime.record(transformDuration);\n }\n\n // Check if transform failed entirely (HTTP error or server-side failure).\n // This should disconnect the client and keep existing pipelines intact.\n if (\n !Array.isArray(transformedCustomQueries) &&\n transformedCustomQueries.kind === ErrorKind.TransformFailed\n ) {\n // TransformFailedBody indicates an HTTP or infrastructure error.\n // Throw to disconnect the client without modifying pipelines.\n throw new ProtocolErrorWithLevel(\n transformedCustomQueries,\n getLogLevel(transformedCustomQueries.kind),\n );\n }\n\n // Process the transformed queries and track which ones succeeded.\n const successfullyTransformed = new Map<string, TransformedAndHashed>();\n erroredQueryIDs = this.#processTransformedCustomQueries(\n lc,\n transformedCustomQueries,\n (q: TransformedAndHashed) => {\n successfullyTransformed.set(q.id, q);\n transformedQueries.push({\n id: q.id,\n origQuery: must(customQueries.get(q.id)),\n transformed: q,\n });\n },\n customQueries,\n );\n\n // Check for queries whose transformation hash changed and log for debugging.\n // The old pipelines will be automatically removed via unhydrateQueries,\n // and new pipelines will be added via addQueries.\n for (const [queryID, newTransform] of successfullyTransformed) {\n const existingTransforms = byOriginalHash.get(queryID);\n if (existingTransforms && existingTransforms.length > 0) {\n const oldHash = existingTransforms[0].transformationHash;\n const newHash = newTransform.transformationHash;\n\n if (oldHash !== newHash) {\n // Transformation changed - log and check for thrashing.\n // The unhydrateQueries mechanism below will remove the old pipeline,\n // and addQueries will add the new one.\n lc.info?.(\n `Query ${queryID} transformation changed: ${oldHash} -> ${newHash}`,\n );\n this.#checkForThrashing(queryID);\n this.#queryTransformationHashChanges.add(1);\n } else {\n // hash is the same, addQuery will no-op (no re-hydration needed)\n this.#queryTransformationNoOps.add(1);\n }\n }\n // else: new query, will be added normally\n }\n }\n\n const serverQueries = transformedQueries.map(\n ({id, origQuery, transformed}) => {\n const ids = hashToIDs.get(transformed.transformationHash);\n if (ids) {\n ids.push(id);\n } else {\n hashToIDs.set(transformed.transformationHash, [id]);\n }\n return {\n id,\n ast: transformed.transformedAst,\n transformationHash: transformed.transformationHash,\n remove: expired(ttlClock, origQuery),\n };\n },\n );\n\n const addQueries = serverQueries.filter(\n q => !q.remove && !hydratedQueries.has(q.transformationHash),\n );\n const removeQueries: {\n id: string;\n transformationHash: string | undefined;\n }[] = serverQueries.filter(q => q.remove);\n const desiredQueries = new Set(\n serverQueries.filter(q => !q.remove).map(q => q.transformationHash),\n );\n const unhydrateQueries = [...hydratedQueries].filter(\n transformationHash => !desiredQueries.has(transformationHash),\n );\n\n for (const q of addQueries) {\n const orig = cvr.queries[q.id];\n lc.debug?.(\n 'ViewSyncer adding query',\n q.ast,\n 'transformed from',\n orig.type === 'custom' ? orig.name : orig.ast,\n );\n }\n\n // These are queries we need to remove from `desired`, not `got`, because they never transformed.\n if (erroredQueryIDs) {\n // Build a set of transformation hashes that succeeded\n const successfulHashes = new Set(\n transformedQueries.map(\n ({transformed}) => transformed.transformationHash,\n ),\n );\n\n for (const queryID of erroredQueryIDs) {\n // Try to get the last known transformation hash for this query\n let lastKnownHash: string | undefined;\n\n // Check if the query exists in the CVR with a transformation hash\n const cvrQuery = cvr.queries[queryID];\n if (cvrQuery?.transformationHash) {\n lastKnownHash = cvrQuery.transformationHash;\n }\n\n // If a successfully transformed query has the same hash, we can't remove it\n // because that would remove the pipeline for the successful query\n const transformationHash =\n lastKnownHash && successfulHashes.has(lastKnownHash)\n ? undefined\n : lastKnownHash;\n\n removeQueries.push({\n id: queryID,\n transformationHash,\n });\n }\n }\n\n if (\n addQueries.length > 0 ||\n removeQueries.length > 0 ||\n unhydrateQueries.length > 0\n ) {\n await this.#addAndRemoveQueries(\n lc,\n cvr,\n addQueries,\n removeQueries,\n unhydrateQueries,\n hashToIDs,\n );\n } else {\n await this.#catchupClients(lc, cvr);\n }\n });\n }\n\n /**\n * Check if a query is being replaced too frequently (thrashing).\n * Logs a warning if the query has been replaced more than 3 times in 60 seconds.\n */\n #checkForThrashing(queryID: string) {\n const THRASH_WINDOW_MS = 60_000; // 60 seconds\n const THRASH_THRESHOLD = 3;\n const now = Date.now();\n\n let record = this.#queryReplacements.get(queryID);\n if (!record) {\n record = {count: 1, windowStart: now};\n this.#queryReplacements.set(queryID, record);\n return;\n }\n\n // If outside the time window, delete the old entry and create a new one\n if (now - record.windowStart > THRASH_WINDOW_MS) {\n this.#queryReplacements.delete(queryID);\n this.#queryReplacements.set(queryID, {count: 1, windowStart: now});\n return;\n }\n\n // Increment count within the window\n record.count++;\n\n if (record.count >= THRASH_THRESHOLD) {\n this.#lc.warn?.(\n `Query thrashing detected for query ${queryID}. ${record.count} replacements in 60s. This may indicate clients with different auth contexts connecting to the same client group.`,\n );\n }\n }\n\n // This must be called from within the #lock.\n #addAndRemoveQueries(\n lc: LogContext,\n cvr: CVRSnapshot,\n addQueries: {id: string; ast: AST; transformationHash: string}[],\n removeQueries: {id: string; transformationHash: string | undefined}[],\n unhydrateQueries: string[],\n hashToIDs: Map<string, string[]>,\n ): Promise<void> {\n return startAsyncSpan(tracer, 'vs.#addAndRemoveQueries', async () => {\n assert(\n addQueries.length > 0 ||\n removeQueries.length > 0 ||\n unhydrateQueries.length > 0,\n 'Must have queries to add or remove',\n );\n const start = performance.now();\n\n const stateVersion = this.#pipelines.currentVersion();\n lc = lc.withContext('stateVersion', stateVersion);\n lc.info?.(`hydrating ${addQueries.length} queries`);\n\n const updater = new CVRQueryDrivenUpdater(\n this.#cvrStore,\n cvr,\n stateVersion,\n this.#pipelines.replicaVersion,\n );\n\n // Note: This kicks off background PG queries for CVR data associated with the\n // executed and removed queries.\n const {newVersion, queryPatches} = updater.trackQueries(\n lc,\n addQueries,\n removeQueries,\n );\n const clients = this.#getClients();\n const pokers = startPoke(\n clients,\n newVersion,\n this.#pipelines.currentSchemaVersions(),\n );\n for (const patch of queryPatches) {\n await pokers.addPatch(patch);\n }\n\n // Removing queries is easy. The pipelines are dropped, and the CVR\n // updater handles the updates and pokes.\n for (const q of removeQueries) {\n if (q.transformationHash) {\n this.#pipelines.removeQuery(q.transformationHash);\n }\n\n // Remove per-query server metrics when query is deleted\n this.#inspectorDelegate.removeQuery(q.id);\n\n // Clean up thrashing detection for removed queries\n this.#queryReplacements.delete(q.id);\n }\n for (const hash of unhydrateQueries) {\n this.#pipelines.removeQuery(hash);\n // Remove per-query server metrics for unhydrated queries\n const ids = hashToIDs.get(hash);\n if (ids) {\n for (const id of ids) {\n this.#inspectorDelegate.removeQuery(id);\n // Clean up thrashing detection for unhydrated queries\n this.#queryReplacements.delete(id);\n }\n }\n }\n\n let totalProcessTime = 0;\n const timer = new TimeSliceTimer();\n const pipelines = this.#pipelines;\n const hydrations = this.#hydrations;\n const hydrationTime = this.#hydrationTime;\n // oxlint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n // yield at the very beginning so that the first time slice\n // is properly processed by the time-slice queue.\n await yieldProcess();\n\n function* generateRowChanges(slowHydrateThreshold: number) {\n for (const q of addQueries) {\n lc = lc\n .withContext('hash', q.id)\n .withContext('transformationHash', q.transformationHash);\n lc.debug?.(`adding pipeline for query`, q.ast);\n\n yield* pipelines.addQuery(\n q.transformationHash,\n q.id,\n q.ast,\n timer.startWithoutYielding(),\n );\n const elapsed = timer.stop();\n totalProcessTime += elapsed;\n\n self.#addQueryMaterializationServerMetric(\n q.transformationHash,\n elapsed,\n );\n\n if (elapsed > slowHydrateThreshold) {\n lc.warn?.('Slow query materialization', elapsed, q.ast);\n }\n manualSpan(tracer, 'vs.addAndConsumeQuery', elapsed, {\n hash: q.id,\n transformationHash: q.transformationHash,\n });\n }\n hydrations.add(1);\n hydrationTime.record(totalProcessTime / 1000);\n }\n // #processChanges does batched de-duping of rows. Wrap all pipelines in\n // a single generator in order to maximize de-duping.\n await this.#processChanges(\n lc,\n timer,\n generateRowChanges(this.#slowHydrateThreshold),\n updater,\n pokers,\n hashToIDs,\n );\n\n for (const patch of await updater.deleteUnreferencedRows(lc)) {\n await pokers.addPatch(patch);\n }\n\n // Commit the changes and update the CVR snapshot.\n this.#cvr = await this.#flushUpdater(lc, updater);\n\n const finalVersion = this.#cvr.version;\n\n // Before ending the poke, catch up clients that were behind the old CVR.\n await this.#catchupClients(\n lc,\n cvr,\n finalVersion,\n addQueries.map(q => q.id),\n pokers,\n );\n\n // Signal clients to commit.\n await pokers.end(finalVersion);\n\n const wallTime = performance.now() - start;\n lc.info?.(\n `finished processing queries (process: ${totalProcessTime} ms, wall: ${wallTime} ms)`,\n );\n });\n }\n\n /**\n * @param cvr The CVR to which clients should be caught up to. This does\n * not necessarily need to be the current CVR.\n * @param current The expected current CVR version. Before performing\n * catchup, the snapshot read will verify that the CVR has not been\n * concurrently modified. Note that this only needs to be done for\n * catchup because it is the only time data from the CVR DB is\n * \"exported\" without being gated by a CVR flush (which provides\n * concurrency protection in all other cases).\n *\n * If unspecified, the version of the `cvr` is used.\n * @param excludeQueryHashes Exclude patches from rows associated with\n * the specified queries.\n * @param usePokers If specified, sends pokes on existing PokeHandlers,\n * in which case the caller is responsible for sending the `pokeEnd`\n * messages. If unspecified, the pokes will be started and ended\n * using the version from the supplied `cvr`.\n */\n // Must be called within #lock\n #catchupClients(\n lc: LogContext,\n cvr: CVRSnapshot,\n current?: CVRVersion,\n excludeQueryHashes: string[] = [],\n usePokers?: PokeHandler,\n ) {\n return startAsyncSpan(tracer, 'vs.#catchupClients', async span => {\n current ??= cvr.version;\n const clients = this.#getClients();\n const pokers =\n usePokers ??\n startPoke(\n clients,\n cvr.version,\n this.#pipelines.currentSchemaVersions(),\n );\n span.setAttribute('numClients', clients.length);\n\n const catchupFrom = clients\n .map(c => c.version())\n .reduce((a, b) => (cmpVersions(a, b) < 0 ? a : b), cvr.version);\n\n // This is an AsyncGenerator which won't execute until awaited.\n const rowPatches = this.#cvrStore.catchupRowPatches(\n lc,\n catchupFrom,\n cvr,\n current,\n excludeQueryHashes,\n );\n\n // This is a plain async function that kicks off immediately.\n const configPatches = this.#cvrStore.catchupConfigPatches(\n lc,\n catchupFrom,\n cvr,\n current,\n );\n\n // await the rowPatches first so that the AsyncGenerator kicks off.\n let rowPatchCount = 0;\n for await (const rows of rowPatches) {\n for (const row of rows) {\n const {schema, table} = row;\n const rowKey = row.rowKey as RowKey;\n const toVersion = versionFromString(row.patchVersion);\n\n const id: RowID = {schema, table, rowKey};\n let patch: RowPatch;\n if (!row.refCounts) {\n patch = {type: 'row', op: 'del', id};\n } else {\n const row = must(\n this.#pipelines.getRow(table, rowKey),\n `Missing row ${table}:${stringify(rowKey)}`,\n );\n const {contents} = contentsAndVersion(row);\n patch = {type: 'row', op: 'put', id, contents};\n }\n const patchToVersion = {patch, toVersion};\n await pokers.addPatch(patchToVersion);\n rowPatchCount++;\n }\n }\n span.setAttribute('rowPatchCount', rowPatchCount);\n if (rowPatchCount) {\n lc.debug?.(`sent ${rowPatchCount} row patches`);\n }\n\n // Then await the config patches which were fetched in parallel.\n for (const patch of await configPatches) {\n await pokers.addPatch(patch);\n }\n\n if (!usePokers) {\n await pokers.end(cvr.version);\n }\n });\n }\n\n #processChanges(\n lc: LogContext,\n timer: TimeSliceTimer,\n changes: Iterable<RowChange | 'yield'>,\n updater: CVRQueryDrivenUpdater,\n pokers: PokeHandler,\n hashToIDs: Map<string, string[]>,\n ) {\n return startAsyncSpan(tracer, 'vs.#processChanges', async () => {\n const start = performance.now();\n\n const rows = new CustomKeyMap<RowID, RowUpdate>(rowIDString);\n let total = 0;\n\n const processBatch = () =>\n startAsyncSpan(tracer, 'processBatch', async () => {\n const wallElapsed = performance.now() - start;\n total += rows.size;\n lc.debug?.(\n `processing ${rows.size} (of ${total}) rows (${wallElapsed} ms)`,\n );\n const patches = await updater.received(lc, rows);\n\n for (const patch of patches) {\n await pokers.addPatch(patch);\n }\n rows.clear();\n });\n\n await startAsyncSpan(tracer, 'loopingChanges', async span => {\n for (const change of changes) {\n if (change === 'yield') {\n await timer.yieldProcess('yield in processChanges');\n continue;\n }\n const {\n type,\n queryHash: transformationHash,\n table,\n rowKey,\n row,\n } = change;\n const queryIDs = must(\n hashToIDs.get(transformationHash),\n 'could not find the original hash for the transformation hash',\n );\n const rowID: RowID = {schema: '', table, rowKey: rowKey as RowKey};\n\n let parsedRow = rows.get(rowID);\n if (!parsedRow) {\n parsedRow = {refCounts: {}};\n rows.set(rowID, parsedRow);\n }\n queryIDs.forEach(hash => (parsedRow.refCounts[hash] ??= 0));\n\n const updateVersion = (row: Row) => {\n // IVM can output multiple versions of a row as it goes through its\n // intermediate stages. Always update the version and contents;\n // the last version will reflect the final state.\n const {version, contents} = contentsAndVersion(row);\n parsedRow.version = version;\n parsedRow.contents = contents;\n };\n switch (type) {\n case 'add':\n updateVersion(row);\n queryIDs.forEach(hash => parsedRow.refCounts[hash]++);\n break;\n case 'edit':\n updateVersion(row);\n // No update to refCounts.\n break;\n case 'remove':\n queryIDs.forEach(hash => parsedRow.refCounts[hash]--);\n break;\n default:\n unreachable(type);\n }\n\n if (rows.size % CURSOR_PAGE_SIZE === 0) {\n await processBatch();\n }\n }\n if (rows.size) {\n await processBatch();\n }\n span.setAttribute('totalRows', total);\n });\n });\n }\n\n /**\n * Advance to the current snapshot of the replica and apply / send\n * changes.\n *\n * Must be called from within the #lock.\n *\n * Returns false if the advancement failed due to a schema change.\n */\n #advancePipelines(\n lc: LogContext,\n cvr: CVRSnapshot,\n ): Promise<'success' | ResetPipelinesSignal> {\n return startAsyncSpan(tracer, 'vs.#advancePipelines', async () => {\n assert(\n this.#pipelines.initialized(),\n 'pipelines must be initialized (advancePipelines',\n );\n const start = performance.now();\n\n const timer = new TimeSliceTimer();\n const {version, numChanges, changes} = this.#pipelines.advance(timer);\n lc = lc.withContext('newVersion', version);\n\n // Probably need a new updater type. CVRAdvancementUpdater?\n const updater = new CVRQueryDrivenUpdater(\n this.#cvrStore,\n cvr,\n version,\n this.#pipelines.replicaVersion,\n );\n // Only poke clients that are at the cvr.version. New clients that\n // are behind need to first be caught up when their initConnection\n // message is processed (and #syncQueryPipelines is called).\n const pokers = startPoke(\n this.#getClients(cvr.version),\n updater.updatedVersion(),\n this.#pipelines.currentSchemaVersions(),\n );\n lc.debug?.(`applying ${numChanges} to advance to ${version}`);\n const hashToIDs = createHashToIDs(cvr);\n\n try {\n await this.#processChanges(\n lc,\n await timer.start(),\n changes,\n updater,\n pokers,\n hashToIDs,\n );\n } catch (e) {\n if (e instanceof ResetPipelinesSignal) {\n await pokers.cancel();\n return e;\n }\n throw e;\n }\n\n // Commit the changes and update the CVR snapshot.\n this.#cvr = await this.#flushUpdater(lc, updater);\n const finalVersion = this.#cvr.version;\n\n // Signal clients to commit.\n await pokers.end(finalVersion);\n\n const elapsed = performance.now() - start;\n lc.info?.(\n `finished processing advancement of ${numChanges} changes (${elapsed} ms)`,\n );\n this.#transactionAdvanceTime.record(elapsed / 1000);\n return 'success';\n });\n }\n\n inspect(context: SyncContext, msg: InspectUpMessage): Promise<void> {\n return this.#runInLockForClient(context, msg, this.#handleInspect);\n }\n\n // oxlint-disable-next-line require-await\n #handleInspect = async (\n lc: LogContext,\n clientID: string,\n body: InspectUpBody,\n cvr: CVRSnapshot,\n ): Promise<void> => {\n const client = must(this.#clients.get(clientID));\n return handleInspect(\n lc,\n body,\n cvr,\n client,\n this.#inspectorDelegate,\n this.id,\n this.#cvrStore,\n this.#config,\n this.#getHeaderOptions(this.#queryConfig.forwardCookies ?? false),\n this.userQueryURL,\n this.#authData,\n );\n };\n\n stop(): Promise<void> {\n this.#lc.info?.('stopping view syncer');\n this.#initialized.reject('shut down before initialization completed');\n this.#stateChanges.cancel();\n return this.#stopped.promise;\n }\n\n #cleanup(err?: unknown) {\n this.#stopTTLClockInterval();\n this.#stopExpireTimer();\n\n this.#pipelines.destroy();\n for (const client of this.#clients.values()) {\n if (err) {\n client.fail(err);\n } else {\n client.close(`closed clientGroupID=${this.id}`);\n }\n }\n }\n\n /**\n * Test helper: Manually mark initialization as complete.\n * This should only be used in tests that don't call initConnection().\n */\n markInitialized() {\n this.#initialized.resolve('initialized');\n }\n}\n\n// Update CVR after every 10000 rows.\nconst CURSOR_PAGE_SIZE = 10000;\n\nfunction createHashToIDs(cvr: CVRSnapshot) {\n const hashToIDs = new Map<string, string[]>();\n for (const {id, transformationHash} of Object.values(cvr.queries)) {\n if (!transformationHash) {\n continue;\n }\n if (hashToIDs.has(transformationHash)) {\n must(hashToIDs.get(transformationHash)).push(id);\n } else {\n hashToIDs.set(transformationHash, [id]);\n }\n }\n return hashToIDs;\n}\n\n// A global Lock acts as a queue to run a single IVM time slice per iteration\n// of the node event loop, thus bounding I/O delay to the duration of a single\n// time slice.\n//\n// Refresher:\n// https://nodejs.org/en/learn/asynchronous-work/event-loop-timers-and-nexttick#phases-overview\n//\n// Note that recursive use of setImmediate() (i.e. calling setImmediate() from\n// within a setImmediate() callback), results in enqueuing the latter\n// callback in the *next* event loop iteration, as documented in:\n// https://nodejs.org/api/timers.html#setimmediatecallback-args\n//\n// This effectively achieves the desired one-per-event-loop-iteration behavior.\nconst timeSliceQueue = new Lock();\n\nfunction yieldProcess() {\n return timeSliceQueue.withLock(() => new Promise(setImmediate));\n}\n\nfunction contentsAndVersion(row: Row) {\n const {[ZERO_VERSION_COLUMN_NAME]: version, ...contents} = row;\n if (typeof version !== 'string' || version.length === 0) {\n throw new Error(`Invalid _0_version in ${stringify(row)}`);\n }\n return {contents, version};\n}\n\nconst NEW_CVR_VERSION = {stateVersion: '00'};\n\nfunction checkClientAndCVRVersions(\n client: NullableCVRVersion,\n cvr: CVRVersion,\n) {\n if (\n cmpVersions(cvr, NEW_CVR_VERSION) === 0 &&\n cmpVersions(client, NEW_CVR_VERSION) > 0\n ) {\n // CVR is empty but client is not.\n throw new ClientNotFoundError('Client not found');\n }\n\n if (cmpVersions(client, cvr) > 0) {\n // Client is ahead of a non-empty CVR.\n throw new ProtocolError({\n kind: ErrorKind.InvalidConnectionRequestBaseCookie,\n message: `CVR is at version ${versionString(cvr)}`,\n origin: ErrorOrigin.ZeroCache,\n });\n }\n}\n\nexport function pickToken(\n lc: LogContext,\n previousToken: TokenData | undefined,\n newToken: TokenData | undefined,\n) {\n if (previousToken === undefined) {\n lc.debug?.(`No previous token, using new token`);\n return newToken;\n }\n\n if (newToken) {\n if (previousToken.decoded.sub !== newToken.decoded.sub) {\n throw new ProtocolError({\n kind: ErrorKind.Unauthorized,\n message:\n 'The user id in the new token does not match the previous token. Client groups are pinned to a single user.',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n\n if (previousToken.decoded.iat === undefined) {\n lc.debug?.(`No issued at time for the existing token, using new token`);\n // No issued at time for the existing token? We take the most recently received token.\n return newToken;\n }\n\n if (newToken.decoded.iat === undefined) {\n throw new ProtocolError({\n kind: ErrorKind.Unauthorized,\n message:\n 'The new token does not have an issued at time but the prior token does. Tokens for a client group must either all have issued at times or all not have issued at times',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n\n // The new token is newer, so we take it.\n if (previousToken.decoded.iat < newToken.decoded.iat) {\n lc.debug?.(`New token is newer, using it`);\n return newToken;\n }\n\n // if the new token is older or the same, we keep the existing token.\n lc.debug?.(`New token is older or the same, using existing token`);\n return previousToken;\n }\n\n // previousToken !== undefined but newToken is undefined\n throw new ProtocolError({\n kind: ErrorKind.Unauthorized,\n message:\n 'No token provided. An unauthenticated client cannot connect to an authenticated client group.',\n origin: ErrorOrigin.ZeroCache,\n });\n}\n\n/**\n * A query must be expired for all clients in order to be considered\n * expired.\n */\nfunction expired(\n ttlClock: TTLClock,\n q: InternalQueryRecord | ClientQueryRecord | CustomQueryRecord,\n): boolean {\n if (q.type === 'internal') {\n return false;\n }\n\n for (const clientState of Object.values(q.clientState)) {\n const {ttl, inactivatedAt} = clientState;\n if (inactivatedAt === undefined) {\n return false;\n }\n\n const clampedTTL = clampTTL(ttl);\n if (\n ttlClockAsNumber(inactivatedAt) + clampedTTL >\n ttlClockAsNumber(ttlClock)\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction hasExpiredQueries(cvr: CVRSnapshot): boolean {\n const {ttlClock} = cvr;\n for (const q of Object.values(cvr.queries)) {\n if (expired(ttlClock, q)) {\n return true;\n }\n }\n return false;\n}\n\nexport class TimeSliceTimer {\n #total = 0;\n #start = 0;\n\n async start() {\n // yield at the very beginning so that the first time slice\n // is properly processed by the time-slice queue.\n await yieldProcess();\n return this.startWithoutYielding();\n }\n\n startWithoutYielding() {\n this.#total = 0;\n this.#startLap();\n return this;\n }\n\n async yieldProcess(_msgForTesting?: string) {\n this.#stopLap();\n await yieldProcess();\n this.#startLap();\n }\n\n #startLap() {\n assert(this.#start === 0, 'already running');\n this.#start = performance.now();\n }\n\n elapsedLap() {\n assert(this.#start !== 0, 'not running');\n return performance.now() - this.#start;\n }\n\n #stopLap() {\n assert(this.#start !== 0, 'not running');\n this.#total += performance.now() - this.#start;\n this.#start = 0;\n }\n\n /** @returns the total elapsed time */\n stop(): number {\n this.#stopLap();\n return this.#total;\n }\n\n /**\n * @returns the elapsed time. This can be called while the Timer is running\n * or after it has been stopped.\n */\n totalElapsed(): number {\n return this.#start === 0\n ? this.#total\n : this.#total + performance.now() - this.#start;\n }\n}\n"],"names":["ErrorKind.Rehome","ErrorOrigin.ZeroCache","version","lc","clientID","ErrorKind.InvalidConnectionRequest","cvr","ErrorKind.TransformFailed","row","ErrorKind.InvalidConnectionRequestBaseCookie","ErrorKind.Unauthorized"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-with-level.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/types/error-with-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAEL,aAAa,EACb,KAAK,SAAS,EACf,MAAM,qCAAqC,CAAC;AAI7C,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAG1B,SAAS,EAAE,SAAS,EACpB,QAAQ,GAAE,QAAkB,EAC5B,OAAO,CAAC,EAAE,YAAY;CAKzB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAEpD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAanE"}
1
+ {"version":3,"file":"error-with-level.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/types/error-with-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAEL,aAAa,EACb,KAAK,SAAS,EACf,MAAM,qCAAqC,CAAC;AAE7C,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAG1B,SAAS,EAAE,SAAS,EACpB,QAAQ,GAAE,QAAiB,EAC3B,OAAO,CAAC,EAAE,YAAY;CAKzB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAMpD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAanE"}
@@ -1,24 +1,33 @@
1
- import { isProtocolError, ProtocolError, } from "../../../zero-protocol/src/error.js";
2
- import { ErrorKind } from "../../../zero-protocol/src/error-kind.js";
3
- import { ErrorOrigin } from "../../../zero-protocol/src/error-origin.js";
4
- export class ProtocolErrorWithLevel extends ProtocolError {
5
- logLevel;
6
- constructor(errorBody, logLevel = 'error', options) {
7
- super(errorBody, options);
8
- this.logLevel = logLevel;
9
- }
1
+ import { getErrorMessage } from "../../../shared/src/error.js";
2
+ import { Internal } from "../../../zero-protocol/src/error-kind-enum.js";
3
+ import { ZeroCache } from "../../../zero-protocol/src/error-origin-enum.js";
4
+ import { ProtocolError, isProtocolError } from "../../../zero-protocol/src/error.js";
5
+ class ProtocolErrorWithLevel extends ProtocolError {
6
+ logLevel;
7
+ constructor(errorBody, logLevel = "warn", options) {
8
+ super(errorBody, options);
9
+ this.logLevel = logLevel;
10
+ }
10
11
  }
11
- export function getLogLevel(error) {
12
- return error instanceof ProtocolErrorWithLevel ? error.logLevel : 'error';
12
+ function getLogLevel(error) {
13
+ return error instanceof ProtocolErrorWithLevel ? error.logLevel : isProtocolError(error) ? "warn" : "error";
13
14
  }
14
- export function wrapWithProtocolError(error) {
15
- if (isProtocolError(error)) {
16
- return error;
17
- }
18
- return new ProtocolError({
19
- kind: ErrorKind.Internal,
20
- message: error instanceof Error ? error.message : String(error),
21
- origin: ErrorOrigin.ZeroCache,
22
- }, { cause: error });
15
+ function wrapWithProtocolError(error) {
16
+ if (isProtocolError(error)) {
17
+ return error;
18
+ }
19
+ return new ProtocolError(
20
+ {
21
+ kind: Internal,
22
+ message: getErrorMessage(error),
23
+ origin: ZeroCache
24
+ },
25
+ { cause: error }
26
+ );
23
27
  }
24
- //# sourceMappingURL=error-with-level.js.map
28
+ export {
29
+ ProtocolErrorWithLevel,
30
+ getLogLevel,
31
+ wrapWithProtocolError
32
+ };
33
+ //# sourceMappingURL=error-with-level.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-with-level.js","sourceRoot":"","sources":["../../../../../zero-cache/src/types/error-with-level.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,aAAa,GAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,0CAA0C,CAAC;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,4CAA4C,CAAC;AAEvE,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAC9C,QAAQ,CAAW;IAE5B,YACE,SAAoB,EACpB,WAAqB,OAAO,EAC5B,OAAsB;QAEtB,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,KAAK,YAAY,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,aAAa,CACtB;QACE,IAAI,EAAE,SAAS,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/D,MAAM,EAAE,WAAW,CAAC,SAAS;KAC9B,EACD,EAAC,KAAK,EAAE,KAAK,EAAC,CACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"error-with-level.js","sources":["../../../../../zero-cache/src/types/error-with-level.ts"],"sourcesContent":["import type {LogLevel} from '@rocicorp/logger';\nimport {getErrorMessage} from '../../../shared/src/error.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../zero-protocol/src/error-origin.ts';\nimport {\n isProtocolError,\n ProtocolError,\n type ErrorBody,\n} from '../../../zero-protocol/src/error.ts';\n\nexport class ProtocolErrorWithLevel extends ProtocolError {\n readonly logLevel: LogLevel;\n\n constructor(\n errorBody: ErrorBody,\n logLevel: LogLevel = 'warn',\n options?: ErrorOptions,\n ) {\n super(errorBody, options);\n this.logLevel = logLevel;\n }\n}\n\nexport function getLogLevel(error: unknown): LogLevel {\n return error instanceof ProtocolErrorWithLevel\n ? error.logLevel\n : isProtocolError(error)\n ? 'warn'\n : 'error';\n}\n\nexport function wrapWithProtocolError(error: unknown): ProtocolError {\n if (isProtocolError(error)) {\n return error;\n }\n\n return new ProtocolError(\n {\n kind: ErrorKind.Internal,\n message: getErrorMessage(error),\n origin: ErrorOrigin.ZeroCache,\n },\n {cause: error},\n );\n}\n"],"names":["ErrorKind.Internal","ErrorOrigin.ZeroCache"],"mappings":";;;;AAUO,MAAM,+BAA+B,cAAc;AAAA,EAC/C;AAAA,EAET,YACE,WACA,WAAqB,QACrB,SACA;AACA,UAAM,WAAW,OAAO;AACxB,SAAK,WAAW;AAAA,EAClB;AACF;AAEO,SAAS,YAAY,OAA0B;AACpD,SAAO,iBAAiB,yBACpB,MAAM,WACN,gBAAgB,KAAK,IACnB,SACA;AACR;AAEO,SAAS,sBAAsB,OAA+B;AACnE,MAAI,gBAAgB,KAAK,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO,IAAI;AAAA,IACT;AAAA,MACE,MAAMA;AAAAA,MACN,SAAS,gBAAgB,KAAK;AAAA,MAC9B,QAAQC;AAAAA,IAAY;AAAA,IAEtB,EAAC,OAAO,MAAA;AAAA,EAAK;AAEjB;"}
@@ -1,15 +1,28 @@
1
- export function serializableSubset(msg) {
2
- const { headers, headersDistinct, httpVersion, method = 'GET', rawHeaders, rawTrailers, trailers, trailersDistinct, url, } = msg;
3
- return {
4
- headers,
5
- headersDistinct,
6
- httpVersion,
7
- method,
8
- rawHeaders,
9
- rawTrailers,
10
- trailers,
11
- trailersDistinct,
12
- url,
13
- };
1
+ function serializableSubset(msg) {
2
+ const {
3
+ headers,
4
+ headersDistinct,
5
+ httpVersion,
6
+ method = "GET",
7
+ rawHeaders,
8
+ rawTrailers,
9
+ trailers,
10
+ trailersDistinct,
11
+ url
12
+ } = msg;
13
+ return {
14
+ headers,
15
+ headersDistinct,
16
+ httpVersion,
17
+ method,
18
+ rawHeaders,
19
+ rawTrailers,
20
+ trailers,
21
+ trailersDistinct,
22
+ url
23
+ };
14
24
  }
15
- //# sourceMappingURL=http.js.map
25
+ export {
26
+ serializableSubset
27
+ };
28
+ //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../../../zero-cache/src/types/http.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,kBAAkB,CAChC,GAA0B;IAE1B,MAAM,EACJ,OAAO,EACP,eAAe,EACf,WAAW,EACX,MAAM,GAAG,KAAK,EACd,UAAU,EACV,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,GAAG,GACJ,GAAG,GAAG,CAAC;IAER,OAAO;QACL,OAAO;QACP,eAAe;QACf,WAAW;QACX,MAAM;QACN,UAAU;QACV,WAAW;QACX,QAAQ;QACR,gBAAgB;QAChB,GAAG;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"http.js","sources":["../../../../../zero-cache/src/types/http.ts"],"sourcesContent":["import type {IncomingMessage} from 'http';\n\n/**\n * Contains the subset of {@link IncomingMessage} fields suitable for\n * passing across processes.\n */\nexport type IncomingMessageSubset = Pick<\n IncomingMessage,\n | 'headers'\n | 'headersDistinct'\n | 'httpVersion'\n | 'method'\n | 'rawHeaders'\n | 'rawTrailers'\n | 'trailers'\n | 'trailersDistinct'\n | 'url'\n>;\n\nexport function serializableSubset(\n msg: IncomingMessageSubset,\n): IncomingMessageSubset {\n const {\n headers,\n headersDistinct,\n httpVersion,\n method = 'GET',\n rawHeaders,\n rawTrailers,\n trailers,\n trailersDistinct,\n url,\n } = msg;\n\n return {\n headers,\n headersDistinct,\n httpVersion,\n method,\n rawHeaders,\n rawTrailers,\n trailers,\n trailersDistinct,\n url,\n };\n}\n"],"names":[],"mappings":"AAmBO,SAAS,mBACd,KACuB;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
@@ -1,38 +1,53 @@
1
1
  import { assert } from "../../../shared/src/asserts.js";
2
2
  import { parseBigInt } from "../../../shared/src/parse-big-int.js";
3
- export function versionToLexi(v) {
4
- assert(v >= 0, 'Negative versions are not supported');
5
- assert(typeof v === 'bigint' ||
6
- (v <= Number.MAX_SAFE_INTEGER && Number.isInteger(v)), `Invalid or unsafe version ${v}`);
7
- const base36Version = BigInt(v).toString(36);
8
- const length = BigInt(base36Version.length - 1).toString(36);
9
- assert(length.length === 1, `Value is too large to be encoded as a LexiVersion: ${v.toString()}`);
10
- return `${length}${base36Version}`;
3
+ function versionToLexi(v) {
4
+ assert(v >= 0, "Negative versions are not supported");
5
+ assert(
6
+ typeof v === "bigint" || v <= Number.MAX_SAFE_INTEGER && Number.isInteger(v),
7
+ `Invalid or unsafe version ${v}`
8
+ );
9
+ const base36Version = BigInt(v).toString(36);
10
+ const length = BigInt(base36Version.length - 1).toString(36);
11
+ assert(
12
+ length.length === 1,
13
+ `Value is too large to be encoded as a LexiVersion: ${v.toString()}`
14
+ );
15
+ return `${length}${base36Version}`;
11
16
  }
12
- export function versionFromLexi(lexiVersion) {
13
- assert(lexiVersion.length >= 2);
14
- const length = lexiVersion.substring(0, 1);
15
- const base36Version = lexiVersion.substring(1);
16
- assert(base36Version.length === parseInt(length, 36) + 1, `Invalid LexiVersion: ${lexiVersion}`);
17
- return parseBigInt(base36Version, 36);
17
+ function versionFromLexi(lexiVersion) {
18
+ assert(lexiVersion.length >= 2);
19
+ const length = lexiVersion.substring(0, 1);
20
+ const base36Version = lexiVersion.substring(1);
21
+ assert(
22
+ base36Version.length === parseInt(length, 36) + 1,
23
+ `Invalid LexiVersion: ${lexiVersion}`
24
+ );
25
+ return parseBigInt(base36Version, 36);
18
26
  }
19
- export function max(...versions) {
20
- let winner = versions[0];
21
- for (let i = 1; i < versions.length; i++) {
22
- const b = versions[i];
23
- winner = winner > b ? winner : b;
24
- }
25
- return winner;
27
+ function max(...versions) {
28
+ let winner = versions[0];
29
+ for (let i = 1; i < versions.length; i++) {
30
+ const b = versions[i];
31
+ winner = winner > b ? winner : b;
32
+ }
33
+ return winner;
26
34
  }
27
- export function min(...versions) {
28
- let winner = versions[0];
29
- for (let i = 1; i < versions.length; i++) {
30
- const b = versions[i];
31
- winner = winner < b ? winner : b;
32
- }
33
- return winner;
35
+ function min(...versions) {
36
+ let winner = versions[0];
37
+ for (let i = 1; i < versions.length; i++) {
38
+ const b = versions[i];
39
+ winner = winner < b ? winner : b;
40
+ }
41
+ return winner;
34
42
  }
35
- export function oneAfter(version) {
36
- return versionToLexi(versionFromLexi(version) + 1n);
43
+ function oneAfter(version) {
44
+ return versionToLexi(versionFromLexi(version) + 1n);
37
45
  }
38
- //# sourceMappingURL=lexi-version.js.map
46
+ export {
47
+ max,
48
+ min,
49
+ oneAfter,
50
+ versionFromLexi,
51
+ versionToLexi
52
+ };
53
+ //# sourceMappingURL=lexi-version.js.map