@rocicorp/zero 0.26.1 → 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 (1086) 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 -283
  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.js +68 -103
  10. package/out/analyze-query/src/run-ast.js.map +1 -1
  11. package/out/ast-to-zql/src/ast-to-zql.js +105 -153
  12. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  13. package/out/ast-to-zql/src/bin.js +57 -62
  14. package/out/ast-to-zql/src/bin.js.map +1 -1
  15. package/out/ast-to-zql/src/format.js +14 -13
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +148 -213
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -1
  19. package/out/otel/src/enabled.js +9 -11
  20. package/out/otel/src/enabled.js.map +1 -1
  21. package/out/otel/src/log-options.js +25 -35
  22. package/out/otel/src/log-options.js.map +1 -1
  23. package/out/otel/src/maybe-time.js +13 -14
  24. package/out/otel/src/maybe-time.js.map +1 -1
  25. package/out/otel/src/span.js +23 -26
  26. package/out/otel/src/span.js.map +1 -1
  27. package/out/otel/src/test-log-config.js +11 -10
  28. package/out/otel/src/test-log-config.js.map +1 -1
  29. package/out/otel/src/version.js +6 -5
  30. package/out/otel/src/version.js.map +1 -1
  31. package/out/replicache/src/async-iterable-to-array.js +8 -9
  32. package/out/replicache/src/async-iterable-to-array.js.map +1 -1
  33. package/out/replicache/src/bg-interval.js +28 -35
  34. package/out/replicache/src/bg-interval.js.map +1 -1
  35. package/out/replicache/src/btree/diff.js +6 -5
  36. package/out/replicache/src/btree/diff.js.map +1 -1
  37. package/out/replicache/src/btree/node.js +281 -372
  38. package/out/replicache/src/btree/node.js.map +1 -1
  39. package/out/replicache/src/btree/read.js +155 -256
  40. package/out/replicache/src/btree/read.js.map +1 -1
  41. package/out/replicache/src/btree/splice.js +60 -80
  42. package/out/replicache/src/btree/splice.js.map +1 -1
  43. package/out/replicache/src/btree/write.js +134 -158
  44. package/out/replicache/src/btree/write.js.map +1 -1
  45. package/out/replicache/src/call-default-fetch.js +28 -32
  46. package/out/replicache/src/call-default-fetch.js.map +1 -1
  47. package/out/replicache/src/config.js +2 -0
  48. package/out/replicache/src/connection-loop-delegates.js +31 -33
  49. package/out/replicache/src/connection-loop-delegates.js.map +1 -1
  50. package/out/replicache/src/connection-loop.js +174 -240
  51. package/out/replicache/src/connection-loop.js.map +1 -1
  52. package/out/replicache/src/cookies.js +22 -32
  53. package/out/replicache/src/cookies.js.map +1 -1
  54. package/out/replicache/src/dag/chunk.js +44 -50
  55. package/out/replicache/src/dag/chunk.js.map +1 -1
  56. package/out/replicache/src/dag/gc.js +94 -114
  57. package/out/replicache/src/dag/gc.js.map +1 -1
  58. package/out/replicache/src/dag/key.js +9 -11
  59. package/out/replicache/src/dag/key.js.map +1 -1
  60. package/out/replicache/src/dag/lazy-store.js +458 -510
  61. package/out/replicache/src/dag/lazy-store.js.map +1 -1
  62. package/out/replicache/src/dag/store-impl.js +147 -178
  63. package/out/replicache/src/dag/store-impl.js.map +1 -1
  64. package/out/replicache/src/dag/store.js +19 -22
  65. package/out/replicache/src/dag/store.js.map +1 -1
  66. package/out/replicache/src/dag/visitor.js +23 -21
  67. package/out/replicache/src/dag/visitor.js.map +1 -1
  68. package/out/replicache/src/db/commit.js +209 -283
  69. package/out/replicache/src/db/commit.js.map +1 -1
  70. package/out/replicache/src/db/index.js +79 -122
  71. package/out/replicache/src/db/index.js.map +1 -1
  72. package/out/replicache/src/db/read.js +44 -60
  73. package/out/replicache/src/db/read.js.map +1 -1
  74. package/out/replicache/src/db/rebase.js +22 -77
  75. package/out/replicache/src/db/rebase.js.map +1 -1
  76. package/out/replicache/src/db/write.js +162 -296
  77. package/out/replicache/src/db/write.js.map +1 -1
  78. package/out/replicache/src/deleted-clients.js +59 -87
  79. package/out/replicache/src/deleted-clients.js.map +1 -1
  80. package/out/replicache/src/error-responses.js +18 -26
  81. package/out/replicache/src/error-responses.js.map +1 -1
  82. package/out/replicache/src/expo-sqlite.js +2 -0
  83. package/out/replicache/src/frozen-json.js +74 -108
  84. package/out/replicache/src/frozen-json.js.map +1 -1
  85. package/out/replicache/src/get-default-puller.js +34 -46
  86. package/out/replicache/src/get-default-puller.js.map +1 -1
  87. package/out/replicache/src/get-default-pusher.js +25 -33
  88. package/out/replicache/src/get-default-pusher.js.map +1 -1
  89. package/out/replicache/src/get-kv-store-provider.js +18 -20
  90. package/out/replicache/src/get-kv-store-provider.js.map +1 -1
  91. package/out/replicache/src/hash.js +29 -29
  92. package/out/replicache/src/hash.js.map +1 -1
  93. package/out/replicache/src/http-request-info.js +9 -8
  94. package/out/replicache/src/http-request-info.js.map +1 -1
  95. package/out/replicache/src/impl.js +2 -0
  96. package/out/replicache/src/index-defs.js +17 -28
  97. package/out/replicache/src/index-defs.js.map +1 -1
  98. package/out/replicache/src/kv/expo-sqlite/store.js +52 -50
  99. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  100. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +71 -68
  101. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -1
  102. package/out/replicache/src/kv/idb-store.js +144 -168
  103. package/out/replicache/src/kv/idb-store.js.map +1 -1
  104. package/out/replicache/src/kv/mem-store.js +57 -45
  105. package/out/replicache/src/kv/mem-store.js.map +1 -1
  106. package/out/replicache/src/kv/op-sqlite/store.js +56 -62
  107. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
  108. package/out/replicache/src/kv/op-sqlite/types.d.ts.map +1 -1
  109. package/out/replicache/src/kv/op-sqlite/types.js +7 -6
  110. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
  111. package/out/replicache/src/kv/read-impl.js +26 -25
  112. package/out/replicache/src/kv/read-impl.js.map +1 -1
  113. package/out/replicache/src/kv/sqlite-store.js +194 -207
  114. package/out/replicache/src/kv/sqlite-store.js.map +1 -1
  115. package/out/replicache/src/kv/throw-if-closed.js +12 -19
  116. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  117. package/out/replicache/src/kv/write-impl-base.js +44 -56
  118. package/out/replicache/src/kv/write-impl-base.js.map +1 -1
  119. package/out/replicache/src/kv/write-impl.js +22 -26
  120. package/out/replicache/src/kv/write-impl.js.map +1 -1
  121. package/out/replicache/src/lazy.js +10 -11
  122. package/out/replicache/src/lazy.js.map +1 -1
  123. package/out/replicache/src/log-options.js +14 -7
  124. package/out/replicache/src/log-options.js.map +1 -1
  125. package/out/replicache/src/make-idb-name.js +14 -9
  126. package/out/replicache/src/make-idb-name.js.map +1 -1
  127. package/out/replicache/src/mutation-recovery.js +12 -0
  128. package/out/replicache/src/mutation-recovery.js.map +1 -0
  129. package/out/replicache/src/new-client-channel.js +34 -42
  130. package/out/replicache/src/new-client-channel.js.map +1 -1
  131. package/out/replicache/src/on-persist-channel.js +26 -29
  132. package/out/replicache/src/on-persist-channel.js.map +1 -1
  133. package/out/replicache/src/op-sqlite.js +2 -0
  134. package/out/replicache/src/patch-operation.js +27 -36
  135. package/out/replicache/src/patch-operation.js.map +1 -1
  136. package/out/replicache/src/pending-mutations.js +14 -12
  137. package/out/replicache/src/pending-mutations.js.map +1 -1
  138. package/out/replicache/src/persist/client-gc.js +36 -51
  139. package/out/replicache/src/persist/client-gc.js.map +1 -1
  140. package/out/replicache/src/persist/client-group-gc.js +29 -36
  141. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  142. package/out/replicache/src/persist/client-groups.js +80 -154
  143. package/out/replicache/src/persist/client-groups.js.map +1 -1
  144. package/out/replicache/src/persist/clients.js +212 -307
  145. package/out/replicache/src/persist/clients.js.map +1 -1
  146. package/out/replicache/src/persist/collect-idb-databases.js +109 -171
  147. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
  148. package/out/replicache/src/persist/gather-mem-only-visitor.js +23 -24
  149. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
  150. package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -33
  151. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
  152. package/out/replicache/src/persist/heartbeat.js +31 -41
  153. package/out/replicache/src/persist/heartbeat.js.map +1 -1
  154. package/out/replicache/src/persist/idb-databases-store-db-name.js +9 -12
  155. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -1
  156. package/out/replicache/src/persist/idb-databases-store.js +78 -97
  157. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  158. package/out/replicache/src/persist/make-client-id.js +13 -9
  159. package/out/replicache/src/persist/make-client-id.js.map +1 -1
  160. package/out/replicache/src/persist/persist.js +113 -174
  161. package/out/replicache/src/persist/persist.js.map +1 -1
  162. package/out/replicache/src/persist/refresh.js +94 -183
  163. package/out/replicache/src/persist/refresh.js.map +1 -1
  164. package/out/replicache/src/process-scheduler.js +122 -143
  165. package/out/replicache/src/process-scheduler.js.map +1 -1
  166. package/out/replicache/src/pusher.js +21 -26
  167. package/out/replicache/src/pusher.js.map +1 -1
  168. package/out/replicache/src/replicache-impl.js +844 -1184
  169. package/out/replicache/src/replicache-impl.js.map +1 -1
  170. package/out/replicache/src/report-error.js +9 -6
  171. package/out/replicache/src/report-error.js.map +1 -1
  172. package/out/replicache/src/request-idle.js +13 -11
  173. package/out/replicache/src/request-idle.js.map +1 -1
  174. package/out/replicache/src/scan-iterator.d.ts.map +1 -1
  175. package/out/replicache/src/scan-iterator.js +108 -135
  176. package/out/replicache/src/scan-iterator.js.map +1 -1
  177. package/out/replicache/src/scan-options.js +33 -39
  178. package/out/replicache/src/scan-options.js.map +1 -1
  179. package/out/replicache/src/set-interval-with-signal.js +11 -10
  180. package/out/replicache/src/set-interval-with-signal.js.map +1 -1
  181. package/out/replicache/src/sqlite.js +2 -0
  182. package/out/replicache/src/subscriptions.js +222 -338
  183. package/out/replicache/src/subscriptions.js.map +1 -1
  184. package/out/replicache/src/sync/diff.js +52 -65
  185. package/out/replicache/src/sync/diff.js.map +1 -1
  186. package/out/replicache/src/sync/ids.js +8 -9
  187. package/out/replicache/src/sync/ids.js.map +1 -1
  188. package/out/replicache/src/sync/patch.js +34 -45
  189. package/out/replicache/src/sync/patch.js.map +1 -1
  190. package/out/replicache/src/sync/pull-error.js +15 -15
  191. package/out/replicache/src/sync/pull-error.js.map +1 -1
  192. package/out/replicache/src/sync/pull.js +145 -283
  193. package/out/replicache/src/sync/pull.js.map +1 -1
  194. package/out/replicache/src/sync/push.js +64 -79
  195. package/out/replicache/src/sync/push.js.map +1 -1
  196. package/out/replicache/src/sync/request-id.js +23 -15
  197. package/out/replicache/src/sync/request-id.js.map +1 -1
  198. package/out/replicache/src/sync/sync-head-name.js +6 -5
  199. package/out/replicache/src/sync/sync-head-name.js.map +1 -1
  200. package/out/replicache/src/to-error.js +7 -8
  201. package/out/replicache/src/to-error.js.map +1 -1
  202. package/out/replicache/src/transaction-closed-error.js +15 -15
  203. package/out/replicache/src/transaction-closed-error.js.map +1 -1
  204. package/out/replicache/src/transactions.js +120 -140
  205. package/out/replicache/src/transactions.js.map +1 -1
  206. package/out/replicache/src/version.js +9 -5
  207. package/out/replicache/src/version.js.map +1 -1
  208. package/out/replicache/src/with-transactions.js +23 -20
  209. package/out/replicache/src/with-transactions.js.map +1 -1
  210. package/out/shared/src/abort-error.js +7 -6
  211. package/out/shared/src/abort-error.js.map +1 -1
  212. package/out/shared/src/arrays.js +35 -42
  213. package/out/shared/src/arrays.js.map +1 -1
  214. package/out/shared/src/asserts.js +21 -45
  215. package/out/shared/src/asserts.js.map +1 -1
  216. package/out/shared/src/bigint-json.js +42 -38
  217. package/out/shared/src/bigint-json.js.map +1 -1
  218. package/out/shared/src/binary-search.js +27 -18
  219. package/out/shared/src/binary-search.js.map +1 -1
  220. package/out/shared/src/broadcast-channel.js +20 -23
  221. package/out/shared/src/broadcast-channel.js.map +1 -1
  222. package/out/shared/src/browser-env.js +11 -17
  223. package/out/shared/src/browser-env.js.map +1 -1
  224. package/out/shared/src/btree-set.js +419 -481
  225. package/out/shared/src/btree-set.js.map +1 -1
  226. package/out/shared/src/cache.js +43 -36
  227. package/out/shared/src/cache.js.map +1 -1
  228. package/out/shared/src/centroid.js +24 -26
  229. package/out/shared/src/centroid.js.map +1 -1
  230. package/out/shared/src/config.js +6 -6
  231. package/out/shared/src/config.js.map +1 -1
  232. package/out/shared/src/custom-key-map.js +54 -58
  233. package/out/shared/src/custom-key-map.js.map +1 -1
  234. package/out/shared/src/custom-key-set.js +53 -51
  235. package/out/shared/src/custom-key-set.js.map +1 -1
  236. package/out/shared/src/deep-clone.js +30 -41
  237. package/out/shared/src/deep-clone.js.map +1 -1
  238. package/out/shared/src/deep-merge.js +25 -24
  239. package/out/shared/src/deep-merge.js.map +1 -1
  240. package/out/shared/src/document-visible.js +63 -70
  241. package/out/shared/src/document-visible.js.map +1 -1
  242. package/out/shared/src/dotenv.js +7 -3
  243. package/out/shared/src/dotenv.js.map +1 -1
  244. package/out/shared/src/error.js +43 -64
  245. package/out/shared/src/error.js.map +1 -1
  246. package/out/shared/src/has-own.js +6 -5
  247. package/out/shared/src/has-own.js.map +1 -1
  248. package/out/shared/src/hash.js +15 -14
  249. package/out/shared/src/hash.js.map +1 -1
  250. package/out/shared/src/iterables.js +34 -47
  251. package/out/shared/src/iterables.js.map +1 -1
  252. package/out/shared/src/json-schema.js +25 -30
  253. package/out/shared/src/json-schema.js.map +1 -1
  254. package/out/shared/src/json.js +90 -129
  255. package/out/shared/src/json.js.map +1 -1
  256. package/out/shared/src/logging-test-utils.js +9 -11
  257. package/out/shared/src/logging-test-utils.js.map +1 -1
  258. package/out/shared/src/logging.js +75 -95
  259. package/out/shared/src/logging.js.map +1 -1
  260. package/out/shared/src/must.js +7 -8
  261. package/out/shared/src/must.js.map +1 -1
  262. package/out/shared/src/navigator.js +6 -5
  263. package/out/shared/src/navigator.js.map +1 -1
  264. package/out/shared/src/object-traversal.js +23 -23
  265. package/out/shared/src/object-traversal.js.map +1 -1
  266. package/out/shared/src/objects.js +15 -18
  267. package/out/shared/src/objects.js.map +1 -1
  268. package/out/shared/src/options.js +225 -302
  269. package/out/shared/src/options.js.map +1 -1
  270. package/out/shared/src/parse-big-int.js +12 -11
  271. package/out/shared/src/parse-big-int.js.map +1 -1
  272. package/out/shared/src/promise-race.js +21 -17
  273. package/out/shared/src/promise-race.js.map +1 -1
  274. package/out/shared/src/queue.js +124 -124
  275. package/out/shared/src/queue.js.map +1 -1
  276. package/out/shared/src/rand.js +13 -7
  277. package/out/shared/src/rand.js.map +1 -1
  278. package/out/shared/src/random-uint64.js +8 -7
  279. package/out/shared/src/random-uint64.js.map +1 -1
  280. package/out/shared/src/random-values.js +8 -11
  281. package/out/shared/src/random-values.js.map +1 -1
  282. package/out/shared/src/record-proxy.js +68 -57
  283. package/out/shared/src/record-proxy.js.map +1 -1
  284. package/out/shared/src/resolved-promises.js +9 -11
  285. package/out/shared/src/resolved-promises.js.map +1 -1
  286. package/out/shared/src/sentinels.js +9 -12
  287. package/out/shared/src/sentinels.js.map +1 -1
  288. package/out/shared/src/set-utils.js +41 -63
  289. package/out/shared/src/set-utils.js.map +1 -1
  290. package/out/shared/src/size-of-value.js +55 -51
  291. package/out/shared/src/size-of-value.js.map +1 -1
  292. package/out/shared/src/sleep.js +50 -45
  293. package/out/shared/src/sleep.js.map +1 -1
  294. package/out/shared/src/string-compare.js +8 -11
  295. package/out/shared/src/string-compare.js.map +1 -1
  296. package/out/shared/src/subscribable.js +34 -33
  297. package/out/shared/src/subscribable.js.map +1 -1
  298. package/out/shared/src/tdigest-schema.js +11 -7
  299. package/out/shared/src/tdigest-schema.js.map +1 -1
  300. package/out/shared/src/tdigest.js +197 -270
  301. package/out/shared/src/tdigest.js.map +1 -1
  302. package/out/shared/src/valita.js +145 -174
  303. package/out/shared/src/valita.js.map +1 -1
  304. package/out/z2s/src/compiler.d.ts.map +1 -1
  305. package/out/z2s/src/compiler.js +238 -468
  306. package/out/z2s/src/compiler.js.map +1 -1
  307. package/out/z2s/src/sql.d.ts +0 -1
  308. package/out/z2s/src/sql.d.ts.map +1 -1
  309. package/out/z2s/src/sql.js +149 -194
  310. package/out/z2s/src/sql.js.map +1 -1
  311. package/out/zero/package.js +193 -0
  312. package/out/zero/package.js.map +1 -0
  313. package/out/zero/src/adapters/drizzle.js +1 -6
  314. package/out/zero/src/adapters/pg.js +1 -6
  315. package/out/zero/src/adapters/postgresjs.js +1 -6
  316. package/out/zero/src/adapters/prisma.js +1 -5
  317. package/out/zero/src/analyze-query.js +1 -1
  318. package/out/zero/src/ast-to-zql.js +1 -1
  319. package/out/zero/src/bindings.js +6 -21
  320. package/out/zero/src/build-schema.js +5 -1
  321. package/out/zero/src/build-schema.js.map +1 -1
  322. package/out/zero/src/change-protocol/v0.js +3 -5
  323. package/out/zero/src/cli.js +2 -2
  324. package/out/zero/src/deploy-permissions.js +1 -1
  325. package/out/zero/src/expo-sqlite.js +2 -4
  326. package/out/zero/src/op-sqlite.js +2 -4
  327. package/out/zero/src/pg.js +2 -20
  328. package/out/zero/src/react-native.js +16 -12
  329. package/out/zero/src/react-native.js.map +1 -1
  330. package/out/zero/src/react.js +3 -12
  331. package/out/zero/src/server/runner/main.js +2 -0
  332. package/out/zero/src/server.js +2 -17
  333. package/out/zero/src/solid.js +3 -12
  334. package/out/zero/src/sqlite.js +2 -6
  335. package/out/zero/src/transform-query.js +1 -1
  336. package/out/zero/src/zero-cache-dev.js +124 -151
  337. package/out/zero/src/zero-cache-dev.js.map +1 -1
  338. package/out/zero/src/zero-out.js +9 -6
  339. package/out/zero/src/zero-out.js.map +1 -1
  340. package/out/zero/src/zero.js +6 -55
  341. package/out/zero/src/zqlite.js +2 -7
  342. package/out/zero-cache/src/auth/auth.js +138 -172
  343. package/out/zero-cache/src/auth/auth.js.map +1 -1
  344. package/out/zero-cache/src/auth/jwt.js +25 -33
  345. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  346. package/out/zero-cache/src/auth/load-permissions.js +54 -62
  347. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  348. package/out/zero-cache/src/auth/read-authorizer.js +70 -80
  349. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  350. package/out/zero-cache/src/auth/write-authorizer.js +284 -432
  351. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  352. package/out/zero-cache/src/config/network.js +31 -45
  353. package/out/zero-cache/src/config/network.js.map +1 -1
  354. package/out/zero-cache/src/config/normalize.js +81 -83
  355. package/out/zero-cache/src/config/normalize.js.map +1 -1
  356. package/out/zero-cache/src/config/server-context.js +32 -29
  357. package/out/zero-cache/src/config/server-context.js.map +1 -1
  358. package/out/zero-cache/src/config/zero-config.js +753 -833
  359. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  360. package/out/zero-cache/src/custom/fetch.js +183 -230
  361. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  362. package/out/zero-cache/src/custom-queries/transform-query.js +93 -99
  363. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  364. package/out/zero-cache/src/db/create.js +27 -29
  365. package/out/zero-cache/src/db/create.js.map +1 -1
  366. package/out/zero-cache/src/db/delete-lite-db.js +11 -7
  367. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  368. package/out/zero-cache/src/db/lite-tables.js +118 -158
  369. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  370. package/out/zero-cache/src/db/migration-lite.js +110 -178
  371. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  372. package/out/zero-cache/src/db/migration.js +82 -151
  373. package/out/zero-cache/src/db/migration.js.map +1 -1
  374. package/out/zero-cache/src/db/mode-enum.js +8 -9
  375. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  376. package/out/zero-cache/src/db/pg-copy.js +56 -54
  377. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  378. package/out/zero-cache/src/db/pg-to-lite.js +74 -110
  379. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  380. package/out/zero-cache/src/db/pg-type-parser.js +19 -36
  381. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  382. package/out/zero-cache/src/db/run-transaction.js +19 -20
  383. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  384. package/out/zero-cache/src/db/specs.js +42 -78
  385. package/out/zero-cache/src/db/specs.js.map +1 -1
  386. package/out/zero-cache/src/db/statements.js +52 -59
  387. package/out/zero-cache/src/db/statements.js.map +1 -1
  388. package/out/zero-cache/src/db/transaction-pool.js +376 -400
  389. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  390. package/out/zero-cache/src/db/warmup.js +13 -24
  391. package/out/zero-cache/src/db/warmup.js.map +1 -1
  392. package/out/zero-cache/src/observability/events.js +89 -99
  393. package/out/zero-cache/src/observability/events.js.map +1 -1
  394. package/out/zero-cache/src/observability/metrics.js +30 -54
  395. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  396. package/out/zero-cache/src/scripts/decommission.js +42 -47
  397. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  398. package/out/zero-cache/src/scripts/deploy-permissions.js +106 -144
  399. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  400. package/out/zero-cache/src/scripts/permissions.js +86 -107
  401. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  402. package/out/zero-cache/src/server/anonymous-otel-start.js +306 -440
  403. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  404. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  405. package/out/zero-cache/src/server/change-streamer.js +57 -130
  406. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  407. package/out/zero-cache/src/server/inspector-delegate.js +89 -100
  408. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  409. package/out/zero-cache/src/server/logging.js +18 -26
  410. package/out/zero-cache/src/server/logging.js.map +1 -1
  411. package/out/zero-cache/src/server/main.js +85 -142
  412. package/out/zero-cache/src/server/main.js.map +1 -1
  413. package/out/zero-cache/src/server/mutator.js +16 -13
  414. package/out/zero-cache/src/server/mutator.js.map +1 -1
  415. package/out/zero-cache/src/server/otel-diag-logger.js +42 -49
  416. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  417. package/out/zero-cache/src/server/otel-log-sink.js +34 -44
  418. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  419. package/out/zero-cache/src/server/otel-start.js +43 -51
  420. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  421. package/out/zero-cache/src/server/priority-op.js +27 -25
  422. package/out/zero-cache/src/server/priority-op.js.map +1 -1
  423. package/out/zero-cache/src/server/reaper.js +32 -43
  424. package/out/zero-cache/src/server/reaper.js.map +1 -1
  425. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  426. package/out/zero-cache/src/server/replicator.js +41 -57
  427. package/out/zero-cache/src/server/replicator.js.map +1 -1
  428. package/out/zero-cache/src/server/runner/main.js +7 -8
  429. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  430. package/out/zero-cache/src/server/runner/run-worker.js +56 -52
  431. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  432. package/out/zero-cache/src/server/runner/runtime.js +26 -32
  433. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  434. package/out/zero-cache/src/server/runner/zero-dispatcher.js +22 -27
  435. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  436. package/out/zero-cache/src/server/syncer.js +79 -148
  437. package/out/zero-cache/src/server/syncer.js.map +1 -1
  438. package/out/zero-cache/src/server/worker-dispatcher.js +84 -113
  439. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  440. package/out/zero-cache/src/server/worker-urls.d.ts +2 -1
  441. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -1
  442. package/out/zero-cache/src/server/worker-urls.js +14 -18
  443. package/out/zero-cache/src/server/worker-urls.js.map +1 -1
  444. package/out/zero-cache/src/server/write-worker.js +2 -0
  445. package/out/zero-cache/src/services/analyze.js +61 -130
  446. package/out/zero-cache/src/services/analyze.js.map +1 -1
  447. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +420 -419
  448. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  449. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +111 -114
  450. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  451. package/out/zero-cache/src/services/change-source/common/replica-schema.js +80 -148
  452. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  453. package/out/zero-cache/src/services/change-source/custom/change-source.js +154 -216
  454. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  455. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js +11 -14
  456. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
  457. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +168 -212
  458. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  459. package/out/zero-cache/src/services/change-source/pg/change-source.js +672 -892
  460. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  461. package/out/zero-cache/src/services/change-source/pg/decommission.js +19 -23
  462. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  463. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +258 -411
  464. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  465. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +59 -65
  466. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  467. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +218 -247
  468. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  469. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +100 -142
  470. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  471. package/out/zero-cache/src/services/change-source/pg/lsn.js +17 -19
  472. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  473. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +88 -98
  474. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  475. package/out/zero-cache/src/services/change-source/pg/schema/init.js +96 -177
  476. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  477. package/out/zero-cache/src/services/change-source/pg/schema/published.js +69 -107
  478. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  479. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +151 -212
  480. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  481. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +22 -53
  482. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  483. package/out/zero-cache/src/services/change-source/protocol/current/control.js +24 -12
  484. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  485. package/out/zero-cache/src/services/change-source/protocol/current/data.js +180 -290
  486. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  487. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +21 -33
  488. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  489. package/out/zero-cache/src/services/change-source/protocol/current/json.js +7 -18
  490. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -1
  491. package/out/zero-cache/src/services/change-source/protocol/current/path.js +24 -5
  492. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  493. package/out/zero-cache/src/services/change-source/protocol/current/status.js +25 -19
  494. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  495. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +24 -16
  496. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  497. package/out/zero-cache/src/services/change-source/protocol/current.js +51 -46
  498. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  499. package/out/zero-cache/src/services/change-source/protocol/mod.js +2 -0
  500. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +165 -171
  501. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  502. package/out/zero-cache/src/services/change-streamer/broadcast.js +163 -169
  503. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
  504. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +154 -221
  505. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  506. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  507. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +340 -299
  508. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  509. package/out/zero-cache/src/services/change-streamer/change-streamer.js +17 -24
  510. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  511. package/out/zero-cache/src/services/change-streamer/forwarder.js +84 -103
  512. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  513. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +49 -43
  514. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  515. package/out/zero-cache/src/services/change-streamer/schema/init.js +61 -89
  516. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  517. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +20 -1
  518. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  519. package/out/zero-cache/src/services/change-streamer/schema/tables.js +131 -109
  520. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  521. package/out/zero-cache/src/services/change-streamer/snapshot.js +26 -28
  522. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  523. package/out/zero-cache/src/services/change-streamer/storer.js +434 -513
  524. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  525. package/out/zero-cache/src/services/change-streamer/subscriber.js +142 -155
  526. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  527. package/out/zero-cache/src/services/heapz.js +18 -20
  528. package/out/zero-cache/src/services/heapz.js.map +1 -1
  529. package/out/zero-cache/src/services/http-service.js +59 -57
  530. package/out/zero-cache/src/services/http-service.js.map +1 -1
  531. package/out/zero-cache/src/services/life-cycle.js +182 -214
  532. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  533. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +102 -81
  534. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  535. package/out/zero-cache/src/services/litestream/commands.js +144 -205
  536. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  537. package/out/zero-cache/src/services/mutagen/error.js +10 -14
  538. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  539. package/out/zero-cache/src/services/mutagen/mutagen.js +166 -264
  540. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  541. package/out/zero-cache/src/services/mutagen/pusher.js +372 -487
  542. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  543. package/out/zero-cache/src/services/replicator/change-processor.js +483 -592
  544. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  545. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +4 -2
  546. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  547. package/out/zero-cache/src/services/replicator/incremental-sync.js +118 -143
  548. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  549. package/out/zero-cache/src/services/replicator/notifier.js +52 -28
  550. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  551. package/out/zero-cache/src/services/replicator/replication-status.js +105 -128
  552. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  553. package/out/zero-cache/src/services/replicator/replicator.d.ts +2 -1
  554. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  555. package/out/zero-cache/src/services/replicator/replicator.js +32 -34
  556. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  557. package/out/zero-cache/src/services/replicator/schema/change-log.js +101 -133
  558. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  559. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +145 -174
  560. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  561. package/out/zero-cache/src/services/replicator/schema/constants.js +11 -5
  562. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  563. package/out/zero-cache/src/services/replicator/schema/replication-state.js +56 -107
  564. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  565. package/out/zero-cache/src/services/replicator/schema/table-metadata.js +81 -66
  566. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
  567. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +69 -0
  568. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -0
  569. package/out/zero-cache/src/services/replicator/write-worker-client.js +96 -0
  570. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
  571. package/out/zero-cache/src/services/replicator/write-worker.js +68 -0
  572. package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -0
  573. package/out/zero-cache/src/services/run-ast.js +79 -120
  574. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  575. package/out/zero-cache/src/services/runner.js +39 -41
  576. package/out/zero-cache/src/services/runner.js.map +1 -1
  577. package/out/zero-cache/src/services/running-state.js +129 -134
  578. package/out/zero-cache/src/services/running-state.js.map +1 -1
  579. package/out/zero-cache/src/services/statz.js +139 -200
  580. package/out/zero-cache/src/services/statz.js.map +1 -1
  581. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +46 -49
  582. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  583. package/out/zero-cache/src/services/view-syncer/client-handler.js +257 -299
  584. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  585. package/out/zero-cache/src/services/view-syncer/client-schema.js +52 -82
  586. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  587. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +85 -107
  588. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  589. package/out/zero-cache/src/services/view-syncer/cvr-store.js +604 -757
  590. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  591. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -739
  592. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  593. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +60 -40
  594. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  595. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +95 -178
  596. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  597. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  598. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +572 -722
  599. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  600. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  601. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +246 -257
  602. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  603. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +59 -45
  604. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  605. package/out/zero-cache/src/services/view-syncer/schema/init.js +121 -189
  606. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  607. package/out/zero-cache/src/services/view-syncer/schema/types.js +138 -263
  608. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  609. package/out/zero-cache/src/services/view-syncer/snapshotter.js +322 -335
  610. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  611. package/out/zero-cache/src/services/view-syncer/tracer.js +7 -6
  612. package/out/zero-cache/src/services/view-syncer/tracer.js.map +1 -1
  613. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -11
  614. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  615. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1067 -1603
  616. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  617. package/out/zero-cache/src/types/error-with-level.js +19 -25
  618. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  619. package/out/zero-cache/src/types/http.js +17 -26
  620. package/out/zero-cache/src/types/http.js.map +1 -1
  621. package/out/zero-cache/src/types/lexi-version.js +28 -42
  622. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  623. package/out/zero-cache/src/types/lite.js +101 -121
  624. package/out/zero-cache/src/types/lite.js.map +1 -1
  625. package/out/zero-cache/src/types/names.js +6 -5
  626. package/out/zero-cache/src/types/names.js.map +1 -1
  627. package/out/zero-cache/src/types/pg-data-type.d.ts +1 -0
  628. package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -1
  629. package/out/zero-cache/src/types/pg-data-type.js +58 -73
  630. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  631. package/out/zero-cache/src/types/pg-types.js +12 -19
  632. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  633. package/out/zero-cache/src/types/pg.js +144 -218
  634. package/out/zero-cache/src/types/pg.js.map +1 -1
  635. package/out/zero-cache/src/types/processes.js +95 -90
  636. package/out/zero-cache/src/types/processes.js.map +1 -1
  637. package/out/zero-cache/src/types/profiler.js +32 -27
  638. package/out/zero-cache/src/types/profiler.js.map +1 -1
  639. package/out/zero-cache/src/types/row-key.js +42 -30
  640. package/out/zero-cache/src/types/row-key.js.map +1 -1
  641. package/out/zero-cache/src/types/shards.js +36 -45
  642. package/out/zero-cache/src/types/shards.js.map +1 -1
  643. package/out/zero-cache/src/types/sql.js +20 -9
  644. package/out/zero-cache/src/types/sql.js.map +1 -1
  645. package/out/zero-cache/src/types/state-version.js +17 -23
  646. package/out/zero-cache/src/types/state-version.js.map +1 -1
  647. package/out/zero-cache/src/types/streams.js +234 -270
  648. package/out/zero-cache/src/types/streams.js.map +1 -1
  649. package/out/zero-cache/src/types/strings.js +10 -13
  650. package/out/zero-cache/src/types/strings.js.map +1 -1
  651. package/out/zero-cache/src/types/subscription.js +266 -226
  652. package/out/zero-cache/src/types/subscription.js.map +1 -1
  653. package/out/zero-cache/src/types/url-params.js +30 -39
  654. package/out/zero-cache/src/types/url-params.js.map +1 -1
  655. package/out/zero-cache/src/types/websocket-handoff.js +62 -75
  656. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  657. package/out/zero-cache/src/types/ws.js +43 -53
  658. package/out/zero-cache/src/types/ws.js.map +1 -1
  659. package/out/zero-cache/src/workers/connect-params.js +42 -43
  660. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  661. package/out/zero-cache/src/workers/connection.js +213 -282
  662. package/out/zero-cache/src/workers/connection.js.map +1 -1
  663. package/out/zero-cache/src/workers/mutator.js +22 -21
  664. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  665. package/out/zero-cache/src/workers/replicator.d.ts +7 -0
  666. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  667. package/out/zero-cache/src/workers/replicator.js +92 -97
  668. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  669. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +121 -203
  670. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  671. package/out/zero-cache/src/workers/syncer.js +147 -201
  672. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  673. package/out/zero-client/src/client/active-clients-manager.js +178 -187
  674. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  675. package/out/zero-client/src/client/bindings.js +11 -0
  676. package/out/zero-client/src/client/client-error-kind-enum.js +18 -29
  677. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -1
  678. package/out/zero-client/src/client/connection-manager.js +291 -346
  679. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  680. package/out/zero-client/src/client/connection-status-enum.js +20 -15
  681. package/out/zero-client/src/client/connection-status-enum.js.map +1 -1
  682. package/out/zero-client/src/client/connection.js +92 -110
  683. package/out/zero-client/src/client/connection.js.map +1 -1
  684. package/out/zero-client/src/client/context.js +84 -100
  685. package/out/zero-client/src/client/context.js.map +1 -1
  686. package/out/zero-client/src/client/crud-impl.js +56 -88
  687. package/out/zero-client/src/client/crud-impl.js.map +1 -1
  688. package/out/zero-client/src/client/crud.js +127 -129
  689. package/out/zero-client/src/client/crud.js.map +1 -1
  690. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  691. package/out/zero-client/src/client/custom.js +50 -74
  692. package/out/zero-client/src/client/custom.js.map +1 -1
  693. package/out/zero-client/src/client/delete-clients-manager.js +72 -93
  694. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  695. package/out/zero-client/src/client/enable-analytics.js +8 -16
  696. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  697. package/out/zero-client/src/client/error.js +118 -133
  698. package/out/zero-client/src/client/error.js.map +1 -1
  699. package/out/zero-client/src/client/http-string.js +7 -7
  700. package/out/zero-client/src/client/http-string.js.map +1 -1
  701. package/out/zero-client/src/client/inspector/client-group.js +21 -26
  702. package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
  703. package/out/zero-client/src/client/inspector/client.js +23 -26
  704. package/out/zero-client/src/client/inspector/client.js.map +1 -1
  705. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +72 -73
  706. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
  707. package/out/zero-client/src/client/inspector/inspector.js +46 -51
  708. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  709. package/out/zero-client/src/client/inspector/lazy-inspector.js +132 -192
  710. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  711. package/out/zero-client/src/client/inspector/query.js +72 -77
  712. package/out/zero-client/src/client/inspector/query.js.map +1 -1
  713. package/out/zero-client/src/client/ivm-branch.js +118 -145
  714. package/out/zero-client/src/client/ivm-branch.js.map +1 -1
  715. package/out/zero-client/src/client/keys.js +15 -31
  716. package/out/zero-client/src/client/keys.js.map +1 -1
  717. package/out/zero-client/src/client/log-options.js +43 -57
  718. package/out/zero-client/src/client/log-options.js.map +1 -1
  719. package/out/zero-client/src/client/make-mutate-property.js +46 -29
  720. package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
  721. package/out/zero-client/src/client/make-replicache-mutators.js +80 -96
  722. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  723. package/out/zero-client/src/client/metric-name-enum.js +11 -15
  724. package/out/zero-client/src/client/metric-name-enum.js.map +1 -1
  725. package/out/zero-client/src/client/metrics.js +210 -237
  726. package/out/zero-client/src/client/metrics.js.map +1 -1
  727. package/out/zero-client/src/client/mutation-tracker.js +264 -354
  728. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  729. package/out/zero-client/src/client/mutator-proxy.js +122 -151
  730. package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
  731. package/out/zero-client/src/client/options.js +7 -10
  732. package/out/zero-client/src/client/options.js.map +1 -1
  733. package/out/zero-client/src/client/query-manager.js +305 -373
  734. package/out/zero-client/src/client/query-manager.js.map +1 -1
  735. package/out/zero-client/src/client/reload-error-handler.js +80 -101
  736. package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
  737. package/out/zero-client/src/client/server-option.js +30 -59
  738. package/out/zero-client/src/client/server-option.js.map +1 -1
  739. package/out/zero-client/src/client/update-needed-reason-type-enum.js +27 -9
  740. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -1
  741. package/out/zero-client/src/client/version.js +9 -5
  742. package/out/zero-client/src/client/version.js.map +1 -1
  743. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -1
  744. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  745. package/out/zero-client/src/client/zero-poke-handler.js +205 -293
  746. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  747. package/out/zero-client/src/client/zero-rep.js +61 -68
  748. package/out/zero-client/src/client/zero-rep.js.map +1 -1
  749. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  750. package/out/zero-client/src/client/zero.js +1367 -1834
  751. package/out/zero-client/src/client/zero.js.map +1 -1
  752. package/out/zero-client/src/mod.js +21 -0
  753. package/out/zero-client/src/util/nanoid.js +13 -18
  754. package/out/zero-client/src/util/nanoid.js.map +1 -1
  755. package/out/zero-client/src/util/socket.js +6 -5
  756. package/out/zero-client/src/util/socket.js.map +1 -1
  757. package/out/zero-pg/src/mod.js +10 -0
  758. package/out/zero-protocol/src/analyze-query-result.js +108 -148
  759. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  760. package/out/zero-protocol/src/application-error.js +36 -34
  761. package/out/zero-protocol/src/application-error.js.map +1 -1
  762. package/out/zero-protocol/src/ast.js +236 -309
  763. package/out/zero-protocol/src/ast.js.map +1 -1
  764. package/out/zero-protocol/src/change-desired-queries.js +8 -13
  765. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  766. package/out/zero-protocol/src/client-schema.js +21 -42
  767. package/out/zero-protocol/src/client-schema.js.map +1 -1
  768. package/out/zero-protocol/src/close-connection.js +20 -12
  769. package/out/zero-protocol/src/close-connection.js.map +1 -1
  770. package/out/zero-protocol/src/connect.js +37 -52
  771. package/out/zero-protocol/src/connect.js.map +1 -1
  772. package/out/zero-protocol/src/custom-queries.js +34 -65
  773. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  774. package/out/zero-protocol/src/data.js +6 -9
  775. package/out/zero-protocol/src/data.js.map +1 -1
  776. package/out/zero-protocol/src/delete-clients.js +11 -17
  777. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  778. package/out/zero-protocol/src/down.js +11 -23
  779. package/out/zero-protocol/src/down.js.map +1 -1
  780. package/out/zero-protocol/src/error-kind-enum.js +24 -41
  781. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  782. package/out/zero-protocol/src/error-origin-enum.js +8 -9
  783. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  784. package/out/zero-protocol/src/error-reason-enum.js +12 -17
  785. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  786. package/out/zero-protocol/src/error.js +76 -152
  787. package/out/zero-protocol/src/error.js.map +1 -1
  788. package/out/zero-protocol/src/inspect-down.js +51 -74
  789. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  790. package/out/zero-protocol/src/inspect-up.js +28 -46
  791. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  792. package/out/zero-protocol/src/mutation-id.js +9 -9
  793. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  794. package/out/zero-protocol/src/mutation-type-enum.js +7 -7
  795. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  796. package/out/zero-protocol/src/mutations-patch.js +21 -16
  797. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  798. package/out/zero-protocol/src/ping.js +8 -9
  799. package/out/zero-protocol/src/ping.js.map +1 -1
  800. package/out/zero-protocol/src/poke.js +53 -59
  801. package/out/zero-protocol/src/poke.js.map +1 -1
  802. package/out/zero-protocol/src/pong.js +8 -9
  803. package/out/zero-protocol/src/pong.js.map +1 -1
  804. package/out/zero-protocol/src/primary-key.js +9 -19
  805. package/out/zero-protocol/src/primary-key.js.map +1 -1
  806. package/out/zero-protocol/src/protocol-version.js +5 -11
  807. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  808. package/out/zero-protocol/src/pull.js +16 -28
  809. package/out/zero-protocol/src/pull.js.map +1 -1
  810. package/out/zero-protocol/src/push.js +162 -209
  811. package/out/zero-protocol/src/push.js.map +1 -1
  812. package/out/zero-protocol/src/queries-patch.js +22 -30
  813. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  814. package/out/zero-protocol/src/query-hash.js +14 -17
  815. package/out/zero-protocol/src/query-hash.js.map +1 -1
  816. package/out/zero-protocol/src/row-patch.js +23 -30
  817. package/out/zero-protocol/src/row-patch.js.map +1 -1
  818. package/out/zero-protocol/src/up.js +11 -22
  819. package/out/zero-protocol/src/up.js.map +1 -1
  820. package/out/zero-protocol/src/update-auth.js +8 -13
  821. package/out/zero-protocol/src/update-auth.js.map +1 -1
  822. package/out/zero-protocol/src/version.js +8 -9
  823. package/out/zero-protocol/src/version.js.map +1 -1
  824. package/out/zero-react/src/bindings.js +12 -0
  825. package/out/zero-react/src/mod.js +5 -0
  826. package/out/zero-react/src/use-connection-state.js +14 -11
  827. package/out/zero-react/src/use-connection-state.js.map +1 -1
  828. package/out/zero-react/src/use-query.js +283 -281
  829. package/out/zero-react/src/use-query.js.map +1 -1
  830. package/out/zero-react/src/use-zero-online.js +17 -11
  831. package/out/zero-react/src/use-zero-online.js.map +1 -1
  832. package/out/zero-react/src/zero-provider.js +53 -69
  833. package/out/zero-react/src/zero-provider.js.map +1 -1
  834. package/out/zero-react/src/zero.js +22 -0
  835. package/out/zero-schema/src/builder/relationship-builder.js +25 -21
  836. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  837. package/out/zero-schema/src/builder/schema-builder.js +51 -79
  838. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  839. package/out/zero-schema/src/builder/table-builder.js +99 -116
  840. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  841. package/out/zero-schema/src/compiled-permissions.js +21 -25
  842. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  843. package/out/zero-schema/src/name-mapper.js +31 -47
  844. package/out/zero-schema/src/name-mapper.js.map +1 -1
  845. package/out/zero-schema/src/permissions.js +94 -181
  846. package/out/zero-schema/src/permissions.js.map +1 -1
  847. package/out/zero-schema/src/schema-config.js +26 -32
  848. package/out/zero-schema/src/schema-config.js.map +1 -1
  849. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  850. package/out/zero-server/src/adapters/drizzle.js +79 -76
  851. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  852. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  853. package/out/zero-server/src/adapters/pg.js +79 -55
  854. package/out/zero-server/src/adapters/pg.js.map +1 -1
  855. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  856. package/out/zero-server/src/adapters/postgresjs.js +66 -40
  857. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  858. package/out/zero-server/src/adapters/prisma.d.ts.map +1 -1
  859. package/out/zero-server/src/adapters/prisma.js +75 -55
  860. package/out/zero-server/src/adapters/prisma.js.map +1 -1
  861. package/out/zero-server/src/custom.d.ts.map +1 -1
  862. package/out/zero-server/src/custom.js +188 -265
  863. package/out/zero-server/src/custom.js.map +1 -1
  864. package/out/zero-server/src/logging.js +6 -5
  865. package/out/zero-server/src/logging.js.map +1 -1
  866. package/out/zero-server/src/mod.js +8 -0
  867. package/out/zero-server/src/pg-query-executor.js +14 -17
  868. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  869. package/out/zero-server/src/process-mutations.js +293 -365
  870. package/out/zero-server/src/process-mutations.js.map +1 -1
  871. package/out/zero-server/src/push-processor.js +33 -49
  872. package/out/zero-server/src/push-processor.js.map +1 -1
  873. package/out/zero-server/src/queries/process-queries.js +106 -96
  874. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  875. package/out/zero-server/src/schema.js +98 -144
  876. package/out/zero-server/src/schema.js.map +1 -1
  877. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  878. package/out/zero-server/src/zql-database.js +54 -69
  879. package/out/zero-server/src/zql-database.js.map +1 -1
  880. package/out/zero-solid/src/bindings.js +12 -0
  881. package/out/zero-solid/src/mod.js +5 -0
  882. package/out/zero-solid/src/solid-view.js +135 -227
  883. package/out/zero-solid/src/solid-view.js.map +1 -1
  884. package/out/zero-solid/src/use-connection-state.js +18 -14
  885. package/out/zero-solid/src/use-connection-state.js.map +1 -1
  886. package/out/zero-solid/src/use-query.js +55 -100
  887. package/out/zero-solid/src/use-query.js.map +1 -1
  888. package/out/zero-solid/src/use-zero-online.js +18 -12
  889. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  890. package/out/zero-solid/src/use-zero.js +65 -77
  891. package/out/zero-solid/src/use-zero.js.map +1 -1
  892. package/out/zero-solid/src/zero.js +22 -0
  893. package/out/zero-types/src/format.js +8 -7
  894. package/out/zero-types/src/format.js.map +1 -1
  895. package/out/zero-types/src/name-mapper.js +34 -47
  896. package/out/zero-types/src/name-mapper.js.map +1 -1
  897. package/out/zql/src/builder/builder.d.ts.map +1 -1
  898. package/out/zql/src/builder/builder.js +315 -476
  899. package/out/zql/src/builder/builder.js.map +1 -1
  900. package/out/zql/src/builder/debug-delegate.js +69 -74
  901. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  902. package/out/zql/src/builder/filter.js +116 -140
  903. package/out/zql/src/builder/filter.js.map +1 -1
  904. package/out/zql/src/builder/like.js +41 -46
  905. package/out/zql/src/builder/like.js.map +1 -1
  906. package/out/zql/src/error.js +10 -9
  907. package/out/zql/src/error.js.map +1 -1
  908. package/out/zql/src/ivm/array-view.js +89 -91
  909. package/out/zql/src/ivm/array-view.js.map +1 -1
  910. package/out/zql/src/ivm/constraint.js +65 -74
  911. package/out/zql/src/ivm/constraint.js.map +1 -1
  912. package/out/zql/src/ivm/data.js +61 -48
  913. package/out/zql/src/ivm/data.js.map +1 -1
  914. package/out/zql/src/ivm/exists.js +164 -213
  915. package/out/zql/src/ivm/exists.js.map +1 -1
  916. package/out/zql/src/ivm/fan-in.js +62 -59
  917. package/out/zql/src/ivm/fan-in.js.map +1 -1
  918. package/out/zql/src/ivm/fan-out.js +52 -61
  919. package/out/zql/src/ivm/fan-out.js.map +1 -1
  920. package/out/zql/src/ivm/filter-operators.js +91 -96
  921. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  922. package/out/zql/src/ivm/filter-push.js +22 -26
  923. package/out/zql/src/ivm/filter-push.js.map +1 -1
  924. package/out/zql/src/ivm/filter.js +41 -35
  925. package/out/zql/src/ivm/filter.js.map +1 -1
  926. package/out/zql/src/ivm/flipped-join.js +282 -391
  927. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  928. package/out/zql/src/ivm/join-utils.js +85 -115
  929. package/out/zql/src/ivm/join-utils.js.map +1 -1
  930. package/out/zql/src/ivm/join.js +162 -231
  931. package/out/zql/src/ivm/join.js.map +1 -1
  932. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +21 -25
  933. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  934. package/out/zql/src/ivm/memory-source.js +364 -503
  935. package/out/zql/src/ivm/memory-source.js.map +1 -1
  936. package/out/zql/src/ivm/memory-storage.js +33 -34
  937. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  938. package/out/zql/src/ivm/operator.js +13 -15
  939. package/out/zql/src/ivm/operator.js.map +1 -1
  940. package/out/zql/src/ivm/push-accumulated.js +267 -270
  941. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  942. package/out/zql/src/ivm/skip.js +91 -104
  943. package/out/zql/src/ivm/skip.js.map +1 -1
  944. package/out/zql/src/ivm/stream.js +10 -10
  945. package/out/zql/src/ivm/stream.js.map +1 -1
  946. package/out/zql/src/ivm/take.js +422 -569
  947. package/out/zql/src/ivm/take.js.map +1 -1
  948. package/out/zql/src/ivm/union-fan-in.js +157 -231
  949. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  950. package/out/zql/src/ivm/union-fan-out.js +38 -43
  951. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  952. package/out/zql/src/ivm/view-apply-change.js +166 -255
  953. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  954. package/out/zql/src/mutate/crud.js +35 -34
  955. package/out/zql/src/mutate/crud.js.map +1 -1
  956. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  957. package/out/zql/src/mutate/custom.js +7 -11
  958. package/out/zql/src/mutate/custom.js.map +1 -1
  959. package/out/zql/src/mutate/mutator-registry.js +67 -71
  960. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  961. package/out/zql/src/mutate/mutator.js +26 -25
  962. package/out/zql/src/mutate/mutator.js.map +1 -1
  963. package/out/zql/src/planner/planner-builder.js +134 -239
  964. package/out/zql/src/planner/planner-builder.js.map +1 -1
  965. package/out/zql/src/planner/planner-connection.js +222 -212
  966. package/out/zql/src/planner/planner-connection.js.map +1 -1
  967. package/out/zql/src/planner/planner-constraint.js +15 -7
  968. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  969. package/out/zql/src/planner/planner-debug.js +199 -224
  970. package/out/zql/src/planner/planner-debug.js.map +1 -1
  971. package/out/zql/src/planner/planner-fan-in.js +146 -162
  972. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  973. package/out/zql/src/planner/planner-fan-out.js +62 -74
  974. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  975. package/out/zql/src/planner/planner-graph.js +302 -334
  976. package/out/zql/src/planner/planner-graph.js.map +1 -1
  977. package/out/zql/src/planner/planner-join.js +255 -240
  978. package/out/zql/src/planner/planner-join.js.map +1 -1
  979. package/out/zql/src/planner/planner-node.js +10 -6
  980. package/out/zql/src/planner/planner-node.js.map +1 -1
  981. package/out/zql/src/planner/planner-source.js +15 -22
  982. package/out/zql/src/planner/planner-source.js.map +1 -1
  983. package/out/zql/src/planner/planner-terminus.js +28 -28
  984. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  985. package/out/zql/src/query/complete-ordering.js +37 -61
  986. package/out/zql/src/query/complete-ordering.js.map +1 -1
  987. package/out/zql/src/query/create-builder.js +14 -22
  988. package/out/zql/src/query/create-builder.js.map +1 -1
  989. package/out/zql/src/query/error.js +10 -12
  990. package/out/zql/src/query/error.js.map +1 -1
  991. package/out/zql/src/query/escape-like.js +6 -5
  992. package/out/zql/src/query/escape-like.js.map +1 -1
  993. package/out/zql/src/query/expression.js +138 -157
  994. package/out/zql/src/query/expression.js.map +1 -1
  995. package/out/zql/src/query/measure-push-operator.js +35 -38
  996. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  997. package/out/zql/src/query/metrics-delegate.js +7 -7
  998. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  999. package/out/zql/src/query/named.js +52 -51
  1000. package/out/zql/src/query/named.js.map +1 -1
  1001. package/out/zql/src/query/query-delegate-base.js +190 -238
  1002. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1003. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1004. package/out/zql/src/query/query-impl.js +271 -405
  1005. package/out/zql/src/query/query-impl.js.map +1 -1
  1006. package/out/zql/src/query/query-internals.js +16 -8
  1007. package/out/zql/src/query/query-internals.js.map +1 -1
  1008. package/out/zql/src/query/query-registry.js +83 -98
  1009. package/out/zql/src/query/query-registry.js.map +1 -1
  1010. package/out/zql/src/query/query.d.ts.map +1 -1
  1011. package/out/zql/src/query/query.js +2 -0
  1012. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  1013. package/out/zql/src/query/runnable-query-impl.js +30 -55
  1014. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  1015. package/out/zql/src/query/static-query.js +7 -14
  1016. package/out/zql/src/query/static-query.js.map +1 -1
  1017. package/out/zql/src/query/ttl.js +45 -67
  1018. package/out/zql/src/query/ttl.js.map +1 -1
  1019. package/out/zql/src/query/validate-input.js +23 -20
  1020. package/out/zql/src/query/validate-input.js.map +1 -1
  1021. package/out/zqlite/src/database-storage.js +99 -103
  1022. package/out/zqlite/src/database-storage.js.map +1 -1
  1023. package/out/zqlite/src/db.js +206 -249
  1024. package/out/zqlite/src/db.js.map +1 -1
  1025. package/out/zqlite/src/explain-queries.js +11 -13
  1026. package/out/zqlite/src/explain-queries.js.map +1 -1
  1027. package/out/zqlite/src/internal/sql-inline.js +54 -37
  1028. package/out/zqlite/src/internal/sql-inline.js.map +1 -1
  1029. package/out/zqlite/src/internal/sql.js +17 -15
  1030. package/out/zqlite/src/internal/sql.js.map +1 -1
  1031. package/out/zqlite/src/internal/statement-cache.js +117 -92
  1032. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1033. package/out/zqlite/src/mod.js +5 -0
  1034. package/out/zqlite/src/query-builder.js +81 -172
  1035. package/out/zqlite/src/query-builder.js.map +1 -1
  1036. package/out/zqlite/src/query-delegate.js +45 -55
  1037. package/out/zqlite/src/query-delegate.js.map +1 -1
  1038. package/out/zqlite/src/resolve-scalar-subqueries.js +134 -124
  1039. package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
  1040. package/out/zqlite/src/sqlite-cost-model.js +92 -97
  1041. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1042. package/out/zqlite/src/sqlite-stat-fanout.js +304 -286
  1043. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1044. package/out/zqlite/src/table-source.js +281 -455
  1045. package/out/zqlite/src/table-source.js.map +1 -1
  1046. package/package.json +7 -7
  1047. package/out/replicache/src/db/index-operation-enum.js +0 -7
  1048. package/out/replicache/src/db/index-operation-enum.js.map +0 -1
  1049. package/out/replicache/src/db/meta-type-enum.js +0 -7
  1050. package/out/replicache/src/db/meta-type-enum.js.map +0 -1
  1051. package/out/replicache/src/format-version-enum.js +0 -11
  1052. package/out/replicache/src/format-version-enum.js.map +0 -1
  1053. package/out/replicache/src/http-status-unauthorized.js +0 -5
  1054. package/out/replicache/src/http-status-unauthorized.js.map +0 -1
  1055. package/out/replicache/src/invoke-kind-enum.js +0 -7
  1056. package/out/replicache/src/invoke-kind-enum.js.map +0 -1
  1057. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +0 -9
  1058. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +0 -1
  1059. package/out/zero/package.json.js +0 -9
  1060. package/out/zero/package.json.js.map +0 -1
  1061. package/out/zero/src/adapters/drizzle.js.map +0 -1
  1062. package/out/zero/src/adapters/pg.js.map +0 -1
  1063. package/out/zero/src/adapters/postgresjs.js.map +0 -1
  1064. package/out/zero/src/adapters/prisma.js.map +0 -1
  1065. package/out/zero/src/analyze-query.js.map +0 -1
  1066. package/out/zero/src/ast-to-zql.js.map +0 -1
  1067. package/out/zero/src/bindings.js.map +0 -1
  1068. package/out/zero/src/change-protocol/v0.js.map +0 -1
  1069. package/out/zero/src/cli.js.map +0 -1
  1070. package/out/zero/src/deploy-permissions.js.map +0 -1
  1071. package/out/zero/src/expo-sqlite.js.map +0 -1
  1072. package/out/zero/src/op-sqlite.js.map +0 -1
  1073. package/out/zero/src/pg.js.map +0 -1
  1074. package/out/zero/src/react.js.map +0 -1
  1075. package/out/zero/src/server.js.map +0 -1
  1076. package/out/zero/src/solid.js.map +0 -1
  1077. package/out/zero/src/sqlite.js.map +0 -1
  1078. package/out/zero/src/transform-query.js.map +0 -1
  1079. package/out/zero/src/zero.js.map +0 -1
  1080. package/out/zero/src/zqlite.js.map +0 -1
  1081. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +0 -11
  1082. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +0 -1
  1083. package/out/zero-cache/src/db/postgres-type-class-enum.js +0 -17
  1084. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +0 -1
  1085. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +0 -9
  1086. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +0 -1
