@rocicorp/zero 0.0.0-202410031711

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 (831) hide show
  1. package/deps/sqlite3/sqlite3.c +260574 -0
  2. package/deps/sqlite3/sqlite3.h +13572 -0
  3. package/deps/sqlite3/sqlite3ext.h +719 -0
  4. package/out/btree/b+tree.d.ts +471 -0
  5. package/out/btree/b+tree.d.ts.map +1 -0
  6. package/out/btree/b+tree.js +1708 -0
  7. package/out/btree/b+tree.js.map +1 -0
  8. package/out/btree/interfaces.d.ts +270 -0
  9. package/out/btree/interfaces.d.ts.map +1 -0
  10. package/out/btree/interfaces.js +3 -0
  11. package/out/btree/interfaces.js.map +1 -0
  12. package/out/chunk-2RUT5EQV.js +28 -0
  13. package/out/chunk-2RUT5EQV.js.map +7 -0
  14. package/out/datadog/src/datadog-log-sink.d.ts +20 -0
  15. package/out/datadog/src/datadog-log-sink.d.ts.map +1 -0
  16. package/out/datadog/src/datadog-log-sink.js +231 -0
  17. package/out/datadog/src/datadog-log-sink.js.map +1 -0
  18. package/out/datadog/src/mod.d.ts +2 -0
  19. package/out/datadog/src/mod.d.ts.map +1 -0
  20. package/out/react.js +108 -0
  21. package/out/react.js.map +7 -0
  22. package/out/replicache/src/async-iterable-to-array.d.ts +2 -0
  23. package/out/replicache/src/async-iterable-to-array.d.ts.map +1 -0
  24. package/out/replicache/src/bg-interval.d.ts +3 -0
  25. package/out/replicache/src/bg-interval.d.ts.map +1 -0
  26. package/out/replicache/src/binary-search.d.ts +15 -0
  27. package/out/replicache/src/binary-search.d.ts.map +1 -0
  28. package/out/replicache/src/broadcast-channel.d.ts +3 -0
  29. package/out/replicache/src/broadcast-channel.d.ts.map +1 -0
  30. package/out/replicache/src/btree/diff.d.ts +4 -0
  31. package/out/replicache/src/btree/diff.d.ts.map +1 -0
  32. package/out/replicache/src/btree/node.d.ts +125 -0
  33. package/out/replicache/src/btree/node.d.ts.map +1 -0
  34. package/out/replicache/src/btree/read.d.ts +32 -0
  35. package/out/replicache/src/btree/read.d.ts.map +1 -0
  36. package/out/replicache/src/btree/splice.d.ts +9 -0
  37. package/out/replicache/src/btree/splice.d.ts.map +1 -0
  38. package/out/replicache/src/btree/write.d.ts +24 -0
  39. package/out/replicache/src/btree/write.d.ts.map +1 -0
  40. package/out/replicache/src/call-default-fetch.d.ts +6 -0
  41. package/out/replicache/src/call-default-fetch.d.ts.map +1 -0
  42. package/out/replicache/src/config.d.ts +13 -0
  43. package/out/replicache/src/config.d.ts.map +1 -0
  44. package/out/replicache/src/connection-loop-delegates.d.ts +20 -0
  45. package/out/replicache/src/connection-loop-delegates.d.ts.map +1 -0
  46. package/out/replicache/src/connection-loop.d.ts +28 -0
  47. package/out/replicache/src/connection-loop.d.ts.map +1 -0
  48. package/out/replicache/src/cookies.d.ts +29 -0
  49. package/out/replicache/src/cookies.d.ts.map +1 -0
  50. package/out/replicache/src/dag/chunk.d.ts +35 -0
  51. package/out/replicache/src/dag/chunk.d.ts.map +1 -0
  52. package/out/replicache/src/dag/gc.d.ts +42 -0
  53. package/out/replicache/src/dag/gc.d.ts.map +1 -0
  54. package/out/replicache/src/dag/key.d.ts +26 -0
  55. package/out/replicache/src/dag/key.d.ts.map +1 -0
  56. package/out/replicache/src/dag/lazy-store.d.ts +181 -0
  57. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -0
  58. package/out/replicache/src/dag/store-impl.d.ts +38 -0
  59. package/out/replicache/src/dag/store-impl.d.ts.map +1 -0
  60. package/out/replicache/src/dag/store.d.ts +36 -0
  61. package/out/replicache/src/dag/store.d.ts.map +1 -0
  62. package/out/replicache/src/dag/visitor.d.ts +13 -0
  63. package/out/replicache/src/dag/visitor.d.ts.map +1 -0
  64. package/out/replicache/src/db/commit.d.ts +133 -0
  65. package/out/replicache/src/db/commit.d.ts.map +1 -0
  66. package/out/replicache/src/db/index.d.ts +33 -0
  67. package/out/replicache/src/db/index.d.ts.map +1 -0
  68. package/out/replicache/src/db/read.d.ts +24 -0
  69. package/out/replicache/src/db/read.d.ts.map +1 -0
  70. package/out/replicache/src/db/rebase.d.ts +10 -0
  71. package/out/replicache/src/db/rebase.d.ts.map +1 -0
  72. package/out/replicache/src/db/scan.d.ts +15 -0
  73. package/out/replicache/src/db/scan.d.ts.map +1 -0
  74. package/out/replicache/src/db/write.d.ts +39 -0
  75. package/out/replicache/src/db/write.d.ts.map +1 -0
  76. package/out/replicache/src/error-responses.d.ts +26 -0
  77. package/out/replicache/src/error-responses.d.ts.map +1 -0
  78. package/out/replicache/src/filter-async-iterable.d.ts +10 -0
  79. package/out/replicache/src/filter-async-iterable.d.ts.map +1 -0
  80. package/out/replicache/src/format-version.d.ts +9 -0
  81. package/out/replicache/src/format-version.d.ts.map +1 -0
  82. package/out/replicache/src/frozen-json.d.ts +35 -0
  83. package/out/replicache/src/frozen-json.d.ts.map +1 -0
  84. package/out/replicache/src/get-default-puller.d.ts +14 -0
  85. package/out/replicache/src/get-default-puller.d.ts.map +1 -0
  86. package/out/replicache/src/get-default-pusher.d.ts +10 -0
  87. package/out/replicache/src/get-default-pusher.d.ts.map +1 -0
  88. package/out/replicache/src/hash.d.ts +29 -0
  89. package/out/replicache/src/hash.d.ts.map +1 -0
  90. package/out/replicache/src/http-request-info.d.ts +6 -0
  91. package/out/replicache/src/http-request-info.d.ts.map +1 -0
  92. package/out/replicache/src/impl.d.ts +4 -0
  93. package/out/replicache/src/impl.d.ts.map +1 -0
  94. package/out/replicache/src/index-defs.d.ts +36 -0
  95. package/out/replicache/src/index-defs.d.ts.map +1 -0
  96. package/out/replicache/src/iterable-union.d.ts +5 -0
  97. package/out/replicache/src/iterable-union.d.ts.map +1 -0
  98. package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts +25 -0
  99. package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts.map +1 -0
  100. package/out/replicache/src/kv/idb-store.d.ts +18 -0
  101. package/out/replicache/src/kv/idb-store.d.ts.map +1 -0
  102. package/out/replicache/src/kv/mem-store.d.ts +23 -0
  103. package/out/replicache/src/kv/mem-store.d.ts.map +1 -0
  104. package/out/replicache/src/kv/read-impl.d.ts +11 -0
  105. package/out/replicache/src/kv/read-impl.d.ts.map +1 -0
  106. package/out/replicache/src/kv/store.d.ts +76 -0
  107. package/out/replicache/src/kv/store.d.ts.map +1 -0
  108. package/out/replicache/src/kv/write-impl-base.d.ts +18 -0
  109. package/out/replicache/src/kv/write-impl-base.d.ts.map +1 -0
  110. package/out/replicache/src/kv/write-impl.d.ts +9 -0
  111. package/out/replicache/src/kv/write-impl.d.ts.map +1 -0
  112. package/out/replicache/src/lazy.d.ts +2 -0
  113. package/out/replicache/src/lazy.d.ts.map +1 -0
  114. package/out/replicache/src/log-options.d.ts +10 -0
  115. package/out/replicache/src/log-options.d.ts.map +1 -0
  116. package/out/replicache/src/merge-async-iterables.d.ts +16 -0
  117. package/out/replicache/src/merge-async-iterables.d.ts.map +1 -0
  118. package/out/replicache/src/mod.d.ts +38 -0
  119. package/out/replicache/src/mod.d.ts.map +1 -0
  120. package/out/replicache/src/mutation-recovery.d.ts +43 -0
  121. package/out/replicache/src/mutation-recovery.d.ts.map +1 -0
  122. package/out/replicache/src/new-client-channel.d.ts +6 -0
  123. package/out/replicache/src/new-client-channel.d.ts.map +1 -0
  124. package/out/replicache/src/on-persist-channel.d.ts +10 -0
  125. package/out/replicache/src/on-persist-channel.d.ts.map +1 -0
  126. package/out/replicache/src/patch-operation.d.ts +32 -0
  127. package/out/replicache/src/patch-operation.d.ts.map +1 -0
  128. package/out/replicache/src/pending-mutations.d.ts +14 -0
  129. package/out/replicache/src/pending-mutations.d.ts.map +1 -0
  130. package/out/replicache/src/persist/client-gc.d.ts +17 -0
  131. package/out/replicache/src/persist/client-gc.d.ts.map +1 -0
  132. package/out/replicache/src/persist/client-group-gc.d.ts +10 -0
  133. package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -0
  134. package/out/replicache/src/persist/client-groups.d.ts +72 -0
  135. package/out/replicache/src/persist/client-groups.d.ts.map +1 -0
  136. package/out/replicache/src/persist/clients.d.ts +155 -0
  137. package/out/replicache/src/persist/clients.d.ts.map +1 -0
  138. package/out/replicache/src/persist/collect-idb-databases.d.ts +91 -0
  139. package/out/replicache/src/persist/collect-idb-databases.d.ts.map +1 -0
  140. package/out/replicache/src/persist/gather-mem-only-visitor.d.ts +12 -0
  141. package/out/replicache/src/persist/gather-mem-only-visitor.d.ts.map +1 -0
  142. package/out/replicache/src/persist/gather-not-cached-visitor.d.ts +17 -0
  143. package/out/replicache/src/persist/gather-not-cached-visitor.d.ts.map +1 -0
  144. package/out/replicache/src/persist/heartbeat.d.ts +9 -0
  145. package/out/replicache/src/persist/heartbeat.d.ts.map +1 -0
  146. package/out/replicache/src/persist/idb-databases-store-db-name.d.ts +5 -0
  147. package/out/replicache/src/persist/idb-databases-store-db-name.d.ts.map +1 -0
  148. package/out/replicache/src/persist/idb-databases-store.d.ts +24 -0
  149. package/out/replicache/src/persist/idb-databases-store.d.ts.map +1 -0
  150. package/out/replicache/src/persist/make-client-id.d.ts +6 -0
  151. package/out/replicache/src/persist/make-client-id.d.ts.map +1 -0
  152. package/out/replicache/src/persist/persist.d.ts +26 -0
  153. package/out/replicache/src/persist/persist.d.ts.map +1 -0
  154. package/out/replicache/src/persist/refresh.d.ts +13 -0
  155. package/out/replicache/src/persist/refresh.d.ts.map +1 -0
  156. package/out/replicache/src/process-scheduler.d.ts +20 -0
  157. package/out/replicache/src/process-scheduler.d.ts.map +1 -0
  158. package/out/replicache/src/puller.d.ts +61 -0
  159. package/out/replicache/src/puller.d.ts.map +1 -0
  160. package/out/replicache/src/pusher.d.ts +33 -0
  161. package/out/replicache/src/pusher.d.ts.map +1 -0
  162. package/out/replicache/src/replicache-impl.d.ts +321 -0
  163. package/out/replicache/src/replicache-impl.d.ts.map +1 -0
  164. package/out/replicache/src/replicache-options.d.ts +209 -0
  165. package/out/replicache/src/replicache-options.d.ts.map +1 -0
  166. package/out/replicache/src/replicache.d.ts +298 -0
  167. package/out/replicache/src/replicache.d.ts.map +1 -0
  168. package/out/replicache/src/request-idle.d.ts +6 -0
  169. package/out/replicache/src/request-idle.d.ts.map +1 -0
  170. package/out/replicache/src/scan-iterator.d.ts +127 -0
  171. package/out/replicache/src/scan-iterator.d.ts.map +1 -0
  172. package/out/replicache/src/scan-options.d.ts +67 -0
  173. package/out/replicache/src/scan-options.d.ts.map +1 -0
  174. package/out/replicache/src/set-interval-with-signal.d.ts +2 -0
  175. package/out/replicache/src/set-interval-with-signal.d.ts.map +1 -0
  176. package/out/replicache/src/size-of-value.d.ts +19 -0
  177. package/out/replicache/src/size-of-value.d.ts.map +1 -0
  178. package/out/replicache/src/subscriptions.d.ts +140 -0
  179. package/out/replicache/src/subscriptions.d.ts.map +1 -0
  180. package/out/replicache/src/sync/diff.d.ts +31 -0
  181. package/out/replicache/src/sync/diff.d.ts.map +1 -0
  182. package/out/replicache/src/sync/ids.d.ts +13 -0
  183. package/out/replicache/src/sync/ids.d.ts.map +1 -0
  184. package/out/replicache/src/sync/patch.d.ts +5 -0
  185. package/out/replicache/src/sync/patch.d.ts.map +1 -0
  186. package/out/replicache/src/sync/pull-error.d.ts +9 -0
  187. package/out/replicache/src/sync/pull-error.d.ts.map +1 -0
  188. package/out/replicache/src/sync/pull.d.ts +82 -0
  189. package/out/replicache/src/sync/pull.d.ts.map +1 -0
  190. package/out/replicache/src/sync/push.d.ts +65 -0
  191. package/out/replicache/src/sync/push.d.ts.map +1 -0
  192. package/out/replicache/src/sync/request-id.d.ts +10 -0
  193. package/out/replicache/src/sync/request-id.d.ts.map +1 -0
  194. package/out/replicache/src/sync/sync-head-name.d.ts +2 -0
  195. package/out/replicache/src/sync/sync-head-name.d.ts.map +1 -0
  196. package/out/replicache/src/test-license-key.d.ts +3 -0
  197. package/out/replicache/src/test-license-key.d.ts.map +1 -0
  198. package/out/replicache/src/to-error.d.ts +2 -0
  199. package/out/replicache/src/to-error.d.ts.map +1 -0
  200. package/out/replicache/src/transaction-closed-error.d.ts +12 -0
  201. package/out/replicache/src/transaction-closed-error.d.ts.map +1 -0
  202. package/out/replicache/src/transactions.d.ts +156 -0
  203. package/out/replicache/src/transactions.d.ts.map +1 -0
  204. package/out/replicache/src/types.d.ts +57 -0
  205. package/out/replicache/src/types.d.ts.map +1 -0
  206. package/out/replicache/src/version.d.ts +5 -0
  207. package/out/replicache/src/version.d.ts.map +1 -0
  208. package/out/replicache/src/with-transactions.d.ts +23 -0
  209. package/out/replicache/src/with-transactions.d.ts.map +1 -0
  210. package/out/shared/src/abort-error.d.ts +4 -0
  211. package/out/shared/src/abort-error.d.ts.map +1 -0
  212. package/out/shared/src/abort-error.js +4 -0
  213. package/out/shared/src/abort-error.js.map +1 -0
  214. package/out/shared/src/asserts.d.ts +17 -0
  215. package/out/shared/src/asserts.d.ts.map +1 -0
  216. package/out/shared/src/asserts.js +73 -0
  217. package/out/shared/src/asserts.js.map +1 -0
  218. package/out/shared/src/browser-env.d.ts +3 -0
  219. package/out/shared/src/browser-env.d.ts.map +1 -0
  220. package/out/shared/src/config.d.ts +3 -0
  221. package/out/shared/src/config.d.ts.map +1 -0
  222. package/out/shared/src/config.js +3 -0
  223. package/out/shared/src/config.js.map +1 -0
  224. package/out/shared/src/custom-key-map.d.ts +26 -0
  225. package/out/shared/src/custom-key-map.d.ts.map +1 -0
  226. package/out/shared/src/custom-key-map.js +65 -0
  227. package/out/shared/src/custom-key-map.js.map +1 -0
  228. package/out/shared/src/deep-clone.d.ts +4 -0
  229. package/out/shared/src/deep-clone.d.ts.map +1 -0
  230. package/out/shared/src/document-visible.d.ts +9 -0
  231. package/out/shared/src/document-visible.d.ts.map +1 -0
  232. package/out/shared/src/has-own.d.ts +5 -0
  233. package/out/shared/src/has-own.d.ts.map +1 -0
  234. package/out/shared/src/has-own.js +8 -0
  235. package/out/shared/src/has-own.js.map +1 -0
  236. package/out/shared/src/immutable.d.ts +11 -0
  237. package/out/shared/src/immutable.d.ts.map +1 -0
  238. package/out/shared/src/iterables.d.ts +11 -0
  239. package/out/shared/src/iterables.d.ts.map +1 -0
  240. package/out/shared/src/json-schema.d.ts +5 -0
  241. package/out/shared/src/json-schema.d.ts.map +1 -0
  242. package/out/shared/src/json-schema.js +36 -0
  243. package/out/shared/src/json-schema.js.map +1 -0
  244. package/out/shared/src/json.d.ts +55 -0
  245. package/out/shared/src/json.d.ts.map +1 -0
  246. package/out/shared/src/json.js +164 -0
  247. package/out/shared/src/json.js.map +1 -0
  248. package/out/shared/src/must.d.ts +2 -0
  249. package/out/shared/src/must.d.ts.map +1 -0
  250. package/out/shared/src/must.js +8 -0
  251. package/out/shared/src/must.js.map +1 -0
  252. package/out/shared/src/navigator.d.ts +7 -0
  253. package/out/shared/src/navigator.d.ts.map +1 -0
  254. package/out/shared/src/parse-big-int.d.ts +2 -0
  255. package/out/shared/src/parse-big-int.d.ts.map +1 -0
  256. package/out/shared/src/parse-big-int.js +11 -0
  257. package/out/shared/src/parse-big-int.js.map +1 -0
  258. package/out/shared/src/queue.d.ts +40 -0
  259. package/out/shared/src/queue.d.ts.map +1 -0
  260. package/out/shared/src/queue.js +118 -0
  261. package/out/shared/src/queue.js.map +1 -0
  262. package/out/shared/src/rand.d.ts +7 -0
  263. package/out/shared/src/rand.d.ts.map +1 -0
  264. package/out/shared/src/rand.js +11 -0
  265. package/out/shared/src/rand.js.map +1 -0
  266. package/out/shared/src/random-uint64.d.ts +2 -0
  267. package/out/shared/src/random-uint64.d.ts.map +1 -0
  268. package/out/shared/src/random-values.d.ts +2 -0
  269. package/out/shared/src/random-values.d.ts.map +1 -0
  270. package/out/shared/src/resolved-promises.d.ts +5 -0
  271. package/out/shared/src/resolved-promises.d.ts.map +1 -0
  272. package/out/shared/src/resolved-promises.js +5 -0
  273. package/out/shared/src/resolved-promises.js.map +1 -0
  274. package/out/shared/src/set-utils.d.ts +9 -0
  275. package/out/shared/src/set-utils.d.ts.map +1 -0
  276. package/out/shared/src/set-utils.js +60 -0
  277. package/out/shared/src/set-utils.js.map +1 -0
  278. package/out/shared/src/sleep.d.ts +15 -0
  279. package/out/shared/src/sleep.d.ts.map +1 -0
  280. package/out/shared/src/sleep.js +54 -0
  281. package/out/shared/src/sleep.js.map +1 -0
  282. package/out/shared/src/string-compare.d.ts +2 -0
  283. package/out/shared/src/string-compare.d.ts.map +1 -0
  284. package/out/shared/src/string-compare.js +10 -0
  285. package/out/shared/src/string-compare.js.map +1 -0
  286. package/out/shared/src/types.d.ts +2 -0
  287. package/out/shared/src/types.d.ts.map +1 -0
  288. package/out/shared/src/valita.d.ts +27 -0
  289. package/out/shared/src/valita.d.ts.map +1 -0
  290. package/out/shared/src/valita.js +118 -0
  291. package/out/shared/src/valita.js.map +1 -0
  292. package/out/shared/src/xxhash.d.ts +3 -0
  293. package/out/shared/src/xxhash.d.ts.map +1 -0
  294. package/out/shared/src/xxhash.js +4 -0
  295. package/out/shared/src/xxhash.js.map +1 -0
  296. package/out/zero/src/cli.d.ts +3 -0
  297. package/out/zero/src/cli.d.ts.map +1 -0
  298. package/out/zero/src/cli.js +3 -0
  299. package/out/zero/src/cli.js.map +1 -0
  300. package/out/zero/src/react.d.ts +2 -0
  301. package/out/zero/src/react.d.ts.map +1 -0
  302. package/out/zero/src/server/change-streamer.d.ts +2 -0
  303. package/out/zero/src/server/change-streamer.d.ts.map +1 -0
  304. package/out/zero/src/server/change-streamer.js +2 -0
  305. package/out/zero/src/server/change-streamer.js.map +1 -0
  306. package/out/zero/src/server/main.d.ts +2 -0
  307. package/out/zero/src/server/main.d.ts.map +1 -0
  308. package/out/zero/src/server/main.js +2 -0
  309. package/out/zero/src/server/main.js.map +1 -0
  310. package/out/zero/src/server/replicator.d.ts +2 -0
  311. package/out/zero/src/server/replicator.d.ts.map +1 -0
  312. package/out/zero/src/server/replicator.js +2 -0
  313. package/out/zero/src/server/replicator.js.map +1 -0
  314. package/out/zero/src/server/syncer.d.ts +2 -0
  315. package/out/zero/src/server/syncer.d.ts.map +1 -0
  316. package/out/zero/src/server/syncer.js +2 -0
  317. package/out/zero/src/server/syncer.js.map +1 -0
  318. package/out/zero/src/zero.d.ts +2 -0
  319. package/out/zero/src/zero.d.ts.map +1 -0
  320. package/out/zero-cache/src/config/zero-config.d.ts +1509 -0
  321. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -0
  322. package/out/zero-cache/src/config/zero-config.js +227 -0
  323. package/out/zero-cache/src/config/zero-config.js.map +1 -0
  324. package/out/zero-cache/src/db/lite-tables.d.ts +5 -0
  325. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -0
  326. package/out/zero-cache/src/db/lite-tables.js +75 -0
  327. package/out/zero-cache/src/db/lite-tables.js.map +1 -0
  328. package/out/zero-cache/src/db/migration-lite.d.ts +38 -0
  329. package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -0
  330. package/out/zero-cache/src/db/migration-lite.js +161 -0
  331. package/out/zero-cache/src/db/migration-lite.js.map +1 -0
  332. package/out/zero-cache/src/db/migration.d.ts +38 -0
  333. package/out/zero-cache/src/db/migration.d.ts.map +1 -0
  334. package/out/zero-cache/src/db/migration.js +139 -0
  335. package/out/zero-cache/src/db/migration.js.map +1 -0
  336. package/out/zero-cache/src/db/statements.d.ts +31 -0
  337. package/out/zero-cache/src/db/statements.d.ts.map +1 -0
  338. package/out/zero-cache/src/db/statements.js +48 -0
  339. package/out/zero-cache/src/db/statements.js.map +1 -0
  340. package/out/zero-cache/src/db/transaction-pool.d.ts +187 -0
  341. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -0
  342. package/out/zero-cache/src/db/transaction-pool.js +445 -0
  343. package/out/zero-cache/src/db/transaction-pool.js.map +1 -0
  344. package/out/zero-cache/src/server/change-streamer.d.ts +3 -0
  345. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -0
  346. package/out/zero-cache/src/server/change-streamer.js +30 -0
  347. package/out/zero-cache/src/server/change-streamer.js.map +1 -0
  348. package/out/zero-cache/src/server/logging.d.ts +6 -0
  349. package/out/zero-cache/src/server/logging.d.ts.map +1 -0
  350. package/out/zero-cache/src/server/logging.js +23 -0
  351. package/out/zero-cache/src/server/logging.js.map +1 -0
  352. package/out/zero-cache/src/server/main.d.ts +2 -0
  353. package/out/zero-cache/src/server/main.d.ts.map +1 -0
  354. package/out/zero-cache/src/server/main.js +92 -0
  355. package/out/zero-cache/src/server/main.js.map +1 -0
  356. package/out/zero-cache/src/server/replicator.d.ts +3 -0
  357. package/out/zero-cache/src/server/replicator.d.ts.map +1 -0
  358. package/out/zero-cache/src/server/replicator.js +35 -0
  359. package/out/zero-cache/src/server/replicator.js.map +1 -0
  360. package/out/zero-cache/src/server/syncer.d.ts +3 -0
  361. package/out/zero-cache/src/server/syncer.d.ts.map +1 -0
  362. package/out/zero-cache/src/server/syncer.js +45 -0
  363. package/out/zero-cache/src/server/syncer.js.map +1 -0
  364. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +23 -0
  365. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -0
  366. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +98 -0
  367. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -0
  368. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +39 -0
  369. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -0
  370. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +212 -0
  371. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -0
  372. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +110 -0
  373. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -0
  374. package/out/zero-cache/src/services/change-streamer/change-streamer.js +7 -0
  375. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -0
  376. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +19 -0
  377. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -0
  378. package/out/zero-cache/src/services/change-streamer/forwarder.js +56 -0
  379. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -0
  380. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts +14 -0
  381. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -0
  382. package/out/zero-cache/src/services/change-streamer/pg/change-source.js +206 -0
  383. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -0
  384. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts +6 -0
  385. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -0
  386. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +192 -0
  387. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -0
  388. package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts +17 -0
  389. package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts.map +1 -0
  390. package/out/zero-cache/src/services/change-streamer/pg/lsn.js +17 -0
  391. package/out/zero-cache/src/services/change-streamer/pg/lsn.js.map +1 -0
  392. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +6 -0
  393. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +1 -0
  394. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +29 -0
  395. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +1 -0
  396. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +79 -0
  397. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -0
  398. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +237 -0
  399. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -0
  400. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +5 -0
  401. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +1 -0
  402. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js +111 -0
  403. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +1 -0
  404. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +26 -0
  405. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -0
  406. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +185 -0
  407. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -0
  408. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +11 -0
  409. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +1 -0
  410. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js +86 -0
  411. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.map +1 -0
  412. package/out/zero-cache/src/services/change-streamer/pg/shard-config.d.ts +19 -0
  413. package/out/zero-cache/src/services/change-streamer/pg/shard-config.d.ts.map +1 -0
  414. package/out/zero-cache/src/services/change-streamer/pg/shard-config.js +2 -0
  415. package/out/zero-cache/src/services/change-streamer/pg/shard-config.js.map +1 -0
  416. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts +4 -0
  417. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts.map +1 -0
  418. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +12 -0
  419. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -0
  420. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +31 -0
  421. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -0
  422. package/out/zero-cache/src/services/change-streamer/schema/change.js +2 -0
  423. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +1 -0
  424. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +4 -0
  425. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -0
  426. package/out/zero-cache/src/services/change-streamer/schema/init.js +10 -0
  427. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -0
  428. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +22 -0
  429. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -0
  430. package/out/zero-cache/src/services/change-streamer/schema/tables.js +49 -0
  431. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -0
  432. package/out/zero-cache/src/services/change-streamer/storer.d.ts +22 -0
  433. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -0
  434. package/out/zero-cache/src/services/change-streamer/storer.js +157 -0
  435. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -0
  436. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +27 -0
  437. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -0
  438. package/out/zero-cache/src/services/change-streamer/subscriber.js +70 -0
  439. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -0
  440. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +20 -0
  441. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -0
  442. package/out/zero-cache/src/services/dispatcher/connect-params.js +36 -0
  443. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -0
  444. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +19 -0
  445. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +1 -0
  446. package/out/zero-cache/src/services/dispatcher/dispatcher.js +55 -0
  447. package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +1 -0
  448. package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts +11 -0
  449. package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts.map +1 -0
  450. package/out/zero-cache/src/services/dispatcher/websocket-handoff.js +33 -0
  451. package/out/zero-cache/src/services/dispatcher/websocket-handoff.js.map +1 -0
  452. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +57 -0
  453. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +1 -0
  454. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +130 -0
  455. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -0
  456. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +24 -0
  457. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -0
  458. package/out/zero-cache/src/services/mutagen/mutagen.js +247 -0
  459. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -0
  460. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts +20 -0
  461. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -0
  462. package/out/zero-cache/src/services/mutagen/write-authorizer.js +187 -0
  463. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -0
  464. package/out/zero-cache/src/services/replicator/checkpointer.d.ts +79 -0
  465. package/out/zero-cache/src/services/replicator/checkpointer.d.ts.map +1 -0
  466. package/out/zero-cache/src/services/replicator/checkpointer.js +124 -0
  467. package/out/zero-cache/src/services/replicator/checkpointer.js.map +1 -0
  468. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +39 -0
  469. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -0
  470. package/out/zero-cache/src/services/replicator/incremental-sync.js +342 -0
  471. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -0
  472. package/out/zero-cache/src/services/replicator/notifier.d.ts +30 -0
  473. package/out/zero-cache/src/services/replicator/notifier.d.ts.map +1 -0
  474. package/out/zero-cache/src/services/replicator/notifier.js +54 -0
  475. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -0
  476. package/out/zero-cache/src/services/replicator/replicator.d.ts +65 -0
  477. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -0
  478. package/out/zero-cache/src/services/replicator/replicator.js +27 -0
  479. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -0
  480. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +35 -0
  481. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -0
  482. package/out/zero-cache/src/services/replicator/schema/change-log.js +78 -0
  483. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -0
  484. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +25 -0
  485. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -0
  486. package/out/zero-cache/src/services/replicator/schema/replication-state.js +90 -0
  487. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -0
  488. package/out/zero-cache/src/services/runner.d.ts +21 -0
  489. package/out/zero-cache/src/services/runner.d.ts.map +1 -0
  490. package/out/zero-cache/src/services/runner.js +63 -0
  491. package/out/zero-cache/src/services/runner.js.map +1 -0
  492. package/out/zero-cache/src/services/running-state.d.ts +56 -0
  493. package/out/zero-cache/src/services/running-state.d.ts.map +1 -0
  494. package/out/zero-cache/src/services/running-state.js +106 -0
  495. package/out/zero-cache/src/services/running-state.js.map +1 -0
  496. package/out/zero-cache/src/services/service.d.ts +29 -0
  497. package/out/zero-cache/src/services/service.d.ts.map +1 -0
  498. package/out/zero-cache/src/services/service.js +2 -0
  499. package/out/zero-cache/src/services/service.js.map +1 -0
  500. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +53 -0
  501. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -0
  502. package/out/zero-cache/src/services/view-syncer/client-handler.js +184 -0
  503. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -0
  504. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +44 -0
  505. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -0
  506. package/out/zero-cache/src/services/view-syncer/cvr-store.js +386 -0
  507. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -0
  508. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +146 -0
  509. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -0
  510. package/out/zero-cache/src/services/view-syncer/cvr.js +446 -0
  511. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -0
  512. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts +22 -0
  513. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts.map +1 -0
  514. package/out/zero-cache/src/services/view-syncer/database-storage.js +129 -0
  515. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -0
  516. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +103 -0
  517. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -0
  518. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +290 -0
  519. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -0
  520. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +54 -0
  521. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -0
  522. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +181 -0
  523. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -0
  524. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts +4 -0
  525. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts.map +1 -0
  526. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +12 -0
  527. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +1 -0
  528. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +783 -0
  529. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -0
  530. package/out/zero-cache/src/services/view-syncer/schema/types.js +213 -0
  531. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -0
  532. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +166 -0
  533. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -0
  534. package/out/zero-cache/src/services/view-syncer/snapshotter.js +374 -0
  535. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -0
  536. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +37 -0
  537. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -0
  538. package/out/zero-cache/src/services/view-syncer/view-syncer.js +522 -0
  539. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -0
  540. package/out/zero-cache/src/types/bigint-json.d.ts +26 -0
  541. package/out/zero-cache/src/types/bigint-json.d.ts.map +1 -0
  542. package/out/zero-cache/src/types/bigint-json.js +49 -0
  543. package/out/zero-cache/src/types/bigint-json.js.map +1 -0
  544. package/out/zero-cache/src/types/error-for-client.d.ts +7 -0
  545. package/out/zero-cache/src/types/error-for-client.d.ts.map +1 -0
  546. package/out/zero-cache/src/types/error-for-client.js +17 -0
  547. package/out/zero-cache/src/types/error-for-client.js.map +1 -0
  548. package/out/zero-cache/src/types/lexi-version.d.ts +29 -0
  549. package/out/zero-cache/src/types/lexi-version.d.ts.map +1 -0
  550. package/out/zero-cache/src/types/lexi-version.js +36 -0
  551. package/out/zero-cache/src/types/lexi-version.js.map +1 -0
  552. package/out/zero-cache/src/types/lite.d.ts +11 -0
  553. package/out/zero-cache/src/types/lite.d.ts.map +1 -0
  554. package/out/zero-cache/src/types/lite.js +26 -0
  555. package/out/zero-cache/src/types/lite.js.map +1 -0
  556. package/out/zero-cache/src/types/names.d.ts +5 -0
  557. package/out/zero-cache/src/types/names.d.ts.map +1 -0
  558. package/out/zero-cache/src/types/names.js +4 -0
  559. package/out/zero-cache/src/types/names.js.map +1 -0
  560. package/out/zero-cache/src/types/pg.d.ts +31 -0
  561. package/out/zero-cache/src/types/pg.d.ts.map +1 -0
  562. package/out/zero-cache/src/types/pg.js +60 -0
  563. package/out/zero-cache/src/types/pg.js.map +1 -0
  564. package/out/zero-cache/src/types/processes.d.ts +57 -0
  565. package/out/zero-cache/src/types/processes.d.ts.map +1 -0
  566. package/out/zero-cache/src/types/processes.js +121 -0
  567. package/out/zero-cache/src/types/processes.js.map +1 -0
  568. package/out/zero-cache/src/types/row-key.d.ts +37 -0
  569. package/out/zero-cache/src/types/row-key.d.ts.map +1 -0
  570. package/out/zero-cache/src/types/row-key.js +64 -0
  571. package/out/zero-cache/src/types/row-key.js.map +1 -0
  572. package/out/zero-cache/src/types/satisfies.d.ts +14 -0
  573. package/out/zero-cache/src/types/satisfies.d.ts.map +1 -0
  574. package/out/zero-cache/src/types/satisfies.js +2 -0
  575. package/out/zero-cache/src/types/satisfies.js.map +1 -0
  576. package/out/zero-cache/src/types/specs.d.ts +29 -0
  577. package/out/zero-cache/src/types/specs.d.ts.map +1 -0
  578. package/out/zero-cache/src/types/specs.js +2 -0
  579. package/out/zero-cache/src/types/specs.js.map +1 -0
  580. package/out/zero-cache/src/types/sql.d.ts +11 -0
  581. package/out/zero-cache/src/types/sql.d.ts.map +1 -0
  582. package/out/zero-cache/src/types/sql.js +15 -0
  583. package/out/zero-cache/src/types/sql.js.map +1 -0
  584. package/out/zero-cache/src/types/streams.d.ts +33 -0
  585. package/out/zero-cache/src/types/streams.d.ts.map +1 -0
  586. package/out/zero-cache/src/types/streams.js +141 -0
  587. package/out/zero-cache/src/types/streams.js.map +1 -0
  588. package/out/zero-cache/src/types/subscription.d.ts +158 -0
  589. package/out/zero-cache/src/types/subscription.d.ts.map +1 -0
  590. package/out/zero-cache/src/types/subscription.js +233 -0
  591. package/out/zero-cache/src/types/subscription.js.map +1 -0
  592. package/out/zero-cache/src/types/timeout.d.ts +11 -0
  593. package/out/zero-cache/src/types/timeout.d.ts.map +1 -0
  594. package/out/zero-cache/src/types/timeout.js +23 -0
  595. package/out/zero-cache/src/types/timeout.js.map +1 -0
  596. package/out/zero-cache/src/types/url-params.d.ts +10 -0
  597. package/out/zero-cache/src/types/url-params.d.ts.map +1 -0
  598. package/out/zero-cache/src/types/url-params.js +35 -0
  599. package/out/zero-cache/src/types/url-params.js.map +1 -0
  600. package/out/zero-cache/src/workers/connection.d.ts +25 -0
  601. package/out/zero-cache/src/workers/connection.d.ts.map +1 -0
  602. package/out/zero-cache/src/workers/connection.js +189 -0
  603. package/out/zero-cache/src/workers/connection.js.map +1 -0
  604. package/out/zero-cache/src/workers/replicator.d.ts +17 -0
  605. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -0
  606. package/out/zero-cache/src/workers/replicator.js +105 -0
  607. package/out/zero-cache/src/workers/replicator.js.map +1 -0
  608. package/out/zero-cache/src/workers/syncer.d.ts +28 -0
  609. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -0
  610. package/out/zero-cache/src/workers/syncer.js +72 -0
  611. package/out/zero-cache/src/workers/syncer.js.map +1 -0
  612. package/out/zero-client/src/client/context.d.ts +23 -0
  613. package/out/zero-client/src/client/context.d.ts.map +1 -0
  614. package/out/zero-client/src/client/crud.d.ts +52 -0
  615. package/out/zero-client/src/client/crud.d.ts.map +1 -0
  616. package/out/zero-client/src/client/enable-analytics.d.ts +3 -0
  617. package/out/zero-client/src/client/enable-analytics.d.ts.map +1 -0
  618. package/out/zero-client/src/client/http-string.d.ts +7 -0
  619. package/out/zero-client/src/client/http-string.d.ts.map +1 -0
  620. package/out/zero-client/src/client/keys.d.ts +11 -0
  621. package/out/zero-client/src/client/keys.d.ts.map +1 -0
  622. package/out/zero-client/src/client/log-options.d.ts +12 -0
  623. package/out/zero-client/src/client/log-options.d.ts.map +1 -0
  624. package/out/zero-client/src/client/metrics.d.ts +115 -0
  625. package/out/zero-client/src/client/metrics.d.ts.map +1 -0
  626. package/out/zero-client/src/client/options.d.ts +94 -0
  627. package/out/zero-client/src/client/options.d.ts.map +1 -0
  628. package/out/zero-client/src/client/query-manager.d.ts +16 -0
  629. package/out/zero-client/src/client/query-manager.d.ts.map +1 -0
  630. package/out/zero-client/src/client/reload-error-handler.d.ts +5 -0
  631. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -0
  632. package/out/zero-client/src/client/replicache-types.d.ts +48 -0
  633. package/out/zero-client/src/client/replicache-types.d.ts.map +1 -0
  634. package/out/zero-client/src/client/server-error.d.ts +12 -0
  635. package/out/zero-client/src/client/server-error.d.ts.map +1 -0
  636. package/out/zero-client/src/client/server-option.d.ts +3 -0
  637. package/out/zero-client/src/client/server-option.d.ts.map +1 -0
  638. package/out/zero-client/src/client/version.d.ts +5 -0
  639. package/out/zero-client/src/client/version.d.ts.map +1 -0
  640. package/out/zero-client/src/client/zero-poke-handler.d.ts +28 -0
  641. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -0
  642. package/out/zero-client/src/client/zero.d.ts +183 -0
  643. package/out/zero-client/src/client/zero.d.ts.map +1 -0
  644. package/out/zero-client/src/mod.d.ts +9 -0
  645. package/out/zero-client/src/mod.d.ts.map +1 -0
  646. package/out/zero-client/src/util/nanoid.d.ts +2 -0
  647. package/out/zero-client/src/util/nanoid.d.ts.map +1 -0
  648. package/out/zero-client/src/util/socket.d.ts +3 -0
  649. package/out/zero-client/src/util/socket.d.ts.map +1 -0
  650. package/out/zero-protocol/src/ast.d.ts +69 -0
  651. package/out/zero-protocol/src/ast.d.ts.map +1 -0
  652. package/out/zero-protocol/src/ast.js +64 -0
  653. package/out/zero-protocol/src/ast.js.map +1 -0
  654. package/out/zero-protocol/src/change-desired-queries.d.ts +71 -0
  655. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -0
  656. package/out/zero-protocol/src/change-desired-queries.js +10 -0
  657. package/out/zero-protocol/src/change-desired-queries.js.map +1 -0
  658. package/out/zero-protocol/src/clients-patch.d.ts +37 -0
  659. package/out/zero-protocol/src/clients-patch.d.ts.map +1 -0
  660. package/out/zero-protocol/src/clients-patch.js +15 -0
  661. package/out/zero-protocol/src/clients-patch.js.map +1 -0
  662. package/out/zero-protocol/src/connect.d.ts +88 -0
  663. package/out/zero-protocol/src/connect.d.ts.map +1 -0
  664. package/out/zero-protocol/src/connect.js +25 -0
  665. package/out/zero-protocol/src/connect.js.map +1 -0
  666. package/out/zero-protocol/src/delete-clients.d.ts +11 -0
  667. package/out/zero-protocol/src/delete-clients.d.ts.map +1 -0
  668. package/out/zero-protocol/src/delete-clients.js +9 -0
  669. package/out/zero-protocol/src/delete-clients.js.map +1 -0
  670. package/out/zero-protocol/src/down.d.ts +110 -0
  671. package/out/zero-protocol/src/down.d.ts.map +1 -0
  672. package/out/zero-protocol/src/down.js +8 -0
  673. package/out/zero-protocol/src/down.js.map +1 -0
  674. package/out/zero-protocol/src/entities-patch.d.ts +66 -0
  675. package/out/zero-protocol/src/entities-patch.d.ts.map +1 -0
  676. package/out/zero-protocol/src/entities-patch.js +27 -0
  677. package/out/zero-protocol/src/entities-patch.js.map +1 -0
  678. package/out/zero-protocol/src/entity.d.ts +9 -0
  679. package/out/zero-protocol/src/entity.d.ts.map +1 -0
  680. package/out/zero-protocol/src/entity.js +8 -0
  681. package/out/zero-protocol/src/entity.js.map +1 -0
  682. package/out/zero-protocol/src/error.d.ts +19 -0
  683. package/out/zero-protocol/src/error.d.ts.map +1 -0
  684. package/out/zero-protocol/src/error.js +26 -0
  685. package/out/zero-protocol/src/error.js.map +1 -0
  686. package/out/zero-protocol/src/mod.d.ts +16 -0
  687. package/out/zero-protocol/src/mod.d.ts.map +1 -0
  688. package/out/zero-protocol/src/mod.js +16 -0
  689. package/out/zero-protocol/src/mod.js.map +1 -0
  690. package/out/zero-protocol/src/ping.d.ts +6 -0
  691. package/out/zero-protocol/src/ping.d.ts.map +1 -0
  692. package/out/zero-protocol/src/ping.js +4 -0
  693. package/out/zero-protocol/src/ping.js.map +1 -0
  694. package/out/zero-protocol/src/poke.d.ts +236 -0
  695. package/out/zero-protocol/src/poke.d.ts.map +1 -0
  696. package/out/zero-protocol/src/poke.js +69 -0
  697. package/out/zero-protocol/src/poke.js.map +1 -0
  698. package/out/zero-protocol/src/pong.d.ts +6 -0
  699. package/out/zero-protocol/src/pong.d.ts.map +1 -0
  700. package/out/zero-protocol/src/pong.js +4 -0
  701. package/out/zero-protocol/src/pong.js.map +1 -0
  702. package/out/zero-protocol/src/pull.d.ts +26 -0
  703. package/out/zero-protocol/src/pull.d.ts.map +1 -0
  704. package/out/zero-protocol/src/pull.js +24 -0
  705. package/out/zero-protocol/src/pull.js.map +1 -0
  706. package/out/zero-protocol/src/push.d.ts +257 -0
  707. package/out/zero-protocol/src/push.d.ts.map +1 -0
  708. package/out/zero-protocol/src/push.js +77 -0
  709. package/out/zero-protocol/src/push.js.map +1 -0
  710. package/out/zero-protocol/src/queries-patch.d.ts +103 -0
  711. package/out/zero-protocol/src/queries-patch.d.ts.map +1 -0
  712. package/out/zero-protocol/src/queries-patch.js +17 -0
  713. package/out/zero-protocol/src/queries-patch.js.map +1 -0
  714. package/out/zero-protocol/src/up.d.ts +116 -0
  715. package/out/zero-protocol/src/up.d.ts.map +1 -0
  716. package/out/zero-protocol/src/up.js +9 -0
  717. package/out/zero-protocol/src/up.js.map +1 -0
  718. package/out/zero-protocol/src/version.d.ts +6 -0
  719. package/out/zero-protocol/src/version.d.ts.map +1 -0
  720. package/out/zero-protocol/src/version.js +4 -0
  721. package/out/zero-protocol/src/version.js.map +1 -0
  722. package/out/zero-react/src/mod.d.ts +3 -0
  723. package/out/zero-react/src/mod.d.ts.map +1 -0
  724. package/out/zero-react/src/use-query.d.ts +3 -0
  725. package/out/zero-react/src/use-query.d.ts.map +1 -0
  726. package/out/zero-react/src/use-zero.d.ts +8 -0
  727. package/out/zero-react/src/use-zero.d.ts.map +1 -0
  728. package/out/zero.js +7000 -0
  729. package/out/zero.js.map +7 -0
  730. package/out/zql/src/zql/ast/ast.d.ts +84 -0
  731. package/out/zql/src/zql/ast/ast.d.ts.map +1 -0
  732. package/out/zql/src/zql/ast/ast.js +54 -0
  733. package/out/zql/src/zql/ast/ast.js.map +1 -0
  734. package/out/zql/src/zql/builder/builder.d.ts +56 -0
  735. package/out/zql/src/zql/builder/builder.d.ts.map +1 -0
  736. package/out/zql/src/zql/builder/builder.js +112 -0
  737. package/out/zql/src/zql/builder/builder.js.map +1 -0
  738. package/out/zql/src/zql/builder/error.d.ts +3 -0
  739. package/out/zql/src/zql/builder/error.d.ts.map +1 -0
  740. package/out/zql/src/zql/builder/error.js +3 -0
  741. package/out/zql/src/zql/builder/error.js.map +1 -0
  742. package/out/zql/src/zql/builder/filter.d.ts +6 -0
  743. package/out/zql/src/zql/builder/filter.d.ts.map +1 -0
  744. package/out/zql/src/zql/builder/filter.js +53 -0
  745. package/out/zql/src/zql/builder/filter.js.map +1 -0
  746. package/out/zql/src/zql/builder/like.d.ts +3 -0
  747. package/out/zql/src/zql/builder/like.d.ts.map +1 -0
  748. package/out/zql/src/zql/builder/like.js +60 -0
  749. package/out/zql/src/zql/builder/like.js.map +1 -0
  750. package/out/zql/src/zql/ivm/array-view.d.ts +42 -0
  751. package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -0
  752. package/out/zql/src/zql/ivm/change.d.ts +44 -0
  753. package/out/zql/src/zql/ivm/change.d.ts.map +1 -0
  754. package/out/zql/src/zql/ivm/change.js +2 -0
  755. package/out/zql/src/zql/ivm/change.js.map +1 -0
  756. package/out/zql/src/zql/ivm/data.d.ts +72 -0
  757. package/out/zql/src/zql/ivm/data.d.ts.map +1 -0
  758. package/out/zql/src/zql/ivm/data.js +84 -0
  759. package/out/zql/src/zql/ivm/data.js.map +1 -0
  760. package/out/zql/src/zql/ivm/filter.d.ts +27 -0
  761. package/out/zql/src/zql/ivm/filter.d.ts.map +1 -0
  762. package/out/zql/src/zql/ivm/filter.js +60 -0
  763. package/out/zql/src/zql/ivm/filter.js.map +1 -0
  764. package/out/zql/src/zql/ivm/join.d.ts +37 -0
  765. package/out/zql/src/zql/ivm/join.d.ts.map +1 -0
  766. package/out/zql/src/zql/ivm/join.js +228 -0
  767. package/out/zql/src/zql/ivm/join.js.map +1 -0
  768. package/out/zql/src/zql/ivm/lookahead-iterator.d.ts +13 -0
  769. package/out/zql/src/zql/ivm/lookahead-iterator.d.ts.map +1 -0
  770. package/out/zql/src/zql/ivm/lookahead-iterator.js +45 -0
  771. package/out/zql/src/zql/ivm/lookahead-iterator.js.map +1 -0
  772. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +10 -0
  773. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -0
  774. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.js +34 -0
  775. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.js.map +1 -0
  776. package/out/zql/src/zql/ivm/memory-source.d.ts +65 -0
  777. package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -0
  778. package/out/zql/src/zql/ivm/memory-source.js +508 -0
  779. package/out/zql/src/zql/ivm/memory-source.js.map +1 -0
  780. package/out/zql/src/zql/ivm/memory-storage.d.ts +18 -0
  781. package/out/zql/src/zql/ivm/memory-storage.d.ts.map +1 -0
  782. package/out/zql/src/zql/ivm/operator.d.ts +89 -0
  783. package/out/zql/src/zql/ivm/operator.d.ts.map +1 -0
  784. package/out/zql/src/zql/ivm/operator.js +2 -0
  785. package/out/zql/src/zql/ivm/operator.js.map +1 -0
  786. package/out/zql/src/zql/ivm/schema.d.ts +29 -0
  787. package/out/zql/src/zql/ivm/schema.d.ts.map +1 -0
  788. package/out/zql/src/zql/ivm/schema.js +3 -0
  789. package/out/zql/src/zql/ivm/schema.js.map +1 -0
  790. package/out/zql/src/zql/ivm/skip.d.ts +24 -0
  791. package/out/zql/src/zql/ivm/skip.d.ts.map +1 -0
  792. package/out/zql/src/zql/ivm/skip.js +113 -0
  793. package/out/zql/src/zql/ivm/skip.js.map +1 -0
  794. package/out/zql/src/zql/ivm/source.d.ts +57 -0
  795. package/out/zql/src/zql/ivm/source.d.ts.map +1 -0
  796. package/out/zql/src/zql/ivm/source.js +2 -0
  797. package/out/zql/src/zql/ivm/source.js.map +1 -0
  798. package/out/zql/src/zql/ivm/stream.d.ts +11 -0
  799. package/out/zql/src/zql/ivm/stream.d.ts.map +1 -0
  800. package/out/zql/src/zql/ivm/stream.js +19 -0
  801. package/out/zql/src/zql/ivm/stream.js.map +1 -0
  802. package/out/zql/src/zql/ivm/take.d.ts +24 -0
  803. package/out/zql/src/zql/ivm/take.d.ts.map +1 -0
  804. package/out/zql/src/zql/ivm/take.js +453 -0
  805. package/out/zql/src/zql/ivm/take.js.map +1 -0
  806. package/out/zql/src/zql/query/query-impl.d.ts +45 -0
  807. package/out/zql/src/zql/query/query-impl.d.ts.map +1 -0
  808. package/out/zql/src/zql/query/query.d.ts +130 -0
  809. package/out/zql/src/zql/query/query.d.ts.map +1 -0
  810. package/out/zql/src/zql/query/schema.d.ts +53 -0
  811. package/out/zql/src/zql/query/schema.d.ts.map +1 -0
  812. package/out/zql/src/zql/query/typed-view.d.ts +10 -0
  813. package/out/zql/src/zql/query/typed-view.d.ts.map +1 -0
  814. package/out/zqlite/src/db.d.ts +23 -0
  815. package/out/zqlite/src/db.d.ts.map +1 -0
  816. package/out/zqlite/src/db.js +117 -0
  817. package/out/zqlite/src/db.js.map +1 -0
  818. package/out/zqlite/src/internal/sql.d.ts +9 -0
  819. package/out/zqlite/src/internal/sql.d.ts.map +1 -0
  820. package/out/zqlite/src/internal/sql.js +14 -0
  821. package/out/zqlite/src/internal/sql.js.map +1 -0
  822. package/out/zqlite/src/internal/statement-cache.d.ts +67 -0
  823. package/out/zqlite/src/internal/statement-cache.d.ts.map +1 -0
  824. package/out/zqlite/src/internal/statement-cache.js +119 -0
  825. package/out/zqlite/src/internal/statement-cache.js.map +1 -0
  826. package/out/zqlite/src/table-source.d.ts +43 -0
  827. package/out/zqlite/src/table-source.d.ts.map +1 -0
  828. package/out/zqlite/src/table-source.js +393 -0
  829. package/out/zqlite/src/table-source.js.map +1 -0
  830. package/package.json +79 -0
  831. package/tool/install-sqlite3.js +37 -0
