@rocicorp/zero 1.12.0-canary.0 → 1.12.0-canary.10

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 (1387) hide show
  1. package/out/_virtual/{_@oxc-project_runtime@0.130.0/helpers → _@oxc-project_runtime@0.154.0/helpers/esm}/usingCtx.js +2 -2
  2. package/out/analyze-query/src/analyze-cli.d.ts.map +1 -1
  3. package/out/analyze-query/src/analyze-cli.js +4 -2
  4. package/out/analyze-query/src/analyze-cli.js.map +1 -1
  5. package/out/analyze-query/src/bin-transform.js +4 -3
  6. package/out/analyze-query/src/bin-transform.js.map +1 -1
  7. package/out/analyze-query/src/zql-chain.d.ts +23 -0
  8. package/out/analyze-query/src/zql-chain.d.ts.map +1 -0
  9. package/out/analyze-query/src/zql-chain.js +162 -0
  10. package/out/analyze-query/src/zql-chain.js.map +1 -0
  11. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  12. package/out/ast-to-zql/src/bin.js +4 -3
  13. package/out/ast-to-zql/src/bin.js.map +1 -1
  14. package/out/ast-to-zql/src/format.js.map +1 -1
  15. package/out/datadog/src/datadog-log-sink.js +5 -4
  16. package/out/datadog/src/datadog-log-sink.js.map +1 -1
  17. package/out/otel/src/log-options.js.map +1 -1
  18. package/out/replicache/src/btree/node.d.ts +0 -2
  19. package/out/replicache/src/btree/node.d.ts.map +1 -1
  20. package/out/replicache/src/btree/node.js +14 -12
  21. package/out/replicache/src/btree/node.js.map +1 -1
  22. package/out/replicache/src/btree/read.js +4 -2
  23. package/out/replicache/src/btree/read.js.map +1 -1
  24. package/out/replicache/src/btree/splice.js.map +1 -1
  25. package/out/replicache/src/btree/write.js +9 -5
  26. package/out/replicache/src/btree/write.js.map +1 -1
  27. package/out/replicache/src/config.js +1 -2
  28. package/out/replicache/src/connection-loop.d.ts.map +1 -1
  29. package/out/replicache/src/connection-loop.js +1 -1
  30. package/out/replicache/src/connection-loop.js.map +1 -1
  31. package/out/replicache/src/dag/chunk.js +1 -1
  32. package/out/replicache/src/dag/gc.js.map +1 -1
  33. package/out/replicache/src/dag/lazy-store.js +8 -7
  34. package/out/replicache/src/dag/lazy-store.js.map +1 -1
  35. package/out/replicache/src/dag/store-impl.js +1 -1
  36. package/out/replicache/src/dag/store-impl.js.map +1 -1
  37. package/out/replicache/src/dag/visitor.js.map +1 -1
  38. package/out/replicache/src/db/commit.d.ts +0 -1
  39. package/out/replicache/src/db/commit.d.ts.map +1 -1
  40. package/out/replicache/src/db/commit.js +5 -3
  41. package/out/replicache/src/db/commit.js.map +1 -1
  42. package/out/replicache/src/db/read.js +1 -1
  43. package/out/replicache/src/db/read.js.map +1 -1
  44. package/out/replicache/src/db/rebase.js.map +1 -1
  45. package/out/replicache/src/db/write.d.ts +0 -2
  46. package/out/replicache/src/db/write.d.ts.map +1 -1
  47. package/out/replicache/src/db/write.js +5 -2
  48. package/out/replicache/src/db/write.js.map +1 -1
  49. package/out/replicache/src/deleted-clients.d.ts +0 -2
  50. package/out/replicache/src/deleted-clients.d.ts.map +1 -1
  51. package/out/replicache/src/deleted-clients.js +5 -3
  52. package/out/replicache/src/deleted-clients.js.map +1 -1
  53. package/out/replicache/src/expo-sqlite.js +1 -2
  54. package/out/replicache/src/frozen-json.d.ts +0 -1
  55. package/out/replicache/src/frozen-json.d.ts.map +1 -1
  56. package/out/replicache/src/frozen-json.js +1 -1
  57. package/out/replicache/src/frozen-json.js.map +1 -1
  58. package/out/replicache/src/get-default-puller.js +1 -1
  59. package/out/replicache/src/hash.js +1 -1
  60. package/out/replicache/src/hash.js.map +1 -1
  61. package/out/replicache/src/impl.js +1 -2
  62. package/out/replicache/src/index-defs.d.ts +0 -2
  63. package/out/replicache/src/index-defs.d.ts.map +1 -1
  64. package/out/replicache/src/index-defs.js +5 -3
  65. package/out/replicache/src/index-defs.js.map +1 -1
  66. package/out/replicache/src/kv/expo-sqlite/store.d.ts +0 -1
  67. package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
  68. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  69. package/out/replicache/src/kv/idb-store.js +2 -2
  70. package/out/replicache/src/kv/idb-store.js.map +1 -1
  71. package/out/replicache/src/kv/mem-fallback-store.js +1 -1
  72. package/out/replicache/src/kv/mem-fallback-store.js.map +1 -1
  73. package/out/replicache/src/kv/mem-store.js.map +1 -1
  74. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
  75. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
  76. package/out/replicache/src/kv/read-impl.js.map +1 -1
  77. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  78. package/out/replicache/src/kv/sqlite-store.js +8 -4
  79. package/out/replicache/src/kv/sqlite-store.js.map +1 -1
  80. package/out/replicache/src/kv/throw-if-closed.d.ts +0 -3
  81. package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
  82. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  83. package/out/replicache/src/kv/write-impl-base.js +4 -1
  84. package/out/replicache/src/kv/write-impl-base.js.map +1 -1
  85. package/out/replicache/src/kv/write-impl.js.map +1 -1
  86. package/out/replicache/src/log-options.js +2 -1
  87. package/out/replicache/src/log-options.js.map +1 -1
  88. package/out/replicache/src/make-idb-name.js +1 -1
  89. package/out/replicache/src/new-client-channel.js +9 -7
  90. package/out/replicache/src/new-client-channel.js.map +1 -1
  91. package/out/replicache/src/on-persist-channel.js +1 -1
  92. package/out/replicache/src/on-persist-channel.js.map +1 -1
  93. package/out/replicache/src/op-sqlite.js +1 -2
  94. package/out/replicache/src/pending-mutations.js +2 -1
  95. package/out/replicache/src/pending-mutations.js.map +1 -1
  96. package/out/replicache/src/persist/client-gc.js +2 -2
  97. package/out/replicache/src/persist/client-gc.js.map +1 -1
  98. package/out/replicache/src/persist/client-group-gc.d.ts +0 -7
  99. package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -1
  100. package/out/replicache/src/persist/client-group-gc.js +1 -1
  101. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  102. package/out/replicache/src/persist/client-groups.js +1 -1
  103. package/out/replicache/src/persist/client-groups.js.map +1 -1
  104. package/out/replicache/src/persist/clients.js +1 -1
  105. package/out/replicache/src/persist/clients.js.map +1 -1
  106. package/out/replicache/src/persist/collect-idb-databases.js +5 -4
  107. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
  108. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
  109. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
  110. package/out/replicache/src/persist/heartbeat.js +2 -2
  111. package/out/replicache/src/persist/heartbeat.js.map +1 -1
  112. package/out/replicache/src/persist/idb-databases-store.js +1 -1
  113. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  114. package/out/replicache/src/persist/make-client-id.js +1 -1
  115. package/out/replicache/src/persist/make-client-id.js.map +1 -1
  116. package/out/replicache/src/persist/persist.js +3 -2
  117. package/out/replicache/src/persist/persist.js.map +1 -1
  118. package/out/replicache/src/persist/refresh.js +8 -5
  119. package/out/replicache/src/persist/refresh.js.map +1 -1
  120. package/out/replicache/src/process-scheduler.js +1 -1
  121. package/out/replicache/src/process-scheduler.js.map +1 -1
  122. package/out/replicache/src/replicache-impl.d.ts +2 -7
  123. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  124. package/out/replicache/src/replicache-impl.js +21 -18
  125. package/out/replicache/src/replicache-impl.js.map +1 -1
  126. package/out/replicache/src/scan-iterator.js.map +1 -1
  127. package/out/replicache/src/scan-options.js +7 -6
  128. package/out/replicache/src/scan-options.js.map +1 -1
  129. package/out/replicache/src/sqlite.js +1 -2
  130. package/out/replicache/src/subscriptions.js +1 -1
  131. package/out/replicache/src/subscriptions.js.map +1 -1
  132. package/out/replicache/src/sync/diff.js +3 -1
  133. package/out/replicache/src/sync/diff.js.map +1 -1
  134. package/out/replicache/src/sync/ids.js.map +1 -1
  135. package/out/replicache/src/sync/patch.d.ts +0 -5
  136. package/out/replicache/src/sync/patch.d.ts.map +1 -1
  137. package/out/replicache/src/sync/patch.js +2 -4
  138. package/out/replicache/src/sync/patch.js.map +1 -1
  139. package/out/replicache/src/sync/pull.d.ts +0 -1
  140. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  141. package/out/replicache/src/sync/pull.js +3 -1
  142. package/out/replicache/src/sync/pull.js.map +1 -1
  143. package/out/replicache/src/sync/push.d.ts +2 -1
  144. package/out/replicache/src/sync/push.d.ts.map +1 -1
  145. package/out/replicache/src/sync/push.js.map +1 -1
  146. package/out/replicache/src/sync/request-id.js +1 -1
  147. package/out/replicache/src/sync/request-id.js.map +1 -1
  148. package/out/replicache/src/transactions.js +1 -1
  149. package/out/replicache/src/transactions.js.map +1 -1
  150. package/out/replicache/src/types.d.ts +2 -1
  151. package/out/replicache/src/types.d.ts.map +1 -1
  152. package/out/shared/src/arrays.js +4 -1
  153. package/out/shared/src/arrays.js.map +1 -1
  154. package/out/shared/src/asserts.d.ts +0 -5
  155. package/out/shared/src/asserts.d.ts.map +1 -1
  156. package/out/shared/src/asserts.js.map +1 -1
  157. package/out/shared/src/bigint-json.d.ts +9 -0
  158. package/out/shared/src/bigint-json.d.ts.map +1 -1
  159. package/out/shared/src/bigint-json.js +27 -2
  160. package/out/shared/src/bigint-json.js.map +1 -1
  161. package/out/shared/src/broadcast-channel.js +1 -1
  162. package/out/shared/src/browser-env.d.ts +0 -17
  163. package/out/shared/src/browser-env.d.ts.map +1 -1
  164. package/out/shared/src/browser-env.js.map +1 -1
  165. package/out/shared/src/btree-set.js +11 -8
  166. package/out/shared/src/btree-set.js.map +1 -1
  167. package/out/shared/src/cache.js.map +1 -1
  168. package/out/shared/src/config.js +1 -1
  169. package/out/shared/src/custom-key-map.js.map +1 -1
  170. package/out/shared/src/custom-key-set.js.map +1 -1
  171. package/out/shared/src/deep-clone.d.ts +0 -1
  172. package/out/shared/src/deep-clone.d.ts.map +1 -1
  173. package/out/shared/src/deep-clone.js.map +1 -1
  174. package/out/shared/src/document-visible.js +1 -1
  175. package/out/shared/src/document-visible.js.map +1 -1
  176. package/out/shared/src/dotenv.js.map +1 -1
  177. package/out/shared/src/error.js +1 -1
  178. package/out/shared/src/error.js.map +1 -1
  179. package/out/shared/src/expand.d.ts +0 -3
  180. package/out/shared/src/expand.d.ts.map +1 -1
  181. package/out/shared/src/hash.js +2 -2
  182. package/out/shared/src/hash.js.map +1 -1
  183. package/out/shared/src/immutable.d.ts +1 -1
  184. package/out/shared/src/immutable.d.ts.map +1 -1
  185. package/out/shared/src/iterables.d.ts +0 -1
  186. package/out/shared/src/iterables.d.ts.map +1 -1
  187. package/out/shared/src/iterables.js.map +1 -1
  188. package/out/shared/src/json-schema.js.map +1 -1
  189. package/out/shared/src/json.js.map +1 -1
  190. package/out/shared/src/logging-test-utils.js.map +1 -1
  191. package/out/shared/src/logging.js +1 -1
  192. package/out/shared/src/logging.js.map +1 -1
  193. package/out/shared/src/navigator.js +1 -1
  194. package/out/shared/src/options-types.d.ts +1 -1
  195. package/out/shared/src/options-types.d.ts.map +1 -1
  196. package/out/shared/src/options.d.ts +2 -3
  197. package/out/shared/src/options.d.ts.map +1 -1
  198. package/out/shared/src/options.js +8 -11
  199. package/out/shared/src/options.js.map +1 -1
  200. package/out/shared/src/promise-race.js +1 -1
  201. package/out/shared/src/promise-race.js.map +1 -1
  202. package/out/shared/src/queue.js +1 -1
  203. package/out/shared/src/queue.js.map +1 -1
  204. package/out/shared/src/record-proxy.js.map +1 -1
  205. package/out/shared/src/resolved-promises.d.ts +0 -4
  206. package/out/shared/src/resolved-promises.d.ts.map +1 -1
  207. package/out/shared/src/resolved-promises.js +0 -1
  208. package/out/shared/src/resolved-promises.js.map +1 -1
  209. package/out/shared/src/resolver.d.ts +9 -0
  210. package/out/shared/src/resolver.d.ts.map +1 -0
  211. package/out/shared/src/resolver.js +6 -0
  212. package/out/shared/src/resolver.js.map +1 -0
  213. package/out/shared/src/ring-buffer.js.map +1 -1
  214. package/out/shared/src/size-of-value.js +7 -10
  215. package/out/shared/src/size-of-value.js.map +1 -1
  216. package/out/shared/src/sleep.js +1 -1
  217. package/out/shared/src/sleep.js.map +1 -1
  218. package/out/shared/src/sorted-entries.js.map +1 -1
  219. package/out/shared/src/tdigest-schema.js.map +1 -1
  220. package/out/shared/src/tdigest.d.ts +0 -1
  221. package/out/shared/src/tdigest.d.ts.map +1 -1
  222. package/out/shared/src/tdigest.js.map +1 -1
  223. package/out/shared/src/valita.js +1 -1
  224. package/out/shared/src/valita.js.map +1 -1
  225. package/out/z2s/src/compiler.js +5 -7
  226. package/out/z2s/src/compiler.js.map +1 -1
  227. package/out/z2s/src/sql.d.ts +1 -5
  228. package/out/z2s/src/sql.d.ts.map +1 -1
  229. package/out/z2s/src/sql.js +1 -1
  230. package/out/z2s/src/sql.js.map +1 -1
  231. package/out/zero/package.js +210 -189
  232. package/out/zero/package.js.map +1 -1
  233. package/out/zero/src/adapters/drizzle.js +1 -2
  234. package/out/zero/src/adapters/kysely.js +1 -2
  235. package/out/zero/src/adapters/pg.js +1 -2
  236. package/out/zero/src/adapters/postgresjs.js +1 -2
  237. package/out/zero/src/adapters/prisma.js +1 -2
  238. package/out/zero/src/analyze.js +1 -2
  239. package/out/zero/src/change-protocol/v0.js +1 -2
  240. package/out/zero/src/expo-sqlite.js +1 -2
  241. package/out/zero/src/op-sqlite.js +1 -2
  242. package/out/zero/src/react-native.js.map +1 -1
  243. package/out/zero/src/sqlite.js +1 -2
  244. package/out/zero/src/zero-cache-dev.js +11 -10
  245. package/out/zero/src/zero-cache-dev.js.map +1 -1
  246. package/out/zero/src/zero-out.js +2 -1
  247. package/out/zero/src/zero-out.js.map +1 -1
  248. package/out/zero-cache/src/auth/auth.js +1 -1
  249. package/out/zero-cache/src/auth/auth.js.map +1 -1
  250. package/out/zero-cache/src/auth/jwt.js +4 -1
  251. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  252. package/out/zero-cache/src/auth/load-permissions.js +1 -1
  253. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  254. package/out/zero-cache/src/auth/read-authorizer.js +3 -2
  255. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  256. package/out/zero-cache/src/auth/write-authorizer.js +15 -19
  257. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  258. package/out/zero-cache/src/config/network.js +1 -1
  259. package/out/zero-cache/src/config/network.js.map +1 -1
  260. package/out/zero-cache/src/config/server-context.js.map +1 -1
  261. package/out/zero-cache/src/config/zero-config.d.ts +19 -11
  262. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  263. package/out/zero-cache/src/config/zero-config.js +47 -10
  264. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  265. package/out/zero-cache/src/custom/fetch.js +1 -1
  266. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  267. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  268. package/out/zero-cache/src/db/create.js.map +1 -1
  269. package/out/zero-cache/src/db/index-predicate.js.map +1 -1
  270. package/out/zero-cache/src/db/lite-tables.d.ts +2 -2
  271. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  272. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  273. package/out/zero-cache/src/db/migration-lite.js +1 -1
  274. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  275. package/out/zero-cache/src/db/migration.js +5 -3
  276. package/out/zero-cache/src/db/migration.js.map +1 -1
  277. package/out/zero-cache/src/db/pg-copy-binary.js +4 -3
  278. package/out/zero-cache/src/db/pg-copy-binary.js.map +1 -1
  279. package/out/zero-cache/src/db/pg-copy.js +0 -1
  280. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  281. package/out/zero-cache/src/db/pg-to-lite.js +1 -1
  282. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  283. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  284. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  285. package/out/zero-cache/src/db/specs.d.ts +3 -4
  286. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  287. package/out/zero-cache/src/db/specs.js +1 -1
  288. package/out/zero-cache/src/db/specs.js.map +1 -1
  289. package/out/zero-cache/src/db/sqlite-corruption.js.map +1 -1
  290. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  291. package/out/zero-cache/src/db/statements.js +9 -2
  292. package/out/zero-cache/src/db/statements.js.map +1 -1
  293. package/out/zero-cache/src/db/transaction-pool.js +6 -4
  294. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  295. package/out/zero-cache/src/db/warmup.js.map +1 -1
  296. package/out/zero-cache/src/observability/events.js +1 -1
  297. package/out/zero-cache/src/observability/events.js.map +1 -1
  298. package/out/zero-cache/src/observability/log-throttle.js.map +1 -1
  299. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  300. package/out/zero-cache/src/scripts/decommission.js +1 -1
  301. package/out/zero-cache/src/scripts/deploy-permissions.js +5 -3
  302. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  303. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  304. package/out/zero-cache/src/server/anonymous-otel-start.js +2 -1
  305. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  306. package/out/zero-cache/src/server/change-streamer.js +49 -16
  307. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  308. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  309. package/out/zero-cache/src/server/logging.js +1 -1
  310. package/out/zero-cache/src/server/logging.js.map +1 -1
  311. package/out/zero-cache/src/server/main.js +2 -2
  312. package/out/zero-cache/src/server/main.js.map +1 -1
  313. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  314. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  315. package/out/zero-cache/src/server/reaper.js +2 -2
  316. package/out/zero-cache/src/server/reaper.js.map +1 -1
  317. package/out/zero-cache/src/server/replicator.js +1 -1
  318. package/out/zero-cache/src/server/replicator.js.map +1 -1
  319. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  320. package/out/zero-cache/src/server/runner/run-worker.js +4 -3
  321. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  322. package/out/zero-cache/src/server/runner/runtime.js +2 -1
  323. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  324. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts +9 -1
  325. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  326. package/out/zero-cache/src/server/runner/zero-dispatcher.js +29 -2
  327. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  328. package/out/zero-cache/src/server/shadow-syncer.js +1 -1
  329. package/out/zero-cache/src/server/shadow-syncer.js.map +1 -1
  330. package/out/zero-cache/src/server/slot-keeper.js.map +1 -1
  331. package/out/zero-cache/src/server/syncer-assigner.js.map +1 -1
  332. package/out/zero-cache/src/server/syncer.js +10 -5
  333. package/out/zero-cache/src/server/syncer.js.map +1 -1
  334. package/out/zero-cache/src/server/worker-dispatcher.js +1 -1
  335. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  336. package/out/zero-cache/src/server/worker-urls.js.map +1 -1
  337. package/out/zero-cache/src/services/analyze.js +2 -2
  338. package/out/zero-cache/src/services/analyze.js.map +1 -1
  339. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +3 -3
  340. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  341. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +1 -1
  342. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  343. package/out/zero-cache/src/services/change-source/common/init-cleanup.js.map +1 -1
  344. package/out/zero-cache/src/services/change-source/common/replica-restore.js.map +1 -1
  345. package/out/zero-cache/src/services/change-source/common/replica-schema.js +4 -4
  346. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  347. package/out/zero-cache/src/services/change-source/custom/change-source.js +1 -1
  348. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  349. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
  350. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +4 -4
  351. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  352. package/out/zero-cache/src/services/change-source/pg/change-source-init.js +52 -27
  353. package/out/zero-cache/src/services/change-source/pg/change-source-init.js.map +1 -1
  354. package/out/zero-cache/src/services/change-source/pg/change-source.js +70 -15
  355. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  356. package/out/zero-cache/src/services/change-source/pg/decommission.js +2 -1
  357. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  358. package/out/zero-cache/src/services/change-source/pg/fork-request.js +54 -0
  359. package/out/zero-cache/src/services/change-source/pg/fork-request.js.map +1 -0
  360. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +9 -7
  361. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  362. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  363. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  364. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +5 -4
  365. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  366. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts +0 -2
  367. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts.map +1 -1
  368. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  369. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js +2 -2
  370. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js.map +1 -1
  371. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js +1 -1
  372. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js.map +1 -1
  373. package/out/zero-cache/src/services/change-source/pg/replication-slots.js +9 -3
  374. package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -1
  375. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +0 -12
  376. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
  377. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +6 -4
  378. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  379. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts +1 -1
  380. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts.map +1 -1
  381. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js +13 -12
  382. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js.map +1 -1
  383. package/out/zero-cache/src/services/change-source/pg/schema/init.js +1 -1
  384. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  385. package/out/zero-cache/src/services/change-source/pg/schema/published.js +2 -2
  386. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  387. package/out/zero-cache/src/services/change-source/pg/schema/replica-stage-enum.js.map +1 -1
  388. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +10 -7
  389. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  390. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +0 -1
  391. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
  392. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +1 -1
  393. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  394. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js +1 -1
  395. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js.map +1 -1
  396. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  397. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  398. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +1 -0
  399. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  400. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  401. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +3 -0
  402. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts.map +1 -1
  403. package/out/zero-cache/src/services/change-source/protocol/current/status.js +2 -1
  404. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  405. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -0
  406. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  407. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  408. package/out/zero-cache/src/services/change-source/protocol/current.js +1 -1
  409. package/out/zero-cache/src/services/change-source/protocol/mod.js +1 -2
  410. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.js.map +1 -1
  411. package/out/zero-cache/src/services/change-streamer/backfill-state.js +1 -1
  412. package/out/zero-cache/src/services/change-streamer/backfill-state.js.map +1 -1
  413. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js +6 -6
  414. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js.map +1 -1
  415. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +56 -21
  416. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  417. package/out/zero-cache/src/services/change-streamer/broadcast.js +2 -2
  418. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
  419. package/out/zero-cache/src/services/change-streamer/change-log-codec.js +2 -3
  420. package/out/zero-cache/src/services/change-streamer/change-log-codec.js.map +1 -1
  421. package/out/zero-cache/src/services/change-streamer/change-log-initializer.js +3 -3
  422. package/out/zero-cache/src/services/change-streamer/change-log-initializer.js.map +1 -1
  423. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.js.map +1 -1
  424. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +8 -4
  425. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  426. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +85 -59
  427. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  428. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  429. package/out/zero-cache/src/services/change-streamer/drain-tracker.js +1 -1
  430. package/out/zero-cache/src/services/change-streamer/drain-tracker.js.map +1 -1
  431. package/out/zero-cache/src/services/change-streamer/forwarder.js +11 -10
  432. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  433. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js +81 -12
  434. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js.map +1 -1
  435. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js +4 -4
  436. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js.map +1 -1
  437. package/out/zero-cache/src/services/change-streamer/replica-poller.js +2 -2
  438. package/out/zero-cache/src/services/change-streamer/replica-poller.js.map +1 -1
  439. package/out/zero-cache/src/services/change-streamer/restore-admission.js +12 -1
  440. package/out/zero-cache/src/services/change-streamer/restore-admission.js.map +1 -1
  441. package/out/zero-cache/src/services/change-streamer/schema/init.js +1 -1
  442. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  443. package/out/zero-cache/src/services/change-streamer/schema/tables.js +1 -1
  444. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  445. package/out/zero-cache/src/services/change-streamer/server-start-metrics.js +42 -0
  446. package/out/zero-cache/src/services/change-streamer/server-start-metrics.js.map +1 -0
  447. package/out/zero-cache/src/services/change-streamer/snapshot-message.js +1 -2
  448. package/out/zero-cache/src/services/change-streamer/snapshot-message.js.map +1 -1
  449. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.js.map +1 -1
  450. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js +2 -2
  451. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js.map +1 -1
  452. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js +2 -2
  453. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js.map +1 -1
  454. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.js.map +1 -1
  455. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.js.map +1 -1
  456. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js +4 -6
  457. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js.map +1 -1
  458. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js +3 -5
  459. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js.map +1 -1
  460. package/out/zero-cache/src/services/change-streamer/storer.js +4 -4
  461. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  462. package/out/zero-cache/src/services/change-streamer/subscribe.js.map +1 -1
  463. package/out/zero-cache/src/services/change-streamer/subscriber.js +8 -7
  464. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  465. package/out/zero-cache/src/services/change-streamer/upstream-acker.js +0 -1
  466. package/out/zero-cache/src/services/change-streamer/upstream-acker.js.map +1 -1
  467. package/out/zero-cache/src/services/heapz.js +2 -1
  468. package/out/zero-cache/src/services/heapz.js.map +1 -1
  469. package/out/zero-cache/src/services/http-service.d.ts +2 -2
  470. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  471. package/out/zero-cache/src/services/http-service.js +6 -4
  472. package/out/zero-cache/src/services/http-service.js.map +1 -1
  473. package/out/zero-cache/src/services/life-cycle.js +3 -3
  474. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  475. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +4 -2
  476. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  477. package/out/zero-cache/src/services/litestream/commands.js +4 -4
  478. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  479. package/out/zero-cache/src/services/litestream/litestream-checkpointer.js +2 -2
  480. package/out/zero-cache/src/services/litestream/litestream-checkpointer.js.map +1 -1
  481. package/out/zero-cache/src/services/litestream/litestream-controller.js.map +1 -1
  482. package/out/zero-cache/src/services/litestream/metrics.js.map +1 -1
  483. package/out/zero-cache/src/services/litestream/restore-progress.js.map +1 -1
  484. package/out/zero-cache/src/services/mutagen/mutagen.js +3 -4
  485. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  486. package/out/zero-cache/src/services/mutagen/pusher.js +61 -17
  487. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  488. package/out/zero-cache/src/services/plannerz.d.ts +4 -12
  489. package/out/zero-cache/src/services/plannerz.d.ts.map +1 -1
  490. package/out/zero-cache/src/services/plannerz.js +6 -7
  491. package/out/zero-cache/src/services/plannerz.js.map +1 -1
  492. package/out/zero-cache/src/services/profz.js +5 -3
  493. package/out/zero-cache/src/services/profz.js.map +1 -1
  494. package/out/zero-cache/src/services/replicator/change-log-cookies.js.map +1 -1
  495. package/out/zero-cache/src/services/replicator/change-log-db.js +4 -3
  496. package/out/zero-cache/src/services/replicator/change-log-db.js.map +1 -1
  497. package/out/zero-cache/src/services/replicator/change-log-stream-writer.js.map +1 -1
  498. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  499. package/out/zero-cache/src/services/replicator/drain-handler.js +1 -1
  500. package/out/zero-cache/src/services/replicator/drain-handler.js.map +1 -1
  501. package/out/zero-cache/src/services/replicator/incremental-sync.js +4 -4
  502. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  503. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  504. package/out/zero-cache/src/services/replicator/replication-status.js +4 -3
  505. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  506. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  507. package/out/zero-cache/src/services/replicator/reporter/recorder.js +2 -2
  508. package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -1
  509. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts +2 -11
  510. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts.map +1 -1
  511. package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -1
  512. package/out/zero-cache/src/services/replicator/schema/backfilling.js +2 -2
  513. package/out/zero-cache/src/services/replicator/schema/backfilling.js.map +1 -1
  514. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +19 -17
  515. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  516. package/out/zero-cache/src/services/replicator/schema/change-log.js +31 -15
  517. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  518. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +0 -7
  519. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
  520. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +1 -1
  521. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  522. package/out/zero-cache/src/services/replicator/schema/replication-state.js +10 -7
  523. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  524. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
  525. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js +1 -1
  526. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js.map +1 -1
  527. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js +1 -1
  528. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js.map +1 -1
  529. package/out/zero-cache/src/services/replicator/write-worker-client.js +2 -2
  530. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
  531. package/out/zero-cache/src/services/replicator/write-worker.js +3 -3
  532. package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -1
  533. package/out/zero-cache/src/services/run-ast.js +1 -1
  534. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  535. package/out/zero-cache/src/services/runner.js.map +1 -1
  536. package/out/zero-cache/src/services/running-state.js +1 -1
  537. package/out/zero-cache/src/services/running-state.js.map +1 -1
  538. package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +1 -1
  539. package/out/zero-cache/src/services/statz.d.ts.map +1 -1
  540. package/out/zero-cache/src/services/statz.js +5 -4
  541. package/out/zero-cache/src/services/statz.js.map +1 -1
  542. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +2 -2
  543. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  544. package/out/zero-cache/src/services/view-syncer/advancement-metrics.js.map +1 -1
  545. package/out/zero-cache/src/services/view-syncer/batch-pacer.js.map +1 -1
  546. package/out/zero-cache/src/services/view-syncer/client-handler.js +71 -24
  547. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  548. package/out/zero-cache/src/services/view-syncer/client-schema.js +46 -6
  549. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  550. package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -1
  551. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +2 -2
  552. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  553. package/out/zero-cache/src/services/view-syncer/cvr-store.js +12 -7
  554. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  555. package/out/zero-cache/src/services/view-syncer/cvr.js +12 -4
  556. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  557. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js +1 -1
  558. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js.map +1 -1
  559. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +2 -2
  560. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  561. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.js.map +1 -1
  562. package/out/zero-cache/src/services/view-syncer/hydration-budget.js.map +1 -1
  563. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js +2 -2
  564. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js.map +1 -1
  565. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +6 -4
  566. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  567. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +13 -10
  568. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  569. package/out/zero-cache/src/services/view-syncer/plan-warnings.js.map +1 -1
  570. package/out/zero-cache/src/services/view-syncer/push-cost.js.map +1 -1
  571. package/out/zero-cache/src/services/view-syncer/push-cutoff.js.map +1 -1
  572. package/out/zero-cache/src/services/view-syncer/query-covering.js.map +1 -1
  573. package/out/zero-cache/src/services/view-syncer/query-shape.js.map +1 -1
  574. package/out/zero-cache/src/services/view-syncer/query-stats.js +1 -1
  575. package/out/zero-cache/src/services/view-syncer/query-stats.js.map +1 -1
  576. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +2 -2
  577. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  578. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  579. package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -16
  580. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  581. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js +7 -1
  582. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js.map +1 -1
  583. package/out/zero-cache/src/services/view-syncer/snapshotter.js +12 -8
  584. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  585. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  586. package/out/zero-cache/src/services/view-syncer/view-syncer.js +52 -28
  587. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  588. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  589. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  590. package/out/zero-cache/src/types/lite.d.ts +0 -1
  591. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  592. package/out/zero-cache/src/types/lite.js +1 -1
  593. package/out/zero-cache/src/types/lite.js.map +1 -1
  594. package/out/zero-cache/src/types/pg-data-type.js +1 -1
  595. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  596. package/out/zero-cache/src/types/pg-types.d.ts +0 -40
  597. package/out/zero-cache/src/types/pg-types.d.ts.map +1 -1
  598. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  599. package/out/zero-cache/src/types/pg.js +6 -4
  600. package/out/zero-cache/src/types/pg.js.map +1 -1
  601. package/out/zero-cache/src/types/poke-chunk.d.ts +0 -1
  602. package/out/zero-cache/src/types/poke-chunk.d.ts.map +1 -1
  603. package/out/zero-cache/src/types/poke-chunk.js +1 -1
  604. package/out/zero-cache/src/types/poke-chunk.js.map +1 -1
  605. package/out/zero-cache/src/types/processes.js +1 -1
  606. package/out/zero-cache/src/types/processes.js.map +1 -1
  607. package/out/zero-cache/src/types/profiler.js +1 -1
  608. package/out/zero-cache/src/types/profiler.js.map +1 -1
  609. package/out/zero-cache/src/types/row-key.d.ts +0 -5
  610. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  611. package/out/zero-cache/src/types/row-key.js.map +1 -1
  612. package/out/zero-cache/src/types/sql.js.map +1 -1
  613. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  614. package/out/zero-cache/src/types/streams.js +11 -10
  615. package/out/zero-cache/src/types/streams.js.map +1 -1
  616. package/out/zero-cache/src/types/strings.js.map +1 -1
  617. package/out/zero-cache/src/types/subscription.js +1 -1
  618. package/out/zero-cache/src/types/subscription.js.map +1 -1
  619. package/out/zero-cache/src/types/timeout.js +1 -1
  620. package/out/zero-cache/src/types/websocket-handoff.d.ts +4 -7
  621. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  622. package/out/zero-cache/src/types/websocket-handoff.js +16 -2
  623. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  624. package/out/zero-cache/src/types/ws.d.ts +2 -1
  625. package/out/zero-cache/src/types/ws.d.ts.map +1 -1
  626. package/out/zero-cache/src/types/ws.js.map +1 -1
  627. package/out/zero-cache/src/workers/connection.d.ts +1 -2
  628. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  629. package/out/zero-cache/src/workers/connection.js +5 -3
  630. package/out/zero-cache/src/workers/connection.js.map +1 -1
  631. package/out/zero-cache/src/workers/mutator.js +1 -1
  632. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  633. package/out/zero-cache/src/workers/rehome.d.ts +15 -0
  634. package/out/zero-cache/src/workers/rehome.d.ts.map +1 -0
  635. package/out/zero-cache/src/workers/rehome.js +36 -0
  636. package/out/zero-cache/src/workers/rehome.js.map +1 -0
  637. package/out/zero-cache/src/workers/replicator.js +5 -4
  638. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  639. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +9 -1
  640. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  641. package/out/zero-cache/src/workers/syncer.js +30 -5
  642. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  643. package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
  644. package/out/zero-client/src/client/active-clients-manager.js +2 -2
  645. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  646. package/out/zero-client/src/client/bindings.js +11 -11
  647. package/out/zero-client/src/client/connection-manager.js +1 -1
  648. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  649. package/out/zero-client/src/client/connection.js +1 -1
  650. package/out/zero-client/src/client/connection.js.map +1 -1
  651. package/out/zero-client/src/client/context.js.map +1 -1
  652. package/out/zero-client/src/client/crud-impl.js +1 -1
  653. package/out/zero-client/src/client/crud-impl.js.map +1 -1
  654. package/out/zero-client/src/client/crud.d.ts +2 -8
  655. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  656. package/out/zero-client/src/client/crud.js.map +1 -1
  657. package/out/zero-client/src/client/custom.d.ts +0 -2
  658. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  659. package/out/zero-client/src/client/custom.js.map +1 -1
  660. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  661. package/out/zero-client/src/client/enable-analytics.d.ts +0 -1
  662. package/out/zero-client/src/client/enable-analytics.d.ts.map +1 -1
  663. package/out/zero-client/src/client/enable-analytics.js +1 -0
  664. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  665. package/out/zero-client/src/client/error.d.ts +4 -5
  666. package/out/zero-client/src/client/error.d.ts.map +1 -1
  667. package/out/zero-client/src/client/error.js.map +1 -1
  668. package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
  669. package/out/zero-client/src/client/inspector/client.js.map +1 -1
  670. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +1 -1
  671. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
  672. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  673. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  674. package/out/zero-client/src/client/inspector/query.js.map +1 -1
  675. package/out/zero-client/src/client/ivm-branch.js +1 -3
  676. package/out/zero-client/src/client/ivm-branch.js.map +1 -1
  677. package/out/zero-client/src/client/keys.d.ts +0 -1
  678. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  679. package/out/zero-client/src/client/keys.js +6 -3
  680. package/out/zero-client/src/client/keys.js.map +1 -1
  681. package/out/zero-client/src/client/log-options.js.map +1 -1
  682. package/out/zero-client/src/client/make-replicache-mutators.js +5 -3
  683. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  684. package/out/zero-client/src/client/metrics.js +3 -5
  685. package/out/zero-client/src/client/metrics.js.map +1 -1
  686. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  687. package/out/zero-client/src/client/mutation-tracker.js +1 -1
  688. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  689. package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
  690. package/out/zero-client/src/client/options.d.ts +0 -4
  691. package/out/zero-client/src/client/options.d.ts.map +1 -1
  692. package/out/zero-client/src/client/options.js.map +1 -1
  693. package/out/zero-client/src/client/query-manager.js +2 -2
  694. package/out/zero-client/src/client/query-manager.js.map +1 -1
  695. package/out/zero-client/src/client/reload-error-handler.js +4 -3
  696. package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
  697. package/out/zero-client/src/client/replicache-types.d.ts +3 -2
  698. package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
  699. package/out/zero-client/src/client/version.js +1 -1
  700. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -2
  701. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  702. package/out/zero-client/src/client/zero-poke-handler.js +1 -1
  703. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  704. package/out/zero-client/src/client/zero-rep.js.map +1 -1
  705. package/out/zero-client/src/client/zero.d.ts +1 -5
  706. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  707. package/out/zero-client/src/client/zero.js +20 -12
  708. package/out/zero-client/src/client/zero.js.map +1 -1
  709. package/out/zero-client/src/mod.js +23 -23
  710. package/out/zero-client/src/types/client-state.d.ts +0 -6
  711. package/out/zero-client/src/types/client-state.d.ts.map +1 -1
  712. package/out/zero-client/src/util/nanoid.js.map +1 -1
  713. package/out/zero-permissions/src/permissions.d.ts +1 -12
  714. package/out/zero-permissions/src/permissions.d.ts.map +1 -1
  715. package/out/zero-permissions/src/permissions.js +3 -3
  716. package/out/zero-permissions/src/permissions.js.map +1 -1
  717. package/out/zero-pg/src/mod.js +9 -9
  718. package/out/zero-protocol/src/analyze-query-result.js +1 -1
  719. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  720. package/out/zero-protocol/src/application-error.js.map +1 -1
  721. package/out/zero-protocol/src/ast.d.ts +0 -4
  722. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  723. package/out/zero-protocol/src/ast.js +21 -11
  724. package/out/zero-protocol/src/ast.js.map +1 -1
  725. package/out/zero-protocol/src/change-desired-queries.d.ts +0 -20
  726. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  727. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  728. package/out/zero-protocol/src/client-schema.d.ts +2 -5
  729. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  730. package/out/zero-protocol/src/client-schema.js.map +1 -1
  731. package/out/zero-protocol/src/close-connection.d.ts +0 -8
  732. package/out/zero-protocol/src/close-connection.d.ts.map +1 -1
  733. package/out/zero-protocol/src/close-connection.js.map +1 -1
  734. package/out/zero-protocol/src/connect.d.ts +0 -12
  735. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  736. package/out/zero-protocol/src/connect.js.map +1 -1
  737. package/out/zero-protocol/src/custom-queries.d.ts +3 -17
  738. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  739. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  740. package/out/zero-protocol/src/data.d.ts +0 -1
  741. package/out/zero-protocol/src/data.d.ts.map +1 -1
  742. package/out/zero-protocol/src/data.js +3 -1
  743. package/out/zero-protocol/src/data.js.map +1 -1
  744. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  745. package/out/zero-protocol/src/down.d.ts +2 -2
  746. package/out/zero-protocol/src/down.js.map +1 -1
  747. package/out/zero-protocol/src/error.js.map +1 -1
  748. package/out/zero-protocol/src/inspect-down.d.ts +82 -84
  749. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  750. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  751. package/out/zero-protocol/src/inspect-up.d.ts +0 -28
  752. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  753. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  754. package/out/zero-protocol/src/mutate-server.d.ts +0 -21
  755. package/out/zero-protocol/src/mutate-server.d.ts.map +1 -1
  756. package/out/zero-protocol/src/mutate-server.js.map +1 -1
  757. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  758. package/out/zero-protocol/src/mutation-type-enum.d.ts +0 -1
  759. package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
  760. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  761. package/out/zero-protocol/src/mutation.d.ts +2 -4
  762. package/out/zero-protocol/src/mutation.d.ts.map +1 -1
  763. package/out/zero-protocol/src/mutation.js.map +1 -1
  764. package/out/zero-protocol/src/mutations-patch.d.ts +0 -33
  765. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  766. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  767. package/out/zero-protocol/src/ping.d.ts +0 -2
  768. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  769. package/out/zero-protocol/src/ping.js.map +1 -1
  770. package/out/zero-protocol/src/poke.d.ts +3 -2
  771. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  772. package/out/zero-protocol/src/poke.js +1 -1
  773. package/out/zero-protocol/src/poke.js.map +1 -1
  774. package/out/zero-protocol/src/pong.d.ts +0 -2
  775. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  776. package/out/zero-protocol/src/pong.js.map +1 -1
  777. package/out/zero-protocol/src/primary-key.js.map +1 -1
  778. package/out/zero-protocol/src/protocol-version.js +1 -0
  779. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  780. package/out/zero-protocol/src/pull.d.ts +2 -7
  781. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  782. package/out/zero-protocol/src/pull.js.map +1 -1
  783. package/out/zero-protocol/src/push.d.ts +1 -3
  784. package/out/zero-protocol/src/push.d.ts.map +1 -1
  785. package/out/zero-protocol/src/push.js.map +1 -1
  786. package/out/zero-protocol/src/queries-patch.d.ts +0 -16
  787. package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
  788. package/out/zero-protocol/src/queries-patch.js +1 -1
  789. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  790. package/out/zero-protocol/src/query-hash-visitor.js.map +1 -1
  791. package/out/zero-protocol/src/query-hash.js +2 -2
  792. package/out/zero-protocol/src/query-server.d.ts +2 -41
  793. package/out/zero-protocol/src/query-server.d.ts.map +1 -1
  794. package/out/zero-protocol/src/query-server.js.map +1 -1
  795. package/out/zero-protocol/src/row-patch.js.map +1 -1
  796. package/out/zero-protocol/src/up.d.ts +60 -60
  797. package/out/zero-protocol/src/up.js +1 -1
  798. package/out/zero-protocol/src/up.js.map +1 -1
  799. package/out/zero-protocol/src/update-auth.js.map +1 -1
  800. package/out/zero-protocol/src/version.d.ts +0 -1
  801. package/out/zero-protocol/src/version.d.ts.map +1 -1
  802. package/out/zero-protocol/src/version.js.map +1 -1
  803. package/out/zero-react/src/bindings.js +11 -11
  804. package/out/zero-react/src/mod.js +5 -5
  805. package/out/zero-react/src/use-query.js +2 -2
  806. package/out/zero-react/src/use-query.js.map +1 -1
  807. package/out/zero-react/src/zero-provider.d.ts +1 -1
  808. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  809. package/out/zero-react/src/zero-provider.js +2 -1
  810. package/out/zero-react/src/zero-provider.js.map +1 -1
  811. package/out/zero-react/src/zero.js +23 -23
  812. package/out/zero-schema/src/builder/relationship-builder.d.ts +0 -2
  813. package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -1
  814. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  815. package/out/zero-schema/src/builder/schema-builder.js +3 -2
  816. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  817. package/out/zero-schema/src/builder/table-builder.d.ts +1 -1
  818. package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
  819. package/out/zero-schema/src/builder/table-builder.js +1 -1
  820. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  821. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  822. package/out/zero-schema/src/name-mapper.js +7 -5
  823. package/out/zero-schema/src/name-mapper.js.map +1 -1
  824. package/out/zero-schema/src/schema-config.d.ts +0 -1
  825. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  826. package/out/zero-schema/src/schema-config.js +1 -1
  827. package/out/zero-schema/src/schema-config.js.map +1 -1
  828. package/out/zero-schema/src/table-schema.d.ts +3 -11
  829. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  830. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  831. package/out/zero-server/src/adapters/kysely.js.map +1 -1
  832. package/out/zero-server/src/adapters/pg.js.map +1 -1
  833. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  834. package/out/zero-server/src/adapters/prisma.js.map +1 -1
  835. package/out/zero-server/src/closable-db-transaction.js.map +1 -1
  836. package/out/zero-server/src/custom.js +1 -1
  837. package/out/zero-server/src/custom.js.map +1 -1
  838. package/out/zero-server/src/mod.js +8 -8
  839. package/out/zero-server/src/process-mutations.js.map +1 -1
  840. package/out/zero-server/src/push-processor.js.map +1 -1
  841. package/out/zero-server/src/queries/process-queries.d.ts +2 -4
  842. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  843. package/out/zero-server/src/queries/process-queries.js +2 -1
  844. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  845. package/out/zero-server/src/schema.js +7 -7
  846. package/out/zero-server/src/schema.js.map +1 -1
  847. package/out/zero-server/src/zql-database.js.map +1 -1
  848. package/out/zero-solid/src/bindings.js +11 -11
  849. package/out/zero-solid/src/mod.js +5 -5
  850. package/out/zero-solid/src/solid-view.d.ts +0 -2
  851. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  852. package/out/zero-solid/src/solid-view.js +1 -1
  853. package/out/zero-solid/src/solid-view.js.map +1 -1
  854. package/out/zero-solid/src/use-connection-state.js +2 -1
  855. package/out/zero-solid/src/use-connection-state.js.map +1 -1
  856. package/out/zero-solid/src/use-query.js.map +1 -1
  857. package/out/zero-solid/src/use-zero-online.js +2 -1
  858. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  859. package/out/zero-solid/src/use-zero.js +3 -2
  860. package/out/zero-solid/src/use-zero.js.map +1 -1
  861. package/out/zero-solid/src/zero.js +23 -23
  862. package/out/zero-types/src/name-mapper.d.ts +2 -1
  863. package/out/zero-types/src/name-mapper.d.ts.map +1 -1
  864. package/out/zero-types/src/name-mapper.js.map +1 -1
  865. package/out/zero-types/src/schema-value.d.ts +3 -2
  866. package/out/zero-types/src/schema-value.d.ts.map +1 -1
  867. package/out/zero-types/src/schema.d.ts +1 -1
  868. package/out/zero-types/src/schema.d.ts.map +1 -1
  869. package/out/zql/src/builder/builder.d.ts +1 -11
  870. package/out/zql/src/builder/builder.d.ts.map +1 -1
  871. package/out/zql/src/builder/builder.js +15 -13
  872. package/out/zql/src/builder/builder.js.map +1 -1
  873. package/out/zql/src/builder/correlated-predicate-pushdown.js.map +1 -1
  874. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  875. package/out/zql/src/builder/filter.d.ts +0 -1
  876. package/out/zql/src/builder/filter.d.ts.map +1 -1
  877. package/out/zql/src/builder/filter.js.map +1 -1
  878. package/out/zql/src/builder/like.js +0 -1
  879. package/out/zql/src/builder/like.js.map +1 -1
  880. package/out/zql/src/error.d.ts +0 -5
  881. package/out/zql/src/error.d.ts.map +1 -1
  882. package/out/zql/src/error.js.map +1 -1
  883. package/out/zql/src/ivm/array-view.js.map +1 -1
  884. package/out/zql/src/ivm/cap.d.ts +1 -1
  885. package/out/zql/src/ivm/cap.d.ts.map +1 -1
  886. package/out/zql/src/ivm/cap.js +12 -4
  887. package/out/zql/src/ivm/cap.js.map +1 -1
  888. package/out/zql/src/ivm/constraint.d.ts +0 -7
  889. package/out/zql/src/ivm/constraint.d.ts.map +1 -1
  890. package/out/zql/src/ivm/constraint.js +1 -1
  891. package/out/zql/src/ivm/constraint.js.map +1 -1
  892. package/out/zql/src/ivm/data.d.ts +15 -2
  893. package/out/zql/src/ivm/data.d.ts.map +1 -1
  894. package/out/zql/src/ivm/data.js +15 -1
  895. package/out/zql/src/ivm/data.js.map +1 -1
  896. package/out/zql/src/ivm/deferred-input.js.map +1 -1
  897. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  898. package/out/zql/src/ivm/exists.js +32 -22
  899. package/out/zql/src/ivm/exists.js.map +1 -1
  900. package/out/zql/src/ivm/fan-in.js.map +1 -1
  901. package/out/zql/src/ivm/fan-out.js.map +1 -1
  902. package/out/zql/src/ivm/filter-operators.d.ts +5 -0
  903. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  904. package/out/zql/src/ivm/filter-operators.js +1 -1
  905. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  906. package/out/zql/src/ivm/filter-push.js.map +1 -1
  907. package/out/zql/src/ivm/filter.js.map +1 -1
  908. package/out/zql/src/ivm/flipped-join.js +1 -3
  909. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  910. package/out/zql/src/ivm/join-index-tap.js.map +1 -1
  911. package/out/zql/src/ivm/join-index.js.map +1 -1
  912. package/out/zql/src/ivm/join-utils.js +11 -13
  913. package/out/zql/src/ivm/join-utils.js.map +1 -1
  914. package/out/zql/src/ivm/join.d.ts.map +1 -1
  915. package/out/zql/src/ivm/join.js +6 -3
  916. package/out/zql/src/ivm/join.js.map +1 -1
  917. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  918. package/out/zql/src/ivm/memory-source.d.ts +1 -2
  919. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  920. package/out/zql/src/ivm/memory-source.js +27 -23
  921. package/out/zql/src/ivm/memory-source.js.map +1 -1
  922. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  923. package/out/zql/src/ivm/operator.d.ts +6 -0
  924. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  925. package/out/zql/src/ivm/operator.js +2 -2
  926. package/out/zql/src/ivm/operator.js.map +1 -1
  927. package/out/zql/src/ivm/push-accumulated.js +0 -1
  928. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  929. package/out/zql/src/ivm/skip-yields.js.map +1 -1
  930. package/out/zql/src/ivm/skip.js.map +1 -1
  931. package/out/zql/src/ivm/stream.d.ts +0 -1
  932. package/out/zql/src/ivm/stream.d.ts.map +1 -1
  933. package/out/zql/src/ivm/stream.js.map +1 -1
  934. package/out/zql/src/ivm/take-gate.js.map +1 -1
  935. package/out/zql/src/ivm/take.d.ts.map +1 -1
  936. package/out/zql/src/ivm/take.js +7 -8
  937. package/out/zql/src/ivm/take.js.map +1 -1
  938. package/out/zql/src/ivm/union-fan-in.d.ts +0 -1
  939. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  940. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  941. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  942. package/out/zql/src/ivm/view-apply-change.d.ts +5 -35
  943. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  944. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  945. package/out/zql/src/mutate/crud.d.ts +1 -3
  946. package/out/zql/src/mutate/crud.d.ts.map +1 -1
  947. package/out/zql/src/mutate/crud.js +2 -1
  948. package/out/zql/src/mutate/crud.js.map +1 -1
  949. package/out/zql/src/mutate/mutator-registry.d.ts +1 -1
  950. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
  951. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  952. package/out/zql/src/mutate/mutator.d.ts +1 -1
  953. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  954. package/out/zql/src/mutate/mutator.js.map +1 -1
  955. package/out/zql/src/planner/planner-builder.js +1 -1
  956. package/out/zql/src/planner/planner-builder.js.map +1 -1
  957. package/out/zql/src/planner/planner-connection.js.map +1 -1
  958. package/out/zql/src/planner/planner-debug.d.ts +10 -9
  959. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  960. package/out/zql/src/planner/planner-debug.js.map +1 -1
  961. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  962. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  963. package/out/zql/src/planner/planner-filter.js.map +1 -1
  964. package/out/zql/src/planner/planner-graph.js +1 -5
  965. package/out/zql/src/planner/planner-graph.js.map +1 -1
  966. package/out/zql/src/planner/planner-join.js +1 -1
  967. package/out/zql/src/planner/planner-join.js.map +1 -1
  968. package/out/zql/src/planner/planner-node.d.ts +0 -1
  969. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  970. package/out/zql/src/planner/planner-node.js.map +1 -1
  971. package/out/zql/src/planner/planner-source.js.map +1 -1
  972. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  973. package/out/zql/src/planner/planner-warnings.d.ts +3 -3
  974. package/out/zql/src/planner/planner-warnings.d.ts.map +1 -1
  975. package/out/zql/src/planner/planner-warnings.js.map +1 -1
  976. package/out/zql/src/query/create-builder.js +2 -1
  977. package/out/zql/src/query/create-builder.js.map +1 -1
  978. package/out/zql/src/query/expression.d.ts +0 -22
  979. package/out/zql/src/query/expression.d.ts.map +1 -1
  980. package/out/zql/src/query/expression.js +1 -1
  981. package/out/zql/src/query/expression.js.map +1 -1
  982. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  983. package/out/zql/src/query/named.js +2 -1
  984. package/out/zql/src/query/named.js.map +1 -1
  985. package/out/zql/src/query/query-delegate-base.d.ts +0 -7
  986. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  987. package/out/zql/src/query/query-delegate-base.js +1 -1
  988. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  989. package/out/zql/src/query/query-delegate.d.ts +1 -4
  990. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  991. package/out/zql/src/query/query-impl.js +3 -2
  992. package/out/zql/src/query/query-impl.js.map +1 -1
  993. package/out/zql/src/query/query-internals.d.ts +0 -3
  994. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  995. package/out/zql/src/query/query-internals.js.map +1 -1
  996. package/out/zql/src/query/query-registry.d.ts +5 -5
  997. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  998. package/out/zql/src/query/query-registry.js +1 -1
  999. package/out/zql/src/query/query-registry.js.map +1 -1
  1000. package/out/zql/src/query/query-transitions.js +1 -1
  1001. package/out/zql/src/query/query-transitions.js.map +1 -1
  1002. package/out/zql/src/query/query.d.ts +2 -13
  1003. package/out/zql/src/query/query.d.ts.map +1 -1
  1004. package/out/zql/src/query/runnable-query-impl.d.ts +1 -19
  1005. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  1006. package/out/zql/src/query/runnable-query-impl.js +2 -1
  1007. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  1008. package/out/zql/src/query/static-query.js.map +1 -1
  1009. package/out/zql/src/query/ttl.d.ts +2 -3
  1010. package/out/zql/src/query/ttl.d.ts.map +1 -1
  1011. package/out/zql/src/query/ttl.js +8 -8
  1012. package/out/zql/src/query/ttl.js.map +1 -1
  1013. package/out/zql/src/query/validate-input.js.map +1 -1
  1014. package/out/zqlite/src/database-storage.js +195 -26
  1015. package/out/zqlite/src/database-storage.js.map +1 -1
  1016. package/out/zqlite/src/db.d.ts +47 -1
  1017. package/out/zqlite/src/db.d.ts.map +1 -1
  1018. package/out/zqlite/src/db.js +121 -21
  1019. package/out/zqlite/src/db.js.map +1 -1
  1020. package/out/zqlite/src/explain-queries.js.map +1 -1
  1021. package/out/zqlite/src/fetch-sql.d.ts +27 -0
  1022. package/out/zqlite/src/fetch-sql.d.ts.map +1 -0
  1023. package/out/zqlite/src/fetch-sql.js +112 -0
  1024. package/out/zqlite/src/fetch-sql.js.map +1 -0
  1025. package/out/zqlite/src/index-usage.js.map +1 -1
  1026. package/out/zqlite/src/internal/sql-inline.js.map +1 -1
  1027. package/out/zqlite/src/internal/sql.js.map +1 -1
  1028. package/out/zqlite/src/internal/statement-cache.d.ts +7 -0
  1029. package/out/zqlite/src/internal/statement-cache.d.ts.map +1 -1
  1030. package/out/zqlite/src/internal/statement-cache.js +11 -4
  1031. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1032. package/out/zqlite/src/mod.js +5 -5
  1033. package/out/zqlite/src/pending-delta.js.map +1 -1
  1034. package/out/zqlite/src/query-builder.d.ts +11 -3
  1035. package/out/zqlite/src/query-builder.d.ts.map +1 -1
  1036. package/out/zqlite/src/query-builder.js +22 -7
  1037. package/out/zqlite/src/query-builder.js.map +1 -1
  1038. package/out/zqlite/src/query-delegate.js.map +1 -1
  1039. package/out/zqlite/src/resolve-scalar-subqueries.js +2 -5
  1040. package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
  1041. package/out/zqlite/src/sqlite-cost-model.js +3 -2
  1042. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1043. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1044. package/out/zqlite/src/table-source.d.ts +20 -3
  1045. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1046. package/out/zqlite/src/table-source.js +74 -40
  1047. package/out/zqlite/src/table-source.js.map +1 -1
  1048. package/package.json +39 -39
  1049. package/out/analyze-query/src/bin-analyze.d.ts +0 -2
  1050. package/out/analyze-query/src/bin-analyze.d.ts.map +0 -1
  1051. package/out/analyze-query/src/bin-analyze.js +0 -283
  1052. package/out/analyze-query/src/bin-analyze.js.map +0 -1
  1053. package/out/otel/src/maybe-time.d.ts +0 -3
  1054. package/out/otel/src/maybe-time.d.ts.map +0 -1
  1055. package/out/otel/src/maybe-time.js +0 -15
  1056. package/out/otel/src/maybe-time.js.map +0 -1
  1057. package/out/shared/src/cache.d.ts +0 -22
  1058. package/out/shared/src/cache.d.ts.map +0 -1
  1059. package/out/shared/src/custom-key-map.d.ts +0 -26
  1060. package/out/shared/src/custom-key-map.d.ts.map +0 -1
  1061. package/out/shared/src/custom-key-set.d.ts +0 -25
  1062. package/out/shared/src/custom-key-set.d.ts.map +0 -1
  1063. package/out/shared/src/logging-test-utils.d.ts +0 -12
  1064. package/out/shared/src/logging-test-utils.d.ts.map +0 -1
  1065. package/out/shared/src/sorted-entries.d.ts +0 -2
  1066. package/out/shared/src/sorted-entries.d.ts.map +0 -1
  1067. package/out/zero/src/analyze-query.d.ts +0 -3
  1068. package/out/zero/src/analyze-query.d.ts.map +0 -1
  1069. package/out/zero/src/analyze-query.js +0 -3
  1070. package/out/zero/src/server/change-streamer.d.ts +0 -2
  1071. package/out/zero/src/server/change-streamer.d.ts.map +0 -1
  1072. package/out/zero/src/server/main.d.ts +0 -2
  1073. package/out/zero/src/server/main.d.ts.map +0 -1
  1074. package/out/zero/src/server/reaper.d.ts +0 -2
  1075. package/out/zero/src/server/reaper.d.ts.map +0 -1
  1076. package/out/zero/src/server/replicator.d.ts +0 -2
  1077. package/out/zero/src/server/replicator.d.ts.map +0 -1
  1078. package/out/zero/src/server/syncer.d.ts +0 -2
  1079. package/out/zero/src/server/syncer.d.ts.map +0 -1
  1080. package/out/zero-cache/src/auth/jwt.d.ts +0 -12
  1081. package/out/zero-cache/src/auth/jwt.d.ts.map +0 -1
  1082. package/out/zero-cache/src/auth/load-permissions.d.ts +0 -17
  1083. package/out/zero-cache/src/auth/load-permissions.d.ts.map +0 -1
  1084. package/out/zero-cache/src/auth/write-authorizer.d.ts +0 -28
  1085. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +0 -1
  1086. package/out/zero-cache/src/config/server-context.d.ts +0 -16
  1087. package/out/zero-cache/src/config/server-context.d.ts.map +0 -1
  1088. package/out/zero-cache/src/custom/fetch.d.ts +0 -38
  1089. package/out/zero-cache/src/custom/fetch.d.ts.map +0 -1
  1090. package/out/zero-cache/src/custom/metrics.d.ts +0 -31
  1091. package/out/zero-cache/src/custom/metrics.d.ts.map +0 -1
  1092. package/out/zero-cache/src/custom-queries/transform-query.d.ts +0 -68
  1093. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +0 -1
  1094. package/out/zero-cache/src/db/create.d.ts +0 -12
  1095. package/out/zero-cache/src/db/create.d.ts.map +0 -1
  1096. package/out/zero-cache/src/db/delete-lite-db.d.ts +0 -2
  1097. package/out/zero-cache/src/db/delete-lite-db.d.ts.map +0 -1
  1098. package/out/zero-cache/src/db/index-predicate.d.ts +0 -4
  1099. package/out/zero-cache/src/db/index-predicate.d.ts.map +0 -1
  1100. package/out/zero-cache/src/db/migration-lite.d.ts +0 -78
  1101. package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
  1102. package/out/zero-cache/src/db/migration.d.ts +0 -80
  1103. package/out/zero-cache/src/db/migration.d.ts.map +0 -1
  1104. package/out/zero-cache/src/db/pg-copy-binary.d.ts +0 -101
  1105. package/out/zero-cache/src/db/pg-copy-binary.d.ts.map +0 -1
  1106. package/out/zero-cache/src/db/pg-copy.d.ts +0 -30
  1107. package/out/zero-cache/src/db/pg-copy.d.ts.map +0 -1
  1108. package/out/zero-cache/src/db/pg-type-parser.d.ts +0 -15
  1109. package/out/zero-cache/src/db/pg-type-parser.d.ts.map +0 -1
  1110. package/out/zero-cache/src/db/transaction-pool.d.ts +0 -205
  1111. package/out/zero-cache/src/db/transaction-pool.d.ts.map +0 -1
  1112. package/out/zero-cache/src/db/warmup.d.ts +0 -4
  1113. package/out/zero-cache/src/db/warmup.d.ts.map +0 -1
  1114. package/out/zero-cache/src/observability/events.d.ts +0 -15
  1115. package/out/zero-cache/src/observability/events.d.ts.map +0 -1
  1116. package/out/zero-cache/src/observability/log-throttle.d.ts +0 -44
  1117. package/out/zero-cache/src/observability/log-throttle.d.ts.map +0 -1
  1118. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +0 -21
  1119. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +0 -1
  1120. package/out/zero-cache/src/server/change-streamer.d.ts +0 -3
  1121. package/out/zero-cache/src/server/change-streamer.d.ts.map +0 -1
  1122. package/out/zero-cache/src/server/inspector-delegate.d.ts +0 -71
  1123. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +0 -1
  1124. package/out/zero-cache/src/server/main.d.ts +0 -3
  1125. package/out/zero-cache/src/server/main.d.ts.map +0 -1
  1126. package/out/zero-cache/src/server/otel-diag-logger.d.ts +0 -16
  1127. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +0 -1
  1128. package/out/zero-cache/src/server/otel-start.d.ts +0 -3
  1129. package/out/zero-cache/src/server/otel-start.d.ts.map +0 -1
  1130. package/out/zero-cache/src/server/priority-op.d.ts +0 -8
  1131. package/out/zero-cache/src/server/priority-op.d.ts.map +0 -1
  1132. package/out/zero-cache/src/server/reaper.d.ts +0 -3
  1133. package/out/zero-cache/src/server/reaper.d.ts.map +0 -1
  1134. package/out/zero-cache/src/server/replicator.d.ts +0 -10
  1135. package/out/zero-cache/src/server/replicator.d.ts.map +0 -1
  1136. package/out/zero-cache/src/server/slot-keeper.d.ts +0 -26
  1137. package/out/zero-cache/src/server/slot-keeper.d.ts.map +0 -1
  1138. package/out/zero-cache/src/server/syncer.d.ts +0 -3
  1139. package/out/zero-cache/src/server/syncer.d.ts.map +0 -1
  1140. package/out/zero-cache/src/services/analyze.d.ts +0 -9
  1141. package/out/zero-cache/src/services/analyze.d.ts.map +0 -1
  1142. package/out/zero-cache/src/services/change-source/change-source.d.ts +0 -32
  1143. package/out/zero-cache/src/services/change-source/change-source.d.ts.map +0 -1
  1144. package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts +0 -57
  1145. package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts.map +0 -1
  1146. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts +0 -55
  1147. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts.map +0 -1
  1148. package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts +0 -24
  1149. package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts.map +0 -1
  1150. package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts +0 -115
  1151. package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts.map +0 -1
  1152. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +0 -14
  1153. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +0 -1
  1154. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +0 -25
  1155. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +0 -1
  1156. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts +0 -14
  1157. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts.map +0 -1
  1158. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts +0 -36
  1159. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +0 -1
  1160. package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts +0 -65
  1161. package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts.map +0 -1
  1162. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -115
  1163. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +0 -1
  1164. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +0 -155
  1165. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +0 -1
  1166. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +0 -17
  1167. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +0 -1
  1168. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts +0 -28
  1169. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts.map +0 -1
  1170. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts +0 -76
  1171. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts.map +0 -1
  1172. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts +0 -169
  1173. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +0 -1
  1174. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts +0 -16
  1175. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts.map +0 -1
  1176. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts +0 -15
  1177. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts.map +0 -1
  1178. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +0 -127
  1179. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +0 -1
  1180. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +0 -9
  1181. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +0 -1
  1182. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts +0 -68
  1183. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts.map +0 -1
  1184. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts +0 -72
  1185. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts.map +0 -1
  1186. package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts +0 -50
  1187. package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts.map +0 -1
  1188. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts +0 -14
  1189. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts.map +0 -1
  1190. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +0 -18
  1191. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +0 -1
  1192. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +0 -98
  1193. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +0 -1
  1194. package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts +0 -34
  1195. package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts.map +0 -1
  1196. package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts +0 -34
  1197. package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts.map +0 -1
  1198. package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts +0 -158
  1199. package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts.map +0 -1
  1200. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts +0 -19
  1201. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts.map +0 -1
  1202. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -78
  1203. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +0 -1
  1204. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -139
  1205. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +0 -1
  1206. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +0 -586
  1207. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +0 -1
  1208. package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts +0 -24
  1209. package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts.map +0 -1
  1210. package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts +0 -15
  1211. package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts.map +0 -1
  1212. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +0 -49
  1213. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +0 -1
  1214. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts +0 -53
  1215. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts.map +0 -1
  1216. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts +0 -88
  1217. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts.map +0 -1
  1218. package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts +0 -15
  1219. package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts.map +0 -1
  1220. package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts +0 -243
  1221. package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts.map +0 -1
  1222. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +0 -6
  1223. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +0 -1
  1224. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +0 -152
  1225. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +0 -1
  1226. package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts +0 -11
  1227. package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts.map +0 -1
  1228. package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts +0 -92
  1229. package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts.map +0 -1
  1230. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts +0 -36
  1231. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts.map +0 -1
  1232. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +0 -22
  1233. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +0 -1
  1234. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts +0 -99
  1235. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts.map +0 -1
  1236. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts +0 -83
  1237. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts.map +0 -1
  1238. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts +0 -121
  1239. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts.map +0 -1
  1240. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts +0 -73
  1241. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts.map +0 -1
  1242. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts +0 -62
  1243. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts.map +0 -1
  1244. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts +0 -114
  1245. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts.map +0 -1
  1246. package/out/zero-cache/src/services/change-streamer/storer.d.ts +0 -276
  1247. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +0 -1
  1248. package/out/zero-cache/src/services/change-streamer/subscribe.d.ts +0 -485
  1249. package/out/zero-cache/src/services/change-streamer/subscribe.d.ts.map +0 -1
  1250. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +0 -194
  1251. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +0 -1
  1252. package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts +0 -52
  1253. package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts.map +0 -1
  1254. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +0 -57
  1255. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +0 -1
  1256. package/out/zero-cache/src/services/litestream/commands.d.ts +0 -77
  1257. package/out/zero-cache/src/services/litestream/commands.d.ts.map +0 -1
  1258. package/out/zero-cache/src/services/litestream/litestream-controller.d.ts +0 -78
  1259. package/out/zero-cache/src/services/litestream/litestream-controller.d.ts.map +0 -1
  1260. package/out/zero-cache/src/services/litestream/metrics.d.ts +0 -31
  1261. package/out/zero-cache/src/services/litestream/metrics.d.ts.map +0 -1
  1262. package/out/zero-cache/src/services/litestream/restore-progress.d.ts +0 -24
  1263. package/out/zero-cache/src/services/litestream/restore-progress.d.ts.map +0 -1
  1264. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +0 -40
  1265. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +0 -1
  1266. package/out/zero-cache/src/services/mutagen/pusher.d.ts +0 -63
  1267. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +0 -1
  1268. package/out/zero-cache/src/services/replicator/change-log-db.d.ts +0 -368
  1269. package/out/zero-cache/src/services/replicator/change-log-db.d.ts.map +0 -1
  1270. package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts +0 -56
  1271. package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts.map +0 -1
  1272. package/out/zero-cache/src/services/replicator/change-processor.d.ts +0 -37
  1273. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +0 -1
  1274. package/out/zero-cache/src/services/replicator/drain-handler.d.ts +0 -82
  1275. package/out/zero-cache/src/services/replicator/drain-handler.d.ts.map +0 -1
  1276. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +0 -25
  1277. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +0 -1
  1278. package/out/zero-cache/src/services/replicator/notifier.d.ts +0 -9
  1279. package/out/zero-cache/src/services/replicator/notifier.d.ts.map +0 -1
  1280. package/out/zero-cache/src/services/replicator/replication-status.d.ts +0 -71
  1281. package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +0 -1
  1282. package/out/zero-cache/src/services/replicator/replicator.d.ts +0 -86
  1283. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +0 -1
  1284. package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts +0 -55
  1285. package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts.map +0 -1
  1286. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts +0 -132
  1287. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts.map +0 -1
  1288. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts +0 -120
  1289. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts.map +0 -1
  1290. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +0 -111
  1291. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +0 -1
  1292. package/out/zero-cache/src/services/run-ast.d.ts +0 -39
  1293. package/out/zero-cache/src/services/run-ast.d.ts.map +0 -1
  1294. package/out/zero-cache/src/services/runner.d.ts +0 -19
  1295. package/out/zero-cache/src/services/runner.d.ts.map +0 -1
  1296. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +0 -17
  1297. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +0 -1
  1298. package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts +0 -26
  1299. package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts.map +0 -1
  1300. package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts +0 -79
  1301. package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts.map +0 -1
  1302. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +0 -79
  1303. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +0 -1
  1304. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts +0 -5
  1305. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +0 -1
  1306. package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts +0 -184
  1307. package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts.map +0 -1
  1308. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +0 -22
  1309. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +0 -1
  1310. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +0 -128
  1311. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +0 -1
  1312. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -294
  1313. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +0 -1
  1314. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts +0 -81
  1315. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts.map +0 -1
  1316. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +0 -45
  1317. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +0 -1
  1318. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts +0 -53
  1319. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts.map +0 -1
  1320. package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts +0 -33
  1321. package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts.map +0 -1
  1322. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts +0 -51
  1323. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts.map +0 -1
  1324. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +0 -34
  1325. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +0 -1
  1326. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -296
  1327. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +0 -1
  1328. package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts +0 -7
  1329. package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts.map +0 -1
  1330. package/out/zero-cache/src/services/view-syncer/push-cost.d.ts +0 -132
  1331. package/out/zero-cache/src/services/view-syncer/push-cost.d.ts.map +0 -1
  1332. package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts +0 -55
  1333. package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts.map +0 -1
  1334. package/out/zero-cache/src/services/view-syncer/query-covering.d.ts +0 -28
  1335. package/out/zero-cache/src/services/view-syncer/query-covering.d.ts.map +0 -1
  1336. package/out/zero-cache/src/services/view-syncer/query-shape.d.ts +0 -25
  1337. package/out/zero-cache/src/services/view-syncer/query-shape.d.ts.map +0 -1
  1338. package/out/zero-cache/src/services/view-syncer/query-stats.d.ts +0 -89
  1339. package/out/zero-cache/src/services/view-syncer/query-stats.d.ts.map +0 -1
  1340. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +0 -90
  1341. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +0 -1
  1342. package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts +0 -17
  1343. package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts.map +0 -1
  1344. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +0 -86
  1345. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +0 -1
  1346. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +0 -5
  1347. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +0 -1
  1348. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +0 -563
  1349. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +0 -1
  1350. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts +0 -95
  1351. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts.map +0 -1
  1352. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +0 -412
  1353. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +0 -1
  1354. package/out/zero-cache/src/services/view-syncer/tracer.d.ts +0 -2
  1355. package/out/zero-cache/src/services/view-syncer/tracer.d.ts.map +0 -1
  1356. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +0 -10
  1357. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +0 -1
  1358. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +0 -133
  1359. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +0 -1
  1360. package/out/zero-cache/src/types/pg-patch.d.ts +0 -21
  1361. package/out/zero-cache/src/types/pg-patch.d.ts.map +0 -1
  1362. package/out/zero-cache/src/types/pg-versions.d.ts +0 -3
  1363. package/out/zero-cache/src/types/pg-versions.d.ts.map +0 -1
  1364. package/out/zero-cache/src/workers/replicator.d.ts +0 -57
  1365. package/out/zero-cache/src/workers/replicator.d.ts.map +0 -1
  1366. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts +0 -14
  1367. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +0 -1
  1368. package/out/zero-cache/src/workers/syncer.d.ts +0 -67
  1369. package/out/zero-cache/src/workers/syncer.d.ts.map +0 -1
  1370. package/out/zero-events/src/index.d.ts +0 -27
  1371. package/out/zero-events/src/index.d.ts.map +0 -1
  1372. package/out/zero-events/src/json.d.ts +0 -20
  1373. package/out/zero-events/src/json.d.ts.map +0 -1
  1374. package/out/zero-events/src/status.d.ts +0 -144
  1375. package/out/zero-events/src/status.d.ts.map +0 -1
  1376. package/out/zqlite/src/database-storage.d.ts +0 -24
  1377. package/out/zqlite/src/database-storage.d.ts.map +0 -1
  1378. package/out/zqlite/src/explain-queries.d.ts +0 -4
  1379. package/out/zqlite/src/explain-queries.d.ts.map +0 -1
  1380. package/out/zqlite/src/internal/sql-inline.d.ts +0 -13
  1381. package/out/zqlite/src/internal/sql-inline.d.ts.map +0 -1
  1382. package/out/zqlite/src/resolve-scalar-subqueries.d.ts +0 -72
  1383. package/out/zqlite/src/resolve-scalar-subqueries.d.ts.map +0 -1
  1384. package/out/zqlite/src/sqlite-cost-model.d.ts +0 -17
  1385. package/out/zqlite/src/sqlite-cost-model.d.ts.map +0 -1
  1386. package/out/zqlite/src/sqlite-stat-fanout.d.ts +0 -121
  1387. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"idb-databases-store.js","names":["#kvStore","#putDatabase"],"sources":["../../../../../replicache/src/persist/idb-databases-store.ts"],"sourcesContent":["import {\n assert,\n assertNumber,\n assertObject,\n assertString,\n} from '../../../shared/src/asserts.ts';\nimport {getBrowserGlobal} from '../../../shared/src/browser-env.ts';\nimport {deepFreeze} from '../frozen-json.ts';\nimport type {CreateStore, Read, Store} from '../kv/store.ts';\nimport {withRead, withWrite} from '../with-transactions.ts';\nimport {getIDBDatabasesDBName} from './idb-databases-store-db-name.ts';\nimport {makeClientID} from './make-client-id.ts';\n\nconst DBS_KEY = 'dbs';\nexport const PROFILE_ID_KEY = 'profileId';\n\n// TODO: make an opaque type\nexport type IndexedDBName = string;\n\nexport type IndexedDBDatabase = {\n readonly name: IndexedDBName;\n readonly replicacheName: string;\n readonly replicacheFormatVersion: number;\n readonly schemaVersion: string;\n /** @deprecated No longer used. Kept for backwards compatibility when reading old data. */\n readonly lastOpenedTimestampMS?: number | undefined;\n};\n\nexport type IndexedDBDatabaseRecord = {\n readonly [name: IndexedDBName]: IndexedDBDatabase;\n};\n\nfunction assertIndexedDBDatabaseRecord(\n value: unknown,\n): asserts value is IndexedDBDatabaseRecord {\n assertObject(value);\n for (const [name, db] of Object.entries(value)) {\n assertString(name);\n assertIndexedDBDatabase(db);\n assert(\n name === db.name,\n () => `Expected record key \"${name}\" to match db.name \"${db.name}\"`,\n );\n }\n}\n\nfunction assertIndexedDBDatabase(\n value: unknown,\n): asserts value is IndexedDBDatabase {\n assertObject(value);\n assertString(value.name);\n assertString(value.replicacheName);\n assertNumber(value.replicacheFormatVersion);\n assertString(value.schemaVersion);\n if (value.lastOpenedTimestampMS !== undefined) {\n assertNumber(value.lastOpenedTimestampMS);\n }\n}\n\nexport class IDBDatabasesStore {\n readonly #kvStore: Store;\n\n constructor(createKVStore: CreateStore) {\n this.#kvStore = createKVStore(getIDBDatabasesDBName());\n }\n\n putDatabase(db: IndexedDBDatabase): Promise<IndexedDBDatabaseRecord> {\n return this.#putDatabase(db);\n }\n\n putDatabaseForTesting(\n db: IndexedDBDatabase,\n ): Promise<IndexedDBDatabaseRecord> {\n return this.#putDatabase(db);\n }\n\n #putDatabase(db: IndexedDBDatabase): Promise<IndexedDBDatabaseRecord> {\n return withWrite(this.#kvStore, async write => {\n const oldDbRecord = await getDatabases(write);\n const dbRecord = {\n ...oldDbRecord,\n [db.name]: db,\n };\n await write.put(DBS_KEY, dbRecord);\n return dbRecord;\n });\n }\n\n clearDatabases(): Promise<void> {\n return withWrite(this.#kvStore, write => write.del(DBS_KEY));\n }\n\n deleteDatabases(names: Iterable<IndexedDBName>): Promise<void> {\n return withWrite(this.#kvStore, async write => {\n const oldDbRecord = await getDatabases(write);\n const dbRecord = {\n ...oldDbRecord,\n };\n for (const name of names) {\n delete dbRecord[name];\n }\n await write.put(DBS_KEY, dbRecord);\n });\n }\n\n getDatabases(): Promise<IndexedDBDatabaseRecord> {\n return withRead(this.#kvStore, getDatabases);\n }\n\n close(): Promise<void> {\n return this.#kvStore.close();\n }\n\n getProfileID(): Promise<string> {\n return withWrite(this.#kvStore, async write => {\n let profileId = await write.get(PROFILE_ID_KEY);\n if (profileId === undefined) {\n // Not in the kv store. Try localStorage in case we are using a non persistent kv store.\n const maybeLocalStorage = getBrowserGlobal('localStorage');\n if (maybeLocalStorage) {\n profileId = maybeLocalStorage.getItem(PROFILE_ID_KEY) ?? undefined;\n }\n\n if (profileId === undefined) {\n // Profile id is 'p' followed by a random number.\n profileId = `p${makeClientID()}`;\n }\n\n await write.put(PROFILE_ID_KEY, profileId);\n if (maybeLocalStorage) {\n maybeLocalStorage.setItem(PROFILE_ID_KEY, profileId);\n }\n }\n assertString(profileId);\n return profileId;\n });\n }\n}\n\nasync function getDatabases(read: Read): Promise<IndexedDBDatabaseRecord> {\n let dbRecord = await read.get(DBS_KEY);\n if (!dbRecord) {\n dbRecord = deepFreeze({});\n }\n assertIndexedDBDatabaseRecord(dbRecord);\n return dbRecord;\n}\n"],"mappings":";;;;;;;AAaA,IAAM,UAAU;AAChB,IAAa,iBAAiB;AAkB9B,SAAS,8BACP,OAC0C;CAC1C,aAAa,KAAK;CAClB,KAAK,MAAM,CAAC,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG;EAC9C,aAAa,IAAI;EACjB,wBAAwB,EAAE;EAC1B,OACE,SAAS,GAAG,YACN,wBAAwB,KAAK,sBAAsB,GAAG,KAAK,EACnE;CACF;AACF;AAEA,SAAS,wBACP,OACoC;CACpC,aAAa,KAAK;CAClB,aAAa,MAAM,IAAI;CACvB,aAAa,MAAM,cAAc;CACjC,aAAa,MAAM,uBAAuB;CAC1C,aAAa,MAAM,aAAa;CAChC,IAAI,MAAM,0BAA0B,KAAA,GAClC,aAAa,MAAM,qBAAqB;AAE5C;AAEA,IAAa,oBAAb,MAA+B;CAC7B;CAEA,YAAY,eAA4B;EACtC,KAAKA,WAAW,cAAc,sBAAsB,CAAC;CACvD;CAEA,YAAY,IAAyD;EACnE,OAAO,KAAKC,aAAa,EAAE;CAC7B;CAEA,sBACE,IACkC;EAClC,OAAO,KAAKA,aAAa,EAAE;CAC7B;CAEA,aAAa,IAAyD;EACpE,OAAO,UAAU,KAAKD,UAAU,OAAM,UAAS;GAE7C,MAAM,WAAW;IACf,GAAG,MAFqB,aAAa,KAAK;KAGzC,GAAG,OAAO;GACb;GACA,MAAM,MAAM,IAAI,SAAS,QAAQ;GACjC,OAAO;EACT,CAAC;CACH;CAEA,iBAAgC;EAC9B,OAAO,UAAU,KAAKA,WAAU,UAAS,MAAM,IAAI,OAAO,CAAC;CAC7D;CAEA,gBAAgB,OAA+C;EAC7D,OAAO,UAAU,KAAKA,UAAU,OAAM,UAAS;GAE7C,MAAM,WAAW,EACf,GAAG,MAFqB,aAAa,KAAK,EAG5C;GACA,KAAK,MAAM,QAAQ,OACjB,OAAO,SAAS;GAElB,MAAM,MAAM,IAAI,SAAS,QAAQ;EACnC,CAAC;CACH;CAEA,eAAiD;EAC/C,OAAO,SAAS,KAAKA,UAAU,YAAY;CAC7C;CAEA,QAAuB;EACrB,OAAO,KAAKA,SAAS,MAAM;CAC7B;CAEA,eAAgC;EAC9B,OAAO,UAAU,KAAKA,UAAU,OAAM,UAAS;GAC7C,IAAI,YAAY,MAAM,MAAM,IAAI,cAAc;GAC9C,IAAI,cAAc,KAAA,GAAW;IAE3B,MAAM,oBAAoB,iBAAiB,cAAc;IACzD,IAAI,mBACF,YAAY,kBAAkB,QAAA,WAAsB,KAAK,KAAA;IAG3D,IAAI,cAAc,KAAA,GAEhB,YAAY,IAAI,aAAa;IAG/B,MAAM,MAAM,IAAI,gBAAgB,SAAS;IACzC,IAAI,mBACF,kBAAkB,QAAQ,gBAAgB,SAAS;GAEvD;GACA,aAAa,SAAS;GACtB,OAAO;EACT,CAAC;CACH;AACF;AAEA,eAAe,aAAa,MAA8C;CACxE,IAAI,WAAW,MAAM,KAAK,IAAI,OAAO;CACrC,IAAI,CAAC,UACH,WAAW,WAAW,CAAC,CAAC;CAE1B,8BAA8B,QAAQ;CACtC,OAAO;AACT"}
