@rocicorp/zero 0.26.1-canary.9 → 0.26.2-canary.1

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 (1113) hide show
  1. package/out/_virtual/_@oxc-project_runtime@0.115.0/helpers/usingCtx.js +57 -0
  2. package/out/_virtual/_rolldown/runtime.js +27 -0
  3. package/out/analyze-query/src/bin-analyze.js +195 -280
  4. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  5. package/out/analyze-query/src/bin-transform.js +35 -40
  6. package/out/analyze-query/src/bin-transform.js.map +1 -1
  7. package/out/analyze-query/src/explain-queries.js +11 -13
  8. package/out/analyze-query/src/explain-queries.js.map +1 -1
  9. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  10. package/out/analyze-query/src/run-ast.js +68 -94
  11. package/out/analyze-query/src/run-ast.js.map +1 -1
  12. package/out/ast-to-zql/src/ast-to-zql.js +105 -153
  13. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  14. package/out/ast-to-zql/src/bin.js +57 -62
  15. package/out/ast-to-zql/src/bin.js.map +1 -1
  16. package/out/ast-to-zql/src/format.js +14 -13
  17. package/out/ast-to-zql/src/format.js.map +1 -1
  18. package/out/datadog/src/datadog-log-sink.js +148 -213
  19. package/out/datadog/src/datadog-log-sink.js.map +1 -1
  20. package/out/otel/src/enabled.js +9 -11
  21. package/out/otel/src/enabled.js.map +1 -1
  22. package/out/otel/src/log-options.js +25 -35
  23. package/out/otel/src/log-options.js.map +1 -1
  24. package/out/otel/src/maybe-time.js +13 -14
  25. package/out/otel/src/maybe-time.js.map +1 -1
  26. package/out/otel/src/span.js +23 -26
  27. package/out/otel/src/span.js.map +1 -1
  28. package/out/otel/src/test-log-config.js +11 -10
  29. package/out/otel/src/test-log-config.js.map +1 -1
  30. package/out/otel/src/version.js +6 -5
  31. package/out/otel/src/version.js.map +1 -1
  32. package/out/replicache/src/async-iterable-to-array.js +8 -9
  33. package/out/replicache/src/async-iterable-to-array.js.map +1 -1
  34. package/out/replicache/src/bg-interval.js +28 -35
  35. package/out/replicache/src/bg-interval.js.map +1 -1
  36. package/out/replicache/src/btree/diff.js +6 -5
  37. package/out/replicache/src/btree/diff.js.map +1 -1
  38. package/out/replicache/src/btree/node.js +281 -372
  39. package/out/replicache/src/btree/node.js.map +1 -1
  40. package/out/replicache/src/btree/read.js +155 -256
  41. package/out/replicache/src/btree/read.js.map +1 -1
  42. package/out/replicache/src/btree/splice.js +60 -80
  43. package/out/replicache/src/btree/splice.js.map +1 -1
  44. package/out/replicache/src/btree/write.js +134 -158
  45. package/out/replicache/src/btree/write.js.map +1 -1
  46. package/out/replicache/src/call-default-fetch.js +28 -32
  47. package/out/replicache/src/call-default-fetch.js.map +1 -1
  48. package/out/replicache/src/config.js +2 -0
  49. package/out/replicache/src/connection-loop-delegates.js +31 -33
  50. package/out/replicache/src/connection-loop-delegates.js.map +1 -1
  51. package/out/replicache/src/connection-loop.js +174 -240
  52. package/out/replicache/src/connection-loop.js.map +1 -1
  53. package/out/replicache/src/cookies.js +22 -32
  54. package/out/replicache/src/cookies.js.map +1 -1
  55. package/out/replicache/src/dag/chunk.js +44 -50
  56. package/out/replicache/src/dag/chunk.js.map +1 -1
  57. package/out/replicache/src/dag/gc.js +94 -114
  58. package/out/replicache/src/dag/gc.js.map +1 -1
  59. package/out/replicache/src/dag/key.js +9 -11
  60. package/out/replicache/src/dag/key.js.map +1 -1
  61. package/out/replicache/src/dag/lazy-store.js +458 -510
  62. package/out/replicache/src/dag/lazy-store.js.map +1 -1
  63. package/out/replicache/src/dag/store-impl.js +147 -178
  64. package/out/replicache/src/dag/store-impl.js.map +1 -1
  65. package/out/replicache/src/dag/store.js +19 -22
  66. package/out/replicache/src/dag/store.js.map +1 -1
  67. package/out/replicache/src/dag/visitor.js +23 -21
  68. package/out/replicache/src/dag/visitor.js.map +1 -1
  69. package/out/replicache/src/db/commit.js +209 -283
  70. package/out/replicache/src/db/commit.js.map +1 -1
  71. package/out/replicache/src/db/index.js +79 -122
  72. package/out/replicache/src/db/index.js.map +1 -1
  73. package/out/replicache/src/db/read.js +44 -60
  74. package/out/replicache/src/db/read.js.map +1 -1
  75. package/out/replicache/src/db/rebase.js +22 -77
  76. package/out/replicache/src/db/rebase.js.map +1 -1
  77. package/out/replicache/src/db/write.js +162 -296
  78. package/out/replicache/src/db/write.js.map +1 -1
  79. package/out/replicache/src/deleted-clients.js +59 -87
  80. package/out/replicache/src/deleted-clients.js.map +1 -1
  81. package/out/replicache/src/error-responses.js +18 -26
  82. package/out/replicache/src/error-responses.js.map +1 -1
  83. package/out/replicache/src/expo-sqlite.js +2 -0
  84. package/out/replicache/src/frozen-json.js +74 -108
  85. package/out/replicache/src/frozen-json.js.map +1 -1
  86. package/out/replicache/src/get-default-puller.js +34 -46
  87. package/out/replicache/src/get-default-puller.js.map +1 -1
  88. package/out/replicache/src/get-default-pusher.js +25 -33
  89. package/out/replicache/src/get-default-pusher.js.map +1 -1
  90. package/out/replicache/src/get-kv-store-provider.js +18 -20
  91. package/out/replicache/src/get-kv-store-provider.js.map +1 -1
  92. package/out/replicache/src/hash.js +29 -29
  93. package/out/replicache/src/hash.js.map +1 -1
  94. package/out/replicache/src/http-request-info.js +9 -8
  95. package/out/replicache/src/http-request-info.js.map +1 -1
  96. package/out/replicache/src/impl.js +2 -0
  97. package/out/replicache/src/index-defs.js +17 -28
  98. package/out/replicache/src/index-defs.js.map +1 -1
  99. package/out/replicache/src/kv/expo-sqlite/store.js +52 -50
  100. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  101. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +71 -68
  102. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -1
  103. package/out/replicache/src/kv/idb-store.js +144 -168
  104. package/out/replicache/src/kv/idb-store.js.map +1 -1
  105. package/out/replicache/src/kv/mem-store.js +57 -45
  106. package/out/replicache/src/kv/mem-store.js.map +1 -1
  107. package/out/replicache/src/kv/op-sqlite/store.js +56 -62
  108. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
  109. package/out/replicache/src/kv/op-sqlite/types.d.ts.map +1 -1
  110. package/out/replicache/src/kv/op-sqlite/types.js +7 -6
  111. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
  112. package/out/replicache/src/kv/read-impl.js +26 -25
  113. package/out/replicache/src/kv/read-impl.js.map +1 -1
  114. package/out/replicache/src/kv/sqlite-store.js +194 -207
  115. package/out/replicache/src/kv/sqlite-store.js.map +1 -1
  116. package/out/replicache/src/kv/throw-if-closed.js +12 -19
  117. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  118. package/out/replicache/src/kv/write-impl-base.js +44 -56
  119. package/out/replicache/src/kv/write-impl-base.js.map +1 -1
  120. package/out/replicache/src/kv/write-impl.js +22 -26
  121. package/out/replicache/src/kv/write-impl.js.map +1 -1
  122. package/out/replicache/src/lazy.js +10 -11
  123. package/out/replicache/src/lazy.js.map +1 -1
  124. package/out/replicache/src/log-options.js +14 -7
  125. package/out/replicache/src/log-options.js.map +1 -1
  126. package/out/replicache/src/make-idb-name.js +14 -9
  127. package/out/replicache/src/make-idb-name.js.map +1 -1
  128. package/out/replicache/src/mutation-recovery.js +12 -0
  129. package/out/replicache/src/mutation-recovery.js.map +1 -0
  130. package/out/replicache/src/new-client-channel.js +34 -42
  131. package/out/replicache/src/new-client-channel.js.map +1 -1
  132. package/out/replicache/src/on-persist-channel.js +26 -29
  133. package/out/replicache/src/on-persist-channel.js.map +1 -1
  134. package/out/replicache/src/op-sqlite.js +2 -0
  135. package/out/replicache/src/patch-operation.js +27 -36
  136. package/out/replicache/src/patch-operation.js.map +1 -1
  137. package/out/replicache/src/pending-mutations.js +14 -12
  138. package/out/replicache/src/pending-mutations.js.map +1 -1
  139. package/out/replicache/src/persist/client-gc.js +36 -51
  140. package/out/replicache/src/persist/client-gc.js.map +1 -1
  141. package/out/replicache/src/persist/client-group-gc.js +29 -36
  142. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  143. package/out/replicache/src/persist/client-groups.js +80 -154
  144. package/out/replicache/src/persist/client-groups.js.map +1 -1
  145. package/out/replicache/src/persist/clients.js +212 -307
  146. package/out/replicache/src/persist/clients.js.map +1 -1
  147. package/out/replicache/src/persist/collect-idb-databases.js +109 -171
  148. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
  149. package/out/replicache/src/persist/gather-mem-only-visitor.js +23 -24
  150. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
  151. package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -33
  152. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
  153. package/out/replicache/src/persist/heartbeat.js +31 -41
  154. package/out/replicache/src/persist/heartbeat.js.map +1 -1
  155. package/out/replicache/src/persist/idb-databases-store-db-name.js +9 -12
  156. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -1
  157. package/out/replicache/src/persist/idb-databases-store.js +78 -97
  158. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  159. package/out/replicache/src/persist/make-client-id.js +13 -9
  160. package/out/replicache/src/persist/make-client-id.js.map +1 -1
  161. package/out/replicache/src/persist/persist.js +113 -174
  162. package/out/replicache/src/persist/persist.js.map +1 -1
  163. package/out/replicache/src/persist/refresh.js +94 -183
  164. package/out/replicache/src/persist/refresh.js.map +1 -1
  165. package/out/replicache/src/process-scheduler.js +122 -143
  166. package/out/replicache/src/process-scheduler.js.map +1 -1
  167. package/out/replicache/src/pusher.js +21 -26
  168. package/out/replicache/src/pusher.js.map +1 -1
  169. package/out/replicache/src/replicache-impl.js +844 -1184
  170. package/out/replicache/src/replicache-impl.js.map +1 -1
  171. package/out/replicache/src/report-error.js +9 -6
  172. package/out/replicache/src/report-error.js.map +1 -1
  173. package/out/replicache/src/request-idle.js +13 -11
  174. package/out/replicache/src/request-idle.js.map +1 -1
  175. package/out/replicache/src/scan-iterator.d.ts.map +1 -1
  176. package/out/replicache/src/scan-iterator.js +108 -135
  177. package/out/replicache/src/scan-iterator.js.map +1 -1
  178. package/out/replicache/src/scan-options.js +33 -39
  179. package/out/replicache/src/scan-options.js.map +1 -1
  180. package/out/replicache/src/set-interval-with-signal.js +11 -10
  181. package/out/replicache/src/set-interval-with-signal.js.map +1 -1
  182. package/out/replicache/src/sqlite.js +2 -0
  183. package/out/replicache/src/subscriptions.js +222 -338
  184. package/out/replicache/src/subscriptions.js.map +1 -1
  185. package/out/replicache/src/sync/diff.js +52 -65
  186. package/out/replicache/src/sync/diff.js.map +1 -1
  187. package/out/replicache/src/sync/ids.js +8 -9
  188. package/out/replicache/src/sync/ids.js.map +1 -1
  189. package/out/replicache/src/sync/patch.js +34 -45
  190. package/out/replicache/src/sync/patch.js.map +1 -1
  191. package/out/replicache/src/sync/pull-error.js +15 -15
  192. package/out/replicache/src/sync/pull-error.js.map +1 -1
  193. package/out/replicache/src/sync/pull.js +145 -283
  194. package/out/replicache/src/sync/pull.js.map +1 -1
  195. package/out/replicache/src/sync/push.js +64 -79
  196. package/out/replicache/src/sync/push.js.map +1 -1
  197. package/out/replicache/src/sync/request-id.js +23 -15
  198. package/out/replicache/src/sync/request-id.js.map +1 -1
  199. package/out/replicache/src/sync/sync-head-name.js +6 -5
  200. package/out/replicache/src/sync/sync-head-name.js.map +1 -1
  201. package/out/replicache/src/to-error.js +7 -8
  202. package/out/replicache/src/to-error.js.map +1 -1
  203. package/out/replicache/src/transaction-closed-error.js +15 -15
  204. package/out/replicache/src/transaction-closed-error.js.map +1 -1
  205. package/out/replicache/src/transactions.js +120 -140
  206. package/out/replicache/src/transactions.js.map +1 -1
  207. package/out/replicache/src/version.js +9 -5
  208. package/out/replicache/src/version.js.map +1 -1
  209. package/out/replicache/src/with-transactions.js +23 -20
  210. package/out/replicache/src/with-transactions.js.map +1 -1
  211. package/out/shared/src/abort-error.js +7 -6
  212. package/out/shared/src/abort-error.js.map +1 -1
  213. package/out/shared/src/arrays.js +35 -42
  214. package/out/shared/src/arrays.js.map +1 -1
  215. package/out/shared/src/asserts.js +21 -45
  216. package/out/shared/src/asserts.js.map +1 -1
  217. package/out/shared/src/bigint-json.js +42 -38
  218. package/out/shared/src/bigint-json.js.map +1 -1
  219. package/out/shared/src/binary-search.js +27 -18
  220. package/out/shared/src/binary-search.js.map +1 -1
  221. package/out/shared/src/broadcast-channel.js +20 -23
  222. package/out/shared/src/broadcast-channel.js.map +1 -1
  223. package/out/shared/src/browser-env.js +11 -17
  224. package/out/shared/src/browser-env.js.map +1 -1
  225. package/out/shared/src/btree-set.js +419 -481
  226. package/out/shared/src/btree-set.js.map +1 -1
  227. package/out/shared/src/cache.js +43 -36
  228. package/out/shared/src/cache.js.map +1 -1
  229. package/out/shared/src/centroid.js +24 -26
  230. package/out/shared/src/centroid.js.map +1 -1
  231. package/out/shared/src/config.js +6 -6
  232. package/out/shared/src/config.js.map +1 -1
  233. package/out/shared/src/custom-key-map.js +54 -58
  234. package/out/shared/src/custom-key-map.js.map +1 -1
  235. package/out/shared/src/custom-key-set.js +53 -51
  236. package/out/shared/src/custom-key-set.js.map +1 -1
  237. package/out/shared/src/deep-clone.js +30 -41
  238. package/out/shared/src/deep-clone.js.map +1 -1
  239. package/out/shared/src/deep-merge.js +25 -24
  240. package/out/shared/src/deep-merge.js.map +1 -1
  241. package/out/shared/src/document-visible.js +63 -70
  242. package/out/shared/src/document-visible.js.map +1 -1
  243. package/out/shared/src/dotenv.js +7 -3
  244. package/out/shared/src/dotenv.js.map +1 -1
  245. package/out/shared/src/error.js +43 -64
  246. package/out/shared/src/error.js.map +1 -1
  247. package/out/shared/src/has-own.js +6 -5
  248. package/out/shared/src/has-own.js.map +1 -1
  249. package/out/shared/src/hash.js +15 -14
  250. package/out/shared/src/hash.js.map +1 -1
  251. package/out/shared/src/iterables.js +34 -47
  252. package/out/shared/src/iterables.js.map +1 -1
  253. package/out/shared/src/json-schema.js +25 -30
  254. package/out/shared/src/json-schema.js.map +1 -1
  255. package/out/shared/src/json.js +90 -129
  256. package/out/shared/src/json.js.map +1 -1
  257. package/out/shared/src/logging-test-utils.js +9 -11
  258. package/out/shared/src/logging-test-utils.js.map +1 -1
  259. package/out/shared/src/logging.js +75 -95
  260. package/out/shared/src/logging.js.map +1 -1
  261. package/out/shared/src/must.js +7 -8
  262. package/out/shared/src/must.js.map +1 -1
  263. package/out/shared/src/navigator.js +6 -5
  264. package/out/shared/src/navigator.js.map +1 -1
  265. package/out/shared/src/object-traversal.js +23 -23
  266. package/out/shared/src/object-traversal.js.map +1 -1
  267. package/out/shared/src/objects.js +15 -18
  268. package/out/shared/src/objects.js.map +1 -1
  269. package/out/shared/src/options.js +225 -302
  270. package/out/shared/src/options.js.map +1 -1
  271. package/out/shared/src/parse-big-int.js +12 -11
  272. package/out/shared/src/parse-big-int.js.map +1 -1
  273. package/out/shared/src/promise-race.js +21 -17
  274. package/out/shared/src/promise-race.js.map +1 -1
  275. package/out/shared/src/queue.js +124 -124
  276. package/out/shared/src/queue.js.map +1 -1
  277. package/out/shared/src/rand.js +13 -7
  278. package/out/shared/src/rand.js.map +1 -1
  279. package/out/shared/src/random-uint64.js +8 -7
  280. package/out/shared/src/random-uint64.js.map +1 -1
  281. package/out/shared/src/random-values.js +8 -11
  282. package/out/shared/src/random-values.js.map +1 -1
  283. package/out/shared/src/record-proxy.js +68 -57
  284. package/out/shared/src/record-proxy.js.map +1 -1
  285. package/out/shared/src/resolved-promises.js +9 -11
  286. package/out/shared/src/resolved-promises.js.map +1 -1
  287. package/out/shared/src/sentinels.js +9 -12
  288. package/out/shared/src/sentinels.js.map +1 -1
  289. package/out/shared/src/set-utils.js +41 -63
  290. package/out/shared/src/set-utils.js.map +1 -1
  291. package/out/shared/src/size-of-value.js +55 -51
  292. package/out/shared/src/size-of-value.js.map +1 -1
  293. package/out/shared/src/sleep.js +50 -45
  294. package/out/shared/src/sleep.js.map +1 -1
  295. package/out/shared/src/string-compare.js +8 -11
  296. package/out/shared/src/string-compare.js.map +1 -1
  297. package/out/shared/src/subscribable.js +34 -33
  298. package/out/shared/src/subscribable.js.map +1 -1
  299. package/out/shared/src/tdigest-schema.js +11 -7
  300. package/out/shared/src/tdigest-schema.js.map +1 -1
  301. package/out/shared/src/tdigest.js +197 -270
  302. package/out/shared/src/tdigest.js.map +1 -1
  303. package/out/shared/src/valita.js +145 -174
  304. package/out/shared/src/valita.js.map +1 -1
  305. package/out/z2s/src/compiler.d.ts.map +1 -1
  306. package/out/z2s/src/compiler.js +238 -468
  307. package/out/z2s/src/compiler.js.map +1 -1
  308. package/out/z2s/src/sql.d.ts +0 -1
  309. package/out/z2s/src/sql.d.ts.map +1 -1
  310. package/out/z2s/src/sql.js +149 -194
  311. package/out/z2s/src/sql.js.map +1 -1
  312. package/out/zero/package.js +193 -0
  313. package/out/zero/package.js.map +1 -0
  314. package/out/zero/src/adapters/drizzle.js +1 -6
  315. package/out/zero/src/adapters/pg.js +1 -6
  316. package/out/zero/src/adapters/postgresjs.js +1 -6
  317. package/out/zero/src/adapters/prisma.js +1 -5
  318. package/out/zero/src/analyze-query.js +1 -1
  319. package/out/zero/src/ast-to-zql.js +1 -1
  320. package/out/zero/src/bindings.js +6 -21
  321. package/out/zero/src/build-schema.js +5 -1
  322. package/out/zero/src/build-schema.js.map +1 -1
  323. package/out/zero/src/change-protocol/v0.js +3 -5
  324. package/out/zero/src/cli.js +2 -2
  325. package/out/zero/src/deploy-permissions.js +1 -1
  326. package/out/zero/src/expo-sqlite.js +2 -4
  327. package/out/zero/src/op-sqlite.js +2 -4
  328. package/out/zero/src/pg.js +2 -20
  329. package/out/zero/src/react-native.js +16 -12
  330. package/out/zero/src/react-native.js.map +1 -1
  331. package/out/zero/src/react.js +3 -12
  332. package/out/zero/src/server/runner/main.js +2 -0
  333. package/out/zero/src/server.js +2 -17
  334. package/out/zero/src/solid.js +3 -12
  335. package/out/zero/src/sqlite.js +2 -6
  336. package/out/zero/src/transform-query.js +1 -1
  337. package/out/zero/src/zero-cache-dev.js +124 -151
  338. package/out/zero/src/zero-cache-dev.js.map +1 -1
  339. package/out/zero/src/zero-out.js +9 -6
  340. package/out/zero/src/zero-out.js.map +1 -1
  341. package/out/zero/src/zero.js +6 -55
  342. package/out/zero/src/zqlite.js +2 -7
  343. package/out/zero-cache/src/auth/auth.js +138 -172
  344. package/out/zero-cache/src/auth/auth.js.map +1 -1
  345. package/out/zero-cache/src/auth/jwt.js +25 -33
  346. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  347. package/out/zero-cache/src/auth/load-permissions.js +54 -62
  348. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  349. package/out/zero-cache/src/auth/read-authorizer.js +70 -80
  350. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  351. package/out/zero-cache/src/auth/write-authorizer.js +284 -432
  352. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  353. package/out/zero-cache/src/config/network.js +31 -45
  354. package/out/zero-cache/src/config/network.js.map +1 -1
  355. package/out/zero-cache/src/config/normalize.js +81 -83
  356. package/out/zero-cache/src/config/normalize.js.map +1 -1
  357. package/out/zero-cache/src/config/server-context.js +32 -29
  358. package/out/zero-cache/src/config/server-context.js.map +1 -1
  359. package/out/zero-cache/src/config/zero-config.d.ts +4 -0
  360. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  361. package/out/zero-cache/src/config/zero-config.js +753 -816
  362. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  363. package/out/zero-cache/src/custom/fetch.js +183 -230
  364. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  365. package/out/zero-cache/src/custom-queries/transform-query.js +93 -99
  366. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  367. package/out/zero-cache/src/db/create.js +27 -29
  368. package/out/zero-cache/src/db/create.js.map +1 -1
  369. package/out/zero-cache/src/db/delete-lite-db.js +11 -7
  370. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  371. package/out/zero-cache/src/db/lite-tables.d.ts +2 -1
  372. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  373. package/out/zero-cache/src/db/lite-tables.js +120 -156
  374. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  375. package/out/zero-cache/src/db/migration-lite.js +110 -178
  376. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  377. package/out/zero-cache/src/db/migration.js +82 -151
  378. package/out/zero-cache/src/db/migration.js.map +1 -1
  379. package/out/zero-cache/src/db/mode-enum.js +8 -9
  380. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  381. package/out/zero-cache/src/db/pg-copy.js +56 -54
  382. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  383. package/out/zero-cache/src/db/pg-to-lite.js +74 -110
  384. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  385. package/out/zero-cache/src/db/pg-type-parser.js +19 -36
  386. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  387. package/out/zero-cache/src/db/run-transaction.js +19 -20
  388. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  389. package/out/zero-cache/src/db/specs.d.ts +8 -2
  390. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  391. package/out/zero-cache/src/db/specs.js +42 -78
  392. package/out/zero-cache/src/db/specs.js.map +1 -1
  393. package/out/zero-cache/src/db/statements.js +52 -59
  394. package/out/zero-cache/src/db/statements.js.map +1 -1
  395. package/out/zero-cache/src/db/transaction-pool.js +376 -400
  396. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  397. package/out/zero-cache/src/db/warmup.js +13 -24
  398. package/out/zero-cache/src/db/warmup.js.map +1 -1
  399. package/out/zero-cache/src/observability/events.js +89 -99
  400. package/out/zero-cache/src/observability/events.js.map +1 -1
  401. package/out/zero-cache/src/observability/metrics.js +30 -54
  402. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  403. package/out/zero-cache/src/scripts/decommission.js +42 -47
  404. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  405. package/out/zero-cache/src/scripts/deploy-permissions.js +106 -144
  406. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  407. package/out/zero-cache/src/scripts/permissions.js +86 -107
  408. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  409. package/out/zero-cache/src/server/anonymous-otel-start.js +306 -440
  410. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  411. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  412. package/out/zero-cache/src/server/change-streamer.js +57 -128
  413. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  414. package/out/zero-cache/src/server/inspector-delegate.js +89 -100
  415. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  416. package/out/zero-cache/src/server/logging.js +18 -26
  417. package/out/zero-cache/src/server/logging.js.map +1 -1
  418. package/out/zero-cache/src/server/main.js +85 -142
  419. package/out/zero-cache/src/server/main.js.map +1 -1
  420. package/out/zero-cache/src/server/mutator.js +16 -13
  421. package/out/zero-cache/src/server/mutator.js.map +1 -1
  422. package/out/zero-cache/src/server/otel-diag-logger.js +42 -49
  423. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  424. package/out/zero-cache/src/server/otel-log-sink.js +34 -44
  425. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  426. package/out/zero-cache/src/server/otel-start.js +43 -51
  427. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  428. package/out/zero-cache/src/server/priority-op.js +27 -25
  429. package/out/zero-cache/src/server/priority-op.js.map +1 -1
  430. package/out/zero-cache/src/server/reaper.js +32 -43
  431. package/out/zero-cache/src/server/reaper.js.map +1 -1
  432. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  433. package/out/zero-cache/src/server/replicator.js +41 -57
  434. package/out/zero-cache/src/server/replicator.js.map +1 -1
  435. package/out/zero-cache/src/server/runner/main.js +7 -8
  436. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  437. package/out/zero-cache/src/server/runner/run-worker.js +56 -52
  438. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  439. package/out/zero-cache/src/server/runner/runtime.js +26 -32
  440. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  441. package/out/zero-cache/src/server/runner/zero-dispatcher.js +22 -27
  442. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  443. package/out/zero-cache/src/server/syncer.js +79 -148
  444. package/out/zero-cache/src/server/syncer.js.map +1 -1
  445. package/out/zero-cache/src/server/worker-dispatcher.js +84 -113
  446. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  447. package/out/zero-cache/src/server/worker-urls.d.ts +2 -1
  448. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -1
  449. package/out/zero-cache/src/server/worker-urls.js +14 -18
  450. package/out/zero-cache/src/server/worker-urls.js.map +1 -1
  451. package/out/zero-cache/src/server/write-worker.js +2 -0
  452. package/out/zero-cache/src/services/analyze.js +61 -129
  453. package/out/zero-cache/src/services/analyze.js.map +1 -1
  454. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +420 -419
  455. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  456. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +111 -114
  457. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  458. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +2 -0
  459. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +1 -1
  460. package/out/zero-cache/src/services/change-source/common/replica-schema.js +100 -115
  461. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  462. package/out/zero-cache/src/services/change-source/custom/change-source.js +154 -216
  463. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  464. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js +11 -14
  465. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
  466. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +1 -1
  467. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +169 -209
  468. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  469. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  470. package/out/zero-cache/src/services/change-source/pg/change-source.js +676 -835
  471. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  472. package/out/zero-cache/src/services/change-source/pg/decommission.js +19 -23
  473. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  474. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +258 -411
  475. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  476. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +59 -65
  477. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  478. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +218 -247
  479. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  480. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +100 -142
  481. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  482. package/out/zero-cache/src/services/change-source/pg/lsn.js +17 -19
  483. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  484. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +88 -98
  485. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  486. package/out/zero-cache/src/services/change-source/pg/schema/init.js +96 -177
  487. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  488. package/out/zero-cache/src/services/change-source/pg/schema/published.js +69 -107
  489. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  490. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +151 -212
  491. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  492. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +22 -53
  493. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  494. package/out/zero-cache/src/services/change-source/protocol/current/control.js +24 -12
  495. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  496. package/out/zero-cache/src/services/change-source/protocol/current/data.js +180 -290
  497. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  498. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +21 -33
  499. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  500. package/out/zero-cache/src/services/change-source/protocol/current/json.js +7 -18
  501. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -1
  502. package/out/zero-cache/src/services/change-source/protocol/current/path.js +24 -5
  503. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  504. package/out/zero-cache/src/services/change-source/protocol/current/status.js +25 -19
  505. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  506. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +24 -16
  507. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  508. package/out/zero-cache/src/services/change-source/protocol/current.js +51 -46
  509. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  510. package/out/zero-cache/src/services/change-source/protocol/mod.js +2 -0
  511. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +165 -171
  512. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  513. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +100 -0
  514. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +1 -0
  515. package/out/zero-cache/src/services/change-streamer/broadcast.js +165 -0
  516. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -0
  517. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +154 -221
  518. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  519. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  520. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  521. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +341 -293
  522. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  523. package/out/zero-cache/src/services/change-streamer/change-streamer.js +17 -24
  524. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  525. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +17 -1
  526. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  527. package/out/zero-cache/src/services/change-streamer/forwarder.js +85 -56
  528. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  529. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +49 -43
  530. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  531. package/out/zero-cache/src/services/change-streamer/schema/init.js +61 -89
  532. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  533. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +20 -1
  534. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  535. package/out/zero-cache/src/services/change-streamer/schema/tables.js +131 -109
  536. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  537. package/out/zero-cache/src/services/change-streamer/snapshot.js +26 -28
  538. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  539. package/out/zero-cache/src/services/change-streamer/storer.js +434 -513
  540. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  541. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +18 -0
  542. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  543. package/out/zero-cache/src/services/change-streamer/subscriber.js +143 -100
  544. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  545. package/out/zero-cache/src/services/heapz.js +18 -20
  546. package/out/zero-cache/src/services/heapz.js.map +1 -1
  547. package/out/zero-cache/src/services/http-service.js +59 -57
  548. package/out/zero-cache/src/services/http-service.js.map +1 -1
  549. package/out/zero-cache/src/services/life-cycle.js +182 -214
  550. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  551. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +102 -81
  552. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  553. package/out/zero-cache/src/services/litestream/commands.js +144 -205
  554. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  555. package/out/zero-cache/src/services/mutagen/error.js +10 -14
  556. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  557. package/out/zero-cache/src/services/mutagen/mutagen.js +166 -264
  558. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  559. package/out/zero-cache/src/services/mutagen/pusher.js +372 -487
  560. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  561. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  562. package/out/zero-cache/src/services/replicator/change-processor.js +483 -595
  563. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  564. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +4 -2
  565. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  566. package/out/zero-cache/src/services/replicator/incremental-sync.js +118 -143
  567. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  568. package/out/zero-cache/src/services/replicator/notifier.js +52 -28
  569. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  570. package/out/zero-cache/src/services/replicator/replication-status.js +105 -128
  571. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  572. package/out/zero-cache/src/services/replicator/replicator.d.ts +2 -1
  573. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  574. package/out/zero-cache/src/services/replicator/replicator.js +32 -34
  575. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  576. package/out/zero-cache/src/services/replicator/schema/change-log.js +101 -133
  577. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  578. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +145 -174
  579. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  580. package/out/zero-cache/src/services/replicator/schema/constants.js +11 -5
  581. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  582. package/out/zero-cache/src/services/replicator/schema/replication-state.js +56 -107
  583. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  584. package/out/zero-cache/src/services/replicator/schema/table-metadata.d.ts +28 -7
  585. package/out/zero-cache/src/services/replicator/schema/table-metadata.d.ts.map +1 -1
  586. package/out/zero-cache/src/services/replicator/schema/table-metadata.js +96 -50
  587. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
  588. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +69 -0
  589. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -0
  590. package/out/zero-cache/src/services/replicator/write-worker-client.js +96 -0
  591. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
  592. package/out/zero-cache/src/services/replicator/write-worker.js +68 -0
  593. package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -0
  594. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  595. package/out/zero-cache/src/services/run-ast.js +79 -118
  596. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  597. package/out/zero-cache/src/services/runner.js +39 -41
  598. package/out/zero-cache/src/services/runner.js.map +1 -1
  599. package/out/zero-cache/src/services/running-state.js +129 -134
  600. package/out/zero-cache/src/services/running-state.js.map +1 -1
  601. package/out/zero-cache/src/services/statz.js +139 -200
  602. package/out/zero-cache/src/services/statz.js.map +1 -1
  603. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +46 -49
  604. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  605. package/out/zero-cache/src/services/view-syncer/client-handler.js +257 -299
  606. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  607. package/out/zero-cache/src/services/view-syncer/client-schema.js +52 -82
  608. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  609. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +85 -107
  610. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  611. package/out/zero-cache/src/services/view-syncer/cvr-store.js +604 -757
  612. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  613. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -739
  614. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  615. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +60 -40
  616. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  617. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +95 -178
  618. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  619. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +3 -2
  620. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  621. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +574 -709
  622. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  623. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  624. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +246 -257
  625. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  626. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +59 -45
  627. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  628. package/out/zero-cache/src/services/view-syncer/schema/init.js +121 -189
  629. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  630. package/out/zero-cache/src/services/view-syncer/schema/types.js +138 -263
  631. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  632. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  633. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  634. package/out/zero-cache/src/services/view-syncer/snapshotter.js +322 -331
  635. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  636. package/out/zero-cache/src/services/view-syncer/tracer.js +7 -6
  637. package/out/zero-cache/src/services/view-syncer/tracer.js.map +1 -1
  638. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -11
  639. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  640. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1067 -1603
  641. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  642. package/out/zero-cache/src/types/error-with-level.js +19 -25
  643. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  644. package/out/zero-cache/src/types/http.js +17 -26
  645. package/out/zero-cache/src/types/http.js.map +1 -1
  646. package/out/zero-cache/src/types/lexi-version.js +28 -42
  647. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  648. package/out/zero-cache/src/types/lite.js +101 -121
  649. package/out/zero-cache/src/types/lite.js.map +1 -1
  650. package/out/zero-cache/src/types/names.js +6 -5
  651. package/out/zero-cache/src/types/names.js.map +1 -1
  652. package/out/zero-cache/src/types/pg-data-type.d.ts +1 -0
  653. package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -1
  654. package/out/zero-cache/src/types/pg-data-type.js +58 -73
  655. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  656. package/out/zero-cache/src/types/pg-types.js +12 -19
  657. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  658. package/out/zero-cache/src/types/pg.js +144 -218
  659. package/out/zero-cache/src/types/pg.js.map +1 -1
  660. package/out/zero-cache/src/types/processes.js +95 -90
  661. package/out/zero-cache/src/types/processes.js.map +1 -1
  662. package/out/zero-cache/src/types/profiler.js +32 -27
  663. package/out/zero-cache/src/types/profiler.js.map +1 -1
  664. package/out/zero-cache/src/types/row-key.js +42 -30
  665. package/out/zero-cache/src/types/row-key.js.map +1 -1
  666. package/out/zero-cache/src/types/shards.js +36 -45
  667. package/out/zero-cache/src/types/shards.js.map +1 -1
  668. package/out/zero-cache/src/types/sql.js +20 -9
  669. package/out/zero-cache/src/types/sql.js.map +1 -1
  670. package/out/zero-cache/src/types/state-version.js +17 -23
  671. package/out/zero-cache/src/types/state-version.js.map +1 -1
  672. package/out/zero-cache/src/types/streams.js +234 -270
  673. package/out/zero-cache/src/types/streams.js.map +1 -1
  674. package/out/zero-cache/src/types/strings.js +10 -13
  675. package/out/zero-cache/src/types/strings.js.map +1 -1
  676. package/out/zero-cache/src/types/subscription.d.ts +3 -1
  677. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  678. package/out/zero-cache/src/types/subscription.js +266 -214
  679. package/out/zero-cache/src/types/subscription.js.map +1 -1
  680. package/out/zero-cache/src/types/url-params.js +30 -39
  681. package/out/zero-cache/src/types/url-params.js.map +1 -1
  682. package/out/zero-cache/src/types/websocket-handoff.js +62 -75
  683. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  684. package/out/zero-cache/src/types/ws.js +43 -53
  685. package/out/zero-cache/src/types/ws.js.map +1 -1
  686. package/out/zero-cache/src/workers/connect-params.js +42 -43
  687. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  688. package/out/zero-cache/src/workers/connection.js +213 -282
  689. package/out/zero-cache/src/workers/connection.js.map +1 -1
  690. package/out/zero-cache/src/workers/mutator.js +22 -21
  691. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  692. package/out/zero-cache/src/workers/replicator.d.ts +7 -0
  693. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  694. package/out/zero-cache/src/workers/replicator.js +92 -97
  695. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  696. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +121 -203
  697. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  698. package/out/zero-cache/src/workers/syncer.js +147 -201
  699. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  700. package/out/zero-client/src/client/active-clients-manager.js +178 -187
  701. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  702. package/out/zero-client/src/client/bindings.js +11 -0
  703. package/out/zero-client/src/client/client-error-kind-enum.js +18 -29
  704. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -1
  705. package/out/zero-client/src/client/connection-manager.js +291 -346
  706. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  707. package/out/zero-client/src/client/connection-status-enum.js +20 -15
  708. package/out/zero-client/src/client/connection-status-enum.js.map +1 -1
  709. package/out/zero-client/src/client/connection.js +92 -110
  710. package/out/zero-client/src/client/connection.js.map +1 -1
  711. package/out/zero-client/src/client/context.js +84 -100
  712. package/out/zero-client/src/client/context.js.map +1 -1
  713. package/out/zero-client/src/client/crud-impl.js +56 -88
  714. package/out/zero-client/src/client/crud-impl.js.map +1 -1
  715. package/out/zero-client/src/client/crud.js +127 -129
  716. package/out/zero-client/src/client/crud.js.map +1 -1
  717. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  718. package/out/zero-client/src/client/custom.js +50 -74
  719. package/out/zero-client/src/client/custom.js.map +1 -1
  720. package/out/zero-client/src/client/delete-clients-manager.js +72 -93
  721. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  722. package/out/zero-client/src/client/enable-analytics.js +8 -16
  723. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  724. package/out/zero-client/src/client/error.js +118 -133
  725. package/out/zero-client/src/client/error.js.map +1 -1
  726. package/out/zero-client/src/client/http-string.js +7 -7
  727. package/out/zero-client/src/client/http-string.js.map +1 -1
  728. package/out/zero-client/src/client/inspector/client-group.js +21 -26
  729. package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
  730. package/out/zero-client/src/client/inspector/client.js +23 -26
  731. package/out/zero-client/src/client/inspector/client.js.map +1 -1
  732. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +72 -73
  733. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
  734. package/out/zero-client/src/client/inspector/inspector.js +46 -51
  735. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  736. package/out/zero-client/src/client/inspector/lazy-inspector.js +132 -192
  737. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  738. package/out/zero-client/src/client/inspector/query.js +72 -77
  739. package/out/zero-client/src/client/inspector/query.js.map +1 -1
  740. package/out/zero-client/src/client/ivm-branch.js +118 -145
  741. package/out/zero-client/src/client/ivm-branch.js.map +1 -1
  742. package/out/zero-client/src/client/keys.js +15 -31
  743. package/out/zero-client/src/client/keys.js.map +1 -1
  744. package/out/zero-client/src/client/log-options.js +43 -57
  745. package/out/zero-client/src/client/log-options.js.map +1 -1
  746. package/out/zero-client/src/client/make-mutate-property.js +46 -29
  747. package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
  748. package/out/zero-client/src/client/make-replicache-mutators.js +80 -96
  749. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  750. package/out/zero-client/src/client/metric-name-enum.js +11 -15
  751. package/out/zero-client/src/client/metric-name-enum.js.map +1 -1
  752. package/out/zero-client/src/client/metrics.js +210 -237
  753. package/out/zero-client/src/client/metrics.js.map +1 -1
  754. package/out/zero-client/src/client/mutation-tracker.js +264 -354
  755. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  756. package/out/zero-client/src/client/mutator-proxy.js +122 -151
  757. package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
  758. package/out/zero-client/src/client/options.js +7 -10
  759. package/out/zero-client/src/client/options.js.map +1 -1
  760. package/out/zero-client/src/client/query-manager.js +305 -373
  761. package/out/zero-client/src/client/query-manager.js.map +1 -1
  762. package/out/zero-client/src/client/reload-error-handler.js +80 -101
  763. package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
  764. package/out/zero-client/src/client/server-option.js +30 -59
  765. package/out/zero-client/src/client/server-option.js.map +1 -1
  766. package/out/zero-client/src/client/update-needed-reason-type-enum.js +27 -9
  767. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -1
  768. package/out/zero-client/src/client/version.js +9 -5
  769. package/out/zero-client/src/client/version.js.map +1 -1
  770. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -1
  771. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  772. package/out/zero-client/src/client/zero-poke-handler.js +205 -293
  773. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  774. package/out/zero-client/src/client/zero-rep.js +61 -68
  775. package/out/zero-client/src/client/zero-rep.js.map +1 -1
  776. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  777. package/out/zero-client/src/client/zero.js +1367 -1834
  778. package/out/zero-client/src/client/zero.js.map +1 -1
  779. package/out/zero-client/src/mod.js +21 -0
  780. package/out/zero-client/src/util/nanoid.js +13 -18
  781. package/out/zero-client/src/util/nanoid.js.map +1 -1
  782. package/out/zero-client/src/util/socket.js +6 -5
  783. package/out/zero-client/src/util/socket.js.map +1 -1
  784. package/out/zero-pg/src/mod.js +10 -0
  785. package/out/zero-protocol/src/analyze-query-result.js +108 -148
  786. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  787. package/out/zero-protocol/src/application-error.js +36 -34
  788. package/out/zero-protocol/src/application-error.js.map +1 -1
  789. package/out/zero-protocol/src/ast.js +236 -309
  790. package/out/zero-protocol/src/ast.js.map +1 -1
  791. package/out/zero-protocol/src/change-desired-queries.js +8 -13
  792. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  793. package/out/zero-protocol/src/client-schema.js +21 -42
  794. package/out/zero-protocol/src/client-schema.js.map +1 -1
  795. package/out/zero-protocol/src/close-connection.js +20 -12
  796. package/out/zero-protocol/src/close-connection.js.map +1 -1
  797. package/out/zero-protocol/src/connect.js +37 -52
  798. package/out/zero-protocol/src/connect.js.map +1 -1
  799. package/out/zero-protocol/src/custom-queries.js +34 -65
  800. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  801. package/out/zero-protocol/src/data.js +6 -9
  802. package/out/zero-protocol/src/data.js.map +1 -1
  803. package/out/zero-protocol/src/delete-clients.js +11 -17
  804. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  805. package/out/zero-protocol/src/down.js +11 -23
  806. package/out/zero-protocol/src/down.js.map +1 -1
  807. package/out/zero-protocol/src/error-kind-enum.js +24 -41
  808. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  809. package/out/zero-protocol/src/error-origin-enum.js +8 -9
  810. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  811. package/out/zero-protocol/src/error-reason-enum.js +12 -17
  812. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  813. package/out/zero-protocol/src/error.js +76 -152
  814. package/out/zero-protocol/src/error.js.map +1 -1
  815. package/out/zero-protocol/src/inspect-down.js +51 -74
  816. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  817. package/out/zero-protocol/src/inspect-up.js +28 -46
  818. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  819. package/out/zero-protocol/src/mutation-id.js +9 -9
  820. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  821. package/out/zero-protocol/src/mutation-type-enum.js +7 -7
  822. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  823. package/out/zero-protocol/src/mutations-patch.js +21 -16
  824. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  825. package/out/zero-protocol/src/ping.js +8 -9
  826. package/out/zero-protocol/src/ping.js.map +1 -1
  827. package/out/zero-protocol/src/poke.js +53 -59
  828. package/out/zero-protocol/src/poke.js.map +1 -1
  829. package/out/zero-protocol/src/pong.js +8 -9
  830. package/out/zero-protocol/src/pong.js.map +1 -1
  831. package/out/zero-protocol/src/primary-key.js +9 -19
  832. package/out/zero-protocol/src/primary-key.js.map +1 -1
  833. package/out/zero-protocol/src/protocol-version.js +5 -11
  834. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  835. package/out/zero-protocol/src/pull.js +16 -28
  836. package/out/zero-protocol/src/pull.js.map +1 -1
  837. package/out/zero-protocol/src/push.js +162 -209
  838. package/out/zero-protocol/src/push.js.map +1 -1
  839. package/out/zero-protocol/src/queries-patch.js +22 -30
  840. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  841. package/out/zero-protocol/src/query-hash.js +14 -17
  842. package/out/zero-protocol/src/query-hash.js.map +1 -1
  843. package/out/zero-protocol/src/row-patch.js +23 -30
  844. package/out/zero-protocol/src/row-patch.js.map +1 -1
  845. package/out/zero-protocol/src/up.js +11 -22
  846. package/out/zero-protocol/src/up.js.map +1 -1
  847. package/out/zero-protocol/src/update-auth.js +8 -13
  848. package/out/zero-protocol/src/update-auth.js.map +1 -1
  849. package/out/zero-protocol/src/version.js +8 -9
  850. package/out/zero-protocol/src/version.js.map +1 -1
  851. package/out/zero-react/src/bindings.js +12 -0
  852. package/out/zero-react/src/mod.js +5 -0
  853. package/out/zero-react/src/use-connection-state.js +14 -11
  854. package/out/zero-react/src/use-connection-state.js.map +1 -1
  855. package/out/zero-react/src/use-query.js +283 -281
  856. package/out/zero-react/src/use-query.js.map +1 -1
  857. package/out/zero-react/src/use-zero-online.js +17 -11
  858. package/out/zero-react/src/use-zero-online.js.map +1 -1
  859. package/out/zero-react/src/zero-provider.js +53 -69
  860. package/out/zero-react/src/zero-provider.js.map +1 -1
  861. package/out/zero-react/src/zero.js +22 -0
  862. package/out/zero-schema/src/builder/relationship-builder.js +25 -21
  863. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  864. package/out/zero-schema/src/builder/schema-builder.js +51 -79
  865. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  866. package/out/zero-schema/src/builder/table-builder.js +99 -116
  867. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  868. package/out/zero-schema/src/compiled-permissions.js +21 -25
  869. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  870. package/out/zero-schema/src/name-mapper.js +31 -47
  871. package/out/zero-schema/src/name-mapper.js.map +1 -1
  872. package/out/zero-schema/src/permissions.js +94 -181
  873. package/out/zero-schema/src/permissions.js.map +1 -1
  874. package/out/zero-schema/src/schema-config.js +26 -32
  875. package/out/zero-schema/src/schema-config.js.map +1 -1
  876. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  877. package/out/zero-server/src/adapters/drizzle.js +79 -76
  878. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  879. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  880. package/out/zero-server/src/adapters/pg.js +79 -55
  881. package/out/zero-server/src/adapters/pg.js.map +1 -1
  882. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  883. package/out/zero-server/src/adapters/postgresjs.js +66 -40
  884. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  885. package/out/zero-server/src/adapters/prisma.d.ts.map +1 -1
  886. package/out/zero-server/src/adapters/prisma.js +75 -55
  887. package/out/zero-server/src/adapters/prisma.js.map +1 -1
  888. package/out/zero-server/src/custom.d.ts.map +1 -1
  889. package/out/zero-server/src/custom.js +188 -265
  890. package/out/zero-server/src/custom.js.map +1 -1
  891. package/out/zero-server/src/logging.js +6 -5
  892. package/out/zero-server/src/logging.js.map +1 -1
  893. package/out/zero-server/src/mod.js +8 -0
  894. package/out/zero-server/src/pg-query-executor.js +14 -17
  895. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  896. package/out/zero-server/src/process-mutations.js +293 -365
  897. package/out/zero-server/src/process-mutations.js.map +1 -1
  898. package/out/zero-server/src/push-processor.js +33 -49
  899. package/out/zero-server/src/push-processor.js.map +1 -1
  900. package/out/zero-server/src/queries/process-queries.js +106 -96
  901. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  902. package/out/zero-server/src/schema.js +98 -144
  903. package/out/zero-server/src/schema.js.map +1 -1
  904. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  905. package/out/zero-server/src/zql-database.js +54 -69
  906. package/out/zero-server/src/zql-database.js.map +1 -1
  907. package/out/zero-solid/src/bindings.js +12 -0
  908. package/out/zero-solid/src/mod.js +5 -0
  909. package/out/zero-solid/src/solid-view.js +135 -227
  910. package/out/zero-solid/src/solid-view.js.map +1 -1
  911. package/out/zero-solid/src/use-connection-state.js +18 -14
  912. package/out/zero-solid/src/use-connection-state.js.map +1 -1
  913. package/out/zero-solid/src/use-query.js +55 -100
  914. package/out/zero-solid/src/use-query.js.map +1 -1
  915. package/out/zero-solid/src/use-zero-online.js +18 -12
  916. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  917. package/out/zero-solid/src/use-zero.js +65 -77
  918. package/out/zero-solid/src/use-zero.js.map +1 -1
  919. package/out/zero-solid/src/zero.js +22 -0
  920. package/out/zero-types/src/format.js +8 -7
  921. package/out/zero-types/src/format.js.map +1 -1
  922. package/out/zero-types/src/name-mapper.js +34 -47
  923. package/out/zero-types/src/name-mapper.js.map +1 -1
  924. package/out/zql/src/builder/builder.d.ts.map +1 -1
  925. package/out/zql/src/builder/builder.js +315 -476
  926. package/out/zql/src/builder/builder.js.map +1 -1
  927. package/out/zql/src/builder/debug-delegate.js +69 -74
  928. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  929. package/out/zql/src/builder/filter.js +116 -140
  930. package/out/zql/src/builder/filter.js.map +1 -1
  931. package/out/zql/src/builder/like.js +41 -46
  932. package/out/zql/src/builder/like.js.map +1 -1
  933. package/out/zql/src/error.js +10 -9
  934. package/out/zql/src/error.js.map +1 -1
  935. package/out/zql/src/ivm/array-view.js +89 -91
  936. package/out/zql/src/ivm/array-view.js.map +1 -1
  937. package/out/zql/src/ivm/constraint.js +65 -74
  938. package/out/zql/src/ivm/constraint.js.map +1 -1
  939. package/out/zql/src/ivm/data.js +61 -48
  940. package/out/zql/src/ivm/data.js.map +1 -1
  941. package/out/zql/src/ivm/exists.js +164 -213
  942. package/out/zql/src/ivm/exists.js.map +1 -1
  943. package/out/zql/src/ivm/fan-in.js +62 -59
  944. package/out/zql/src/ivm/fan-in.js.map +1 -1
  945. package/out/zql/src/ivm/fan-out.js +52 -61
  946. package/out/zql/src/ivm/fan-out.js.map +1 -1
  947. package/out/zql/src/ivm/filter-operators.js +91 -96
  948. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  949. package/out/zql/src/ivm/filter-push.js +22 -26
  950. package/out/zql/src/ivm/filter-push.js.map +1 -1
  951. package/out/zql/src/ivm/filter.js +41 -35
  952. package/out/zql/src/ivm/filter.js.map +1 -1
  953. package/out/zql/src/ivm/flipped-join.js +282 -391
  954. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  955. package/out/zql/src/ivm/join-utils.js +85 -115
  956. package/out/zql/src/ivm/join-utils.js.map +1 -1
  957. package/out/zql/src/ivm/join.js +162 -231
  958. package/out/zql/src/ivm/join.js.map +1 -1
  959. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +21 -25
  960. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  961. package/out/zql/src/ivm/memory-source.js +364 -503
  962. package/out/zql/src/ivm/memory-source.js.map +1 -1
  963. package/out/zql/src/ivm/memory-storage.js +33 -34
  964. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  965. package/out/zql/src/ivm/operator.js +13 -15
  966. package/out/zql/src/ivm/operator.js.map +1 -1
  967. package/out/zql/src/ivm/push-accumulated.js +267 -270
  968. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  969. package/out/zql/src/ivm/skip.js +91 -104
  970. package/out/zql/src/ivm/skip.js.map +1 -1
  971. package/out/zql/src/ivm/stream.js +10 -10
  972. package/out/zql/src/ivm/stream.js.map +1 -1
  973. package/out/zql/src/ivm/take.js +422 -569
  974. package/out/zql/src/ivm/take.js.map +1 -1
  975. package/out/zql/src/ivm/union-fan-in.js +157 -231
  976. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  977. package/out/zql/src/ivm/union-fan-out.js +38 -43
  978. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  979. package/out/zql/src/ivm/view-apply-change.js +166 -255
  980. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  981. package/out/zql/src/mutate/crud.js +35 -34
  982. package/out/zql/src/mutate/crud.js.map +1 -1
  983. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  984. package/out/zql/src/mutate/custom.js +7 -11
  985. package/out/zql/src/mutate/custom.js.map +1 -1
  986. package/out/zql/src/mutate/mutator-registry.js +67 -71
  987. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  988. package/out/zql/src/mutate/mutator.js +26 -25
  989. package/out/zql/src/mutate/mutator.js.map +1 -1
  990. package/out/zql/src/planner/planner-builder.js +134 -239
  991. package/out/zql/src/planner/planner-builder.js.map +1 -1
  992. package/out/zql/src/planner/planner-connection.js +222 -212
  993. package/out/zql/src/planner/planner-connection.js.map +1 -1
  994. package/out/zql/src/planner/planner-constraint.js +15 -7
  995. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  996. package/out/zql/src/planner/planner-debug.js +199 -224
  997. package/out/zql/src/planner/planner-debug.js.map +1 -1
  998. package/out/zql/src/planner/planner-fan-in.js +146 -162
  999. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1000. package/out/zql/src/planner/planner-fan-out.js +62 -74
  1001. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1002. package/out/zql/src/planner/planner-graph.js +302 -334
  1003. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1004. package/out/zql/src/planner/planner-join.js +255 -240
  1005. package/out/zql/src/planner/planner-join.js.map +1 -1
  1006. package/out/zql/src/planner/planner-node.js +10 -6
  1007. package/out/zql/src/planner/planner-node.js.map +1 -1
  1008. package/out/zql/src/planner/planner-source.js +15 -22
  1009. package/out/zql/src/planner/planner-source.js.map +1 -1
  1010. package/out/zql/src/planner/planner-terminus.js +28 -28
  1011. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1012. package/out/zql/src/query/complete-ordering.js +37 -61
  1013. package/out/zql/src/query/complete-ordering.js.map +1 -1
  1014. package/out/zql/src/query/create-builder.js +14 -22
  1015. package/out/zql/src/query/create-builder.js.map +1 -1
  1016. package/out/zql/src/query/error.js +10 -12
  1017. package/out/zql/src/query/error.js.map +1 -1
  1018. package/out/zql/src/query/escape-like.js +6 -5
  1019. package/out/zql/src/query/escape-like.js.map +1 -1
  1020. package/out/zql/src/query/expression.js +138 -157
  1021. package/out/zql/src/query/expression.js.map +1 -1
  1022. package/out/zql/src/query/measure-push-operator.js +35 -38
  1023. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1024. package/out/zql/src/query/metrics-delegate.js +7 -7
  1025. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1026. package/out/zql/src/query/named.js +52 -51
  1027. package/out/zql/src/query/named.js.map +1 -1
  1028. package/out/zql/src/query/query-delegate-base.js +190 -238
  1029. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1030. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1031. package/out/zql/src/query/query-impl.js +271 -405
  1032. package/out/zql/src/query/query-impl.js.map +1 -1
  1033. package/out/zql/src/query/query-internals.js +16 -8
  1034. package/out/zql/src/query/query-internals.js.map +1 -1
  1035. package/out/zql/src/query/query-registry.js +83 -98
  1036. package/out/zql/src/query/query-registry.js.map +1 -1
  1037. package/out/zql/src/query/query.d.ts.map +1 -1
  1038. package/out/zql/src/query/query.js +2 -0
  1039. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  1040. package/out/zql/src/query/runnable-query-impl.js +30 -55
  1041. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  1042. package/out/zql/src/query/static-query.js +7 -14
  1043. package/out/zql/src/query/static-query.js.map +1 -1
  1044. package/out/zql/src/query/ttl.js +45 -67
  1045. package/out/zql/src/query/ttl.js.map +1 -1
  1046. package/out/zql/src/query/validate-input.js +23 -20
  1047. package/out/zql/src/query/validate-input.js.map +1 -1
  1048. package/out/zqlite/src/database-storage.js +99 -103
  1049. package/out/zqlite/src/database-storage.js.map +1 -1
  1050. package/out/zqlite/src/db.js +206 -249
  1051. package/out/zqlite/src/db.js.map +1 -1
  1052. package/out/zqlite/src/explain-queries.js +11 -13
  1053. package/out/zqlite/src/explain-queries.js.map +1 -1
  1054. package/out/zqlite/src/internal/sql-inline.js +54 -37
  1055. package/out/zqlite/src/internal/sql-inline.js.map +1 -1
  1056. package/out/zqlite/src/internal/sql.js +17 -15
  1057. package/out/zqlite/src/internal/sql.js.map +1 -1
  1058. package/out/zqlite/src/internal/statement-cache.js +117 -92
  1059. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1060. package/out/zqlite/src/mod.js +5 -0
  1061. package/out/zqlite/src/query-builder.js +81 -172
  1062. package/out/zqlite/src/query-builder.js.map +1 -1
  1063. package/out/zqlite/src/query-delegate.js +45 -55
  1064. package/out/zqlite/src/query-delegate.js.map +1 -1
  1065. package/out/zqlite/src/resolve-scalar-subqueries.js +134 -124
  1066. package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
  1067. package/out/zqlite/src/sqlite-cost-model.js +92 -97
  1068. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1069. package/out/zqlite/src/sqlite-stat-fanout.js +304 -286
  1070. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1071. package/out/zqlite/src/table-source.js +281 -455
  1072. package/out/zqlite/src/table-source.js.map +1 -1
  1073. package/package.json +8 -7
  1074. package/out/replicache/src/db/index-operation-enum.js +0 -7
  1075. package/out/replicache/src/db/index-operation-enum.js.map +0 -1
  1076. package/out/replicache/src/db/meta-type-enum.js +0 -7
  1077. package/out/replicache/src/db/meta-type-enum.js.map +0 -1
  1078. package/out/replicache/src/format-version-enum.js +0 -11
  1079. package/out/replicache/src/format-version-enum.js.map +0 -1
  1080. package/out/replicache/src/http-status-unauthorized.js +0 -5
  1081. package/out/replicache/src/http-status-unauthorized.js.map +0 -1
  1082. package/out/replicache/src/invoke-kind-enum.js +0 -7
  1083. package/out/replicache/src/invoke-kind-enum.js.map +0 -1
  1084. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +0 -9
  1085. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +0 -1
  1086. package/out/zero/package.json.js +0 -9
  1087. package/out/zero/package.json.js.map +0 -1
  1088. package/out/zero/src/adapters/drizzle.js.map +0 -1
  1089. package/out/zero/src/adapters/pg.js.map +0 -1
  1090. package/out/zero/src/adapters/postgresjs.js.map +0 -1
  1091. package/out/zero/src/adapters/prisma.js.map +0 -1
  1092. package/out/zero/src/analyze-query.js.map +0 -1
  1093. package/out/zero/src/ast-to-zql.js.map +0 -1
  1094. package/out/zero/src/bindings.js.map +0 -1
  1095. package/out/zero/src/change-protocol/v0.js.map +0 -1
  1096. package/out/zero/src/cli.js.map +0 -1
  1097. package/out/zero/src/deploy-permissions.js.map +0 -1
  1098. package/out/zero/src/expo-sqlite.js.map +0 -1
  1099. package/out/zero/src/op-sqlite.js.map +0 -1
  1100. package/out/zero/src/pg.js.map +0 -1
  1101. package/out/zero/src/react.js.map +0 -1
  1102. package/out/zero/src/server.js.map +0 -1
  1103. package/out/zero/src/solid.js.map +0 -1
  1104. package/out/zero/src/sqlite.js.map +0 -1
  1105. package/out/zero/src/transform-query.js.map +0 -1
  1106. package/out/zero/src/zero.js.map +0 -1
  1107. package/out/zero/src/zqlite.js.map +0 -1
  1108. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +0 -11
  1109. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +0 -1
  1110. package/out/zero-cache/src/db/postgres-type-class-enum.js +0 -17
  1111. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +0 -1
  1112. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +0 -9
  1113. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"write-impl-base.js","sources":["../../../../../replicache/src/kv/write-impl-base.ts"],"sourcesContent":["import type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {\n promiseFalse,\n promiseTrue,\n promiseVoid,\n} from '../../../shared/src/resolved-promises.ts';\nimport {\n type FrozenJSONValue,\n deepFreeze,\n deepFreezeAllowUndefined,\n} from '../frozen-json.ts';\nimport type {Read} from './store.ts';\nimport {\n maybeTransactionIsClosedRejection,\n transactionIsClosedRejection,\n} from './throw-if-closed.ts';\n\nexport const deleteSentinel = Symbol();\ntype DeleteSentinel = typeof deleteSentinel;\n\nexport class WriteImplBase {\n protected readonly _pending: Map<string, FrozenJSONValue | DeleteSentinel> =\n new Map();\n readonly #read: Read;\n\n constructor(read: Read) {\n this.#read = read;\n }\n\n has(key: string): Promise<boolean> {\n if (this.#read.closed) {\n return transactionIsClosedRejection();\n }\n switch (this._pending.get(key)) {\n case undefined:\n return this.#read.has(key);\n case deleteSentinel:\n return promiseFalse;\n default:\n return promiseTrue;\n }\n }\n\n async get(key: string): Promise<FrozenJSONValue | undefined> {\n if (this.#read.closed) {\n return transactionIsClosedRejection();\n }\n const v = this._pending.get(key);\n switch (v) {\n case deleteSentinel:\n return undefined;\n case undefined: {\n const v = await this.#read.get(key);\n return deepFreezeAllowUndefined(v);\n }\n default:\n return v;\n }\n }\n\n put(key: string, value: ReadonlyJSONValue) {\n return (\n maybeTransactionIsClosedRejection(this.#read) ??\n (this._pending.set(key, deepFreeze(value)), promiseVoid)\n );\n }\n\n del(key: string): Promise<void> {\n return (\n maybeTransactionIsClosedRejection(this.#read) ??\n (this._pending.set(key, deleteSentinel), promiseVoid)\n );\n }\n\n release(): void {\n this.#read.release();\n }\n\n get closed(): boolean {\n return this.#read.closed;\n }\n}\n"],"names":["v"],"mappings":";;;AAiBO,MAAM,iBAAiB,OAAA;AAGvB,MAAM,cAAc;AAAA,EACN,+BACb,IAAA;AAAA,EACG;AAAA,EAET,YAAY,MAAY;AACtB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,IAAI,KAA+B;AACjC,QAAI,KAAK,MAAM,QAAQ;AACrB,aAAO,6BAAA;AAAA,IACT;AACA,YAAQ,KAAK,SAAS,IAAI,GAAG,GAAA;AAAA,MAC3B,KAAK;AACH,eAAO,KAAK,MAAM,IAAI,GAAG;AAAA,MAC3B,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAAA,EAEA,MAAM,IAAI,KAAmD;AAC3D,QAAI,KAAK,MAAM,QAAQ;AACrB,aAAO,6BAAA;AAAA,IACT;AACA,UAAM,IAAI,KAAK,SAAS,IAAI,GAAG;AAC/B,YAAQ,GAAA;AAAA,MACN,KAAK;AACH,eAAO;AAAA,MACT,KAAK,QAAW;AACd,cAAMA,KAAI,MAAM,KAAK,MAAM,IAAI,GAAG;AAClC,eAAO,yBAAyBA,EAAC;AAAA,MACnC;AAAA,MACA;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAAA,EAEA,IAAI,KAAa,OAA0B;AACzC,WACE,kCAAkC,KAAK,KAAK,MAC3C,KAAK,SAAS,IAAI,KAAK,WAAW,KAAK,CAAC,GAAG;AAAA,EAEhD;AAAA,EAEA,IAAI,KAA4B;AAC9B,WACE,kCAAkC,KAAK,KAAK,MAC3C,KAAK,SAAS,IAAI,KAAK,cAAc,GAAG;AAAA,EAE7C;AAAA,EAEA,UAAgB;AACd,SAAK,MAAM,QAAA;AAAA,EACb;AAAA,EAEA,IAAI,SAAkB;AACpB,WAAO,KAAK,MAAM;AAAA,EACpB;AACF;"}