@@ -0,0 +1,445 @@
1
+ import { resolver } from '@rocicorp/resolver';
2
+ import { assert } from '../../../shared/src/asserts.js';
3
+ import { Queue } from '../../../shared/src/queue.js';
4
+ export var Mode;
5
+ (function (Mode) {
6
+ Mode["SERIALIZABLE"] = "ISOLATION LEVEL SERIALIZABLE";
7
+ Mode["READONLY"] = "ISOLATION LEVEL REPEATABLE READ READ ONLY";
8
+ })(Mode || (Mode = {}));
9
+ /**
10
+ * A TransactionPool is a pool of one or more {@link postgres.TransactionSql}
11
+ * objects that participate in processing a dynamic queue of tasks.
12
+ *
13
+ * This can be used for serializing a set of tasks that arrive asynchronously
14
+ * to a single transaction (for writing) or performing parallel reads across
15
+ * multiple connections at the same snapshot (e.g. read only snapshot transactions).
16
+ */
17
+ export class TransactionPool {
18
+ #lc;
19
+ #mode;
20
+ #init;
21
+ #cleanup;
22
+ #tasks = new Queue();
23
+ #workers = [];
24
+ #initialWorkers;
25
+ #maxWorkers;
26
+ #timeoutTask;
27
+ #numWorkers;
28
+ #numWorking = 0;
29
+ #db; // set when running. stored to allow adaptive pool sizing.
30
+ #refCount = 1;
31
+ #done = false;
32
+ #failure;
33
+ /**
34
+ * @param init A {@link Task} that is run in each Transaction before it begins
35
+ * processing general tasks. This can be used to to set the transaction
36
+ * mode, export/set snapshots, etc. This will be run even if
37
+ * {@link fail} has been called on the pool.
38
+ * @param cleanup A {@link Task} that is run in each Transaction before it closes.
39
+ * This will be run even if {@link fail} has been called, or if a
40
+ * preceding Task threw an Error.
41
+ * @param initialWorkers The initial number of transaction workers to process tasks.
42
+ * This is the steady state number of workers that will be kept
43
+ * alive if the TransactionPool is long lived.
44
+ * This must be greater than 0. Defaults to 1.
45
+ * @param maxWorkers When specified, allows the pool to grow to `maxWorkers`. This
46
+ * must be greater than or equal to `initialWorkers`. On-demand
47
+ * workers will be shut down after an idle timeout of 5 seconds.
48
+ */
49
+ constructor(lc, mode, init, cleanup, initialWorkers = 1, maxWorkers = initialWorkers, timeoutTasks = TIMEOUT_TASKS) {
50
+ assert(initialWorkers > 0);
51
+ assert(maxWorkers >= initialWorkers);
52
+ this.#lc = lc;
53
+ this.#mode = mode;
54
+ this.#init = init ? queuedStmt(init) : undefined;
55
+ this.#cleanup = cleanup ? queuedStmt(cleanup) : undefined;
56
+ this.#initialWorkers = initialWorkers;
57
+ this.#numWorkers = initialWorkers;
58
+ this.#maxWorkers = maxWorkers;
59
+ this.#timeoutTask = timeoutTasks;
60
+ }
61
+ /**
62
+ * Starts the pool of workers to process Tasks with transactions opened from the
63
+ * specified {@link db}.
64
+ */
65
+ run(db) {
66
+ assert(!this.#db, 'already running');
67
+ this.#db = db;
68
+ for (let i = 0; i < this.#numWorkers; i++) {
69
+ this.#addWorker(db);
70
+ }
71
+ return this;
72
+ }
73
+ /**
74
+ * Adds context parameters to internal LogContext. This is useful for context values that
75
+ * are not known when the TransactionPool is constructed (e.g. determined after a database
76
+ * call when the pool is running).
77
+ *
78
+ * Returns an object that can be used to add more parameters.
79
+ */
80
+ addLoggingContext(key, value) {
81
+ this.#lc = this.#lc.withContext(key, value);
82
+ return {
83
+ addLoggingContext: (key, value) => this.addLoggingContext(key, value),
84
+ };
85
+ }
86
+ /**
87
+ * Returns a promise that:
88
+ *
89
+ * * resolves after {@link setDone} has been called (or the the pool as been {@link unref}ed
90
+ * to a 0 ref count), once all added tasks have been processed and all transactions have been
91
+ * committed or closed.
92
+ *
93
+ * * rejects if processing was aborted with {@link fail} or if processing any of
94
+ * the tasks resulted in an error. All uncommitted transactions will have been
95
+ * rolled back.
96
+ *
97
+ * Note that partial failures are possible if processing writes with multiple workers
98
+ * (e.g. `setDone` is called, allowing some workers to commit, after which other
99
+ * workers encounter errors). Using a TransactionPool in this manner does not make
100
+ * sense in terms of transactional semantics, and is thus not recommended.
101
+ *
102
+ * For reads, however, multiple workers is useful for performing parallel reads
103
+ * at the same snapshot. See {@link synchronizedSnapshots} for an example.
104
+ * Resolves or rejects when all workers are done or failed.
105
+ */
106
+ async done() {
107
+ const numWorkers = this.#workers.length;
108
+ await Promise.all(this.#workers);
109
+ if (numWorkers < this.#workers.length) {
110
+ // If workers were added after the initial set, they must be awaited to ensure
111
+ // that the results (i.e. rejections) of all workers are accounted for. This only
112
+ // needs to be re-done once, because the fact that the first `await` completed
113
+ // guarantees that the pool is in a terminal state and no new workers can be added.
114
+ await Promise.all(this.#workers);
115
+ }
116
+ this.#lc.debug?.('transaction pool done');
117
+ }
118
+ #addWorker(db) {
119
+ const lc = this.#lc.withContext('worker', `#${this.#workers.length + 1}`);
120
+ const tt = this.#workers.length < this.#initialWorkers
121
+ ? this.#timeoutTask.forInitialWorkers
122
+ : this.#timeoutTask.forExtraWorkers;
123
+ const { timeoutMs } = tt;
124
+ const timeoutTask = tt.task === 'done' ? 'done' : { task: queuedStmt(tt.task) };
125
+ const worker = async (tx) => {
126
+ try {
127
+ lc.debug?.('started worker');
128
+ const pending = [];
129
+ const executeTask = async (taskTracker) => {
130
+ const { task, resolver } = taskTracker;
131
+ task !== this.#init && this.#numWorking++;
132
+ let result;
133
+ try {
134
+ result = await task(tx, lc);
135
+ if (result instanceof Statements) {
136
+ // Execute the statements (i.e. send to the db) immediately and add them to
137
+ // `pending` for the final await.
138
+ //
139
+ // Optimization: Fail immediately on rejections to prevent more tasks from
140
+ // queueing up. This can save a lot of time if an initial task fails before
141
+ // many subsequent tasks (e.g. transaction replay detection).
142
+ const start = Date.now();
143
+ pending.push(...result.stmts.map(stmt => stmt
144
+ .execute()
145
+ .then(() => lc.debug?.(`Executed statement (${Date.now() - start} ms)`, stmt.strings))
146
+ .catch(e => this.fail(e))));
147
+ }
148
+ }
149
+ catch (e) {
150
+ if (resolver) {
151
+ resolver.reject(e); // Reject the ReadTask only.
152
+ }
153
+ else {
154
+ throw e; // Fail the pool for (write) Tasks.
155
+ }
156
+ }
157
+ finally {
158
+ task !== this.#init && this.#numWorking--;
159
+ resolver?.resolve(
160
+ // Note: This must be a ReadResult because of the TaskTracker type.
161
+ result instanceof ReadResult ? result.result : result?.stmts);
162
+ }
163
+ };
164
+ let task = this.#init
165
+ ? { task: this.#init }
166
+ : await this.#tasks.dequeue(timeoutTask, timeoutMs);
167
+ try {
168
+ while (task !== 'done') {
169
+ if (task instanceof Error ||
170
+ (task.task !== this.#init && this.#failure)) {
171
+ await Promise.allSettled(pending); // avoid unhandled rejections
172
+ throw this.#failure ?? task;
173
+ }
174
+ await executeTask(task);
175
+ // await the next task.
176
+ task = await this.#tasks.dequeue(timeoutTask, timeoutMs);
177
+ }
178
+ }
179
+ finally {
180
+ // Execute the cleanup task even on failure.
181
+ if (this.#cleanup) {
182
+ await executeTask({ task: this.#cleanup });
183
+ }
184
+ }
185
+ lc.debug?.('worker done');
186
+ return Promise.all(pending);
187
+ }
188
+ catch (e) {
189
+ lc.error?.('error from worker', e);
190
+ this.fail(e); // A failure in any worker should fail the pool.
191
+ throw e;
192
+ }
193
+ };
194
+ this.#workers.push(db.begin(this.#mode, worker).finally(() => this.#numWorkers--));
195
+ // After adding the worker, enqueue a terminal signal if we are in either of the
196
+ // terminal states (both of which prevent more tasks from being enqueued), to ensure
197
+ // that the added worker eventually exits.
198
+ if (this.#done) {
199
+ void this.#tasks.enqueue('done');
200
+ }
201
+ if (this.#failure) {
202
+ void this.#tasks.enqueue(this.#failure);
203
+ }
204
+ }
205
+ process(task) {
206
+ this.#trackAndProcess({ task: queuedStmt(task) });
207
+ }
208
+ #trackAndProcess(taskTracker) {
209
+ assert(!this.#done, 'already set done');
210
+ if (this.#failure) {
211
+ taskTracker.resolver?.reject(this.#failure);
212
+ return;
213
+ }
214
+ void this.#tasks.enqueue(taskTracker);
215
+ // Check if the pool size can and should be increased.
216
+ if (this.#numWorkers < this.#maxWorkers) {
217
+ const outstanding = this.#tasks.size();
218
+ if (outstanding > this.#numWorkers - this.#numWorking) {
219
+ this.#db && this.#addWorker(this.#db);
220
+ this.#numWorkers++;
221
+ this.#lc.debug?.(`Increased pool size to ${this.#numWorkers}`);
222
+ }
223
+ }
224
+ }
225
+ processReadTask(readTask) {
226
+ const r = resolver();
227
+ this.#trackAndProcess({
228
+ task: queuedRead(readTask),
229
+ resolver: r,
230
+ });
231
+ return r.promise;
232
+ }
233
+ /**
234
+ * Signals to all workers to end their transaction once all pending tasks have
235
+ * been completed.
236
+ */
237
+ setDone() {
238
+ assert(!this.#done, 'already set done');
239
+ this.#done = true;
240
+ for (let i = 0; i < this.#workers.length; i++) {
241
+ void this.#tasks.enqueue('done');
242
+ }
243
+ }
244
+ /**
245
+ * An alternative to explicitly calling {@link setDone}, `ref()` increments an internal reference
246
+ * count, and {@link unref} decrements it. When the reference count reaches 0, {@link setDone} is
247
+ * automatically called. A TransactionPool is initialized with a reference count of 1.
248
+ *
249
+ * `ref()` should be called before sharing the pool with another component, and only after the
250
+ * pool has been started with {@link run()}. It must not be called on a TransactionPool that is
251
+ * already done (either via {@link unref()} or {@link setDone()}. (Doing so indicates a logical
252
+ * error in the code.)
253
+ *
254
+ * It follows that:
255
+ * * The creator of the TransactionPool is responsible for running it.
256
+ * * The TransactionPool should be ref'ed before being sharing.
257
+ * * The receiver of the TransactionPool is only responsible for unref'ing it.
258
+ *
259
+ * On the other hand, a transaction pool that fails with a runtime error can still be ref'ed;
260
+ * attempts to use the pool will result in the runtime error as expected.
261
+ */
262
+ ref(count = 1) {
263
+ assert(this.#db !== undefined && !this.#done, `Cannot ref() a TransactionPool that is not running`);
264
+ this.#refCount += count;
265
+ }
266
+ /**
267
+ * Decrements the internal reference count, automatically invoking {@link setDone} when it reaches 0.
268
+ */
269
+ unref(count = 1) {
270
+ assert(count <= this.#refCount);
271
+ this.#refCount -= count;
272
+ if (this.#refCount === 0) {
273
+ this.setDone();
274
+ }
275
+ }
276
+ isRunning() {
277
+ return this.#db !== undefined && !this.#done && this.#failure === undefined;
278
+ }
279
+ /**
280
+ * Signals all workers to fail their transactions with the given {@link err}.
281
+ */
282
+ fail(err) {
283
+ if (!this.#failure) {
284
+ this.#failure = ensureError(err); // Fail fast: this is checked in the worker loop.
285
+ if (this.#failure instanceof ControlFlowError) {
286
+ this.#lc.debug?.(this.#failure);
287
+ }
288
+ else {
289
+ this.#lc.error?.(this.#failure);
290
+ }
291
+ for (let i = 0; i < this.#workers.length; i++) {
292
+ // Enqueue the Error to terminate any workers waiting for tasks.
293
+ void this.#tasks.enqueue(this.#failure);
294
+ }
295
+ }
296
+ }
297
+ }
298
+ /**
299
+ * Init Tasks for Postgres snapshot synchronization across transactions.
300
+ *
301
+ * https://www.postgresql.org/docs/9.3/functions-admin.html#:~:text=Snapshot%20Synchronization%20Functions,identical%20content%20in%20the%20database.
302
+ */
303
+ export function synchronizedSnapshots() {
304
+ const { promise: snapshotExported, resolve: exportSnapshot, reject: failExport, } = resolver();
305
+ const { promise: snapshotCaptured, resolve: captureSnapshot, reject: failCapture, } = resolver();
306
+ // Set by the first worker to run its initTask, who becomes responsible for
307
+ // exporting the snapshot. TODO: Plumb the workerNum and use that instead.
308
+ let firstWorkerRun = false;
309
+ // Note: Neither init task should `await`, as processing in each pool can proceed
310
+ // as soon as the statements have been sent to the db. However, the `cleanupExport`
311
+ // task must `await` the result of `setSnapshot` to ensure that exporting transaction
312
+ // does not close before the snapshot has been captured.
313
+ return {
314
+ exportSnapshot: tx => {
315
+ if (!firstWorkerRun) {
316
+ firstWorkerRun = true;
317
+ const stmt = tx `SELECT pg_export_snapshot() AS snapshot; SET TRANSACTION READ ONLY;`.simple();
318
+ // Intercept the promise to propagate the information to `snapshotExported`.
319
+ stmt.then(result => exportSnapshot(result[0].snapshot), failExport);
320
+ return [stmt]; // Also return the stmt so that it gets awaited (and errors handled).
321
+ }
322
+ return snapshotExported.then(snapshotID => [
323
+ tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`),
324
+ tx `SET TRANSACTION READ ONLY`.simple(),
325
+ ]);
326
+ },
327
+ setSnapshot: tx => snapshotExported.then(snapshotID => {
328
+ const stmt = tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`);
329
+ // Intercept the promise to propagate the information to `cleanupExport`.
330
+ stmt.then(captureSnapshot, failCapture);
331
+ return [stmt];
332
+ }),
333
+ cleanupExport: async () => {
334
+ await snapshotCaptured;
335
+ return [];
336
+ },
337
+ snapshotID: snapshotExported,
338
+ };
339
+ }
340
+ /**
341
+ * Returns `init` and `cleanup` {@link Task}s for a TransactionPool that ensure its workers
342
+ * share a single view of the database. This is used for View Notifier and View Syncer logic
343
+ * that allows multiple entities to perform parallel reads on the same snapshot of the database.
344
+ */
345
+ export function sharedSnapshot() {
346
+ const { promise: snapshotExported, resolve: exportSnapshot, reject: failExport, } = resolver();
347
+ // Set by the first worker to run its initTask, who becomes responsible for
348
+ // exporting the snapshot.
349
+ let firstWorkerRun = false;
350
+ // Set when any worker is done, signalling that all non-sentinel Tasks have been
351
+ // dequeued, and thus any subsequently spawned workers should skip their initTask
352
+ // since the snapshot is no longer needed (and soon to become invalid).
353
+ let firstWorkerDone = false;
354
+ return {
355
+ init: (tx, lc) => {
356
+ if (!firstWorkerRun) {
357
+ firstWorkerRun = true;
358
+ const stmt = tx `SELECT pg_export_snapshot() AS snapshot;`.simple();
359
+ // Intercept the promise to propagate the information to `snapshotExported`.
360
+ stmt.then(result => exportSnapshot(result[0].snapshot), failExport);
361
+ return [stmt]; // Also return the stmt so that it gets awaited (and errors handled).
362
+ }
363
+ if (!firstWorkerDone) {
364
+ return snapshotExported.then(snapshotID => [
365
+ tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`),
366
+ ]);
367
+ }
368
+ lc.debug?.('All work is done. No need to set snapshot');
369
+ return [];
370
+ },
371
+ cleanup: () => {
372
+ firstWorkerDone = true;
373
+ return [];
374
+ },
375
+ snapshotID: snapshotExported,
376
+ };
377
+ }
378
+ /**
379
+ * @returns An `init` Task for importing a snapshot from another transaction.
380
+ */
381
+ export function importSnapshot(snapshotID) {
382
+ const { promise: imported, resolve, reject } = resolver();
383
+ return {
384
+ init: tx => {
385
+ const stmt = tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`);
386
+ stmt.then(() => resolve(), reject);
387
+ return [stmt];
388
+ },
389
+ imported,
390
+ };
391
+ }
392
+ /**
393
+ * A superclass of Errors used for control flow that is needed to handle
394
+ * another Error but does not constitute an error condition itself (e.g.
395
+ * aborting transactions after a previous one fails). Subclassing this Error
396
+ * will result in lowering the log level from `error` to `debug`.
397
+ */
398
+ export class ControlFlowError extends Error {
399
+ constructor(err) {
400
+ super();
401
+ this.cause = err;
402
+ }
403
+ }
404
+ function ensureError(err) {
405
+ if (err instanceof Error) {
406
+ return err;
407
+ }
408
+ const error = new Error();
409
+ error.cause = err;
410
+ return error;
411
+ }
412
+ // Internal classes for handling read and write tasks in the same queue.
413
+ class Statements {
414
+ stmts;
415
+ constructor(stmts) {
416
+ this.stmts = stmts;
417
+ }
418
+ }
419
+ class ReadResult {
420
+ result;
421
+ constructor(result) {
422
+ this.result = result;
423
+ }
424
+ }
425
+ function queuedStmt(task) {
426
+ return async (tx, lc) => new Statements(await task(tx, lc));
427
+ }
428
+ function queuedRead(task) {
429
+ return async (tx, lc) => new ReadResult(await task(tx, lc));
430
+ }
431
+ const IDLE_TIMEOUT_MS = 5_000;
432
+ const KEEPALIVE_TIMEOUT_MS = 60_000;
433
+ const KEEPALIVE_TASK = tx => [tx `SELECT 1`.simple()];
434
+ // Production timeout tasks. Overridden in tests.
435
+ const TIMEOUT_TASKS = {
436
+ forInitialWorkers: {
437
+ timeoutMs: KEEPALIVE_TIMEOUT_MS,
438
+ task: KEEPALIVE_TASK,
439
+ },
440
+ forExtraWorkers: {
441
+ timeoutMs: IDLE_TIMEOUT_MS,
442
+ task: 'done',
443
+ },
444
+ };
445
+ //# sourceMappingURL=transaction-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-pool.js","sourceRoot":"","sources":["../../../../../zero-cache/src/db/transaction-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Worker } from '../types/processes.js';
2
+ export default function runWorker(parent: Worker): Promise<void>;
3
+ //# sourceMappingURL=change-streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAK/B,wBAA8B,SAAS,CAAC,MAAM,EAAE,MAAM,iBAqCrD"}
@@ -0,0 +1,30 @@
1
+ import { must } from '../../../shared/src/must.js';
2
+ import { getZeroConfig } from '../config/zero-config.js';
3
+ import { ChangeStreamerHttpServer } from '../services/change-streamer/change-streamer-http.js';
4
+ import { initializeStreamer } from '../services/change-streamer/change-streamer-service.js';
5
+ import { initializeChangeSource } from '../services/change-streamer/pg/change-source.js';
6
+ import { runOrExit } from '../services/runner.js';
7
+ import { pgClient } from '../types/pg.js';
8
+ import { parentWorker, singleProcessMode, } from '../types/processes.js';
9
+ import { createLogContext } from './logging.js';
10
+ const MAX_CHANGE_DB_CONNECTIONS = 5;
11
+ export default async function runWorker(parent) {
12
+ const config = await getZeroConfig();
13
+ const lc = createLogContext(config.log, { worker: 'change-streamer' });
14
+ // Kick off DB connection warmup in the background.
15
+ const changeDB = pgClient(lc, config.changeDbUri, {
16
+ max: MAX_CHANGE_DB_CONNECTIONS,
17
+ });
18
+ void Promise.allSettled(Array.from({ length: MAX_CHANGE_DB_CONNECTIONS }, () => changeDB `SELECT 1`.simple().execute()));
19
+ // Note: This performs initial sync of the replica if necessary.
20
+ const { changeSource, replicationConfig } = await initializeChangeSource(lc, config.upstreamUri, config.shard, config.replicaDbFile);
21
+ const changeStreamer = await initializeStreamer(lc, changeDB, changeSource, replicationConfig);
22
+ const changeStreamerWebServer = new ChangeStreamerHttpServer(lc, changeStreamer);
23
+ void runOrExit(lc, changeStreamer, changeStreamerWebServer);
24
+ parent.send(['ready', { ready: true }]);
25
+ }
26
+ // fork()
27
+ if (!singleProcessMode()) {
28
+ void runWorker(must(parentWorker));
29
+ }
30
+ //# sourceMappingURL=change-streamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-streamer.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAC,kBAAkB,EAAC,MAAM,wDAAwD,CAAC;AAC1F,OAAO,EAAC,sBAAsB,EAAC,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,YAAY,EACZ,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IACpD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,iBAAiB,EAAC,CAAC,CAAC;IAErE,mDAAmD;IACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE;QAChD,GAAG,EAAE,yBAAyB;KAC/B,CAAC,CAAC;IACH,KAAK,OAAO,CAAC,UAAU,CACrB,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,yBAAyB,EAAC,EAAE,GAAG,EAAE,CACnD,QAAQ,CAAA,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CACtC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,EAAC,YAAY,EAAE,iBAAiB,EAAC,GAAG,MAAM,sBAAsB,CACpE,EAAE,EACF,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,aAAa,CACrB,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAC7C,EAAE,EACF,QAAQ,EACR,YAAY,EACZ,iBAAiB,CAClB,CAAC;IAEF,MAAM,uBAAuB,GAAG,IAAI,wBAAwB,CAC1D,EAAE,EACF,cAAc,CACf,CAAC;IAEF,KAAK,SAAS,CAAC,EAAE,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;IAE5D,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS;AACT,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { LogContext } from '@rocicorp/logger';
2
+ import { type LogConfig } from '../config/zero-config.js';
3
+ export declare function createLogContext(config: LogConfig, context: {
4
+ worker: string;
5
+ }): LogContext;
6
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA6B,MAAM,kBAAkB,CAAC;AAGxE,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAkBxD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,GACxB,UAAU,CAGZ"}
@@ -0,0 +1,23 @@
1
+ import { LogContext, TeeLogSink, consoleLogSink } from '@rocicorp/logger';
2
+ import { DatadogLogSink } from '../../../datadog/src/datadog-log-sink.js';
3
+ import { pid } from 'node:process';
4
+ import {} from '../config/zero-config.js';
5
+ const DATADOG_SOURCE = 'zeroWorker';
6
+ function createLogSink(config) {
7
+ if (config.datadogLogsApiKey === undefined) {
8
+ return consoleLogSink;
9
+ }
10
+ return new TeeLogSink([
11
+ new DatadogLogSink({
12
+ apiKey: config.datadogLogsApiKey,
13
+ service: config.datadogServiceLabel ?? '',
14
+ source: DATADOG_SOURCE,
15
+ }),
16
+ consoleLogSink,
17
+ ]);
18
+ }
19
+ export function createLogContext(config, context) {
20
+ const ctx = { ...context, pid };
21
+ return new LogContext(config.level, ctx, createLogSink(config));
22
+ }
23
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAC,GAAG,EAAC,MAAM,cAAc,CAAC;AACjC,OAAO,EAAgB,MAAM,0BAA0B,CAAC;AAExD,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,SAAS,aAAa,CAAC,MAAiB;IACtC,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,UAAU,CAAC;QACpB,IAAI,cAAc,CAAC;YACjB,MAAM,EAAE,MAAM,CAAC,iBAAiB;YAChC,OAAO,EAAE,MAAM,CAAC,mBAAmB,IAAI,EAAE;YACzC,MAAM,EAAE,cAAc;SACvB,CAAC;QACF,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,OAAyB;IAEzB,MAAM,GAAG,GAAG,EAAC,GAAG,OAAO,EAAE,GAAG,EAAC,CAAC;IAC9B,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import 'dotenv/config';
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/main.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { resolver } from '@rocicorp/resolver';
2
+ import 'dotenv/config';
3
+ import { availableParallelism } from 'node:os';
4
+ import path from 'node:path';
5
+ import { getZeroConfig } from '../config/zero-config.js';
6
+ import { Dispatcher } from '../services/dispatcher/dispatcher.js';
7
+ import { initViewSyncerSchema } from '../services/view-syncer/schema/pg-migrations.js';
8
+ import { pgClient } from '../types/pg.js';
9
+ import { childWorker } from '../types/processes.js';
10
+ import { orTimeout } from '../types/timeout.js';
11
+ import { createNotifierFrom, handleSubscriptionsFrom, subscribeTo, } from '../workers/replicator.js';
12
+ import { createLogContext } from './logging.js';
13
+ const startMs = Date.now();
14
+ const config = await getZeroConfig();
15
+ const lc = createLogContext(config.log, { worker: 'dispatcher' });
16
+ function logErrorAndExit(err) {
17
+ lc.error?.(err);
18
+ process.exit(1);
19
+ }
20
+ const ready = [];
21
+ function loadWorker(modulePath, id, ...args) {
22
+ // modulePath is relative to this file
23
+ const ext = path.extname(import.meta.url);
24
+ // modulePath is .ts. If we have been compiled, it should be changed to .js
25
+ modulePath = modulePath.replace(/\.ts$/, ext);
26
+ const absModulePath = new URL(modulePath, import.meta.url).pathname;
27
+ const worker = childWorker(absModulePath, ...args);
28
+ const name = path.basename(absModulePath, ext) + (id ? ` (${id})` : '');
29
+ const { promise, resolve } = resolver();
30
+ ready.push(promise);
31
+ return worker
32
+ .onceMessageType('ready', () => {
33
+ lc.debug?.(`${name} ready (${Date.now() - startMs} ms)`);
34
+ resolve();
35
+ })
36
+ .on('close', logErrorAndExit);
37
+ }
38
+ const { promise: changeStreamerReady, resolve } = resolver();
39
+ const changeStreamer = config.changeStreamerUri
40
+ ? resolve()
41
+ : loadWorker('./change-streamer.ts').once('message', resolve);
42
+ const numSyncers = config.numSyncWorkers
43
+ ? Number(config.numSyncWorkers)
44
+ : // Reserve 1 core for the replicator. The change-streamer is not CPU heavy.
45
+ Math.max(1, availableParallelism() - 1);
46
+ if (numSyncers) {
47
+ // Technically, setting up the CVR DB schema is the responsibility of the Syncer,
48
+ // but it is done here in the main thread because it is wasteful to have all of
49
+ // the Syncers attempt the migration in parallel.
50
+ const cvrDB = pgClient(lc, config.cvrDbUri);
51
+ await initViewSyncerSchema(lc, cvrDB);
52
+ void cvrDB.end();
53
+ }
54
+ // Start the replicator after the change-streamer is running to avoid
55
+ // connect error messages and exponential backoff.
56
+ await changeStreamerReady;
57
+ if (config.litestream) {
58
+ const mode = 'backup';
59
+ const replicator = loadWorker('./replicator.ts', mode, mode).once('message', () => subscribeTo(lc, replicator));
60
+ const notifier = createNotifierFrom(lc, replicator);
61
+ if (changeStreamer) {
62
+ handleSubscriptionsFrom(lc, changeStreamer, notifier);
63
+ }
64
+ }
65
+ const syncers = [];
66
+ if (numSyncers) {
67
+ const mode = config.litestream ? 'serving-copy' : 'serving';
68
+ const replicator = loadWorker('./replicator.ts', mode, mode).once('message', () => subscribeTo(lc, replicator));
69
+ const notifier = createNotifierFrom(lc, replicator);
70
+ for (let i = 0; i < numSyncers; i++) {
71
+ syncers.push(loadWorker('./syncer.ts', i + 1));
72
+ }
73
+ syncers.forEach(syncer => handleSubscriptionsFrom(lc, syncer, notifier));
74
+ }
75
+ lc.info?.('waiting for workers to be ready ...');
76
+ if ((await orTimeout(Promise.all(ready), 30_000)) === 'timed-out') {
77
+ lc.info?.(`timed out waiting for readiness (${Date.now() - startMs} ms)`);
78
+ }
79
+ else {
80
+ lc.info?.(`all workers ready (${Date.now() - startMs} ms)`);
81
+ }
82
+ if (numSyncers) {
83
+ const workers = { syncers };
84
+ const dispatcher = new Dispatcher(lc, () => workers);
85
+ try {
86
+ await dispatcher.run();
87
+ }
88
+ catch (err) {
89
+ logErrorAndExit(err);
90
+ }
91
+ }
92
+ //# sourceMappingURL=main.js.map