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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1113) hide show
  1. package/out/_virtual/_@oxc-project_runtime@0.115.0/helpers/usingCtx.js +57 -0
  2. package/out/_virtual/_rolldown/runtime.js +27 -0
  3. package/out/analyze-query/src/bin-analyze.js +195 -280
  4. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  5. package/out/analyze-query/src/bin-transform.js +35 -40
  6. package/out/analyze-query/src/bin-transform.js.map +1 -1
  7. package/out/analyze-query/src/explain-queries.js +11 -13
  8. package/out/analyze-query/src/explain-queries.js.map +1 -1
  9. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  10. package/out/analyze-query/src/run-ast.js +68 -94
  11. package/out/analyze-query/src/run-ast.js.map +1 -1
  12. package/out/ast-to-zql/src/ast-to-zql.js +105 -153
  13. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  14. package/out/ast-to-zql/src/bin.js +57 -62
  15. package/out/ast-to-zql/src/bin.js.map +1 -1
  16. package/out/ast-to-zql/src/format.js +14 -13
  17. package/out/ast-to-zql/src/format.js.map +1 -1
  18. package/out/datadog/src/datadog-log-sink.js +148 -213
  19. package/out/datadog/src/datadog-log-sink.js.map +1 -1
  20. package/out/otel/src/enabled.js +9 -11
  21. package/out/otel/src/enabled.js.map +1 -1
  22. package/out/otel/src/log-options.js +25 -35
  23. package/out/otel/src/log-options.js.map +1 -1
  24. package/out/otel/src/maybe-time.js +13 -14
  25. package/out/otel/src/maybe-time.js.map +1 -1
  26. package/out/otel/src/span.js +23 -26
  27. package/out/otel/src/span.js.map +1 -1
  28. package/out/otel/src/test-log-config.js +11 -10
  29. package/out/otel/src/test-log-config.js.map +1 -1
  30. package/out/otel/src/version.js +6 -5
  31. package/out/otel/src/version.js.map +1 -1
  32. package/out/replicache/src/async-iterable-to-array.js +8 -9
  33. package/out/replicache/src/async-iterable-to-array.js.map +1 -1
  34. package/out/replicache/src/bg-interval.js +28 -35
  35. package/out/replicache/src/bg-interval.js.map +1 -1
  36. package/out/replicache/src/btree/diff.js +6 -5
  37. package/out/replicache/src/btree/diff.js.map +1 -1
  38. package/out/replicache/src/btree/node.js +281 -372
  39. package/out/replicache/src/btree/node.js.map +1 -1
  40. package/out/replicache/src/btree/read.js +155 -256
  41. package/out/replicache/src/btree/read.js.map +1 -1
  42. package/out/replicache/src/btree/splice.js +60 -80
  43. package/out/replicache/src/btree/splice.js.map +1 -1
  44. package/out/replicache/src/btree/write.js +134 -158
  45. package/out/replicache/src/btree/write.js.map +1 -1
  46. package/out/replicache/src/call-default-fetch.js +28 -32
  47. package/out/replicache/src/call-default-fetch.js.map +1 -1
  48. package/out/replicache/src/config.js +2 -0
  49. package/out/replicache/src/connection-loop-delegates.js +31 -33
  50. package/out/replicache/src/connection-loop-delegates.js.map +1 -1
  51. package/out/replicache/src/connection-loop.js +174 -240
  52. package/out/replicache/src/connection-loop.js.map +1 -1
  53. package/out/replicache/src/cookies.js +22 -32
  54. package/out/replicache/src/cookies.js.map +1 -1
  55. package/out/replicache/src/dag/chunk.js +44 -50
  56. package/out/replicache/src/dag/chunk.js.map +1 -1
  57. package/out/replicache/src/dag/gc.js +94 -114
  58. package/out/replicache/src/dag/gc.js.map +1 -1
  59. package/out/replicache/src/dag/key.js +9 -11
  60. package/out/replicache/src/dag/key.js.map +1 -1
  61. package/out/replicache/src/dag/lazy-store.js +458 -510
  62. package/out/replicache/src/dag/lazy-store.js.map +1 -1
  63. package/out/replicache/src/dag/store-impl.js +147 -178
  64. package/out/replicache/src/dag/store-impl.js.map +1 -1
  65. package/out/replicache/src/dag/store.js +19 -22
  66. package/out/replicache/src/dag/store.js.map +1 -1
  67. package/out/replicache/src/dag/visitor.js +23 -21
  68. package/out/replicache/src/dag/visitor.js.map +1 -1
  69. package/out/replicache/src/db/commit.js +209 -283
  70. package/out/replicache/src/db/commit.js.map +1 -1
  71. package/out/replicache/src/db/index.js +79 -122
  72. package/out/replicache/src/db/index.js.map +1 -1
  73. package/out/replicache/src/db/read.js +44 -60
  74. package/out/replicache/src/db/read.js.map +1 -1
  75. package/out/replicache/src/db/rebase.js +22 -77
  76. package/out/replicache/src/db/rebase.js.map +1 -1
  77. package/out/replicache/src/db/write.js +162 -296
  78. package/out/replicache/src/db/write.js.map +1 -1
  79. package/out/replicache/src/deleted-clients.js +59 -87
  80. package/out/replicache/src/deleted-clients.js.map +1 -1
  81. package/out/replicache/src/error-responses.js +18 -26
  82. package/out/replicache/src/error-responses.js.map +1 -1
  83. package/out/replicache/src/expo-sqlite.js +2 -0
  84. package/out/replicache/src/frozen-json.js +74 -108
  85. package/out/replicache/src/frozen-json.js.map +1 -1
  86. package/out/replicache/src/get-default-puller.js +34 -46
  87. package/out/replicache/src/get-default-puller.js.map +1 -1
  88. package/out/replicache/src/get-default-pusher.js +25 -33
  89. package/out/replicache/src/get-default-pusher.js.map +1 -1
  90. package/out/replicache/src/get-kv-store-provider.js +18 -20
  91. package/out/replicache/src/get-kv-store-provider.js.map +1 -1
  92. package/out/replicache/src/hash.js +29 -29
  93. package/out/replicache/src/hash.js.map +1 -1
  94. package/out/replicache/src/http-request-info.js +9 -8
  95. package/out/replicache/src/http-request-info.js.map +1 -1
  96. package/out/replicache/src/impl.js +2 -0
  97. package/out/replicache/src/index-defs.js +17 -28
  98. package/out/replicache/src/index-defs.js.map +1 -1
  99. package/out/replicache/src/kv/expo-sqlite/store.js +52 -50
  100. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  101. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +71 -68
  102. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -1
  103. package/out/replicache/src/kv/idb-store.js +144 -168
  104. package/out/replicache/src/kv/idb-store.js.map +1 -1
  105. package/out/replicache/src/kv/mem-store.js +57 -45
  106. package/out/replicache/src/kv/mem-store.js.map +1 -1
  107. package/out/replicache/src/kv/op-sqlite/store.js +56 -62
  108. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
  109. package/out/replicache/src/kv/op-sqlite/types.d.ts.map +1 -1
  110. package/out/replicache/src/kv/op-sqlite/types.js +7 -6
  111. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
  112. package/out/replicache/src/kv/read-impl.js +26 -25
  113. package/out/replicache/src/kv/read-impl.js.map +1 -1
  114. package/out/replicache/src/kv/sqlite-store.js +194 -207
  115. package/out/replicache/src/kv/sqlite-store.js.map +1 -1
  116. package/out/replicache/src/kv/throw-if-closed.js +12 -19
  117. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  118. package/out/replicache/src/kv/write-impl-base.js +44 -56
  119. package/out/replicache/src/kv/write-impl-base.js.map +1 -1
  120. package/out/replicache/src/kv/write-impl.js +22 -26
  121. package/out/replicache/src/kv/write-impl.js.map +1 -1
  122. package/out/replicache/src/lazy.js +10 -11
  123. package/out/replicache/src/lazy.js.map +1 -1
  124. package/out/replicache/src/log-options.js +14 -7
  125. package/out/replicache/src/log-options.js.map +1 -1
  126. package/out/replicache/src/make-idb-name.js +14 -9
  127. package/out/replicache/src/make-idb-name.js.map +1 -1
  128. package/out/replicache/src/mutation-recovery.js +12 -0
  129. package/out/replicache/src/mutation-recovery.js.map +1 -0
  130. package/out/replicache/src/new-client-channel.js +34 -42
  131. package/out/replicache/src/new-client-channel.js.map +1 -1
  132. package/out/replicache/src/on-persist-channel.js +26 -29
  133. package/out/replicache/src/on-persist-channel.js.map +1 -1
  134. package/out/replicache/src/op-sqlite.js +2 -0
  135. package/out/replicache/src/patch-operation.js +27 -36
  136. package/out/replicache/src/patch-operation.js.map +1 -1
  137. package/out/replicache/src/pending-mutations.js +14 -12
  138. package/out/replicache/src/pending-mutations.js.map +1 -1
  139. package/out/replicache/src/persist/client-gc.js +36 -51
  140. package/out/replicache/src/persist/client-gc.js.map +1 -1
  141. package/out/replicache/src/persist/client-group-gc.js +29 -36
  142. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  143. package/out/replicache/src/persist/client-groups.js +80 -154
  144. package/out/replicache/src/persist/client-groups.js.map +1 -1
  145. package/out/replicache/src/persist/clients.js +212 -307
  146. package/out/replicache/src/persist/clients.js.map +1 -1
  147. package/out/replicache/src/persist/collect-idb-databases.js +109 -171
  148. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
  149. package/out/replicache/src/persist/gather-mem-only-visitor.js +23 -24
  150. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
  151. package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -33
  152. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
  153. package/out/replicache/src/persist/heartbeat.js +31 -41
  154. package/out/replicache/src/persist/heartbeat.js.map +1 -1
  155. package/out/replicache/src/persist/idb-databases-store-db-name.js +9 -12
  156. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -1
  157. package/out/replicache/src/persist/idb-databases-store.js +78 -97
  158. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  159. package/out/replicache/src/persist/make-client-id.js +13 -9
  160. package/out/replicache/src/persist/make-client-id.js.map +1 -1
  161. package/out/replicache/src/persist/persist.js +113 -174
  162. package/out/replicache/src/persist/persist.js.map +1 -1
  163. package/out/replicache/src/persist/refresh.js +94 -183
  164. package/out/replicache/src/persist/refresh.js.map +1 -1
  165. package/out/replicache/src/process-scheduler.js +122 -143
  166. package/out/replicache/src/process-scheduler.js.map +1 -1
  167. package/out/replicache/src/pusher.js +21 -26
  168. package/out/replicache/src/pusher.js.map +1 -1
  169. package/out/replicache/src/replicache-impl.js +844 -1184
  170. package/out/replicache/src/replicache-impl.js.map +1 -1
  171. package/out/replicache/src/report-error.js +9 -6
  172. package/out/replicache/src/report-error.js.map +1 -1
  173. package/out/replicache/src/request-idle.js +13 -11
  174. package/out/replicache/src/request-idle.js.map +1 -1
  175. package/out/replicache/src/scan-iterator.d.ts.map +1 -1
  176. package/out/replicache/src/scan-iterator.js +108 -135
  177. package/out/replicache/src/scan-iterator.js.map +1 -1
  178. package/out/replicache/src/scan-options.js +33 -39
  179. package/out/replicache/src/scan-options.js.map +1 -1
  180. package/out/replicache/src/set-interval-with-signal.js +11 -10
  181. package/out/replicache/src/set-interval-with-signal.js.map +1 -1
  182. package/out/replicache/src/sqlite.js +2 -0
  183. package/out/replicache/src/subscriptions.js +222 -338
  184. package/out/replicache/src/subscriptions.js.map +1 -1
  185. package/out/replicache/src/sync/diff.js +52 -65
  186. package/out/replicache/src/sync/diff.js.map +1 -1
  187. package/out/replicache/src/sync/ids.js +8 -9
  188. package/out/replicache/src/sync/ids.js.map +1 -1
  189. package/out/replicache/src/sync/patch.js +34 -45
  190. package/out/replicache/src/sync/patch.js.map +1 -1
  191. package/out/replicache/src/sync/pull-error.js +15 -15
  192. package/out/replicache/src/sync/pull-error.js.map +1 -1
  193. package/out/replicache/src/sync/pull.js +145 -283
  194. package/out/replicache/src/sync/pull.js.map +1 -1
  195. package/out/replicache/src/sync/push.js +64 -79
  196. package/out/replicache/src/sync/push.js.map +1 -1
  197. package/out/replicache/src/sync/request-id.js +23 -15
  198. package/out/replicache/src/sync/request-id.js.map +1 -1
  199. package/out/replicache/src/sync/sync-head-name.js +6 -5
  200. package/out/replicache/src/sync/sync-head-name.js.map +1 -1
  201. package/out/replicache/src/to-error.js +7 -8
  202. package/out/replicache/src/to-error.js.map +1 -1
  203. package/out/replicache/src/transaction-closed-error.js +15 -15
  204. package/out/replicache/src/transaction-closed-error.js.map +1 -1
  205. package/out/replicache/src/transactions.js +120 -140
  206. package/out/replicache/src/transactions.js.map +1 -1
  207. package/out/replicache/src/version.js +9 -5
  208. package/out/replicache/src/version.js.map +1 -1
  209. package/out/replicache/src/with-transactions.js +23 -20
  210. package/out/replicache/src/with-transactions.js.map +1 -1
  211. package/out/shared/src/abort-error.js +7 -6
  212. package/out/shared/src/abort-error.js.map +1 -1
  213. package/out/shared/src/arrays.js +35 -42
  214. package/out/shared/src/arrays.js.map +1 -1
  215. package/out/shared/src/asserts.js +21 -45
  216. package/out/shared/src/asserts.js.map +1 -1
  217. package/out/shared/src/bigint-json.js +42 -38
  218. package/out/shared/src/bigint-json.js.map +1 -1
  219. package/out/shared/src/binary-search.js +27 -18
  220. package/out/shared/src/binary-search.js.map +1 -1
  221. package/out/shared/src/broadcast-channel.js +20 -23
  222. package/out/shared/src/broadcast-channel.js.map +1 -1
  223. package/out/shared/src/browser-env.js +11 -17
  224. package/out/shared/src/browser-env.js.map +1 -1
  225. package/out/shared/src/btree-set.js +419 -481
  226. package/out/shared/src/btree-set.js.map +1 -1
  227. package/out/shared/src/cache.js +43 -36
  228. package/out/shared/src/cache.js.map +1 -1
  229. package/out/shared/src/centroid.js +24 -26
  230. package/out/shared/src/centroid.js.map +1 -1
  231. package/out/shared/src/config.js +6 -6
  232. package/out/shared/src/config.js.map +1 -1
  233. package/out/shared/src/custom-key-map.js +54 -58
  234. package/out/shared/src/custom-key-map.js.map +1 -1
  235. package/out/shared/src/custom-key-set.js +53 -51
  236. package/out/shared/src/custom-key-set.js.map +1 -1
  237. package/out/shared/src/deep-clone.js +30 -41
  238. package/out/shared/src/deep-clone.js.map +1 -1
  239. package/out/shared/src/deep-merge.js +25 -24
  240. package/out/shared/src/deep-merge.js.map +1 -1
  241. package/out/shared/src/document-visible.js +63 -70
  242. package/out/shared/src/document-visible.js.map +1 -1
  243. package/out/shared/src/dotenv.js +7 -3
  244. package/out/shared/src/dotenv.js.map +1 -1
  245. package/out/shared/src/error.js +43 -64
  246. package/out/shared/src/error.js.map +1 -1
  247. package/out/shared/src/has-own.js +6 -5
  248. package/out/shared/src/has-own.js.map +1 -1
  249. package/out/shared/src/hash.js +15 -14
  250. package/out/shared/src/hash.js.map +1 -1
  251. package/out/shared/src/iterables.js +34 -47
  252. package/out/shared/src/iterables.js.map +1 -1
  253. package/out/shared/src/json-schema.js +25 -30
  254. package/out/shared/src/json-schema.js.map +1 -1
  255. package/out/shared/src/json.js +90 -129
  256. package/out/shared/src/json.js.map +1 -1
  257. package/out/shared/src/logging-test-utils.js +9 -11
  258. package/out/shared/src/logging-test-utils.js.map +1 -1
  259. package/out/shared/src/logging.js +75 -95
  260. package/out/shared/src/logging.js.map +1 -1
  261. package/out/shared/src/must.js +7 -8
  262. package/out/shared/src/must.js.map +1 -1
  263. package/out/shared/src/navigator.js +6 -5
  264. package/out/shared/src/navigator.js.map +1 -1
  265. package/out/shared/src/object-traversal.js +23 -23
  266. package/out/shared/src/object-traversal.js.map +1 -1
  267. package/out/shared/src/objects.js +15 -18
  268. package/out/shared/src/objects.js.map +1 -1
  269. package/out/shared/src/options.js +225 -302
  270. package/out/shared/src/options.js.map +1 -1
  271. package/out/shared/src/parse-big-int.js +12 -11
  272. package/out/shared/src/parse-big-int.js.map +1 -1
  273. package/out/shared/src/promise-race.js +21 -17
  274. package/out/shared/src/promise-race.js.map +1 -1
  275. package/out/shared/src/queue.js +124 -124
  276. package/out/shared/src/queue.js.map +1 -1
  277. package/out/shared/src/rand.js +13 -7
  278. package/out/shared/src/rand.js.map +1 -1
  279. package/out/shared/src/random-uint64.js +8 -7
  280. package/out/shared/src/random-uint64.js.map +1 -1
  281. package/out/shared/src/random-values.js +8 -11
  282. package/out/shared/src/random-values.js.map +1 -1
  283. package/out/shared/src/record-proxy.js +68 -57
  284. package/out/shared/src/record-proxy.js.map +1 -1
  285. package/out/shared/src/resolved-promises.js +9 -11
  286. package/out/shared/src/resolved-promises.js.map +1 -1
  287. package/out/shared/src/sentinels.js +9 -12
  288. package/out/shared/src/sentinels.js.map +1 -1
  289. package/out/shared/src/set-utils.js +41 -63
  290. package/out/shared/src/set-utils.js.map +1 -1
  291. package/out/shared/src/size-of-value.js +55 -51
  292. package/out/shared/src/size-of-value.js.map +1 -1
  293. package/out/shared/src/sleep.js +50 -45
  294. package/out/shared/src/sleep.js.map +1 -1
  295. package/out/shared/src/string-compare.js +8 -11
  296. package/out/shared/src/string-compare.js.map +1 -1
  297. package/out/shared/src/subscribable.js +34 -33
  298. package/out/shared/src/subscribable.js.map +1 -1
  299. package/out/shared/src/tdigest-schema.js +11 -7
  300. package/out/shared/src/tdigest-schema.js.map +1 -1
  301. package/out/shared/src/tdigest.js +197 -270
  302. package/out/shared/src/tdigest.js.map +1 -1
  303. package/out/shared/src/valita.js +145 -174
  304. package/out/shared/src/valita.js.map +1 -1
  305. package/out/z2s/src/compiler.d.ts.map +1 -1
  306. package/out/z2s/src/compiler.js +238 -468
  307. package/out/z2s/src/compiler.js.map +1 -1
  308. package/out/z2s/src/sql.d.ts +0 -1
  309. package/out/z2s/src/sql.d.ts.map +1 -1
  310. package/out/z2s/src/sql.js +149 -194
  311. package/out/z2s/src/sql.js.map +1 -1
  312. package/out/zero/package.js +193 -0
  313. package/out/zero/package.js.map +1 -0
  314. package/out/zero/src/adapters/drizzle.js +1 -6
  315. package/out/zero/src/adapters/pg.js +1 -6
  316. package/out/zero/src/adapters/postgresjs.js +1 -6
  317. package/out/zero/src/adapters/prisma.js +1 -5
  318. package/out/zero/src/analyze-query.js +1 -1
  319. package/out/zero/src/ast-to-zql.js +1 -1
  320. package/out/zero/src/bindings.js +6 -21
  321. package/out/zero/src/build-schema.js +5 -1
  322. package/out/zero/src/build-schema.js.map +1 -1
  323. package/out/zero/src/change-protocol/v0.js +3 -5
  324. package/out/zero/src/cli.js +2 -2
  325. package/out/zero/src/deploy-permissions.js +1 -1
  326. package/out/zero/src/expo-sqlite.js +2 -4
  327. package/out/zero/src/op-sqlite.js +2 -4
  328. package/out/zero/src/pg.js +2 -20
  329. package/out/zero/src/react-native.js +16 -12
  330. package/out/zero/src/react-native.js.map +1 -1
  331. package/out/zero/src/react.js +3 -12
  332. package/out/zero/src/server/runner/main.js +2 -0
  333. package/out/zero/src/server.js +2 -17
  334. package/out/zero/src/solid.js +3 -12
  335. package/out/zero/src/sqlite.js +2 -6
  336. package/out/zero/src/transform-query.js +1 -1
  337. package/out/zero/src/zero-cache-dev.js +124 -151
  338. package/out/zero/src/zero-cache-dev.js.map +1 -1
  339. package/out/zero/src/zero-out.js +9 -6
  340. package/out/zero/src/zero-out.js.map +1 -1
  341. package/out/zero/src/zero.js +6 -55
  342. package/out/zero/src/zqlite.js +2 -7
  343. package/out/zero-cache/src/auth/auth.js +138 -172
  344. package/out/zero-cache/src/auth/auth.js.map +1 -1
  345. package/out/zero-cache/src/auth/jwt.js +25 -33
  346. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  347. package/out/zero-cache/src/auth/load-permissions.js +54 -62
  348. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  349. package/out/zero-cache/src/auth/read-authorizer.js +70 -80
  350. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  351. package/out/zero-cache/src/auth/write-authorizer.js +284 -432
  352. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  353. package/out/zero-cache/src/config/network.js +31 -45
  354. package/out/zero-cache/src/config/network.js.map +1 -1
  355. package/out/zero-cache/src/config/normalize.js +81 -83
  356. package/out/zero-cache/src/config/normalize.js.map +1 -1
  357. package/out/zero-cache/src/config/server-context.js +32 -29
  358. package/out/zero-cache/src/config/server-context.js.map +1 -1
  359. package/out/zero-cache/src/config/zero-config.d.ts +4 -0
  360. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  361. package/out/zero-cache/src/config/zero-config.js +753 -816
  362. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  363. package/out/zero-cache/src/custom/fetch.js +183 -230
  364. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  365. package/out/zero-cache/src/custom-queries/transform-query.js +93 -99
  366. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  367. package/out/zero-cache/src/db/create.js +27 -29
  368. package/out/zero-cache/src/db/create.js.map +1 -1
  369. package/out/zero-cache/src/db/delete-lite-db.js +11 -7
  370. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  371. package/out/zero-cache/src/db/lite-tables.d.ts +2 -1
  372. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  373. package/out/zero-cache/src/db/lite-tables.js +120 -156
  374. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  375. package/out/zero-cache/src/db/migration-lite.js +110 -178
  376. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  377. package/out/zero-cache/src/db/migration.js +82 -151
  378. package/out/zero-cache/src/db/migration.js.map +1 -1
  379. package/out/zero-cache/src/db/mode-enum.js +8 -9
  380. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  381. package/out/zero-cache/src/db/pg-copy.js +56 -54
  382. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  383. package/out/zero-cache/src/db/pg-to-lite.js +74 -110
  384. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  385. package/out/zero-cache/src/db/pg-type-parser.js +19 -36
  386. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  387. package/out/zero-cache/src/db/run-transaction.js +19 -20
  388. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  389. package/out/zero-cache/src/db/specs.d.ts +8 -2
  390. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  391. package/out/zero-cache/src/db/specs.js +42 -78
  392. package/out/zero-cache/src/db/specs.js.map +1 -1
  393. package/out/zero-cache/src/db/statements.js +52 -59
  394. package/out/zero-cache/src/db/statements.js.map +1 -1
  395. package/out/zero-cache/src/db/transaction-pool.js +376 -400
  396. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  397. package/out/zero-cache/src/db/warmup.js +13 -24
  398. package/out/zero-cache/src/db/warmup.js.map +1 -1
  399. package/out/zero-cache/src/observability/events.js +89 -99
  400. package/out/zero-cache/src/observability/events.js.map +1 -1
  401. package/out/zero-cache/src/observability/metrics.js +30 -54
  402. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  403. package/out/zero-cache/src/scripts/decommission.js +42 -47
  404. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  405. package/out/zero-cache/src/scripts/deploy-permissions.js +106 -144
  406. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  407. package/out/zero-cache/src/scripts/permissions.js +86 -107
  408. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  409. package/out/zero-cache/src/server/anonymous-otel-start.js +306 -440
  410. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  411. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  412. package/out/zero-cache/src/server/change-streamer.js +57 -128
  413. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  414. package/out/zero-cache/src/server/inspector-delegate.js +89 -100
  415. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  416. package/out/zero-cache/src/server/logging.js +18 -26
  417. package/out/zero-cache/src/server/logging.js.map +1 -1
  418. package/out/zero-cache/src/server/main.js +85 -142
  419. package/out/zero-cache/src/server/main.js.map +1 -1
  420. package/out/zero-cache/src/server/mutator.js +16 -13
  421. package/out/zero-cache/src/server/mutator.js.map +1 -1
  422. package/out/zero-cache/src/server/otel-diag-logger.js +42 -49
  423. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  424. package/out/zero-cache/src/server/otel-log-sink.js +34 -44
  425. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  426. package/out/zero-cache/src/server/otel-start.js +43 -51
  427. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  428. package/out/zero-cache/src/server/priority-op.js +27 -25
  429. package/out/zero-cache/src/server/priority-op.js.map +1 -1
  430. package/out/zero-cache/src/server/reaper.js +32 -43
  431. package/out/zero-cache/src/server/reaper.js.map +1 -1
  432. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  433. package/out/zero-cache/src/server/replicator.js +41 -57
  434. package/out/zero-cache/src/server/replicator.js.map +1 -1
  435. package/out/zero-cache/src/server/runner/main.js +7 -8
  436. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  437. package/out/zero-cache/src/server/runner/run-worker.js +56 -52
  438. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  439. package/out/zero-cache/src/server/runner/runtime.js +26 -32
  440. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  441. package/out/zero-cache/src/server/runner/zero-dispatcher.js +22 -27
  442. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  443. package/out/zero-cache/src/server/syncer.js +79 -148
  444. package/out/zero-cache/src/server/syncer.js.map +1 -1
  445. package/out/zero-cache/src/server/worker-dispatcher.js +84 -113
  446. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  447. package/out/zero-cache/src/server/worker-urls.d.ts +2 -1
  448. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -1
  449. package/out/zero-cache/src/server/worker-urls.js +14 -18
  450. package/out/zero-cache/src/server/worker-urls.js.map +1 -1
  451. package/out/zero-cache/src/server/write-worker.js +2 -0
  452. package/out/zero-cache/src/services/analyze.js +61 -129
  453. package/out/zero-cache/src/services/analyze.js.map +1 -1
  454. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +420 -419
  455. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  456. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +111 -114
  457. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  458. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +2 -0
  459. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +1 -1
  460. package/out/zero-cache/src/services/change-source/common/replica-schema.js +100 -115
  461. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  462. package/out/zero-cache/src/services/change-source/custom/change-source.js +154 -216
  463. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  464. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js +11 -14
  465. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
  466. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +1 -1
  467. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +169 -209
  468. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  469. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  470. package/out/zero-cache/src/services/change-source/pg/change-source.js +676 -835
  471. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  472. package/out/zero-cache/src/services/change-source/pg/decommission.js +19 -23
  473. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  474. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +258 -411
  475. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  476. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +59 -65
  477. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  478. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +218 -247
  479. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  480. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +100 -142
  481. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  482. package/out/zero-cache/src/services/change-source/pg/lsn.js +17 -19
  483. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  484. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +88 -98
  485. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  486. package/out/zero-cache/src/services/change-source/pg/schema/init.js +96 -177
  487. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  488. package/out/zero-cache/src/services/change-source/pg/schema/published.js +69 -107
  489. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  490. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +151 -212
  491. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  492. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +22 -53
  493. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  494. package/out/zero-cache/src/services/change-source/protocol/current/control.js +24 -12
  495. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  496. package/out/zero-cache/src/services/change-source/protocol/current/data.js +180 -290
  497. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  498. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +21 -33
  499. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  500. package/out/zero-cache/src/services/change-source/protocol/current/json.js +7 -18
  501. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -1
  502. package/out/zero-cache/src/services/change-source/protocol/current/path.js +24 -5
  503. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  504. package/out/zero-cache/src/services/change-source/protocol/current/status.js +25 -19
  505. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  506. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +24 -16
  507. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  508. package/out/zero-cache/src/services/change-source/protocol/current.js +51 -46
  509. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  510. package/out/zero-cache/src/services/change-source/protocol/mod.js +2 -0
  511. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +165 -171
  512. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  513. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +100 -0
  514. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +1 -0
  515. package/out/zero-cache/src/services/change-streamer/broadcast.js +165 -0
  516. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -0
  517. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +154 -221
  518. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  519. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  520. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  521. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +341 -293
  522. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  523. package/out/zero-cache/src/services/change-streamer/change-streamer.js +17 -24
  524. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  525. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +17 -1
  526. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  527. package/out/zero-cache/src/services/change-streamer/forwarder.js +85 -56
  528. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  529. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +49 -43
  530. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  531. package/out/zero-cache/src/services/change-streamer/schema/init.js +61 -89
  532. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  533. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +20 -1
  534. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  535. package/out/zero-cache/src/services/change-streamer/schema/tables.js +131 -109
  536. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  537. package/out/zero-cache/src/services/change-streamer/snapshot.js +26 -28
  538. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  539. package/out/zero-cache/src/services/change-streamer/storer.js +434 -513
  540. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  541. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +18 -0
  542. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  543. package/out/zero-cache/src/services/change-streamer/subscriber.js +143 -100
  544. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  545. package/out/zero-cache/src/services/heapz.js +18 -20
  546. package/out/zero-cache/src/services/heapz.js.map +1 -1
  547. package/out/zero-cache/src/services/http-service.js +59 -57
  548. package/out/zero-cache/src/services/http-service.js.map +1 -1
  549. package/out/zero-cache/src/services/life-cycle.js +182 -214
  550. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  551. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +102 -81
  552. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  553. package/out/zero-cache/src/services/litestream/commands.js +144 -205
  554. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  555. package/out/zero-cache/src/services/mutagen/error.js +10 -14
  556. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  557. package/out/zero-cache/src/services/mutagen/mutagen.js +166 -264
  558. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  559. package/out/zero-cache/src/services/mutagen/pusher.js +372 -487
  560. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  561. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  562. package/out/zero-cache/src/services/replicator/change-processor.js +483 -595
  563. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  564. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +4 -2
  565. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  566. package/out/zero-cache/src/services/replicator/incremental-sync.js +118 -143
  567. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  568. package/out/zero-cache/src/services/replicator/notifier.js +52 -28
  569. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  570. package/out/zero-cache/src/services/replicator/replication-status.js +105 -128
  571. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  572. package/out/zero-cache/src/services/replicator/replicator.d.ts +2 -1
  573. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  574. package/out/zero-cache/src/services/replicator/replicator.js +32 -34
  575. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  576. package/out/zero-cache/src/services/replicator/schema/change-log.js +101 -133
  577. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  578. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +145 -174
  579. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  580. package/out/zero-cache/src/services/replicator/schema/constants.js +11 -5
  581. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  582. package/out/zero-cache/src/services/replicator/schema/replication-state.js +56 -107
  583. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  584. package/out/zero-cache/src/services/replicator/schema/table-metadata.d.ts +28 -7
  585. package/out/zero-cache/src/services/replicator/schema/table-metadata.d.ts.map +1 -1
  586. package/out/zero-cache/src/services/replicator/schema/table-metadata.js +96 -50
  587. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
  588. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +69 -0
  589. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -0
  590. package/out/zero-cache/src/services/replicator/write-worker-client.js +96 -0
  591. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
  592. package/out/zero-cache/src/services/replicator/write-worker.js +68 -0
  593. package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -0
  594. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  595. package/out/zero-cache/src/services/run-ast.js +79 -118
  596. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  597. package/out/zero-cache/src/services/runner.js +39 -41
  598. package/out/zero-cache/src/services/runner.js.map +1 -1
  599. package/out/zero-cache/src/services/running-state.js +129 -134
  600. package/out/zero-cache/src/services/running-state.js.map +1 -1
  601. package/out/zero-cache/src/services/statz.js +139 -200
  602. package/out/zero-cache/src/services/statz.js.map +1 -1
  603. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +46 -49
  604. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  605. package/out/zero-cache/src/services/view-syncer/client-handler.js +257 -299
  606. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  607. package/out/zero-cache/src/services/view-syncer/client-schema.js +52 -82
  608. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  609. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +85 -107
  610. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  611. package/out/zero-cache/src/services/view-syncer/cvr-store.js +604 -757
  612. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  613. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -739
  614. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  615. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +60 -40
  616. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  617. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +95 -178
  618. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  619. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +3 -2
  620. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  621. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +574 -709
  622. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  623. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  624. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +246 -257
  625. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  626. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +59 -45
  627. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  628. package/out/zero-cache/src/services/view-syncer/schema/init.js +121 -189
  629. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  630. package/out/zero-cache/src/services/view-syncer/schema/types.js +138 -263
  631. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  632. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  633. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  634. package/out/zero-cache/src/services/view-syncer/snapshotter.js +322 -331
  635. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  636. package/out/zero-cache/src/services/view-syncer/tracer.js +7 -6
  637. package/out/zero-cache/src/services/view-syncer/tracer.js.map +1 -1
  638. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -11
  639. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  640. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1067 -1603
  641. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  642. package/out/zero-cache/src/types/error-with-level.js +19 -25
  643. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  644. package/out/zero-cache/src/types/http.js +17 -26
  645. package/out/zero-cache/src/types/http.js.map +1 -1
  646. package/out/zero-cache/src/types/lexi-version.js +28 -42
  647. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  648. package/out/zero-cache/src/types/lite.js +101 -121
  649. package/out/zero-cache/src/types/lite.js.map +1 -1
  650. package/out/zero-cache/src/types/names.js +6 -5
  651. package/out/zero-cache/src/types/names.js.map +1 -1
  652. package/out/zero-cache/src/types/pg-data-type.d.ts +1 -0
  653. package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -1
  654. package/out/zero-cache/src/types/pg-data-type.js +58 -73
  655. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  656. package/out/zero-cache/src/types/pg-types.js +12 -19
  657. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  658. package/out/zero-cache/src/types/pg.js +144 -218
  659. package/out/zero-cache/src/types/pg.js.map +1 -1
  660. package/out/zero-cache/src/types/processes.js +95 -90
  661. package/out/zero-cache/src/types/processes.js.map +1 -1
  662. package/out/zero-cache/src/types/profiler.js +32 -27
  663. package/out/zero-cache/src/types/profiler.js.map +1 -1
  664. package/out/zero-cache/src/types/row-key.js +42 -30
  665. package/out/zero-cache/src/types/row-key.js.map +1 -1
  666. package/out/zero-cache/src/types/shards.js +36 -45
  667. package/out/zero-cache/src/types/shards.js.map +1 -1
  668. package/out/zero-cache/src/types/sql.js +20 -9
  669. package/out/zero-cache/src/types/sql.js.map +1 -1
  670. package/out/zero-cache/src/types/state-version.js +17 -23
  671. package/out/zero-cache/src/types/state-version.js.map +1 -1
  672. package/out/zero-cache/src/types/streams.js +234 -270
  673. package/out/zero-cache/src/types/streams.js.map +1 -1
  674. package/out/zero-cache/src/types/strings.js +10 -13
  675. package/out/zero-cache/src/types/strings.js.map +1 -1
  676. package/out/zero-cache/src/types/subscription.d.ts +3 -1
  677. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  678. package/out/zero-cache/src/types/subscription.js +266 -214
  679. package/out/zero-cache/src/types/subscription.js.map +1 -1
  680. package/out/zero-cache/src/types/url-params.js +30 -39
  681. package/out/zero-cache/src/types/url-params.js.map +1 -1
  682. package/out/zero-cache/src/types/websocket-handoff.js +62 -75
  683. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  684. package/out/zero-cache/src/types/ws.js +43 -53
  685. package/out/zero-cache/src/types/ws.js.map +1 -1
  686. package/out/zero-cache/src/workers/connect-params.js +42 -43
  687. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  688. package/out/zero-cache/src/workers/connection.js +213 -282
  689. package/out/zero-cache/src/workers/connection.js.map +1 -1
  690. package/out/zero-cache/src/workers/mutator.js +22 -21
  691. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  692. package/out/zero-cache/src/workers/replicator.d.ts +7 -0
  693. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  694. package/out/zero-cache/src/workers/replicator.js +92 -97
  695. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  696. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +121 -203
  697. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  698. package/out/zero-cache/src/workers/syncer.js +147 -201
  699. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  700. package/out/zero-client/src/client/active-clients-manager.js +178 -187
  701. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  702. package/out/zero-client/src/client/bindings.js +11 -0
  703. package/out/zero-client/src/client/client-error-kind-enum.js +18 -29
  704. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -1
  705. package/out/zero-client/src/client/connection-manager.js +291 -346
  706. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  707. package/out/zero-client/src/client/connection-status-enum.js +20 -15
  708. package/out/zero-client/src/client/connection-status-enum.js.map +1 -1
  709. package/out/zero-client/src/client/connection.js +92 -110
  710. package/out/zero-client/src/client/connection.js.map +1 -1
  711. package/out/zero-client/src/client/context.js +84 -100
  712. package/out/zero-client/src/client/context.js.map +1 -1
  713. package/out/zero-client/src/client/crud-impl.js +56 -88
  714. package/out/zero-client/src/client/crud-impl.js.map +1 -1
  715. package/out/zero-client/src/client/crud.js +127 -129
  716. package/out/zero-client/src/client/crud.js.map +1 -1
  717. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  718. package/out/zero-client/src/client/custom.js +50 -74
  719. package/out/zero-client/src/client/custom.js.map +1 -1
  720. package/out/zero-client/src/client/delete-clients-manager.js +72 -93
  721. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  722. package/out/zero-client/src/client/enable-analytics.js +8 -16
  723. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  724. package/out/zero-client/src/client/error.js +118 -133
  725. package/out/zero-client/src/client/error.js.map +1 -1
  726. package/out/zero-client/src/client/http-string.js +7 -7
  727. package/out/zero-client/src/client/http-string.js.map +1 -1
  728. package/out/zero-client/src/client/inspector/client-group.js +21 -26
  729. package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
  730. package/out/zero-client/src/client/inspector/client.js +23 -26
  731. package/out/zero-client/src/client/inspector/client.js.map +1 -1
  732. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +72 -73
  733. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
  734. package/out/zero-client/src/client/inspector/inspector.js +46 -51
  735. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  736. package/out/zero-client/src/client/inspector/lazy-inspector.js +132 -192
  737. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  738. package/out/zero-client/src/client/inspector/query.js +72 -77
  739. package/out/zero-client/src/client/inspector/query.js.map +1 -1
  740. package/out/zero-client/src/client/ivm-branch.js +118 -145
  741. package/out/zero-client/src/client/ivm-branch.js.map +1 -1
  742. package/out/zero-client/src/client/keys.js +15 -31
  743. package/out/zero-client/src/client/keys.js.map +1 -1
  744. package/out/zero-client/src/client/log-options.js +43 -57
  745. package/out/zero-client/src/client/log-options.js.map +1 -1
  746. package/out/zero-client/src/client/make-mutate-property.js +46 -29
  747. package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
  748. package/out/zero-client/src/client/make-replicache-mutators.js +80 -96
  749. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  750. package/out/zero-client/src/client/metric-name-enum.js +11 -15
  751. package/out/zero-client/src/client/metric-name-enum.js.map +1 -1
  752. package/out/zero-client/src/client/metrics.js +210 -237
  753. package/out/zero-client/src/client/metrics.js.map +1 -1
  754. package/out/zero-client/src/client/mutation-tracker.js +264 -354
  755. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  756. package/out/zero-client/src/client/mutator-proxy.js +122 -151
  757. package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
  758. package/out/zero-client/src/client/options.js +7 -10
  759. package/out/zero-client/src/client/options.js.map +1 -1
  760. package/out/zero-client/src/client/query-manager.js +305 -373
  761. package/out/zero-client/src/client/query-manager.js.map +1 -1
  762. package/out/zero-client/src/client/reload-error-handler.js +80 -101
  763. package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
  764. package/out/zero-client/src/client/server-option.js +30 -59
  765. package/out/zero-client/src/client/server-option.js.map +1 -1
  766. package/out/zero-client/src/client/update-needed-reason-type-enum.js +27 -9
  767. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -1
  768. package/out/zero-client/src/client/version.js +9 -5
  769. package/out/zero-client/src/client/version.js.map +1 -1
  770. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -1
  771. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  772. package/out/zero-client/src/client/zero-poke-handler.js +205 -293
  773. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  774. package/out/zero-client/src/client/zero-rep.js +61 -68
  775. package/out/zero-client/src/client/zero-rep.js.map +1 -1
  776. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  777. package/out/zero-client/src/client/zero.js +1367 -1834
  778. package/out/zero-client/src/client/zero.js.map +1 -1
  779. package/out/zero-client/src/mod.js +21 -0
  780. package/out/zero-client/src/util/nanoid.js +13 -18
  781. package/out/zero-client/src/util/nanoid.js.map +1 -1
  782. package/out/zero-client/src/util/socket.js +6 -5
  783. package/out/zero-client/src/util/socket.js.map +1 -1
  784. package/out/zero-pg/src/mod.js +10 -0
  785. package/out/zero-protocol/src/analyze-query-result.js +108 -148
  786. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  787. package/out/zero-protocol/src/application-error.js +36 -34
  788. package/out/zero-protocol/src/application-error.js.map +1 -1
  789. package/out/zero-protocol/src/ast.js +236 -309
  790. package/out/zero-protocol/src/ast.js.map +1 -1
  791. package/out/zero-protocol/src/change-desired-queries.js +8 -13
  792. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  793. package/out/zero-protocol/src/client-schema.js +21 -42
  794. package/out/zero-protocol/src/client-schema.js.map +1 -1
  795. package/out/zero-protocol/src/close-connection.js +20 -12
  796. package/out/zero-protocol/src/close-connection.js.map +1 -1
  797. package/out/zero-protocol/src/connect.js +37 -52
  798. package/out/zero-protocol/src/connect.js.map +1 -1
  799. package/out/zero-protocol/src/custom-queries.js +34 -65
  800. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  801. package/out/zero-protocol/src/data.js +6 -9
  802. package/out/zero-protocol/src/data.js.map +1 -1
  803. package/out/zero-protocol/src/delete-clients.js +11 -17
  804. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  805. package/out/zero-protocol/src/down.js +11 -23
  806. package/out/zero-protocol/src/down.js.map +1 -1
  807. package/out/zero-protocol/src/error-kind-enum.js +24 -41
  808. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  809. package/out/zero-protocol/src/error-origin-enum.js +8 -9
  810. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  811. package/out/zero-protocol/src/error-reason-enum.js +12 -17
  812. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  813. package/out/zero-protocol/src/error.js +76 -152
  814. package/out/zero-protocol/src/error.js.map +1 -1
  815. package/out/zero-protocol/src/inspect-down.js +51 -74
  816. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  817. package/out/zero-protocol/src/inspect-up.js +28 -46
  818. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  819. package/out/zero-protocol/src/mutation-id.js +9 -9
  820. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  821. package/out/zero-protocol/src/mutation-type-enum.js +7 -7
  822. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  823. package/out/zero-protocol/src/mutations-patch.js +21 -16
  824. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  825. package/out/zero-protocol/src/ping.js +8 -9
  826. package/out/zero-protocol/src/ping.js.map +1 -1
  827. package/out/zero-protocol/src/poke.js +53 -59
  828. package/out/zero-protocol/src/poke.js.map +1 -1
  829. package/out/zero-protocol/src/pong.js +8 -9
  830. package/out/zero-protocol/src/pong.js.map +1 -1
  831. package/out/zero-protocol/src/primary-key.js +9 -19
  832. package/out/zero-protocol/src/primary-key.js.map +1 -1
  833. package/out/zero-protocol/src/protocol-version.js +5 -11
  834. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  835. package/out/zero-protocol/src/pull.js +16 -28
  836. package/out/zero-protocol/src/pull.js.map +1 -1
  837. package/out/zero-protocol/src/push.js +162 -209
  838. package/out/zero-protocol/src/push.js.map +1 -1
  839. package/out/zero-protocol/src/queries-patch.js +22 -30
  840. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  841. package/out/zero-protocol/src/query-hash.js +14 -17
  842. package/out/zero-protocol/src/query-hash.js.map +1 -1
  843. package/out/zero-protocol/src/row-patch.js +23 -30
  844. package/out/zero-protocol/src/row-patch.js.map +1 -1
  845. package/out/zero-protocol/src/up.js +11 -22
  846. package/out/zero-protocol/src/up.js.map +1 -1
  847. package/out/zero-protocol/src/update-auth.js +8 -13
  848. package/out/zero-protocol/src/update-auth.js.map +1 -1
  849. package/out/zero-protocol/src/version.js +8 -9
  850. package/out/zero-protocol/src/version.js.map +1 -1
  851. package/out/zero-react/src/bindings.js +12 -0
  852. package/out/zero-react/src/mod.js +5 -0
  853. package/out/zero-react/src/use-connection-state.js +14 -11
  854. package/out/zero-react/src/use-connection-state.js.map +1 -1
  855. package/out/zero-react/src/use-query.js +283 -281
  856. package/out/zero-react/src/use-query.js.map +1 -1
  857. package/out/zero-react/src/use-zero-online.js +17 -11
  858. package/out/zero-react/src/use-zero-online.js.map +1 -1
  859. package/out/zero-react/src/zero-provider.js +53 -69
  860. package/out/zero-react/src/zero-provider.js.map +1 -1
  861. package/out/zero-react/src/zero.js +22 -0
  862. package/out/zero-schema/src/builder/relationship-builder.js +25 -21
  863. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  864. package/out/zero-schema/src/builder/schema-builder.js +51 -79
  865. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  866. package/out/zero-schema/src/builder/table-builder.js +99 -116
  867. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  868. package/out/zero-schema/src/compiled-permissions.js +21 -25
  869. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  870. package/out/zero-schema/src/name-mapper.js +31 -47
  871. package/out/zero-schema/src/name-mapper.js.map +1 -1
  872. package/out/zero-schema/src/permissions.js +94 -181
  873. package/out/zero-schema/src/permissions.js.map +1 -1
  874. package/out/zero-schema/src/schema-config.js +26 -32
  875. package/out/zero-schema/src/schema-config.js.map +1 -1
  876. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  877. package/out/zero-server/src/adapters/drizzle.js +79 -76
  878. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  879. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  880. package/out/zero-server/src/adapters/pg.js +79 -55
  881. package/out/zero-server/src/adapters/pg.js.map +1 -1
  882. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  883. package/out/zero-server/src/adapters/postgresjs.js +66 -40
  884. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  885. package/out/zero-server/src/adapters/prisma.d.ts.map +1 -1
  886. package/out/zero-server/src/adapters/prisma.js +75 -55
  887. package/out/zero-server/src/adapters/prisma.js.map +1 -1
  888. package/out/zero-server/src/custom.d.ts.map +1 -1
  889. package/out/zero-server/src/custom.js +188 -265
  890. package/out/zero-server/src/custom.js.map +1 -1
  891. package/out/zero-server/src/logging.js +6 -5
  892. package/out/zero-server/src/logging.js.map +1 -1
  893. package/out/zero-server/src/mod.js +8 -0
  894. package/out/zero-server/src/pg-query-executor.js +14 -17
  895. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  896. package/out/zero-server/src/process-mutations.js +293 -365
  897. package/out/zero-server/src/process-mutations.js.map +1 -1
  898. package/out/zero-server/src/push-processor.js +33 -49
  899. package/out/zero-server/src/push-processor.js.map +1 -1
  900. package/out/zero-server/src/queries/process-queries.js +106 -96
  901. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  902. package/out/zero-server/src/schema.js +98 -144
  903. package/out/zero-server/src/schema.js.map +1 -1
  904. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  905. package/out/zero-server/src/zql-database.js +54 -69
  906. package/out/zero-server/src/zql-database.js.map +1 -1
  907. package/out/zero-solid/src/bindings.js +12 -0
  908. package/out/zero-solid/src/mod.js +5 -0
  909. package/out/zero-solid/src/solid-view.js +135 -227
  910. package/out/zero-solid/src/solid-view.js.map +1 -1
  911. package/out/zero-solid/src/use-connection-state.js +18 -14
  912. package/out/zero-solid/src/use-connection-state.js.map +1 -1
  913. package/out/zero-solid/src/use-query.js +55 -100
  914. package/out/zero-solid/src/use-query.js.map +1 -1
  915. package/out/zero-solid/src/use-zero-online.js +18 -12
  916. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  917. package/out/zero-solid/src/use-zero.js +65 -77
  918. package/out/zero-solid/src/use-zero.js.map +1 -1
  919. package/out/zero-solid/src/zero.js +22 -0
  920. package/out/zero-types/src/format.js +8 -7
  921. package/out/zero-types/src/format.js.map +1 -1
  922. package/out/zero-types/src/name-mapper.js +34 -47
  923. package/out/zero-types/src/name-mapper.js.map +1 -1
  924. package/out/zql/src/builder/builder.d.ts.map +1 -1
  925. package/out/zql/src/builder/builder.js +315 -476
  926. package/out/zql/src/builder/builder.js.map +1 -1
  927. package/out/zql/src/builder/debug-delegate.js +69 -74
  928. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  929. package/out/zql/src/builder/filter.js +116 -140
  930. package/out/zql/src/builder/filter.js.map +1 -1
  931. package/out/zql/src/builder/like.js +41 -46
  932. package/out/zql/src/builder/like.js.map +1 -1
  933. package/out/zql/src/error.js +10 -9
  934. package/out/zql/src/error.js.map +1 -1
  935. package/out/zql/src/ivm/array-view.js +89 -91
  936. package/out/zql/src/ivm/array-view.js.map +1 -1
  937. package/out/zql/src/ivm/constraint.js +65 -74
  938. package/out/zql/src/ivm/constraint.js.map +1 -1
  939. package/out/zql/src/ivm/data.js +61 -48
  940. package/out/zql/src/ivm/data.js.map +1 -1
  941. package/out/zql/src/ivm/exists.js +164 -213
  942. package/out/zql/src/ivm/exists.js.map +1 -1
  943. package/out/zql/src/ivm/fan-in.js +62 -59
  944. package/out/zql/src/ivm/fan-in.js.map +1 -1
  945. package/out/zql/src/ivm/fan-out.js +52 -61
  946. package/out/zql/src/ivm/fan-out.js.map +1 -1
  947. package/out/zql/src/ivm/filter-operators.js +91 -96
  948. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  949. package/out/zql/src/ivm/filter-push.js +22 -26
  950. package/out/zql/src/ivm/filter-push.js.map +1 -1
  951. package/out/zql/src/ivm/filter.js +41 -35
  952. package/out/zql/src/ivm/filter.js.map +1 -1
  953. package/out/zql/src/ivm/flipped-join.js +282 -391
  954. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  955. package/out/zql/src/ivm/join-utils.js +85 -115
  956. package/out/zql/src/ivm/join-utils.js.map +1 -1
  957. package/out/zql/src/ivm/join.js +162 -231
  958. package/out/zql/src/ivm/join.js.map +1 -1
  959. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +21 -25
  960. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  961. package/out/zql/src/ivm/memory-source.js +364 -503
  962. package/out/zql/src/ivm/memory-source.js.map +1 -1
  963. package/out/zql/src/ivm/memory-storage.js +33 -34
  964. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  965. package/out/zql/src/ivm/operator.js +13 -15
  966. package/out/zql/src/ivm/operator.js.map +1 -1
  967. package/out/zql/src/ivm/push-accumulated.js +267 -270
  968. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  969. package/out/zql/src/ivm/skip.js +91 -104
  970. package/out/zql/src/ivm/skip.js.map +1 -1
  971. package/out/zql/src/ivm/stream.js +10 -10
  972. package/out/zql/src/ivm/stream.js.map +1 -1
  973. package/out/zql/src/ivm/take.js +422 -569
  974. package/out/zql/src/ivm/take.js.map +1 -1
  975. package/out/zql/src/ivm/union-fan-in.js +157 -231
  976. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  977. package/out/zql/src/ivm/union-fan-out.js +38 -43
  978. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  979. package/out/zql/src/ivm/view-apply-change.js +166 -255
  980. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  981. package/out/zql/src/mutate/crud.js +35 -34
  982. package/out/zql/src/mutate/crud.js.map +1 -1
  983. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  984. package/out/zql/src/mutate/custom.js +7 -11
  985. package/out/zql/src/mutate/custom.js.map +1 -1
  986. package/out/zql/src/mutate/mutator-registry.js +67 -71
  987. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  988. package/out/zql/src/mutate/mutator.js +26 -25
  989. package/out/zql/src/mutate/mutator.js.map +1 -1
  990. package/out/zql/src/planner/planner-builder.js +134 -239
  991. package/out/zql/src/planner/planner-builder.js.map +1 -1
  992. package/out/zql/src/planner/planner-connection.js +222 -212
  993. package/out/zql/src/planner/planner-connection.js.map +1 -1
  994. package/out/zql/src/planner/planner-constraint.js +15 -7
  995. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  996. package/out/zql/src/planner/planner-debug.js +199 -224
  997. package/out/zql/src/planner/planner-debug.js.map +1 -1
  998. package/out/zql/src/planner/planner-fan-in.js +146 -162
  999. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1000. package/out/zql/src/planner/planner-fan-out.js +62 -74
  1001. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1002. package/out/zql/src/planner/planner-graph.js +302 -334
  1003. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1004. package/out/zql/src/planner/planner-join.js +255 -240
  1005. package/out/zql/src/planner/planner-join.js.map +1 -1
  1006. package/out/zql/src/planner/planner-node.js +10 -6
  1007. package/out/zql/src/planner/planner-node.js.map +1 -1
  1008. package/out/zql/src/planner/planner-source.js +15 -22
  1009. package/out/zql/src/planner/planner-source.js.map +1 -1
  1010. package/out/zql/src/planner/planner-terminus.js +28 -28
  1011. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1012. package/out/zql/src/query/complete-ordering.js +37 -61
  1013. package/out/zql/src/query/complete-ordering.js.map +1 -1
  1014. package/out/zql/src/query/create-builder.js +14 -22
  1015. package/out/zql/src/query/create-builder.js.map +1 -1
  1016. package/out/zql/src/query/error.js +10 -12
  1017. package/out/zql/src/query/error.js.map +1 -1
  1018. package/out/zql/src/query/escape-like.js +6 -5
  1019. package/out/zql/src/query/escape-like.js.map +1 -1
  1020. package/out/zql/src/query/expression.js +138 -157
  1021. package/out/zql/src/query/expression.js.map +1 -1
  1022. package/out/zql/src/query/measure-push-operator.js +35 -38
  1023. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1024. package/out/zql/src/query/metrics-delegate.js +7 -7
  1025. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1026. package/out/zql/src/query/named.js +52 -51
  1027. package/out/zql/src/query/named.js.map +1 -1
  1028. package/out/zql/src/query/query-delegate-base.js +190 -238
  1029. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1030. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1031. package/out/zql/src/query/query-impl.js +271 -405
  1032. package/out/zql/src/query/query-impl.js.map +1 -1
  1033. package/out/zql/src/query/query-internals.js +16 -8
  1034. package/out/zql/src/query/query-internals.js.map +1 -1
  1035. package/out/zql/src/query/query-registry.js +83 -98
  1036. package/out/zql/src/query/query-registry.js.map +1 -1
  1037. package/out/zql/src/query/query.d.ts.map +1 -1
  1038. package/out/zql/src/query/query.js +2 -0
  1039. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  1040. package/out/zql/src/query/runnable-query-impl.js +30 -55
  1041. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  1042. package/out/zql/src/query/static-query.js +7 -14
  1043. package/out/zql/src/query/static-query.js.map +1 -1
  1044. package/out/zql/src/query/ttl.js +45 -67
  1045. package/out/zql/src/query/ttl.js.map +1 -1
  1046. package/out/zql/src/query/validate-input.js +23 -20
  1047. package/out/zql/src/query/validate-input.js.map +1 -1
  1048. package/out/zqlite/src/database-storage.js +99 -103
  1049. package/out/zqlite/src/database-storage.js.map +1 -1
  1050. package/out/zqlite/src/db.js +206 -249
  1051. package/out/zqlite/src/db.js.map +1 -1
  1052. package/out/zqlite/src/explain-queries.js +11 -13
  1053. package/out/zqlite/src/explain-queries.js.map +1 -1
  1054. package/out/zqlite/src/internal/sql-inline.js +54 -37
  1055. package/out/zqlite/src/internal/sql-inline.js.map +1 -1
  1056. package/out/zqlite/src/internal/sql.js +17 -15
  1057. package/out/zqlite/src/internal/sql.js.map +1 -1
  1058. package/out/zqlite/src/internal/statement-cache.js +117 -92
  1059. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1060. package/out/zqlite/src/mod.js +5 -0
  1061. package/out/zqlite/src/query-builder.js +81 -172
  1062. package/out/zqlite/src/query-builder.js.map +1 -1
  1063. package/out/zqlite/src/query-delegate.js +45 -55
  1064. package/out/zqlite/src/query-delegate.js.map +1 -1
  1065. package/out/zqlite/src/resolve-scalar-subqueries.js +134 -124
  1066. package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
  1067. package/out/zqlite/src/sqlite-cost-model.js +92 -97
  1068. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1069. package/out/zqlite/src/sqlite-stat-fanout.js +304 -286
  1070. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1071. package/out/zqlite/src/table-source.js +281 -455
  1072. package/out/zqlite/src/table-source.js.map +1 -1
  1073. package/package.json +8 -7
  1074. package/out/replicache/src/db/index-operation-enum.js +0 -7
  1075. package/out/replicache/src/db/index-operation-enum.js.map +0 -1
  1076. package/out/replicache/src/db/meta-type-enum.js +0 -7
  1077. package/out/replicache/src/db/meta-type-enum.js.map +0 -1
  1078. package/out/replicache/src/format-version-enum.js +0 -11
  1079. package/out/replicache/src/format-version-enum.js.map +0 -1
  1080. package/out/replicache/src/http-status-unauthorized.js +0 -5
  1081. package/out/replicache/src/http-status-unauthorized.js.map +0 -1
  1082. package/out/replicache/src/invoke-kind-enum.js +0 -7
  1083. package/out/replicache/src/invoke-kind-enum.js.map +0 -1
  1084. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +0 -9
  1085. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +0 -1
  1086. package/out/zero/package.json.js +0 -9
  1087. package/out/zero/package.json.js.map +0 -1
  1088. package/out/zero/src/adapters/drizzle.js.map +0 -1
  1089. package/out/zero/src/adapters/pg.js.map +0 -1
  1090. package/out/zero/src/adapters/postgresjs.js.map +0 -1
  1091. package/out/zero/src/adapters/prisma.js.map +0 -1
  1092. package/out/zero/src/analyze-query.js.map +0 -1
  1093. package/out/zero/src/ast-to-zql.js.map +0 -1
  1094. package/out/zero/src/bindings.js.map +0 -1
  1095. package/out/zero/src/change-protocol/v0.js.map +0 -1
  1096. package/out/zero/src/cli.js.map +0 -1
  1097. package/out/zero/src/deploy-permissions.js.map +0 -1
  1098. package/out/zero/src/expo-sqlite.js.map +0 -1
  1099. package/out/zero/src/op-sqlite.js.map +0 -1
  1100. package/out/zero/src/pg.js.map +0 -1
  1101. package/out/zero/src/react.js.map +0 -1
  1102. package/out/zero/src/server.js.map +0 -1
  1103. package/out/zero/src/solid.js.map +0 -1
  1104. package/out/zero/src/sqlite.js.map +0 -1
  1105. package/out/zero/src/transform-query.js.map +0 -1
  1106. package/out/zero/src/zero.js.map +0 -1
  1107. package/out/zero/src/zqlite.js.map +0 -1
  1108. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +0 -11
  1109. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +0 -1
  1110. package/out/zero-cache/src/db/postgres-type-class-enum.js +0 -17
  1111. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +0 -1
  1112. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +0 -9
  1113. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +0 -1
@@ -1,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 {};