1
+ {"version":3,"file":"write-impl-base.js","names":["#read"],"sources":["../../../../../replicache/src/kv/write-impl-base.ts"],"sourcesContent":["import type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {\n promiseFalse,\n promiseTrue,\n promiseVoid,\n} from '../../../shared/src/resolved-promises.ts';\nimport {\n type FrozenJSONValue,\n deepFreeze,\n deepFreezeAllowUndefined,\n} from '../frozen-json.ts';\nimport type {Read} from './store.ts';\nimport {\n maybeTransactionIsClosedRejection,\n transactionIsClosedRejection,\n} from './throw-if-closed.ts';\n\nexport const deleteSentinel = Symbol();\ntype DeleteSentinel = typeof deleteSentinel;\n\nexport class WriteImplBase {\n protected readonly _pending: Map<string, FrozenJSONValue | DeleteSentinel> =\n new Map();\n readonly #read: Read;\n\n constructor(read: Read) {\n this.#read = read;\n }\n\n has(key: string): Promise<boolean> {\n if (this.#read.closed) {\n return transactionIsClosedRejection();\n }\n switch (this._pending.get(key)) {\n case undefined:\n return this.#read.has(key);\n case deleteSentinel:\n return promiseFalse;\n default:\n return promiseTrue;\n }\n }\n\n async get(key: string): Promise<FrozenJSONValue | undefined> {\n if (this.#read.closed) {\n return transactionIsClosedRejection();\n }\n const v = this._pending.get(key);\n switch (v) {\n case deleteSentinel:\n return undefined;\n case undefined: {\n const v = await this.#read.get(key);\n return deepFreezeAllowUndefined(v);\n }\n default:\n return v;\n }\n }\n\n put(key: string, value: ReadonlyJSONValue) {\n return (\n maybeTransactionIsClosedRejection(this.#read) ??\n (this._pending.set(key, deepFreeze(value)), promiseVoid)\n );\n }\n\n del(key: string): Promise<void> {\n return (\n maybeTransactionIsClosedRejection(this.#read) ??\n (this._pending.set(key, deleteSentinel), promiseVoid)\n );\n }\n\n release(): void {\n this.#read.release();\n }\n\n get closed(): boolean {\n return this.#read.closed;\n }\n}\n"],"mappings":";;;;AAiBA,IAAa,iBAAiB,QAAQ;AAGtC,IAAa,gBAAb,MAA2B;CACzB,2BACE,IAAI,KAAK;CACX;CAEA,YAAY,MAAY;AACtB,QAAA,OAAa;;CAGf,IAAI,KAA+B;AACjC,MAAI,MAAA,KAAW,OACb,QAAO,8BAA8B;AAEvC,UAAQ,KAAK,SAAS,IAAI,IAAI,EAA9B;GACE,KAAK,KAAA,EACH,QAAO,MAAA,KAAW,IAAI,IAAI;GAC5B,KAAK,eACH,QAAO;GACT,QACE,QAAO;;;CAIb,MAAM,IAAI,KAAmD;AAC3D,MAAI,MAAA,KAAW,OACb,QAAO,8BAA8B;EAEvC,MAAM,IAAI,KAAK,SAAS,IAAI,IAAI;AAChC,UAAQ,GAAR;GACE,KAAK,eACH;GACF,KAAK,KAAA,EAEH,QAAO,yBADG,MAAM,MAAA,KAAW,IAAI,IAAI,CACD;GAEpC,QACE,QAAO;;;CAIb,IAAI,KAAa,OAA0B;AACzC,SACE,kCAAkC,MAAA,KAAW,KAC5C,KAAK,SAAS,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE;;CAIhD,IAAI,KAA4B;AAC9B,SACE,kCAAkC,MAAA,KAAW,KAC5C,KAAK,SAAS,IAAI,KAAK,eAAe,EAAE;;CAI7C,UAAgB;AACd,QAAA,KAAW,SAAS;;CAGtB,IAAI,SAAkB;AACpB,SAAO,MAAA,KAAW"}
@@ -1,30 +1,26 @@
1
1
  import { promiseVoid } from "../../../shared/src/resolved-promises.js";