1
+ {"version":3,"file":"idb-databases-store.js","names":[],"sources":["../../../../../replicache/src/persist/idb-databases-store.ts"],"sourcesContent":["import {\n assert,\n assertNumber,\n assertObject,\n assertString,\n} from '../../../shared/src/asserts.ts';\nimport {getBrowserGlobal} from '../../../shared/src/browser-env.ts';\nimport {deepFreeze} from '../frozen-json.ts';\nimport type {CreateStore, Read, Store} from '../kv/store.ts';\nimport {withRead, withWrite} from '../with-transactions.ts';\nimport {getIDBDatabasesDBName} from './idb-databases-store-db-name.ts';\nimport {makeClientID} from './make-client-id.ts';\n\nconst DBS_KEY = 'dbs';\nexport const PROFILE_ID_KEY = 'profileId';\n\n// TODO: make an opaque type\nexport type IndexedDBName = string;\n\nexport type IndexedDBDatabase = {\n readonly name: IndexedDBName;\n readonly replicacheName: string;\n readonly replicacheFormatVersion: number;\n readonly schemaVersion: string;\n /** @deprecated No longer used. Kept for backwards compatibility when reading old data. */\n readonly lastOpenedTimestampMS?: number | undefined;\n};\n\nexport type IndexedDBDatabaseRecord = {\n readonly [name: IndexedDBName]: IndexedDBDatabase;\n};\n\nfunction assertIndexedDBDatabaseRecord(\n value: unknown,\n): asserts value is IndexedDBDatabaseRecord {\n assertObject(value);\n for (const [name, db] of Object.entries(value)) {\n assertString(name);\n assertIndexedDBDatabase(db);\n assert(\n name === db.name,\n () => `Expected record key \"${name}\" to match db.name \"${db.name}\"`,\n );\n }\n}\n\nfunction assertIndexedDBDatabase(\n value: unknown,\n): asserts value is IndexedDBDatabase {\n assertObject(value);\n assertString(value.name);\n assertString(value.replicacheName);\n assertNumber(value.replicacheFormatVersion);\n assertString(value.schemaVersion);\n if (value.lastOpenedTimestampMS !== undefined) {\n assertNumber(value.lastOpenedTimestampMS);\n }\n}\n\nexport class IDBDatabasesStore {\n readonly #kvStore: Store;\n\n constructor(createKVStore: CreateStore) {\n this.#kvStore = createKVStore(getIDBDatabasesDBName());\n }\n\n putDatabase(db: IndexedDBDatabase): Promise<IndexedDBDatabaseRecord> {\n return this.#putDatabase(db);\n }\n\n putDatabaseForTesting(\n db: IndexedDBDatabase,\n ): Promise<IndexedDBDatabaseRecord> {\n return this.#putDatabase(db);\n }\n\n #putDatabase(db: IndexedDBDatabase): Promise<IndexedDBDatabaseRecord> {\n return withWrite(this.#kvStore, async write => {\n const oldDbRecord = await getDatabases(write);\n const dbRecord = {\n ...oldDbRecord,\n [db.name]: db,\n };\n await write.put(DBS_KEY, dbRecord);\n return dbRecord;\n });\n }\n\n clearDatabases(): Promise<void> {\n return withWrite(this.#kvStore, write => write.del(DBS_KEY));\n }\n\n deleteDatabases(names: Iterable<IndexedDBName>): Promise<void> {\n return withWrite(this.#kvStore, async write => {\n const oldDbRecord = await getDatabases(write);\n const dbRecord = {\n ...oldDbRecord,\n };\n for (const name of names) {\n delete dbRecord[name];\n }\n await write.put(DBS_KEY, dbRecord);\n });\n }\n\n getDatabases(): Promise<IndexedDBDatabaseRecord> {\n return withRead(this.#kvStore, getDatabases);\n }\n\n close(): Promise<void> {\n return this.#kvStore.close();\n }\n\n getProfileID(): Promise<string> {\n return withWrite(this.#kvStore, async write => {\n let profileId = await write.get(PROFILE_ID_KEY);\n if (profileId === undefined) {\n // Not in the kv store. Try localStorage in case we are using a non persistent kv store.\n const maybeLocalStorage = getBrowserGlobal('localStorage');\n if (maybeLocalStorage) {\n profileId = maybeLocalStorage.getItem(PROFILE_ID_KEY) ?? undefined;\n }\n\n if (profileId === undefined) {\n // Profile id is 'p' followed by a random number.\n profileId = `p${makeClientID()}`;\n }\n\n await write.put(PROFILE_ID_KEY, profileId);\n if (maybeLocalStorage) {\n maybeLocalStorage.setItem(PROFILE_ID_KEY, profileId);\n }\n }\n assertString(profileId);\n return profileId;\n });\n }\n}\n\nasync function getDatabases(read: Read): Promise<IndexedDBDatabaseRecord> {\n let dbRecord = await read.get(DBS_KEY);\n if (!dbRecord) {\n dbRecord = deepFreeze({});\n }\n assertIndexedDBDatabaseRecord(dbRecord);\n return dbRecord;\n}\n"],"mappings":";;;;;;;AAaA,IAAM,UAAU;AAChB,IAAa,iBAAiB;AAkB9B,SAAS,8BACP,OAC0C;CAC1C,aAAa,KAAK;CAClB,KAAK,MAAM,CAAC,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG;EAC9C,aAAa,IAAI;EACjB,wBAAwB,EAAE;EAC1B,OACE,SAAS,GAAG,YACN,wBAAwB,KAAK,sBAAsB,GAAG,KAAK,EACnE;CACF;AACF;AAEA,SAAS,wBACP,OACoC;CACpC,aAAa,KAAK;CAClB,aAAa,MAAM,IAAI;CACvB,aAAa,MAAM,cAAc;CACjC,aAAa,MAAM,uBAAuB;CAC1C,aAAa,MAAM,aAAa;CAChC,IAAI,MAAM,0BAA0B,KAAA,GAClC,aAAa,MAAM,qBAAqB;AAE5C;AAEA,IAAa,oBAAb,MAA+B;CAC7B;CAEA,YAAY,eAA4B;EACtC,KAAK,WAAW,cAAc,sBAAsB,CAAC;CACvD;CAEA,YAAY,IAAyD;EACnE,OAAO,KAAK,aAAa,EAAE;CAC7B;CAEA,sBACE,IACkC;EAClC,OAAO,KAAK,aAAa,EAAE;CAC7B;CAEA,aAAa,IAAyD;EACpE,OAAO,UAAU,KAAK,UAAU,OAAM,UAAS;GAE7C,MAAM,WAAW;IACf,GAAG,MAFqB,aAAa,KAAK;KAGzC,GAAG,OAAO;GACb;GACA,MAAM,MAAM,IAAI,SAAS,QAAQ;GACjC,OAAO;EACT,CAAC;CACH;CAEA,iBAAgC;EAC9B,OAAO,UAAU,KAAK,WAAU,UAAS,MAAM,IAAI,OAAO,CAAC;CAC7D;CAEA,gBAAgB,OAA+C;EAC7D,OAAO,UAAU,KAAK,UAAU,OAAM,UAAS;GAE7C,MAAM,WAAW,EACf,GAAG,MAFqB,aAAa,KAAK,EAG5C;GACA,KAAK,MAAM,QAAQ,OACjB,OAAO,SAAS;GAElB,MAAM,MAAM,IAAI,SAAS,QAAQ;EACnC,CAAC;CACH;CAEA,eAAiD;EAC/C,OAAO,SAAS,KAAK,UAAU,YAAY;CAC7C;CAEA,QAAuB;EACrB,OAAO,KAAK,SAAS,MAAM;CAC7B;CAEA,eAAgC;EAC9B,OAAO,UAAU,KAAK,UAAU,OAAM,UAAS;GAC7C,IAAI,YAAY,MAAM,MAAM,IAAI,cAAc;GAC9C,IAAI,cAAc,KAAA,GAAW;IAE3B,MAAM,oBAAoB,iBAAiB,cAAc;IACzD,IAAI,mBACF,YAAY,kBAAkB,QAAA,WAAsB,KAAK,KAAA;IAG3D,IAAI,cAAc,KAAA,GAEhB,YAAY,IAAI,aAAa;IAG/B,MAAM,MAAM,IAAI,gBAAgB,SAAS;IACzC,IAAI,mBACF,kBAAkB,QAAQ,gBAAgB,SAAS;GAEvD;GACA,aAAa,SAAS;GACtB,OAAO;EACT,CAAC;CACH;AACF;AAEA,eAAe,aAAa,MAA8C;CACxE,IAAI,WAAW,MAAM,KAAK,IAAI,OAAO;CACrC,IAAI,CAAC,UACH,WAAW,WAAW,CAAC,CAAC;CAE1B,8BAA8B,QAAQ;CACtC,OAAO;AACT"}
@@ -8,7 +8,7 @@ function makeClientID() {
8
8
  const length = 18;
9
9
  const high = randomUint64();
10
10
  const low = randomUint64();
11
- return (high << 64n | low).toString(32).slice(-length).padStart(length, "0");
11
+ return (high << 64n | low).toString(32).slice(-18).padStart(length, "0");
12
12
  }