@@ -1,146 +1,119 @@
1
- import { greaterThan } from "compare-utf8";
2
1
  import { asyncIterableToArray } from "./async-iterable-to-array.js";
3
2
  import { encodeIndexScanKey } from "./db/index.js";
4
- import { normalizeScanOptionIndexedStartKey, isScanIndexOptions } from "./scan-options.js";
5
3
  import { throwIfClosed } from "./transaction-closed-error.js";
6
- import "../../shared/src/config.js";
7
- class ScanResultImpl {
8
- #iter;
9
- #options;
10
- #dbDelegateOptions;
11
- #onLimitKey;
12
- constructor(iter, options, dbDelegateOptions, onLimitKey) {
13
- this.#iter = iter;
14
- this.#options = options;
15
- this.#dbDelegateOptions = dbDelegateOptions;
16
- this.#onLimitKey = onLimitKey;
17
- }
18
- /** The default AsyncIterable. This is the same as {@link values}. */
19
- [Symbol.asyncIterator]() {
20
- return this.values();
21
- }
22
- /** Async iterator over the values of the {@link ReadTransaction.scan | scan} call. */
23
- values() {
24
- return new AsyncIterableIteratorToArrayWrapperImpl(
25
- this.#newIterator((e) => e[1])
26
- );
27
- }
28
- /**
29
- * Async iterator over the keys of the {@link ReadTransaction.scan | scan}
30
- * call. If the {@link ReadTransaction.scan | scan} is over an index the key
31
- * is a tuple of `[secondaryKey: string, primaryKey]`
32
- */
33
- keys() {
34
- return new AsyncIterableIteratorToArrayWrapperImpl(
35
- this.#newIterator((e) => e[0])
36
- );
37
- }
38
- /**
39
- * Async iterator over the entries of the {@link ReadTransaction.scan | scan}
40
- * call. An entry is a tuple of key values. If the
41
- * {@link ReadTransaction.scan | scan} is over an index the key is a tuple of
42
- * `[secondaryKey: string, primaryKey]`
43
- */
44
- entries() {
45
- return new AsyncIterableIteratorToArrayWrapperImpl(
46
- this.#newIterator((e) => [e[0], e[1]])
47
- );
48
- }
49
- /** Returns all the values as an array. Same as `values().toArray()` */
50
- toArray() {
51
- return this.values().toArray();
52
- }
53
- #newIterator(toValue) {
54
- return scanIterator(
55
- toValue,
56
- this.#iter,
57
- this.#options,
58
- this.#dbDelegateOptions,
59
- this.#onLimitKey
60
- );
61
- }
62
- }
63
- class AsyncIterableIteratorToArrayWrapperImpl {
64
- #it;
65
- constructor(it) {
66
- this.#it = it;
67
- }
68
- next() {
69
- return this.#it.next();
70
- }
71
- [Symbol.asyncIterator]() {
72
- return this.#it[Symbol.asyncIterator]();
73
- }
74
- toArray() {
75
- return asyncIterableToArray(this.#it);
76
- }
77
- }
4
+ import { isScanIndexOptions, normalizeScanOptionIndexedStartKey } from "./scan-options.js";
5
+ import "./transactions.js";
6
+ import { greaterThan } from "compare-utf8";
7
+ //#region ../replicache/src/scan-iterator.ts
8
+ /**
9
+ * This class is used for the results of {@link ReadTransaction.scan | scan}. It
10
+ * implements `AsyncIterable<JSONValue>` which allows you to use it in a `for
11
+ * await` loop. There are also methods to iterate over the {@link keys},
12
+ * {@link entries} or {@link values}.
13
+ */
14
+ var ScanResultImpl = class {
15
+ #iter;
16
+ #options;
17
+ #dbDelegateOptions;
18
+ #onLimitKey;
19
+ constructor(iter, options, dbDelegateOptions, onLimitKey) {
20
+ this.#iter = iter;
21
+ this.#options = options;
22
+ this.#dbDelegateOptions = dbDelegateOptions;
23
+ this.#onLimitKey = onLimitKey;
24
+ }
25
+ /** The default AsyncIterable. This is the same as {@link values}. */
26
+ [Symbol.asyncIterator]() {
27
+ return this.values();
28
+ }
29
+ /** Async iterator over the values of the {@link ReadTransaction.scan | scan} call. */
30
+ values() {
31
+ return new AsyncIterableIteratorToArrayWrapperImpl(this.#newIterator((e) => e[1]));
32
+ }
33
+ /**
34
+ * Async iterator over the keys of the {@link ReadTransaction.scan | scan}
35
+ * call. If the {@link ReadTransaction.scan | scan} is over an index the key
36
+ * is a tuple of `[secondaryKey: string, primaryKey]`
37
+ */
38
+ keys() {
39
+ return new AsyncIterableIteratorToArrayWrapperImpl(this.#newIterator((e) => e[0]));
40
+ }
41
+ /**
42
+ * Async iterator over the entries of the {@link ReadTransaction.scan | scan}
43
+ * call. An entry is a tuple of key values. If the
44
+ * {@link ReadTransaction.scan | scan} is over an index the key is a tuple of
45
+ * `[secondaryKey: string, primaryKey]`
46
+ */
47
+ entries() {
48
+ return new AsyncIterableIteratorToArrayWrapperImpl(this.#newIterator((e) => [e[0], e[1]]));
49
+ }
50
+ /** Returns all the values as an array. Same as `values().toArray()` */
51
+ toArray() {
52
+ return this.values().toArray();
53
+ }
54
+ #newIterator(toValue) {
55
+ return scanIterator(toValue, this.#iter, this.#options, this.#dbDelegateOptions, this.#onLimitKey);
56
+ }
57
+ };
58
+ var AsyncIterableIteratorToArrayWrapperImpl = class {
59
+ #it;
60
+ constructor(it) {
61
+ this.#it = it;
62
+ }
63
+ next() {
64
+ return this.#it.next();
65
+ }
66
+ [Symbol.asyncIterator]() {
67
+ return this.#it[Symbol.asyncIterator]();
68
+ }
69
+ toArray() {
70
+ return asyncIterableToArray(this.#it);
71
+ }
72
+ };
78
73
  async function* scanIterator(toValue, iter, options, closed, onLimitKey) {
79
- throwIfClosed(closed);
80
- let { limit = Infinity } = options;
81
- const { prefix = "" } = options;
82
- let exclusive = options.start?.exclusive;
83
- const isIndexScan = isScanIndexOptions(options);
84
- for await (const entry of iter) {
85
- const key = entry[0];
86
- const keyToMatch = isIndexScan ? key[0] : key;
87
- if (!keyToMatch.startsWith(prefix)) {
88
- return;
89
- }
90
- if (exclusive) {
91
- exclusive = true;
92
- if (isIndexScan) {
93
- if (shouldSkipIndexScan(key, options.start.key)) {
94
- continue;
95
- }
96
- } else {
97
- if (shouldSkipNonIndexScan(key, options.start.key)) {
98
- continue;
99
- }
100
- }
101
- }
102
- yield toValue(entry);
103
- if (--limit === 0) {
104
- if (!isIndexScan) {
105
- onLimitKey(key);
106
- }
107
- return;
108
- }
109
- }
74
+ throwIfClosed(closed);
75
+ let { limit = Infinity } = options;
76
+ const { prefix = "" } = options;
77
+ let exclusive = options.start?.exclusive;
78
+ const isIndexScan = isScanIndexOptions(options);
79
+ for await (const entry of iter) {
80
+ const key = entry[0];
81
+ if (!(isIndexScan ? key[0] : key).startsWith(prefix)) return;
82
+ if (exclusive) {
83
+ exclusive = true;
84
+ if (isIndexScan) {
85
+ if (shouldSkipIndexScan(key, options.start.key)) continue;
86
+ } else if (shouldSkipNonIndexScan(key, options.start.key)) continue;
87
+ }
88
+ yield toValue(entry);
89
+ if (--limit === 0) {
90
+ if (!isIndexScan) onLimitKey(key);
91
+ return;
92
+ }
93
+ }
110
94
  }
111
95
  function shouldSkipIndexScan(key, startKey) {
112
- const [secondaryStartKey, primaryStartKey] = normalizeScanOptionIndexedStartKey(startKey);
113
- const [secondaryKey, primaryKey] = normalizeScanOptionIndexedStartKey(key);
114
- if (secondaryKey !== secondaryStartKey) {
115
- return false;
116
- }
117
- if (primaryStartKey === void 0) {
118
- return true;
119
- }
120
- return primaryKey === primaryStartKey;
96
+ const [secondaryStartKey, primaryStartKey] = normalizeScanOptionIndexedStartKey(startKey);
97
+ const [secondaryKey, primaryKey] = normalizeScanOptionIndexedStartKey(key);
98
+ if (secondaryKey !== secondaryStartKey) return false;
99
+ if (primaryStartKey === void 0) return true;
100
+ return primaryKey === primaryStartKey;
121
101
  }
122
102
  function shouldSkipNonIndexScan(key, startKey) {
123
- return key === startKey;
103
+ return key === startKey;
124
104
  }
125
105
  function fromKeyForIndexScanInternal(options) {
126
- const { prefix, start } = options;
127
- let prefix2 = "";
128
- if (prefix !== void 0) {
129
- prefix2 = encodeIndexScanKey(prefix, void 0);
130
- }
131
- if (!start) {
132
- return prefix2;
133
- }
134
- const { key } = start;
135
- const [secondary, primary] = normalizeScanOptionIndexedStartKey(key);
136
- const startKey = encodeIndexScanKey(secondary, primary);
137
- if (greaterThan(startKey, prefix2)) {
138
- return startKey;
139
- }
140
- return prefix2;
106
+ const { prefix, start } = options;
107
+ let prefix2 = "";
108
+ if (prefix !== void 0) prefix2 = encodeIndexScanKey(prefix, void 0);
109
+ if (!start) return prefix2;
110
+ const { key } = start;
111
+ const [secondary, primary] = normalizeScanOptionIndexedStartKey(key);
112
+ const startKey = encodeIndexScanKey(secondary, primary);
113
+ if (greaterThan(startKey, prefix2)) return startKey;
114
+ return prefix2;
141
115
  }
142
- export {
143
- ScanResultImpl,
144
- fromKeyForIndexScanInternal
145
- };
146
- //# sourceMappingURL=scan-iterator.js.map
116
+ //#endregion
117
+ export { ScanResultImpl, fromKeyForIndexScanInternal };
118
+
119
+ //# sourceMappingURL=scan-iterator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan-iterator.js","sources":["../../../../replicache/src/scan-iterator.ts"],"sourcesContent":["import {greaterThan} from 'compare-utf8';\nimport type {ReadonlyJSONValue} from '../../shared/src/json.ts';\nimport {asyncIterableToArray} from './async-iterable-to-array.ts';\nimport {type IndexKey, encodeIndexScanKey} from './db/index.ts';\nimport type {IterableUnion} from './iterable-union.ts';\nimport {\n type KeyTypeForScanOptions,\n type ScanIndexOptions,\n type ScanOptionIndexedStartKey,\n type ScanOptions,\n isScanIndexOptions,\n normalizeScanOptionIndexedStartKey,\n} from './scan-options.ts';\nimport {type Closed, throwIfClosed} from './transaction-closed-error.ts';\nimport {type EntryForOptions, fromKeyForNonIndexScan} from './transactions.ts';\n\ntype ScanKey = string | IndexKey;\n\ntype ToValue<Options extends ScanOptions, Value> = (\n entry: EntryForOptions<Options, ReadonlyJSONValue>,\n) => Value;\n\n/**\n * This class is used for the results of {@link ReadTransaction.scan | scan}. It\n * implements `AsyncIterable<JSONValue>` which allows you to use it in a `for\n * await` loop. There are also methods to iterate over the {@link keys},\n * {@link entries} or {@link values}.\n */\nexport class ScanResultImpl<Options extends ScanOptions, V>\n implements ScanResult<KeyTypeForScanOptions<Options>, V>\n{\n readonly #iter: AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>;\n readonly #options: Options;\n readonly #dbDelegateOptions: Closed;\n readonly #onLimitKey: (inclusiveLimitKey: string) => void;\n\n constructor(\n iter: AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>,\n options: Options,\n dbDelegateOptions: Closed,\n onLimitKey: (inclusiveLimitKey: string) => void,\n ) {\n this.#iter = iter;\n this.#options = options;\n this.#dbDelegateOptions = dbDelegateOptions;\n this.#onLimitKey = onLimitKey;\n }\n\n /** The default AsyncIterable. This is the same as {@link values}. */\n [Symbol.asyncIterator](): AsyncIterableIteratorToArray<V> {\n return this.values();\n }\n\n /** Async iterator over the values of the {@link ReadTransaction.scan | scan} call. */\n values(): AsyncIterableIteratorToArray<V> {\n return new AsyncIterableIteratorToArrayWrapperImpl(\n this.#newIterator(e => e[1] as V),\n );\n }\n\n /**\n * Async iterator over the keys of the {@link ReadTransaction.scan | scan}\n * call. If the {@link ReadTransaction.scan | scan} is over an index the key\n * is a tuple of `[secondaryKey: string, primaryKey]`\n */\n keys(): AsyncIterableIteratorToArray<KeyTypeForScanOptions<Options>> {\n type K = KeyTypeForScanOptions<Options>;\n return new AsyncIterableIteratorToArrayWrapperImpl<K>(\n this.#newIterator<K>(e => e[0] as K),\n );\n }\n\n /**\n * Async iterator over the entries of the {@link ReadTransaction.scan | scan}\n * call. An entry is a tuple of key values. If the\n * {@link ReadTransaction.scan | scan} is over an index the key is a tuple of\n * `[secondaryKey: string, primaryKey]`\n */\n entries(): AsyncIterableIteratorToArray<\n readonly [KeyTypeForScanOptions<Options>, V]\n > {\n type Key = KeyTypeForScanOptions<Options>;\n type Entry = readonly [Key, V];\n return new AsyncIterableIteratorToArrayWrapperImpl(\n this.#newIterator<Entry>(e => [e[0] as Key, e[1] as V]),\n );\n }\n\n /** Returns all the values as an array. Same as `values().toArray()` */\n toArray(): Promise<V[]> {\n return this.values().toArray();\n }\n\n #newIterator<T>(toValue: ToValue<Options, T>): AsyncIterableIterator<T> {\n return scanIterator(\n toValue,\n this.#iter,\n this.#options,\n this.#dbDelegateOptions,\n this.#onLimitKey,\n );\n }\n}\n\nexport interface ScanResult<K extends ScanKey, V> extends AsyncIterable<V> {\n /** The default AsyncIterable. This is the same as {@link values}. */\n [Symbol.asyncIterator](): AsyncIterableIteratorToArray<V>;\n\n /** Async iterator over the values of the {@link ReadTransaction.scan | scan} call. */\n values(): AsyncIterableIteratorToArray<V>;\n\n /**\n * Async iterator over the keys of the {@link ReadTransaction.scan | scan}\n * call. If the {@link ReadTransaction.scan | scan} is over an index the key\n * is a tuple of `[secondaryKey: string, primaryKey]`\n */\n keys(): AsyncIterableIteratorToArray<K>;\n\n /**\n * Async iterator over the entries of the {@link ReadTransaction.scan | scan}\n * call. An entry is a tuple of key values. If the\n * {@link ReadTransaction.scan | scan} is over an index the key is a tuple of\n * `[secondaryKey: string, primaryKey]`\n */\n entries(): AsyncIterableIteratorToArray<readonly [K, V]>;\n\n /** Returns all the values as an array. Same as `values().toArray()` */\n toArray(): Promise<V[]>;\n}\n\n/**\n * An interface that adds a {@link toArray} method to `AsyncIterableIterator`.\n *\n * Usage:\n *\n * ```ts\n * const keys: string[] = await rep.scan().keys().toArray();\n * ```\n */\nexport interface AsyncIterableIteratorToArray<V>\n extends AsyncIterableIterator<V> {\n toArray(): Promise<V[]>;\n}\n\nclass AsyncIterableIteratorToArrayWrapperImpl<V>\n implements AsyncIterableIterator<V>\n{\n readonly #it: AsyncIterableIterator<V>;\n\n constructor(it: AsyncIterableIterator<V>) {\n this.#it = it;\n }\n\n next() {\n return this.#it.next();\n }\n\n [Symbol.asyncIterator](): AsyncIterableIterator<V> {\n return this.#it[Symbol.asyncIterator]();\n }\n\n toArray(): Promise<V[]> {\n return asyncIterableToArray(this.#it);\n }\n}\n\nasync function* scanIterator<Options extends ScanOptions, Value>(\n toValue: ToValue<Options, Value>,\n iter: AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>,\n options: Options,\n closed: Closed,\n onLimitKey: (inclusiveLimitKey: string) => void,\n): AsyncIterableIterator<Value> {\n throwIfClosed(closed);\n\n let {limit = Infinity} = options;\n const {prefix = ''} = options;\n let exclusive = options.start?.exclusive;\n\n const isIndexScan = isScanIndexOptions(options);\n\n // iter has already been moved to the first entry\n for await (const entry of iter) {\n const key = entry[0];\n const keyToMatch: string = isIndexScan ? key[0] : (key as string);\n if (!keyToMatch.startsWith(prefix)) {\n return;\n }\n\n if (exclusive) {\n exclusive = true;\n if (isIndexScan) {\n // oxlint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (shouldSkipIndexScan(key as IndexKey, options.start!.key)) {\n continue;\n }\n } else {\n // oxlint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (shouldSkipNonIndexScan(key as string, options.start!.key)) {\n continue;\n }\n }\n }\n\n yield toValue(entry);\n\n if (--limit === 0) {\n // We do not do the limit optimization for index scans in subscriptions.\n if (!isIndexScan) {\n onLimitKey(key as string);\n }\n return;\n }\n }\n}\n\nfunction shouldSkipIndexScan(\n key: IndexKey,\n startKey: ScanOptionIndexedStartKey,\n): boolean {\n const [secondaryStartKey, primaryStartKey] =\n normalizeScanOptionIndexedStartKey(startKey);\n const [secondaryKey, primaryKey] = normalizeScanOptionIndexedStartKey(key);\n if (secondaryKey !== secondaryStartKey) {\n return false;\n }\n if (primaryStartKey === undefined) {\n return true;\n }\n return primaryKey === primaryStartKey;\n}\n\nfunction shouldSkipNonIndexScan(key: string, startKey: string): boolean {\n return key === startKey;\n}\n\nexport type Entry<V> = readonly [key: string, value: V];\n\n/**\n * This is called when doing a {@link ReadTransaction.scan | scan} without an\n * `indexName`.\n *\n * @param fromKey The `fromKey` is computed by `scan` and is the key of the\n * first entry to return in the iterator. It is based on `prefix` and\n * `start.key` of the {@link ScanNoIndexOptions}.\n */\nexport type GetScanIterator = (\n fromKey: string,\n) => IterableUnion<Entry<ReadonlyJSONValue>>;\n\n/**\n * When using {@link makeScanResult} this is the type used for the function called when doing a {@link ReadTransaction.scan | scan} with an\n * `indexName`.\n *\n * @param indexName The name of the index we are scanning over.\n * @param fromSecondaryKey The `fromSecondaryKey` is computed by `scan` and is\n * the secondary key of the first entry to return in the iterator. It is based\n * on `prefix` and `start.key` of the {@link ScanIndexOptions}.\n * @param fromPrimaryKey The `fromPrimaryKey` is computed by `scan` and is the\n * primary key of the first entry to return in the iterator. It is based on\n * `prefix` and `start.key` of the {@link ScanIndexOptions}.\n */\nexport type GetIndexScanIterator = (\n indexName: string,\n fromSecondaryKey: string,\n fromPrimaryKey: string | undefined,\n) => IterableUnion<readonly [key: IndexKey, value: ReadonlyJSONValue]>;\n\n/**\n * A helper function that makes it easier to implement {@link ReadTransaction.scan}\n * with a custom backend.\n *\n * If you are implementing a custom backend and have an in memory pending async\n * iterable we provide two helper functions to make it easier to merge these\n * together. {@link mergeAsyncIterables} and {@link filterAsyncIterable}.\n *\n * For example:\n *\n * ```ts\n * const scanResult = makeScanResult(\n * options,\n * options.indexName\n * ? () => {\n * throw Error('not implemented');\n * }\n * : fromKey => {\n * const persisted: AsyncIterable<Entry<ReadonlyJSONValue>> = ...;\n * const pending: AsyncIterable<Entry<ReadonlyJSONValue | undefined>> = ...;\n * const iter = await mergeAsyncIterables(persisted, pending);\n * const filteredIter = await filterAsyncIterable(\n * iter,\n * entry => entry[1] !== undefined,\n * );\n * return filteredIter;\n * },\n * );\n * ```\n */\nexport function makeScanResult<Options extends ScanOptions>(\n options: Options,\n getScanIterator: Options extends ScanIndexOptions\n ? GetIndexScanIterator\n : GetScanIterator,\n): ScanResult<KeyTypeForScanOptions<Options>, ReadonlyJSONValue> {\n type AsyncIter = AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>;\n\n if (isScanIndexOptions(options)) {\n const [fromSecondaryKey, fromPrimaryKey] = fromKeyForIndexScan(options);\n return new ScanResultImpl(\n (getScanIterator as GetIndexScanIterator)(\n options.indexName,\n fromSecondaryKey,\n fromPrimaryKey,\n ) as AsyncIter,\n options,\n {closed: false},\n _ => {\n // noop\n },\n );\n }\n const fromKey = fromKeyForNonIndexScan(options);\n return new ScanResultImpl(\n (getScanIterator as GetScanIterator)(fromKey) as AsyncIter,\n options,\n {closed: false},\n _ => {\n // noop\n },\n );\n}\n\nexport function fromKeyForIndexScan(\n options: ScanIndexOptions,\n): readonly [secondary: string, primary?: string | undefined] {\n const {prefix, start} = options;\n const prefixNormalized: [secondary: string, primary?: string | undefined] = [\n prefix ?? '',\n undefined,\n ];\n\n if (!start) {\n return prefixNormalized;\n }\n\n const startKeyNormalized = normalizeScanOptionIndexedStartKey(start.key);\n if (greaterThan(startKeyNormalized[0], prefixNormalized[0])) {\n return startKeyNormalized;\n }\n if (\n startKeyNormalized[0] === prefixNormalized[0] &&\n startKeyNormalized[1] !== undefined\n ) {\n return startKeyNormalized;\n }\n\n return prefixNormalized;\n}\n\nexport function fromKeyForIndexScanInternal(options: ScanIndexOptions): string {\n const {prefix, start} = options;\n let prefix2 = '';\n if (prefix !== undefined) {\n prefix2 = encodeIndexScanKey(prefix, undefined);\n }\n if (!start) {\n return prefix2;\n }\n\n const {key} = start;\n const [secondary, primary] = normalizeScanOptionIndexedStartKey(key);\n const startKey = encodeIndexScanKey(secondary, primary);\n\n if (greaterThan(startKey, prefix2)) {\n return startKey;\n }\n\n return prefix2;\n}\n"],"names":[],"mappings":";;;;;;AA4BO,MAAM,eAEb;AAAA,EACW;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YACE,MACA,SACA,mBACA,YACA;AACA,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,qBAAqB;AAC1B,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA,EAGA,CAAC,OAAO,aAAa,IAAqC;AACxD,WAAO,KAAK,OAAA;AAAA,EACd;AAAA;AAAA,EAGA,SAA0C;AACxC,WAAO,IAAI;AAAA,MACT,KAAK,aAAa,CAAA,MAAK,EAAE,CAAC,CAAM;AAAA,IAAA;AAAA,EAEpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAqE;AAEnE,WAAO,IAAI;AAAA,MACT,KAAK,aAAgB,CAAA,MAAK,EAAE,CAAC,CAAM;AAAA,IAAA;AAAA,EAEvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAEE;AAGA,WAAO,IAAI;AAAA,MACT,KAAK,aAAoB,CAAA,MAAK,CAAC,EAAE,CAAC,GAAU,EAAE,CAAC,CAAM,CAAC;AAAA,IAAA;AAAA,EAE1D;AAAA;AAAA,EAGA,UAAwB;AACtB,WAAO,KAAK,OAAA,EAAS,QAAA;AAAA,EACvB;AAAA,EAEA,aAAgB,SAAwD;AACtE,WAAO;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,EAET;AACF;AA0CA,MAAM,wCAEN;AAAA,EACW;AAAA,EAET,YAAY,IAA8B;AACxC,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,OAAO;AACL,WAAO,KAAK,IAAI,KAAA;AAAA,EAClB;AAAA,EAEA,CAAC,OAAO,aAAa,IAA8B;AACjD,WAAO,KAAK,IAAI,OAAO,aAAa,EAAA;AAAA,EACtC;AAAA,EAEA,UAAwB;AACtB,WAAO,qBAAqB,KAAK,GAAG;AAAA,EACtC;AACF;AAEA,gBAAgB,aACd,SACA,MACA,SACA,QACA,YAC8B;AAC9B,gBAAc,MAAM;AAEpB,MAAI,EAAC,QAAQ,SAAA,IAAY;AACzB,QAAM,EAAC,SAAS,GAAA,IAAM;AACtB,MAAI,YAAY,QAAQ,OAAO;AAE/B,QAAM,cAAc,mBAAmB,OAAO;AAG9C,mBAAiB,SAAS,MAAM;AAC9B,UAAM,MAAM,MAAM,CAAC;AACnB,UAAM,aAAqB,cAAc,IAAI,CAAC,IAAK;AACnD,QAAI,CAAC,WAAW,WAAW,MAAM,GAAG;AAClC;AAAA,IACF;AAEA,QAAI,WAAW;AACb,kBAAY;AACZ,UAAI,aAAa;AAEf,YAAI,oBAAoB,KAAiB,QAAQ,MAAO,GAAG,GAAG;AAC5D;AAAA,QACF;AAAA,MACF,OAAO;AAEL,YAAI,uBAAuB,KAAe,QAAQ,MAAO,GAAG,GAAG;AAC7D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,KAAK;AAEnB,QAAI,EAAE,UAAU,GAAG;AAEjB,UAAI,CAAC,aAAa;AAChB,mBAAW,GAAa;AAAA,MAC1B;AACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,oBACP,KACA,UACS;AACT,QAAM,CAAC,mBAAmB,eAAe,IACvC,mCAAmC,QAAQ;AAC7C,QAAM,CAAC,cAAc,UAAU,IAAI,mCAAmC,GAAG;AACzE,MAAI,iBAAiB,mBAAmB;AACtC,WAAO;AAAA,EACT;AACA,MAAI,oBAAoB,QAAW;AACjC,WAAO;AAAA,EACT;AACA,SAAO,eAAe;AACxB;AAEA,SAAS,uBAAuB,KAAa,UAA2B;AACtE,SAAO,QAAQ;AACjB;AA6HO,SAAS,4BAA4B,SAAmC;AAC7E,QAAM,EAAC,QAAQ,MAAA,IAAS;AACxB,MAAI,UAAU;AACd,MAAI,WAAW,QAAW;AACxB,cAAU,mBAAmB,QAAQ,MAAS;AAAA,EAChD;AACA,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,EAAC,QAAO;AACd,QAAM,CAAC,WAAW,OAAO,IAAI,mCAAmC,GAAG;AACnE,QAAM,WAAW,mBAAmB,WAAW,OAAO;AAEtD,MAAI,YAAY,UAAU,OAAO,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;"}
1
+ {"version":3,"file":"scan-iterator.js","names":["#iter","#options","#dbDelegateOptions","#onLimitKey","#newIterator","#it"],"sources":["../../../../replicache/src/scan-iterator.ts"],"sourcesContent":["import {greaterThan} from 'compare-utf8';\nimport type {ReadonlyJSONValue} from '../../shared/src/json.ts';\nimport {asyncIterableToArray} from './async-iterable-to-array.ts';\nimport {type IndexKey, encodeIndexScanKey} from './db/index.ts';\nimport type {IterableUnion} from './iterable-union.ts';\nimport {\n type KeyTypeForScanOptions,\n type ScanIndexOptions,\n type ScanOptionIndexedStartKey,\n type ScanOptions,\n isScanIndexOptions,\n normalizeScanOptionIndexedStartKey,\n} from './scan-options.ts';\nimport {type Closed, throwIfClosed} from './transaction-closed-error.ts';\nimport {type EntryForOptions, fromKeyForNonIndexScan} from './transactions.ts';\n\ntype ScanKey = string | IndexKey;\n\ntype ToValue<Options extends ScanOptions, Value> = (\n entry: EntryForOptions<Options, ReadonlyJSONValue>,\n) => Value;\n\n/**\n * This class is used for the results of {@link ReadTransaction.scan | scan}. It\n * implements `AsyncIterable<JSONValue>` which allows you to use it in a `for\n * await` loop. There are also methods to iterate over the {@link keys},\n * {@link entries} or {@link values}.\n */\nexport class ScanResultImpl<\n Options extends ScanOptions,\n V,\n> implements ScanResult<KeyTypeForScanOptions<Options>, V> {\n readonly #iter: AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>;\n readonly #options: Options;\n readonly #dbDelegateOptions: Closed;\n readonly #onLimitKey: (inclusiveLimitKey: string) => void;\n\n constructor(\n iter: AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>,\n options: Options,\n dbDelegateOptions: Closed,\n onLimitKey: (inclusiveLimitKey: string) => void,\n ) {\n this.#iter = iter;\n this.#options = options;\n this.#dbDelegateOptions = dbDelegateOptions;\n this.#onLimitKey = onLimitKey;\n }\n\n /** The default AsyncIterable. This is the same as {@link values}. */\n [Symbol.asyncIterator](): AsyncIterableIteratorToArray<V> {\n return this.values();\n }\n\n /** Async iterator over the values of the {@link ReadTransaction.scan | scan} call. */\n values(): AsyncIterableIteratorToArray<V> {\n return new AsyncIterableIteratorToArrayWrapperImpl(\n this.#newIterator(e => e[1] as V),\n );\n }\n\n /**\n * Async iterator over the keys of the {@link ReadTransaction.scan | scan}\n * call. If the {@link ReadTransaction.scan | scan} is over an index the key\n * is a tuple of `[secondaryKey: string, primaryKey]`\n */\n keys(): AsyncIterableIteratorToArray<KeyTypeForScanOptions<Options>> {\n type K = KeyTypeForScanOptions<Options>;\n return new AsyncIterableIteratorToArrayWrapperImpl<K>(\n this.#newIterator<K>(e => e[0] as K),\n );\n }\n\n /**\n * Async iterator over the entries of the {@link ReadTransaction.scan | scan}\n * call. An entry is a tuple of key values. If the\n * {@link ReadTransaction.scan | scan} is over an index the key is a tuple of\n * `[secondaryKey: string, primaryKey]`\n */\n entries(): AsyncIterableIteratorToArray<\n readonly [KeyTypeForScanOptions<Options>, V]\n > {\n type Key = KeyTypeForScanOptions<Options>;\n type Entry = readonly [Key, V];\n return new AsyncIterableIteratorToArrayWrapperImpl(\n this.#newIterator<Entry>(e => [e[0] as Key, e[1] as V]),\n );\n }\n\n /** Returns all the values as an array. Same as `values().toArray()` */\n toArray(): Promise<V[]> {\n return this.values().toArray();\n }\n\n #newIterator<T>(toValue: ToValue<Options, T>): AsyncIterableIterator<T> {\n return scanIterator(\n toValue,\n this.#iter,\n this.#options,\n this.#dbDelegateOptions,\n this.#onLimitKey,\n );\n }\n}\n\nexport interface ScanResult<K extends ScanKey, V> extends AsyncIterable<V> {\n /** The default AsyncIterable. This is the same as {@link values}. */\n [Symbol.asyncIterator](): AsyncIterableIteratorToArray<V>;\n\n /** Async iterator over the values of the {@link ReadTransaction.scan | scan} call. */\n values(): AsyncIterableIteratorToArray<V>;\n\n /**\n * Async iterator over the keys of the {@link ReadTransaction.scan | scan}\n * call. If the {@link ReadTransaction.scan | scan} is over an index the key\n * is a tuple of `[secondaryKey: string, primaryKey]`\n */\n keys(): AsyncIterableIteratorToArray<K>;\n\n /**\n * Async iterator over the entries of the {@link ReadTransaction.scan | scan}\n * call. An entry is a tuple of key values. If the\n * {@link ReadTransaction.scan | scan} is over an index the key is a tuple of\n * `[secondaryKey: string, primaryKey]`\n */\n entries(): AsyncIterableIteratorToArray<readonly [K, V]>;\n\n /** Returns all the values as an array. Same as `values().toArray()` */\n toArray(): Promise<V[]>;\n}\n\n/**\n * An interface that adds a {@link toArray} method to `AsyncIterableIterator`.\n *\n * Usage:\n *\n * ```ts\n * const keys: string[] = await rep.scan().keys().toArray();\n * ```\n */\nexport interface AsyncIterableIteratorToArray<\n V,\n> extends AsyncIterableIterator<V> {\n toArray(): Promise<V[]>;\n}\n\nclass AsyncIterableIteratorToArrayWrapperImpl<\n V,\n> implements AsyncIterableIterator<V> {\n readonly #it: AsyncIterableIterator<V>;\n\n constructor(it: AsyncIterableIterator<V>) {\n this.#it = it;\n }\n\n next() {\n return this.#it.next();\n }\n\n [Symbol.asyncIterator](): AsyncIterableIterator<V> {\n return this.#it[Symbol.asyncIterator]();\n }\n\n toArray(): Promise<V[]> {\n return asyncIterableToArray(this.#it);\n }\n}\n\nasync function* scanIterator<Options extends ScanOptions, Value>(\n toValue: ToValue<Options, Value>,\n iter: AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>,\n options: Options,\n closed: Closed,\n onLimitKey: (inclusiveLimitKey: string) => void,\n): AsyncIterableIterator<Value> {\n throwIfClosed(closed);\n\n let {limit = Infinity} = options;\n const {prefix = ''} = options;\n let exclusive = options.start?.exclusive;\n\n const isIndexScan = isScanIndexOptions(options);\n\n // iter has already been moved to the first entry\n for await (const entry of iter) {\n const key = entry[0];\n const keyToMatch: string = isIndexScan ? key[0] : (key as string);\n if (!keyToMatch.startsWith(prefix)) {\n return;\n }\n\n if (exclusive) {\n exclusive = true;\n if (isIndexScan) {\n // oxlint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (shouldSkipIndexScan(key as IndexKey, options.start!.key)) {\n continue;\n }\n } else {\n // oxlint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (shouldSkipNonIndexScan(key as string, options.start!.key)) {\n continue;\n }\n }\n }\n\n yield toValue(entry);\n\n if (--limit === 0) {\n // We do not do the limit optimization for index scans in subscriptions.\n if (!isIndexScan) {\n onLimitKey(key as string);\n }\n return;\n }\n }\n}\n\nfunction shouldSkipIndexScan(\n key: IndexKey,\n startKey: ScanOptionIndexedStartKey,\n): boolean {\n const [secondaryStartKey, primaryStartKey] =\n normalizeScanOptionIndexedStartKey(startKey);\n const [secondaryKey, primaryKey] = normalizeScanOptionIndexedStartKey(key);\n if (secondaryKey !== secondaryStartKey) {\n return false;\n }\n if (primaryStartKey === undefined) {\n return true;\n }\n return primaryKey === primaryStartKey;\n}\n\nfunction shouldSkipNonIndexScan(key: string, startKey: string): boolean {\n return key === startKey;\n}\n\nexport type Entry<V> = readonly [key: string, value: V];\n\n/**\n * This is called when doing a {@link ReadTransaction.scan | scan} without an\n * `indexName`.\n *\n * @param fromKey The `fromKey` is computed by `scan` and is the key of the\n * first entry to return in the iterator. It is based on `prefix` and\n * `start.key` of the {@link ScanNoIndexOptions}.\n */\nexport type GetScanIterator = (\n fromKey: string,\n) => IterableUnion<Entry<ReadonlyJSONValue>>;\n\n/**\n * When using {@link makeScanResult} this is the type used for the function called when doing a {@link ReadTransaction.scan | scan} with an\n * `indexName`.\n *\n * @param indexName The name of the index we are scanning over.\n * @param fromSecondaryKey The `fromSecondaryKey` is computed by `scan` and is\n * the secondary key of the first entry to return in the iterator. It is based\n * on `prefix` and `start.key` of the {@link ScanIndexOptions}.\n * @param fromPrimaryKey The `fromPrimaryKey` is computed by `scan` and is the\n * primary key of the first entry to return in the iterator. It is based on\n * `prefix` and `start.key` of the {@link ScanIndexOptions}.\n */\nexport type GetIndexScanIterator = (\n indexName: string,\n fromSecondaryKey: string,\n fromPrimaryKey: string | undefined,\n) => IterableUnion<readonly [key: IndexKey, value: ReadonlyJSONValue]>;\n\n/**\n * A helper function that makes it easier to implement {@link ReadTransaction.scan}\n * with a custom backend.\n *\n * If you are implementing a custom backend and have an in memory pending async\n * iterable we provide two helper functions to make it easier to merge these\n * together. {@link mergeAsyncIterables} and {@link filterAsyncIterable}.\n *\n * For example:\n *\n * ```ts\n * const scanResult = makeScanResult(\n * options,\n * options.indexName\n * ? () => {\n * throw Error('not implemented');\n * }\n * : fromKey => {\n * const persisted: AsyncIterable<Entry<ReadonlyJSONValue>> = ...;\n * const pending: AsyncIterable<Entry<ReadonlyJSONValue | undefined>> = ...;\n * const iter = await mergeAsyncIterables(persisted, pending);\n * const filteredIter = await filterAsyncIterable(\n * iter,\n * entry => entry[1] !== undefined,\n * );\n * return filteredIter;\n * },\n * );\n * ```\n */\nexport function makeScanResult<Options extends ScanOptions>(\n options: Options,\n getScanIterator: Options extends ScanIndexOptions\n ? GetIndexScanIterator\n : GetScanIterator,\n): ScanResult<KeyTypeForScanOptions<Options>, ReadonlyJSONValue> {\n type AsyncIter = AsyncIterable<EntryForOptions<Options, ReadonlyJSONValue>>;\n\n if (isScanIndexOptions(options)) {\n const [fromSecondaryKey, fromPrimaryKey] = fromKeyForIndexScan(options);\n return new ScanResultImpl(\n (getScanIterator as GetIndexScanIterator)(\n options.indexName,\n fromSecondaryKey,\n fromPrimaryKey,\n ) as AsyncIter,\n options,\n {closed: false},\n _ => {\n // noop\n },\n );\n }\n const fromKey = fromKeyForNonIndexScan(options);\n return new ScanResultImpl(\n (getScanIterator as GetScanIterator)(fromKey) as AsyncIter,\n options,\n {closed: false},\n _ => {\n // noop\n },\n );\n}\n\nexport function fromKeyForIndexScan(\n options: ScanIndexOptions,\n): readonly [secondary: string, primary?: string | undefined] {\n const {prefix, start} = options;\n const prefixNormalized: [secondary: string, primary?: string | undefined] = [\n prefix ?? '',\n undefined,\n ];\n\n if (!start) {\n return prefixNormalized;\n }\n\n const startKeyNormalized = normalizeScanOptionIndexedStartKey(start.key);\n if (greaterThan(startKeyNormalized[0], prefixNormalized[0])) {\n return startKeyNormalized;\n }\n if (\n startKeyNormalized[0] === prefixNormalized[0] &&\n startKeyNormalized[1] !== undefined\n ) {\n return startKeyNormalized;\n }\n\n return prefixNormalized;\n}\n\nexport function fromKeyForIndexScanInternal(options: ScanIndexOptions): string {\n const {prefix, start} = options;\n let prefix2 = '';\n if (prefix !== undefined) {\n prefix2 = encodeIndexScanKey(prefix, undefined);\n }\n if (!start) {\n return prefix2;\n }\n\n const {key} = start;\n const [secondary, primary] = normalizeScanOptionIndexedStartKey(key);\n const startKey = encodeIndexScanKey(secondary, primary);\n\n if (greaterThan(startKey, prefix2)) {\n return startKey;\n }\n\n return prefix2;\n}\n"],"mappings":";;;;;;;;;;;;;AA4BA,IAAa,iBAAb,MAG2D;CACzD;CACA;CACA;CACA;CAEA,YACE,MACA,SACA,mBACA,YACA;AACA,QAAA,OAAa;AACb,QAAA,UAAgB;AAChB,QAAA,oBAA0B;AAC1B,QAAA,aAAmB;;;CAIrB,CAAC,OAAO,iBAAkD;AACxD,SAAO,KAAK,QAAQ;;;CAItB,SAA0C;AACxC,SAAO,IAAI,wCACT,MAAA,aAAkB,MAAK,EAAE,GAAQ,CAClC;;;;;;;CAQH,OAAqE;AAEnE,SAAO,IAAI,wCACT,MAAA,aAAqB,MAAK,EAAE,GAAQ,CACrC;;;;;;;;CASH,UAEE;AAGA,SAAO,IAAI,wCACT,MAAA,aAAyB,MAAK,CAAC,EAAE,IAAW,EAAE,GAAQ,CAAC,CACxD;;;CAIH,UAAwB;AACtB,SAAO,KAAK,QAAQ,CAAC,SAAS;;CAGhC,aAAgB,SAAwD;AACtE,SAAO,aACL,SACA,MAAA,MACA,MAAA,SACA,MAAA,mBACA,MAAA,WACD;;;AA6CL,IAAM,0CAAN,MAEsC;CACpC;CAEA,YAAY,IAA8B;AACxC,QAAA,KAAW;;CAGb,OAAO;AACL,SAAO,MAAA,GAAS,MAAM;;CAGxB,CAAC,OAAO,iBAA2C;AACjD,SAAO,MAAA,GAAS,OAAO,gBAAgB;;CAGzC,UAAwB;AACtB,SAAO,qBAAqB,MAAA,GAAS;;;AAIzC,gBAAgB,aACd,SACA,MACA,SACA,QACA,YAC8B;AAC9B,eAAc,OAAO;CAErB,IAAI,EAAC,QAAQ,aAAY;CACzB,MAAM,EAAC,SAAS,OAAM;CACtB,IAAI,YAAY,QAAQ,OAAO;CAE/B,MAAM,cAAc,mBAAmB,QAAQ;AAG/C,YAAW,MAAM,SAAS,MAAM;EAC9B,MAAM,MAAM,MAAM;AAElB,MAAI,EADuB,cAAc,IAAI,KAAM,KACnC,WAAW,OAAO,CAChC;AAGF,MAAI,WAAW;AACb,eAAY;AACZ,OAAI;QAEE,oBAAoB,KAAiB,QAAQ,MAAO,IAAI,CAC1D;cAIE,uBAAuB,KAAe,QAAQ,MAAO,IAAI,CAC3D;;AAKN,QAAM,QAAQ,MAAM;AAEpB,MAAI,EAAE,UAAU,GAAG;AAEjB,OAAI,CAAC,YACH,YAAW,IAAc;AAE3B;;;;AAKN,SAAS,oBACP,KACA,UACS;CACT,MAAM,CAAC,mBAAmB,mBACxB,mCAAmC,SAAS;CAC9C,MAAM,CAAC,cAAc,cAAc,mCAAmC,IAAI;AAC1E,KAAI,iBAAiB,kBACnB,QAAO;AAET,KAAI,oBAAoB,KAAA,EACtB,QAAO;AAET,QAAO,eAAe;;AAGxB,SAAS,uBAAuB,KAAa,UAA2B;AACtE,QAAO,QAAQ;;AA8HjB,SAAgB,4BAA4B,SAAmC;CAC7E,MAAM,EAAC,QAAQ,UAAS;CACxB,IAAI,UAAU;AACd,KAAI,WAAW,KAAA,EACb,WAAU,mBAAmB,QAAQ,KAAA,EAAU;AAEjD,KAAI,CAAC,MACH,QAAO;CAGT,MAAM,EAAC,QAAO;CACd,MAAM,CAAC,WAAW,WAAW,mCAAmC,IAAI;CACpE,MAAM,WAAW,mBAAmB,WAAW,QAAQ;AAEvD,KAAI,YAAY,UAAU,QAAQ,CAChC,QAAO;AAGT,QAAO"}
@@ -1,45 +1,39 @@
1
+ //#region ../replicache/src/scan-options.ts
2
+ /**
3
+ * Type narrowing of {@link ScanOptions}.
4
+ */
1
5
  function isScanIndexOptions(options) {
2
- return options.indexName !== void 0;
6
+ return options.indexName !== void 0;
3
7
  }
4
8
  function normalizeScanOptionIndexedStartKey(startKey) {
5
- if (typeof startKey === "string") {
6
- return [startKey];
7
- }
8
- return startKey;
9
+ if (typeof startKey === "string") return [startKey];
10
+ return startKey;
9
11
  }
10
12
  function toDbScanOptions(options) {
11
- if (!options) {
12
- return {};
13
- }
14
- let key;
15
- let exclusive;
16
- let primary;
17
- let secondary;
18
- if (options.start) {
19
- ({ key, exclusive } = options.start);
20
- if (options.indexName) {
21
- if (typeof key === "string") {
22
- secondary = key;
23
- } else {
24
- secondary = key[0];
25
- primary = key[1];
26
- }
27
- } else {
28
- primary = key;
29
- }
30
- }
31
- return {
32
- prefix: options.prefix,
33
- startSecondaryKey: secondary,
34
- startKey: primary,
35
- startExclusive: exclusive,
36
- limit: options.limit,
37
- indexName: options.indexName
38
- };
13
+ if (!options) return {};
14
+ let key;
15
+ let exclusive;
16
+ let primary;
17
+ let secondary;
18
+ if (options.start) {
19
+ ({key, exclusive} = options.start);
20
+ if (options.indexName) if (typeof key === "string") secondary = key;
21
+ else {
22
+ secondary = key[0];
23
+ primary = key[1];
24
+ }
25
+ else primary = key;
26
+ }
27
+ return {
28
+ prefix: options.prefix,
29
+ startSecondaryKey: secondary,
30
+ startKey: primary,
31
+ startExclusive: exclusive,
32
+ limit: options.limit,
33
+ indexName: options.indexName
34
+ };
39
35
  }
40
- export {
41
- isScanIndexOptions,
42
- normalizeScanOptionIndexedStartKey,
43
- toDbScanOptions
44
- };
45
- //# sourceMappingURL=scan-options.js.map
36
+ //#endregion
37
+ export { isScanIndexOptions, normalizeScanOptionIndexedStartKey, toDbScanOptions };
38
+
39
+ //# sourceMappingURL=scan-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan-options.js","sources":["../../../../replicache/src/scan-options.ts"],"sourcesContent":["import type {IndexKey} from './db/index.ts';\nimport type {ScanOptions as DbScanOptions} from './db/scan.ts';\n\n/**\n * Options for {@link ReadTransaction.scan | scan}\n */\nexport type ScanOptions = ScanIndexOptions | ScanNoIndexOptions;\n\n/**\n * Options for {@link ReadTransaction.scan | scan} when scanning over the entire key\n * space.\n */\nexport type ScanNoIndexOptions = {\n /** Only include keys starting with `prefix`. */\n prefix?: string | undefined;\n\n /** Only include up to `limit` results. */\n limit?: number | undefined;\n\n /** When provided the scan starts at this key. */\n start?:\n | {\n key: string;\n\n /** Whether the `key` is exclusive or inclusive. */\n exclusive?: boolean | undefined;\n }\n | undefined;\n};\n\n/**\n * Options for {@link ReadTransaction.scan | scan} when scanning over an index. When\n * scanning over and index you need to provide the `indexName` and the `start`\n * `key` is now a tuple consisting of secondary and primary key\n */\nexport type ScanIndexOptions = {\n /** Only include results starting with the *secondary* keys starting with `prefix`. */\n prefix?: string | undefined;\n\n /** Only include up to `limit` results. */\n limit?: number | undefined;\n\n /** Do a {@link ReadTransaction.scan | scan} over a named index. The `indexName` is\n * the name of an index defined when creating the {@link Replicache} instance using\n * {@link ReplicacheOptions.indexes}. */\n indexName: string;\n\n /** When provided the scan starts at this key. */\n start?:\n | {\n key: ScanOptionIndexedStartKey;\n\n /** Whether the `key` is exclusive or inclusive. */\n exclusive?: boolean | undefined;\n }\n | undefined;\n};\n\n/**\n * Type narrowing of {@link ScanOptions}.\n */\nexport function isScanIndexOptions(\n options: ScanOptions,\n): options is ScanIndexOptions {\n return (options as ScanIndexOptions).indexName !== undefined;\n}\n\n/**\n * If the options contains an `indexName` then the key type is a tuple of\n * secondary and primary.\n */\nexport type KeyTypeForScanOptions<O extends ScanOptions> =\n O extends ScanIndexOptions ? IndexKey : string;\n\n/**\n * The key to start scanning at.\n *\n * If you are scanning the primary index (i.e., you did not specify\n * `indexName`), then pass a single string for this field, which is the key in\n * the primary index to scan at.\n *\n * If you are scanning a secondary index (i.e., you specified `indexName`), then\n * use the tuple form. In that case, `secondary` is the secondary key to start\n * scanning at, and `primary` (if any) is the primary key to start scanning at.\n */\nexport type ScanOptionIndexedStartKey =\n | readonly [secondary: string, primary?: string | undefined]\n | string;\n\nexport function normalizeScanOptionIndexedStartKey(\n startKey: string | readonly [secondary: string, primary?: string | undefined],\n): readonly [secondary: string, primary?: string | undefined] {\n if (typeof startKey === 'string') {\n return [startKey];\n }\n return startKey;\n}\n\nexport function toDbScanOptions(options?: ScanOptions): DbScanOptions {\n if (!options) {\n return {};\n }\n let key: string | ScanOptionIndexedStartKey | undefined;\n let exclusive: boolean | undefined;\n let primary: string | undefined;\n let secondary: string | undefined;\n type MaybeIndexName = {indexName?: string};\n if (options.start) {\n ({key, exclusive} = options.start);\n if ((options as MaybeIndexName).indexName) {\n if (typeof key === 'string') {\n secondary = key;\n } else {\n secondary = key[0];\n primary = key[1];\n }\n } else {\n primary = key as string;\n }\n }\n\n return {\n prefix: options.prefix,\n startSecondaryKey: secondary,\n startKey: primary,\n startExclusive: exclusive,\n limit: options.limit,\n indexName: (options as MaybeIndexName).indexName,\n };\n}\n"],"names":[],"mappings":"AA6DO,SAAS,mBACd,SAC6B;AAC7B,SAAQ,QAA6B,cAAc;AACrD;AAwBO,SAAS,mCACd,UAC4D;AAC5D,MAAI,OAAO,aAAa,UAAU;AAChC,WAAO,CAAC,QAAQ;AAAA,EAClB;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,SAAsC;AACpE,MAAI,CAAC,SAAS;AACZ,WAAO,CAAA;AAAA,EACT;AACA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,QAAQ,OAAO;AACjB,KAAC,EAAC,KAAK,UAAA,IAAa,QAAQ;AAC5B,QAAK,QAA2B,WAAW;AACzC,UAAI,OAAO,QAAQ,UAAU;AAC3B,oBAAY;AAAA,MACd,OAAO;AACL,oBAAY,IAAI,CAAC;AACjB,kBAAU,IAAI,CAAC;AAAA,MACjB;AAAA,IACF,OAAO;AACL,gBAAU;AAAA,IACZ;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ,QAAQ;AAAA,IAChB,mBAAmB;AAAA,IACnB,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,OAAO,QAAQ;AAAA,IACf,WAAY,QAA2B;AAAA,EAAA;AAE3C;"}
1
+ {"version":3,"file":"scan-options.js","names":[],"sources":["../../../../replicache/src/scan-options.ts"],"sourcesContent":["import type {IndexKey} from './db/index.ts';\nimport type {ScanOptions as DbScanOptions} from './db/scan.ts';\n\n/**\n * Options for {@link ReadTransaction.scan | scan}\n */\nexport type ScanOptions = ScanIndexOptions | ScanNoIndexOptions;\n\n/**\n * Options for {@link ReadTransaction.scan | scan} when scanning over the entire key\n * space.\n */\nexport type ScanNoIndexOptions = {\n /** Only include keys starting with `prefix`. */\n prefix?: string | undefined;\n\n /** Only include up to `limit` results. */\n limit?: number | undefined;\n\n /** When provided the scan starts at this key. */\n start?:\n | {\n key: string;\n\n /** Whether the `key` is exclusive or inclusive. */\n exclusive?: boolean | undefined;\n }\n | undefined;\n};\n\n/**\n * Options for {@link ReadTransaction.scan | scan} when scanning over an index. When\n * scanning over and index you need to provide the `indexName` and the `start`\n * `key` is now a tuple consisting of secondary and primary key\n */\nexport type ScanIndexOptions = {\n /** Only include results starting with the *secondary* keys starting with `prefix`. */\n prefix?: string | undefined;\n\n /** Only include up to `limit` results. */\n limit?: number | undefined;\n\n /** Do a {@link ReadTransaction.scan | scan} over a named index. The `indexName` is\n * the name of an index defined when creating the {@link Replicache} instance using\n * {@link ReplicacheOptions.indexes}. */\n indexName: string;\n\n /** When provided the scan starts at this key. */\n start?:\n | {\n key: ScanOptionIndexedStartKey;\n\n /** Whether the `key` is exclusive or inclusive. */\n exclusive?: boolean | undefined;\n }\n | undefined;\n};\n\n/**\n * Type narrowing of {@link ScanOptions}.\n */\nexport function isScanIndexOptions(\n options: ScanOptions,\n): options is ScanIndexOptions {\n return (options as ScanIndexOptions).indexName !== undefined;\n}\n\n/**\n * If the options contains an `indexName` then the key type is a tuple of\n * secondary and primary.\n */\nexport type KeyTypeForScanOptions<O extends ScanOptions> =\n O extends ScanIndexOptions ? IndexKey : string;\n\n/**\n * The key to start scanning at.\n *\n * If you are scanning the primary index (i.e., you did not specify\n * `indexName`), then pass a single string for this field, which is the key in\n * the primary index to scan at.\n *\n * If you are scanning a secondary index (i.e., you specified `indexName`), then\n * use the tuple form. In that case, `secondary` is the secondary key to start\n * scanning at, and `primary` (if any) is the primary key to start scanning at.\n */\nexport type ScanOptionIndexedStartKey =\n | readonly [secondary: string, primary?: string | undefined]\n | string;\n\nexport function normalizeScanOptionIndexedStartKey(\n startKey: string | readonly [secondary: string, primary?: string | undefined],\n): readonly [secondary: string, primary?: string | undefined] {\n if (typeof startKey === 'string') {\n return [startKey];\n }\n return startKey;\n}\n\nexport function toDbScanOptions(options?: ScanOptions): DbScanOptions {\n if (!options) {\n return {};\n }\n let key: string | ScanOptionIndexedStartKey | undefined;\n let exclusive: boolean | undefined;\n let primary: string | undefined;\n let secondary: string | undefined;\n type MaybeIndexName = {indexName?: string};\n if (options.start) {\n ({key, exclusive} = options.start);\n if ((options as MaybeIndexName).indexName) {\n if (typeof key === 'string') {\n secondary = key;\n } else {\n secondary = key[0];\n primary = key[1];\n }\n } else {\n primary = key as string;\n }\n }\n\n return {\n prefix: options.prefix,\n startSecondaryKey: secondary,\n startKey: primary,\n startExclusive: exclusive,\n limit: options.limit,\n indexName: (options as MaybeIndexName).indexName,\n };\n}\n"],"mappings":";;;;AA6DA,SAAgB,mBACd,SAC6B;AAC7B,QAAQ,QAA6B,cAAc,KAAA;;AAyBrD,SAAgB,mCACd,UAC4D;AAC5D,KAAI,OAAO,aAAa,SACtB,QAAO,CAAC,SAAS;AAEnB,QAAO;;AAGT,SAAgB,gBAAgB,SAAsC;AACpE,KAAI,CAAC,QACH,QAAO,EAAE;CAEX,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AAEJ,KAAI,QAAQ,OAAO;AACjB,GAAC,CAAC,KAAK,aAAa,QAAQ;AAC5B,MAAK,QAA2B,UAC9B,KAAI,OAAO,QAAQ,SACjB,aAAY;OACP;AACL,eAAY,IAAI;AAChB,aAAU,IAAI;;MAGhB,WAAU;;AAId,QAAO;EACL,QAAQ,QAAQ;EAChB,mBAAmB;EACnB,UAAU;EACV,gBAAgB;EAChB,OAAO,QAAQ;EACf,WAAY,QAA2B;EACxC"}
@@ -1,12 +1,13 @@
1
+ //#region ../replicache/src/set-interval-with-signal.ts
1
2
  function setIntervalWithSignal(fn, ms, signal) {
2
- if (!signal.aborted) {
3
- const interval = setInterval(fn, ms);
4
- signal.addEventListener("abort", () => {
5
- clearInterval(interval);
6
- });
7
- }
3
+ if (!signal.aborted) {
4
+ const interval = setInterval(fn, ms);
5
+ signal.addEventListener("abort", () => {
6
+ clearInterval(interval);
7
+ });
8
+ }
8
9
  }
9
- export {
10
- setIntervalWithSignal
11
- };
12
- //# sourceMappingURL=set-interval-with-signal.js.map
10
+ //#endregion
11
+ export { setIntervalWithSignal };
12
+
13
+ //# sourceMappingURL=set-interval-with-signal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-interval-with-signal.js","sources":["../../../../replicache/src/set-interval-with-signal.ts"],"sourcesContent":["export function setIntervalWithSignal(\n fn: () => void,\n ms: number,\n signal: AbortSignal,\n): void {\n if (!signal.aborted) {\n const interval = setInterval(fn, ms);\n signal.addEventListener('abort', () => {\n clearInterval(interval);\n });\n }\n}\n"],"names":[],"mappings":"AAAO,SAAS,sBACd,IACA,IACA,QACM;AACN,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,WAAW,YAAY,IAAI,EAAE;AACnC,WAAO,iBAAiB,SAAS,MAAM;AACrC,oBAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACF;"}
1
+ {"version":3,"file":"set-interval-with-signal.js","names":[],"sources":["../../../../replicache/src/set-interval-with-signal.ts"],"sourcesContent":["export function setIntervalWithSignal(\n fn: () => void,\n ms: number,\n signal: AbortSignal,\n): void {\n if (!signal.aborted) {\n const interval = setInterval(fn, ms);\n signal.addEventListener('abort', () => {\n clearInterval(interval);\n });\n }\n}\n"],"mappings":";AAAA,SAAgB,sBACd,IACA,IACA,QACM;AACN,KAAI,CAAC,OAAO,SAAS;EACnB,MAAM,WAAW,YAAY,IAAI,GAAG;AACpC,SAAO,iBAAiB,eAAe;AACrC,iBAAc,SAAS;IACvB"}
@@ -0,0 +1,2 @@
1
+ import "./kv/sqlite-store.js";
2
+ export {};