2
- import { ReadImpl } from "./read-impl.js";
3
2
  import { transactionIsClosedRejection } from "./throw-if-closed.js";
4
3
  import { WriteImplBase, deleteSentinel } from "./write-impl-base.js";
5
- class WriteImpl extends WriteImplBase {
6
- #map;
7
- constructor(map, release) {
8
- super(new ReadImpl(map, release));
9
- this.#map = map;
10
- }
11
- commit() {
12
- if (this.closed) {
13
- return transactionIsClosedRejection();
14
- }
15
- this._pending.forEach((value, key) => {
16
- if (value === deleteSentinel) {
17
- this.#map.delete(key);
18
- } else {
19
- this.#map.set(key, value);
20
- }
21
- });
22
- this._pending.clear();
23
- this.release();
24
- return promiseVoid;
25
- }
26
- }
27
- export {
28
- WriteImpl
4
+ import { ReadImpl } from "./read-impl.js";
5
+ //#region ../replicache/src/kv/write-impl.ts
6
+ var WriteImpl = class extends WriteImplBase {
7
+ #map;
8
+ constructor(map, release) {
9
+ super(new ReadImpl(map, release));
10
+ this.#map = map;
11
+ }
12
+ commit() {
13
+ if (this.closed) return transactionIsClosedRejection();
14
+ this._pending.forEach((value, key) => {
15
+ if (value === deleteSentinel) this.#map.delete(key);
16
+ else this.#map.set(key, value);
17
+ });
18
+ this._pending.clear();
19
+ this.release();
20
+ return promiseVoid;
21
+ }
29
22
  };
30
- //# sourceMappingURL=write-impl.js.map
23
+ //#endregion
24
+ export { WriteImpl };
25
+
26
+ //# sourceMappingURL=write-impl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-impl.js","sources":["../../../../../replicache/src/kv/write-impl.ts"],"sourcesContent":["import {promiseVoid} from '../../../shared/src/resolved-promises.ts';\nimport type {FrozenJSONValue} from '../frozen-json.ts';\nimport {ReadImpl} from './read-impl.ts';\nimport type {Write} from './store.ts';\nimport {transactionIsClosedRejection} from './throw-if-closed.ts';\nimport {deleteSentinel, WriteImplBase} from './write-impl-base.ts';\n\nexport class WriteImpl extends WriteImplBase implements Write {\n readonly #map: Map<string, FrozenJSONValue>;\n\n constructor(map: Map<string, FrozenJSONValue>, release: () => void) {\n super(new ReadImpl(map, release));\n this.#map = map;\n }\n\n commit(): Promise<void> {\n if (this.closed) {\n return transactionIsClosedRejection();\n }\n\n // HOT. Do not allocate entry tuple and destructure.\n this._pending.forEach((value, key) => {\n if (value === deleteSentinel) {\n this.#map.delete(key);\n } else {\n this.#map.set(key, value);\n }\n });\n this._pending.clear();\n this.release();\n return promiseVoid;\n }\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,kBAAkB,cAA+B;AAAA,EACnD;AAAA,EAET,YAAY,KAAmC,SAAqB;AAClE,UAAM,IAAI,SAAS,KAAK,OAAO,CAAC;AAChC,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,SAAwB;AACtB,QAAI,KAAK,QAAQ;AACf,aAAO,6BAAA;AAAA,IACT;AAGA,SAAK,SAAS,QAAQ,CAAC,OAAO,QAAQ;AACpC,UAAI,UAAU,gBAAgB;AAC5B,aAAK,KAAK,OAAO,GAAG;AAAA,MACtB,OAAO;AACL,aAAK,KAAK,IAAI,KAAK,KAAK;AAAA,MAC1B;AAAA,IACF,CAAC;AACD,SAAK,SAAS,MAAA;AACd,SAAK,QAAA;AACL,WAAO;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"write-impl.js","names":["#map"],"sources":["../../../../../replicache/src/kv/write-impl.ts"],"sourcesContent":["import {promiseVoid} from '../../../shared/src/resolved-promises.ts';\nimport type {FrozenJSONValue} from '../frozen-json.ts';\nimport {ReadImpl} from './read-impl.ts';\nimport type {Write} from './store.ts';\nimport {transactionIsClosedRejection} from './throw-if-closed.ts';\nimport {deleteSentinel, WriteImplBase} from './write-impl-base.ts';\n\nexport class WriteImpl extends WriteImplBase implements Write {\n readonly #map: Map<string, FrozenJSONValue>;\n\n constructor(map: Map<string, FrozenJSONValue>, release: () => void) {\n super(new ReadImpl(map, release));\n this.#map = map;\n }\n\n commit(): Promise<void> {\n if (this.closed) {\n return transactionIsClosedRejection();\n }\n\n // HOT. Do not allocate entry tuple and destructure.\n this._pending.forEach((value, key) => {\n if (value === deleteSentinel) {\n this.#map.delete(key);\n } else {\n this.#map.set(key, value);\n }\n });\n this._pending.clear();\n this.release();\n return promiseVoid;\n }\n}\n"],"mappings":";;;;;AAOA,IAAa,YAAb,cAA+B,cAA+B;CAC5D;CAEA,YAAY,KAAmC,SAAqB;AAClE,QAAM,IAAI,SAAS,KAAK,QAAQ,CAAC;AACjC,QAAA,MAAY;;CAGd,SAAwB;AACtB,MAAI,KAAK,OACP,QAAO,8BAA8B;AAIvC,OAAK,SAAS,SAAS,OAAO,QAAQ;AACpC,OAAI,UAAU,eACZ,OAAA,IAAU,OAAO,IAAI;OAErB,OAAA,IAAU,IAAI,KAAK,MAAM;IAE3B;AACF,OAAK,SAAS,OAAO;AACrB,OAAK,SAAS;AACd,SAAO"}
@@ -1,13 +1,12 @@
1
+ //#region ../replicache/src/lazy.ts
1
2
  function lazy(factory) {
2
- let value;
3
- return () => {
4
- if (value === void 0) {
5
- value = factory();
6
- }
7
- return value;
8
- };
3
+ let value;
4
+ return () => {
5
+ if (value === void 0) value = factory();
6
+ return value;
7
+ };
9
8
  }
10
- export {
11
- lazy
12
- };
13
- //# sourceMappingURL=lazy.js.map
9
+ //#endregion
10
+ export { lazy };
11
+
12
+ //# sourceMappingURL=lazy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","sources":["../../../../replicache/src/lazy.ts"],"sourcesContent":["export function lazy<T>(factory: () => T): () => T {\n let value: T | undefined;\n return () => {\n if (value === undefined) {\n value = factory();\n }\n return value;\n };\n}\n"],"names":[],"mappings":"AAAO,SAAS,KAAQ,SAA2B;AACjD,MAAI;AACJ,SAAO,MAAM;AACX,QAAI,UAAU,QAAW;AACvB,cAAQ,QAAA;AAAA,IACV;AACA,WAAO;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"lazy.js","names":[],"sources":["../../../../replicache/src/lazy.ts"],"sourcesContent":["export function lazy<T>(factory: () => T): () => T {\n let value: T | undefined;\n return () => {\n if (value === undefined) {\n value = factory();\n }\n return value;\n };\n}\n"],"mappings":";AAAA,SAAgB,KAAQ,SAA2B;CACjD,IAAI;AACJ,cAAa;AACX,MAAI,UAAU,KAAA,EACZ,SAAQ,SAAS;AAEnB,SAAO"}
@@ -1,9 +1,16 @@
1
- import { consoleLogSink, TeeLogSink, LogContext } from "@rocicorp/logger";
1
+ import { LogContext, TeeLogSink, consoleLogSink } from "@rocicorp/logger";
2
+ //#region ../replicache/src/log-options.ts
3
+ /**
4
+ * Creates a LogContext
5
+ * @param logLevel The log level to use. Default is `'info'`.
6
+ * @param logSinks Destination for logs. Default is `[consoleLogSink]`.
7
+ * @param context Optional: Additional information that can be associated with logs.
8
+ * @returns A LogContext instance configured with the provided options.
9
+ */
2
10
  function createLogContext(logLevel = "info", logSinks = [consoleLogSink], context) {
3
- const logSink = logSinks.length === 1 ? logSinks[0] : new TeeLogSink(logSinks);
4
- return new LogContext(logLevel, context, logSink);
11
+ return new LogContext(logLevel, context, logSinks.length === 1 ? logSinks[0] : new TeeLogSink(logSinks));
5
12
  }
6
- export {
7
- createLogContext
8
- };
9
- //# sourceMappingURL=log-options.js.map
13
+ //#endregion
14
+ export { createLogContext };
15
+
16
+ //# sourceMappingURL=log-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-options.js","sources":["../../../../replicache/src/log-options.ts"],"sourcesContent":["import {\n consoleLogSink,\n LogContext,\n TeeLogSink,\n type Context,\n type LogLevel,\n type LogSink,\n} from '@rocicorp/logger';\n\n/**\n * Creates a LogContext\n * @param logLevel The log level to use. Default is `'info'`.\n * @param logSinks Destination for logs. Default is `[consoleLogSink]`.\n * @param context Optional: Additional information that can be associated with logs.\n * @returns A LogContext instance configured with the provided options.\n */\nexport function createLogContext(\n logLevel: LogLevel = 'info',\n logSinks: LogSink[] = [consoleLogSink],\n context?: Context,\n): LogContext {\n const logSink =\n logSinks.length === 1 ? logSinks[0] : new TeeLogSink(logSinks);\n return new LogContext(logLevel, context, logSink);\n}\n"],"names":[],"mappings":";AAgBO,SAAS,iBACd,WAAqB,QACrB,WAAsB,CAAC,cAAc,GACrC,SACY;AACZ,QAAM,UACJ,SAAS,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,QAAQ;AAC/D,SAAO,IAAI,WAAW,UAAU,SAAS,OAAO;AAClD;"}
1
+ {"version":3,"file":"log-options.js","names":[],"sources":["../../../../replicache/src/log-options.ts"],"sourcesContent":["import {\n consoleLogSink,\n LogContext,\n TeeLogSink,\n type Context,\n type LogLevel,\n type LogSink,\n} from '@rocicorp/logger';\n\n/**\n * Creates a LogContext\n * @param logLevel The log level to use. Default is `'info'`.\n * @param logSinks Destination for logs. Default is `[consoleLogSink]`.\n * @param context Optional: Additional information that can be associated with logs.\n * @returns A LogContext instance configured with the provided options.\n */\nexport function createLogContext(\n logLevel: LogLevel = 'info',\n logSinks: LogSink[] = [consoleLogSink],\n context?: Context,\n): LogContext {\n const logSink =\n logSinks.length === 1 ? logSinks[0] : new TeeLogSink(logSinks);\n return new LogContext(logLevel, context, logSink);\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgB,iBACd,WAAqB,QACrB,WAAsB,CAAC,eAAe,EACtC,SACY;AAGZ,QAAO,IAAI,WAAW,UAAU,SAD9B,SAAS,WAAW,IAAI,SAAS,KAAK,IAAI,WAAW,SAAS,CACf"}
@@ -1,13 +1,18 @@
1
- import { Latest } from "./format-version-enum.js";
1
+ //#region ../replicache/src/make-idb-name.ts
2
+ /**
3
+ * Returns the name of the IDB database that will be used for a particular Replicache instance.
4
+ * @param name The name of the Replicache instance (i.e., the `name` field of `ReplicacheOptions`).
5
+ * @param schemaVersion The schema version of the database (i.e., the `schemaVersion` field of `ReplicacheOptions`).
6
+ * @returns
7
+ */
2
8
  function makeIDBName(name, schemaVersion) {
3
- return makeIDBNameInternal(name, schemaVersion, Latest);
9
+ return makeIDBNameInternal(name, schemaVersion, 7);
4
10
  }
5
11
  function makeIDBNameInternal(name, schemaVersion, formatVersion) {
6
- const n = `rep:${name}:${formatVersion}`;
7
- return schemaVersion ? `${n}:${schemaVersion}` : n;
12
+ const n = `rep:${name}:${formatVersion}`;
13
+ return schemaVersion ? `${n}:${schemaVersion}` : n;
8
14
  }
9
- export {
10
- makeIDBName,
11
- makeIDBNameInternal as makeIDBNameForTesting
12
- };
13
- //# sourceMappingURL=make-idb-name.js.map
15
+ //#endregion
16
+ export { makeIDBName };
17
+
18
+ //# sourceMappingURL=make-idb-name.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"make-idb-name.js","sources":["../../../../replicache/src/make-idb-name.ts"],"sourcesContent":["import * as FormatVersion from './format-version-enum.ts';\n\n/**\n * Returns the name of the IDB database that will be used for a particular Replicache instance.\n * @param name The name of the Replicache instance (i.e., the `name` field of `ReplicacheOptions`).\n * @param schemaVersion The schema version of the database (i.e., the `schemaVersion` field of `ReplicacheOptions`).\n * @returns\n */\n\nexport function makeIDBName(name: string, schemaVersion?: string): string {\n return makeIDBNameInternal(name, schemaVersion, FormatVersion.Latest);\n}\n\nfunction makeIDBNameInternal(\n name: string,\n schemaVersion: string | undefined,\n formatVersion: number,\n): string {\n const n = `rep:${name}:${formatVersion}`;\n return schemaVersion ? `${n}:${schemaVersion}` : n;\n}\n\nexport {makeIDBNameInternal as makeIDBNameForTesting};\n"],"names":["FormatVersion.Latest"],"mappings":";AASO,SAAS,YAAY,MAAc,eAAgC;AACxE,SAAO,oBAAoB,MAAM,eAAeA,MAAoB;AACtE;AAEA,SAAS,oBACP,MACA,eACA,eACQ;AACR,QAAM,IAAI,OAAO,IAAI,IAAI,aAAa;AACtC,SAAO,gBAAgB,GAAG,CAAC,IAAI,aAAa,KAAK;AACnD;"}
1
+ {"version":3,"file":"make-idb-name.js","names":[],"sources":["../../../../replicache/src/make-idb-name.ts"],"sourcesContent":["import * as FormatVersion from './format-version-enum.ts';\n\n/**\n * Returns the name of the IDB database that will be used for a particular Replicache instance.\n * @param name The name of the Replicache instance (i.e., the `name` field of `ReplicacheOptions`).\n * @param schemaVersion The schema version of the database (i.e., the `schemaVersion` field of `ReplicacheOptions`).\n * @returns\n */\n\nexport function makeIDBName(name: string, schemaVersion?: string): string {\n return makeIDBNameInternal(name, schemaVersion, FormatVersion.Latest);\n}\n\nfunction makeIDBNameInternal(\n name: string,\n schemaVersion: string | undefined,\n formatVersion: number,\n): string {\n const n = `rep:${name}:${formatVersion}`;\n return schemaVersion ? `${n}:${schemaVersion}` : n;\n}\n\nexport {makeIDBNameInternal as makeIDBNameForTesting};\n"],"mappings":";;;;;;;AASA,SAAgB,YAAY,MAAc,eAAgC;AACxE,QAAO,oBAAoB,MAAM,eAAe,EAAqB;;AAGvE,SAAS,oBACP,MACA,eACA,eACQ;CACR,MAAM,IAAI,OAAO,KAAK,GAAG;AACzB,QAAO,gBAAgB,GAAG,EAAE,GAAG,kBAAkB"}
@@ -0,0 +1,12 @@
1
+ import "./hash.js";
2
+ import "./dag/chunk.js";
3
+ import "./dag/store-impl.js";
4
+ import "./db/commit.js";
5
+ import "./persist/client-groups.js";
6
+ import "./dag/lazy-store.js";
7
+ import "./sync/pull.js";
8
+ import "./sync/push.js";
9
+ //#endregion
10
+ export {};
11
+
12
+ //# sourceMappingURL=mutation-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-recovery.js","names":["#options","#recoveringMutations"],"sources":["../../../../replicache/src/mutation-recovery.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert, assertNotUndefined} from '../../shared/src/asserts.ts';\nimport type {Enum} from '../../shared/src/enum.ts';\nimport type {MaybePromise} from '../../shared/src/types.ts';\nimport {throwChunkHasher} from './dag/chunk.ts';\nimport {LazyStore} from './dag/lazy-store.ts';\nimport {StoreImpl} from './dag/store-impl.ts';\nimport type {Store} from './dag/store.ts';\nimport {DEFAULT_HEAD_NAME} from './db/commit.ts';\nimport {\n type ClientStateNotFoundResponse,\n type VersionNotSupportedResponse,\n isClientStateNotFoundResponse,\n isVersionNotSupportedResponse,\n} from './error-responses.ts';\nimport * as FormatVersion from './format-version-enum.ts';\nimport {parseReplicacheFormatVersion as parseFormatVersion} from './format-version.ts';\nimport {assertHash, newRandomHash} from './hash.ts';\nimport type {HTTPRequestInfo} from './http-request-info.ts';\nimport type {CreateStore} from './kv/store.ts';\nimport {\n type ClientGroup,\n type ClientGroupMap,\n getClientGroups,\n disableClientGroup as persistDisableClientGroup,\n setClientGroups,\n} from './persist/client-groups.ts';\nimport type {\n IDBDatabasesStore,\n IndexedDBDatabase,\n} from './persist/idb-databases-store.ts';\nimport type {PullResponseOKV1, PullResponseV1, Puller} from './puller.ts';\nimport type {PushResponse, Pusher} from './pusher.ts';\nimport type {ClientGroupID, ClientID} from './sync/ids.ts';\nimport {beginPullV1} from './sync/pull.ts';\nimport {PUSH_VERSION_DD31, push} from './sync/push.ts';\nimport {withRead, withWrite} from './with-transactions.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nconst MUTATION_RECOVERY_LAZY_STORE_SOURCE_CHUNK_CACHE_SIZE_LIMIT = 10 * 2 ** 20; // 10 MB\n\ninterface ReplicacheDelegate {\n clientID: ClientID;\n closed: boolean;\n idbName: string;\n name: string;\n online: boolean;\n profileID: Promise<string>;\n puller: Puller;\n pusher: Pusher;\n}\n\ninterface MutationRecoveryOptions {\n delegate: ReplicacheDelegate;\n readonly wrapInOnlineCheck: (\n f: () => Promise<boolean>,\n name: string,\n ) => Promise<boolean>;\n readonly wrapInReauthRetries: <R>(\n f: (\n requestID: string,\n requestLc: LogContext,\n ) => Promise<{\n httpRequestInfo: HTTPRequestInfo | undefined;\n result: R;\n }>,\n verb: string,\n lc: LogContext,\n preAuth?: () => MaybePromise<void>,\n postAuth?: () => MaybePromise<void>,\n ) => Promise<{\n result: R;\n authFailure: boolean;\n }>;\n readonly isPushDisabled: () => boolean;\n readonly isPullDisabled: () => boolean;\n readonly lc: LogContext;\n readonly enableMutationRecovery: boolean;\n readonly clientGroupIDPromise: Promise<ClientGroupID | undefined>;\n}\n\nexport class MutationRecovery {\n #recoveringMutations = false;\n readonly #options: MutationRecoveryOptions;\n\n constructor(options: MutationRecoveryOptions) {\n this.#options = options;\n }\n\n async recoverMutations(\n ready: Promise<unknown>,\n perdag: Store,\n idbDatabase: IndexedDBDatabase,\n idbDatabases: IDBDatabasesStore,\n createStore: CreateStore,\n ): Promise<boolean> {\n const {lc, enableMutationRecovery, isPushDisabled, delegate} =\n this.#options;\n\n if (\n !enableMutationRecovery ||\n this.#recoveringMutations ||\n !delegate.online ||\n delegate.closed ||\n isPushDisabled()\n ) {\n return false;\n }\n const stepDescription = 'Recovering mutations.';\n lc.debug?.('Start:', stepDescription);\n try {\n this.#recoveringMutations = true;\n await ready;\n await recoverMutationsFromPerdag(idbDatabase, this.#options, perdag);\n for (const database of Object.values(await idbDatabases.getDatabases())) {\n if (delegate.closed) {\n lc.debug?.('Exiting early due to close:', stepDescription);\n return true;\n }\n if (\n database.replicacheName === delegate.name &&\n database.name !== delegate.idbName\n ) {\n switch (database.replicacheFormatVersion) {\n case FormatVersion.SDD:\n case FormatVersion.DD31:\n case FormatVersion.V6:\n case FormatVersion.V7:\n await recoverMutationsWithNewPerdag(\n database,\n this.#options,\n createStore,\n );\n }\n }\n }\n } catch (e) {\n logMutationRecoveryError(e, lc, stepDescription, delegate);\n } finally {\n lc.debug?.('End:', stepDescription);\n this.#recoveringMutations = false;\n }\n return true;\n }\n}\n\nfunction logMutationRecoveryError(\n e: unknown,\n lc: LogContext,\n stepDescription: string,\n closedDelegate: {closed: boolean},\n) {\n if (closedDelegate.closed) {\n lc.debug?.(\n `Mutation recovery error likely due to close during:\\n${stepDescription}\\nError:\\n`,\n e,\n );\n } else {\n lc.error?.(\n `Mutation recovery error during:\\n${stepDescription}\\nError:\\n`,\n e,\n );\n }\n}\n\nasync function recoverMutationsWithNewPerdag(\n database: IndexedDBDatabase,\n options: MutationRecoveryOptions,\n createStore: CreateStore,\n) {\n const perKvStore = createStore(database.name);\n const perdag = new StoreImpl(perKvStore, newRandomHash, assertHash);\n try {\n await recoverMutationsFromPerdag(database, options, perdag);\n } finally {\n await perdag.close();\n }\n}\n\nfunction recoverMutationsFromPerdag(\n database: IndexedDBDatabase,\n options: MutationRecoveryOptions,\n perdag: Store,\n): Promise<void> {\n assert(\n database.replicacheFormatVersion >= FormatVersion.DD31,\n 'Expected replicacheFormatVersion >= DD31 for mutation recovery',\n );\n return recoverMutationsFromPerdagDD31(database, options, perdag);\n}\n\nasync function recoverMutationsFromPerdagDD31(\n database: IndexedDBDatabase,\n options: MutationRecoveryOptions,\n perdag: Store,\n): Promise<void> {\n const {delegate, lc} = options;\n const stepDescription = `Recovering mutations from db ${database.name}.`;\n lc.debug?.('Start:', stepDescription);\n try {\n const formatVersion = parseFormatVersion(database.replicacheFormatVersion);\n let clientGroups: ClientGroupMap | undefined = await withRead(\n perdag,\n read => getClientGroups(read),\n );\n const clientGroupIDsVisited = new Set<ClientGroupID>();\n while (clientGroups) {\n let newClientGroups: ClientGroupMap | undefined;\n for (const [clientGroupID, clientGroup] of clientGroups) {\n if (delegate.closed) {\n lc.debug?.('Exiting early due to close:', stepDescription);\n return;\n }\n if (!clientGroupIDsVisited.has(clientGroupID)) {\n clientGroupIDsVisited.add(clientGroupID);\n newClientGroups = await recoverMutationsOfClientGroupDD31(\n clientGroup,\n clientGroupID,\n perdag,\n database,\n options,\n formatVersion,\n );\n if (newClientGroups) {\n break;\n }\n }\n }\n clientGroups = newClientGroups;\n }\n } catch (e) {\n logMutationRecoveryError(e, lc, stepDescription, delegate);\n }\n lc.debug?.('End:', stepDescription);\n}\n\nfunction isResponseThatShouldDisableClientGroup(\n response: PushResponse | PullResponseV1 | undefined,\n): response is ClientStateNotFoundResponse | VersionNotSupportedResponse {\n return (\n isClientStateNotFoundResponse(response) ||\n isVersionNotSupportedResponse(response)\n );\n}\n\nasync function disableClientGroup(\n lc: LogContext,\n selfClientGroupID: string,\n clientGroupID: string,\n response: ClientStateNotFoundResponse | VersionNotSupportedResponse,\n perdag: Store,\n) {\n if (isClientStateNotFoundResponse(response)) {\n lc.debug?.(\n `Client group ${selfClientGroupID} cannot recover mutations for client group ${clientGroupID}. The client group is unknown on the server. Marking it as disabled.`,\n );\n } else if (isVersionNotSupportedResponse(response)) {\n lc.debug?.(\n `Client group ${selfClientGroupID} cannot recover mutations for client group ${clientGroupID}. The client group's version is not supported on the server. versionType: ${response.versionType}. Marking it as disabled.`,\n );\n }\n // The client group is not the main client group so we do not need the\n // Replicache instance to update its internal _isClientGroupDisabled\n // property.\n await withWrite(perdag, perdagWrite =>\n persistDisableClientGroup(clientGroupID, perdagWrite),\n );\n}\n\n/**\n * @returns When mutations are recovered the resulting updated client group map.\n * Otherwise undefined, which can be because there were no mutations to\n * recover, or because an error occurred when trying to recover the mutations.\n */\nasync function recoverMutationsOfClientGroupDD31(\n clientGroup: ClientGroup,\n clientGroupID: ClientGroupID,\n perdag: Store,\n database: IndexedDBDatabase,\n options: MutationRecoveryOptions,\n formatVersion: FormatVersion,\n): Promise<ClientGroupMap | undefined> {\n assert(\n database.replicacheFormatVersion >= FormatVersion.DD31,\n 'Expected replicacheFormatVersion >= DD31 for client group mutation recovery',\n );\n\n const {\n delegate,\n lc,\n wrapInOnlineCheck,\n wrapInReauthRetries,\n isPushDisabled,\n isPullDisabled,\n clientGroupIDPromise,\n } = options;\n\n const selfClientGroupID = await clientGroupIDPromise;\n assertNotUndefined(selfClientGroupID);\n if (selfClientGroupID === clientGroupID) {\n return;\n }\n\n let clientID: ClientID | undefined;\n\n // If all local mutations have been applied then exit.\n let allAckd = true;\n for (const [cid, mutationID] of Object.entries(clientGroup.mutationIDs)) {\n // if not present then the server has not acknowledged this client's mutations.\n if (\n !clientGroup.lastServerAckdMutationIDs[cid] ||\n clientGroup.lastServerAckdMutationIDs[cid] < mutationID\n ) {\n clientID = cid;\n allAckd = false;\n break;\n }\n }\n if (allAckd) {\n return;\n }\n\n if (clientGroup.disabled) {\n lc.debug?.(\n `Not recovering mutations for client group ${clientGroupID} because group is disabled.`,\n );\n return;\n }\n\n const stepDescription = `Recovering mutations for client group ${clientGroupID}.`;\n lc.debug?.('Start:', stepDescription);\n const lazyDagForOtherClientGroup = new LazyStore(\n perdag,\n MUTATION_RECOVERY_LAZY_STORE_SOURCE_CHUNK_CACHE_SIZE_LIMIT,\n throwChunkHasher,\n assertHash,\n );\n try {\n await withWrite(lazyDagForOtherClientGroup, write =>\n write.setHead(DEFAULT_HEAD_NAME, clientGroup.headHash),\n );\n\n if (isPushDisabled()) {\n lc.debug?.(\n `Cannot recover mutations for client group ${clientGroupID} because push is disabled.`,\n );\n return;\n }\n\n const {pusher} = delegate;\n\n const pushDescription = 'recoveringMutationsPush';\n const pushSucceeded = await wrapInOnlineCheck(async () => {\n const {result: pusherResult} = await wrapInReauthRetries(\n async (requestID: string, requestLc: LogContext) => {\n assert(clientID, 'Expected clientID to be defined');\n assert(\n lazyDagForOtherClientGroup,\n 'Expected lazyDagForOtherClientGroup to be defined',\n );\n const pusherResult = await push(\n requestID,\n lazyDagForOtherClientGroup,\n requestLc,\n await delegate.profileID,\n clientGroupID,\n // TODO(DD31): clientID is not needed in DD31. It is currently kept for debugging purpose.\n clientID,\n pusher,\n database.schemaVersion,\n PUSH_VERSION_DD31,\n );\n return {\n result: pusherResult,\n httpRequestInfo: pusherResult?.httpRequestInfo,\n };\n },\n pushDescription,\n lc,\n );\n if (!pusherResult) {\n return false;\n }\n const pusherResponse = pusherResult.response;\n if (isResponseThatShouldDisableClientGroup(pusherResponse)) {\n await disableClientGroup(\n lc,\n selfClientGroupID,\n clientGroupID,\n pusherResponse,\n perdag,\n );\n return false;\n }\n return pusherResult.httpRequestInfo.httpStatusCode === 200;\n }, pushDescription);\n if (!pushSucceeded) {\n lc.debug?.(\n `Failed to recover mutations for client ${clientGroupID} due to a push error.`,\n );\n return;\n }\n\n if (isPullDisabled()) {\n lc.debug?.(\n `Cannot confirm mutations were recovered for client ${clientGroupID} ` +\n `because pull is disabled.`,\n );\n return;\n }\n const {puller} = delegate;\n\n const pullDescription = 'recoveringMutationsPull';\n let okPullResponse: PullResponseOKV1 | undefined;\n const pullSucceeded = await wrapInOnlineCheck(async () => {\n const {result: beginPullResponse} = await wrapInReauthRetries(\n async (requestID: string, requestLc: LogContext) => {\n assert(clientID, 'Expected clientID to be defined');\n const beginPullResponse = await beginPullV1(\n await delegate.profileID,\n clientID,\n clientGroupID,\n database.schemaVersion,\n puller,\n requestID,\n lazyDagForOtherClientGroup,\n formatVersion,\n requestLc,\n false,\n );\n return {\n result: beginPullResponse,\n httpRequestInfo: beginPullResponse.httpRequestInfo,\n };\n },\n pullDescription,\n lc,\n );\n const {pullResponse} = beginPullResponse;\n if (isResponseThatShouldDisableClientGroup(pullResponse)) {\n await disableClientGroup(\n lc,\n selfClientGroupID,\n clientGroupID,\n pullResponse,\n perdag,\n );\n return false;\n }\n if (\n !pullResponse ||\n beginPullResponse.httpRequestInfo.httpStatusCode !== 200\n ) {\n return false;\n }\n okPullResponse = pullResponse;\n return true;\n }, pullDescription);\n if (!pullSucceeded) {\n lc.debug?.(\n `Failed to recover mutations for client ${clientGroupID} due to a pull error.`,\n );\n return;\n }\n\n // TODO(arv): Refactor to make pullResponse a const.\n // pullResponse must be non undefined because pullSucceeded is true.\n assert(\n okPullResponse,\n 'Expected okPullResponse to be defined after successful pull',\n );\n lc.debug?.(\n `Client group ${selfClientGroupID} recovered mutations for client group ${clientGroupID}. Details`,\n {\n mutationIDs: clientGroup.mutationIDs,\n lastServerAckdMutationIDs: clientGroup.lastServerAckdMutationIDs,\n lastMutationIDChanges: okPullResponse.lastMutationIDChanges,\n },\n );\n\n return await withWrite(perdag, async dagWrite => {\n const clientGroups = await getClientGroups(dagWrite);\n const clientGroupToUpdate = clientGroups.get(clientGroupID);\n if (!clientGroupToUpdate) {\n return clientGroups;\n }\n\n assert(okPullResponse, 'Expected okPullResponse to be defined');\n const lastServerAckdMutationIDsUpdates: Record<ClientID, number> = {};\n let anyMutationIDsUpdated = false;\n for (const [clientID, lastMutationIDChange] of Object.entries(\n okPullResponse.lastMutationIDChanges,\n )) {\n if (\n (clientGroupToUpdate.lastServerAckdMutationIDs[clientID] ?? 0) <\n lastMutationIDChange\n ) {\n lastServerAckdMutationIDsUpdates[clientID] = lastMutationIDChange;\n anyMutationIDsUpdated = true;\n }\n }\n if (!anyMutationIDsUpdated) {\n return clientGroups;\n }\n\n const newClientGroups = new Map(clientGroups).set(clientGroupID, {\n ...clientGroupToUpdate,\n lastServerAckdMutationIDs: {\n ...clientGroupToUpdate.lastServerAckdMutationIDs,\n ...lastServerAckdMutationIDsUpdates,\n },\n });\n await setClientGroups(newClientGroups, dagWrite);\n return newClientGroups;\n });\n } catch (e) {\n logMutationRecoveryError(e, lc, stepDescription, delegate);\n } finally {\n await lazyDagForOtherClientGroup.close();\n lc.debug?.('End:', stepDescription);\n }\n return;\n}\n"],"mappings":""}
@@ -1,51 +1,43 @@
1
- import { BroadcastChannel as bc } from "../../shared/src/broadcast-channel.js";
2
- import { getClientGroup } from "./persist/client-groups.js";
3
1
  import { withRead } from "./with-transactions.js";
2
+ import { getClientGroup } from "./persist/client-groups.js";
3
+ import { bc } from "../../shared/src/broadcast-channel.js";
4
+ //#region ../replicache/src/new-client-channel.ts
4
5
  function makeChannelNameV0(replicacheName) {
5
- return `replicache-new-client-group:${replicacheName}`;
6
+ return `replicache-new-client-group:${replicacheName}`;
6
7
  }
7
8
  function makeChannelNameV1(replicacheName) {
8
- return `replicache-new-client-group-v1:${replicacheName}`;
9
+ return `replicache-new-client-group-v1:${replicacheName}`;
9
10
  }
10
11
  function isNewClientChannelMessageV1(message) {
11
- return typeof message === "object" && typeof message.clientGroupID === "string" && typeof message.idbName === "string";
12
+ return typeof message === "object" && typeof message.clientGroupID === "string" && typeof message.idbName === "string";
12
13
  }
13
14
  function initNewClientChannel(replicacheName, idbName, signal, clientGroupID, isNewClientGroup, onUpdateNeeded, perdag) {
14
- if (signal.aborted) {
15
- return;
16
- }
17
- const channelV1 = new bc(makeChannelNameV1(replicacheName));
18
- if (isNewClientGroup) {
19
- channelV1.postMessage({ clientGroupID, idbName });
20
- const channelV0 = new bc(makeChannelNameV0(replicacheName));
21
- channelV0.postMessage([clientGroupID]);
22
- channelV0.close();
23
- }
24
- channelV1.onmessage = async (e) => {
25
- const { data } = e;
26
- if (isNewClientChannelMessageV1(data)) {
27
- const { clientGroupID: newClientGroupID, idbName: newClientIDBName } = data;
28
- if (newClientGroupID !== clientGroupID) {
29
- if (newClientIDBName === idbName) {
30
- const updateNeeded = await withRead(
31
- perdag,
32
- async (perdagRead) => await getClientGroup(newClientGroupID, perdagRead) !== void 0
33
- );
34
- if (updateNeeded) {
35
- onUpdateNeeded();
36
- }
37
- } else {
38
- onUpdateNeeded();
39
- return;
40
- }
41
- }
42
- }
43
- };
44
- signal.addEventListener("abort", () => channelV1.close(), { once: true });
15
+ if (signal.aborted) return;
16
+ const channelV1 = new bc(makeChannelNameV1(replicacheName));
17
+ if (isNewClientGroup) {
18
+ channelV1.postMessage({
19
+ clientGroupID,
20
+ idbName
21
+ });
22
+ const channelV0 = new bc(makeChannelNameV0(replicacheName));
23
+ channelV0.postMessage([clientGroupID]);
24
+ channelV0.close();
25
+ }
26
+ channelV1.onmessage = async (e) => {
27
+ const { data } = e;
28
+ if (isNewClientChannelMessageV1(data)) {
29
+ const { clientGroupID: newClientGroupID, idbName: newClientIDBName } = data;
30
+ if (newClientGroupID !== clientGroupID) if (newClientIDBName === idbName) {
31
+ if (await withRead(perdag, async (perdagRead) => await getClientGroup(newClientGroupID, perdagRead) !== void 0)) onUpdateNeeded();
32
+ } else {
33
+ onUpdateNeeded();
34
+ return;
35
+ }
36
+ }
37
+ };
38
+ signal.addEventListener("abort", () => channelV1.close(), { once: true });
45
39
  }
46
- export {
47
- initNewClientChannel,
48
- makeChannelNameV0 as makeChannelNameV0ForTesting,
49
- makeChannelNameV1 as makeChannelNameV1ForTesting
50
- };
51
- //# sourceMappingURL=new-client-channel.js.map
40
+ //#endregion
41
+ export { initNewClientChannel };
42
+
43
+ //# sourceMappingURL=new-client-channel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"new-client-channel.js","sources":["../../../../replicache/src/new-client-channel.ts"],"sourcesContent":["import {BroadcastChannel} from '../../shared/src/broadcast-channel.ts';\nimport type {Read, Store} from './dag/store.ts';\nimport {getClientGroup} from './persist/client-groups.ts';\nimport {withRead} from './with-transactions.ts';\n\n// Older clients (<= replicache@13.0.1), listened on this channel name\n// and *asserted* that the messages received were an array containing exactly\n// one string.\nfunction makeChannelNameV0(replicacheName: string): string {\n return `replicache-new-client-group:${replicacheName}`;\n}\n\n// This channel name was introduced when we first needed to change the message\n// format. The design of the messages sent on this channel allows for\n// the message content to be extended in the future in a way that is\n// forward and backwards compatible. The message format can be extended\n// by adding new *optional* fields.\nfunction makeChannelNameV1(replicacheName: string): string {\n return `replicache-new-client-group-v1:${replicacheName}`;\n}\n\nexport {\n makeChannelNameV0 as makeChannelNameV0ForTesting,\n makeChannelNameV1 as makeChannelNameV1ForTesting,\n};\n\n// This message type can be extended with optional properties.\ntype NewClientChannelMessageV1 = {clientGroupID: string; idbName: string};\n\nfunction isNewClientChannelMessageV1(\n message: unknown,\n): message is NewClientChannelMessageV1 {\n return (\n typeof message === 'object' &&\n typeof (message as {clientGroupID: unknown}).clientGroupID === 'string' &&\n typeof (message as {idbName: unknown}).idbName === 'string'\n );\n}\n\nexport function initNewClientChannel(\n replicacheName: string,\n idbName: string,\n signal: AbortSignal,\n clientGroupID: string,\n isNewClientGroup: boolean,\n onUpdateNeeded: () => void,\n perdag: Store,\n) {\n if (signal.aborted) {\n return;\n }\n\n const channelV1 = new BroadcastChannel(makeChannelNameV1(replicacheName));\n if (isNewClientGroup) {\n channelV1.postMessage({clientGroupID, idbName});\n // Send expected format to V0 channel for old clients.\n const channelV0 = new BroadcastChannel(makeChannelNameV0(replicacheName));\n channelV0.postMessage([clientGroupID]);\n channelV0.close();\n }\n\n channelV1.onmessage = async (e: MessageEvent) => {\n const {data} = e;\n if (isNewClientChannelMessageV1(data)) {\n const {clientGroupID: newClientGroupID, idbName: newClientIDBName} = data;\n if (newClientGroupID !== clientGroupID) {\n if (newClientIDBName === idbName) {\n // Check if this client can see the new client's newClientGroupID in its\n // perdag. It should be able to if the clients share persistent\n // storage. However, with `ReplicacheOption.kvStore`\n // and `IDBStoreWithMemFallback` clients may not actually share\n // persistent storage. If storage is not shared, then there is no point\n // in updating, since clients cannot sync locally. If clients do update\n // in this case, they can continually cause each other to update, since\n // on each update the clients get assigned a new client group.\n const updateNeeded = await withRead(\n perdag,\n async (perdagRead: Read) =>\n (await getClientGroup(newClientGroupID, perdagRead)) !==\n undefined,\n );\n if (updateNeeded) {\n onUpdateNeeded();\n }\n } else {\n // Idb name is different, indicating new schema or format version.\n // Update to get assigned to newClientIDBName, and hopefully\n // newClientGroupID.\n // If storage is not actually shared (i.e. due to\n // `ReplicacheOption.kvStore`\n // or `IDBStoreWithMemFallback`) the new client will not\n // get assigned to newClientGroupID, but should get the\n // newClientIDBName.\n // Note: we don't try to read from newClientIDBName to see\n // if this client shares storage with the new client, because\n // the newClientIDBName may have a format version this client\n // cannot read.\n onUpdateNeeded();\n return;\n }\n }\n }\n };\n\n signal.addEventListener('abort', () => channelV1.close(), {once: true});\n}\n"],"names":["BroadcastChannel"],"mappings":";;;AAQA,SAAS,kBAAkB,gBAAgC;AACzD,SAAO,+BAA+B,cAAc;AACtD;AAOA,SAAS,kBAAkB,gBAAgC;AACzD,SAAO,kCAAkC,cAAc;AACzD;AAUA,SAAS,4BACP,SACsC;AACtC,SACE,OAAO,YAAY,YACnB,OAAQ,QAAqC,kBAAkB,YAC/D,OAAQ,QAA+B,YAAY;AAEvD;AAEO,SAAS,qBACd,gBACA,SACA,QACA,eACA,kBACA,gBACA,QACA;AACA,MAAI,OAAO,SAAS;AAClB;AAAA,EACF;AAEA,QAAM,YAAY,IAAIA,GAAiB,kBAAkB,cAAc,CAAC;AACxE,MAAI,kBAAkB;AACpB,cAAU,YAAY,EAAC,eAAe,QAAA,CAAQ;AAE9C,UAAM,YAAY,IAAIA,GAAiB,kBAAkB,cAAc,CAAC;AACxE,cAAU,YAAY,CAAC,aAAa,CAAC;AACrC,cAAU,MAAA;AAAA,EACZ;AAEA,YAAU,YAAY,OAAO,MAAoB;AAC/C,UAAM,EAAC,SAAQ;AACf,QAAI,4BAA4B,IAAI,GAAG;AACrC,YAAM,EAAC,eAAe,kBAAkB,SAAS,qBAAoB;AACrE,UAAI,qBAAqB,eAAe;AACtC,YAAI,qBAAqB,SAAS;AAShC,gBAAM,eAAe,MAAM;AAAA,YACzB;AAAA,YACA,OAAO,eACJ,MAAM,eAAe,kBAAkB,UAAU,MAClD;AAAA,UAAA;AAEJ,cAAI,cAAc;AAChB,2BAAA;AAAA,UACF;AAAA,QACF,OAAO;AAaL,yBAAA;AACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,iBAAiB,SAAS,MAAM,UAAU,SAAS,EAAC,MAAM,MAAK;AACxE;"}
1
+ {"version":3,"file":"new-client-channel.js","names":[],"sources":["../../../../replicache/src/new-client-channel.ts"],"sourcesContent":["import {BroadcastChannel} from '../../shared/src/broadcast-channel.ts';\nimport type {Read, Store} from './dag/store.ts';\nimport {getClientGroup} from './persist/client-groups.ts';\nimport {withRead} from './with-transactions.ts';\n\n// Older clients (<= replicache@13.0.1), listened on this channel name\n// and *asserted* that the messages received were an array containing exactly\n// one string.\nfunction makeChannelNameV0(replicacheName: string): string {\n return `replicache-new-client-group:${replicacheName}`;\n}\n\n// This channel name was introduced when we first needed to change the message\n// format. The design of the messages sent on this channel allows for\n// the message content to be extended in the future in a way that is\n// forward and backwards compatible. The message format can be extended\n// by adding new *optional* fields.\nfunction makeChannelNameV1(replicacheName: string): string {\n return `replicache-new-client-group-v1:${replicacheName}`;\n}\n\nexport {\n makeChannelNameV0 as makeChannelNameV0ForTesting,\n makeChannelNameV1 as makeChannelNameV1ForTesting,\n};\n\n// This message type can be extended with optional properties.\ntype NewClientChannelMessageV1 = {clientGroupID: string; idbName: string};\n\nfunction isNewClientChannelMessageV1(\n message: unknown,\n): message is NewClientChannelMessageV1 {\n return (\n typeof message === 'object' &&\n typeof (message as {clientGroupID: unknown}).clientGroupID === 'string' &&\n typeof (message as {idbName: unknown}).idbName === 'string'\n );\n}\n\nexport function initNewClientChannel(\n replicacheName: string,\n idbName: string,\n signal: AbortSignal,\n clientGroupID: string,\n isNewClientGroup: boolean,\n onUpdateNeeded: () => void,\n perdag: Store,\n) {\n if (signal.aborted) {\n return;\n }\n\n const channelV1 = new BroadcastChannel(makeChannelNameV1(replicacheName));\n if (isNewClientGroup) {\n channelV1.postMessage({clientGroupID, idbName});\n // Send expected format to V0 channel for old clients.\n const channelV0 = new BroadcastChannel(makeChannelNameV0(replicacheName));\n channelV0.postMessage([clientGroupID]);\n channelV0.close();\n }\n\n channelV1.onmessage = async (e: MessageEvent) => {\n const {data} = e;\n if (isNewClientChannelMessageV1(data)) {\n const {clientGroupID: newClientGroupID, idbName: newClientIDBName} = data;\n if (newClientGroupID !== clientGroupID) {\n if (newClientIDBName === idbName) {\n // Check if this client can see the new client's newClientGroupID in its\n // perdag. It should be able to if the clients share persistent\n // storage. However, with `ReplicacheOption.kvStore`\n // and `IDBStoreWithMemFallback` clients may not actually share\n // persistent storage. If storage is not shared, then there is no point\n // in updating, since clients cannot sync locally. If clients do update\n // in this case, they can continually cause each other to update, since\n // on each update the clients get assigned a new client group.\n const updateNeeded = await withRead(\n perdag,\n async (perdagRead: Read) =>\n (await getClientGroup(newClientGroupID, perdagRead)) !==\n undefined,\n );\n if (updateNeeded) {\n onUpdateNeeded();\n }\n } else {\n // Idb name is different, indicating new schema or format version.\n // Update to get assigned to newClientIDBName, and hopefully\n // newClientGroupID.\n // If storage is not actually shared (i.e. due to\n // `ReplicacheOption.kvStore`\n // or `IDBStoreWithMemFallback`) the new client will not\n // get assigned to newClientGroupID, but should get the\n // newClientIDBName.\n // Note: we don't try to read from newClientIDBName to see\n // if this client shares storage with the new client, because\n // the newClientIDBName may have a format version this client\n // cannot read.\n onUpdateNeeded();\n return;\n }\n }\n }\n };\n\n signal.addEventListener('abort', () => channelV1.close(), {once: true});\n}\n"],"mappings":";;;;AAQA,SAAS,kBAAkB,gBAAgC;AACzD,QAAO,+BAA+B;;AAQxC,SAAS,kBAAkB,gBAAgC;AACzD,QAAO,kCAAkC;;AAW3C,SAAS,4BACP,SACsC;AACtC,QACE,OAAO,YAAY,YACnB,OAAQ,QAAqC,kBAAkB,YAC/D,OAAQ,QAA+B,YAAY;;AAIvD,SAAgB,qBACd,gBACA,SACA,QACA,eACA,kBACA,gBACA,QACA;AACA,KAAI,OAAO,QACT;CAGF,MAAM,YAAY,IAAI,GAAiB,kBAAkB,eAAe,CAAC;AACzE,KAAI,kBAAkB;AACpB,YAAU,YAAY;GAAC;GAAe;GAAQ,CAAC;EAE/C,MAAM,YAAY,IAAI,GAAiB,kBAAkB,eAAe,CAAC;AACzE,YAAU,YAAY,CAAC,cAAc,CAAC;AACtC,YAAU,OAAO;;AAGnB,WAAU,YAAY,OAAO,MAAoB;EAC/C,MAAM,EAAC,SAAQ;AACf,MAAI,4BAA4B,KAAK,EAAE;GACrC,MAAM,EAAC,eAAe,kBAAkB,SAAS,qBAAoB;AACrE,OAAI,qBAAqB,cACvB,KAAI,qBAAqB;QASF,MAAM,SACzB,QACA,OAAO,eACJ,MAAM,eAAe,kBAAkB,WAAW,KACnD,KAAA,EACH,CAEC,iBAAgB;UAEb;AAaL,oBAAgB;AAChB;;;;AAMR,QAAO,iBAAiB,eAAe,UAAU,OAAO,EAAE,EAAC,MAAM,MAAK,CAAC"}
@@ -1,36 +1,33 @@
1
1
  import { assertObject, assertString } from "../../shared/src/asserts.js";
2
- import { BroadcastChannel as bc } from "../../shared/src/broadcast-channel.js";
2
+ import { bc } from "../../shared/src/broadcast-channel.js";
3
+ //#region ../replicache/src/on-persist-channel.ts
3
4
  function makeChannelName(replicacheName) {
4
- return `replicache-on-persist:${replicacheName}`;
5
+ return `replicache-on-persist:${replicacheName}`;
5
6
  }
6
7
  function assertPersistInfo(value) {
7
- assertObject(value);
8
- assertString(value.clientGroupID);
9
- assertString(value.clientID);
8
+ assertObject(value);
9
+ assertString(value.clientGroupID);
10
+ assertString(value.clientID);
10
11
  }
11
12
  function initOnPersistChannel(replicacheName, signal, handlePersist) {
12
- if (signal.aborted) {
13
- return () => void 0;
14
- }
15
- const channel = new bc(makeChannelName(replicacheName));
16
- channel.onmessage = (e) => {
17
- const { data } = e;
18
- assertPersistInfo(data);
19
- handlePersist({
20
- clientGroupID: data.clientGroupID,
21
- clientID: data.clientID
22
- });
23
- };
24
- signal.addEventListener("abort", () => channel.close(), { once: true });
25
- return (persistInfo) => {
26
- if (signal.aborted) {
27
- return;
28
- }
29
- channel.postMessage(persistInfo);
30
- handlePersist(persistInfo);
31
- };
13
+ if (signal.aborted) return () => void 0;
14
+ const channel = new bc(makeChannelName(replicacheName));
15
+ channel.onmessage = (e) => {
16
+ const { data } = e;
17
+ assertPersistInfo(data);
18
+ handlePersist({
19
+ clientGroupID: data.clientGroupID,
20
+ clientID: data.clientID
21
+ });
22
+ };
23
+ signal.addEventListener("abort", () => channel.close(), { once: true });
24
+ return (persistInfo) => {
25
+ if (signal.aborted) return;
26
+ channel.postMessage(persistInfo);
27
+ handlePersist(persistInfo);
28
+ };
32
29
  }
33
- export {
34
- initOnPersistChannel
35
- };
36
- //# sourceMappingURL=on-persist-channel.js.map
30
+ //#endregion
31
+ export { initOnPersistChannel };
32
+
33
+ //# sourceMappingURL=on-persist-channel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"on-persist-channel.js","sources":["../../../../replicache/src/on-persist-channel.ts"],"sourcesContent":["import {assertObject, assertString} from '../../shared/src/asserts.ts';\nimport {BroadcastChannel} from '../../shared/src/broadcast-channel.ts';\nimport type {ClientGroupID, ClientID} from './sync/ids.ts';\n\nfunction makeChannelName(replicacheName: string): string {\n return `replicache-on-persist:${replicacheName}`;\n}\n\nexport type PersistInfo = {\n clientGroupID: ClientGroupID;\n clientID: ClientID;\n};\n\nexport type OnPersist = (persistInfo: PersistInfo) => void;\n\ntype HandlePersist = OnPersist;\n\nfunction assertPersistInfo(value: unknown): asserts value is PersistInfo {\n assertObject(value);\n assertString(value.clientGroupID);\n assertString(value.clientID);\n}\n\nexport function initOnPersistChannel(\n replicacheName: string,\n signal: AbortSignal,\n handlePersist: HandlePersist,\n): OnPersist {\n if (signal.aborted) {\n return () => undefined;\n }\n const channel = new BroadcastChannel(makeChannelName(replicacheName));\n\n channel.onmessage = e => {\n const {data} = e;\n assertPersistInfo(data);\n handlePersist({\n clientGroupID: data.clientGroupID,\n clientID: data.clientID,\n });\n };\n\n signal.addEventListener('abort', () => channel.close(), {once: true});\n\n return (persistInfo: PersistInfo) => {\n if (signal.aborted) {\n return;\n }\n channel.postMessage(persistInfo);\n handlePersist(persistInfo);\n };\n}\n"],"names":["BroadcastChannel"],"mappings":";;AAIA,SAAS,gBAAgB,gBAAgC;AACvD,SAAO,yBAAyB,cAAc;AAChD;AAWA,SAAS,kBAAkB,OAA8C;AACvE,eAAa,KAAK;AAClB,eAAa,MAAM,aAAa;AAChC,eAAa,MAAM,QAAQ;AAC7B;AAEO,SAAS,qBACd,gBACA,QACA,eACW;AACX,MAAI,OAAO,SAAS;AAClB,WAAO,MAAM;AAAA,EACf;AACA,QAAM,UAAU,IAAIA,GAAiB,gBAAgB,cAAc,CAAC;AAEpE,UAAQ,YAAY,CAAA,MAAK;AACvB,UAAM,EAAC,SAAQ;AACf,sBAAkB,IAAI;AACtB,kBAAc;AAAA,MACZ,eAAe,KAAK;AAAA,MACpB,UAAU,KAAK;AAAA,IAAA,CAChB;AAAA,EACH;AAEA,SAAO,iBAAiB,SAAS,MAAM,QAAQ,SAAS,EAAC,MAAM,MAAK;AAEpE,SAAO,CAAC,gBAA6B;AACnC,QAAI,OAAO,SAAS;AAClB;AAAA,IACF;AACA,YAAQ,YAAY,WAAW;AAC/B,kBAAc,WAAW;AAAA,EAC3B;AACF;"}
1
+ {"version":3,"file":"on-persist-channel.js","names":[],"sources":["../../../../replicache/src/on-persist-channel.ts"],"sourcesContent":["import {assertObject, assertString} from '../../shared/src/asserts.ts';\nimport {BroadcastChannel} from '../../shared/src/broadcast-channel.ts';\nimport type {ClientGroupID, ClientID} from './sync/ids.ts';\n\nfunction makeChannelName(replicacheName: string): string {\n return `replicache-on-persist:${replicacheName}`;\n}\n\nexport type PersistInfo = {\n clientGroupID: ClientGroupID;\n clientID: ClientID;\n};\n\nexport type OnPersist = (persistInfo: PersistInfo) => void;\n\ntype HandlePersist = OnPersist;\n\nfunction assertPersistInfo(value: unknown): asserts value is PersistInfo {\n assertObject(value);\n assertString(value.clientGroupID);\n assertString(value.clientID);\n}\n\nexport function initOnPersistChannel(\n replicacheName: string,\n signal: AbortSignal,\n handlePersist: HandlePersist,\n): OnPersist {\n if (signal.aborted) {\n return () => undefined;\n }\n const channel = new BroadcastChannel(makeChannelName(replicacheName));\n\n channel.onmessage = e => {\n const {data} = e;\n assertPersistInfo(data);\n handlePersist({\n clientGroupID: data.clientGroupID,\n clientID: data.clientID,\n });\n };\n\n signal.addEventListener('abort', () => channel.close(), {once: true});\n\n return (persistInfo: PersistInfo) => {\n if (signal.aborted) {\n return;\n }\n channel.postMessage(persistInfo);\n handlePersist(persistInfo);\n };\n}\n"],"mappings":";;;AAIA,SAAS,gBAAgB,gBAAgC;AACvD,QAAO,yBAAyB;;AAYlC,SAAS,kBAAkB,OAA8C;AACvE,cAAa,MAAM;AACnB,cAAa,MAAM,cAAc;AACjC,cAAa,MAAM,SAAS;;AAG9B,SAAgB,qBACd,gBACA,QACA,eACW;AACX,KAAI,OAAO,QACT,cAAa,KAAA;CAEf,MAAM,UAAU,IAAI,GAAiB,gBAAgB,eAAe,CAAC;AAErE,SAAQ,aAAY,MAAK;EACvB,MAAM,EAAC,SAAQ;AACf,oBAAkB,KAAK;AACvB,gBAAc;GACZ,eAAe,KAAK;GACpB,UAAU,KAAK;GAChB,CAAC;;AAGJ,QAAO,iBAAiB,eAAe,QAAQ,OAAO,EAAE,EAAC,MAAM,MAAK,CAAC;AAErE,SAAQ,gBAA6B;AACnC,MAAI,OAAO,QACT;AAEF,UAAQ,YAAY,YAAY;AAChC,gBAAc,YAAY"}
@@ -0,0 +1,2 @@
1
+ import "./kv/op-sqlite/store.js";
2
+ export {};
@@ -1,42 +1,33 @@
1
1
  import { assertArray, assertObject, assertString } from "../../shared/src/asserts.js";
2
2
  import { assertJSONObject, assertJSONValue } from "../../shared/src/json.js";
3
+ //#region ../replicache/src/patch-operation.ts
3
4
  function assertPatchOperations(p) {
4
- assertArray(p);
5
- for (const item of p) {
6
- assertPatchOperation(item);
7
- }
5
+ assertArray(p);
6
+ for (const item of p) assertPatchOperation(item);
8
7
  }
9
8
  function assertPatchOperation(p) {
10
- assertObject(p);
11
- switch (p.op) {
12
- case "put":
13
- assertString(p.key);
14
- assertJSONValue(p.value);
15
- break;
16
- case "update":
17
- assertString(p.key);
18
- if (p.merge !== void 0) {
19
- assertJSONObject(p.merge);
20
- }
21
- if (p.constrain !== void 0) {
22
- assertArray(p.constrain);
23
- for (const key of p.constrain) {
24
- assertString(key);
25
- }
26
- }
27
- break;
28
- case "del":
29
- assertString(p.key);
30
- break;
31
- case "clear":
32
- break;
33
- default:
34
- throw new Error(
35
- `unknown patch op \`${p.op}\`, expected one of \`put\`, \`del\`, \`clear\``
36
- );
37
- }
9
+ assertObject(p);
10
+ switch (p.op) {
11
+ case "put":
12
+ assertString(p.key);
13
+ assertJSONValue(p.value);
14
+ break;
15
+ case "update":
16
+ assertString(p.key);
17
+ if (p.merge !== void 0) assertJSONObject(p.merge);
18
+ if (p.constrain !== void 0) {
19
+ assertArray(p.constrain);
20
+ for (const key of p.constrain) assertString(key);
21
+ }
22
+ break;
23
+ case "del":
24
+ assertString(p.key);
25
+ break;
26
+ case "clear": break;
27
+ default: throw new Error(`unknown patch op \`${p.op}\`, expected one of \`put\`, \`del\`, \`clear\``);
28
+ }
38
29
  }
39
- export {
40
- assertPatchOperations
41
- };
42
- //# sourceMappingURL=patch-operation.js.map
30
+ //#endregion
31
+ export { assertPatchOperations };
32
+
33
+ //# sourceMappingURL=patch-operation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"patch-operation.js","sources":["../../../../replicache/src/patch-operation.ts"],"sourcesContent":["import {\n assertArray,\n assertObject,\n assertString,\n} from '../../shared/src/asserts.ts';\nimport {\n type ReadonlyJSONObject,\n type ReadonlyJSONValue,\n assertJSONObject,\n assertJSONValue,\n} from '../../shared/src/json.ts';\n\nexport type PatchOperationInternal =\n | {\n readonly op: 'put';\n readonly key: string;\n readonly value: ReadonlyJSONValue;\n }\n | {\n readonly op: 'update';\n readonly key: string;\n readonly merge?: ReadonlyJSONObject | undefined;\n readonly constrain?: readonly string[] | undefined;\n }\n | {\n readonly op: 'del';\n readonly key: string;\n }\n | {\n readonly op: 'clear';\n };\n\n/**\n * This type describes the patch field in a {@link PullResponse} and it is used\n * to describe how to update the Replicache key-value store.\n */\nexport type PatchOperation =\n | {\n readonly op: 'put';\n readonly key: string;\n readonly value: ReadonlyJSONValue;\n }\n | {\n readonly op: 'del';\n readonly key: string;\n }\n | {\n readonly op: 'clear';\n };\n\nexport function assertPatchOperations(\n p: unknown,\n): asserts p is PatchOperationInternal[] {\n assertArray(p);\n for (const item of p) {\n assertPatchOperation(item);\n }\n}\n\nfunction assertPatchOperation(p: unknown): asserts p is PatchOperationInternal {\n assertObject(p);\n switch (p.op) {\n case 'put':\n assertString(p.key);\n assertJSONValue(p.value);\n break;\n case 'update':\n assertString(p.key);\n if (p.merge !== undefined) {\n assertJSONObject(p.merge);\n }\n if (p.constrain !== undefined) {\n assertArray(p.constrain);\n for (const key of p.constrain) {\n assertString(key);\n }\n }\n break;\n case 'del':\n assertString(p.key);\n break;\n case 'clear':\n break;\n default:\n throw new Error(\n `unknown patch op \\`${p.op}\\`, expected one of \\`put\\`, \\`del\\`, \\`clear\\``,\n );\n }\n}\n"],"names":[],"mappings":";;AAkDO,SAAS,sBACd,GACuC;AACvC,cAAY,CAAC;AACb,aAAW,QAAQ,GAAG;AACpB,yBAAqB,IAAI;AAAA,EAC3B;AACF;AAEA,SAAS,qBAAqB,GAAiD;AAC7E,eAAa,CAAC;AACd,UAAQ,EAAE,IAAA;AAAA,IACR,KAAK;AACH,mBAAa,EAAE,GAAG;AAClB,sBAAgB,EAAE,KAAK;AACvB;AAAA,IACF,KAAK;AACH,mBAAa,EAAE,GAAG;AAClB,UAAI,EAAE,UAAU,QAAW;AACzB,yBAAiB,EAAE,KAAK;AAAA,MAC1B;AACA,UAAI,EAAE,cAAc,QAAW;AAC7B,oBAAY,EAAE,SAAS;AACvB,mBAAW,OAAO,EAAE,WAAW;AAC7B,uBAAa,GAAG;AAAA,QAClB;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,mBAAa,EAAE,GAAG;AAClB;AAAA,IACF,KAAK;AACH;AAAA,IACF;AACE,YAAM,IAAI;AAAA,QACR,sBAAsB,EAAE,EAAE;AAAA,MAAA;AAAA,EAC5B;AAEN;"}
1
+ {"version":3,"file":"patch-operation.js","names":[],"sources":["../../../../replicache/src/patch-operation.ts"],"sourcesContent":["import {\n assertArray,\n assertObject,\n assertString,\n} from '../../shared/src/asserts.ts';\nimport {\n type ReadonlyJSONObject,\n type ReadonlyJSONValue,\n assertJSONObject,\n assertJSONValue,\n} from '../../shared/src/json.ts';\n\nexport type PatchOperationInternal =\n | {\n readonly op: 'put';\n readonly key: string;\n readonly value: ReadonlyJSONValue;\n }\n | {\n readonly op: 'update';\n readonly key: string;\n readonly merge?: ReadonlyJSONObject | undefined;\n readonly constrain?: readonly string[] | undefined;\n }\n | {\n readonly op: 'del';\n readonly key: string;\n }\n | {\n readonly op: 'clear';\n };\n\n/**\n * This type describes the patch field in a {@link PullResponse} and it is used\n * to describe how to update the Replicache key-value store.\n */\nexport type PatchOperation =\n | {\n readonly op: 'put';\n readonly key: string;\n readonly value: ReadonlyJSONValue;\n }\n | {\n readonly op: 'del';\n readonly key: string;\n }\n | {\n readonly op: 'clear';\n };\n\nexport function assertPatchOperations(\n p: unknown,\n): asserts p is PatchOperationInternal[] {\n assertArray(p);\n for (const item of p) {\n assertPatchOperation(item);\n }\n}\n\nfunction assertPatchOperation(p: unknown): asserts p is PatchOperationInternal {\n assertObject(p);\n switch (p.op) {\n case 'put':\n assertString(p.key);\n assertJSONValue(p.value);\n break;\n case 'update':\n assertString(p.key);\n if (p.merge !== undefined) {\n assertJSONObject(p.merge);\n }\n if (p.constrain !== undefined) {\n assertArray(p.constrain);\n for (const key of p.constrain) {\n assertString(key);\n }\n }\n break;\n case 'del':\n assertString(p.key);\n break;\n case 'clear':\n break;\n default:\n throw new Error(\n `unknown patch op \\`${p.op}\\`, expected one of \\`put\\`, \\`del\\`, \\`clear\\``,\n );\n }\n}\n"],"mappings":";;;AAkDA,SAAgB,sBACd,GACuC;AACvC,aAAY,EAAE;AACd,MAAK,MAAM,QAAQ,EACjB,sBAAqB,KAAK;;AAI9B,SAAS,qBAAqB,GAAiD;AAC7E,cAAa,EAAE;AACf,SAAQ,EAAE,IAAV;EACE,KAAK;AACH,gBAAa,EAAE,IAAI;AACnB,mBAAgB,EAAE,MAAM;AACxB;EACF,KAAK;AACH,gBAAa,EAAE,IAAI;AACnB,OAAI,EAAE,UAAU,KAAA,EACd,kBAAiB,EAAE,MAAM;AAE3B,OAAI,EAAE,cAAc,KAAA,GAAW;AAC7B,gBAAY,EAAE,UAAU;AACxB,SAAK,MAAM,OAAO,EAAE,UAClB,cAAa,IAAI;;AAGrB;EACF,KAAK;AACH,gBAAa,EAAE,IAAI;AACnB;EACF,KAAK,QACH;EACF,QACE,OAAM,IAAI,MACR,sBAAsB,EAAE,GAAG,iDAC5B"}
@@ -1,16 +1,18 @@
1
1
  import { mustGetHeadHash } from "./dag/store.js";
2
2
  import { DEFAULT_HEAD_NAME, localMutationsDD31 } from "./db/commit.js";
3
+ //#region ../replicache/src/pending-mutations.ts
4
+ /**
5
+ * This returns the pending changes with the oldest mutations first.
6
+ */
3
7
  async function pendingMutationsForAPI(dagRead) {
4
- const mainHeadHash = await mustGetHeadHash(DEFAULT_HEAD_NAME, dagRead);
5
- const pending = await localMutationsDD31(mainHeadHash, dagRead);
6
- return pending.map((p) => ({
7
- id: p.meta.mutationID,
8
- name: p.meta.mutatorName,
9
- args: p.meta.mutatorArgsJSON,
10
- clientID: p.meta.clientID
11
- })).reverse();
8
+ return (await localMutationsDD31(await mustGetHeadHash(DEFAULT_HEAD_NAME, dagRead), dagRead)).map((p) => ({
9
+ id: p.meta.mutationID,
10
+ name: p.meta.mutatorName,
11
+ args: p.meta.mutatorArgsJSON,
12
+ clientID: p.meta.clientID
13
+ })).reverse();
12
14
  }
13
- export {
14
- pendingMutationsForAPI
15
- };
16
- //# sourceMappingURL=pending-mutations.js.map
15
+ //#endregion
16
+ export { pendingMutationsForAPI };
17
+
18
+ //# sourceMappingURL=pending-mutations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pending-mutations.js","sources":["../../../../replicache/src/pending-mutations.ts"],"sourcesContent":["import type {ReadonlyJSONValue} from '../../shared/src/json.ts';\nimport {mustGetHeadHash, type Read} from './dag/store.ts';\nimport {DEFAULT_HEAD_NAME, localMutationsDD31} from './db/commit.ts';\nimport type {ClientID} from './sync/ids.ts';\n\nexport type PendingMutation = {\n readonly name: string;\n readonly id: number;\n readonly args: ReadonlyJSONValue;\n readonly clientID: ClientID;\n};\n\n/**\n * This returns the pending changes with the oldest mutations first.\n */\nexport async function pendingMutationsForAPI(\n dagRead: Read,\n): Promise<readonly PendingMutation[]> {\n const mainHeadHash = await mustGetHeadHash(DEFAULT_HEAD_NAME, dagRead);\n const pending = await localMutationsDD31(mainHeadHash, dagRead);\n return pending\n .map(p => ({\n id: p.meta.mutationID,\n name: p.meta.mutatorName,\n args: p.meta.mutatorArgsJSON,\n clientID: p.meta.clientID,\n }))\n .reverse();\n}\n"],"names":[],"mappings":";;AAeA,eAAsB,uBACpB,SACqC;AACrC,QAAM,eAAe,MAAM,gBAAgB,mBAAmB,OAAO;AACrE,QAAM,UAAU,MAAM,mBAAmB,cAAc,OAAO;AAC9D,SAAO,QACJ,IAAI,CAAA,OAAM;AAAA,IACT,IAAI,EAAE,KAAK;AAAA,IACX,MAAM,EAAE,KAAK;AAAA,IACb,MAAM,EAAE,KAAK;AAAA,IACb,UAAU,EAAE,KAAK;AAAA,EAAA,EACjB,EACD,QAAA;AACL;"}
1
+ {"version":3,"file":"pending-mutations.js","names":[],"sources":["../../../../replicache/src/pending-mutations.ts"],"sourcesContent":["import type {ReadonlyJSONValue} from '../../shared/src/json.ts';\nimport {mustGetHeadHash, type Read} from './dag/store.ts';\nimport {DEFAULT_HEAD_NAME, localMutationsDD31} from './db/commit.ts';\nimport type {ClientID} from './sync/ids.ts';\n\nexport type PendingMutation = {\n readonly name: string;\n readonly id: number;\n readonly args: ReadonlyJSONValue;\n readonly clientID: ClientID;\n};\n\n/**\n * This returns the pending changes with the oldest mutations first.\n */\nexport async function pendingMutationsForAPI(\n dagRead: Read,\n): Promise<readonly PendingMutation[]> {\n const mainHeadHash = await mustGetHeadHash(DEFAULT_HEAD_NAME, dagRead);\n const pending = await localMutationsDD31(mainHeadHash, dagRead);\n return pending\n .map(p => ({\n id: p.meta.mutationID,\n name: p.meta.mutatorName,\n args: p.meta.mutatorArgsJSON,\n clientID: p.meta.clientID,\n }))\n .reverse();\n}\n"],"mappings":";;;;;;AAeA,eAAsB,uBACpB,SACqC;AAGrC,SADgB,MAAM,mBADD,MAAM,gBAAgB,mBAAmB,QAAQ,EACf,QAAQ,EAE5D,KAAI,OAAM;EACT,IAAI,EAAE,KAAK;EACX,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,KAAK;EACb,UAAU,EAAE,KAAK;EAClB,EAAE,CACF,SAAS"}