13
13
  //#endregion
14
14
  export { makeClientID };
@@ -1 +1 @@
1
- {"version":3,"file":"make-client-id.js","names":[],"sources":["../../../../../replicache/src/persist/make-client-id.ts"],"sourcesContent":["import {randomUint64} from '../../../shared/src/random-uint64.ts';\n\n/**\n * Returns a random 18 character string encoded in base32 suitable as a client\n * ID.\n */\nexport function makeClientID(): string {\n const length = 18;\n const high = randomUint64();\n const low = randomUint64();\n const combined = (high << 64n) | low;\n return combined.toString(32).slice(-length).padStart(length, '0');\n}\n"],"mappings":";;;;;;AAMA,SAAgB,eAAuB;CACrC,MAAM,SAAS;CACf,MAAM,OAAO,aAAa;CAC1B,MAAM,MAAM,aAAa;CAEzB,QADkB,QAAQ,MAAO,KACjB,SAAS,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,QAAQ,GAAG;AAClE"}
1
+ {"version":3,"file":"make-client-id.js","names":[],"sources":["../../../../../replicache/src/persist/make-client-id.ts"],"sourcesContent":["import {randomUint64} from '../../../shared/src/random-uint64.ts';\n\n/**\n * Returns a random 18 character string encoded in base32 suitable as a client\n * ID.\n */\nexport function makeClientID(): string {\n const length = 18;\n const high = randomUint64();\n const low = randomUint64();\n const combined = (high << 64n) | low;\n return combined.toString(32).slice(-length).padStart(length, '0');\n}\n"],"mappings":";;;;;;AAMA,SAAgB,eAAuB;CACrC,MAAM,SAAS;CACf,MAAM,OAAO,aAAa;CAC1B,MAAM,MAAM,aAAa;CAEzB,QADkB,QAAQ,MAAO,IAAA,CACjB,SAAS,EAAE,CAAC,CAAC,MAAM,GAAO,CAAC,CAAC,SAAS,QAAQ,GAAG;AAClE"}
@@ -96,12 +96,13 @@ async function persistDD31(lc, clientID, memdag, perdag, mutators, closed, forma
96
96
  let zeroDataForPerdagHeadCommit;
97
97
  if (!memdagBaseSnapshotPersisted) zeroDataForPerdagHeadCommit = getZeroData && await getZeroData(newMainClientGroupHeadHash, { openLazySourceRead: perdagWrite });
98
98
  newMainClientGroupHeadHash = (await rebase(newMemdagMutations, newMainClientGroupHeadHash, perdagWrite, mutators, mutationIDs, lc, formatVersion, zeroDataForPerdagHeadCommit ?? zeroDataForRebase)).hash;
99
- await setClientGroup(mainClientGroupID, {
99
+ const newMainClientGroup = {
100
100
  ...mainClientGroup,
101
101
  headHash: newMainClientGroupHeadHash,
102
102
  mutationIDs,
103
103
  lastServerAckdMutationIDs
104
- }, perdagWrite);
104
+ };
105
+ await setClientGroup(mainClientGroupID, newMainClientGroup, perdagWrite);
105
106
  });
