@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
@@ -0,0 +1,1800 @@
1
+ import { LogContext } from "@rocicorp/logger";
2
+ import { resolver } from "@rocicorp/resolver";
3
+ import "../../../replicache/src/deleted-clients.js";
4
+ import { ReplicacheImpl } from "../../../replicache/src/replicache-impl.js";
5
+ import { dropDatabase } from "../../../replicache/src/persist/collect-idb-databases.js";
6
+ import { assert, unreachable } from "../../../shared/src/asserts.js";
7
+ import { getBrowserGlobal, mustGetBrowserGlobal } from "../../../shared/src/browser-env.js";
8
+ import { getDocumentVisibilityWatcher } from "../../../shared/src/document-visible.js";
9
+ import { getErrorMessage } from "../../../shared/src/error.js";
10
+ import { h64 } from "../../../shared/src/hash.js";
11
+ import { must } from "../../../shared/src/must.js";
12
+ import { navigator as localNavigator } from "../../../shared/src/navigator.js";
13
+ import { promiseRace } from "../../../shared/src/promise-race.js";
14
+ import { emptyFunction } from "../../../shared/src/sentinels.js";
15
+ import { sleepWithAbort, sleep } from "../../../shared/src/sleep.js";
16
+ import { Subscribable } from "../../../shared/src/subscribable.js";
17
+ import { parse } from "../../../shared/src/valita.js";
18
+ import "../../../zero-protocol/src/client-schema.js";
19
+ import { encodeSecProtocols } from "../../../zero-protocol/src/connect.js";
20
+ import { downstreamSchema } from "../../../zero-protocol/src/down.js";
21
+ import { MutationRateLimited, VersionNotSupported, SchemaVersionNotSupported, ClientNotFound, InvalidConnectionRequestLastMutationID, InvalidConnectionRequestBaseCookie } from "../../../zero-protocol/src/error-kind-enum.js";
22
+ import { ProtocolError } from "../../../zero-protocol/src/error.js";
23
+ import { CRUD, Custom } from "../../../zero-protocol/src/mutation-type-enum.js";
24
+ import { PROTOCOL_VERSION } from "../../../zero-protocol/src/protocol-version.js";
25
+ import { CRUD_MUTATION_NAME, mapCRUD } from "../../../zero-protocol/src/push.js";
26
+ import { nullableVersionSchema } from "../../../zero-protocol/src/version.js";
27
+ import { clientSchemaFrom } from "../../../zero-schema/src/builder/schema-builder.js";
28
+ import { clientToServer } from "../../../zero-schema/src/name-mapper.js";
29
+ import { iterateMutators, isMutatorRegistry } from "../../../zql/src/mutate/mutator-registry.js";
30
+ import { createRunnableBuilder } from "../../../zql/src/query/create-builder.js";
31
+ import { isClientMetric } from "../../../zql/src/query/metrics-delegate.js";
32
+ import { addContextToQuery } from "../../../zql/src/query/query-registry.js";
33
+ import "../../../zero-protocol/src/ast.js";
34
+ import { nanoid } from "../util/nanoid.js";
35
+ import { send } from "../util/socket.js";
36
+ import { ActiveClientsManager } from "./active-clients-manager.js";
37
+ import { Internal, ClientClosed, InvalidMessage, CleanClose, AbruptClose, ConnectTimeout, UnexpectedBaseCookie, NoSocketOrigin, Hidden, PullTimeout, PingTimeout } from "./client-error-kind-enum.js";
38
+ import { ConnectionManager, throwIfConnectionError } from "./connection-manager.js";
39
+ import { Connected, Closed, Disconnected, Connecting, Error as Error$1, NeedsAuth } from "./connection-status-enum.js";
40
+ import { ConnectionImpl } from "./connection.js";
41
+ import { ZeroContext } from "./context.js";
42
+ import { makeCRUDMutateBatch, addTableCRUDProperties } from "./crud.js";
43
+ import { DeleteClientsManager } from "./delete-clients-manager.js";
44
+ import { shouldEnableAnalytics } from "./enable-analytics.js";
45
+ import { ClientError, getErrorConnectionTransition, NO_STATUS_TRANSITION, isClientError, isAuthError, isServerError, getBackoffParams } from "./error.js";
46
+ import { toWSString, appendPath } from "./http-string.js";
47
+ import { Inspector } from "./inspector/inspector.js";
48
+ import { IVMSourceBranch } from "./ivm-branch.js";
49
+ import { createLogOptions } from "./log-options.js";
50
+ import { addCustomMutatorsProperties } from "./make-mutate-property.js";
51
+ import { makeReplicacheMutators } from "./make-replicache-mutators.js";
52
+ import { MetricManager, REPORT_INTERVAL_MS, shouldReportConnectError, getLastConnectErrorValue, DID_NOT_CONNECT_VALUE } from "./metrics.js";
53
+ import { MutationTracker } from "./mutation-tracker.js";
54
+ import { MutatorProxy } from "./mutator-proxy.js";
55
+ import { QueryManager } from "./query-manager.js";
56
+ import { reportReloadReason, resetBackoff, reloadWithReason, reloadScheduled } from "./reload-error-handler.js";
57
+ import { getServer } from "./server-option.js";
58
+ import { version } from "./version.js";
59
+ import { PokeHandler } from "./zero-poke-handler.js";
60
+ import { ZeroRep, fromReplicacheAuthToken, toReplicacheAuthToken } from "./zero-rep.js";
61
+ const RUN_LOOP_INTERVAL_MS = 5e3;
62
+ const DEFAULT_PING_TIMEOUT_MS = 5e3;
63
+ const PULL_TIMEOUT_MS = 5e3;
64
+ const DEFAULT_DISCONNECT_HIDDEN_DELAY_MS = 5e3;
65
+ const DEFAULT_DISCONNECT_TIMEOUT_MS = 5 * 60 * 1e3;
66
+ const CONNECT_TIMEOUT_MS = 1e4;
67
+ const CHECK_CONNECTIVITY_ON_ERROR_FREQUENCY = 6;
68
+ const NULL_LAST_MUTATION_ID_SENT = { clientID: "", id: -1 };
69
+ const DEFAULT_QUERY_CHANGE_THROTTLE_MS = 10;
70
+ function convertOnUpdateNeededReason(reason) {
71
+ return { type: reason.type };
72
+ }
73
+ function updateNeededReloadReasonMessage(reason) {
74
+ const { type } = reason;
75
+ let reasonMsg = "";
76
+ switch (type) {
77
+ case "NewClientGroup":
78
+ reasonMsg = "This client could not sync with a newer client. This is probably due to another tab loading a newer incompatible version of the app's code.";
79
+ break;
80
+ case "VersionNotSupported":
81
+ reasonMsg = "The server no longer supports this client's protocol version.";
82
+ break;
83
+ case "SchemaVersionNotSupported":
84
+ reasonMsg = "Client and server schemas incompatible.";
85
+ break;
86
+ default:
87
+ unreachable();
88
+ }
89
+ if (reason.message) {
90
+ reasonMsg += " " + reason.message;
91
+ }
92
+ return reasonMsg;
93
+ }
94
+ const serverAheadReloadReason = `Server reported that client is ahead of server. This probably happened because the server is in development mode and restarted. Currently when this happens, the dev server loses its state and on reconnect sees the client as ahead. If you see this in other cases, it may be a bug in Zero.`;
95
+ function onClientStateNotFoundServerReason(serverErrMsg) {
96
+ return `Server could not find state needed to synchronize this client. ${serverErrMsg}`;
97
+ }
98
+ const ON_CLIENT_STATE_NOT_FOUND_REASON_CLIENT = "The local persistent state needed to synchronize this client has been garbage collected.";
99
+ const CLOSE_CODE_NORMAL = 1e3;
100
+ class Zero {
101
+ version = version;
102
+ #rep;
103
+ #server;
104
+ userID;
105
+ storageKey;
106
+ #lc;
107
+ #logOptions;
108
+ #enableAnalytics;
109
+ #clientSchema;
110
+ #pokeHandler;
111
+ #queryManager;
112
+ #ivmMain;
113
+ #clientToServer;
114
+ #deleteClientsManager;
115
+ #mutationTracker;
116
+ /**
117
+ * The queries we sent when inside the sec-protocol header when establishing a connection.
118
+ * More queries could be registered while we're waiting for the 'connected' message
119
+ * to come back from the server. To understand what queries we need to send
120
+ * to the server, we diff the `initConnectionQueries` with the current set of desired queries.
121
+ *
122
+ * If this is set to `undefined` that means no queries were sent inside the `sec-protocol` header
123
+ * and an `initConnection` message must be sent to the server after receiving the `connected` message.
124
+ */
125
+ #initConnectionQueries;
126
+ /**
127
+ * We try to send the deleted clients and (client groups) as part of the
128
+ * sec-protocol header. If we can't because the header would get too large we
129
+ * keep track of the deleted clients and send them after the connection is
130
+ * established.
131
+ */
132
+ #deletedClients;
133
+ #lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
134
+ #onPong = () => void 0;
135
+ #onlineManager;
136
+ #onUpdateNeeded;
137
+ #onClientStateNotFound;
138
+ // Last cookie used to initiate a connection
139
+ #connectCookie = null;
140
+ // Total number of sockets successfully connected by this client
141
+ #connectedCount = 0;
142
+ // Number of messages received over currently connected socket. Reset
143
+ // on disconnect.
144
+ #messageCount = 0;
145
+ #connectedAt = 0;
146
+ // Reset on successful connection.
147
+ #connectErrorCount = 0;
148
+ #abortPingTimeout = () => {
149
+ };
150
+ /**
151
+ * The timeout in milliseconds for ping operations. Controls both:
152
+ * - How long to wait in idle before sending a ping
153
+ * - How long to wait for a pong response
154
+ *
155
+ * Total time to detect a dead connection is 2 × pingTimeoutMs.
156
+ *
157
+ * The new value will take effect on the next ping cycle.
158
+ */
159
+ pingTimeoutMs;
160
+ #zeroContext;
161
+ #pendingPullsByRequestID = /* @__PURE__ */ new Map();
162
+ #lastMutationIDReceived = 0;
163
+ #socket = void 0;
164
+ #socketResolver = resolver();
165
+ /**
166
+ * Utility promise that resolves when the socket transitions to connected.
167
+ * It rejects if we hit an error or timeout before the connected message.
168
+ * Used by push/pull helpers to queue work until the connection is usable.
169
+ */
170
+ #connectResolver = resolver();
171
+ #closeAbortController = new AbortController();
172
+ #visibilityWatcher;
173
+ #connectionManager;
174
+ #connection;
175
+ #activeClientsManager;
176
+ #inspector;
177
+ #connectStart = void 0;
178
+ // Set on connect attempt if currently undefined.
179
+ // Reset to undefined when
180
+ // 1. client stops trying to connect because it is hidden
181
+ // 2. client encounters a connect error and canary request indicates
182
+ // the client is offline
183
+ // 2. client successfully connects
184
+ #totalToConnectStart = void 0;
185
+ #options;
186
+ /**
187
+ * Query builders for each table in the schema.
188
+ *
189
+ * @deprecated Use {@linkcode createBuilder} to create query builders instead.
190
+ */
191
+ query;
192
+ // TODO: Metrics needs to be rethought entirely as we're not going to
193
+ // send metrics to customer server.
194
+ #metrics;
195
+ // Store as field to allow test subclass to override. Web API doesn't allow
196
+ // overwriting location fields for security reasons.
197
+ #reload = () => getBrowserGlobal("location")?.reload();
198
+ /**
199
+ * Constructs a new Zero client.
200
+ */
201
+ constructor(options) {
202
+ const {
203
+ userID,
204
+ storageKey,
205
+ onOnlineChange,
206
+ onUpdateNeeded,
207
+ onClientStateNotFound,
208
+ hiddenTabDisconnectDelay = DEFAULT_DISCONNECT_HIDDEN_DELAY_MS,
209
+ pingTimeoutMs = DEFAULT_PING_TIMEOUT_MS,
210
+ disconnectTimeoutMs = DEFAULT_DISCONNECT_TIMEOUT_MS,
211
+ schema,
212
+ batchViewUpdates = (applyViewUpdates) => applyViewUpdates(),
213
+ maxRecentQueries = 0,
214
+ slowMaterializeThreshold = 5e3
215
+ } = options;
216
+ if (!userID) {
217
+ throw new ClientError({
218
+ kind: Internal,
219
+ message: "ZeroOptions.userID must not be empty."
220
+ });
221
+ }
222
+ const cacheURL = options.cacheURL ?? options.server;
223
+ const server = getServer(cacheURL);
224
+ this.#enableAnalytics = shouldEnableAnalytics(
225
+ server,
226
+ false
227
+ // Reenable analytics
228
+ );
229
+ let { kvStore = "idb" } = options;
230
+ if (kvStore === "idb") {
231
+ if (!getBrowserGlobal("indexedDB")) {
232
+ console.warn(
233
+ "IndexedDB is not supported in this environment. Falling back to memory storage."
234
+ );
235
+ kvStore = "mem";
236
+ }
237
+ }
238
+ if (hiddenTabDisconnectDelay < 0) {
239
+ throw new ClientError({
240
+ kind: Internal,
241
+ message: "ZeroOptions.hiddenTabDisconnectDelay must not be negative."
242
+ });
243
+ }
244
+ this.pingTimeoutMs = pingTimeoutMs;
245
+ this.#onlineManager = new OnlineManager();
246
+ if (onOnlineChange) {
247
+ this.#onlineManager.subscribe(onOnlineChange);
248
+ }
249
+ this.#options = options;
250
+ this.#logOptions = this.#createLogOptions({
251
+ consoleLogLevel: options.logLevel ?? "warn",
252
+ server: null,
253
+ //server, // Reenable remote logging
254
+ enableAnalytics: this.#enableAnalytics
255
+ });
256
+ const logOptions = this.#logOptions;
257
+ this.#connectionManager = new ConnectionManager({
258
+ disconnectTimeout: disconnectTimeoutMs
259
+ });
260
+ const syncConnectionState = (state) => {
261
+ this.#onlineManager.setOnline(state.name === Connected);
262
+ if (state.name === Closed) {
263
+ this.#queryManager.handleClosed(state.reason);
264
+ }
265
+ };
266
+ syncConnectionState(this.#connectionManager.state);
267
+ this.#connectionManager.subscribe(syncConnectionState);
268
+ const sink = logOptions.logSink;
269
+ const lc = new LogContext(logOptions.logLevel, {}, sink);
270
+ this.#mutationTracker = new MutationTracker(
271
+ lc,
272
+ (upTo) => this.#send(["ackMutationResponses", upTo]),
273
+ (error) => this.#disconnect(lc, error)
274
+ );
275
+ this.#ivmMain = new IVMSourceBranch(schema.tables);
276
+ const { enableLegacyQueries = false } = schema;
277
+ const replicacheMutators = makeReplicacheMutators(
278
+ schema,
279
+ options.mutators,
280
+ this.context,
281
+ lc
282
+ );
283
+ this.storageKey = storageKey ?? "";
284
+ const { clientSchema, hash } = clientSchemaFrom(schema);
285
+ this.#clientSchema = clientSchema;
286
+ const nameKey = JSON.stringify({
287
+ storageKey: this.storageKey,
288
+ mutateUrl: options.mutateURL ?? "",
289
+ queryUrl: options.queryURL ?? options.getQueriesURL ?? ""
290
+ });
291
+ const hashedKey = h64(nameKey).toString(36);
292
+ const replicacheOptions = {
293
+ // The schema stored in IDB is dependent upon both the ClientSchema
294
+ // and the AST schema (i.e. PROTOCOL_VERSION).
295
+ schemaVersion: `${PROTOCOL_VERSION}.${hash}`,
296
+ logLevel: logOptions.logLevel,
297
+ logSinks: [logOptions.logSink],
298
+ mutators: replicacheMutators,
299
+ name: `zero-${userID}-${hashedKey}`,
300
+ pusher: (req, reqID) => this.#pusher(req, reqID),
301
+ puller: (req, reqID) => this.#puller(req, reqID),
302
+ pushDelay: 0,
303
+ requestOptions: {
304
+ maxDelayMs: 0,
305
+ minDelayMs: 0
306
+ },
307
+ licenseKey: "zero-client-static-key",
308
+ kvStore
309
+ };
310
+ this.#zeroContext = new ZeroContext(
311
+ lc,
312
+ this.#ivmMain,
313
+ (ast, ttl, gotCallback) => {
314
+ if (enableLegacyQueries) {
315
+ return this.#queryManager.addLegacy(ast, ttl, gotCallback);
316
+ }
317
+ return emptyFunction;
318
+ },
319
+ (ast, customQueryID, ttl, gotCallback) => this.#queryManager.addCustom(ast, customQueryID, ttl, gotCallback),
320
+ (ast, ttl) => {
321
+ if (enableLegacyQueries) {
322
+ this.#queryManager.updateLegacy(ast, ttl);
323
+ }
324
+ },
325
+ (customQueryID, ttl) => this.#queryManager.updateCustom(customQueryID, ttl),
326
+ () => this.#queryManager.flushBatch(),
327
+ batchViewUpdates,
328
+ this.#addMetric,
329
+ assertValidRunOptions
330
+ );
331
+ this.query = createRunnableBuilder(this.#zeroContext, schema);
332
+ const replicacheImplOptions = {
333
+ enableClientGroupForking: false,
334
+ enableMutationRecovery: false,
335
+ enablePullAndPushInOpen: false,
336
+ // Zero calls push in its connection management code
337
+ onClientsDeleted: (deletedClients) => this.#deleteClientsManager.onClientsDeleted(deletedClients),
338
+ zero: new ZeroRep(
339
+ this.#zeroContext,
340
+ this.#ivmMain,
341
+ options.mutators !== void 0,
342
+ this.#mutationTracker
343
+ )
344
+ };
345
+ const rep = new ReplicacheImpl(replicacheOptions, replicacheImplOptions);
346
+ this.#rep = rep;
347
+ this.#server = server;
348
+ this.userID = userID;
349
+ this.#lc = lc.withContext("clientID", rep.clientID);
350
+ this.#connection = new ConnectionImpl(
351
+ this.#connectionManager,
352
+ this.#lc,
353
+ (auth) => this.#setAuth(auth)
354
+ );
355
+ this.#mutationTracker.setClientIDAndWatch(
356
+ rep.clientID,
357
+ rep.experimentalWatch.bind(rep)
358
+ );
359
+ this.#activeClientsManager = makeActiveClientsManager(
360
+ rep.clientGroupID,
361
+ this.clientID,
362
+ this.#closeAbortController.signal,
363
+ (clientID, clientGroupID) => this.#deleteClientsManager.onClientsDeleted([
364
+ { clientGroupID, clientID }
365
+ ])
366
+ );
367
+ const onUpdateNeededCallback = (reason) => {
368
+ if (onUpdateNeeded) {
369
+ onUpdateNeeded(reason);
370
+ } else {
371
+ reloadWithReason(
372
+ this.#lc,
373
+ this.#reload,
374
+ reason.type,
375
+ updateNeededReloadReasonMessage(reason)
376
+ );
377
+ }
378
+ };
379
+ this.#onUpdateNeeded = onUpdateNeededCallback;
380
+ this.#rep.onUpdateNeeded = (reason) => {
381
+ onUpdateNeededCallback(convertOnUpdateNeededReason(reason));
382
+ };
383
+ const onClientStateNotFoundCallback = onClientStateNotFound ?? ((reason) => {
384
+ reloadWithReason(
385
+ this.#lc,
386
+ this.#reload,
387
+ ClientNotFound,
388
+ reason ?? ON_CLIENT_STATE_NOT_FOUND_REASON_CLIENT
389
+ );
390
+ });
391
+ this.#onClientStateNotFound = onClientStateNotFoundCallback;
392
+ this.#rep.onClientStateNotFound = onClientStateNotFoundCallback;
393
+ const mutatorProxy = new MutatorProxy(
394
+ this.#lc,
395
+ this.#connectionManager,
396
+ this.#mutationTracker
397
+ );
398
+ const { mutators } = options;
399
+ const registeredMutators = new Set(
400
+ isMutatorRegistry(mutators) ? iterateMutators(mutators) : void 0
401
+ );
402
+ const callableMutate = (mr) => {
403
+ if (!registeredMutators.has(mr.mutator)) {
404
+ throw new Error(
405
+ `Mutator "${mr.mutator.mutatorName}" is not registered. Mutators must be registered with the Zero constructor before use.`
406
+ );
407
+ }
408
+ const repMutator = rep.mutate[mr.mutator.mutatorName];
409
+ return mutatorProxy.wrapCustomMutator(
410
+ mr.mutator.mutatorName,
411
+ repMutator
412
+ )(mr.args);
413
+ };
414
+ const mutateBatch = makeCRUDMutateBatch(schema, rep.mutate);
415
+ if (schema.enableLegacyMutators) {
416
+ addTableCRUDProperties(schema, callableMutate, rep.mutate);
417
+ }
418
+ if (mutators && !isMutatorRegistry(mutators)) {
419
+ addCustomMutatorsProperties(
420
+ mutators,
421
+ mutatorProxy,
422
+ callableMutate,
423
+ rep.mutate
424
+ );
425
+ }
426
+ this.mutate = callableMutate;
427
+ this.mutateBatch = mutateBatch;
428
+ this.#queryManager = new QueryManager(
429
+ this.#lc,
430
+ this.#mutationTracker,
431
+ rep.clientID,
432
+ schema.tables,
433
+ (msg) => this.#send(msg),
434
+ rep.experimentalWatch.bind(rep),
435
+ maxRecentQueries,
436
+ options.queryChangeThrottleMs ?? DEFAULT_QUERY_CHANGE_THROTTLE_MS,
437
+ slowMaterializeThreshold,
438
+ (error) => {
439
+ this.#disconnect(lc, error);
440
+ }
441
+ );
442
+ this.#clientToServer = clientToServer(schema.tables);
443
+ this.#deleteClientsManager = new DeleteClientsManager(
444
+ (msg) => this.#send(msg),
445
+ rep.perdag,
446
+ this.#lc,
447
+ this.#rep.clientGroupID,
448
+ rep.clientID
449
+ );
450
+ reportReloadReason(this.#lc);
451
+ this.#metrics = new MetricManager({
452
+ reportIntervalMs: REPORT_INTERVAL_MS,
453
+ host: getBrowserGlobal("location")?.host ?? "",
454
+ source: "client",
455
+ reporter: this.#enableAnalytics ? (allSeries) => this.#reportMetrics(allSeries) : () => Promise.resolve(),
456
+ lc: this.#lc
457
+ });
458
+ this.#metrics.tags.push(`version:${this.version}`);
459
+ this.#pokeHandler = new PokeHandler(
460
+ (poke) => this.#rep.poke(poke),
461
+ () => this.#onPokeError(),
462
+ rep.clientID,
463
+ schema,
464
+ this.#lc,
465
+ this.#mutationTracker
466
+ );
467
+ this.#visibilityWatcher = getDocumentVisibilityWatcher(
468
+ getBrowserGlobal("document"),
469
+ hiddenTabDisconnectDelay,
470
+ this.#closeAbortController.signal
471
+ );
472
+ void this.#runLoop();
473
+ this.#expose();
474
+ }
475
+ #expose() {
476
+ const g = globalThis;
477
+ if (g.__zero === void 0) {
478
+ g.__zero = this;
479
+ } else if (g.__zero instanceof Zero) {
480
+ const prev = g.__zero;
481
+ g.__zero = {
482
+ [prev.clientID]: prev,
483
+ [this.clientID]: this
484
+ };
485
+ } else {
486
+ g.__zero[this.clientID] = this;
487
+ }
488
+ }
489
+ #unexpose() {
490
+ const g = globalThis;
491
+ assert(g.__zero !== void 0, "No global zero instance found");
492
+ if (g.__zero instanceof Zero) {
493
+ assert(
494
+ g.__zero === this,
495
+ "Global zero instance does not match this instance"
496
+ );
497
+ delete g.__zero;
498
+ } else {
499
+ delete g.__zero[this.clientID];
500
+ if (Object.entries(g.__zero).length === 1) {
501
+ g.__zero = Object.values(g.__zero)[0];
502
+ }
503
+ }
504
+ }
505
+ #send(msg) {
506
+ if (this.#socket && this.#connectionManager.is(Connected)) {
507
+ send(this.#socket, msg);
508
+ }
509
+ }
510
+ #createLogOptions(options) {
511
+ return createLogOptions(options);
512
+ }
513
+ /**
514
+ * Preloads data for a query into the cache, without keeping it in memory.
515
+ *
516
+ * This function is useful when you want to populate the cache ahead of time,
517
+ * for example after login, to avoid a flash of loading screen on the next page.
518
+ *
519
+ * Returns an object with two properties:
520
+ * - `complete`: a Promise that resolves when the data is loaded
521
+ * - `cleanup`: a function that can be called to cancel the preload
522
+ *
523
+ * @example
524
+ * ```ts
525
+ * const {complete, cleanup} = zero.preload(userQuery);
526
+ * await complete;
527
+ * // Now the data is cached and can be used immediately
528
+ * ```
529
+ */
530
+ preload(query, options) {
531
+ return this.#zeroContext.preload(
532
+ addContextToQuery(query, this.context),
533
+ options
534
+ );
535
+ }
536
+ /**
537
+ * Executes a query once and returns the results.
538
+ *
539
+ * By default, waits for any pending data to sync before running the query.
540
+ * This ensures fresh results from the server. Use `{type: 'unknown'}` to
541
+ * run immediately with whatever data is available locally.
542
+ *
543
+ * @param query - The query to execute
544
+ * @param runOptions - Options controlling query execution
545
+ * @returns A Promise resolving to the query results
546
+ *
547
+ * @example
548
+ * ```ts
549
+ * // Wait for server sync
550
+ * const users = await zero.run(userQuery);
551
+ *
552
+ * // Run with local data only
553
+ * const cachedUsers = await zero.run(userQuery, {type: 'unknown'});
554
+ * ```
555
+ */
556
+ run(query, runOptions) {
557
+ return this.#zeroContext.run(
558
+ addContextToQuery(query, this.context),
559
+ runOptions
560
+ );
561
+ }
562
+ get context() {
563
+ return this.#options.context;
564
+ }
565
+ materialize(query, factoryOrOptions, maybeOptions) {
566
+ const q = addContextToQuery(query, this.context);
567
+ let factory;
568
+ let options;
569
+ if (typeof factoryOrOptions === "function") {
570
+ factory = factoryOrOptions;
571
+ options = maybeOptions;
572
+ } else {
573
+ options = factoryOrOptions;
574
+ }
575
+ return this.#zeroContext.materialize(q, factory, options);
576
+ }
577
+ /**
578
+ * The server URL that this Zero instance is configured with.
579
+ */
580
+ get server() {
581
+ return this.#server;
582
+ }
583
+ /**
584
+ * The name of the IndexedDB database in which the data of this
585
+ * instance of Zero is stored.
586
+ */
587
+ get idbName() {
588
+ return this.#rep.idbName;
589
+ }
590
+ /**
591
+ * The schema version of the data understood by this application.
592
+ * See [[ZeroOptions.schemaVersion]].
593
+ */
594
+ get schemaVersion() {
595
+ return this.#rep.schemaVersion;
596
+ }
597
+ /**
598
+ * The schema passed into Zero when it was constructed.
599
+ *
600
+ * This can be paired with the inspector API to explore the client cache for
601
+ * debugging or tooling. The inspector exposes the raw key/value map as well
602
+ * as the per-table rows that back `zero.query[tableName].run()`.
603
+ *
604
+ * ```ts
605
+ * const inspector = __zero.inspector;
606
+ * const client = inspector.client;
607
+ *
608
+ * console.log('client map:', await client.map());
609
+ *
610
+ * for (const tableName of Object.keys(__zero.schema.tables)) {
611
+ * console.table(await client.rows(tableName));
612
+ * }
613
+ * ```
614
+ */
615
+ get schema() {
616
+ return this.#options.schema;
617
+ }
618
+ /**
619
+ * The client ID for this instance of Zero. Each instance
620
+ * gets a unique client ID.
621
+ */
622
+ get clientID() {
623
+ return this.#rep.clientID;
624
+ }
625
+ get clientGroupID() {
626
+ return this.#rep.clientGroupID;
627
+ }
628
+ /**
629
+ * Use to execute mutations. The primary flow is to call
630
+ * `zero.mutate(mutationRequest)` with your registered custom mutators:
631
+ *
632
+ * ```ts
633
+ * await zero.mutate(
634
+ * mutators.myMutator({id: '1', title: 'First issue'}),
635
+ * );
636
+ * ```
637
+ *
638
+ * When `schema.enableLegacyMutators` is true, legacy conveniences are added:
639
+ * - Table-scoped CRUD helpers, e.g. `zero.mutate.issue.create` / `set` / `update` / `delete`
640
+ * - Your custom mutators exposed directly on `zero.mutate`
641
+ *
642
+ * ```ts
643
+ * await zero.mutate.issue.create({id: '1', title: 'First issue', priority: 'high'});
644
+ * await zero.mutate.comment.create({id: '1', text: 'First comment', issueID: '1'});
645
+ * await zero.mutate.myMutator({id: '1', title: 'First issue'});
646
+ * ```
647
+ *
648
+ * The `update` methods support partials. Unspecified or `undefined` fields
649
+ * are left unchanged:
650
+ *
651
+ * ```ts
652
+ * // Priority left unchanged.
653
+ * await zero.mutate.issue.update({id: '1', title: 'Updated title'});
654
+ * ```
655
+ */
656
+ mutate;
657
+ /**
658
+ * Provides a way to batch multiple CRUD mutations together:
659
+ *
660
+ * ```ts
661
+ * await zero.mutateBatch(m => {
662
+ * await m.issue.create({id: '1', title: 'First issue'});
663
+ * await m.comment.create({id: '1', text: 'First comment', issueID: '1'});
664
+ * });
665
+ * ```
666
+ *
667
+ * Batch sends all mutations in a single transaction. If one fails, all are
668
+ * rolled back together. Batch can also be more efficient than making many
669
+ * individual mutations.
670
+ *
671
+ * `mutateBatch` is not allowed inside another `mutateBatch` call. Doing so
672
+ * will throw an error.
673
+ *
674
+ * @deprecated Use `zero.mutate(mutationRequest)`
675
+ */
676
+ mutateBatch;
677
+ /**
678
+ * The connection API for managing Zero's connection lifecycle.
679
+ *
680
+ * Use this to monitor connection state and manually control connections.
681
+ *
682
+ * @example
683
+ * ```ts
684
+ * // Subscribe to connection state changes
685
+ * z.connection.state.subscribe(state => {
686
+ * console.log('Connection state:', state.name);
687
+ * });
688
+ *
689
+ * // Manually resume connection from error state
690
+ * await z.connection.connect();
691
+ * ```
692
+ */
693
+ get connection() {
694
+ return this.#connection;
695
+ }
696
+ /**
697
+ * Whether this Zero instance has been closed.
698
+ *
699
+ * Once a Zero instance has been closed it no longer syncs, you can no
700
+ * longer query or mutate data with it, and its query views stop updating.
701
+ */
702
+ get closed() {
703
+ return this.#connectionManager.is(Closed);
704
+ }
705
+ /**
706
+ * Closes this Zero instance.
707
+ *
708
+ * Once a Zero instance has been closed it no longer syncs, you can no
709
+ * longer query or mutate data with it, and its query views stop updating.
710
+ */
711
+ async close() {
712
+ const lc = this.#lc.withContext("close");
713
+ try {
714
+ if (this.closed) {
715
+ lc.debug?.("close() called on already closed instance");
716
+ return;
717
+ }
718
+ lc.debug?.("Closing Zero instance. Stack:", new Error().stack);
719
+ this.#onlineManager.cleanup();
720
+ if (!this.#connectionManager.is(Disconnected)) {
721
+ this.#disconnect(
722
+ lc,
723
+ new ClientError({
724
+ kind: ClientClosed,
725
+ message: "Zero instance closed by user"
726
+ }),
727
+ CLOSE_CODE_NORMAL
728
+ );
729
+ }
730
+ lc.debug?.("Aborting closeAbortController due to close()");
731
+ this.#closeAbortController.abort();
732
+ this.#metrics.stop();
733
+ const ret = await this.#rep.close();
734
+ this.#unexpose();
735
+ return ret;
736
+ } catch (e) {
737
+ lc.error?.("Error closing Zero instance", e);
738
+ throw e;
739
+ } finally {
740
+ this.#connectionManager.closed();
741
+ }
742
+ }
743
+ #onMessage = (e) => {
744
+ const lc = this.#lc;
745
+ lc.debug?.("received message", e.data);
746
+ if (this.closed) {
747
+ lc.debug?.("ignoring message because already closed");
748
+ return;
749
+ }
750
+ let downMessage;
751
+ const { data } = e;
752
+ try {
753
+ downMessage = parse(
754
+ JSON.parse(data),
755
+ downstreamSchema,
756
+ "passthrough"
757
+ );
758
+ } catch (e2) {
759
+ const invalidMessageError = new ClientError(
760
+ {
761
+ kind: InvalidMessage,
762
+ message: `Invalid message received from server: ${getErrorMessage(e2)}${data}`
763
+ },
764
+ { cause: e2 }
765
+ );
766
+ this.#disconnect(lc, invalidMessageError);
767
+ return;
768
+ }
769
+ this.#messageCount++;
770
+ const msgType = downMessage[0];
771
+ try {
772
+ switch (msgType) {
773
+ case "connected":
774
+ return this.#handleConnectedMessage(lc, downMessage);
775
+ case "error":
776
+ return this.#handleErrorMessage(lc, downMessage);
777
+ case "pong":
778
+ resetBackoff();
779
+ return this.#onPong();
780
+ case "pokeStart":
781
+ return this.#handlePokeStart(lc, downMessage);
782
+ case "pokePart":
783
+ if (downMessage[1].rowsPatch) {
784
+ resetBackoff();
785
+ }
786
+ return this.#handlePokePart(lc, downMessage);
787
+ case "pokeEnd":
788
+ return this.#handlePokeEnd(lc, downMessage);
789
+ case "pull":
790
+ return this.#handlePullResponse(lc, downMessage);
791
+ case "deleteClients":
792
+ return this.#deleteClientsManager.clientsDeletedOnServer(
793
+ downMessage[1]
794
+ );
795
+ case "pushResponse":
796
+ return this.#mutationTracker.processPushResponse(downMessage[1]);
797
+ case "transformError":
798
+ this.#queryManager.handleTransformErrors(downMessage[1]);
799
+ break;
800
+ case "inspect":
801
+ break;
802
+ default:
803
+ unreachable(msgType);
804
+ }
805
+ } catch (e2) {
806
+ lc.error?.("Unhandled error in onOpen", e2);
807
+ this.#disconnect(
808
+ lc,
809
+ new ClientError(
810
+ {
811
+ kind: Internal,
812
+ message: getErrorMessage(e2)
813
+ },
814
+ { cause: e2 }
815
+ )
816
+ );
817
+ return;
818
+ }
819
+ };
820
+ #onOpen = () => {
821
+ let lc = this.#lc;
822
+ try {
823
+ assert(this.#socket, "Socket is not set before onOpen");
824
+ lc = addWebSocketIDFromSocketToLogContext(this.#socket, lc);
825
+ if (this.#connectStart === void 0) {
826
+ throw new Error("Got open event but connect start time is undefined.");
827
+ } else {
828
+ const now = Date.now();
829
+ const timeToOpenMs = now - this.#connectStart;
830
+ lc.info?.("Got socket open event", {
831
+ navigatorOnline: localNavigator?.onLine,
832
+ timeToOpenMs
833
+ });
834
+ }
835
+ } catch (e) {
836
+ lc.error?.("Unhandled error in onOpen", e);
837
+ this.#disconnect(
838
+ lc,
839
+ new ClientError(
840
+ {
841
+ kind: Internal,
842
+ message: getErrorMessage(e)
843
+ },
844
+ { cause: e }
845
+ )
846
+ );
847
+ }
848
+ };
849
+ #onClose = (e) => {
850
+ let lc = this.#lc;
851
+ try {
852
+ assert(this.#socket, "Socket is not set before onClose");
853
+ lc = addWebSocketIDFromSocketToLogContext(this.#socket, lc);
854
+ const { code, reason, wasClean } = e;
855
+ if (code <= 1001) {
856
+ lc.info?.("Got socket close event", { code, reason, wasClean });
857
+ } else {
858
+ lc.error?.("Got unexpected socket close event", {
859
+ code,
860
+ reason,
861
+ wasClean
862
+ });
863
+ }
864
+ const closeError = new ClientError(
865
+ wasClean ? {
866
+ kind: CleanClose,
867
+ message: "WebSocket connection closed cleanly"
868
+ } : {
869
+ kind: AbruptClose,
870
+ message: "WebSocket connection closed abruptly"
871
+ }
872
+ );
873
+ this.#connectResolver.reject(closeError);
874
+ this.#disconnect(lc, closeError);
875
+ } catch (e2) {
876
+ lc.error?.("Unhandled error in onClose", e2);
877
+ const internalError = new ClientError(
878
+ {
879
+ kind: Internal,
880
+ message: getErrorMessage(e2)
881
+ },
882
+ { cause: e2 }
883
+ );
884
+ this.#connectResolver.reject(internalError);
885
+ this.#disconnect(lc, internalError);
886
+ }
887
+ };
888
+ // An error on the connection is fatal for the connection.
889
+ async #handleErrorMessage(lc, downMessage) {
890
+ const [, { kind, message }] = downMessage;
891
+ if (kind === MutationRateLimited) {
892
+ this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
893
+ lc.error?.(kind, "Mutation rate limited", { message });
894
+ return;
895
+ }
896
+ lc.info?.(`${kind}: ${message}}`);
897
+ const error = new ProtocolError(downMessage[1]);
898
+ lc.error?.(`${error.kind}:
899
+
900
+ ${error.errorBody.message}`, error);
901
+ lc.debug?.("Rejecting connect resolver due to error", error);
902
+ this.#connectResolver.reject(error);
903
+ this.#disconnect(lc, error);
904
+ if (kind === VersionNotSupported) {
905
+ this.#onUpdateNeeded({ type: kind, message });
906
+ } else if (kind === SchemaVersionNotSupported) {
907
+ await this.#rep.disableClientGroup();
908
+ this.#onUpdateNeeded({
909
+ type: "SchemaVersionNotSupported",
910
+ message
911
+ });
912
+ } else if (kind === ClientNotFound) {
913
+ await this.#rep.disableClientGroup();
914
+ this.#onClientStateNotFound?.(onClientStateNotFoundServerReason(message));
915
+ } else if (kind === InvalidConnectionRequestLastMutationID || kind === InvalidConnectionRequestBaseCookie) {
916
+ await dropDatabase(this.#rep.idbName);
917
+ reloadWithReason(lc, this.#reload, kind, serverAheadReloadReason);
918
+ }
919
+ }
920
+ async #handleConnectedMessage(lc, connectedMessage) {
921
+ const now = Date.now();
922
+ const [, connectBody] = connectedMessage;
923
+ lc = addWebSocketIDToLogContext(connectBody.wsid, lc);
924
+ if (this.#connectedCount === 0) {
925
+ this.#checkConnectivity("firstConnect");
926
+ } else if (this.#connectErrorCount > 0) {
927
+ this.#checkConnectivity("connectAfterError");
928
+ }
929
+ this.#connectedCount++;
930
+ this.#connectedAt = now;
931
+ this.#metrics.lastConnectError.clear();
932
+ const proceedingConnectErrorCount = this.#connectErrorCount;
933
+ this.#connectErrorCount = 0;
934
+ let timeToConnectMs;
935
+ let connectMsgLatencyMs;
936
+ if (this.#connectStart === void 0) {
937
+ lc.error?.("Got connected message but connect start time is undefined.");
938
+ } else {
939
+ timeToConnectMs = now - this.#connectStart;
940
+ this.#metrics.timeToConnectMs.set(timeToConnectMs);
941
+ connectMsgLatencyMs = connectBody.timestamp !== void 0 ? now - connectBody.timestamp : void 0;
942
+ this.#connectStart = void 0;
943
+ }
944
+ let totalTimeToConnectMs;
945
+ if (this.#totalToConnectStart === void 0) {
946
+ lc.error?.(
947
+ "Got connected message but total to connect start time is undefined."
948
+ );
949
+ } else {
950
+ totalTimeToConnectMs = now - this.#totalToConnectStart;
951
+ this.#totalToConnectStart = void 0;
952
+ }
953
+ this.#metrics.setConnected(timeToConnectMs ?? 0, totalTimeToConnectMs ?? 0);
954
+ lc.info?.("Connected", {
955
+ navigatorOnline: localNavigator?.onLine,
956
+ timeToConnectMs,
957
+ totalTimeToConnectMs,
958
+ connectMsgLatencyMs,
959
+ connectedCount: this.#connectedCount,
960
+ proceedingConnectErrorCount
961
+ });
962
+ this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
963
+ lc.debug?.("Resolving connect resolver");
964
+ const socket = must(this.#socket);
965
+ const queriesPatch = await this.#rep.query(
966
+ (tx) => this.#queryManager.getQueriesPatch(tx, this.#initConnectionQueries)
967
+ );
968
+ const hasDeletedClients = () => skipEmptyArray(this.#deletedClients?.clientIDs) || skipEmptyArray(this.#deletedClients?.clientGroupIDs);
969
+ const maybeSendDeletedClients = () => {
970
+ if (hasDeletedClients()) {
971
+ send(socket, ["deleteClients", this.#deletedClients]);
972
+ this.#deletedClients = void 0;
973
+ }
974
+ };
975
+ if (queriesPatch.size > 0 && this.#initConnectionQueries !== void 0) {
976
+ maybeSendDeletedClients();
977
+ send(socket, [
978
+ "changeDesiredQueries",
979
+ {
980
+ desiredQueriesPatch: [...queriesPatch.values()]
981
+ }
982
+ ]);
983
+ } else if (this.#initConnectionQueries === void 0) {
984
+ const clientSchema = this.#clientSchema;
985
+ send(socket, [
986
+ "initConnection",
987
+ {
988
+ desiredQueriesPatch: [...queriesPatch.values()],
989
+ deleted: skipEmptyDeletedClients(this.#deletedClients),
990
+ // The clientSchema only needs to be sent for the very first request.
991
+ // Henceforth it is stored with the CVR and verified automatically.
992
+ ...this.#connectCookie === null ? { clientSchema } : {},
993
+ userPushURL: this.#options.mutateURL,
994
+ userQueryURL: this.#options.queryURL ?? this.#options.getQueriesURL
995
+ }
996
+ ]);
997
+ this.#deletedClients = void 0;
998
+ }
999
+ this.#initConnectionQueries = void 0;
1000
+ maybeSendDeletedClients();
1001
+ this.#connectionManager.connected();
1002
+ this.#connectResolver.resolve();
1003
+ }
1004
+ /**
1005
+ * Starts a new connection. This will create the WebSocket that does the HTTP
1006
+ * request to the server.
1007
+ *
1008
+ * {@link #connect} will throw an assertion error if the
1009
+ * {@link #connectionManager} status is not {@link ConnectionManagerState.Disconnected}
1010
+ * or {@link ConnectionManagerState.Connecting}.
1011
+ * Callers MUST check the connection status before calling this method and log
1012
+ * an error as needed.
1013
+ *
1014
+ * The function will resolve once the socket is connected. If you need to know
1015
+ * when a connection has been established, as in we have received the
1016
+ * {@link ConnectedMessage}, you should await the {@link #connectResolver}
1017
+ * promise. The {@link #connectResolver} promise rejects if an error message
1018
+ * is received before the connected message is received or if the connection
1019
+ * attempt times out.
1020
+ */
1021
+ async #connect(lc, additionalConnectParams) {
1022
+ if (this.closed) {
1023
+ return;
1024
+ }
1025
+ assert(this.#server, "No server provided");
1026
+ assert(
1027
+ this.#connectionManager.is(Disconnected) || this.#connectionManager.is(Connecting),
1028
+ "connect() called from invalid state: " + this.#connectionManager.state.name
1029
+ );
1030
+ const wsid = nanoid();
1031
+ lc = addWebSocketIDToLogContext(wsid, lc);
1032
+ lc.info?.("Connecting...", { navigatorOnline: localNavigator?.onLine });
1033
+ this.#connectionManager.connecting();
1034
+ assert(this.#connectStart === void 0, "connect start time is defined");
1035
+ const now = Date.now();
1036
+ this.#connectStart = now;
1037
+ if (this.#totalToConnectStart === void 0) {
1038
+ this.#totalToConnectStart = now;
1039
+ }
1040
+ if (this.closed) {
1041
+ return;
1042
+ }
1043
+ this.#connectCookie = parse(
1044
+ await this.#rep.cookie,
1045
+ nullableVersionSchema,
1046
+ "passthrough"
1047
+ );
1048
+ if (this.closed) {
1049
+ return;
1050
+ }
1051
+ const timeoutID = setTimeout(() => {
1052
+ lc.debug?.("Rejecting connect resolver due to timeout");
1053
+ const timeoutError = new ClientError({
1054
+ kind: ConnectTimeout,
1055
+ message: `Connection attempt timed out after ${CONNECT_TIMEOUT_MS / 1e3} seconds`
1056
+ });
1057
+ this.#connectResolver.reject(timeoutError);
1058
+ this.#disconnect(lc, timeoutError);
1059
+ }, CONNECT_TIMEOUT_MS);
1060
+ const abortHandler = () => {
1061
+ clearTimeout(timeoutID);
1062
+ };
1063
+ this.#closeAbortController.signal.addEventListener("abort", abortHandler);
1064
+ const [ws, initConnectionQueries, deletedClients] = await createSocket(
1065
+ this.#rep,
1066
+ this.#queryManager,
1067
+ this.#deleteClientsManager,
1068
+ toWSString(this.#server),
1069
+ this.#connectCookie,
1070
+ this.clientID,
1071
+ await this.clientGroupID,
1072
+ this.#clientSchema,
1073
+ this.userID,
1074
+ fromReplicacheAuthToken(this.#rep.auth),
1075
+ this.#lastMutationIDReceived,
1076
+ wsid,
1077
+ this.#options.logLevel === "debug",
1078
+ lc,
1079
+ this.#options.mutateURL,
1080
+ this.#options.queryURL ?? this.#options.getQueriesURL,
1081
+ additionalConnectParams,
1082
+ await this.#activeClientsManager,
1083
+ this.#options.maxHeaderLength
1084
+ );
1085
+ if (this.closed) {
1086
+ return;
1087
+ }
1088
+ this.#initConnectionQueries = initConnectionQueries;
1089
+ this.#deletedClients = deletedClients;
1090
+ ws.addEventListener("message", this.#onMessage);
1091
+ ws.addEventListener("open", this.#onOpen);
1092
+ ws.addEventListener("close", this.#onClose);
1093
+ this.#socket = ws;
1094
+ this.#socketResolver.resolve(ws);
1095
+ try {
1096
+ lc.debug?.("Waiting for connection to be acknowledged");
1097
+ await this.#connectResolver.promise;
1098
+ this.#mutationTracker.onConnected(this.#lastMutationIDReceived);
1099
+ this.#rep.push().catch(() => {
1100
+ });
1101
+ } finally {
1102
+ clearTimeout(timeoutID);
1103
+ this.#closeAbortController.signal.removeEventListener(
1104
+ "abort",
1105
+ abortHandler
1106
+ );
1107
+ }
1108
+ }
1109
+ #disconnect(lc, reason, closeCode) {
1110
+ if (shouldReportConnectError(reason)) {
1111
+ this.#connectErrorCount++;
1112
+ this.#metrics.lastConnectError.set(getLastConnectErrorValue(reason));
1113
+ this.#metrics.timeToConnectMs.set(DID_NOT_CONNECT_VALUE);
1114
+ this.#metrics.setConnectError(reason);
1115
+ if (this.#connectErrorCount % CHECK_CONNECTIVITY_ON_ERROR_FREQUENCY === 1) {
1116
+ this.#checkConnectivity(`connectErrorCount=${this.#connectErrorCount}`);
1117
+ }
1118
+ }
1119
+ lc.info?.("disconnecting", {
1120
+ navigatorOnline: localNavigator?.onLine,
1121
+ reason: reason.kind,
1122
+ connectStart: this.#connectStart,
1123
+ totalToConnectStart: this.#totalToConnectStart,
1124
+ connectedAt: this.#connectedAt,
1125
+ connectionDuration: this.#connectedAt ? Date.now() - this.#connectedAt : 0,
1126
+ messageCount: this.#messageCount,
1127
+ connectionState: this.#connectionManager.state,
1128
+ connectErrorCount: this.#connectErrorCount
1129
+ });
1130
+ const connectionStatus = this.#connectionManager.state.name;
1131
+ switch (connectionStatus) {
1132
+ case Connected: {
1133
+ if (this.#connectStart !== void 0) {
1134
+ lc.error?.(
1135
+ "disconnect() called while connected but connect start time is defined."
1136
+ );
1137
+ }
1138
+ break;
1139
+ }
1140
+ case Closed:
1141
+ lc.debug?.("disconnect() called while closed");
1142
+ return;
1143
+ case Disconnected:
1144
+ case Connecting:
1145
+ case NeedsAuth:
1146
+ case Error$1:
1147
+ break;
1148
+ default:
1149
+ unreachable();
1150
+ }
1151
+ this.#socketResolver = resolver();
1152
+ lc.debug?.("Creating new connect resolver");
1153
+ this.#connectResolver = resolver();
1154
+ this.#messageCount = 0;
1155
+ this.#connectStart = void 0;
1156
+ this.#connectedAt = 0;
1157
+ this.#socket?.removeEventListener("message", this.#onMessage);
1158
+ this.#socket?.removeEventListener("open", this.#onOpen);
1159
+ this.#socket?.removeEventListener("close", this.#onClose);
1160
+ this.#socket?.close(closeCode);
1161
+ this.#socket = void 0;
1162
+ this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
1163
+ this.#pokeHandler.handleDisconnect();
1164
+ const transition = getErrorConnectionTransition(reason);
1165
+ switch (transition.status) {
1166
+ case NeedsAuth:
1167
+ this.#connectionManager.needsAuth(transition.reason);
1168
+ break;
1169
+ case Error$1:
1170
+ this.#connectionManager.error(transition.reason);
1171
+ break;
1172
+ case Disconnected:
1173
+ this.#connectionManager.disconnected(transition.reason);
1174
+ break;
1175
+ case Closed:
1176
+ this.#connectionManager.closed();
1177
+ break;
1178
+ case NO_STATUS_TRANSITION:
1179
+ this.#connectionManager.connecting(transition.reason);
1180
+ break;
1181
+ default:
1182
+ unreachable();
1183
+ }
1184
+ }
1185
+ #handlePokeStart(_lc, pokeMessage) {
1186
+ this.#abortPingTimeout();
1187
+ this.#pokeHandler.handlePokeStart(pokeMessage[1]);
1188
+ }
1189
+ #handlePokePart(_lc, pokeMessage) {
1190
+ this.#abortPingTimeout();
1191
+ const lastMutationIDChangeForSelf = this.#pokeHandler.handlePokePart(
1192
+ pokeMessage[1]
1193
+ );
1194
+ if (lastMutationIDChangeForSelf !== void 0) {
1195
+ this.#lastMutationIDReceived = lastMutationIDChangeForSelf;
1196
+ }
1197
+ }
1198
+ #handlePokeEnd(_lc, pokeMessage) {
1199
+ this.#abortPingTimeout();
1200
+ this.#pokeHandler.handlePokeEnd(pokeMessage[1]);
1201
+ }
1202
+ #onPokeError() {
1203
+ const lc = this.#lc;
1204
+ lc.info?.(
1205
+ "poke error, disconnecting?",
1206
+ !this.#connectionManager.is(Disconnected)
1207
+ );
1208
+ if (!this.#connectionManager.is(Disconnected)) {
1209
+ this.#disconnect(
1210
+ lc,
1211
+ new ClientError({
1212
+ kind: UnexpectedBaseCookie,
1213
+ message: "Server returned unexpected base cookie during sync"
1214
+ })
1215
+ );
1216
+ }
1217
+ }
1218
+ #handlePullResponse(lc, pullResponseMessage) {
1219
+ this.#abortPingTimeout();
1220
+ const body = pullResponseMessage[1];
1221
+ lc = lc.withContext("requestID", body.requestID);
1222
+ lc.debug?.("Handling pull response", body);
1223
+ const resolver2 = this.#pendingPullsByRequestID.get(body.requestID);
1224
+ if (!resolver2) {
1225
+ lc.debug?.("No resolver found");
1226
+ return;
1227
+ }
1228
+ resolver2.resolve(pullResponseMessage[1]);
1229
+ }
1230
+ async #pusher(req, requestID) {
1231
+ assert(req.pushVersion === 1);
1232
+ await this.#connectResolver.promise;
1233
+ const lc = this.#lc.withContext("requestID", requestID);
1234
+ lc.debug?.(`pushing ${req.mutations.length} mutations`);
1235
+ const socket = this.#socket;
1236
+ assert(socket);
1237
+ const isMutationRecoveryPush = req.clientGroupID !== await this.clientGroupID;
1238
+ const start = isMutationRecoveryPush ? 0 : req.mutations.findIndex(
1239
+ (m) => m.clientID === this.#lastMutationIDSent.clientID && m.id === this.#lastMutationIDSent.id
1240
+ ) + 1;
1241
+ lc.debug?.(
1242
+ isMutationRecoveryPush ? "pushing for recovery" : "pushing",
1243
+ req.mutations.length - start,
1244
+ "mutations of",
1245
+ req.mutations.length,
1246
+ "mutations."
1247
+ );
1248
+ const now = Date.now();
1249
+ for (let i = start; i < req.mutations.length; i++) {
1250
+ const m = req.mutations[i];
1251
+ const timestamp = now - Math.round(performance.now() - m.timestamp);
1252
+ const zeroM = m.name === CRUD_MUTATION_NAME ? {
1253
+ type: CRUD,
1254
+ timestamp,
1255
+ id: m.id,
1256
+ clientID: m.clientID,
1257
+ name: m.name,
1258
+ args: [mapCRUD(m.args, this.#clientToServer)]
1259
+ } : {
1260
+ type: Custom,
1261
+ timestamp,
1262
+ id: m.id,
1263
+ clientID: m.clientID,
1264
+ name: m.name,
1265
+ args: [m.args]
1266
+ };
1267
+ const msg = [
1268
+ "push",
1269
+ {
1270
+ timestamp: now,
1271
+ clientGroupID: req.clientGroupID,
1272
+ mutations: [zeroM],
1273
+ pushVersion: req.pushVersion,
1274
+ requestID
1275
+ }
1276
+ ];
1277
+ send(socket, msg);
1278
+ if (!isMutationRecoveryPush) {
1279
+ this.#lastMutationIDSent = { clientID: m.clientID, id: m.id };
1280
+ }
1281
+ }
1282
+ return {
1283
+ httpRequestInfo: {
1284
+ errorMessage: "",
1285
+ httpStatusCode: 200
1286
+ }
1287
+ };
1288
+ }
1289
+ async #runLoop() {
1290
+ this.#lc.info?.(`Starting Zero version: ${this.version}`);
1291
+ if (this.#server === null) {
1292
+ this.#lc.info?.("No socket origin provided, not starting connect loop.");
1293
+ this.#connectionManager.disconnected(
1294
+ new ClientError({
1295
+ kind: NoSocketOrigin,
1296
+ message: "No server socket origin provided"
1297
+ })
1298
+ );
1299
+ return;
1300
+ }
1301
+ let runLoopCounter = 0;
1302
+ const bareLogContext = this.#lc;
1303
+ const getLogContext = () => {
1304
+ let lc = bareLogContext;
1305
+ if (this.#socket) {
1306
+ lc = addWebSocketIDFromSocketToLogContext(this.#socket, lc);
1307
+ }
1308
+ return lc.withContext("runLoopCounter", runLoopCounter);
1309
+ };
1310
+ const { auth } = this.#options;
1311
+ this.#setAuth(auth);
1312
+ let backoffMs;
1313
+ let additionalConnectParams;
1314
+ while (this.#connectionManager.shouldContinueRunLoop()) {
1315
+ runLoopCounter++;
1316
+ let lc = getLogContext();
1317
+ backoffMs = RUN_LOOP_INTERVAL_MS;
1318
+ try {
1319
+ const currentState = this.#connectionManager.state;
1320
+ switch (currentState.name) {
1321
+ case Connecting:
1322
+ case Disconnected: {
1323
+ if (this.#visibilityWatcher.visibilityState === "hidden") {
1324
+ this.#metrics.setDisconnectedWaitingForVisible();
1325
+ this.#totalToConnectStart = void 0;
1326
+ }
1327
+ const visibilityResult = await promiseRace({
1328
+ visible: this.#visibilityWatcher.waitForVisible(),
1329
+ stateChange: this.#connectionManager.waitForStateChange()
1330
+ });
1331
+ if (visibilityResult.key === "stateChange") {
1332
+ throwIfConnectionError(visibilityResult.result);
1333
+ break;
1334
+ }
1335
+ if (reloadScheduled()) {
1336
+ break;
1337
+ }
1338
+ await this.#connect(lc, additionalConnectParams);
1339
+ additionalConnectParams = void 0;
1340
+ throwIfConnectionError(this.#connectionManager.state);
1341
+ assert(this.#socket);
1342
+ lc = getLogContext();
1343
+ lc.debug?.("Connected successfully");
1344
+ break;
1345
+ }
1346
+ case Connected: {
1347
+ const controller = new AbortController();
1348
+ this.#abortPingTimeout = () => controller.abort();
1349
+ const [pingTimeoutPromise, pingTimeoutAborted] = sleepWithAbort(
1350
+ this.pingTimeoutMs,
1351
+ controller.signal
1352
+ );
1353
+ const raceResult = await promiseRace({
1354
+ waitForPing: pingTimeoutPromise,
1355
+ waitForPingAborted: pingTimeoutAborted,
1356
+ tabHidden: this.#visibilityWatcher.waitForHidden(),
1357
+ stateChange: this.#connectionManager.waitForStateChange()
1358
+ });
1359
+ switch (raceResult.key) {
1360
+ case "waitForPing": {
1361
+ await this.#ping(lc);
1362
+ break;
1363
+ }
1364
+ case "waitForPingAborted":
1365
+ break;
1366
+ case "tabHidden": {
1367
+ const hiddenError = new ClientError({
1368
+ kind: Hidden,
1369
+ message: "Connection closed because tab was hidden"
1370
+ });
1371
+ this.#disconnect(lc, hiddenError);
1372
+ break;
1373
+ }
1374
+ case "stateChange":
1375
+ throwIfConnectionError(raceResult.result);
1376
+ break;
1377
+ default:
1378
+ unreachable(raceResult);
1379
+ }
1380
+ break;
1381
+ }
1382
+ case NeedsAuth: {
1383
+ lc.info?.(
1384
+ `Run loop paused in needs-auth state. Call zero.connection.connect({auth}) to resume.`,
1385
+ currentState.reason
1386
+ );
1387
+ await this.#connectionManager.waitForStateChange();
1388
+ break;
1389
+ }
1390
+ case Error$1: {
1391
+ lc.info?.(
1392
+ `Run loop paused in error state. Call zero.connection.connect() to resume.`,
1393
+ currentState.reason
1394
+ );
1395
+ await this.#connectionManager.waitForStateChange();
1396
+ break;
1397
+ }
1398
+ case Closed:
1399
+ break;
1400
+ default:
1401
+ unreachable(currentState);
1402
+ }
1403
+ } catch (ex) {
1404
+ const isClientClosedError = isClientError(ex) && ex.kind === ClientClosed;
1405
+ if (!this.#connectionManager.is(Connected) && !isClientClosedError) {
1406
+ const level = isAuthError(ex) ? "warn" : "error";
1407
+ const kind = isServerError(ex) ? ex.kind : "Unknown Error";
1408
+ lc[level]?.("Failed to connect", ex, kind, {
1409
+ lmid: this.#lastMutationIDReceived,
1410
+ baseCookie: this.#connectCookie
1411
+ });
1412
+ }
1413
+ lc.debug?.(
1414
+ "Got an exception in the run loop",
1415
+ "state:",
1416
+ this.#connectionManager.state,
1417
+ "exception:",
1418
+ ex
1419
+ );
1420
+ const transition = getErrorConnectionTransition(ex);
1421
+ switch (transition.status) {
1422
+ case NO_STATUS_TRANSITION: {
1423
+ const backoffParams = getBackoffParams(transition.reason);
1424
+ if (backoffParams) {
1425
+ if (backoffParams.minBackoffMs !== void 0) {
1426
+ backoffMs = Math.max(backoffMs, backoffParams.minBackoffMs);
1427
+ }
1428
+ if (backoffParams.maxBackoffMs !== void 0) {
1429
+ backoffMs = Math.min(backoffMs, backoffParams.maxBackoffMs);
1430
+ }
1431
+ additionalConnectParams = backoffParams.reconnectParams;
1432
+ }
1433
+ lc.debug?.(
1434
+ "Sleeping",
1435
+ backoffMs,
1436
+ "ms before reconnecting due to error, state:",
1437
+ this.#connectionManager.state
1438
+ );
1439
+ await sleep(backoffMs);
1440
+ break;
1441
+ }
1442
+ case NeedsAuth: {
1443
+ lc.debug?.(
1444
+ "Auth error encountered, transitioning to needs-auth state"
1445
+ );
1446
+ this.#connectionManager.needsAuth(transition.reason);
1447
+ break;
1448
+ }
1449
+ case Error$1: {
1450
+ lc.debug?.("Fatal error encountered, transitioning to error state");
1451
+ this.#connectionManager.error(transition.reason);
1452
+ break;
1453
+ }
1454
+ case Disconnected: {
1455
+ this.#connectionManager.disconnected(transition.reason);
1456
+ break;
1457
+ }
1458
+ case Closed: {
1459
+ break;
1460
+ }
1461
+ default:
1462
+ unreachable();
1463
+ }
1464
+ }
1465
+ }
1466
+ }
1467
+ async #puller(req, requestID) {
1468
+ assert(req.pullVersion === 1);
1469
+ const lc = this.#lc.withContext("requestID", requestID);
1470
+ lc.debug?.("Pull", req);
1471
+ if (req.clientGroupID === await this.clientGroupID) {
1472
+ return {
1473
+ httpRequestInfo: {
1474
+ errorMessage: "",
1475
+ httpStatusCode: 200
1476
+ }
1477
+ };
1478
+ }
1479
+ await this.#connectResolver.promise;
1480
+ const socket = this.#socket;
1481
+ assert(socket);
1482
+ lc.debug?.("Pull is for mutation recovery");
1483
+ const cookie = parse(
1484
+ req.cookie,
1485
+ nullableVersionSchema,
1486
+ "passthrough"
1487
+ );
1488
+ const pullRequestMessage = [
1489
+ "pull",
1490
+ {
1491
+ clientGroupID: req.clientGroupID,
1492
+ cookie,
1493
+ requestID
1494
+ }
1495
+ ];
1496
+ send(socket, pullRequestMessage);
1497
+ const pullResponseResolver = resolver();
1498
+ this.#pendingPullsByRequestID.set(requestID, pullResponseResolver);
1499
+ try {
1500
+ const raceResult = await promiseRace({
1501
+ timeout: sleep(PULL_TIMEOUT_MS),
1502
+ success: pullResponseResolver.promise
1503
+ });
1504
+ switch (raceResult.key) {
1505
+ case "timeout":
1506
+ lc.debug?.("Mutation recovery pull timed out");
1507
+ throw new ClientError({
1508
+ kind: PullTimeout,
1509
+ message: "Pull timed out"
1510
+ });
1511
+ case "success": {
1512
+ lc.debug?.("Returning mutation recovery pull response");
1513
+ const response = await pullResponseResolver.promise;
1514
+ return {
1515
+ response: {
1516
+ cookie: response.cookie,
1517
+ lastMutationIDChanges: response.lastMutationIDChanges,
1518
+ patch: []
1519
+ },
1520
+ httpRequestInfo: {
1521
+ errorMessage: "",
1522
+ httpStatusCode: 200
1523
+ }
1524
+ };
1525
+ }
1526
+ default:
1527
+ unreachable(raceResult);
1528
+ }
1529
+ } finally {
1530
+ pullResponseResolver.reject(
1531
+ new ClientError({
1532
+ kind: PullTimeout,
1533
+ message: "Pull timed out"
1534
+ })
1535
+ );
1536
+ this.#pendingPullsByRequestID.delete(requestID);
1537
+ }
1538
+ }
1539
+ /**
1540
+ * Sets the authentication token on the replicache instance.
1541
+ *
1542
+ * @param auth - The authentication token to set.
1543
+ */
1544
+ #setAuth(auth) {
1545
+ this.#rep.auth = toReplicacheAuthToken(auth);
1546
+ }
1547
+ /**
1548
+ * A rough heuristic for whether the client is currently online and
1549
+ * authenticated.
1550
+ *
1551
+ * @deprecated Use `connection` instead, which provides more detailed connection state.
1552
+ */
1553
+ get online() {
1554
+ return this.#onlineManager.online;
1555
+ }
1556
+ /**
1557
+ * Subscribe to online status changes.
1558
+ *
1559
+ * This is useful when you want to update state based on the online status.
1560
+ *
1561
+ * @param listener - The listener to subscribe to.
1562
+ * @returns A function to unsubscribe the listener.
1563
+ *
1564
+ * @deprecated Use `connection` instead, which provides more detailed connection state.
1565
+ */
1566
+ onOnline = (listener) => this.#onlineManager.subscribe(listener);
1567
+ /**
1568
+ * Starts a ping and waits for a pong.
1569
+ */
1570
+ async #ping(lc) {
1571
+ lc.debug?.("pinging");
1572
+ const { promise, resolve } = resolver();
1573
+ this.#onPong = resolve;
1574
+ const pingMessage = ["ping", {}];
1575
+ const t0 = performance.now();
1576
+ assert(this.#socket);
1577
+ send(this.#socket, pingMessage);
1578
+ const raceResult = await promiseRace({
1579
+ waitForPong: promise,
1580
+ pingTimeout: sleep(this.pingTimeoutMs),
1581
+ stateChange: this.#connectionManager.waitForStateChange()
1582
+ });
1583
+ const delta = performance.now() - t0;
1584
+ switch (raceResult.key) {
1585
+ case "waitForPong": {
1586
+ lc.debug?.("ping succeeded in", delta, "ms");
1587
+ return;
1588
+ }
1589
+ case "pingTimeout": {
1590
+ lc.info?.("ping failed in", delta, "ms - disconnecting");
1591
+ const pingTimeoutError = new ClientError({
1592
+ kind: PingTimeout,
1593
+ message: "Server ping request failed"
1594
+ });
1595
+ this.#disconnect(lc, pingTimeoutError);
1596
+ throw pingTimeoutError;
1597
+ }
1598
+ case "stateChange": {
1599
+ lc.debug?.(
1600
+ "ping aborted due to connection state change",
1601
+ raceResult.result
1602
+ );
1603
+ throwIfConnectionError(raceResult.result);
1604
+ break;
1605
+ }
1606
+ default:
1607
+ unreachable();
1608
+ }
1609
+ }
1610
+ // Sends a set of metrics to the server. Throws unless the server
1611
+ // returns 200.
1612
+ // TODO: Reenable metrics reporting
1613
+ async #reportMetrics(_allSeries) {
1614
+ }
1615
+ #checkConnectivity(reason) {
1616
+ this.#checkConnectivityAsync(reason);
1617
+ }
1618
+ #checkConnectivityAsync(_reason) {
1619
+ }
1620
+ /**
1621
+ * `inspector` is an object that can be used to inspect the state of the
1622
+ * queries a Zero instance uses. It is intended for debugging purposes.
1623
+ */
1624
+ get inspector() {
1625
+ {
1626
+ return this.#inspector ??= new Inspector(
1627
+ this.#rep,
1628
+ this.#queryManager,
1629
+ this.#zeroContext,
1630
+ async () => {
1631
+ await this.#connectResolver.promise;
1632
+ return must(this.#socket);
1633
+ }
1634
+ );
1635
+ }
1636
+ }
1637
+ #addMetric = (metric, value, ...args) => {
1638
+ assert(isClientMetric(metric), `Invalid metric: ${metric}`);
1639
+ this.#queryManager.addMetric(
1640
+ metric,
1641
+ value,
1642
+ ...args
1643
+ );
1644
+ };
1645
+ }
1646
+ class OnlineManager extends Subscribable {
1647
+ #online = false;
1648
+ setOnline(online) {
1649
+ if (this.#online === online) {
1650
+ return;
1651
+ }
1652
+ this.#online = online;
1653
+ this.notify(online);
1654
+ }
1655
+ get online() {
1656
+ return this.#online;
1657
+ }
1658
+ }
1659
+ async function createSocket(rep, queryManager, deleteClientsManager, socketOrigin, baseCookie, clientID, clientGroupID, clientSchema, userID, auth, lmid, wsid, debugPerf, lc, userPushURL, userQueryURL, additionalConnectParams, activeClientsManager, maxHeaderLength = 1024 * 8) {
1660
+ const url = await createConnectionURL(
1661
+ socketOrigin,
1662
+ clientID,
1663
+ clientGroupID,
1664
+ userID,
1665
+ baseCookie,
1666
+ lmid,
1667
+ wsid,
1668
+ rep,
1669
+ debugPerf,
1670
+ additionalConnectParams,
1671
+ lc
1672
+ );
1673
+ const WS = mustGetBrowserGlobal("WebSocket");
1674
+ const queriesPatchP = rep.query((tx) => queryManager.getQueriesPatch(tx));
1675
+ const deletedClientsArray = await deleteClientsManager.getDeletedClients();
1676
+ let deletedClients = convertDeletedClientsToBody(deletedClientsArray, clientGroupID);
1677
+ let queriesPatch = await queriesPatchP;
1678
+ const { activeClients } = activeClientsManager;
1679
+ let secProtocol = encodeSecProtocols(
1680
+ [
1681
+ "initConnection",
1682
+ {
1683
+ desiredQueriesPatch: [...queriesPatch.values()],
1684
+ deleted: skipEmptyDeletedClients(deletedClients),
1685
+ // The clientSchema only needs to be sent for the very first request.
1686
+ // Henceforth it is stored with the CVR and verified automatically.
1687
+ ...baseCookie === null ? { clientSchema } : {},
1688
+ userPushURL,
1689
+ userQueryURL,
1690
+ activeClients: [...activeClients]
1691
+ }
1692
+ ],
1693
+ auth
1694
+ );
1695
+ if (secProtocol.length > maxHeaderLength) {
1696
+ secProtocol = encodeSecProtocols(void 0, auth);
1697
+ if (secProtocol.length > maxHeaderLength) {
1698
+ lc.warn?.(
1699
+ `Encoded auth token length (${secProtocol.length}) exceeds ZeroOptions.maxHeaderLength (${maxHeaderLength}). This may cause connection failures.`
1700
+ );
1701
+ }
1702
+ queriesPatch = void 0;
1703
+ } else {
1704
+ deletedClients = void 0;
1705
+ }
1706
+ return [
1707
+ new WS(
1708
+ // toString() required for RN URL polyfill.
1709
+ url.toString(),
1710
+ secProtocol
1711
+ ),
1712
+ queriesPatch,
1713
+ skipEmptyDeletedClients(deletedClients)
1714
+ ];
1715
+ }
1716
+ async function createConnectionURL(socketOrigin, clientID, clientGroupID, userID, baseCookie, lmid, wsid, rep, debugPerf, additionalConnectParams, lc) {
1717
+ const url = new URL(
1718
+ appendPath(socketOrigin, `/sync/v${PROTOCOL_VERSION}/connect`)
1719
+ );
1720
+ const { searchParams } = url;
1721
+ searchParams.set("clientID", clientID);
1722
+ searchParams.set("clientGroupID", clientGroupID);
1723
+ searchParams.set("userID", userID);
1724
+ searchParams.set("baseCookie", baseCookie === null ? "" : String(baseCookie));
1725
+ searchParams.set("ts", String(performance.now()));
1726
+ searchParams.set("lmid", String(lmid));
1727
+ searchParams.set("wsid", wsid);
1728
+ searchParams.set("profileID", await rep.profileID);
1729
+ if (debugPerf) {
1730
+ searchParams.set("debugPerf", true.toString());
1731
+ }
1732
+ if (additionalConnectParams) {
1733
+ for (const k in additionalConnectParams) {
1734
+ if (searchParams.has(k)) {
1735
+ lc.warn?.(`skipping conflicting parameter ${k}`);
1736
+ } else {
1737
+ searchParams.set(k, additionalConnectParams[k]);
1738
+ }
1739
+ }
1740
+ }
1741
+ lc.info?.("Connecting to", url.toString());
1742
+ return url;
1743
+ }
1744
+ function skipEmptyArray(arr) {
1745
+ return arr && arr.length > 0 ? arr : void 0;
1746
+ }
1747
+ function skipEmptyDeletedClients(deletedClients) {
1748
+ if (!deletedClients) {
1749
+ return void 0;
1750
+ }
1751
+ const { clientIDs, clientGroupIDs } = deletedClients;
1752
+ if ((!clientIDs || clientIDs.length === 0) && (!clientGroupIDs || clientGroupIDs.length === 0)) {
1753
+ return void 0;
1754
+ }
1755
+ const data = {};
1756
+ data.clientIDs = skipEmptyArray(clientIDs);
1757
+ data.clientGroupIDs = skipEmptyArray(clientGroupIDs);
1758
+ return data;
1759
+ }
1760
+ function convertDeletedClientsToBody(deletedClients, clientGroupID) {
1761
+ if (deletedClients.length === 0) {
1762
+ return void 0;
1763
+ }
1764
+ const clientIDs = deletedClients.filter((pair) => pair.clientID && pair.clientGroupID === clientGroupID).map((pair) => pair.clientID);
1765
+ if (clientIDs.length === 0) {
1766
+ return void 0;
1767
+ }
1768
+ return { clientIDs };
1769
+ }
1770
+ function addWebSocketIDFromSocketToLogContext({ url }, lc) {
1771
+ const wsid = new URL(url).searchParams.get("wsid") ?? nanoid();
1772
+ return addWebSocketIDToLogContext(wsid, lc);
1773
+ }
1774
+ function addWebSocketIDToLogContext(wsid, lc) {
1775
+ return lc.withContext("wsid", wsid);
1776
+ }
1777
+ function assertValidRunOptions(_options) {
1778
+ }
1779
+ async function makeActiveClientsManager(clientGroupID, clientID, signal, onDelete) {
1780
+ const manager = await ActiveClientsManager.create(
1781
+ await clientGroupID,
1782
+ clientID,
1783
+ signal
1784
+ );
1785
+ manager.onDelete = onDelete;
1786
+ return manager;
1787
+ }
1788
+ export {
1789
+ CONNECT_TIMEOUT_MS,
1790
+ DEFAULT_DISCONNECT_HIDDEN_DELAY_MS,
1791
+ DEFAULT_DISCONNECT_TIMEOUT_MS,
1792
+ DEFAULT_PING_TIMEOUT_MS,
1793
+ OnlineManager,
1794
+ PULL_TIMEOUT_MS,
1795
+ RUN_LOOP_INTERVAL_MS,
1796
+ Zero,
1797
+ createConnectionURL,
1798
+ createSocket
1799
+ };
1800
+ //# sourceMappingURL=zero.js.map