106
107
  if (gatheredChunks && memdagBaseSnapshotPersisted) await withWrite(memdag, (memdagWrite) => memdagWrite.chunksPersisted([...gatheredChunks.keys()]));
107
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persist.js","names":[],"sources":["../../../../../replicache/src/persist/persist.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport {getOrInsert, getOrInsertComputed} from '../../../shared/src/map.ts';\nimport type {Chunk} from '../dag/chunk.ts';\nimport type {LazyStore} from '../dag/lazy-store.ts';\nimport type {Read, Store, Write} from '../dag/store.ts';\nimport type {Commit} from '../db/commit.ts';\nimport {\n DEFAULT_HEAD_NAME,\n type LocalMetaDD31,\n type Meta,\n assertSnapshotCommitDD31,\n baseSnapshotFromCommit,\n commitFromHash,\n commitFromHead,\n compareCookiesForSnapshots,\n localMutationsDD31,\n localMutationsGreaterThan,\n} from '../db/commit.ts';\nimport {rebaseMutationAndPutCommit} from '../db/rebase.ts';\nimport type * as FormatVersion from '../format-version-enum.ts';\nimport type {Hash} from '../hash.ts';\nimport type {ZeroOption, ZeroTxData} from '../replicache-options.ts';\nimport type {ClientGroupID, ClientID} from '../sync/ids.ts';\nimport type {MutatorDefs} from '../types.ts';\nimport {withRead, withWrite} from '../with-transactions.ts';\nimport {\n type ClientGroup,\n getClientGroup,\n setClientGroup,\n} from './client-groups.ts';\nimport {\n assertClientV6,\n assertHasClientState,\n getClientGroupIDForClient,\n mustGetClient,\n setClient,\n} from './clients.ts';\nimport {GatherMemoryOnlyVisitor} from './gather-mem-only-visitor.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\n/**\n * Persists the client's memdag state to the client's perdag client group.\n *\n * Persists the base snapshot from memdag to the client's perdag client group,\n * but only if it’s newer than the client's perdag client group’s base snapshot.\n * The base snapshot is persisted by gathering all memory-only chunks in the dag\n * subgraph rooted at the base snapshot's commit and writing them to the perdag.\n * Once the base snapshot is persisted, rebases onto this new base snapshot all\n * local commits from the client's perdag client group that are not already\n * reflected in the base snapshot.\n *\n * Whether or not the base snapshot is persisted, rebases onto the client's\n * perdag client group all memdag local commits not already in the client's\n * perdag client group's history.\n *\n * Also updates the `lastMutationIDs` and `lastServerAckdMutationIDs` properties\n * of the client's client group's entry in the `ClientGroupMap`.\n */\nexport async function persistDD31(\n lc: LogContext,\n clientID: ClientID,\n memdag: LazyStore,\n perdag: Store,\n mutators: MutatorDefs,\n closed: () => boolean,\n formatVersion: FormatVersion,\n getZeroData: ZeroOption['getTxData'] | undefined,\n onGatherMemOnlyChunksForTest = () => Promise.resolve(),\n): Promise<void> {\n if (closed()) {\n return;\n }\n\n const [perdagLMID, perdagBaseSnapshot, mainClientGroupID] = await withRead(\n perdag,\n async perdagRead => {\n await assertHasClientState(clientID, perdagRead);\n const mainClientGroupID = await getClientGroupIDForClient(\n clientID,\n perdagRead,\n );\n assert(\n mainClientGroupID,\n `No main client group for clientID: ${clientID}`,\n );\n const [, perdagMainClientGroupHeadCommit] = await getClientGroupInfo(\n perdagRead,\n mainClientGroupID,\n );\n const perdagLMID = await perdagMainClientGroupHeadCommit.getMutationID(\n clientID,\n perdagRead,\n );\n const perdagBaseSnapshot = await baseSnapshotFromCommit(\n perdagMainClientGroupHeadCommit,\n perdagRead,\n );\n assertSnapshotCommitDD31(perdagBaseSnapshot);\n return [perdagLMID, perdagBaseSnapshot, mainClientGroupID];\n },\n );\n\n if (closed()) {\n return;\n }\n const [\n newMemdagMutations,\n memdagBaseSnapshot,\n gatheredChunks,\n zeroDataForBaseSnapshot,\n ] = await withRead(memdag, async memdagRead => {\n const memdagHeadCommit = await commitFromHead(\n DEFAULT_HEAD_NAME,\n memdagRead,\n );\n const newMutations = await localMutationsGreaterThan(\n memdagHeadCommit,\n {[clientID]: perdagLMID || 0},\n memdagRead,\n );\n const memdagBaseSnapshot = await baseSnapshotFromCommit(\n memdagHeadCommit,\n memdagRead,\n );\n assertSnapshotCommitDD31(memdagBaseSnapshot);\n\n let gatheredChunks: ReadonlyMap<Hash, Chunk> | undefined;\n let zeroData: ZeroTxData | undefined;\n if (\n compareCookiesForSnapshots(memdagBaseSnapshot, perdagBaseSnapshot) > 0\n ) {\n await onGatherMemOnlyChunksForTest();\n // Might need to persist snapshot, we will have to double check\n // after gathering the snapshot chunks from memdag\n const memdagBaseSnapshotHash = memdagBaseSnapshot.chunk.hash;\n // Gather all memory only chunks from base snapshot on the memdag.\n const visitor = new GatherMemoryOnlyVisitor(memdagRead);\n await visitor.visit(memdagBaseSnapshotHash);\n gatheredChunks = visitor.gatheredChunks;\n\n // Fork Zero's IVM state to the base snapshot while this read is still\n // held. The fork is a diff from the IVM's current head (the memdag main\n // head) to the base snapshot, and both are memdag chunks that a\n // concurrent poke is free to collect the moment this read is released:\n // moving the main head drops the superseded local commits, and a\n // snapshot commit carries no ref to its basis. Taking the fork under\n // the same lock that fixed `memdagBaseSnapshot` is what keeps the\n // diff's endpoints alive; taken afterwards it raced every poke, and\n // lost as `ChunkNotFoundError` out of persist. It is only needed when\n // the snapshot may be persisted; otherwise the perdag rebase below\n // forks to the perdag head instead.\n zeroData =\n getZeroData &&\n (await getZeroData(memdagBaseSnapshotHash, {\n openLazyRead: memdagRead,\n }));\n }\n\n return [newMutations, memdagBaseSnapshot, gatheredChunks, zeroData];\n });\n\n if (closed()) {\n return;\n }\n\n let memdagBaseSnapshotPersisted = false;\n // Carried across both rebase batches below: each batch continues from the\n // branch the previous one ended on.\n let zeroDataForRebase = zeroDataForBaseSnapshot;\n\n await withWrite(perdag, async perdagWrite => {\n const [mainClientGroup, latestPerdagMainClientGroupHeadCommit] =\n await getClientGroupInfo(perdagWrite, mainClientGroupID);\n\n // These initial values for newMainClientGroupHeadHash, mutationIDs,\n // lastServerAckdMutationIDs are correct for the case where the memdag\n // snapshot is *not* persisted. If the memdag snapshot is persisted\n // these values are overwritten appropriately.\n let newMainClientGroupHeadHash: Hash =\n latestPerdagMainClientGroupHeadCommit.chunk.hash;\n let mutationIDs: Record<ClientID, number> = {\n ...mainClientGroup.mutationIDs,\n };\n let {lastServerAckdMutationIDs} = mainClientGroup;\n\n if (gatheredChunks) {\n // check if memdag snapshot still newer than perdag snapshot\n\n const client = await mustGetClient(clientID, perdagWrite);\n assertClientV6(client);\n\n const latestPerdagBaseSnapshot = await baseSnapshotFromCommit(\n latestPerdagMainClientGroupHeadCommit,\n perdagWrite,\n );\n assertSnapshotCommitDD31(latestPerdagBaseSnapshot);\n\n // check if memdag snapshot still newer than perdag snapshot\n if (\n compareCookiesForSnapshots(\n memdagBaseSnapshot,\n latestPerdagBaseSnapshot,\n ) > 0\n ) {\n // still newer, persist memdag snapshot by writing chunks\n memdagBaseSnapshotPersisted = true;\n await Promise.all(\n Array.from(gatheredChunks.values(), c => perdagWrite.putChunk(c)),\n );\n\n await setClient(\n clientID,\n {\n ...client,\n persistHash: memdagBaseSnapshot.chunk.hash,\n },\n perdagWrite,\n );\n // Rebase local mutations from perdag main client group onto new\n // snapshot\n newMainClientGroupHeadHash = memdagBaseSnapshot.chunk.hash;\n const mainClientGroupLocalMutations = await localMutationsDD31(\n mainClientGroup.headHash,\n perdagWrite,\n );\n\n lastServerAckdMutationIDs = memdagBaseSnapshot.meta.lastMutationIDs;\n mutationIDs = {...lastServerAckdMutationIDs};\n\n const rebased = await rebase(\n mainClientGroupLocalMutations,\n newMainClientGroupHeadHash,\n perdagWrite,\n mutators,\n mutationIDs,\n lc,\n formatVersion,\n zeroDataForRebase,\n );\n newMainClientGroupHeadHash = rebased.hash;\n // The mutations rebased below run after these, so they have to see\n // what these wrote.\n zeroDataForRebase = rebased.zeroData;\n }\n }\n\n let zeroDataForPerdagHeadCommit: ZeroTxData | undefined;\n if (!memdagBaseSnapshotPersisted) {\n zeroDataForPerdagHeadCommit =\n getZeroData &&\n (await getZeroData(newMainClientGroupHeadHash, {\n openLazySourceRead: perdagWrite,\n }));\n }\n\n // rebase new memdag mutations onto perdag\n newMainClientGroupHeadHash = (\n await rebase(\n newMemdagMutations,\n newMainClientGroupHeadHash,\n perdagWrite,\n mutators,\n mutationIDs,\n lc,\n formatVersion,\n zeroDataForPerdagHeadCommit ?? zeroDataForRebase,\n )\n ).hash;\n\n const newMainClientGroup = {\n ...mainClientGroup,\n headHash: newMainClientGroupHeadHash,\n mutationIDs,\n lastServerAckdMutationIDs,\n };\n\n await setClientGroup(mainClientGroupID, newMainClientGroup, perdagWrite);\n });\n\n if (gatheredChunks && memdagBaseSnapshotPersisted) {\n await withWrite(memdag, memdagWrite =>\n memdagWrite.chunksPersisted([...gatheredChunks.keys()]),\n );\n }\n}\n\nasync function getClientGroupInfo(\n perdagRead: Read,\n clientGroupID: ClientGroupID,\n): Promise<[ClientGroup, Commit<Meta>]> {\n const clientGroup = await getClientGroup(clientGroupID, perdagRead);\n assert(clientGroup, `No client group for clientGroupID: ${clientGroupID}`);\n return [clientGroup, await commitFromHash(clientGroup.headHash, perdagRead)];\n}\n\ntype RebasedBatch = {\n hash: Hash;\n zeroData: ZeroTxData | undefined;\n};\n\nasync function rebase(\n mutations: Commit<LocalMetaDD31>[],\n basis: Hash,\n write: Write,\n mutators: MutatorDefs,\n mutationIDs: Record<ClientID, number>,\n lc: LogContext,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<RebasedBatch> {\n const basisMutationIDs = new Map<Hash, Map<ClientID, Promise<number>>>();\n const getBasisMutationID = (\n basisHash: Hash,\n clientID: ClientID,\n ): Promise<number> =>\n getOrInsertComputed(\n getOrInsert(basisMutationIDs, basisHash, new Map()),\n clientID,\n () =>\n commitFromHash(basisHash, write).then(commit =>\n commit.getMutationID(clientID, write),\n ),\n );\n for (let i = mutations.length - 1; i >= 0; i--) {\n const mutationCommit = mutations[i];\n const {meta} = mutationCommit;\n if (meta.mutationID > (await getBasisMutationID(basis, meta.clientID))) {\n mutationIDs[meta.clientID] = meta.mutationID;\n const {result, zeroData: next} = await rebaseMutationAndPutCommit(\n mutationCommit,\n write,\n basis,\n mutators,\n lc,\n meta.clientID,\n formatVersion,\n zeroData,\n );\n basis = result.chunk.hash;\n zeroData = next;\n }\n }\n return {hash: basis, zeroData};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,eAAsB,YACpB,IACA,UACA,QACA,QACA,UACA,QACA,eACA,aACA,qCAAqC,QAAQ,QAAQ,GACtC;CACf,IAAI,OAAO,GACT;CAGF,MAAM,CAAC,YAAY,oBAAoB,qBAAqB,MAAM,SAChE,QACA,OAAM,eAAc;EAClB,MAAM,qBAAqB,UAAU,UAAU;EAC/C,MAAM,oBAAoB,MAAM,0BAC9B,UACA,UACF;EACA,OACE,mBACA,sCAAsC,UACxC;EACA,MAAM,GAAG,mCAAmC,MAAM,mBAChD,YACA,iBACF;EACA,MAAM,aAAa,MAAM,gCAAgC,cACvD,UACA,UACF;EACA,MAAM,qBAAqB,MAAM,uBAC/B,iCACA,UACF;EACA,yBAAyB,kBAAkB;EAC3C,OAAO;GAAC;GAAY;GAAoB;EAAiB;CAC3D,CACF;CAEA,IAAI,OAAO,GACT;CAEF,MAAM,CACJ,oBACA,oBACA,gBACA,2BACE,MAAM,SAAS,QAAQ,OAAM,eAAc;EAC7C,MAAM,mBAAmB,MAAM,eAC7B,mBACA,UACF;EACA,MAAM,eAAe,MAAM,0BACzB,kBACA,GAAE,WAAW,cAAc,EAAC,GAC5B,UACF;EACA,MAAM,qBAAqB,MAAM,uBAC/B,kBACA,UACF;EACA,yBAAyB,kBAAkB;EAE3C,IAAI;EACJ,IAAI;EACJ,IACE,2BAA2B,oBAAoB,kBAAkB,IAAI,GACrE;GACA,MAAM,6BAA6B;GAGnC,MAAM,yBAAyB,mBAAmB,MAAM;GAExD,MAAM,UAAU,IAAI,wBAAwB,UAAU;GACtD,MAAM,QAAQ,MAAM,sBAAsB;GAC1C,iBAAiB,QAAQ;GAazB,WACE,eACC,MAAM,YAAY,wBAAwB,EACzC,cAAc,WAChB,CAAC;EACL;EAEA,OAAO;GAAC;GAAc;GAAoB;GAAgB;EAAQ;CACpE,CAAC;CAED,IAAI,OAAO,GACT;CAGF,IAAI,8BAA8B;CAGlC,IAAI,oBAAoB;CAExB,MAAM,UAAU,QAAQ,OAAM,gBAAe;EAC3C,MAAM,CAAC,iBAAiB,yCACtB,MAAM,mBAAmB,aAAa,iBAAiB;EAMzD,IAAI,6BACF,sCAAsC,MAAM;EAC9C,IAAI,cAAwC,EAC1C,GAAG,gBAAgB,YACrB;EACA,IAAI,EAAC,8BAA6B;EAElC,IAAI,gBAAgB;GAGlB,MAAM,SAAS,MAAM,cAAc,UAAU,WAAW;GACxD,eAAe,MAAM;GAErB,MAAM,2BAA2B,MAAM,uBACrC,uCACA,WACF;GACA,yBAAyB,wBAAwB;GAGjD,IACE,2BACE,oBACA,wBACF,IAAI,GACJ;IAEA,8BAA8B;IAC9B,MAAM,QAAQ,IACZ,MAAM,KAAK,eAAe,OAAO,IAAG,MAAK,YAAY,SAAS,CAAC,CAAC,CAClE;IAEA,MAAM,UACJ,UACA;KACE,GAAG;KACH,aAAa,mBAAmB,MAAM;IACxC,GACA,WACF;IAGA,6BAA6B,mBAAmB,MAAM;IACtD,MAAM,gCAAgC,MAAM,mBAC1C,gBAAgB,UAChB,WACF;IAEA,4BAA4B,mBAAmB,KAAK;IACpD,cAAc,EAAC,GAAG,0BAAyB;IAE3C,MAAM,UAAU,MAAM,OACpB,+BACA,4BACA,aACA,UACA,aACA,IACA,eACA,iBACF;IACA,6BAA6B,QAAQ;IAGrC,oBAAoB,QAAQ;GAC9B;EACF;EAEA,IAAI;EACJ,IAAI,CAAC,6BACH,8BACE,eACC,MAAM,YAAY,4BAA4B,EAC7C,oBAAoB,YACtB,CAAC;EAIL,8BACE,MAAM,OACJ,oBACA,4BACA,aACA,UACA,aACA,IACA,eACA,+BAA+B,iBACjC,GACA;EASF,MAAM,eAAe,mBAAmB;GANtC,GAAG;GACH,UAAU;GACV;GACA;EAGsC,GAAoB,WAAW;CACzE,CAAC;CAED,IAAI,kBAAkB,6BACpB,MAAM,UAAU,SAAQ,gBACtB,YAAY,gBAAgB,CAAC,GAAG,eAAe,KAAK,CAAC,CAAC,CACxD;AAEJ;AAEA,eAAe,mBACb,YACA,eACsC;CACtC,MAAM,cAAc,MAAM,eAAe,eAAe,UAAU;CAClE,OAAO,aAAa,sCAAsC,eAAe;CACzE,OAAO,CAAC,aAAa,MAAM,eAAe,YAAY,UAAU,UAAU,CAAC;AAC7E;AAOA,eAAe,OACb,WACA,OACA,OACA,UACA,aACA,IACA,eACA,UACuB;CACvB,MAAM,mCAAmB,IAAI,IAA0C;CACvE,MAAM,sBACJ,WACA,aAEA,oBACE,YAAY,kBAAkB,2BAAW,IAAI,IAAI,CAAC,GAClD,gBAEE,eAAe,WAAW,KAAK,EAAE,MAAK,WACpC,OAAO,cAAc,UAAU,KAAK,CACtC,CACJ;CACF,KAAK,IAAI,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;EAC9C,MAAM,iBAAiB,UAAU;EACjC,MAAM,EAAC,SAAQ;EACf,IAAI,KAAK,aAAc,MAAM,mBAAmB,OAAO,KAAK,QAAQ,GAAI;GACtE,YAAY,KAAK,YAAY,KAAK;GAClC,MAAM,EAAC,QAAQ,UAAU,SAAQ,MAAM,2BACrC,gBACA,OACA,OACA,UACA,IACA,KAAK,UACL,eACA,QACF;GACA,QAAQ,OAAO,MAAM;GACrB,WAAW;EACb;CACF;CACA,OAAO;EAAC,MAAM;EAAO;CAAQ;AAC/B"}
1
+ {"version":3,"file":"persist.js","names":[],"sources":["../../../../../replicache/src/persist/persist.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport {getOrInsert, getOrInsertComputed} from '../../../shared/src/map.ts';\nimport type {Chunk} from '../dag/chunk.ts';\nimport type {LazyStore} from '../dag/lazy-store.ts';\nimport type {Read, Store, Write} from '../dag/store.ts';\nimport type {Commit} from '../db/commit.ts';\nimport {\n DEFAULT_HEAD_NAME,\n type LocalMetaDD31,\n type Meta,\n assertSnapshotCommitDD31,\n baseSnapshotFromCommit,\n commitFromHash,\n commitFromHead,\n compareCookiesForSnapshots,\n localMutationsDD31,\n localMutationsGreaterThan,\n} from '../db/commit.ts';\nimport {rebaseMutationAndPutCommit} from '../db/rebase.ts';\nimport type * as FormatVersion from '../format-version-enum.ts';\nimport type {Hash} from '../hash.ts';\nimport type {ZeroOption, ZeroTxData} from '../replicache-options.ts';\nimport type {ClientGroupID, ClientID} from '../sync/ids.ts';\nimport type {MutatorDefs} from '../types.ts';\nimport {withRead, withWrite} from '../with-transactions.ts';\nimport {\n type ClientGroup,\n getClientGroup,\n setClientGroup,\n} from './client-groups.ts';\nimport {\n assertClientV6,\n assertHasClientState,\n getClientGroupIDForClient,\n mustGetClient,\n setClient,\n} from './clients.ts';\nimport {GatherMemoryOnlyVisitor} from './gather-mem-only-visitor.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\n/**\n * Persists the client's memdag state to the client's perdag client group.\n *\n * Persists the base snapshot from memdag to the client's perdag client group,\n * but only if it’s newer than the client's perdag client group’s base snapshot.\n * The base snapshot is persisted by gathering all memory-only chunks in the dag\n * subgraph rooted at the base snapshot's commit and writing them to the perdag.\n * Once the base snapshot is persisted, rebases onto this new base snapshot all\n * local commits from the client's perdag client group that are not already\n * reflected in the base snapshot.\n *\n * Whether or not the base snapshot is persisted, rebases onto the client's\n * perdag client group all memdag local commits not already in the client's\n * perdag client group's history.\n *\n * Also updates the `lastMutationIDs` and `lastServerAckdMutationIDs` properties\n * of the client's client group's entry in the `ClientGroupMap`.\n */\nexport async function persistDD31(\n lc: LogContext,\n clientID: ClientID,\n memdag: LazyStore,\n perdag: Store,\n mutators: MutatorDefs,\n closed: () => boolean,\n formatVersion: FormatVersion,\n getZeroData: ZeroOption['getTxData'] | undefined,\n onGatherMemOnlyChunksForTest = () => Promise.resolve(),\n): Promise<void> {\n if (closed()) {\n return;\n }\n\n const [perdagLMID, perdagBaseSnapshot, mainClientGroupID] = await withRead(\n perdag,\n async perdagRead => {\n await assertHasClientState(clientID, perdagRead);\n const mainClientGroupID = await getClientGroupIDForClient(\n clientID,\n perdagRead,\n );\n assert(\n mainClientGroupID,\n `No main client group for clientID: ${clientID}`,\n );\n const [, perdagMainClientGroupHeadCommit] = await getClientGroupInfo(\n perdagRead,\n mainClientGroupID,\n );\n const perdagLMID = await perdagMainClientGroupHeadCommit.getMutationID(\n clientID,\n perdagRead,\n );\n const perdagBaseSnapshot = await baseSnapshotFromCommit(\n perdagMainClientGroupHeadCommit,\n perdagRead,\n );\n assertSnapshotCommitDD31(perdagBaseSnapshot);\n return [perdagLMID, perdagBaseSnapshot, mainClientGroupID];\n },\n );\n\n if (closed()) {\n return;\n }\n const [\n newMemdagMutations,\n memdagBaseSnapshot,\n gatheredChunks,\n zeroDataForBaseSnapshot,\n ] = await withRead(memdag, async memdagRead => {\n const memdagHeadCommit = await commitFromHead(\n DEFAULT_HEAD_NAME,\n memdagRead,\n );\n const newMutations = await localMutationsGreaterThan(\n memdagHeadCommit,\n {[clientID]: perdagLMID || 0},\n memdagRead,\n );\n const memdagBaseSnapshot = await baseSnapshotFromCommit(\n memdagHeadCommit,\n memdagRead,\n );\n assertSnapshotCommitDD31(memdagBaseSnapshot);\n\n let gatheredChunks: ReadonlyMap<Hash, Chunk> | undefined;\n let zeroData: ZeroTxData | undefined;\n if (\n compareCookiesForSnapshots(memdagBaseSnapshot, perdagBaseSnapshot) > 0\n ) {\n await onGatherMemOnlyChunksForTest();\n // Might need to persist snapshot, we will have to double check\n // after gathering the snapshot chunks from memdag\n const memdagBaseSnapshotHash = memdagBaseSnapshot.chunk.hash;\n // Gather all memory only chunks from base snapshot on the memdag.\n const visitor = new GatherMemoryOnlyVisitor(memdagRead);\n await visitor.visit(memdagBaseSnapshotHash);\n gatheredChunks = visitor.gatheredChunks;\n\n // Fork Zero's IVM state to the base snapshot while this read is still\n // held. The fork is a diff from the IVM's current head (the memdag main\n // head) to the base snapshot, and both are memdag chunks that a\n // concurrent poke is free to collect the moment this read is released:\n // moving the main head drops the superseded local commits, and a\n // snapshot commit carries no ref to its basis. Taking the fork under\n // the same lock that fixed `memdagBaseSnapshot` is what keeps the\n // diff's endpoints alive; taken afterwards it raced every poke, and\n // lost as `ChunkNotFoundError` out of persist. It is only needed when\n // the snapshot may be persisted; otherwise the perdag rebase below\n // forks to the perdag head instead.\n zeroData =\n getZeroData &&\n (await getZeroData(memdagBaseSnapshotHash, {\n openLazyRead: memdagRead,\n }));\n }\n\n return [newMutations, memdagBaseSnapshot, gatheredChunks, zeroData];\n });\n\n if (closed()) {\n return;\n }\n\n let memdagBaseSnapshotPersisted = false;\n // Carried across both rebase batches below: each batch continues from the\n // branch the previous one ended on.\n let zeroDataForRebase = zeroDataForBaseSnapshot;\n\n await withWrite(perdag, async perdagWrite => {\n const [mainClientGroup, latestPerdagMainClientGroupHeadCommit] =\n await getClientGroupInfo(perdagWrite, mainClientGroupID);\n\n // These initial values for newMainClientGroupHeadHash, mutationIDs,\n // lastServerAckdMutationIDs are correct for the case where the memdag\n // snapshot is *not* persisted. If the memdag snapshot is persisted\n // these values are overwritten appropriately.\n let newMainClientGroupHeadHash: Hash =\n latestPerdagMainClientGroupHeadCommit.chunk.hash;\n let mutationIDs: Record<ClientID, number> = {\n ...mainClientGroup.mutationIDs,\n };\n let {lastServerAckdMutationIDs} = mainClientGroup;\n\n if (gatheredChunks) {\n // check if memdag snapshot still newer than perdag snapshot\n\n const client = await mustGetClient(clientID, perdagWrite);\n assertClientV6(client);\n\n const latestPerdagBaseSnapshot = await baseSnapshotFromCommit(\n latestPerdagMainClientGroupHeadCommit,\n perdagWrite,\n );\n assertSnapshotCommitDD31(latestPerdagBaseSnapshot);\n\n // check if memdag snapshot still newer than perdag snapshot\n if (\n compareCookiesForSnapshots(\n memdagBaseSnapshot,\n latestPerdagBaseSnapshot,\n ) > 0\n ) {\n // still newer, persist memdag snapshot by writing chunks\n memdagBaseSnapshotPersisted = true;\n await Promise.all(\n Array.from(gatheredChunks.values(), c => perdagWrite.putChunk(c)),\n );\n\n await setClient(\n clientID,\n {\n ...client,\n persistHash: memdagBaseSnapshot.chunk.hash,\n },\n perdagWrite,\n );\n // Rebase local mutations from perdag main client group onto new\n // snapshot\n newMainClientGroupHeadHash = memdagBaseSnapshot.chunk.hash;\n const mainClientGroupLocalMutations = await localMutationsDD31(\n mainClientGroup.headHash,\n perdagWrite,\n );\n\n lastServerAckdMutationIDs = memdagBaseSnapshot.meta.lastMutationIDs;\n mutationIDs = {...lastServerAckdMutationIDs};\n\n const rebased = await rebase(\n mainClientGroupLocalMutations,\n newMainClientGroupHeadHash,\n perdagWrite,\n mutators,\n mutationIDs,\n lc,\n formatVersion,\n zeroDataForRebase,\n );\n newMainClientGroupHeadHash = rebased.hash;\n // The mutations rebased below run after these, so they have to see\n // what these wrote.\n zeroDataForRebase = rebased.zeroData;\n }\n }\n\n let zeroDataForPerdagHeadCommit: ZeroTxData | undefined;\n if (!memdagBaseSnapshotPersisted) {\n zeroDataForPerdagHeadCommit =\n getZeroData &&\n (await getZeroData(newMainClientGroupHeadHash, {\n openLazySourceRead: perdagWrite,\n }));\n }\n\n // rebase new memdag mutations onto perdag\n newMainClientGroupHeadHash = (\n await rebase(\n newMemdagMutations,\n newMainClientGroupHeadHash,\n perdagWrite,\n mutators,\n mutationIDs,\n lc,\n formatVersion,\n zeroDataForPerdagHeadCommit ?? zeroDataForRebase,\n )\n ).hash;\n\n const newMainClientGroup = {\n ...mainClientGroup,\n headHash: newMainClientGroupHeadHash,\n mutationIDs,\n lastServerAckdMutationIDs,\n };\n\n await setClientGroup(mainClientGroupID, newMainClientGroup, perdagWrite);\n });\n\n if (gatheredChunks && memdagBaseSnapshotPersisted) {\n await withWrite(memdag, memdagWrite =>\n memdagWrite.chunksPersisted([...gatheredChunks.keys()]),\n );\n }\n}\n\nasync function getClientGroupInfo(\n perdagRead: Read,\n clientGroupID: ClientGroupID,\n): Promise<[ClientGroup, Commit<Meta>]> {\n const clientGroup = await getClientGroup(clientGroupID, perdagRead);\n assert(clientGroup, `No client group for clientGroupID: ${clientGroupID}`);\n return [clientGroup, await commitFromHash(clientGroup.headHash, perdagRead)];\n}\n\ntype RebasedBatch = {\n hash: Hash;\n zeroData: ZeroTxData | undefined;\n};\n\nasync function rebase(\n mutations: Commit<LocalMetaDD31>[],\n basis: Hash,\n write: Write,\n mutators: MutatorDefs,\n mutationIDs: Record<ClientID, number>,\n lc: LogContext,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<RebasedBatch> {\n const basisMutationIDs = new Map<Hash, Map<ClientID, Promise<number>>>();\n const getBasisMutationID = (\n basisHash: Hash,\n clientID: ClientID,\n ): Promise<number> =>\n getOrInsertComputed(\n getOrInsert(basisMutationIDs, basisHash, new Map()),\n clientID,\n () =>\n commitFromHash(basisHash, write).then(commit =>\n commit.getMutationID(clientID, write),\n ),\n );\n for (let i = mutations.length - 1; i >= 0; i--) {\n const mutationCommit = mutations[i];\n const {meta} = mutationCommit;\n if (meta.mutationID > (await getBasisMutationID(basis, meta.clientID))) {\n mutationIDs[meta.clientID] = meta.mutationID;\n const {result, zeroData: next} = await rebaseMutationAndPutCommit(\n mutationCommit,\n write,\n basis,\n mutators,\n lc,\n meta.clientID,\n formatVersion,\n zeroData,\n );\n basis = result.chunk.hash;\n zeroData = next;\n }\n }\n return {hash: basis, zeroData};\n}\n"],"mappings":"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"}
@@ -30,10 +30,11 @@ async function refresh(lc, memdag, perdag, clientID, mutators, diffConfig, close
30
30
  const { gatheredChunks } = visitor;
31
31
  const refreshHashesSet = new Set(client.refreshHashes);
32
32
  refreshHashesSet.add(perdagClientGroupHeadHash);
33
- await setClient(clientID, {
33
+ const newClient = {
34
34
  ...client,
35
35
  refreshHashes: [...refreshHashesSet]
36
- }, perdagWrite);
36
+ };
37
+ await setClient(clientID, newClient, perdagWrite);
37
38
  return [
38
39
  perdagClientGroupHeadHash,
39
40
  perdagClientGroupBaseSnapshot,
@@ -65,7 +66,8 @@ async function refresh(lc, memdag, perdag, clientID, mutators, diffConfig, close
65
66
  zeroData = next;
66
67
  }
67
68
  }
68
- const diffs = await diffCommits(memdagHeadCommit, await commitFromHash(newMemdagHeadHash, memdagWrite), memdagWrite, diffConfig, formatVersion);
69
+ const newMemdagHeadCommit = await commitFromHash(newMemdagHeadHash, memdagWrite);
70
+ const diffs = await diffCommits(memdagHeadCommit, newMemdagHeadCommit, memdagWrite, diffConfig, formatVersion);
69
71
  await memdagWrite.setHead(DEFAULT_HEAD_NAME, newMemdagHeadHash);
70
72
  return {
71
73
  type: "complete",
@@ -78,10 +80,11 @@ async function refresh(lc, memdag, perdag, clientID, mutators, diffConfig, close
78
80
  });
79
81
  if (closed()) return;
80
82
  const setRefreshHashes = (refreshHashes) => withWrite(perdag, async (perdagWrite) => {
81
- await setClient(clientID, {
83
+ const newClient = {
82
84
  ...await mustGetClient(clientID, perdagWrite),
83
85
  refreshHashes
84
- }, perdagWrite);
86
+ };
87
+ await setClient(clientID, newClient, perdagWrite);
85
88
  });
86
89
  if (result.type === "aborted") {
87
90
  if (result.refreshHashesForRevert) await setRefreshHashes(result.refreshHashesForRevert);
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.js","names":[],"sources":["../../../../../replicache/src/persist/refresh.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport type {LazyStore} from '../dag/lazy-store.ts';\nimport type {Store} from '../dag/store.ts';\nimport type {Commit} from '../db/commit.ts';\nimport {\n DEFAULT_HEAD_NAME,\n type SnapshotMetaDD31,\n assertSnapshotCommitDD31,\n baseSnapshotFromCommit,\n baseSnapshotFromHash,\n baseSnapshotFromHead,\n commitFromHash,\n commitFromHead,\n compareCookiesForSnapshots,\n localMutationsGreaterThan,\n} from '../db/commit.ts';\nimport {rebaseMutationAndPutCommit} from '../db/rebase.ts';\nimport type * as FormatVersion from '../format-version-enum.ts';\nimport type {Hash} from '../hash.ts';\nimport type {ZeroOption} from '../replicache-options.ts';\nimport type {DiffsMap} from '../sync/diff.ts';\nimport {type DiffComputationConfig, diffCommits} from '../sync/diff.ts';\nimport type {ClientID} from '../sync/ids.ts';\nimport type {MutatorDefs} from '../types.ts';\nimport {withRead, withWrite} from '../with-transactions.ts';\nimport {\n ClientStateNotFoundError,\n type ClientV6,\n assertClientV6,\n getClientGroupForClient,\n mustGetClient,\n setClient,\n} from './clients.ts';\nimport {\n type ChunkWithSize,\n GatherNotCachedVisitor,\n} from './gather-not-cached-visitor.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nconst GATHER_SIZE_LIMIT = 5 * 2 ** 20; // 5 MB\n\ntype RefreshResult =\n | {\n type: 'aborted';\n refreshHashesForRevert?: readonly Hash[] | undefined;\n }\n | {\n type: 'complete';\n diffs: DiffsMap;\n newPerdagClientHeadHash: Hash;\n oldHead: Hash;\n newHead: Hash;\n };\n\n/**\n * This returns the diff between the state of the btree before and after\n * refresh. It returns `undefined` if the refresh was aborted.\n */\nexport async function refresh(\n lc: LogContext,\n memdag: LazyStore,\n perdag: Store,\n clientID: ClientID,\n mutators: MutatorDefs,\n diffConfig: DiffComputationConfig,\n closed: () => boolean,\n formatVersion: FormatVersion,\n zero: ZeroOption | undefined,\n): Promise<{oldHead: Hash; newHead: Hash; diffs: DiffsMap} | undefined> {\n if (closed()) {\n return;\n }\n const memdagBaseSnapshot = await withRead(memdag, memdagRead =>\n baseSnapshotFromHead(DEFAULT_HEAD_NAME, memdagRead),\n );\n assertSnapshotCommitDD31(memdagBaseSnapshot);\n\n type PerdagWriteResult = [\n perdagClientGroupHeadHash: Hash,\n perdagClientGroupBaseSnapshot: Commit<SnapshotMetaDD31>,\n perdagLmid: number,\n gatheredChunks: ReadonlyMap<Hash, ChunkWithSize>,\n refreshHashesForRevert: readonly Hash[],\n ];\n\n // Suspend eviction and deletion of chunks cached by the lazy store\n // to prevent cache misses. If eviction and deletion are not suspended\n // some chunks that are not gathered due to already being cached, may be\n // evicted or deleted by the time the write lock is acquired on the memdag,\n // which can lead to cache misses when performing the rebase and diff.\n // It is important to avoid these cache misses because they often create jank\n // because they block local mutations, pulls and queries on reading from idb.\n // Cache misses can still happen during the rebase and diff, but only\n // if the gather step hits its size limit.\n const result: RefreshResult =\n await memdag.withSuspendedSourceCacheEvictsAndDeletes(async () => {\n const perdagWriteResult: PerdagWriteResult | undefined = await withWrite(\n perdag,\n async perdagWrite => {\n const clientGroup = await getClientGroupForClient(\n clientID,\n perdagWrite,\n );\n if (!clientGroup) {\n throw new ClientStateNotFoundError(clientID);\n }\n\n const perdagClientGroupHeadHash = clientGroup.headHash;\n const perdagClientGroupHeadCommit = await commitFromHash(\n perdagClientGroupHeadHash,\n perdagWrite,\n );\n const perdagLmid = await perdagClientGroupHeadCommit.getMutationID(\n clientID,\n perdagWrite,\n );\n\n // Need to pull this head into memdag, but can't have it disappear if\n // perdag moves forward while we're rebasing in memdag. Can't change\n // client headHash until our rebase in memdag is complete, because if\n // rebase fails, then nothing is keeping client's chunks alive in\n // perdag.\n const client = await mustGetClient(clientID, perdagWrite);\n assertClientV6(client);\n const perdagClientGroupBaseSnapshot = await baseSnapshotFromHash(\n perdagClientGroupHeadHash,\n perdagWrite,\n );\n assertSnapshotCommitDD31(perdagClientGroupBaseSnapshot);\n if (\n shouldAbortRefresh(\n memdagBaseSnapshot,\n perdagClientGroupBaseSnapshot,\n perdagClientGroupHeadHash,\n )\n ) {\n return undefined;\n }\n\n // To avoid pulling the entire perdag graph into the memdag\n // the amount of chunk data gathered is limited by size.\n const visitor = new GatherNotCachedVisitor(\n perdagWrite,\n memdag,\n GATHER_SIZE_LIMIT,\n );\n await visitor.visit(perdagClientGroupHeadHash);\n const {gatheredChunks} = visitor;\n\n const refreshHashesSet = new Set(client.refreshHashes);\n refreshHashesSet.add(perdagClientGroupHeadHash);\n\n const newClient: ClientV6 = {\n ...client,\n refreshHashes: [...refreshHashesSet],\n };\n\n await setClient(clientID, newClient, perdagWrite);\n return [\n perdagClientGroupHeadHash,\n perdagClientGroupBaseSnapshot,\n perdagLmid,\n gatheredChunks,\n client.refreshHashes,\n ];\n },\n );\n\n if (closed() || !perdagWriteResult) {\n return {\n type: 'aborted',\n } as const;\n }\n\n const [\n perdagClientGroupHeadHash,\n perdagClientGroupBaseSnapshot,\n perdagLmid,\n gatheredChunks,\n refreshHashesForRevert,\n ] = perdagWriteResult;\n return withWrite(memdag, async memdagWrite => {\n const memdagHeadCommit = await commitFromHead(\n DEFAULT_HEAD_NAME,\n memdagWrite,\n );\n const memdagBaseSnapshot = await baseSnapshotFromCommit(\n memdagHeadCommit,\n memdagWrite,\n );\n assertSnapshotCommitDD31(memdagBaseSnapshot);\n if (\n shouldAbortRefresh(\n memdagBaseSnapshot,\n perdagClientGroupBaseSnapshot,\n perdagClientGroupHeadHash,\n )\n ) {\n return {\n type: 'aborted',\n refreshHashesForRevert,\n };\n }\n\n const newMemdagMutations = await localMutationsGreaterThan(\n memdagHeadCommit,\n {[clientID]: perdagLmid},\n memdagWrite,\n );\n const ps = [];\n for (const {chunk, size} of gatheredChunks.values()) {\n ps.push(memdagWrite.putChunk(chunk, size));\n }\n await Promise.all(ps);\n\n let newMemdagHeadHash = perdagClientGroupHeadHash;\n if (newMemdagMutations.length > 0) {\n let zeroData = await zero?.getTxData?.(newMemdagHeadHash, {\n openLazyRead: memdagWrite,\n });\n for (let i = newMemdagMutations.length - 1; i >= 0; i--) {\n const {result, zeroData: next} = await rebaseMutationAndPutCommit(\n newMemdagMutations[i],\n memdagWrite,\n newMemdagHeadHash,\n mutators,\n lc,\n newMemdagMutations[i].meta.clientID,\n formatVersion,\n zeroData,\n );\n newMemdagHeadHash = result.chunk.hash;\n zeroData = next;\n }\n }\n\n const newMemdagHeadCommit = await commitFromHash(\n newMemdagHeadHash,\n memdagWrite,\n );\n const diffs = await diffCommits(\n memdagHeadCommit,\n newMemdagHeadCommit,\n memdagWrite,\n diffConfig,\n formatVersion,\n );\n\n await memdagWrite.setHead(DEFAULT_HEAD_NAME, newMemdagHeadHash);\n return {\n type: 'complete',\n diffs,\n oldHead: memdagHeadCommit.chunk.hash,\n newHead: newMemdagHeadHash,\n newPerdagClientHeadHash: perdagClientGroupHeadHash,\n } as const;\n });\n });\n\n if (closed()) {\n return;\n }\n\n const setRefreshHashes = (refreshHashes: readonly Hash[]) =>\n withWrite(perdag, async perdagWrite => {\n const client = await mustGetClient(clientID, perdagWrite);\n const newClient = {\n ...client,\n refreshHashes,\n };\n\n // If this cleanup never happens, it's no big deal, some data will stay\n // alive longer but next refresh will fix it.\n await setClient(clientID, newClient, perdagWrite);\n });\n\n if (result.type === 'aborted') {\n if (result.refreshHashesForRevert) {\n await setRefreshHashes(result.refreshHashesForRevert);\n }\n return undefined;\n }\n\n // Advance zero here before setting refresh hashes\n // since we must advance before delegating control of the microtask\n // loop.\n zero?.advance(result.oldHead, result.newHead, result.diffs.get('') ?? []);\n await setRefreshHashes([result.newPerdagClientHeadHash]);\n return {\n oldHead: result.oldHead,\n newHead: result.newHead,\n diffs: result.diffs,\n };\n}\n\nfunction shouldAbortRefresh(\n memdagBaseSnapshot: Commit<SnapshotMetaDD31>,\n perdagClientGroupBaseSnapshot: Commit<SnapshotMetaDD31>,\n perdagClientGroupHeadHash: Hash,\n): boolean {\n const baseSnapshotCookieCompareResult = compareCookiesForSnapshots(\n memdagBaseSnapshot,\n perdagClientGroupBaseSnapshot,\n );\n return (\n baseSnapshotCookieCompareResult > 0 ||\n (baseSnapshotCookieCompareResult === 0 &&\n perdagClientGroupHeadHash === perdagClientGroupBaseSnapshot.chunk.hash)\n );\n}\n"],"mappings":";;;;;;;AAyCA,IAAM,oBAAoB,IAAI,KAAK;;;;;AAmBnC,eAAsB,QACpB,IACA,QACA,QACA,UACA,UACA,YACA,QACA,eACA,MACsE;CACtE,IAAI,OAAO,GACT;CAEF,MAAM,qBAAqB,MAAM,SAAS,SAAQ,eAChD,qBAAqB,mBAAmB,UAAU,CACpD;CACA,yBAAyB,kBAAkB;CAmB3C,MAAM,SACJ,MAAM,OAAO,yCAAyC,YAAY;EAChE,MAAM,oBAAmD,MAAM,UAC7D,QACA,OAAM,gBAAe;GACnB,MAAM,cAAc,MAAM,wBACxB,UACA,WACF;GACA,IAAI,CAAC,aACH,MAAM,IAAI,yBAAyB,QAAQ;GAG7C,MAAM,4BAA4B,YAAY;GAK9C,MAAM,aAAa,OAAM,MAJiB,eACxC,2BACA,WACF,GACqD,cACnD,UACA,WACF;GAOA,MAAM,SAAS,MAAM,cAAc,UAAU,WAAW;GACxD,eAAe,MAAM;GACrB,MAAM,gCAAgC,MAAM,qBAC1C,2BACA,WACF;GACA,yBAAyB,6BAA6B;GACtD,IACE,mBACE,oBACA,+BACA,yBACF,GAEA;GAKF,MAAM,UAAU,IAAI,uBAClB,aACA,QACA,iBACF;GACA,MAAM,QAAQ,MAAM,yBAAyB;GAC7C,MAAM,EAAC,mBAAkB;GAEzB,MAAM,mBAAmB,IAAI,IAAI,OAAO,aAAa;GACrD,iBAAiB,IAAI,yBAAyB;GAO9C,MAAM,UAAU,UAAU;IAJxB,GAAG;IACH,eAAe,CAAC,GAAG,gBAAgB;GAGX,GAAW,WAAW;GAChD,OAAO;IACL;IACA;IACA;IACA;IACA,OAAO;GACT;EACF,CACF;EAEA,IAAI,OAAO,KAAK,CAAC,mBACf,OAAO,EACL,MAAM,UACR;EAGF,MAAM,CACJ,2BACA,+BACA,YACA,gBACA,0BACE;EACJ,OAAO,UAAU,QAAQ,OAAM,gBAAe;GAC5C,MAAM,mBAAmB,MAAM,eAC7B,mBACA,WACF;GACA,MAAM,qBAAqB,MAAM,uBAC/B,kBACA,WACF;GACA,yBAAyB,kBAAkB;GAC3C,IACE,mBACE,oBACA,+BACA,yBACF,GAEA,OAAO;IACL,MAAM;IACN;GACF;GAGF,MAAM,qBAAqB,MAAM,0BAC/B,kBACA,GAAE,WAAW,WAAU,GACvB,WACF;GACA,MAAM,KAAK,CAAC;GACZ,KAAK,MAAM,EAAC,OAAO,UAAS,eAAe,OAAO,GAChD,GAAG,KAAK,YAAY,SAAS,OAAO,IAAI,CAAC;GAE3C,MAAM,QAAQ,IAAI,EAAE;GAEpB,IAAI,oBAAoB;GACxB,IAAI,mBAAmB,SAAS,GAAG;IACjC,IAAI,WAAW,MAAM,MAAM,YAAY,mBAAmB,EACxD,cAAc,YAChB,CAAC;IACD,KAAK,IAAI,IAAI,mBAAmB,SAAS,GAAG,KAAK,GAAG,KAAK;KACvD,MAAM,EAAC,QAAQ,UAAU,SAAQ,MAAM,2BACrC,mBAAmB,IACnB,aACA,mBACA,UACA,IACA,mBAAmB,GAAG,KAAK,UAC3B,eACA,QACF;KACA,oBAAoB,OAAO,MAAM;KACjC,WAAW;IACb;GACF;GAMA,MAAM,QAAQ,MAAM,YAClB,kBACA,MANgC,eAChC,mBACA,WACF,GAIE,aACA,YACA,aACF;GAEA,MAAM,YAAY,QAAQ,mBAAmB,iBAAiB;GAC9D,OAAO;IACL,MAAM;IACN;IACA,SAAS,iBAAiB,MAAM;IAChC,SAAS;IACT,yBAAyB;GAC3B;EACF,CAAC;CACH,CAAC;CAEH,IAAI,OAAO,GACT;CAGF,MAAM,oBAAoB,kBACxB,UAAU,QAAQ,OAAM,gBAAe;EASrC,MAAM,UAAU,UAAU;GANxB,GAAG,MAFgB,cAAc,UAAU,WAAW;GAGtD;EAKwB,GAAW,WAAW;CAClD,CAAC;CAEH,IAAI,OAAO,SAAS,WAAW;EAC7B,IAAI,OAAO,wBACT,MAAM,iBAAiB,OAAO,sBAAsB;EAEtD;CACF;CAKA,MAAM,QAAQ,OAAO,SAAS,OAAO,SAAS,OAAO,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC;CACxE,MAAM,iBAAiB,CAAC,OAAO,uBAAuB,CAAC;CACvD,OAAO;EACL,SAAS,OAAO;EAChB,SAAS,OAAO;EAChB,OAAO,OAAO;CAChB;AACF;AAEA,SAAS,mBACP,oBACA,+BACA,2BACS;CACT,MAAM,kCAAkC,2BACtC,oBACA,6BACF;CACA,OACE,kCAAkC,KACjC,oCAAoC,KACnC,8BAA8B,8BAA8B,MAAM;AAExE"}
1
+ {"version":3,"file":"refresh.js","names":[],"sources":["../../../../../replicache/src/persist/refresh.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport type {LazyStore} from '../dag/lazy-store.ts';\nimport type {Store} from '../dag/store.ts';\nimport type {Commit} from '../db/commit.ts';\nimport {\n DEFAULT_HEAD_NAME,\n type SnapshotMetaDD31,\n assertSnapshotCommitDD31,\n baseSnapshotFromCommit,\n baseSnapshotFromHash,\n baseSnapshotFromHead,\n commitFromHash,\n commitFromHead,\n compareCookiesForSnapshots,\n localMutationsGreaterThan,\n} from '../db/commit.ts';\nimport {rebaseMutationAndPutCommit} from '../db/rebase.ts';\nimport type * as FormatVersion from '../format-version-enum.ts';\nimport type {Hash} from '../hash.ts';\nimport type {ZeroOption} from '../replicache-options.ts';\nimport type {DiffsMap} from '../sync/diff.ts';\nimport {type DiffComputationConfig, diffCommits} from '../sync/diff.ts';\nimport type {ClientID} from '../sync/ids.ts';\nimport type {MutatorDefs} from '../types.ts';\nimport {withRead, withWrite} from '../with-transactions.ts';\nimport {\n ClientStateNotFoundError,\n type ClientV6,\n assertClientV6,\n getClientGroupForClient,\n mustGetClient,\n setClient,\n} from './clients.ts';\nimport {\n type ChunkWithSize,\n GatherNotCachedVisitor,\n} from './gather-not-cached-visitor.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nconst GATHER_SIZE_LIMIT = 5 * 2 ** 20; // 5 MB\n\ntype RefreshResult =\n | {\n type: 'aborted';\n refreshHashesForRevert?: readonly Hash[] | undefined;\n }\n | {\n type: 'complete';\n diffs: DiffsMap;\n newPerdagClientHeadHash: Hash;\n oldHead: Hash;\n newHead: Hash;\n };\n\n/**\n * This returns the diff between the state of the btree before and after\n * refresh. It returns `undefined` if the refresh was aborted.\n */\nexport async function refresh(\n lc: LogContext,\n memdag: LazyStore,\n perdag: Store,\n clientID: ClientID,\n mutators: MutatorDefs,\n diffConfig: DiffComputationConfig,\n closed: () => boolean,\n formatVersion: FormatVersion,\n zero: ZeroOption | undefined,\n): Promise<{oldHead: Hash; newHead: Hash; diffs: DiffsMap} | undefined> {\n if (closed()) {\n return;\n }\n const memdagBaseSnapshot = await withRead(memdag, memdagRead =>\n baseSnapshotFromHead(DEFAULT_HEAD_NAME, memdagRead),\n );\n assertSnapshotCommitDD31(memdagBaseSnapshot);\n\n type PerdagWriteResult = [\n perdagClientGroupHeadHash: Hash,\n perdagClientGroupBaseSnapshot: Commit<SnapshotMetaDD31>,\n perdagLmid: number,\n gatheredChunks: ReadonlyMap<Hash, ChunkWithSize>,\n refreshHashesForRevert: readonly Hash[],\n ];\n\n // Suspend eviction and deletion of chunks cached by the lazy store\n // to prevent cache misses. If eviction and deletion are not suspended\n // some chunks that are not gathered due to already being cached, may be\n // evicted or deleted by the time the write lock is acquired on the memdag,\n // which can lead to cache misses when performing the rebase and diff.\n // It is important to avoid these cache misses because they often create jank\n // because they block local mutations, pulls and queries on reading from idb.\n // Cache misses can still happen during the rebase and diff, but only\n // if the gather step hits its size limit.\n const result: RefreshResult =\n await memdag.withSuspendedSourceCacheEvictsAndDeletes(async () => {\n const perdagWriteResult: PerdagWriteResult | undefined = await withWrite(\n perdag,\n async perdagWrite => {\n const clientGroup = await getClientGroupForClient(\n clientID,\n perdagWrite,\n );\n if (!clientGroup) {\n throw new ClientStateNotFoundError(clientID);\n }\n\n const perdagClientGroupHeadHash = clientGroup.headHash;\n const perdagClientGroupHeadCommit = await commitFromHash(\n perdagClientGroupHeadHash,\n perdagWrite,\n );\n const perdagLmid = await perdagClientGroupHeadCommit.getMutationID(\n clientID,\n perdagWrite,\n );\n\n // Need to pull this head into memdag, but can't have it disappear if\n // perdag moves forward while we're rebasing in memdag. Can't change\n // client headHash until our rebase in memdag is complete, because if\n // rebase fails, then nothing is keeping client's chunks alive in\n // perdag.\n const client = await mustGetClient(clientID, perdagWrite);\n assertClientV6(client);\n const perdagClientGroupBaseSnapshot = await baseSnapshotFromHash(\n perdagClientGroupHeadHash,\n perdagWrite,\n );\n assertSnapshotCommitDD31(perdagClientGroupBaseSnapshot);\n if (\n shouldAbortRefresh(\n memdagBaseSnapshot,\n perdagClientGroupBaseSnapshot,\n perdagClientGroupHeadHash,\n )\n ) {\n return undefined;\n }\n\n // To avoid pulling the entire perdag graph into the memdag\n // the amount of chunk data gathered is limited by size.\n const visitor = new GatherNotCachedVisitor(\n perdagWrite,\n memdag,\n GATHER_SIZE_LIMIT,\n );\n await visitor.visit(perdagClientGroupHeadHash);\n const {gatheredChunks} = visitor;\n\n const refreshHashesSet = new Set(client.refreshHashes);\n refreshHashesSet.add(perdagClientGroupHeadHash);\n\n const newClient: ClientV6 = {\n ...client,\n refreshHashes: [...refreshHashesSet],\n };\n\n await setClient(clientID, newClient, perdagWrite);\n return [\n perdagClientGroupHeadHash,\n perdagClientGroupBaseSnapshot,\n perdagLmid,\n gatheredChunks,\n client.refreshHashes,\n ];\n },\n );\n\n if (closed() || !perdagWriteResult) {\n return {\n type: 'aborted',\n } as const;\n }\n\n const [\n perdagClientGroupHeadHash,\n perdagClientGroupBaseSnapshot,\n perdagLmid,\n gatheredChunks,\n refreshHashesForRevert,\n ] = perdagWriteResult;\n return withWrite(memdag, async memdagWrite => {\n const memdagHeadCommit = await commitFromHead(\n DEFAULT_HEAD_NAME,\n memdagWrite,\n );\n const memdagBaseSnapshot = await baseSnapshotFromCommit(\n memdagHeadCommit,\n memdagWrite,\n );\n assertSnapshotCommitDD31(memdagBaseSnapshot);\n if (\n shouldAbortRefresh(\n memdagBaseSnapshot,\n perdagClientGroupBaseSnapshot,\n perdagClientGroupHeadHash,\n )\n ) {\n return {\n type: 'aborted',\n refreshHashesForRevert,\n };\n }\n\n const newMemdagMutations = await localMutationsGreaterThan(\n memdagHeadCommit,\n {[clientID]: perdagLmid},\n memdagWrite,\n );\n const ps = [];\n for (const {chunk, size} of gatheredChunks.values()) {\n ps.push(memdagWrite.putChunk(chunk, size));\n }\n await Promise.all(ps);\n\n let newMemdagHeadHash = perdagClientGroupHeadHash;\n if (newMemdagMutations.length > 0) {\n let zeroData = await zero?.getTxData?.(newMemdagHeadHash, {\n openLazyRead: memdagWrite,\n });\n for (let i = newMemdagMutations.length - 1; i >= 0; i--) {\n const {result, zeroData: next} = await rebaseMutationAndPutCommit(\n newMemdagMutations[i],\n memdagWrite,\n newMemdagHeadHash,\n mutators,\n lc,\n newMemdagMutations[i].meta.clientID,\n formatVersion,\n zeroData,\n );\n newMemdagHeadHash = result.chunk.hash;\n zeroData = next;\n }\n }\n\n const newMemdagHeadCommit = await commitFromHash(\n newMemdagHeadHash,\n memdagWrite,\n );\n const diffs = await diffCommits(\n memdagHeadCommit,\n newMemdagHeadCommit,\n memdagWrite,\n diffConfig,\n formatVersion,\n );\n\n await memdagWrite.setHead(DEFAULT_HEAD_NAME, newMemdagHeadHash);\n return {\n type: 'complete',\n diffs,\n oldHead: memdagHeadCommit.chunk.hash,\n newHead: newMemdagHeadHash,\n newPerdagClientHeadHash: perdagClientGroupHeadHash,\n } as const;\n });\n });\n\n if (closed()) {\n return;\n }\n\n const setRefreshHashes = (refreshHashes: readonly Hash[]) =>\n withWrite(perdag, async perdagWrite => {\n const client = await mustGetClient(clientID, perdagWrite);\n const newClient = {\n ...client,\n refreshHashes,\n };\n\n // If this cleanup never happens, it's no big deal, some data will stay\n // alive longer but next refresh will fix it.\n await setClient(clientID, newClient, perdagWrite);\n });\n\n if (result.type === 'aborted') {\n if (result.refreshHashesForRevert) {\n await setRefreshHashes(result.refreshHashesForRevert);\n }\n return undefined;\n }\n\n // Advance zero here before setting refresh hashes\n // since we must advance before delegating control of the microtask\n // loop.\n zero?.advance(result.oldHead, result.newHead, result.diffs.get('') ?? []);\n await setRefreshHashes([result.newPerdagClientHeadHash]);\n return {\n oldHead: result.oldHead,\n newHead: result.newHead,\n diffs: result.diffs,\n };\n}\n\nfunction shouldAbortRefresh(\n memdagBaseSnapshot: Commit<SnapshotMetaDD31>,\n perdagClientGroupBaseSnapshot: Commit<SnapshotMetaDD31>,\n perdagClientGroupHeadHash: Hash,\n): boolean {\n const baseSnapshotCookieCompareResult = compareCookiesForSnapshots(\n memdagBaseSnapshot,\n perdagClientGroupBaseSnapshot,\n );\n return (\n baseSnapshotCookieCompareResult > 0 ||\n (baseSnapshotCookieCompareResult === 0 &&\n perdagClientGroupHeadHash === perdagClientGroupBaseSnapshot.chunk.hash)\n );\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { assert } from "../../shared/src/asserts.js";
2
+ import { resolver } from "../../shared/src/resolver.js";
2
3
  import { AbortError } from "../../shared/src/abort-error.js";
3
4
  import { sleep } from "../../shared/src/sleep.js";
4
5
  import { requestIdle } from "./request-idle.js";
5
- import { resolver } from "@rocicorp/resolver";
6
6
  //#region ../replicache/src/process-scheduler.ts
7
7
  var ProcessScheduler = class {
8
8
  #process;
@@ -1 +1 @@
1
- {"version":3,"file":"process-scheduler.js","names":["#process","#idleTimeoutMs","#throttleMs","#abortSignal","#requestIdle","#runResolver","#scheduledResolver","#scheduleInternal","#runPromise","#throttlePromise"],"sources":["../../../../replicache/src/process-scheduler.ts"],"sourcesContent":["import {type Resolver, resolver} from '@rocicorp/resolver';\nimport {AbortError} from '../../shared/src/abort-error.ts';\nimport {assert} from '../../shared/src/asserts.ts';\nimport {sleep} from '../../shared/src/sleep.ts';\nimport {requestIdle as defaultRequestIdle} from './request-idle.ts';\n\nexport class ProcessScheduler {\n readonly #process: () => Promise<void>;\n readonly #idleTimeoutMs: number;\n readonly #throttleMs: number;\n readonly #abortSignal: AbortSignal;\n readonly #requestIdle: typeof defaultRequestIdle;\n #scheduledResolver: Resolver<void> | undefined = undefined;\n #runResolver: Resolver<void> | undefined = undefined;\n #runPromise = Promise.resolve();\n #throttlePromise = Promise.resolve();\n\n /**\n * Supports scheduling a `process` to be run with certain constraints.\n * - Process runs are never concurrent.\n * - Multiple calls to schedule will be fulfilled by a single process\n * run started after the call to schedule. A call is never fulfilled by an\n * already running process run. This can be thought of as debouncing.\n * - Process runs are throttled so that the process runs at most once every\n * `throttleMs`.\n * - Process runs try to run during an idle period, but will delay at most\n * `idleTimeoutMs`.\n * - Scheduled runs which have not completed when `abortSignal` is aborted\n * will reject with an `AbortError`.\n */\n constructor(\n process: () => Promise<void>,\n idleTimeoutMs: number,\n throttleMs: number,\n abortSignal: AbortSignal,\n requestIdle = defaultRequestIdle,\n ) {\n this.#process = process;\n this.#idleTimeoutMs = idleTimeoutMs;\n this.#throttleMs = throttleMs;\n this.#abortSignal = abortSignal;\n this.#requestIdle = requestIdle;\n this.#abortSignal.addEventListener(\n 'abort',\n () => {\n const abortError = new AbortError('Aborted');\n this.#runResolver?.reject(abortError);\n this.#scheduledResolver?.reject(abortError);\n this.#runResolver = undefined;\n this.#scheduledResolver = undefined;\n },\n {once: true},\n );\n }\n\n /**\n * Schedules the process to run.\n *\n * The returned promise resolves when the process has completed running.\n * If the process throws an error, the returned promise rejects with that error.\n *\n * If `schedule()` is called multiple times while a process is running/scheduled,\n * they will be debounced into a single run.\n */\n schedule(): Promise<void> {\n if (this.#abortSignal.aborted) {\n return Promise.reject(new AbortError('Aborted'));\n }\n if (this.#scheduledResolver) {\n return this.#scheduledResolver.promise;\n }\n this.#scheduledResolver = resolver();\n void this.#scheduleInternal();\n return this.#scheduledResolver.promise;\n }\n\n /**\n * Runs the process immediately, skipping throttle and idle checks.\n *\n * The returned promise resolves when the process has completed running.\n * If the process throws an error, the returned promise rejects with that error.\n *\n * If there is a scheduled run pending (waiting for idle or throttle), this run\n * will effectively \"take over\" that scheduled run, and the promise returned\n * by `schedule()` will resolve when this run completes.\n *\n * If there is a process currently running, this run will wait for it to finish\n * before starting, satisfying the non-concurrency constraint.\n */\n async run(): Promise<void> {\n if (this.#abortSignal.aborted) {\n return Promise.reject(new AbortError('Aborted'));\n }\n\n // \"Steal\" the scheduled resolver if it exists.\n // This effectively cancels the pending scheduled run (the idle/throttle wait),\n // and fulfills that promise with this run.\n const resolverToResolve = this.#scheduledResolver;\n this.#scheduledResolver = undefined;\n\n // Wait for any currently running process to finish.\n // We create a new promise that represents \"Wait for current, then run me\"\n const prevRunPromise = this.#runPromise;\n\n const runTask = async () => {\n try {\n await prevRunPromise;\n } catch {\n // ignore errors from previous run\n }\n\n if (this.#abortSignal.aborted) {\n throw new AbortError('Aborted');\n }\n\n return this.#process();\n };\n\n const executionPromise = runTask();\n this.#runPromise = executionPromise;\n\n // Reset throttle promise so future runs respect the throttle relative to this run.\n this.#throttlePromise = throttle(this.#throttleMs, this.#abortSignal);\n\n try {\n await executionPromise;\n resolverToResolve?.resolve();\n } catch (e) {\n resolverToResolve?.reject(e);\n throw e;\n }\n }\n\n async #scheduleInternal(): Promise<void> {\n try {\n await this.#runPromise;\n // Prevent errors thrown by process from cancelling scheduled runs.\n // this._runPromise is also awaited below and errors are explicitly\n // propagated to promises returned from schedule.\n } catch {}\n await this.#throttlePromise;\n if (!this.#scheduledResolver) {\n return;\n }\n await this.#requestIdle(this.#idleTimeoutMs);\n if (!this.#scheduledResolver) {\n return;\n }\n this.#throttlePromise = throttle(this.#throttleMs, this.#abortSignal);\n this.#runResolver = this.#scheduledResolver;\n this.#scheduledResolver = undefined;\n try {\n this.#runPromise = this.#process();\n await this.#runPromise;\n this.#runResolver?.resolve();\n } catch (e) {\n this.#runResolver?.reject(e);\n }\n this.#runResolver = undefined;\n }\n}\n\nasync function throttle(\n timeMs: number,\n abortSignal: AbortSignal,\n): Promise<void> {\n try {\n await sleep(timeMs, abortSignal);\n } catch (e) {\n assert(\n e instanceof AbortError,\n 'Expected caught error to be an AbortError',\n );\n }\n}\n"],"mappings":";;;;;;AAMA,IAAa,mBAAb,MAA8B;CAC5B;CACA;CACA;CACA;CACA;CACA,qBAAiD,KAAA;CACjD,eAA2C,KAAA;CAC3C,cAAc,QAAQ,QAAQ;CAC9B,mBAAmB,QAAQ,QAAQ;;;;;;;;;;;;;;CAenC,YACE,SACA,eACA,YACA,aACA,gBAAc,aACd;EACA,KAAKA,WAAW;EAChB,KAAKC,iBAAiB;EACtB,KAAKC,cAAc;EACnB,KAAKC,eAAe;EACpB,KAAKC,eAAe;EACpB,KAAKD,aAAa,iBAChB,eACM;GACJ,MAAM,aAAa,IAAI,WAAW,SAAS;GAC3C,KAAKE,cAAc,OAAO,UAAU;GACpC,KAAKC,oBAAoB,OAAO,UAAU;GAC1C,KAAKD,eAAe,KAAA;GACpB,KAAKC,qBAAqB,KAAA;EAC5B,GACA,EAAC,MAAM,KAAI,CACb;CACF;;;;;;;;;;CAWA,WAA0B;EACxB,IAAI,KAAKH,aAAa,SACpB,OAAO,QAAQ,OAAO,IAAI,WAAW,SAAS,CAAC;EAEjD,IAAI,KAAKG,oBACP,OAAO,KAAKA,mBAAmB;EAEjC,KAAKA,qBAAqB,SAAS;EACnC,KAAUC,kBAAkB;EAC5B,OAAO,KAAKD,mBAAmB;CACjC;;;;;;;;;;;;;;CAeA,MAAM,MAAqB;EACzB,IAAI,KAAKH,aAAa,SACpB,OAAO,QAAQ,OAAO,IAAI,WAAW,SAAS,CAAC;EAMjD,MAAM,oBAAoB,KAAKG;EAC/B,KAAKA,qBAAqB,KAAA;EAI1B,MAAM,iBAAiB,KAAKE;EAE5B,MAAM,UAAU,YAAY;GAC1B,IAAI;IACF,MAAM;GACR,QAAQ,CAER;GAEA,IAAI,KAAKL,aAAa,SACpB,MAAM,IAAI,WAAW,SAAS;GAGhC,OAAO,KAAKH,SAAS;EACvB;EAEA,MAAM,mBAAmB,QAAQ;EACjC,KAAKQ,cAAc;EAGnB,KAAKC,mBAAmB,SAAS,KAAKP,aAAa,KAAKC,YAAY;EAEpE,IAAI;GACF,MAAM;GACN,mBAAmB,QAAQ;EAC7B,SAAS,GAAG;GACV,mBAAmB,OAAO,CAAC;GAC3B,MAAM;EACR;CACF;CAEA,MAAMI,oBAAmC;EACvC,IAAI;GACF,MAAM,KAAKC;EAIb,QAAQ,CAAC;EACT,MAAM,KAAKC;EACX,IAAI,CAAC,KAAKH,oBACR;EAEF,MAAM,KAAKF,aAAa,KAAKH,cAAc;EAC3C,IAAI,CAAC,KAAKK,oBACR;EAEF,KAAKG,mBAAmB,SAAS,KAAKP,aAAa,KAAKC,YAAY;EACpE,KAAKE,eAAe,KAAKC;EACzB,KAAKA,qBAAqB,KAAA;EAC1B,IAAI;GACF,KAAKE,cAAc,KAAKR,SAAS;GACjC,MAAM,KAAKQ;GACX,KAAKH,cAAc,QAAQ;EAC7B,SAAS,GAAG;GACV,KAAKA,cAAc,OAAO,CAAC;EAC7B;EACA,KAAKA,eAAe,KAAA;CACtB;AACF;AAEA,eAAe,SACb,QACA,aACe;CACf,IAAI;EACF,MAAM,MAAM,QAAQ,WAAW;CACjC,SAAS,GAAG;EACV,OACE,aAAa,YACb,2CACF;CACF;AACF"}
1
+ {"version":3,"file":"process-scheduler.js","names":["defaultRequestIdle","requestIdle"],"sources":["../../../../replicache/src/process-scheduler.ts"],"sourcesContent":["import {AbortError} from '../../shared/src/abort-error.ts';\nimport {assert} from '../../shared/src/asserts.ts';\nimport {type Resolver, resolver} from '../../shared/src/resolver.ts';\nimport {sleep} from '../../shared/src/sleep.ts';\nimport {requestIdle as defaultRequestIdle} from './request-idle.ts';\n\nexport class ProcessScheduler {\n readonly #process: () => Promise<void>;\n readonly #idleTimeoutMs: number;\n readonly #throttleMs: number;\n readonly #abortSignal: AbortSignal;\n readonly #requestIdle: typeof defaultRequestIdle;\n #scheduledResolver: Resolver<void> | undefined = undefined;\n #runResolver: Resolver<void> | undefined = undefined;\n #runPromise = Promise.resolve();\n #throttlePromise = Promise.resolve();\n\n /**\n * Supports scheduling a `process` to be run with certain constraints.\n * - Process runs are never concurrent.\n * - Multiple calls to schedule will be fulfilled by a single process\n * run started after the call to schedule. A call is never fulfilled by an\n * already running process run. This can be thought of as debouncing.\n * - Process runs are throttled so that the process runs at most once every\n * `throttleMs`.\n * - Process runs try to run during an idle period, but will delay at most\n * `idleTimeoutMs`.\n * - Scheduled runs which have not completed when `abortSignal` is aborted\n * will reject with an `AbortError`.\n */\n constructor(\n process: () => Promise<void>,\n idleTimeoutMs: number,\n throttleMs: number,\n abortSignal: AbortSignal,\n requestIdle = defaultRequestIdle,\n ) {\n this.#process = process;\n this.#idleTimeoutMs = idleTimeoutMs;\n this.#throttleMs = throttleMs;\n this.#abortSignal = abortSignal;\n this.#requestIdle = requestIdle;\n this.#abortSignal.addEventListener(\n 'abort',\n () => {\n const abortError = new AbortError('Aborted');\n this.#runResolver?.reject(abortError);\n this.#scheduledResolver?.reject(abortError);\n this.#runResolver = undefined;\n this.#scheduledResolver = undefined;\n },\n {once: true},\n );\n }\n\n /**\n * Schedules the process to run.\n *\n * The returned promise resolves when the process has completed running.\n * If the process throws an error, the returned promise rejects with that error.\n *\n * If `schedule()` is called multiple times while a process is running/scheduled,\n * they will be debounced into a single run.\n */\n schedule(): Promise<void> {\n if (this.#abortSignal.aborted) {\n return Promise.reject(new AbortError('Aborted'));\n }\n if (this.#scheduledResolver) {\n return this.#scheduledResolver.promise;\n }\n this.#scheduledResolver = resolver();\n void this.#scheduleInternal();\n return this.#scheduledResolver.promise;\n }\n\n /**\n * Runs the process immediately, skipping throttle and idle checks.\n *\n * The returned promise resolves when the process has completed running.\n * If the process throws an error, the returned promise rejects with that error.\n *\n * If there is a scheduled run pending (waiting for idle or throttle), this run\n * will effectively \"take over\" that scheduled run, and the promise returned\n * by `schedule()` will resolve when this run completes.\n *\n * If there is a process currently running, this run will wait for it to finish\n * before starting, satisfying the non-concurrency constraint.\n */\n async run(): Promise<void> {\n if (this.#abortSignal.aborted) {\n return Promise.reject(new AbortError('Aborted'));\n }\n\n // \"Steal\" the scheduled resolver if it exists.\n // This effectively cancels the pending scheduled run (the idle/throttle wait),\n // and fulfills that promise with this run.\n const resolverToResolve = this.#scheduledResolver;\n this.#scheduledResolver = undefined;\n\n // Wait for any currently running process to finish.\n // We create a new promise that represents \"Wait for current, then run me\"\n const prevRunPromise = this.#runPromise;\n\n const runTask = async () => {\n try {\n await prevRunPromise;\n } catch {\n // ignore errors from previous run\n }\n\n if (this.#abortSignal.aborted) {\n throw new AbortError('Aborted');\n }\n\n return this.#process();\n };\n\n const executionPromise = runTask();\n this.#runPromise = executionPromise;\n\n // Reset throttle promise so future runs respect the throttle relative to this run.\n this.#throttlePromise = throttle(this.#throttleMs, this.#abortSignal);\n\n try {\n await executionPromise;\n resolverToResolve?.resolve();\n } catch (e) {\n resolverToResolve?.reject(e);\n throw e;\n }\n }\n\n async #scheduleInternal(): Promise<void> {\n try {\n await this.#runPromise;\n // Prevent errors thrown by process from cancelling scheduled runs.\n // this._runPromise is also awaited below and errors are explicitly\n // propagated to promises returned from schedule.\n } catch {}\n await this.#throttlePromise;\n if (!this.#scheduledResolver) {\n return;\n }\n await this.#requestIdle(this.#idleTimeoutMs);\n if (!this.#scheduledResolver) {\n return;\n }\n this.#throttlePromise = throttle(this.#throttleMs, this.#abortSignal);\n this.#runResolver = this.#scheduledResolver;\n this.#scheduledResolver = undefined;\n try {\n this.#runPromise = this.#process();\n await this.#runPromise;\n this.#runResolver?.resolve();\n } catch (e) {\n this.#runResolver?.reject(e);\n }\n this.#runResolver = undefined;\n }\n}\n\nasync function throttle(\n timeMs: number,\n abortSignal: AbortSignal,\n): Promise<void> {\n try {\n await sleep(timeMs, abortSignal);\n } catch (e) {\n assert(\n e instanceof AbortError,\n 'Expected caught error to be an AbortError',\n );\n }\n}\n"],"mappings":";;;;;;AAMA,IAAa,mBAAb,MAA8B;CAC5B;CACA;CACA;CACA;CACA;CACA,qBAAiD,KAAA;CACjD,eAA2C,KAAA;CAC3C,cAAc,QAAQ,QAAQ;CAC9B,mBAAmB,QAAQ,QAAQ;;;;;;;;;;;;;;CAenC,YACE,SACA,eACA,YACA,aACA,gBAAcA,aACd;EACA,KAAK,WAAW;EAChB,KAAK,iBAAiB;EACtB,KAAK,cAAc;EACnB,KAAK,eAAe;EACpB,KAAK,eAAeC;EACpB,KAAK,aAAa,iBAChB,eACM;GACJ,MAAM,aAAa,IAAI,WAAW,SAAS;GAC3C,KAAK,cAAc,OAAO,UAAU;GACpC,KAAK,oBAAoB,OAAO,UAAU;GAC1C,KAAK,eAAe,KAAA;GACpB,KAAK,qBAAqB,KAAA;EAC5B,GACA,EAAC,MAAM,KAAI,CACb;CACF;;;;;;;;;;CAWA,WAA0B;EACxB,IAAI,KAAK,aAAa,SACpB,OAAO,QAAQ,OAAO,IAAI,WAAW,SAAS,CAAC;EAEjD,IAAI,KAAK,oBACP,OAAO,KAAK,mBAAmB;EAEjC,KAAK,qBAAqB,SAAS;EACnC,KAAU,kBAAkB;EAC5B,OAAO,KAAK,mBAAmB;CACjC;;;;;;;;;;;;;;CAeA,MAAM,MAAqB;EACzB,IAAI,KAAK,aAAa,SACpB,OAAO,QAAQ,OAAO,IAAI,WAAW,SAAS,CAAC;EAMjD,MAAM,oBAAoB,KAAK;EAC/B,KAAK,qBAAqB,KAAA;EAI1B,MAAM,iBAAiB,KAAK;EAE5B,MAAM,UAAU,YAAY;GAC1B,IAAI;IACF,MAAM;GACR,QAAQ,CAER;GAEA,IAAI,KAAK,aAAa,SACpB,MAAM,IAAI,WAAW,SAAS;GAGhC,OAAO,KAAK,SAAS;EACvB;EAEA,MAAM,mBAAmB,QAAQ;EACjC,KAAK,cAAc;EAGnB,KAAK,mBAAmB,SAAS,KAAK,aAAa,KAAK,YAAY;EAEpE,IAAI;GACF,MAAM;GACN,mBAAmB,QAAQ;EAC7B,SAAS,GAAG;GACV,mBAAmB,OAAO,CAAC;GAC3B,MAAM;EACR;CACF;CAEA,MAAM,oBAAmC;EACvC,IAAI;GACF,MAAM,KAAK;EAIb,QAAQ,CAAC;EACT,MAAM,KAAK;EACX,IAAI,CAAC,KAAK,oBACR;EAEF,MAAM,KAAK,aAAa,KAAK,cAAc;EAC3C,IAAI,CAAC,KAAK,oBACR;EAEF,KAAK,mBAAmB,SAAS,KAAK,aAAa,KAAK,YAAY;EACpE,KAAK,eAAe,KAAK;EACzB,KAAK,qBAAqB,KAAA;EAC1B,IAAI;GACF,KAAK,cAAc,KAAK,SAAS;GACjC,MAAM,KAAK;GACX,KAAK,cAAc,QAAQ;EAC7B,SAAS,GAAG;GACV,KAAK,cAAc,OAAO,CAAC;EAC7B;EACA,KAAK,eAAe,KAAA;CACtB;AACF;AAEA,eAAe,SACb,QACA,aACe;CACf,IAAI;EACF,MAAM,MAAM,QAAQ,WAAW;CACjC,SAAS,GAAG;EACV,OACE,aAAa,YACb,2CACF;CACF;AACF"}
@@ -1,4 +1,3 @@
1
- import type { LogContext } from '@rocicorp/logger';
2
1
  import type { MaybePromise } from '../../shared/src/types.ts';
3
2
  import { type Cookie } from './cookies.ts';
4
3
  import { LazyStore } from './dag/lazy-store.ts';
@@ -11,13 +10,9 @@ import type { Puller } from './puller.ts';
11
10
  import { type Pusher } from './pusher.ts';
12
11
  import type { ReplicacheOptions, ZeroOption } from './replicache-options.ts';
13
12
  import { type StorageFailureError } from './storage-failure.ts';
14
- import { type SubscribeOptions, type SubscriptionsManager, type WatchCallbackForOptions, type WatchNoIndexCallback, type WatchOptions } from './subscriptions.ts';
13
+ import { type SubscribeOptions, type WatchCallbackForOptions, type WatchNoIndexCallback, type WatchOptions } from './subscriptions.ts';
15
14
  import type { ReadTransaction } from './transactions.ts';
16
- import type { BeginPullResult, MakeMutators, MutatorDefs, PokeInternal, QueryInternal, RequestOptions, UpdateNeededReason } from './types.ts';
17
- /** @deprecated Not used any more */
18
- export interface MakeSubscriptionsManager {
19
- (queryInternal: QueryInternal, lc: LogContext): SubscriptionsManager;
20
- }
15
+ import type { BeginPullResult, MakeMutators, MutatorDefs, PokeInternal, RequestOptions, UpdateNeededReason } from './types.ts';
21
16
  export interface ReplicacheImplOptions {
22
17
  /**
23
18
  * Defaults to true.
@@ -1 +1 @@
1
- {"version":3,"file":"replicache-impl.d.ts","sourceRoot":"","sources":["../../../../replicache/src/replicache-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replicache-impl.d.ts","sourceRoot":"","sources":["../../../../replicache/src/replicache-impl.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { isClientStateNotFoundResponse, isVersionNotSupportedResponse } from "./
4
4
  import { getDefaultPuller, isDefaultPuller } from "./get-default-puller.js";
5
5
  import { getBrowserGlobal } from "../../shared/src/browser-env.js";
6
6
  import { promiseFalse, promiseVoid } from "../../shared/src/resolved-promises.js";
7
+ import { resolver } from "../../shared/src/resolver.js";
7
8
  import { deepFreeze } from "./frozen-json.js";
8
9
  import { getStorageFailure } from "./storage-failure.js";
9
10
  import { makeIDBName } from "./make-idb-name.js";
@@ -52,7 +53,6 @@ import { setIntervalWithSignal } from "./set-interval-with-signal.js";
52
53
  import { SubscriptionImpl, SubscriptionsManagerImpl, WatchSubscription } from "./subscriptions.js";
53
54
  import { newRequestID } from "./sync/request-id.js";
54
55
  import { version } from "./version.js";
55
- import { resolver } from "@rocicorp/resolver";
56
56
  import { Lock } from "@rocicorp/lock";
57
57
  import { consoleLogSink } from "@rocicorp/logger";
58
58
  //#region ../replicache/src/replicache-impl.ts
@@ -72,7 +72,7 @@ var REFRESH_THROTTLE_MS = 500;
72
72
  */
73
73
  var SLOW_DB_OPEN_THRESHOLD_MS = 50;
74
74
  var LAZY_STORE_SOURCE_CHUNK_CACHE_SIZE_LIMIT = 100 * 2 ** 20;
75
- var RECOVER_MUTATIONS_INTERVAL_MS = 300 * 1e3;
75
+ var RECOVER_MUTATIONS_INTERVAL_MS = 3e5;
76
76
  var noop = () => {};
77
77
  var updateNeededReasonNewClientGroup = { type: "NewClientGroup" };
78
78
  var ReplicacheImpl = class {
@@ -493,20 +493,23 @@ var ReplicacheImpl = class {
493
493
  this.#closed = true;
494
494
  const { promise, resolve } = resolver();
495
495
  closingInstances.set(this.name, promise);
496
- this.#closeAbortController.abort();
497
- getBrowserGlobal("document")?.removeEventListener("visibilitychange", this.#onVisibilityChange);
498
- await Promise.race([this.#ready, this.#openFailed.promise]);
499
- const closingPromises = [
500
- this.memdag.close(),
501
- this.perdag.close(),
502
- this.#idbDatabases.close()
503
- ];
504
- this.#pullConnectionLoop.close();
505
- this.#pushConnectionLoop.close();
506
- this.#subscriptions.clear();
507
- await Promise.all(closingPromises);
508
- closingInstances.delete(this.name);
509
- resolve();
496
+ try {
497
+ this.#closeAbortController.abort();
498
+ getBrowserGlobal("document")?.removeEventListener("visibilitychange", this.#onVisibilityChange);
499
+ await Promise.race([this.#ready, this.#openFailed.promise]);
500
+ const closingPromises = [
501
+ this.memdag.close(),
502
+ this.perdag.close(),
503
+ this.#idbDatabases.close()
504
+ ];
505
+ this.#pullConnectionLoop.close();
506
+ this.#pushConnectionLoop.close();
507
+ this.#subscriptions.clear();
508
+ await Promise.all(closingPromises);
509
+ } finally {
510
+ closingInstances.delete(this.name);
511
+ resolve();
512
+ }
510
513
  }
511
514
  async maybeEndPull(syncHead, requestID) {
512
515
  for (;;) {
@@ -713,7 +716,6 @@ var ReplicacheImpl = class {
713
716
  await this.maybeEndPull(result.syncHead, requestID);
714
717
  break;
715
718
  case 2: throw new Error("unexpected base cookie for poke: " + JSON.stringify(poke));
716
- case 1: break;
717
719
  }
718
720
  }
719
721
  async beginPull() {
@@ -1067,7 +1069,8 @@ var ReplicacheImpl = class {
1067
1069
  const { clientID } = this;
1068
1070
  return withRead(this.memdag, async (dagRead) => {
1069
1071
  try {
1070
- return await body(new ReadTransactionImpl(clientID, await readFromDefaultHead(dagRead, 7), this.#lc));
1072
+ const dbRead = await readFromDefaultHead(dagRead, 7);
1073
+ return await body(new ReadTransactionImpl(clientID, dbRead, this.#lc));
1071
1074
  } catch (ex) {
1072
1075
  throw await this.#convertToClientStateNotFoundError(ex);
1073
1076
  }