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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1113) hide show
  1. package/out/_virtual/_@oxc-project_runtime@0.115.0/helpers/usingCtx.js +57 -0
  2. package/out/_virtual/_rolldown/runtime.js +27 -0
  3. package/out/analyze-query/src/bin-analyze.js +195 -280
  4. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  5. package/out/analyze-query/src/bin-transform.js +35 -40
  6. package/out/analyze-query/src/bin-transform.js.map +1 -1
  7. package/out/analyze-query/src/explain-queries.js +11 -13
  8. package/out/analyze-query/src/explain-queries.js.map +1 -1
  9. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  10. package/out/analyze-query/src/run-ast.js +68 -94
  11. package/out/analyze-query/src/run-ast.js.map +1 -1
  12. package/out/ast-to-zql/src/ast-to-zql.js +105 -153
  13. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  14. package/out/ast-to-zql/src/bin.js +57 -62
  15. package/out/ast-to-zql/src/bin.js.map +1 -1
  16. package/out/ast-to-zql/src/format.js +14 -13
  17. package/out/ast-to-zql/src/format.js.map +1 -1
  18. package/out/datadog/src/datadog-log-sink.js +148 -213
  19. package/out/datadog/src/datadog-log-sink.js.map +1 -1
  20. package/out/otel/src/enabled.js +9 -11
  21. package/out/otel/src/enabled.js.map +1 -1
  22. package/out/otel/src/log-options.js +25 -35
  23. package/out/otel/src/log-options.js.map +1 -1
  24. package/out/otel/src/maybe-time.js +13 -14
  25. package/out/otel/src/maybe-time.js.map +1 -1
  26. package/out/otel/src/span.js +23 -26
  27. package/out/otel/src/span.js.map +1 -1
  28. package/out/otel/src/test-log-config.js +11 -10
  29. package/out/otel/src/test-log-config.js.map +1 -1
  30. package/out/otel/src/version.js +6 -5
  31. package/out/otel/src/version.js.map +1 -1
  32. package/out/replicache/src/async-iterable-to-array.js +8 -9
  33. package/out/replicache/src/async-iterable-to-array.js.map +1 -1
  34. package/out/replicache/src/bg-interval.js +28 -35
  35. package/out/replicache/src/bg-interval.js.map +1 -1
  36. package/out/replicache/src/btree/diff.js +6 -5
  37. package/out/replicache/src/btree/diff.js.map +1 -1
  38. package/out/replicache/src/btree/node.js +281 -372
  39. package/out/replicache/src/btree/node.js.map +1 -1
  40. package/out/replicache/src/btree/read.js +155 -256
  41. package/out/replicache/src/btree/read.js.map +1 -1
  42. package/out/replicache/src/btree/splice.js +60 -80
  43. package/out/replicache/src/btree/splice.js.map +1 -1
  44. package/out/replicache/src/btree/write.js +134 -158
  45. package/out/replicache/src/btree/write.js.map +1 -1
  46. package/out/replicache/src/call-default-fetch.js +28 -32
  47. package/out/replicache/src/call-default-fetch.js.map +1 -1
  48. package/out/replicache/src/config.js +2 -0
  49. package/out/replicache/src/connection-loop-delegates.js +31 -33
  50. package/out/replicache/src/connection-loop-delegates.js.map +1 -1
  51. package/out/replicache/src/connection-loop.js +174 -240
  52. package/out/replicache/src/connection-loop.js.map +1 -1
  53. package/out/replicache/src/cookies.js +22 -32
  54. package/out/replicache/src/cookies.js.map +1 -1
  55. package/out/replicache/src/dag/chunk.js +44 -50
  56. package/out/replicache/src/dag/chunk.js.map +1 -1
  57. package/out/replicache/src/dag/gc.js +94 -114
  58. package/out/replicache/src/dag/gc.js.map +1 -1
  59. package/out/replicache/src/dag/key.js +9 -11
  60. package/out/replicache/src/dag/key.js.map +1 -1
  61. package/out/replicache/src/dag/lazy-store.js +458 -510
  62. package/out/replicache/src/dag/lazy-store.js.map +1 -1
  63. package/out/replicache/src/dag/store-impl.js +147 -178
  64. package/out/replicache/src/dag/store-impl.js.map +1 -1
  65. package/out/replicache/src/dag/store.js +19 -22
  66. package/out/replicache/src/dag/store.js.map +1 -1
  67. package/out/replicache/src/dag/visitor.js +23 -21
  68. package/out/replicache/src/dag/visitor.js.map +1 -1
  69. package/out/replicache/src/db/commit.js +209 -283
  70. package/out/replicache/src/db/commit.js.map +1 -1
  71. package/out/replicache/src/db/index.js +79 -122
  72. package/out/replicache/src/db/index.js.map +1 -1
  73. package/out/replicache/src/db/read.js +44 -60
  74. package/out/replicache/src/db/read.js.map +1 -1
  75. package/out/replicache/src/db/rebase.js +22 -77
  76. package/out/replicache/src/db/rebase.js.map +1 -1
  77. package/out/replicache/src/db/write.js +162 -296
  78. package/out/replicache/src/db/write.js.map +1 -1
  79. package/out/replicache/src/deleted-clients.js +59 -87
  80. package/out/replicache/src/deleted-clients.js.map +1 -1
  81. package/out/replicache/src/error-responses.js +18 -26
  82. package/out/replicache/src/error-responses.js.map +1 -1
  83. package/out/replicache/src/expo-sqlite.js +2 -0
  84. package/out/replicache/src/frozen-json.js +74 -108
  85. package/out/replicache/src/frozen-json.js.map +1 -1
  86. package/out/replicache/src/get-default-puller.js +34 -46
  87. package/out/replicache/src/get-default-puller.js.map +1 -1
  88. package/out/replicache/src/get-default-pusher.js +25 -33
  89. package/out/replicache/src/get-default-pusher.js.map +1 -1
  90. package/out/replicache/src/get-kv-store-provider.js +18 -20
  91. package/out/replicache/src/get-kv-store-provider.js.map +1 -1
  92. package/out/replicache/src/hash.js +29 -29
  93. package/out/replicache/src/hash.js.map +1 -1
  94. package/out/replicache/src/http-request-info.js +9 -8
  95. package/out/replicache/src/http-request-info.js.map +1 -1
  96. package/out/replicache/src/impl.js +2 -0
  97. package/out/replicache/src/index-defs.js +17 -28
  98. package/out/replicache/src/index-defs.js.map +1 -1
  99. package/out/replicache/src/kv/expo-sqlite/store.js +52 -50
  100. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  101. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +71 -68
  102. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -1
  103. package/out/replicache/src/kv/idb-store.js +144 -168
  104. package/out/replicache/src/kv/idb-store.js.map +1 -1
  105. package/out/replicache/src/kv/mem-store.js +57 -45
  106. package/out/replicache/src/kv/mem-store.js.map +1 -1
  107. package/out/replicache/src/kv/op-sqlite/store.js +56 -62
  108. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
  109. package/out/replicache/src/kv/op-sqlite/types.d.ts.map +1 -1
  110. package/out/replicache/src/kv/op-sqlite/types.js +7 -6
  111. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
  112. package/out/replicache/src/kv/read-impl.js +26 -25
  113. package/out/replicache/src/kv/read-impl.js.map +1 -1
  114. package/out/replicache/src/kv/sqlite-store.js +194 -207
  115. package/out/replicache/src/kv/sqlite-store.js.map +1 -1
  116. package/out/replicache/src/kv/throw-if-closed.js +12 -19
  117. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  118. package/out/replicache/src/kv/write-impl-base.js +44 -56
  119. package/out/replicache/src/kv/write-impl-base.js.map +1 -1
  120. package/out/replicache/src/kv/write-impl.js +22 -26
  121. package/out/replicache/src/kv/write-impl.js.map +1 -1
  122. package/out/replicache/src/lazy.js +10 -11
  123. package/out/replicache/src/lazy.js.map +1 -1
  124. package/out/replicache/src/log-options.js +14 -7
  125. package/out/replicache/src/log-options.js.map +1 -1
  126. package/out/replicache/src/make-idb-name.js +14 -9
  127. package/out/replicache/src/make-idb-name.js.map +1 -1
  128. package/out/replicache/src/mutation-recovery.js +12 -0
  129. package/out/replicache/src/mutation-recovery.js.map +1 -0
  130. package/out/replicache/src/new-client-channel.js +34 -42
  131. package/out/replicache/src/new-client-channel.js.map +1 -1
  132. package/out/replicache/src/on-persist-channel.js +26 -29
  133. package/out/replicache/src/on-persist-channel.js.map +1 -1
  134. package/out/replicache/src/op-sqlite.js +2 -0
  135. package/out/replicache/src/patch-operation.js +27 -36
  136. package/out/replicache/src/patch-operation.js.map +1 -1
  137. package/out/replicache/src/pending-mutations.js +14 -12
  138. package/out/replicache/src/pending-mutations.js.map +1 -1
  139. package/out/replicache/src/persist/client-gc.js +36 -51
  140. package/out/replicache/src/persist/client-gc.js.map +1 -1
  141. package/out/replicache/src/persist/client-group-gc.js +29 -36
  142. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  143. package/out/replicache/src/persist/client-groups.js +80 -154
  144. package/out/replicache/src/persist/client-groups.js.map +1 -1
  145. package/out/replicache/src/persist/clients.js +212 -307
  146. package/out/replicache/src/persist/clients.js.map +1 -1
  147. package/out/replicache/src/persist/collect-idb-databases.js +109 -171
  148. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
  149. package/out/replicache/src/persist/gather-mem-only-visitor.js +23 -24
  150. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
  151. package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -33
  152. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
  153. package/out/replicache/src/persist/heartbeat.js +31 -41
  154. package/out/replicache/src/persist/heartbeat.js.map +1 -1
  155. package/out/replicache/src/persist/idb-databases-store-db-name.js +9 -12
  156. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -1
  157. package/out/replicache/src/persist/idb-databases-store.js +78 -97
  158. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  159. package/out/replicache/src/persist/make-client-id.js +13 -9
  160. package/out/replicache/src/persist/make-client-id.js.map +1 -1
  161. package/out/replicache/src/persist/persist.js +113 -174
  162. package/out/replicache/src/persist/persist.js.map +1 -1
  163. package/out/replicache/src/persist/refresh.js +94 -183
  164. package/out/replicache/src/persist/refresh.js.map +1 -1
  165. package/out/replicache/src/process-scheduler.js +122 -143
  166. package/out/replicache/src/process-scheduler.js.map +1 -1
  167. package/out/replicache/src/pusher.js +21 -26
  168. package/out/replicache/src/pusher.js.map +1 -1
  169. package/out/replicache/src/replicache-impl.js +844 -1184
  170. package/out/replicache/src/replicache-impl.js.map +1 -1
  171. package/out/replicache/src/report-error.js +9 -6
  172. package/out/replicache/src/report-error.js.map +1 -1
  173. package/out/replicache/src/request-idle.js +13 -11
  174. package/out/replicache/src/request-idle.js.map +1 -1
  175. package/out/replicache/src/scan-iterator.d.ts.map +1 -1
  176. package/out/replicache/src/scan-iterator.js +108 -135
  177. package/out/replicache/src/scan-iterator.js.map +1 -1
  178. package/out/replicache/src/scan-options.js +33 -39
  179. package/out/replicache/src/scan-options.js.map +1 -1
  180. package/out/replicache/src/set-interval-with-signal.js +11 -10
  181. package/out/replicache/src/set-interval-with-signal.js.map +1 -1
  182. package/out/replicache/src/sqlite.js +2 -0
  183. package/out/replicache/src/subscriptions.js +222 -338
  184. package/out/replicache/src/subscriptions.js.map +1 -1
  185. package/out/replicache/src/sync/diff.js +52 -65
  186. package/out/replicache/src/sync/diff.js.map +1 -1
  187. package/out/replicache/src/sync/ids.js +8 -9
  188. package/out/replicache/src/sync/ids.js.map +1 -1
  189. package/out/replicache/src/sync/patch.js +34 -45
  190. package/out/replicache/src/sync/patch.js.map +1 -1
  191. package/out/replicache/src/sync/pull-error.js +15 -15
  192. package/out/replicache/src/sync/pull-error.js.map +1 -1
  193. package/out/replicache/src/sync/pull.js +145 -283
  194. package/out/replicache/src/sync/pull.js.map +1 -1
  195. package/out/replicache/src/sync/push.js +64 -79
  196. package/out/replicache/src/sync/push.js.map +1 -1
  197. package/out/replicache/src/sync/request-id.js +23 -15
  198. package/out/replicache/src/sync/request-id.js.map +1 -1
  199. package/out/replicache/src/sync/sync-head-name.js +6 -5
  200. package/out/replicache/src/sync/sync-head-name.js.map +1 -1
  201. package/out/replicache/src/to-error.js +7 -8
  202. package/out/replicache/src/to-error.js.map +1 -1
  203. package/out/replicache/src/transaction-closed-error.js +15 -15
  204. package/out/replicache/src/transaction-closed-error.js.map +1 -1
  205. package/out/replicache/src/transactions.js +120 -140
  206. package/out/replicache/src/transactions.js.map +1 -1
  207. package/out/replicache/src/version.js +9 -5
  208. package/out/replicache/src/version.js.map +1 -1
  209. package/out/replicache/src/with-transactions.js +23 -20
  210. package/out/replicache/src/with-transactions.js.map +1 -1
  211. package/out/shared/src/abort-error.js +7 -6
  212. package/out/shared/src/abort-error.js.map +1 -1
  213. package/out/shared/src/arrays.js +35 -42
  214. package/out/shared/src/arrays.js.map +1 -1
  215. package/out/shared/src/asserts.js +21 -45
  216. package/out/shared/src/asserts.js.map +1 -1
  217. package/out/shared/src/bigint-json.js +42 -38
  218. package/out/shared/src/bigint-json.js.map +1 -1
  219. package/out/shared/src/binary-search.js +27 -18
  220. package/out/shared/src/binary-search.js.map +1 -1
  221. package/out/shared/src/broadcast-channel.js +20 -23
  222. package/out/shared/src/broadcast-channel.js.map +1 -1
  223. package/out/shared/src/browser-env.js +11 -17
  224. package/out/shared/src/browser-env.js.map +1 -1
  225. package/out/shared/src/btree-set.js +419 -481
  226. package/out/shared/src/btree-set.js.map +1 -1
  227. package/out/shared/src/cache.js +43 -36
  228. package/out/shared/src/cache.js.map +1 -1
  229. package/out/shared/src/centroid.js +24 -26
  230. package/out/shared/src/centroid.js.map +1 -1
  231. package/out/shared/src/config.js +6 -6
  232. package/out/shared/src/config.js.map +1 -1
  233. package/out/shared/src/custom-key-map.js +54 -58
  234. package/out/shared/src/custom-key-map.js.map +1 -1
  235. package/out/shared/src/custom-key-set.js +53 -51
  236. package/out/shared/src/custom-key-set.js.map +1 -1
  237. package/out/shared/src/deep-clone.js +30 -41
  238. package/out/shared/src/deep-clone.js.map +1 -1
  239. package/out/shared/src/deep-merge.js +25 -24
  240. package/out/shared/src/deep-merge.js.map +1 -1
  241. package/out/shared/src/document-visible.js +63 -70
  242. package/out/shared/src/document-visible.js.map +1 -1
  243. package/out/shared/src/dotenv.js +7 -3
  244. package/out/shared/src/dotenv.js.map +1 -1
  245. package/out/shared/src/error.js +43 -64
  246. package/out/shared/src/error.js.map +1 -1
  247. package/out/shared/src/has-own.js +6 -5
  248. package/out/shared/src/has-own.js.map +1 -1
  249. package/out/shared/src/hash.js +15 -14
  250. package/out/shared/src/hash.js.map +1 -1
  251. package/out/shared/src/iterables.js +34 -47
  252. package/out/shared/src/iterables.js.map +1 -1
  253. package/out/shared/src/json-schema.js +25 -30
  254. package/out/shared/src/json-schema.js.map +1 -1
  255. package/out/shared/src/json.js +90 -129
  256. package/out/shared/src/json.js.map +1 -1
  257. package/out/shared/src/logging-test-utils.js +9 -11
  258. package/out/shared/src/logging-test-utils.js.map +1 -1
  259. package/out/shared/src/logging.js +75 -95
  260. package/out/shared/src/logging.js.map +1 -1
  261. package/out/shared/src/must.js +7 -8
  262. package/out/shared/src/must.js.map +1 -1
  263. package/out/shared/src/navigator.js +6 -5
  264. package/out/shared/src/navigator.js.map +1 -1
  265. package/out/shared/src/object-traversal.js +23 -23
  266. package/out/shared/src/object-traversal.js.map +1 -1
  267. package/out/shared/src/objects.js +15 -18
  268. package/out/shared/src/objects.js.map +1 -1
  269. package/out/shared/src/options.js +225 -302
  270. package/out/shared/src/options.js.map +1 -1
  271. package/out/shared/src/parse-big-int.js +12 -11
  272. package/out/shared/src/parse-big-int.js.map +1 -1
  273. package/out/shared/src/promise-race.js +21 -17
  274. package/out/shared/src/promise-race.js.map +1 -1
  275. package/out/shared/src/queue.js +124 -124
  276. package/out/shared/src/queue.js.map +1 -1
  277. package/out/shared/src/rand.js +13 -7
  278. package/out/shared/src/rand.js.map +1 -1
  279. package/out/shared/src/random-uint64.js +8 -7
  280. package/out/shared/src/random-uint64.js.map +1 -1
  281. package/out/shared/src/random-values.js +8 -11
  282. package/out/shared/src/random-values.js.map +1 -1
  283. package/out/shared/src/record-proxy.js +68 -57
  284. package/out/shared/src/record-proxy.js.map +1 -1
  285. package/out/shared/src/resolved-promises.js +9 -11
  286. package/out/shared/src/resolved-promises.js.map +1 -1
  287. package/out/shared/src/sentinels.js +9 -12
  288. package/out/shared/src/sentinels.js.map +1 -1
  289. package/out/shared/src/set-utils.js +41 -63
  290. package/out/shared/src/set-utils.js.map +1 -1
  291. package/out/shared/src/size-of-value.js +55 -51
  292. package/out/shared/src/size-of-value.js.map +1 -1
  293. package/out/shared/src/sleep.js +50 -45
  294. package/out/shared/src/sleep.js.map +1 -1
  295. package/out/shared/src/string-compare.js +8 -11
  296. package/out/shared/src/string-compare.js.map +1 -1
  297. package/out/shared/src/subscribable.js +34 -33
  298. package/out/shared/src/subscribable.js.map +1 -1
  299. package/out/shared/src/tdigest-schema.js +11 -7
  300. package/out/shared/src/tdigest-schema.js.map +1 -1
  301. package/out/shared/src/tdigest.js +197 -270
  302. package/out/shared/src/tdigest.js.map +1 -1
  303. package/out/shared/src/valita.js +145 -174
  304. package/out/shared/src/valita.js.map +1 -1
  305. package/out/z2s/src/compiler.d.ts.map +1 -1
  306. package/out/z2s/src/compiler.js +238 -468
  307. package/out/z2s/src/compiler.js.map +1 -1
  308. package/out/z2s/src/sql.d.ts +0 -1
  309. package/out/z2s/src/sql.d.ts.map +1 -1
  310. package/out/z2s/src/sql.js +149 -194
  311. package/out/z2s/src/sql.js.map +1 -1
  312. package/out/zero/package.js +193 -0
  313. package/out/zero/package.js.map +1 -0
  314. package/out/zero/src/adapters/drizzle.js +1 -6
  315. package/out/zero/src/adapters/pg.js +1 -6
  316. package/out/zero/src/adapters/postgresjs.js +1 -6
  317. package/out/zero/src/adapters/prisma.js +1 -5
  318. package/out/zero/src/analyze-query.js +1 -1
  319. package/out/zero/src/ast-to-zql.js +1 -1
  320. package/out/zero/src/bindings.js +6 -21
  321. package/out/zero/src/build-schema.js +5 -1
  322. package/out/zero/src/build-schema.js.map +1 -1
  323. package/out/zero/src/change-protocol/v0.js +3 -5
  324. package/out/zero/src/cli.js +2 -2
  325. package/out/zero/src/deploy-permissions.js +1 -1
  326. package/out/zero/src/expo-sqlite.js +2 -4
  327. package/out/zero/src/op-sqlite.js +2 -4
  328. package/out/zero/src/pg.js +2 -20
  329. package/out/zero/src/react-native.js +16 -12
  330. package/out/zero/src/react-native.js.map +1 -1
  331. package/out/zero/src/react.js +3 -12
  332. package/out/zero/src/server/runner/main.js +2 -0
  333. package/out/zero/src/server.js +2 -17
  334. package/out/zero/src/solid.js +3 -12
  335. package/out/zero/src/sqlite.js +2 -6
  336. package/out/zero/src/transform-query.js +1 -1
  337. package/out/zero/src/zero-cache-dev.js +124 -151
  338. package/out/zero/src/zero-cache-dev.js.map +1 -1
  339. package/out/zero/src/zero-out.js +9 -6
  340. package/out/zero/src/zero-out.js.map +1 -1
  341. package/out/zero/src/zero.js +6 -55
  342. package/out/zero/src/zqlite.js +2 -7
  343. package/out/zero-cache/src/auth/auth.js +138 -172
  344. package/out/zero-cache/src/auth/auth.js.map +1 -1
  345. package/out/zero-cache/src/auth/jwt.js +25 -33
  346. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  347. package/out/zero-cache/src/auth/load-permissions.js +54 -62
  348. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  349. package/out/zero-cache/src/auth/read-authorizer.js +70 -80
  350. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  351. package/out/zero-cache/src/auth/write-authorizer.js +284 -432
  352. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  353. package/out/zero-cache/src/config/network.js +31 -45
  354. package/out/zero-cache/src/config/network.js.map +1 -1
  355. package/out/zero-cache/src/config/normalize.js +81 -83
  356. package/out/zero-cache/src/config/normalize.js.map +1 -1
  357. package/out/zero-cache/src/config/server-context.js +32 -29
  358. package/out/zero-cache/src/config/server-context.js.map +1 -1
  359. package/out/zero-cache/src/config/zero-config.d.ts +4 -0
  360. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  361. package/out/zero-cache/src/config/zero-config.js +753 -816
  362. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  363. package/out/zero-cache/src/custom/fetch.js +183 -230
  364. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  365. package/out/zero-cache/src/custom-queries/transform-query.js +93 -99
  366. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  367. package/out/zero-cache/src/db/create.js +27 -29
  368. package/out/zero-cache/src/db/create.js.map +1 -1
  369. package/out/zero-cache/src/db/delete-lite-db.js +11 -7
  370. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  371. package/out/zero-cache/src/db/lite-tables.d.ts +2 -1
  372. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  373. package/out/zero-cache/src/db/lite-tables.js +120 -156
  374. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  375. package/out/zero-cache/src/db/migration-lite.js +110 -178
  376. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  377. package/out/zero-cache/src/db/migration.js +82 -151
  378. package/out/zero-cache/src/db/migration.js.map +1 -1
  379. package/out/zero-cache/src/db/mode-enum.js +8 -9
  380. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  381. package/out/zero-cache/src/db/pg-copy.js +56 -54
  382. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  383. package/out/zero-cache/src/db/pg-to-lite.js +74 -110
  384. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  385. package/out/zero-cache/src/db/pg-type-parser.js +19 -36
  386. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  387. package/out/zero-cache/src/db/run-transaction.js +19 -20
  388. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  389. package/out/zero-cache/src/db/specs.d.ts +8 -2
  390. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  391. package/out/zero-cache/src/db/specs.js +42 -78
  392. package/out/zero-cache/src/db/specs.js.map +1 -1
  393. package/out/zero-cache/src/db/statements.js +52 -59
  394. package/out/zero-cache/src/db/statements.js.map +1 -1
  395. package/out/zero-cache/src/db/transaction-pool.js +376 -400
  396. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  397. package/out/zero-cache/src/db/warmup.js +13 -24
  398. package/out/zero-cache/src/db/warmup.js.map +1 -1
  399. package/out/zero-cache/src/observability/events.js +89 -99
  400. package/out/zero-cache/src/observability/events.js.map +1 -1
  401. package/out/zero-cache/src/observability/metrics.js +30 -54
  402. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  403. package/out/zero-cache/src/scripts/decommission.js +42 -47
  404. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  405. package/out/zero-cache/src/scripts/deploy-permissions.js +106 -144
  406. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  407. package/out/zero-cache/src/scripts/permissions.js +86 -107
  408. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  409. package/out/zero-cache/src/server/anonymous-otel-start.js +306 -440
  410. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  411. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  412. package/out/zero-cache/src/server/change-streamer.js +57 -128
  413. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  414. package/out/zero-cache/src/server/inspector-delegate.js +89 -100
  415. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  416. package/out/zero-cache/src/server/logging.js +18 -26
  417. package/out/zero-cache/src/server/logging.js.map +1 -1
  418. package/out/zero-cache/src/server/main.js +85 -142
  419. package/out/zero-cache/src/server/main.js.map +1 -1
  420. package/out/zero-cache/src/server/mutator.js +16 -13
  421. package/out/zero-cache/src/server/mutator.js.map +1 -1
  422. package/out/zero-cache/src/server/otel-diag-logger.js +42 -49
  423. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  424. package/out/zero-cache/src/server/otel-log-sink.js +34 -44
  425. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  426. package/out/zero-cache/src/server/otel-start.js +43 -51
  427. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  428. package/out/zero-cache/src/server/priority-op.js +27 -25
  429. package/out/zero-cache/src/server/priority-op.js.map +1 -1
  430. package/out/zero-cache/src/server/reaper.js +32 -43
  431. package/out/zero-cache/src/server/reaper.js.map +1 -1
  432. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  433. package/out/zero-cache/src/server/replicator.js +41 -57
  434. package/out/zero-cache/src/server/replicator.js.map +1 -1
  435. package/out/zero-cache/src/server/runner/main.js +7 -8
  436. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  437. package/out/zero-cache/src/server/runner/run-worker.js +56 -52
  438. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  439. package/out/zero-cache/src/server/runner/runtime.js +26 -32
  440. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  441. package/out/zero-cache/src/server/runner/zero-dispatcher.js +22 -27
  442. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  443. package/out/zero-cache/src/server/syncer.js +79 -148
  444. package/out/zero-cache/src/server/syncer.js.map +1 -1
  445. package/out/zero-cache/src/server/worker-dispatcher.js +84 -113
  446. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  447. package/out/zero-cache/src/server/worker-urls.d.ts +2 -1
  448. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -1
  449. package/out/zero-cache/src/server/worker-urls.js +14 -18
  450. package/out/zero-cache/src/server/worker-urls.js.map +1 -1
  451. package/out/zero-cache/src/server/write-worker.js +2 -0
  452. package/out/zero-cache/src/services/analyze.js +61 -129
  453. package/out/zero-cache/src/services/analyze.js.map +1 -1
  454. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +420 -419
  455. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  456. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +111 -114
  457. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  458. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +2 -0
  459. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +1 -1
  460. package/out/zero-cache/src/services/change-source/common/replica-schema.js +100 -115
  461. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  462. package/out/zero-cache/src/services/change-source/custom/change-source.js +154 -216
  463. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  464. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js +11 -14
  465. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
  466. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +1 -1
  467. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +169 -209
  468. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  469. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  470. package/out/zero-cache/src/services/change-source/pg/change-source.js +676 -835
  471. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  472. package/out/zero-cache/src/services/change-source/pg/decommission.js +19 -23
  473. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  474. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +258 -411
  475. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  476. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +59 -65
  477. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  478. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +218 -247
  479. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  480. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +100 -142
  481. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  482. package/out/zero-cache/src/services/change-source/pg/lsn.js +17 -19
  483. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  484. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +88 -98
  485. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  486. package/out/zero-cache/src/services/change-source/pg/schema/init.js +96 -177
  487. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  488. package/out/zero-cache/src/services/change-source/pg/schema/published.js +69 -107
  489. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  490. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +151 -212
  491. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  492. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +22 -53
  493. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  494. package/out/zero-cache/src/services/change-source/protocol/current/control.js +24 -12
  495. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  496. package/out/zero-cache/src/services/change-source/protocol/current/data.js +180 -290
  497. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  498. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +21 -33
  499. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  500. package/out/zero-cache/src/services/change-source/protocol/current/json.js +7 -18
  501. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -1
  502. package/out/zero-cache/src/services/change-source/protocol/current/path.js +24 -5
  503. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  504. package/out/zero-cache/src/services/change-source/protocol/current/status.js +25 -19
  505. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  506. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +24 -16
  507. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  508. package/out/zero-cache/src/services/change-source/protocol/current.js +51 -46
  509. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  510. package/out/zero-cache/src/services/change-source/protocol/mod.js +2 -0
  511. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +165 -171
  512. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  513. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +100 -0
  514. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +1 -0
  515. package/out/zero-cache/src/services/change-streamer/broadcast.js +165 -0
  516. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -0
  517. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +154 -221
  518. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  519. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  520. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  521. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +341 -293
  522. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  523. package/out/zero-cache/src/services/change-streamer/change-streamer.js +17 -24
  524. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  525. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +17 -1
  526. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  527. package/out/zero-cache/src/services/change-streamer/forwarder.js +85 -56
  528. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  529. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +49 -43
  530. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  531. package/out/zero-cache/src/services/change-streamer/schema/init.js +61 -89
  532. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  533. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +20 -1
  534. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  535. package/out/zero-cache/src/services/change-streamer/schema/tables.js +131 -109
  536. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  537. package/out/zero-cache/src/services/change-streamer/snapshot.js +26 -28
  538. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  539. package/out/zero-cache/src/services/change-streamer/storer.js +434 -513
  540. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  541. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +18 -0
  542. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  543. package/out/zero-cache/src/services/change-streamer/subscriber.js +143 -100
  544. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  545. package/out/zero-cache/src/services/heapz.js +18 -20
  546. package/out/zero-cache/src/services/heapz.js.map +1 -1
  547. package/out/zero-cache/src/services/http-service.js +59 -57
  548. package/out/zero-cache/src/services/http-service.js.map +1 -1
  549. package/out/zero-cache/src/services/life-cycle.js +182 -214
  550. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  551. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +102 -81
  552. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  553. package/out/zero-cache/src/services/litestream/commands.js +144 -205
  554. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  555. package/out/zero-cache/src/services/mutagen/error.js +10 -14
  556. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  557. package/out/zero-cache/src/services/mutagen/mutagen.js +166 -264
  558. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  559. package/out/zero-cache/src/services/mutagen/pusher.js +372 -487
  560. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  561. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  562. package/out/zero-cache/src/services/replicator/change-processor.js +483 -595
  563. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  564. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +4 -2
  565. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  566. package/out/zero-cache/src/services/replicator/incremental-sync.js +118 -143
  567. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  568. package/out/zero-cache/src/services/replicator/notifier.js +52 -28
  569. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  570. package/out/zero-cache/src/services/replicator/replication-status.js +105 -128
  571. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  572. package/out/zero-cache/src/services/replicator/replicator.d.ts +2 -1
  573. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  574. package/out/zero-cache/src/services/replicator/replicator.js +32 -34
  575. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  576. package/out/zero-cache/src/services/replicator/schema/change-log.js +101 -133
  577. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  578. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +145 -174
  579. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  580. package/out/zero-cache/src/services/replicator/schema/constants.js +11 -5
  581. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  582. package/out/zero-cache/src/services/replicator/schema/replication-state.js +56 -107
  583. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  584. package/out/zero-cache/src/services/replicator/schema/table-metadata.d.ts +28 -7
  585. package/out/zero-cache/src/services/replicator/schema/table-metadata.d.ts.map +1 -1
  586. package/out/zero-cache/src/services/replicator/schema/table-metadata.js +96 -50
  587. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
  588. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +69 -0
  589. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -0
  590. package/out/zero-cache/src/services/replicator/write-worker-client.js +96 -0
  591. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
  592. package/out/zero-cache/src/services/replicator/write-worker.js +68 -0
  593. package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -0
  594. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  595. package/out/zero-cache/src/services/run-ast.js +79 -118
  596. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  597. package/out/zero-cache/src/services/runner.js +39 -41
  598. package/out/zero-cache/src/services/runner.js.map +1 -1
  599. package/out/zero-cache/src/services/running-state.js +129 -134
  600. package/out/zero-cache/src/services/running-state.js.map +1 -1
  601. package/out/zero-cache/src/services/statz.js +139 -200
  602. package/out/zero-cache/src/services/statz.js.map +1 -1
  603. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +46 -49
  604. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  605. package/out/zero-cache/src/services/view-syncer/client-handler.js +257 -299
  606. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  607. package/out/zero-cache/src/services/view-syncer/client-schema.js +52 -82
  608. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  609. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +85 -107
  610. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  611. package/out/zero-cache/src/services/view-syncer/cvr-store.js +604 -757
  612. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  613. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -739
  614. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  615. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +60 -40
  616. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  617. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +95 -178
  618. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  619. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +3 -2
  620. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  621. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +574 -709
  622. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  623. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  624. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +246 -257
  625. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  626. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +59 -45
  627. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  628. package/out/zero-cache/src/services/view-syncer/schema/init.js +121 -189
  629. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  630. package/out/zero-cache/src/services/view-syncer/schema/types.js +138 -263
  631. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  632. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  633. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  634. package/out/zero-cache/src/services/view-syncer/snapshotter.js +322 -331
  635. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  636. package/out/zero-cache/src/services/view-syncer/tracer.js +7 -6
  637. package/out/zero-cache/src/services/view-syncer/tracer.js.map +1 -1
  638. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -11
  639. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  640. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1067 -1603
  641. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  642. package/out/zero-cache/src/types/error-with-level.js +19 -25
  643. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  644. package/out/zero-cache/src/types/http.js +17 -26
  645. package/out/zero-cache/src/types/http.js.map +1 -1
  646. package/out/zero-cache/src/types/lexi-version.js +28 -42
  647. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  648. package/out/zero-cache/src/types/lite.js +101 -121
  649. package/out/zero-cache/src/types/lite.js.map +1 -1
  650. package/out/zero-cache/src/types/names.js +6 -5
  651. package/out/zero-cache/src/types/names.js.map +1 -1
  652. package/out/zero-cache/src/types/pg-data-type.d.ts +1 -0
  653. package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -1
  654. package/out/zero-cache/src/types/pg-data-type.js +58 -73
  655. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  656. package/out/zero-cache/src/types/pg-types.js +12 -19
  657. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  658. package/out/zero-cache/src/types/pg.js +144 -218
  659. package/out/zero-cache/src/types/pg.js.map +1 -1
  660. package/out/zero-cache/src/types/processes.js +95 -90
  661. package/out/zero-cache/src/types/processes.js.map +1 -1
  662. package/out/zero-cache/src/types/profiler.js +32 -27
  663. package/out/zero-cache/src/types/profiler.js.map +1 -1
  664. package/out/zero-cache/src/types/row-key.js +42 -30
  665. package/out/zero-cache/src/types/row-key.js.map +1 -1
  666. package/out/zero-cache/src/types/shards.js +36 -45
  667. package/out/zero-cache/src/types/shards.js.map +1 -1
  668. package/out/zero-cache/src/types/sql.js +20 -9
  669. package/out/zero-cache/src/types/sql.js.map +1 -1
  670. package/out/zero-cache/src/types/state-version.js +17 -23
  671. package/out/zero-cache/src/types/state-version.js.map +1 -1
  672. package/out/zero-cache/src/types/streams.js +234 -270
  673. package/out/zero-cache/src/types/streams.js.map +1 -1
  674. package/out/zero-cache/src/types/strings.js +10 -13
  675. package/out/zero-cache/src/types/strings.js.map +1 -1
  676. package/out/zero-cache/src/types/subscription.d.ts +3 -1
  677. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  678. package/out/zero-cache/src/types/subscription.js +266 -214
  679. package/out/zero-cache/src/types/subscription.js.map +1 -1
  680. package/out/zero-cache/src/types/url-params.js +30 -39
  681. package/out/zero-cache/src/types/url-params.js.map +1 -1
  682. package/out/zero-cache/src/types/websocket-handoff.js +62 -75
  683. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  684. package/out/zero-cache/src/types/ws.js +43 -53
  685. package/out/zero-cache/src/types/ws.js.map +1 -1
  686. package/out/zero-cache/src/workers/connect-params.js +42 -43
  687. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  688. package/out/zero-cache/src/workers/connection.js +213 -282
  689. package/out/zero-cache/src/workers/connection.js.map +1 -1
  690. package/out/zero-cache/src/workers/mutator.js +22 -21
  691. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  692. package/out/zero-cache/src/workers/replicator.d.ts +7 -0
  693. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  694. package/out/zero-cache/src/workers/replicator.js +92 -97
  695. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  696. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +121 -203
  697. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  698. package/out/zero-cache/src/workers/syncer.js +147 -201
  699. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  700. package/out/zero-client/src/client/active-clients-manager.js +178 -187
  701. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  702. package/out/zero-client/src/client/bindings.js +11 -0
  703. package/out/zero-client/src/client/client-error-kind-enum.js +18 -29
  704. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -1
  705. package/out/zero-client/src/client/connection-manager.js +291 -346
  706. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  707. package/out/zero-client/src/client/connection-status-enum.js +20 -15
  708. package/out/zero-client/src/client/connection-status-enum.js.map +1 -1
  709. package/out/zero-client/src/client/connection.js +92 -110
  710. package/out/zero-client/src/client/connection.js.map +1 -1
  711. package/out/zero-client/src/client/context.js +84 -100
  712. package/out/zero-client/src/client/context.js.map +1 -1
  713. package/out/zero-client/src/client/crud-impl.js +56 -88
  714. package/out/zero-client/src/client/crud-impl.js.map +1 -1
  715. package/out/zero-client/src/client/crud.js +127 -129
  716. package/out/zero-client/src/client/crud.js.map +1 -1
  717. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  718. package/out/zero-client/src/client/custom.js +50 -74
  719. package/out/zero-client/src/client/custom.js.map +1 -1
  720. package/out/zero-client/src/client/delete-clients-manager.js +72 -93
  721. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  722. package/out/zero-client/src/client/enable-analytics.js +8 -16
  723. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  724. package/out/zero-client/src/client/error.js +118 -133
  725. package/out/zero-client/src/client/error.js.map +1 -1
  726. package/out/zero-client/src/client/http-string.js +7 -7
  727. package/out/zero-client/src/client/http-string.js.map +1 -1
  728. package/out/zero-client/src/client/inspector/client-group.js +21 -26
  729. package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
  730. package/out/zero-client/src/client/inspector/client.js +23 -26
  731. package/out/zero-client/src/client/inspector/client.js.map +1 -1
  732. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +72 -73
  733. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
  734. package/out/zero-client/src/client/inspector/inspector.js +46 -51
  735. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  736. package/out/zero-client/src/client/inspector/lazy-inspector.js +132 -192
  737. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  738. package/out/zero-client/src/client/inspector/query.js +72 -77
  739. package/out/zero-client/src/client/inspector/query.js.map +1 -1
  740. package/out/zero-client/src/client/ivm-branch.js +118 -145
  741. package/out/zero-client/src/client/ivm-branch.js.map +1 -1
  742. package/out/zero-client/src/client/keys.js +15 -31
  743. package/out/zero-client/src/client/keys.js.map +1 -1
  744. package/out/zero-client/src/client/log-options.js +43 -57
  745. package/out/zero-client/src/client/log-options.js.map +1 -1
  746. package/out/zero-client/src/client/make-mutate-property.js +46 -29
  747. package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
  748. package/out/zero-client/src/client/make-replicache-mutators.js +80 -96
  749. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  750. package/out/zero-client/src/client/metric-name-enum.js +11 -15
  751. package/out/zero-client/src/client/metric-name-enum.js.map +1 -1
  752. package/out/zero-client/src/client/metrics.js +210 -237
  753. package/out/zero-client/src/client/metrics.js.map +1 -1
  754. package/out/zero-client/src/client/mutation-tracker.js +264 -354
  755. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  756. package/out/zero-client/src/client/mutator-proxy.js +122 -151
  757. package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
  758. package/out/zero-client/src/client/options.js +7 -10
  759. package/out/zero-client/src/client/options.js.map +1 -1
  760. package/out/zero-client/src/client/query-manager.js +305 -373
  761. package/out/zero-client/src/client/query-manager.js.map +1 -1
  762. package/out/zero-client/src/client/reload-error-handler.js +80 -101
  763. package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
  764. package/out/zero-client/src/client/server-option.js +30 -59
  765. package/out/zero-client/src/client/server-option.js.map +1 -1
  766. package/out/zero-client/src/client/update-needed-reason-type-enum.js +27 -9
  767. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -1
  768. package/out/zero-client/src/client/version.js +9 -5
  769. package/out/zero-client/src/client/version.js.map +1 -1
  770. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -1
  771. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  772. package/out/zero-client/src/client/zero-poke-handler.js +205 -293
  773. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  774. package/out/zero-client/src/client/zero-rep.js +61 -68
  775. package/out/zero-client/src/client/zero-rep.js.map +1 -1
  776. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  777. package/out/zero-client/src/client/zero.js +1367 -1834
  778. package/out/zero-client/src/client/zero.js.map +1 -1
  779. package/out/zero-client/src/mod.js +21 -0
  780. package/out/zero-client/src/util/nanoid.js +13 -18
  781. package/out/zero-client/src/util/nanoid.js.map +1 -1
  782. package/out/zero-client/src/util/socket.js +6 -5
  783. package/out/zero-client/src/util/socket.js.map +1 -1
  784. package/out/zero-pg/src/mod.js +10 -0
  785. package/out/zero-protocol/src/analyze-query-result.js +108 -148
  786. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  787. package/out/zero-protocol/src/application-error.js +36 -34
  788. package/out/zero-protocol/src/application-error.js.map +1 -1
  789. package/out/zero-protocol/src/ast.js +236 -309
  790. package/out/zero-protocol/src/ast.js.map +1 -1
  791. package/out/zero-protocol/src/change-desired-queries.js +8 -13
  792. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  793. package/out/zero-protocol/src/client-schema.js +21 -42
  794. package/out/zero-protocol/src/client-schema.js.map +1 -1
  795. package/out/zero-protocol/src/close-connection.js +20 -12
  796. package/out/zero-protocol/src/close-connection.js.map +1 -1
  797. package/out/zero-protocol/src/connect.js +37 -52
  798. package/out/zero-protocol/src/connect.js.map +1 -1
  799. package/out/zero-protocol/src/custom-queries.js +34 -65
  800. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  801. package/out/zero-protocol/src/data.js +6 -9
  802. package/out/zero-protocol/src/data.js.map +1 -1
  803. package/out/zero-protocol/src/delete-clients.js +11 -17
  804. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  805. package/out/zero-protocol/src/down.js +11 -23
  806. package/out/zero-protocol/src/down.js.map +1 -1
  807. package/out/zero-protocol/src/error-kind-enum.js +24 -41
  808. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  809. package/out/zero-protocol/src/error-origin-enum.js +8 -9
  810. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  811. package/out/zero-protocol/src/error-reason-enum.js +12 -17
  812. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  813. package/out/zero-protocol/src/error.js +76 -152
  814. package/out/zero-protocol/src/error.js.map +1 -1
  815. package/out/zero-protocol/src/inspect-down.js +51 -74
  816. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  817. package/out/zero-protocol/src/inspect-up.js +28 -46
  818. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  819. package/out/zero-protocol/src/mutation-id.js +9 -9
  820. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  821. package/out/zero-protocol/src/mutation-type-enum.js +7 -7
  822. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  823. package/out/zero-protocol/src/mutations-patch.js +21 -16
  824. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  825. package/out/zero-protocol/src/ping.js +8 -9
  826. package/out/zero-protocol/src/ping.js.map +1 -1
  827. package/out/zero-protocol/src/poke.js +53 -59
  828. package/out/zero-protocol/src/poke.js.map +1 -1
  829. package/out/zero-protocol/src/pong.js +8 -9
  830. package/out/zero-protocol/src/pong.js.map +1 -1
  831. package/out/zero-protocol/src/primary-key.js +9 -19
  832. package/out/zero-protocol/src/primary-key.js.map +1 -1
  833. package/out/zero-protocol/src/protocol-version.js +5 -11
  834. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  835. package/out/zero-protocol/src/pull.js +16 -28
  836. package/out/zero-protocol/src/pull.js.map +1 -1
  837. package/out/zero-protocol/src/push.js +162 -209
  838. package/out/zero-protocol/src/push.js.map +1 -1
  839. package/out/zero-protocol/src/queries-patch.js +22 -30
  840. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  841. package/out/zero-protocol/src/query-hash.js +14 -17
  842. package/out/zero-protocol/src/query-hash.js.map +1 -1
  843. package/out/zero-protocol/src/row-patch.js +23 -30
  844. package/out/zero-protocol/src/row-patch.js.map +1 -1
  845. package/out/zero-protocol/src/up.js +11 -22
  846. package/out/zero-protocol/src/up.js.map +1 -1
  847. package/out/zero-protocol/src/update-auth.js +8 -13
  848. package/out/zero-protocol/src/update-auth.js.map +1 -1
  849. package/out/zero-protocol/src/version.js +8 -9
  850. package/out/zero-protocol/src/version.js.map +1 -1
  851. package/out/zero-react/src/bindings.js +12 -0
  852. package/out/zero-react/src/mod.js +5 -0
  853. package/out/zero-react/src/use-connection-state.js +14 -11
  854. package/out/zero-react/src/use-connection-state.js.map +1 -1
  855. package/out/zero-react/src/use-query.js +283 -281
  856. package/out/zero-react/src/use-query.js.map +1 -1
  857. package/out/zero-react/src/use-zero-online.js +17 -11
  858. package/out/zero-react/src/use-zero-online.js.map +1 -1
  859. package/out/zero-react/src/zero-provider.js +53 -69
  860. package/out/zero-react/src/zero-provider.js.map +1 -1
  861. package/out/zero-react/src/zero.js +22 -0
  862. package/out/zero-schema/src/builder/relationship-builder.js +25 -21
  863. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  864. package/out/zero-schema/src/builder/schema-builder.js +51 -79
  865. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  866. package/out/zero-schema/src/builder/table-builder.js +99 -116
  867. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  868. package/out/zero-schema/src/compiled-permissions.js +21 -25
  869. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  870. package/out/zero-schema/src/name-mapper.js +31 -47
  871. package/out/zero-schema/src/name-mapper.js.map +1 -1
  872. package/out/zero-schema/src/permissions.js +94 -181
  873. package/out/zero-schema/src/permissions.js.map +1 -1
  874. package/out/zero-schema/src/schema-config.js +26 -32
  875. package/out/zero-schema/src/schema-config.js.map +1 -1
  876. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  877. package/out/zero-server/src/adapters/drizzle.js +79 -76
  878. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  879. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  880. package/out/zero-server/src/adapters/pg.js +79 -55
  881. package/out/zero-server/src/adapters/pg.js.map +1 -1
  882. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  883. package/out/zero-server/src/adapters/postgresjs.js +66 -40
  884. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  885. package/out/zero-server/src/adapters/prisma.d.ts.map +1 -1
  886. package/out/zero-server/src/adapters/prisma.js +75 -55
  887. package/out/zero-server/src/adapters/prisma.js.map +1 -1
  888. package/out/zero-server/src/custom.d.ts.map +1 -1
  889. package/out/zero-server/src/custom.js +188 -265
  890. package/out/zero-server/src/custom.js.map +1 -1
  891. package/out/zero-server/src/logging.js +6 -5
  892. package/out/zero-server/src/logging.js.map +1 -1
  893. package/out/zero-server/src/mod.js +8 -0
  894. package/out/zero-server/src/pg-query-executor.js +14 -17
  895. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  896. package/out/zero-server/src/process-mutations.js +293 -365
  897. package/out/zero-server/src/process-mutations.js.map +1 -1
  898. package/out/zero-server/src/push-processor.js +33 -49
  899. package/out/zero-server/src/push-processor.js.map +1 -1
  900. package/out/zero-server/src/queries/process-queries.js +106 -96
  901. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  902. package/out/zero-server/src/schema.js +98 -144
  903. package/out/zero-server/src/schema.js.map +1 -1
  904. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  905. package/out/zero-server/src/zql-database.js +54 -69
  906. package/out/zero-server/src/zql-database.js.map +1 -1
  907. package/out/zero-solid/src/bindings.js +12 -0
  908. package/out/zero-solid/src/mod.js +5 -0
  909. package/out/zero-solid/src/solid-view.js +135 -227
  910. package/out/zero-solid/src/solid-view.js.map +1 -1
  911. package/out/zero-solid/src/use-connection-state.js +18 -14
  912. package/out/zero-solid/src/use-connection-state.js.map +1 -1
  913. package/out/zero-solid/src/use-query.js +55 -100
  914. package/out/zero-solid/src/use-query.js.map +1 -1
  915. package/out/zero-solid/src/use-zero-online.js +18 -12
  916. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  917. package/out/zero-solid/src/use-zero.js +65 -77
  918. package/out/zero-solid/src/use-zero.js.map +1 -1
  919. package/out/zero-solid/src/zero.js +22 -0
  920. package/out/zero-types/src/format.js +8 -7
  921. package/out/zero-types/src/format.js.map +1 -1
  922. package/out/zero-types/src/name-mapper.js +34 -47
  923. package/out/zero-types/src/name-mapper.js.map +1 -1
  924. package/out/zql/src/builder/builder.d.ts.map +1 -1
  925. package/out/zql/src/builder/builder.js +315 -476
  926. package/out/zql/src/builder/builder.js.map +1 -1
  927. package/out/zql/src/builder/debug-delegate.js +69 -74
  928. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  929. package/out/zql/src/builder/filter.js +116 -140
  930. package/out/zql/src/builder/filter.js.map +1 -1
  931. package/out/zql/src/builder/like.js +41 -46
  932. package/out/zql/src/builder/like.js.map +1 -1
  933. package/out/zql/src/error.js +10 -9
  934. package/out/zql/src/error.js.map +1 -1
  935. package/out/zql/src/ivm/array-view.js +89 -91
  936. package/out/zql/src/ivm/array-view.js.map +1 -1
  937. package/out/zql/src/ivm/constraint.js +65 -74
  938. package/out/zql/src/ivm/constraint.js.map +1 -1
  939. package/out/zql/src/ivm/data.js +61 -48
  940. package/out/zql/src/ivm/data.js.map +1 -1
  941. package/out/zql/src/ivm/exists.js +164 -213
  942. package/out/zql/src/ivm/exists.js.map +1 -1
  943. package/out/zql/src/ivm/fan-in.js +62 -59
  944. package/out/zql/src/ivm/fan-in.js.map +1 -1
  945. package/out/zql/src/ivm/fan-out.js +52 -61
  946. package/out/zql/src/ivm/fan-out.js.map +1 -1
  947. package/out/zql/src/ivm/filter-operators.js +91 -96
  948. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  949. package/out/zql/src/ivm/filter-push.js +22 -26
  950. package/out/zql/src/ivm/filter-push.js.map +1 -1
  951. package/out/zql/src/ivm/filter.js +41 -35
  952. package/out/zql/src/ivm/filter.js.map +1 -1
  953. package/out/zql/src/ivm/flipped-join.js +282 -391
  954. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  955. package/out/zql/src/ivm/join-utils.js +85 -115
  956. package/out/zql/src/ivm/join-utils.js.map +1 -1
  957. package/out/zql/src/ivm/join.js +162 -231
  958. package/out/zql/src/ivm/join.js.map +1 -1
  959. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +21 -25
  960. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  961. package/out/zql/src/ivm/memory-source.js +364 -503
  962. package/out/zql/src/ivm/memory-source.js.map +1 -1
  963. package/out/zql/src/ivm/memory-storage.js +33 -34
  964. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  965. package/out/zql/src/ivm/operator.js +13 -15
  966. package/out/zql/src/ivm/operator.js.map +1 -1
  967. package/out/zql/src/ivm/push-accumulated.js +267 -270
  968. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  969. package/out/zql/src/ivm/skip.js +91 -104
  970. package/out/zql/src/ivm/skip.js.map +1 -1
  971. package/out/zql/src/ivm/stream.js +10 -10
  972. package/out/zql/src/ivm/stream.js.map +1 -1
  973. package/out/zql/src/ivm/take.js +422 -569
  974. package/out/zql/src/ivm/take.js.map +1 -1
  975. package/out/zql/src/ivm/union-fan-in.js +157 -231
  976. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  977. package/out/zql/src/ivm/union-fan-out.js +38 -43
  978. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  979. package/out/zql/src/ivm/view-apply-change.js +166 -255
  980. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  981. package/out/zql/src/mutate/crud.js +35 -34
  982. package/out/zql/src/mutate/crud.js.map +1 -1
  983. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  984. package/out/zql/src/mutate/custom.js +7 -11
  985. package/out/zql/src/mutate/custom.js.map +1 -1
  986. package/out/zql/src/mutate/mutator-registry.js +67 -71
  987. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  988. package/out/zql/src/mutate/mutator.js +26 -25
  989. package/out/zql/src/mutate/mutator.js.map +1 -1
  990. package/out/zql/src/planner/planner-builder.js +134 -239
  991. package/out/zql/src/planner/planner-builder.js.map +1 -1
  992. package/out/zql/src/planner/planner-connection.js +222 -212
  993. package/out/zql/src/planner/planner-connection.js.map +1 -1
  994. package/out/zql/src/planner/planner-constraint.js +15 -7
  995. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  996. package/out/zql/src/planner/planner-debug.js +199 -224
  997. package/out/zql/src/planner/planner-debug.js.map +1 -1
  998. package/out/zql/src/planner/planner-fan-in.js +146 -162
  999. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1000. package/out/zql/src/planner/planner-fan-out.js +62 -74
  1001. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1002. package/out/zql/src/planner/planner-graph.js +302 -334
  1003. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1004. package/out/zql/src/planner/planner-join.js +255 -240
  1005. package/out/zql/src/planner/planner-join.js.map +1 -1
  1006. package/out/zql/src/planner/planner-node.js +10 -6
  1007. package/out/zql/src/planner/planner-node.js.map +1 -1
  1008. package/out/zql/src/planner/planner-source.js +15 -22
  1009. package/out/zql/src/planner/planner-source.js.map +1 -1
  1010. package/out/zql/src/planner/planner-terminus.js +28 -28
  1011. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1012. package/out/zql/src/query/complete-ordering.js +37 -61
  1013. package/out/zql/src/query/complete-ordering.js.map +1 -1
  1014. package/out/zql/src/query/create-builder.js +14 -22
  1015. package/out/zql/src/query/create-builder.js.map +1 -1
  1016. package/out/zql/src/query/error.js +10 -12
  1017. package/out/zql/src/query/error.js.map +1 -1
  1018. package/out/zql/src/query/escape-like.js +6 -5
  1019. package/out/zql/src/query/escape-like.js.map +1 -1
  1020. package/out/zql/src/query/expression.js +138 -157
  1021. package/out/zql/src/query/expression.js.map +1 -1
  1022. package/out/zql/src/query/measure-push-operator.js +35 -38
  1023. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1024. package/out/zql/src/query/metrics-delegate.js +7 -7
  1025. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1026. package/out/zql/src/query/named.js +52 -51
  1027. package/out/zql/src/query/named.js.map +1 -1
  1028. package/out/zql/src/query/query-delegate-base.js +190 -238
  1029. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1030. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1031. package/out/zql/src/query/query-impl.js +271 -405
  1032. package/out/zql/src/query/query-impl.js.map +1 -1
  1033. package/out/zql/src/query/query-internals.js +16 -8
  1034. package/out/zql/src/query/query-internals.js.map +1 -1
  1035. package/out/zql/src/query/query-registry.js +83 -98
  1036. package/out/zql/src/query/query-registry.js.map +1 -1
  1037. package/out/zql/src/query/query.d.ts.map +1 -1
  1038. package/out/zql/src/query/query.js +2 -0
  1039. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  1040. package/out/zql/src/query/runnable-query-impl.js +30 -55
  1041. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  1042. package/out/zql/src/query/static-query.js +7 -14
  1043. package/out/zql/src/query/static-query.js.map +1 -1
  1044. package/out/zql/src/query/ttl.js +45 -67
  1045. package/out/zql/src/query/ttl.js.map +1 -1
  1046. package/out/zql/src/query/validate-input.js +23 -20
  1047. package/out/zql/src/query/validate-input.js.map +1 -1
  1048. package/out/zqlite/src/database-storage.js +99 -103
  1049. package/out/zqlite/src/database-storage.js.map +1 -1
  1050. package/out/zqlite/src/db.js +206 -249
  1051. package/out/zqlite/src/db.js.map +1 -1
  1052. package/out/zqlite/src/explain-queries.js +11 -13
  1053. package/out/zqlite/src/explain-queries.js.map +1 -1
  1054. package/out/zqlite/src/internal/sql-inline.js +54 -37
  1055. package/out/zqlite/src/internal/sql-inline.js.map +1 -1
  1056. package/out/zqlite/src/internal/sql.js +17 -15
  1057. package/out/zqlite/src/internal/sql.js.map +1 -1
  1058. package/out/zqlite/src/internal/statement-cache.js +117 -92
  1059. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1060. package/out/zqlite/src/mod.js +5 -0
  1061. package/out/zqlite/src/query-builder.js +81 -172
  1062. package/out/zqlite/src/query-builder.js.map +1 -1
  1063. package/out/zqlite/src/query-delegate.js +45 -55
  1064. package/out/zqlite/src/query-delegate.js.map +1 -1
  1065. package/out/zqlite/src/resolve-scalar-subqueries.js +134 -124
  1066. package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
  1067. package/out/zqlite/src/sqlite-cost-model.js +92 -97
  1068. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1069. package/out/zqlite/src/sqlite-stat-fanout.js +304 -286
  1070. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1071. package/out/zqlite/src/table-source.js +281 -455
  1072. package/out/zqlite/src/table-source.js.map +1 -1
  1073. package/package.json +8 -7
  1074. package/out/replicache/src/db/index-operation-enum.js +0 -7
  1075. package/out/replicache/src/db/index-operation-enum.js.map +0 -1
  1076. package/out/replicache/src/db/meta-type-enum.js +0 -7
  1077. package/out/replicache/src/db/meta-type-enum.js.map +0 -1
  1078. package/out/replicache/src/format-version-enum.js +0 -11
  1079. package/out/replicache/src/format-version-enum.js.map +0 -1
  1080. package/out/replicache/src/http-status-unauthorized.js +0 -5
  1081. package/out/replicache/src/http-status-unauthorized.js.map +0 -1
  1082. package/out/replicache/src/invoke-kind-enum.js +0 -7
  1083. package/out/replicache/src/invoke-kind-enum.js.map +0 -1
  1084. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +0 -9
  1085. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +0 -1
  1086. package/out/zero/package.json.js +0 -9
  1087. package/out/zero/package.json.js.map +0 -1
  1088. package/out/zero/src/adapters/drizzle.js.map +0 -1
  1089. package/out/zero/src/adapters/pg.js.map +0 -1
  1090. package/out/zero/src/adapters/postgresjs.js.map +0 -1
  1091. package/out/zero/src/adapters/prisma.js.map +0 -1
  1092. package/out/zero/src/analyze-query.js.map +0 -1
  1093. package/out/zero/src/ast-to-zql.js.map +0 -1
  1094. package/out/zero/src/bindings.js.map +0 -1
  1095. package/out/zero/src/change-protocol/v0.js.map +0 -1
  1096. package/out/zero/src/cli.js.map +0 -1
  1097. package/out/zero/src/deploy-permissions.js.map +0 -1
  1098. package/out/zero/src/expo-sqlite.js.map +0 -1
  1099. package/out/zero/src/op-sqlite.js.map +0 -1
  1100. package/out/zero/src/pg.js.map +0 -1
  1101. package/out/zero/src/react.js.map +0 -1
  1102. package/out/zero/src/server.js.map +0 -1
  1103. package/out/zero/src/solid.js.map +0 -1
  1104. package/out/zero/src/sqlite.js.map +0 -1
  1105. package/out/zero/src/transform-query.js.map +0 -1
  1106. package/out/zero/src/zero.js.map +0 -1
  1107. package/out/zero/src/zqlite.js.map +0 -1
  1108. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +0 -11
  1109. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +0 -1
  1110. package/out/zero-cache/src/db/postgres-type-class-enum.js +0 -17
  1111. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +0 -1
  1112. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +0 -9
  1113. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"btree-set.js","sources":["../../../../shared/src/btree-set.ts"],"sourcesContent":["import {assert} from './asserts.ts';\n\nconst MAX_NODE_SIZE = 32;\n\ntype Comparator<K> = (a: K, b: K) => number;\nexport class BTreeSet<K> {\n #root: BNode<K> = emptyLeaf as BNode<K>;\n size: number = 0;\n\n readonly comparator: Comparator<K>;\n\n constructor(comparator: Comparator<K>, entries?: IterableIterator<K>) {\n this.comparator = comparator;\n if (entries) {\n for (const key of entries) {\n this.add(key);\n }\n }\n }\n\n /** Releases the tree so that its size is 0. */\n clear() {\n this.#root = emptyLeaf as BNode<K>;\n this.size = 0;\n }\n\n clone() {\n this.#root.isShared = true;\n const ret = new BTreeSet<K>(this.comparator);\n ret.#root = this.#root;\n ret.size = this.size;\n return ret;\n }\n\n get(key: K): K | undefined {\n return this.#root.get(key, this);\n }\n\n add(key: K): this {\n if (this.#root.isShared) this.#root = this.#root.clone();\n const result = this.#root.set(key, this);\n if (result === null) return this;\n // Root node has split, so create a new root node.\n this.#root = new BNodeInternal<K>([this.#root, result]);\n return this;\n }\n\n /**\n * Returns true if the key exists in the B+ tree, false if not.\n * Use get() for best performance; use has() if you need to\n * distinguish between \"undefined value\" and \"key not present\".\n * @param key Key to detect\n * @description Computational complexity: O(log size)\n */\n has(key: K): boolean {\n return this.#root.has(key, this);\n }\n\n /**\n * Removes a single key-value pair from the B+ tree.\n * @param key Key to find\n * @returns true if a pair was found and removed, false otherwise.\n * @description Computational complexity: O(log size)\n */\n delete(key: K): boolean {\n return this.#delete(key);\n }\n\n #delete(key: K): boolean {\n let root = this.#root;\n if (root.isShared) {\n this.#root = root = root.clone();\n }\n try {\n return root.delete(key, this);\n } finally {\n let isShared;\n while (root.keys.length <= 1 && root.isInternal()) {\n isShared ||= root.isShared;\n this.#root = root =\n root.keys.length === 0 ? emptyLeaf : root.children[0];\n }\n // If any ancestor of the new root was shared, the new root must also be shared\n if (isShared) {\n root.isShared = true;\n }\n }\n }\n\n keys(): IterableIterator<K> {\n return valuesFrom(this.#root, this.comparator, undefined, true);\n }\n\n values(): IterableIterator<K> {\n return valuesFrom(this.#root, this.comparator, undefined, true);\n }\n\n valuesFrom(lowestKey?: K, inclusive: boolean = true): IterableIterator<K> {\n return valuesFrom(this.#root, this.comparator, lowestKey, inclusive);\n }\n\n valuesReversed(): IterableIterator<K> {\n return valuesFromReversed(\n this.#maxKey(),\n this.#root,\n this.comparator,\n undefined,\n true,\n );\n }\n\n valuesFromReversed(\n highestKey?: K,\n inclusive: boolean = true,\n ): IterableIterator<K> {\n return valuesFromReversed(\n this.#maxKey(),\n this.#root,\n this.comparator,\n highestKey,\n inclusive,\n );\n }\n\n /** Gets the highest key in the tree. Complexity: O(1) */\n #maxKey(): K | undefined {\n return this.#root.maxKey();\n }\n\n [Symbol.iterator](): IterableIterator<K> {\n return this.keys();\n }\n}\n\nfunction valuesFrom<K>(\n root: BNode<K>,\n comparator: Comparator<K>,\n lowestKey: K | undefined,\n inclusive: boolean,\n): IterableIterator<K> {\n const info = findPath(lowestKey, root, comparator);\n if (info === undefined) {\n return iterator<K>(() => ({done: true, value: undefined}));\n }\n\n let [nodeQueue, nodeIndex, leaf] = info;\n let i =\n lowestKey === undefined\n ? -1\n : indexOf(lowestKey, leaf.keys, 0, comparator) - 1;\n\n if (\n !inclusive &&\n i < leaf.keys.length &&\n // +1 because we did -1 above.\n comparator(leaf.keys[i + 1], lowestKey!) === 0\n ) {\n i++;\n }\n\n return iterator<K>(() => {\n for (;;) {\n if (++i < leaf.keys.length) {\n return {done: false, value: leaf.keys[i]};\n }\n\n let level = -1;\n for (;;) {\n if (++level >= nodeQueue.length) {\n return {done: true, value: undefined};\n }\n if (++nodeIndex[level] < nodeQueue[level].length) {\n break;\n }\n }\n for (; level > 0; level--) {\n nodeQueue[level - 1] = (\n nodeQueue[level][nodeIndex[level]] as BNodeInternal<K>\n ).children;\n nodeIndex[level - 1] = 0;\n }\n leaf = nodeQueue[0][nodeIndex[0]];\n i = -1;\n }\n });\n}\n\nfunction valuesFromReversed<K>(\n maxKey: K | undefined,\n root: BNode<K>,\n comparator: Comparator<K>,\n highestKey: K | undefined,\n inclusive: boolean,\n): IterableIterator<K> {\n if (highestKey === undefined) {\n highestKey = maxKey;\n if (highestKey === undefined)\n return iterator<K>(() => ({done: true, value: undefined})); // collection is empty\n }\n let [nodeQueue, nodeIndex, leaf] =\n findPath(highestKey, root, comparator) ||\n findPath(maxKey, root, comparator)!;\n assert(\n !nodeQueue[0] || leaf === nodeQueue[0][nodeIndex[0]],\n 'BTreeSet: leaf node mismatch in iteration',\n );\n let i = indexOf(highestKey, leaf.keys, 0, comparator);\n if (\n inclusive &&\n i < leaf.keys.length &&\n comparator(leaf.keys[i], highestKey) <= 0\n ) {\n i++;\n }\n\n return iterator<K>(() => {\n for (;;) {\n if (--i >= 0) {\n return {done: false, value: leaf.keys[i]};\n }\n\n let level;\n // Advance to the next leaf node\n for (level = -1; ; ) {\n if (++level >= nodeQueue.length) {\n return {done: true, value: undefined};\n }\n if (--nodeIndex[level] >= 0) {\n break;\n }\n }\n for (; level > 0; level--) {\n nodeQueue[level - 1] = (\n nodeQueue[level][nodeIndex[level]] as BNodeInternal<K>\n ).children;\n nodeIndex[level - 1] = nodeQueue[level - 1].length - 1;\n }\n leaf = nodeQueue[0][nodeIndex[0]];\n i = leaf.keys.length;\n }\n });\n}\n\nfunction findPath<K>(\n key: K | undefined,\n root: BNode<K>,\n comparator: Comparator<K>,\n): [nodeQueue: BNode<K>[][], nodeIndex: number[], leaf: BNode<K>] | undefined {\n let nextNode = root;\n const nodeQueue: BNode<K>[][] = [];\n const nodeIndex: number[] = [];\n\n if (nextNode.isInternal()) {\n for (let d = 0; nextNode.isInternal(); d++) {\n nodeQueue[d] = nextNode.children;\n nodeIndex[d] =\n key === undefined ? 0 : indexOf(key, nextNode.keys, 0, comparator);\n if (nodeIndex[d] >= nodeQueue[d].length) return; // first key > maxKey()\n nextNode = nodeQueue[d][nodeIndex[d]];\n }\n nodeQueue.reverse();\n nodeIndex.reverse();\n }\n return [nodeQueue, nodeIndex, nextNode];\n}\n\nfunction iterator<T>(next: () => IteratorResult<T>): IterableIterator<T> {\n return {\n next,\n [Symbol.iterator]() {\n return this;\n },\n };\n}\n\n/** Leaf node / base class. **************************************************/\nclass BNode<K> {\n // If this is an internal node, _keys[i] is the highest key in children[i].\n keys: K[];\n // True if this node might be within multiple `BTree`s (or have multiple parents).\n // If so, it must be cloned before being mutated to avoid changing an unrelated tree.\n // This is transitive: if it's true, children are also shared even if `isShared!=true`\n // in those children. (Certain operations will propagate isShared=true to children.)\n isShared: true | undefined;\n\n constructor(keys: K[]) {\n this.keys = keys;\n this.isShared = undefined;\n }\n\n isInternal(): this is BNodeInternal<K> {\n return false;\n }\n\n maxKey() {\n return this.keys[this.keys.length - 1];\n }\n\n minKey(): K | undefined {\n return this.keys[0];\n }\n\n clone(): BNode<K> {\n return new BNode<K>(this.keys.slice(0));\n }\n\n get(key: K, tree: BTreeSet<K>): K | undefined {\n const i = indexOf(key, this.keys, -1, tree.comparator);\n return i < 0 ? undefined : this.keys[i];\n }\n\n has(key: K, tree: BTreeSet<K>): boolean {\n const i = indexOf(key, this.keys, -1, tree.comparator);\n return i >= 0 && i < this.keys.length;\n }\n\n set(key: K, tree: BTreeSet<K>): null | BNode<K> {\n let i = indexOf(key, this.keys, -1, tree.comparator);\n if (i < 0) {\n // key does not exist yet\n i = ~i;\n tree.size++;\n\n if (this.keys.length < MAX_NODE_SIZE) {\n this.keys.splice(i, 0, key);\n return null;\n }\n // This leaf node is full and must split\n const newRightSibling = this.splitOffRightSide();\n // oxlint-disable-next-line @typescript-eslint/no-this-alias\n let target: BNode<K> = this;\n if (i > this.keys.length) {\n i -= this.keys.length;\n target = newRightSibling;\n }\n // target.#insertInLeaf(i, key);\n target.keys.splice(i, 0, key);\n\n return newRightSibling;\n }\n\n // usually this is a no-op, but some users may wish to edit the key\n this.keys[i] = key;\n return null;\n }\n\n takeFromRight(rhs: BNode<K>) {\n this.keys.push(rhs.keys.shift()!);\n }\n\n takeFromLeft(lhs: BNode<K>) {\n this.keys.unshift(lhs.keys.pop()!);\n }\n\n splitOffRightSide(): BNode<K> {\n const half = this.keys.length >> 1;\n const keys = this.keys.splice(half);\n return new BNode<K>(keys);\n }\n\n delete(key: K, tree: BTreeSet<K>): boolean {\n const cmp = tree.comparator;\n const iLow = indexOf(key, this.keys, -1, cmp);\n const iHigh = iLow + 1;\n\n if (iLow < 0) {\n return false;\n }\n\n const {keys} = this;\n for (let i = iLow; i < iHigh; i++) {\n const key = keys[i];\n\n if (key !== keys[i] || this.isShared === true) {\n throw new Error('BTree illegally changed or cloned in delete');\n }\n\n this.keys.splice(i, 1);\n tree.size--;\n return true;\n }\n\n return false;\n }\n\n mergeSibling(rhs: BNode<K>, _: number) {\n this.keys.push(...rhs.keys);\n }\n}\n\n/** Internal node (non-leaf node) ********************************************/\nclass BNodeInternal<K> extends BNode<K> {\n // Note: conventionally B+ trees have one fewer key than the number of\n // children, but I find it easier to keep the array lengths equal: each\n // keys[i] caches the value of children[i].maxKey().\n children: BNode<K>[];\n\n /**\n * This does not mark `children` as shared, so it is the responsibility of the caller\n * to ensure children are either marked shared, or aren't included in another tree.\n */\n constructor(children: BNode<K>[], keys?: K[]) {\n if (!keys) {\n keys = [];\n for (let i = 0; i < children.length; i++) {\n keys[i] = children[i].maxKey();\n }\n }\n super(keys);\n this.children = children;\n }\n\n isInternal(): this is BNodeInternal<K> {\n return true;\n }\n\n clone(): BNode<K> {\n const children = this.children.slice(0);\n for (let i = 0; i < children.length; i++) {\n children[i].isShared = true;\n }\n return new BNodeInternal<K>(children, this.keys.slice(0));\n }\n\n minKey() {\n return this.children[0].minKey();\n }\n\n get(key: K, tree: BTreeSet<K>): K | undefined {\n const i = indexOf(key, this.keys, 0, tree.comparator);\n const {children} = this;\n return i < children.length ? children[i].get(key, tree) : undefined;\n }\n\n has(key: K, tree: BTreeSet<K>): boolean {\n const i = indexOf(key, this.keys, 0, tree.comparator);\n const {children} = this;\n return i < children.length ? children[i].has(key, tree) : false;\n }\n\n set(key: K, tree: BTreeSet<K>): null | BNode<K> {\n const c = this.children;\n const cmp = tree.comparator;\n let i = Math.min(indexOf(key, this.keys, 0, cmp), c.length - 1);\n let child = c[i];\n\n if (child.isShared) {\n c[i] = child = child.clone();\n }\n if (child.keys.length >= MAX_NODE_SIZE) {\n // child is full; inserting anything else will cause a split.\n // Shifting an item to the left or right sibling may avoid a split.\n // We can do a shift if the adjacent node is not full and if the\n // current key can still be placed in the same node after the shift.\n let other: BNode<K>;\n if (\n i > 0 &&\n (other = c[i - 1]).keys.length < MAX_NODE_SIZE &&\n cmp(child.keys[0], key) < 0\n ) {\n if (other.isShared) {\n c[i - 1] = other = other.clone();\n }\n other.takeFromRight(child);\n this.keys[i - 1] = other.maxKey();\n } else if (\n (other = c[i + 1]) !== undefined &&\n other.keys.length < MAX_NODE_SIZE &&\n cmp(child.maxKey(), key) < 0\n ) {\n if (other.isShared) c[i + 1] = other = other.clone();\n other.takeFromLeft(child);\n this.keys[i] = c[i].maxKey();\n }\n }\n\n const result = child.set(key, tree);\n this.keys[i] = child.maxKey();\n if (result === null) return null;\n\n // The child has split and `result` is a new right child... does it fit?\n if (this.keys.length < MAX_NODE_SIZE) {\n // yes\n this.insert(i + 1, result);\n return null;\n }\n // no, we must split also\n const newRightSibling = this.splitOffRightSide();\n // oxlint-disable-next-line @typescript-eslint/no-this-alias\n let target: BNodeInternal<K> = this;\n if (cmp(result.maxKey(), this.maxKey()) > 0) {\n target = newRightSibling;\n i -= this.keys.length;\n }\n target.insert(i + 1, result);\n return newRightSibling;\n }\n\n /**\n * Inserts `child` at index `i`.\n * This does not mark `child` as shared, so it is the responsibility of the caller\n * to ensure that either child is marked shared, or it is not included in another tree.\n */\n insert(i: number, child: BNode<K>) {\n this.children.splice(i, 0, child);\n this.keys.splice(i, 0, child.maxKey());\n }\n\n /**\n * Split this node.\n * Modifies this to remove the second half of the items, returning a separate node containing them.\n */\n splitOffRightSide() {\n const half = this.children.length >> 1;\n return new BNodeInternal<K>(\n this.children.splice(half),\n this.keys.splice(half),\n );\n }\n\n takeFromRight(rhs: BNode<K>) {\n this.keys.push(rhs.keys.shift()!);\n this.children.push((rhs as BNodeInternal<K>).children.shift()!);\n }\n\n takeFromLeft(lhs: BNode<K>) {\n this.keys.unshift(lhs.keys.pop()!);\n this.children.unshift((lhs as BNodeInternal<K>).children.pop()!);\n }\n\n delete(key: K, tree: BTreeSet<K>): boolean {\n const cmp = tree.comparator;\n const {keys} = this;\n const {children} = this;\n let iLow = indexOf(key, this.keys, 0, cmp);\n let i = iLow;\n const iHigh = Math.min(iLow, keys.length - 1);\n if (i <= iHigh) {\n try {\n if (children[i].isShared) {\n children[i] = children[i].clone();\n }\n const result = children[i].delete(key, tree);\n // Note: if children[i] is empty then keys[i]=undefined.\n // This is an invalid state, but it is fixed below.\n keys[i] = children[i].maxKey();\n return result;\n } finally {\n // Deletions may have occurred, so look for opportunities to merge nodes.\n const half = MAX_NODE_SIZE >> 1;\n if (iLow > 0) iLow--;\n for (i = iHigh; i >= iLow; i--) {\n if (children[i].keys.length <= half) {\n if (children[i].keys.length !== 0) {\n this.tryMerge(i, MAX_NODE_SIZE);\n } else {\n // child is empty! delete it!\n keys.splice(i, 1);\n children.splice(i, 1);\n }\n }\n }\n }\n }\n return false;\n }\n\n /** Merges child i with child i+1 if their combined size is not too large */\n tryMerge(i: number, maxSize: number): boolean {\n const {children} = this;\n if (i >= 0 && i + 1 < children.length) {\n if (children[i].keys.length + children[i + 1].keys.length <= maxSize) {\n if (children[i].isShared)\n // cloned already UNLESS i is outside scan range\n children[i] = children[i].clone();\n children[i].mergeSibling(children[i + 1], maxSize);\n children.splice(i + 1, 1);\n this.keys.splice(i + 1, 1);\n this.keys[i] = children[i].maxKey();\n return true;\n }\n }\n return false;\n }\n\n /**\n * Move children from `rhs` into this.\n * `rhs` must be part of this tree, and be removed from it after this call\n * (otherwise isShared for its children could be incorrect).\n */\n mergeSibling(rhs: BNode<K>, maxNodeSize: number) {\n // assert !this.isShared;\n const oldLength = this.keys.length;\n this.keys.push(...rhs.keys);\n const rhsChildren = (rhs as unknown as BNodeInternal<K>).children;\n this.children.push(...rhsChildren);\n\n if (rhs.isShared && !this.isShared) {\n // All children of a shared node are implicitly shared, and since their new\n // parent is not shared, they must now be explicitly marked as shared.\n for (let i = 0; i < rhsChildren.length; i++) {\n rhsChildren[i].isShared = true;\n }\n }\n\n // If our children are themselves almost empty due to a mass-delete,\n // they may need to be merged too (but only the oldLength-1 and its\n // right sibling should need this).\n this.tryMerge(oldLength - 1, maxNodeSize);\n }\n}\n\n// If key not found, returns i^failXor where i is the insertion index.\n// Callers that don't care whether there was a match will set failXor=0.\nfunction indexOf<K>(\n key: K,\n keys: K[],\n failXor: number,\n comparator: Comparator<K>,\n): number {\n let lo = 0;\n let hi = keys.length;\n let mid = hi >> 1;\n while (lo < hi) {\n const c = comparator(keys[mid], key);\n if (c < 0) {\n lo = mid + 1;\n } else if (c > 0) {\n // key < keys[mid]\n hi = mid;\n } else if (c === 0) {\n return mid;\n } else {\n // c is NaN or otherwise invalid\n if (key === key) {\n // at least the search key is not NaN\n return keys.length;\n }\n throw new Error('NaN was used as a key');\n }\n mid = (lo + hi) >> 1;\n }\n return mid ^ failXor;\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nconst emptyLeaf = new BNode<any>([]);\nemptyLeaf.isShared = true;\n"],"names":["key"],"mappings":"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"}
1
+ {"version":3,"file":"btree-set.js","names":["#root","#delete","#maxKey"],"sources":["../../../../shared/src/btree-set.ts"],"sourcesContent":["import {assert} from './asserts.ts';\n\nconst MAX_NODE_SIZE = 32;\n\ntype Comparator<K> = (a: K, b: K) => number;\nexport class BTreeSet<K> {\n #root: BNode<K> = emptyLeaf as BNode<K>;\n size: number = 0;\n\n readonly comparator: Comparator<K>;\n\n constructor(comparator: Comparator<K>, entries?: IterableIterator<K>) {\n this.comparator = comparator;\n if (entries) {\n for (const key of entries) {\n this.add(key);\n }\n }\n }\n\n /** Releases the tree so that its size is 0. */\n clear() {\n this.#root = emptyLeaf as BNode<K>;\n this.size = 0;\n }\n\n clone() {\n this.#root.isShared = true;\n const ret = new BTreeSet<K>(this.comparator);\n ret.#root = this.#root;\n ret.size = this.size;\n return ret;\n }\n\n get(key: K): K | undefined {\n return this.#root.get(key, this);\n }\n\n add(key: K): this {\n if (this.#root.isShared) this.#root = this.#root.clone();\n const result = this.#root.set(key, this);\n if (result === null) return this;\n // Root node has split, so create a new root node.\n this.#root = new BNodeInternal<K>([this.#root, result]);\n return this;\n }\n\n /**\n * Returns true if the key exists in the B+ tree, false if not.\n * Use get() for best performance; use has() if you need to\n * distinguish between \"undefined value\" and \"key not present\".\n * @param key Key to detect\n * @description Computational complexity: O(log size)\n */\n has(key: K): boolean {\n return this.#root.has(key, this);\n }\n\n /**\n * Removes a single key-value pair from the B+ tree.\n * @param key Key to find\n * @returns true if a pair was found and removed, false otherwise.\n * @description Computational complexity: O(log size)\n */\n delete(key: K): boolean {\n return this.#delete(key);\n }\n\n #delete(key: K): boolean {\n let root = this.#root;\n if (root.isShared) {\n this.#root = root = root.clone();\n }\n try {\n return root.delete(key, this);\n } finally {\n let isShared;\n while (root.keys.length <= 1 && root.isInternal()) {\n isShared ||= root.isShared;\n this.#root = root =\n root.keys.length === 0 ? emptyLeaf : root.children[0];\n }\n // If any ancestor of the new root was shared, the new root must also be shared\n if (isShared) {\n root.isShared = true;\n }\n }\n }\n\n keys(): IterableIterator<K> {\n return valuesFrom(this.#root, this.comparator, undefined, true);\n }\n\n values(): IterableIterator<K> {\n return valuesFrom(this.#root, this.comparator, undefined, true);\n }\n\n valuesFrom(lowestKey?: K, inclusive: boolean = true): IterableIterator<K> {\n return valuesFrom(this.#root, this.comparator, lowestKey, inclusive);\n }\n\n valuesReversed(): IterableIterator<K> {\n return valuesFromReversed(\n this.#maxKey(),\n this.#root,\n this.comparator,\n undefined,\n true,\n );\n }\n\n valuesFromReversed(\n highestKey?: K,\n inclusive: boolean = true,\n ): IterableIterator<K> {\n return valuesFromReversed(\n this.#maxKey(),\n this.#root,\n this.comparator,\n highestKey,\n inclusive,\n );\n }\n\n /** Gets the highest key in the tree. Complexity: O(1) */\n #maxKey(): K | undefined {\n return this.#root.maxKey();\n }\n\n [Symbol.iterator](): IterableIterator<K> {\n return this.keys();\n }\n}\n\nfunction valuesFrom<K>(\n root: BNode<K>,\n comparator: Comparator<K>,\n lowestKey: K | undefined,\n inclusive: boolean,\n): IterableIterator<K> {\n const info = findPath(lowestKey, root, comparator);\n if (info === undefined) {\n return iterator<K>(() => ({done: true, value: undefined}));\n }\n\n let [nodeQueue, nodeIndex, leaf] = info;\n let i =\n lowestKey === undefined\n ? -1\n : indexOf(lowestKey, leaf.keys, 0, comparator) - 1;\n\n if (\n !inclusive &&\n i < leaf.keys.length &&\n // +1 because we did -1 above.\n comparator(leaf.keys[i + 1], lowestKey!) === 0\n ) {\n i++;\n }\n\n return iterator<K>(() => {\n for (;;) {\n if (++i < leaf.keys.length) {\n return {done: false, value: leaf.keys[i]};\n }\n\n let level = -1;\n for (;;) {\n if (++level >= nodeQueue.length) {\n return {done: true, value: undefined};\n }\n if (++nodeIndex[level] < nodeQueue[level].length) {\n break;\n }\n }\n for (; level > 0; level--) {\n nodeQueue[level - 1] = (\n nodeQueue[level][nodeIndex[level]] as BNodeInternal<K>\n ).children;\n nodeIndex[level - 1] = 0;\n }\n leaf = nodeQueue[0][nodeIndex[0]];\n i = -1;\n }\n });\n}\n\nfunction valuesFromReversed<K>(\n maxKey: K | undefined,\n root: BNode<K>,\n comparator: Comparator<K>,\n highestKey: K | undefined,\n inclusive: boolean,\n): IterableIterator<K> {\n if (highestKey === undefined) {\n highestKey = maxKey;\n if (highestKey === undefined)\n return iterator<K>(() => ({done: true, value: undefined})); // collection is empty\n }\n let [nodeQueue, nodeIndex, leaf] =\n findPath(highestKey, root, comparator) ||\n findPath(maxKey, root, comparator)!;\n assert(\n !nodeQueue[0] || leaf === nodeQueue[0][nodeIndex[0]],\n 'BTreeSet: leaf node mismatch in iteration',\n );\n let i = indexOf(highestKey, leaf.keys, 0, comparator);\n if (\n inclusive &&\n i < leaf.keys.length &&\n comparator(leaf.keys[i], highestKey) <= 0\n ) {\n i++;\n }\n\n return iterator<K>(() => {\n for (;;) {\n if (--i >= 0) {\n return {done: false, value: leaf.keys[i]};\n }\n\n let level;\n // Advance to the next leaf node\n for (level = -1; ; ) {\n if (++level >= nodeQueue.length) {\n return {done: true, value: undefined};\n }\n if (--nodeIndex[level] >= 0) {\n break;\n }\n }\n for (; level > 0; level--) {\n nodeQueue[level - 1] = (\n nodeQueue[level][nodeIndex[level]] as BNodeInternal<K>\n ).children;\n nodeIndex[level - 1] = nodeQueue[level - 1].length - 1;\n }\n leaf = nodeQueue[0][nodeIndex[0]];\n i = leaf.keys.length;\n }\n });\n}\n\nfunction findPath<K>(\n key: K | undefined,\n root: BNode<K>,\n comparator: Comparator<K>,\n): [nodeQueue: BNode<K>[][], nodeIndex: number[], leaf: BNode<K>] | undefined {\n let nextNode = root;\n const nodeQueue: BNode<K>[][] = [];\n const nodeIndex: number[] = [];\n\n if (nextNode.isInternal()) {\n for (let d = 0; nextNode.isInternal(); d++) {\n nodeQueue[d] = nextNode.children;\n nodeIndex[d] =\n key === undefined ? 0 : indexOf(key, nextNode.keys, 0, comparator);\n if (nodeIndex[d] >= nodeQueue[d].length) return; // first key > maxKey()\n nextNode = nodeQueue[d][nodeIndex[d]];\n }\n nodeQueue.reverse();\n nodeIndex.reverse();\n }\n return [nodeQueue, nodeIndex, nextNode];\n}\n\nfunction iterator<T>(next: () => IteratorResult<T>): IterableIterator<T> {\n return {\n next,\n [Symbol.iterator]() {\n return this;\n },\n };\n}\n\n/** Leaf node / base class. **************************************************/\nclass BNode<K> {\n // If this is an internal node, _keys[i] is the highest key in children[i].\n keys: K[];\n // True if this node might be within multiple `BTree`s (or have multiple parents).\n // If so, it must be cloned before being mutated to avoid changing an unrelated tree.\n // This is transitive: if it's true, children are also shared even if `isShared!=true`\n // in those children. (Certain operations will propagate isShared=true to children.)\n isShared: true | undefined;\n\n constructor(keys: K[]) {\n this.keys = keys;\n this.isShared = undefined;\n }\n\n isInternal(): this is BNodeInternal<K> {\n return false;\n }\n\n maxKey() {\n return this.keys[this.keys.length - 1];\n }\n\n minKey(): K | undefined {\n return this.keys[0];\n }\n\n clone(): BNode<K> {\n return new BNode<K>(this.keys.slice(0));\n }\n\n get(key: K, tree: BTreeSet<K>): K | undefined {\n const i = indexOf(key, this.keys, -1, tree.comparator);\n return i < 0 ? undefined : this.keys[i];\n }\n\n has(key: K, tree: BTreeSet<K>): boolean {\n const i = indexOf(key, this.keys, -1, tree.comparator);\n return i >= 0 && i < this.keys.length;\n }\n\n set(key: K, tree: BTreeSet<K>): null | BNode<K> {\n let i = indexOf(key, this.keys, -1, tree.comparator);\n if (i < 0) {\n // key does not exist yet\n i = ~i;\n tree.size++;\n\n if (this.keys.length < MAX_NODE_SIZE) {\n this.keys.splice(i, 0, key);\n return null;\n }\n // This leaf node is full and must split\n const newRightSibling = this.splitOffRightSide();\n // oxlint-disable-next-line @typescript-eslint/no-this-alias\n let target: BNode<K> = this;\n if (i > this.keys.length) {\n i -= this.keys.length;\n target = newRightSibling;\n }\n // target.#insertInLeaf(i, key);\n target.keys.splice(i, 0, key);\n\n return newRightSibling;\n }\n\n // usually this is a no-op, but some users may wish to edit the key\n this.keys[i] = key;\n return null;\n }\n\n takeFromRight(rhs: BNode<K>) {\n this.keys.push(rhs.keys.shift()!);\n }\n\n takeFromLeft(lhs: BNode<K>) {\n this.keys.unshift(lhs.keys.pop()!);\n }\n\n splitOffRightSide(): BNode<K> {\n const half = this.keys.length >> 1;\n const keys = this.keys.splice(half);\n return new BNode<K>(keys);\n }\n\n delete(key: K, tree: BTreeSet<K>): boolean {\n const cmp = tree.comparator;\n const iLow = indexOf(key, this.keys, -1, cmp);\n const iHigh = iLow + 1;\n\n if (iLow < 0) {\n return false;\n }\n\n const {keys} = this;\n for (let i = iLow; i < iHigh; i++) {\n const key = keys[i];\n\n if (key !== keys[i] || this.isShared === true) {\n throw new Error('BTree illegally changed or cloned in delete');\n }\n\n this.keys.splice(i, 1);\n tree.size--;\n return true;\n }\n\n return false;\n }\n\n mergeSibling(rhs: BNode<K>, _: number) {\n this.keys.push(...rhs.keys);\n }\n}\n\n/** Internal node (non-leaf node) ********************************************/\nclass BNodeInternal<K> extends BNode<K> {\n // Note: conventionally B+ trees have one fewer key than the number of\n // children, but I find it easier to keep the array lengths equal: each\n // keys[i] caches the value of children[i].maxKey().\n children: BNode<K>[];\n\n /**\n * This does not mark `children` as shared, so it is the responsibility of the caller\n * to ensure children are either marked shared, or aren't included in another tree.\n */\n constructor(children: BNode<K>[], keys?: K[]) {\n if (!keys) {\n keys = [];\n for (let i = 0; i < children.length; i++) {\n keys[i] = children[i].maxKey();\n }\n }\n super(keys);\n this.children = children;\n }\n\n isInternal(): this is BNodeInternal<K> {\n return true;\n }\n\n clone(): BNode<K> {\n const children = this.children.slice(0);\n for (let i = 0; i < children.length; i++) {\n children[i].isShared = true;\n }\n return new BNodeInternal<K>(children, this.keys.slice(0));\n }\n\n minKey() {\n return this.children[0].minKey();\n }\n\n get(key: K, tree: BTreeSet<K>): K | undefined {\n const i = indexOf(key, this.keys, 0, tree.comparator);\n const {children} = this;\n return i < children.length ? children[i].get(key, tree) : undefined;\n }\n\n has(key: K, tree: BTreeSet<K>): boolean {\n const i = indexOf(key, this.keys, 0, tree.comparator);\n const {children} = this;\n return i < children.length ? children[i].has(key, tree) : false;\n }\n\n set(key: K, tree: BTreeSet<K>): null | BNode<K> {\n const c = this.children;\n const cmp = tree.comparator;\n let i = Math.min(indexOf(key, this.keys, 0, cmp), c.length - 1);\n let child = c[i];\n\n if (child.isShared) {\n c[i] = child = child.clone();\n }\n if (child.keys.length >= MAX_NODE_SIZE) {\n // child is full; inserting anything else will cause a split.\n // Shifting an item to the left or right sibling may avoid a split.\n // We can do a shift if the adjacent node is not full and if the\n // current key can still be placed in the same node after the shift.\n let other: BNode<K>;\n if (\n i > 0 &&\n (other = c[i - 1]).keys.length < MAX_NODE_SIZE &&\n cmp(child.keys[0], key) < 0\n ) {\n if (other.isShared) {\n c[i - 1] = other = other.clone();\n }\n other.takeFromRight(child);\n this.keys[i - 1] = other.maxKey();\n } else if (\n (other = c[i + 1]) !== undefined &&\n other.keys.length < MAX_NODE_SIZE &&\n cmp(child.maxKey(), key) < 0\n ) {\n if (other.isShared) c[i + 1] = other = other.clone();\n other.takeFromLeft(child);\n this.keys[i] = c[i].maxKey();\n }\n }\n\n const result = child.set(key, tree);\n this.keys[i] = child.maxKey();\n if (result === null) return null;\n\n // The child has split and `result` is a new right child... does it fit?\n if (this.keys.length < MAX_NODE_SIZE) {\n // yes\n this.insert(i + 1, result);\n return null;\n }\n // no, we must split also\n const newRightSibling = this.splitOffRightSide();\n // oxlint-disable-next-line @typescript-eslint/no-this-alias\n let target: BNodeInternal<K> = this;\n if (cmp(result.maxKey(), this.maxKey()) > 0) {\n target = newRightSibling;\n i -= this.keys.length;\n }\n target.insert(i + 1, result);\n return newRightSibling;\n }\n\n /**\n * Inserts `child` at index `i`.\n * This does not mark `child` as shared, so it is the responsibility of the caller\n * to ensure that either child is marked shared, or it is not included in another tree.\n */\n insert(i: number, child: BNode<K>) {\n this.children.splice(i, 0, child);\n this.keys.splice(i, 0, child.maxKey());\n }\n\n /**\n * Split this node.\n * Modifies this to remove the second half of the items, returning a separate node containing them.\n */\n splitOffRightSide() {\n const half = this.children.length >> 1;\n return new BNodeInternal<K>(\n this.children.splice(half),\n this.keys.splice(half),\n );\n }\n\n takeFromRight(rhs: BNode<K>) {\n this.keys.push(rhs.keys.shift()!);\n this.children.push((rhs as BNodeInternal<K>).children.shift()!);\n }\n\n takeFromLeft(lhs: BNode<K>) {\n this.keys.unshift(lhs.keys.pop()!);\n this.children.unshift((lhs as BNodeInternal<K>).children.pop()!);\n }\n\n delete(key: K, tree: BTreeSet<K>): boolean {\n const cmp = tree.comparator;\n const {keys} = this;\n const {children} = this;\n let iLow = indexOf(key, this.keys, 0, cmp);\n let i = iLow;\n const iHigh = Math.min(iLow, keys.length - 1);\n if (i <= iHigh) {\n try {\n if (children[i].isShared) {\n children[i] = children[i].clone();\n }\n const result = children[i].delete(key, tree);\n // Note: if children[i] is empty then keys[i]=undefined.\n // This is an invalid state, but it is fixed below.\n keys[i] = children[i].maxKey();\n return result;\n } finally {\n // Deletions may have occurred, so look for opportunities to merge nodes.\n const half = MAX_NODE_SIZE >> 1;\n if (iLow > 0) iLow--;\n for (i = iHigh; i >= iLow; i--) {\n if (children[i].keys.length <= half) {\n if (children[i].keys.length !== 0) {\n this.tryMerge(i, MAX_NODE_SIZE);\n } else {\n // child is empty! delete it!\n keys.splice(i, 1);\n children.splice(i, 1);\n }\n }\n }\n }\n }\n return false;\n }\n\n /** Merges child i with child i+1 if their combined size is not too large */\n tryMerge(i: number, maxSize: number): boolean {\n const {children} = this;\n if (i >= 0 && i + 1 < children.length) {\n if (children[i].keys.length + children[i + 1].keys.length <= maxSize) {\n if (children[i].isShared)\n // cloned already UNLESS i is outside scan range\n children[i] = children[i].clone();\n children[i].mergeSibling(children[i + 1], maxSize);\n children.splice(i + 1, 1);\n this.keys.splice(i + 1, 1);\n this.keys[i] = children[i].maxKey();\n return true;\n }\n }\n return false;\n }\n\n /**\n * Move children from `rhs` into this.\n * `rhs` must be part of this tree, and be removed from it after this call\n * (otherwise isShared for its children could be incorrect).\n */\n mergeSibling(rhs: BNode<K>, maxNodeSize: number) {\n // assert !this.isShared;\n const oldLength = this.keys.length;\n this.keys.push(...rhs.keys);\n const rhsChildren = (rhs as unknown as BNodeInternal<K>).children;\n this.children.push(...rhsChildren);\n\n if (rhs.isShared && !this.isShared) {\n // All children of a shared node are implicitly shared, and since their new\n // parent is not shared, they must now be explicitly marked as shared.\n for (let i = 0; i < rhsChildren.length; i++) {\n rhsChildren[i].isShared = true;\n }\n }\n\n // If our children are themselves almost empty due to a mass-delete,\n // they may need to be merged too (but only the oldLength-1 and its\n // right sibling should need this).\n this.tryMerge(oldLength - 1, maxNodeSize);\n }\n}\n\n// If key not found, returns i^failXor where i is the insertion index.\n// Callers that don't care whether there was a match will set failXor=0.\nfunction indexOf<K>(\n key: K,\n keys: K[],\n failXor: number,\n comparator: Comparator<K>,\n): number {\n let lo = 0;\n let hi = keys.length;\n let mid = hi >> 1;\n while (lo < hi) {\n const c = comparator(keys[mid], key);\n if (c < 0) {\n lo = mid + 1;\n } else if (c > 0) {\n // key < keys[mid]\n hi = mid;\n } else if (c === 0) {\n return mid;\n } else {\n // c is NaN or otherwise invalid\n if (key === key) {\n // at least the search key is not NaN\n return keys.length;\n }\n throw new Error('NaN was used as a key');\n }\n mid = (lo + hi) >> 1;\n }\n return mid ^ failXor;\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nconst emptyLeaf = new BNode<any>([]);\nemptyLeaf.isShared = true;\n"],"mappings":"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"}
@@ -1,37 +1,44 @@
1
- class TimedCache {
2
- #cache;
3
- #ttlMs;
4
- #intervalHandle;
5
- constructor(ttlMs) {
6
- this.#cache = /* @__PURE__ */ new Map();
7
- this.#ttlMs = ttlMs;
8
- this.#intervalHandle = setInterval(() => {
9
- const now = Date.now();
10
- for (const [key, entry] of this.#cache.entries()) {
11
- if (entry.expiresAt < now) {
12
- this.#cache.delete(key);
13
- }
14
- }
15
- }, ttlMs * 2);
16
- }
17
- set(key, value) {
18
- const entry = { value, expiresAt: Date.now() + this.#ttlMs };
19
- this.#cache.set(key, entry);
20
- }
21
- get(key) {
22
- const entry = this.#cache.get(key);
23
- if (entry === void 0 || entry.expiresAt < Date.now()) {
24
- this.#cache.delete(key);
25
- return void 0;
26
- }
27
- return entry.value;
28
- }
29
- destroy() {
30
- clearInterval(this.#intervalHandle);
31
- this.#cache.clear();
32
- }
33
- }
34
- export {
35
- TimedCache
1
+ //#region ../shared/src/cache.ts
2
+ /**
3
+ * Stores values with an expiration time at time of insertion.
4
+ * Does not update the expiration time on retrieval.
5
+ * Values are automatically removed from the cache after the TTL expires.
6
+ * The cache is cleaned up periodically based on the TTL so it does
7
+ * not grow indefinitely.
8
+ */
9
+ var TimedCache = class {
10
+ #cache;
11
+ #ttlMs;
12
+ #intervalHandle;
13
+ constructor(ttlMs) {
14
+ this.#cache = /* @__PURE__ */ new Map();
15
+ this.#ttlMs = ttlMs;
16
+ this.#intervalHandle = setInterval(() => {
17
+ const now = Date.now();
18
+ for (const [key, entry] of this.#cache.entries()) if (entry.expiresAt < now) this.#cache.delete(key);
19
+ }, ttlMs * 2);
20
+ }
21
+ set(key, value) {
22
+ const entry = {
23
+ value,
24
+ expiresAt: Date.now() + this.#ttlMs
25
+ };
26
+ this.#cache.set(key, entry);
27
+ }
28
+ get(key) {
29
+ const entry = this.#cache.get(key);
30
+ if (entry === void 0 || entry.expiresAt < Date.now()) {
31
+ this.#cache.delete(key);
32
+ return;
33
+ }
34
+ return entry.value;
35
+ }
36
+ destroy() {
37
+ clearInterval(this.#intervalHandle);
38
+ this.#cache.clear();
39
+ }
36
40
  };
37
- //# sourceMappingURL=cache.js.map
41
+ //#endregion
42
+ export { TimedCache };
43
+
44
+ //# sourceMappingURL=cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sources":["../../../../shared/src/cache.ts"],"sourcesContent":["/**\n * Stores values with an expiration time at time of insertion.\n * Does not update the expiration time on retrieval.\n * Values are automatically removed from the cache after the TTL expires.\n * The cache is cleaned up periodically based on the TTL so it does\n * not grow indefinitely.\n */\nexport class TimedCache<T> {\n readonly #cache: Map<string, {value: T; expiresAt: number}>;\n readonly #ttlMs: number;\n readonly #intervalHandle: NodeJS.Timeout;\n\n constructor(ttlMs: number) {\n this.#cache = new Map();\n this.#ttlMs = ttlMs;\n this.#intervalHandle = setInterval(() => {\n const now = Date.now();\n for (const [key, entry] of this.#cache.entries()) {\n if (entry.expiresAt < now) {\n this.#cache.delete(key);\n }\n }\n }, ttlMs * 2);\n }\n\n set(key: string, value: T): void {\n const entry = {value, expiresAt: Date.now() + this.#ttlMs};\n this.#cache.set(key, entry);\n }\n\n get(key: string): T | undefined {\n const entry = this.#cache.get(key);\n if (entry === undefined || entry.expiresAt < Date.now()) {\n this.#cache.delete(key);\n return undefined;\n }\n return entry.value;\n }\n\n destroy(): void {\n clearInterval(this.#intervalHandle);\n this.#cache.clear();\n }\n}\n"],"names":[],"mappings":"AAOO,MAAM,WAAc;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,OAAe;AACzB,SAAK,6BAAa,IAAA;AAClB,SAAK,SAAS;AACd,SAAK,kBAAkB,YAAY,MAAM;AACvC,YAAM,MAAM,KAAK,IAAA;AACjB,iBAAW,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO,WAAW;AAChD,YAAI,MAAM,YAAY,KAAK;AACzB,eAAK,OAAO,OAAO,GAAG;AAAA,QACxB;AAAA,MACF;AAAA,IACF,GAAG,QAAQ,CAAC;AAAA,EACd;AAAA,EAEA,IAAI,KAAa,OAAgB;AAC/B,UAAM,QAAQ,EAAC,OAAO,WAAW,KAAK,IAAA,IAAQ,KAAK,OAAA;AACnD,SAAK,OAAO,IAAI,KAAK,KAAK;AAAA,EAC5B;AAAA,EAEA,IAAI,KAA4B;AAC9B,UAAM,QAAQ,KAAK,OAAO,IAAI,GAAG;AACjC,QAAI,UAAU,UAAa,MAAM,YAAY,KAAK,OAAO;AACvD,WAAK,OAAO,OAAO,GAAG;AACtB,aAAO;AAAA,IACT;AACA,WAAO,MAAM;AAAA,EACf;AAAA,EAEA,UAAgB;AACd,kBAAc,KAAK,eAAe;AAClC,SAAK,OAAO,MAAA;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"cache.js","names":["#cache","#ttlMs","#intervalHandle"],"sources":["../../../../shared/src/cache.ts"],"sourcesContent":["/**\n * Stores values with an expiration time at time of insertion.\n * Does not update the expiration time on retrieval.\n * Values are automatically removed from the cache after the TTL expires.\n * The cache is cleaned up periodically based on the TTL so it does\n * not grow indefinitely.\n */\nexport class TimedCache<T> {\n readonly #cache: Map<string, {value: T; expiresAt: number}>;\n readonly #ttlMs: number;\n readonly #intervalHandle: NodeJS.Timeout;\n\n constructor(ttlMs: number) {\n this.#cache = new Map();\n this.#ttlMs = ttlMs;\n this.#intervalHandle = setInterval(() => {\n const now = Date.now();\n for (const [key, entry] of this.#cache.entries()) {\n if (entry.expiresAt < now) {\n this.#cache.delete(key);\n }\n }\n }, ttlMs * 2);\n }\n\n set(key: string, value: T): void {\n const entry = {value, expiresAt: Date.now() + this.#ttlMs};\n this.#cache.set(key, entry);\n }\n\n get(key: string): T | undefined {\n const entry = this.#cache.get(key);\n if (entry === undefined || entry.expiresAt < Date.now()) {\n this.#cache.delete(key);\n return undefined;\n }\n return entry.value;\n }\n\n destroy(): void {\n clearInterval(this.#intervalHandle);\n this.#cache.clear();\n }\n}\n"],"mappings":";;;;;;;;AAOA,IAAa,aAAb,MAA2B;CACzB;CACA;CACA;CAEA,YAAY,OAAe;AACzB,QAAA,wBAAc,IAAI,KAAK;AACvB,QAAA,QAAc;AACd,QAAA,iBAAuB,kBAAkB;GACvC,MAAM,MAAM,KAAK,KAAK;AACtB,QAAK,MAAM,CAAC,KAAK,UAAU,MAAA,MAAY,SAAS,CAC9C,KAAI,MAAM,YAAY,IACpB,OAAA,MAAY,OAAO,IAAI;KAG1B,QAAQ,EAAE;;CAGf,IAAI,KAAa,OAAgB;EAC/B,MAAM,QAAQ;GAAC;GAAO,WAAW,KAAK,KAAK,GAAG,MAAA;GAAY;AAC1D,QAAA,MAAY,IAAI,KAAK,MAAM;;CAG7B,IAAI,KAA4B;EAC9B,MAAM,QAAQ,MAAA,MAAY,IAAI,IAAI;AAClC,MAAI,UAAU,KAAA,KAAa,MAAM,YAAY,KAAK,KAAK,EAAE;AACvD,SAAA,MAAY,OAAO,IAAI;AACvB;;AAEF,SAAO,MAAM;;CAGf,UAAgB;AACd,gBAAc,MAAA,eAAqB;AACnC,QAAA,MAAY,OAAO"}
@@ -1,28 +1,26 @@
1
- class Centroid {
2
- mean;
3
- weight;
4
- constructor(mean, weight) {
5
- this.mean = mean;
6
- this.weight = weight;
7
- }
8
- add(r) {
9
- if (r.weight < 0) {
10
- throw new Error("centroid weight cannot be less than zero");
11
- }
12
- if (this.weight !== 0) {
13
- this.weight += r.weight;
14
- this.mean += r.weight * (r.mean - this.mean) / this.weight;
15
- } else {
16
- this.weight = r.weight;
17
- this.mean = r.mean;
18
- }
19
- }
20
- }
1
+ //#region ../shared/src/centroid.ts
2
+ var Centroid = class {
3
+ mean;
4
+ weight;
5
+ constructor(mean, weight) {
6
+ this.mean = mean;
7
+ this.weight = weight;
8
+ }
9
+ add(r) {
10
+ if (r.weight < 0) throw new Error("centroid weight cannot be less than zero");
11
+ if (this.weight !== 0) {
12
+ this.weight += r.weight;
13
+ this.mean += r.weight * (r.mean - this.mean) / this.weight;
14
+ } else {
15
+ this.weight = r.weight;
16
+ this.mean = r.mean;
17
+ }
18
+ }
19
+ };
21
20
  function sortCentroidList(centroids) {
22
- centroids.sort((a, b) => a.mean - b.mean);
21
+ centroids.sort((a, b) => a.mean - b.mean);
23
22
  }
24
- export {
25
- Centroid,
26
- sortCentroidList
27
- };
28
- //# sourceMappingURL=centroid.js.map
23
+ //#endregion
24
+ export { Centroid, sortCentroidList };
25
+
26
+ //# sourceMappingURL=centroid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"centroid.js","sources":["../../../../shared/src/centroid.ts"],"sourcesContent":["// Apache License 2.0\n// https://github.com/influxdata/tdigest\n\n// Centroid average position of all points in a shape\nexport class Centroid {\n mean: number;\n weight: number;\n\n constructor(mean: number, weight: number) {\n this.mean = mean;\n this.weight = weight;\n }\n\n add(r: Centroid): void {\n if (r.weight < 0) {\n throw new Error('centroid weight cannot be less than zero');\n }\n if (this.weight !== 0) {\n this.weight += r.weight;\n this.mean += (r.weight * (r.mean - this.mean)) / this.weight;\n } else {\n this.weight = r.weight;\n this.mean = r.mean;\n }\n }\n}\n\n/** CentroidList is sorted by the mean of the centroid, ascending. */\nexport type CentroidList = Centroid[];\n\nexport function sortCentroidList(centroids: CentroidList): void {\n centroids.sort((a, b) => a.mean - b.mean);\n}\n"],"names":[],"mappings":"AAIO,MAAM,SAAS;AAAA,EACpB;AAAA,EACA;AAAA,EAEA,YAAY,MAAc,QAAgB;AACxC,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAI,GAAmB;AACrB,QAAI,EAAE,SAAS,GAAG;AAChB,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AACA,QAAI,KAAK,WAAW,GAAG;AACrB,WAAK,UAAU,EAAE;AACjB,WAAK,QAAS,EAAE,UAAU,EAAE,OAAO,KAAK,QAAS,KAAK;AAAA,IACxD,OAAO;AACL,WAAK,SAAS,EAAE;AAChB,WAAK,OAAO,EAAE;AAAA,IAChB;AAAA,EACF;AACF;AAKO,SAAS,iBAAiB,WAA+B;AAC9D,YAAU,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI;AAC1C;"}
1
+ {"version":3,"file":"centroid.js","names":[],"sources":["../../../../shared/src/centroid.ts"],"sourcesContent":["// Apache License 2.0\n// https://github.com/influxdata/tdigest\n\n// Centroid average position of all points in a shape\nexport class Centroid {\n mean: number;\n weight: number;\n\n constructor(mean: number, weight: number) {\n this.mean = mean;\n this.weight = weight;\n }\n\n add(r: Centroid): void {\n if (r.weight < 0) {\n throw new Error('centroid weight cannot be less than zero');\n }\n if (this.weight !== 0) {\n this.weight += r.weight;\n this.mean += (r.weight * (r.mean - this.mean)) / this.weight;\n } else {\n this.weight = r.weight;\n this.mean = r.mean;\n }\n }\n}\n\n/** CentroidList is sorted by the mean of the centroid, ascending. */\nexport type CentroidList = Centroid[];\n\nexport function sortCentroidList(centroids: CentroidList): void {\n centroids.sort((a, b) => a.mean - b.mean);\n}\n"],"mappings":";AAIA,IAAa,WAAb,MAAsB;CACpB;CACA;CAEA,YAAY,MAAc,QAAgB;AACxC,OAAK,OAAO;AACZ,OAAK,SAAS;;CAGhB,IAAI,GAAmB;AACrB,MAAI,EAAE,SAAS,EACb,OAAM,IAAI,MAAM,2CAA2C;AAE7D,MAAI,KAAK,WAAW,GAAG;AACrB,QAAK,UAAU,EAAE;AACjB,QAAK,QAAS,EAAE,UAAU,EAAE,OAAO,KAAK,QAAS,KAAK;SACjD;AACL,QAAK,SAAS,EAAE;AAChB,QAAK,OAAO,EAAE;;;;AAQpB,SAAgB,iBAAiB,WAA+B;AAC9D,WAAU,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK"}
@@ -1,6 +1,6 @@
1
- const isProd = process.env.NODE_ENV === "production";
2
- export {
3
- isProd,
4
- isProd as skipAssertJSONValue
5
- };
6
- //# sourceMappingURL=config.js.map
1
+ //#region ../shared/src/config.ts
2
+ var isProd = process.env.NODE_ENV === "production";
3
+ //#endregion
4
+ export { isProd };
5
+
6
+ //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":["../../../../shared/src/config.ts"],"sourcesContent":["declare const process: {\n env: {\n NODE_ENV?: string;\n };\n};\n\nexport const isProd = process.env.NODE_ENV === 'production';\n\nexport {isProd as skipAssertJSONValue};\n"],"names":[],"mappings":"AAMO,MAAM,SAAS,QAAQ,IAAI,aAAa;"}
1
+ {"version":3,"file":"config.js","names":[],"sources":["../../../../shared/src/config.ts"],"sourcesContent":["declare const process: {\n env: {\n NODE_ENV?: string;\n };\n};\n\nexport const isProd = process.env.NODE_ENV === 'production';\n\nexport {isProd as skipAssertJSONValue};\n"],"mappings":";AAMA,IAAa,SAAA,QAAA,IAAA,aAAkC"}
@@ -1,59 +1,55 @@
1
- class CustomKeyMap {
2
- [Symbol.toStringTag] = "CustomKeyMap";
3
- #toKey;
4
- #map = /* @__PURE__ */ new Map();
5
- constructor(toKey, iterable) {
6
- this.#toKey = toKey;
7
- if (iterable) {
8
- for (const [key, value] of iterable ?? []) {
9
- this.#map.set(toKey(key), [key, value]);
10
- }
11
- }
12
- }
13
- clear() {
14
- this.#map.clear();
15
- }
16
- delete(key) {
17
- return this.#map.delete(this.#toKey(key));
18
- }
19
- forEach(callbackfn, thisArg) {
20
- for (const [key, value] of this.#map.values()) {
21
- callbackfn.call(thisArg, value, key, this);
22
- }
23
- }
24
- get(key) {
25
- return this.#map.get(this.#toKey(key))?.[1];
26
- }
27
- has(key) {
28
- return this.#map.has(this.#toKey(key));
29
- }
30
- set(key, value) {
31
- this.#map.set(this.#toKey(key), [key, value]);
32
- return this;
33
- }
34
- get size() {
35
- return this.#map.size;
36
- }
37
- *entries() {
38
- for (const entry of this.#map.values()) {
39
- yield entry.slice(0, 2);
40
- }
41
- }
42
- *keys() {
43
- for (const entry of this.#map.values()) {
44
- yield entry[0];
45
- }
46
- }
47
- *values() {
48
- for (const entry of this.#map.values()) {
49
- yield entry[1];
50
- }
51
- }
52
- [Symbol.iterator]() {
53
- return this.entries();
54
- }
55
- }
56
- export {
57
- CustomKeyMap
1
+ //#region ../shared/src/custom-key-map.ts
2
+ /**
3
+ * A {@link Map} that uses a custom key transformation function to convert keys
4
+ * to a primitive type that can be used as a {@link Map} key.
5
+ *
6
+ * This allows for using objects as keys in a {@link Map} without worrying about
7
+ * reference equality.
8
+ */
9
+ var CustomKeyMap = class {
10
+ [Symbol.toStringTag] = "CustomKeyMap";
11
+ #toKey;
12
+ #map = /* @__PURE__ */ new Map();
13
+ constructor(toKey, iterable) {
14
+ this.#toKey = toKey;
15
+ if (iterable) for (const [key, value] of iterable ?? []) this.#map.set(toKey(key), [key, value]);
16
+ }
17
+ clear() {
18
+ this.#map.clear();
19
+ }
20
+ delete(key) {
21
+ return this.#map.delete(this.#toKey(key));
22
+ }
23
+ forEach(callbackfn, thisArg) {
24
+ for (const [key, value] of this.#map.values()) callbackfn.call(thisArg, value, key, this);
25
+ }
26
+ get(key) {
27
+ return this.#map.get(this.#toKey(key))?.[1];
28
+ }
29
+ has(key) {
30
+ return this.#map.has(this.#toKey(key));
31
+ }
32
+ set(key, value) {
33
+ this.#map.set(this.#toKey(key), [key, value]);
34
+ return this;
35
+ }
36
+ get size() {
37
+ return this.#map.size;
38
+ }
39
+ *entries() {
40
+ for (const entry of this.#map.values()) yield entry.slice(0, 2);
41
+ }
42
+ *keys() {
43
+ for (const entry of this.#map.values()) yield entry[0];
44
+ }
45
+ *values() {
46
+ for (const entry of this.#map.values()) yield entry[1];
47
+ }
48
+ [Symbol.iterator]() {
49
+ return this.entries();
50
+ }
58
51
  };
59
- //# sourceMappingURL=custom-key-map.js.map
52
+ //#endregion
53
+ export { CustomKeyMap };
54
+
55
+ //# sourceMappingURL=custom-key-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-key-map.js","sources":["../../../../shared/src/custom-key-map.ts"],"sourcesContent":["type Primitive = undefined | null | boolean | string | number | symbol | bigint;\n\n/**\n * A {@link Map} that uses a custom key transformation function to convert keys\n * to a primitive type that can be used as a {@link Map} key.\n *\n * This allows for using objects as keys in a {@link Map} without worrying about\n * reference equality.\n */\nexport class CustomKeyMap<K, V> {\n readonly [Symbol.toStringTag] = 'CustomKeyMap';\n readonly #toKey: (key: K) => Primitive;\n readonly #map = new Map<Primitive, readonly [K, V]>();\n\n constructor(\n toKey: (key: K) => Primitive,\n iterable?: Iterable<readonly [K, V]> | null,\n ) {\n this.#toKey = toKey;\n if (iterable) {\n for (const [key, value] of iterable ?? []) {\n this.#map.set(toKey(key), [key, value]);\n }\n }\n }\n\n clear(): void {\n this.#map.clear();\n }\n\n delete(key: K): boolean {\n return this.#map.delete(this.#toKey(key));\n }\n\n forEach(\n callbackfn: (value: V, key: K, map: CustomKeyMap<K, V>) => void,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n thisArg?: any,\n ): void {\n for (const [key, value] of this.#map.values()) {\n callbackfn.call(thisArg, value, key, this);\n }\n }\n\n get(key: K): V | undefined {\n return this.#map.get(this.#toKey(key))?.[1];\n }\n\n has(key: K): boolean {\n return this.#map.has(this.#toKey(key));\n }\n\n set(key: K, value: V): this {\n this.#map.set(this.#toKey(key), [key, value]);\n return this;\n }\n\n get size(): number {\n return this.#map.size;\n }\n\n *entries(): MapIterator<[K, V]> {\n for (const entry of this.#map.values()) {\n yield entry.slice(0, 2) as [K, V];\n }\n }\n\n *keys(): MapIterator<K> {\n for (const entry of this.#map.values()) {\n yield entry[0];\n }\n }\n\n *values(): MapIterator<V> {\n for (const entry of this.#map.values()) {\n yield entry[1];\n }\n }\n\n [Symbol.iterator](): MapIterator<[K, V]> {\n return this.entries();\n }\n}\n"],"names":[],"mappings":"AASO,MAAM,aAAmB;AAAA,EAC9B,CAAU,OAAO,WAAW,IAAI;AAAA,EACvB;AAAA,EACA,2BAAW,IAAA;AAAA,EAEpB,YACE,OACA,UACA;AACA,SAAK,SAAS;AACd,QAAI,UAAU;AACZ,iBAAW,CAAC,KAAK,KAAK,KAAK,YAAY,CAAA,GAAI;AACzC,aAAK,KAAK,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAc;AACZ,SAAK,KAAK,MAAA;AAAA,EACZ;AAAA,EAEA,OAAO,KAAiB;AACtB,WAAO,KAAK,KAAK,OAAO,KAAK,OAAO,GAAG,CAAC;AAAA,EAC1C;AAAA,EAEA,QACE,YAEA,SACM;AACN,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,UAAU;AAC7C,iBAAW,KAAK,SAAS,OAAO,KAAK,IAAI;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,IAAI,KAAuB;AACzB,WAAO,KAAK,KAAK,IAAI,KAAK,OAAO,GAAG,CAAC,IAAI,CAAC;AAAA,EAC5C;AAAA,EAEA,IAAI,KAAiB;AACnB,WAAO,KAAK,KAAK,IAAI,KAAK,OAAO,GAAG,CAAC;AAAA,EACvC;AAAA,EAEA,IAAI,KAAQ,OAAgB;AAC1B,SAAK,KAAK,IAAI,KAAK,OAAO,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,CAAC,UAA+B;AAC9B,eAAW,SAAS,KAAK,KAAK,OAAA,GAAU;AACtC,YAAM,MAAM,MAAM,GAAG,CAAC;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,CAAC,OAAuB;AACtB,eAAW,SAAS,KAAK,KAAK,OAAA,GAAU;AACtC,YAAM,MAAM,CAAC;AAAA,IACf;AAAA,EACF;AAAA,EAEA,CAAC,SAAyB;AACxB,eAAW,SAAS,KAAK,KAAK,OAAA,GAAU;AACtC,YAAM,MAAM,CAAC;AAAA,IACf;AAAA,EACF;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAyB;AACvC,WAAO,KAAK,QAAA;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"custom-key-map.js","names":["#toKey","#map"],"sources":["../../../../shared/src/custom-key-map.ts"],"sourcesContent":["type Primitive = undefined | null | boolean | string | number | symbol | bigint;\n\n/**\n * A {@link Map} that uses a custom key transformation function to convert keys\n * to a primitive type that can be used as a {@link Map} key.\n *\n * This allows for using objects as keys in a {@link Map} without worrying about\n * reference equality.\n */\nexport class CustomKeyMap<K, V> {\n readonly [Symbol.toStringTag] = 'CustomKeyMap';\n readonly #toKey: (key: K) => Primitive;\n readonly #map = new Map<Primitive, readonly [K, V]>();\n\n constructor(\n toKey: (key: K) => Primitive,\n iterable?: Iterable<readonly [K, V]> | null,\n ) {\n this.#toKey = toKey;\n if (iterable) {\n for (const [key, value] of iterable ?? []) {\n this.#map.set(toKey(key), [key, value]);\n }\n }\n }\n\n clear(): void {\n this.#map.clear();\n }\n\n delete(key: K): boolean {\n return this.#map.delete(this.#toKey(key));\n }\n\n forEach(\n callbackfn: (value: V, key: K, map: CustomKeyMap<K, V>) => void,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n thisArg?: any,\n ): void {\n for (const [key, value] of this.#map.values()) {\n callbackfn.call(thisArg, value, key, this);\n }\n }\n\n get(key: K): V | undefined {\n return this.#map.get(this.#toKey(key))?.[1];\n }\n\n has(key: K): boolean {\n return this.#map.has(this.#toKey(key));\n }\n\n set(key: K, value: V): this {\n this.#map.set(this.#toKey(key), [key, value]);\n return this;\n }\n\n get size(): number {\n return this.#map.size;\n }\n\n *entries(): MapIterator<[K, V]> {\n for (const entry of this.#map.values()) {\n yield entry.slice(0, 2) as [K, V];\n }\n }\n\n *keys(): MapIterator<K> {\n for (const entry of this.#map.values()) {\n yield entry[0];\n }\n }\n\n *values(): MapIterator<V> {\n for (const entry of this.#map.values()) {\n yield entry[1];\n }\n }\n\n [Symbol.iterator](): MapIterator<[K, V]> {\n return this.entries();\n }\n}\n"],"mappings":";;;;;;;;AASA,IAAa,eAAb,MAAgC;CAC9B,CAAU,OAAO,eAAe;CAChC;CACA,uBAAgB,IAAI,KAAiC;CAErD,YACE,OACA,UACA;AACA,QAAA,QAAc;AACd,MAAI,SACF,MAAK,MAAM,CAAC,KAAK,UAAU,YAAY,EAAE,CACvC,OAAA,IAAU,IAAI,MAAM,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;;CAK7C,QAAc;AACZ,QAAA,IAAU,OAAO;;CAGnB,OAAO,KAAiB;AACtB,SAAO,MAAA,IAAU,OAAO,MAAA,MAAY,IAAI,CAAC;;CAG3C,QACE,YAEA,SACM;AACN,OAAK,MAAM,CAAC,KAAK,UAAU,MAAA,IAAU,QAAQ,CAC3C,YAAW,KAAK,SAAS,OAAO,KAAK,KAAK;;CAI9C,IAAI,KAAuB;AACzB,SAAO,MAAA,IAAU,IAAI,MAAA,MAAY,IAAI,CAAC,GAAG;;CAG3C,IAAI,KAAiB;AACnB,SAAO,MAAA,IAAU,IAAI,MAAA,MAAY,IAAI,CAAC;;CAGxC,IAAI,KAAQ,OAAgB;AAC1B,QAAA,IAAU,IAAI,MAAA,MAAY,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;AAC7C,SAAO;;CAGT,IAAI,OAAe;AACjB,SAAO,MAAA,IAAU;;CAGnB,CAAC,UAA+B;AAC9B,OAAK,MAAM,SAAS,MAAA,IAAU,QAAQ,CACpC,OAAM,MAAM,MAAM,GAAG,EAAE;;CAI3B,CAAC,OAAuB;AACtB,OAAK,MAAM,SAAS,MAAA,IAAU,QAAQ,CACpC,OAAM,MAAM;;CAIhB,CAAC,SAAyB;AACxB,OAAK,MAAM,SAAS,MAAA,IAAU,QAAQ,CACpC,OAAM,MAAM;;CAIhB,CAAC,OAAO,YAAiC;AACvC,SAAO,KAAK,SAAS"}
@@ -1,52 +1,54 @@
1
- class CustomKeySet {
2
- [Symbol.toStringTag] = "CustomKeySet";
3
- #toKey;
4
- #map = /* @__PURE__ */ new Map();
5
- constructor(toKey, iterable) {
6
- this.#toKey = toKey;
7
- if (iterable) {
8
- for (const value of iterable ?? []) {
9
- this.#map.set(toKey(value), value);
10
- }
11
- }
12
- }
13
- add(value) {
14
- this.#map.set(this.#toKey(value), value);
15
- return this;
16
- }
17
- clear() {
18
- this.#map.clear();
19
- }
20
- delete(value) {
21
- return this.#map.delete(this.#toKey(value));
22
- }
23
- forEach(callbackfn, thisArg) {
24
- this.#map.forEach((value) => {
25
- callbackfn.call(thisArg, value, value, this);
26
- });
27
- }
28
- has(value) {
29
- return this.#map.has(this.#toKey(value));
30
- }
31
- get size() {
32
- return this.#map.size;
33
- }
34
- *entries() {
35
- for (const value of this.#map.values()) {
36
- yield [value, value];
37
- }
38
- }
39
- keys() {
40
- return this.#map.values();
41
- }
42
- values() {
43
- return this.#map.values();
44
- }
45
- [Symbol.iterator]() {
46
- return this.#map.values();
47
- }
48
- }
49
- export {
50
- CustomKeySet
1
+ //#region ../shared/src/custom-key-set.ts
2
+ /**
3
+ * A {@link Set} that uses a custom value transformation function to convert values
4
+ * to a primitive type that can be used as a {@link Set} value.
5
+ *
6
+ * This allows for using objects as values in a {@link Set} without worrying about
7
+ * reference equality.
8
+ */
9
+ var CustomKeySet = class {
10
+ [Symbol.toStringTag] = "CustomKeySet";
11
+ #toKey;
12
+ #map = /* @__PURE__ */ new Map();
13
+ constructor(toKey, iterable) {
14
+ this.#toKey = toKey;
15
+ if (iterable) for (const value of iterable ?? []) this.#map.set(toKey(value), value);
16
+ }
17
+ add(value) {
18
+ this.#map.set(this.#toKey(value), value);
19
+ return this;
20
+ }
21
+ clear() {
22
+ this.#map.clear();
23
+ }
24
+ delete(value) {
25
+ return this.#map.delete(this.#toKey(value));
26
+ }
27
+ forEach(callbackfn, thisArg) {
28
+ this.#map.forEach((value) => {
29
+ callbackfn.call(thisArg, value, value, this);
30
+ });
31
+ }
32
+ has(value) {
33
+ return this.#map.has(this.#toKey(value));
34
+ }
35
+ get size() {
36
+ return this.#map.size;
37
+ }
38
+ *entries() {
39
+ for (const value of this.#map.values()) yield [value, value];
40
+ }
41
+ keys() {
42
+ return this.#map.values();
43
+ }
44
+ values() {
45
+ return this.#map.values();
46
+ }
47
+ [Symbol.iterator]() {
48
+ return this.#map.values();
49
+ }
51
50
  };
52
- //# sourceMappingURL=custom-key-set.js.map
51
+ //#endregion
52
+ export { CustomKeySet };
53
+
54
+ //# sourceMappingURL=custom-key-set.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-key-set.js","sources":["../../../../shared/src/custom-key-set.ts"],"sourcesContent":["type Primitive = undefined | null | boolean | string | number | symbol | bigint;\n\n/**\n * A {@link Set} that uses a custom value transformation function to convert values\n * to a primitive type that can be used as a {@link Set} value.\n *\n * This allows for using objects as values in a {@link Set} without worrying about\n * reference equality.\n */\n\nexport class CustomKeySet<V> {\n readonly [Symbol.toStringTag] = 'CustomKeySet';\n readonly #toKey: (value: V) => Primitive;\n readonly #map = new Map<Primitive, V>();\n\n constructor(toKey: (value: V) => Primitive, iterable?: Iterable<V> | null) {\n this.#toKey = toKey;\n if (iterable) {\n for (const value of iterable ?? []) {\n this.#map.set(toKey(value), value);\n }\n }\n }\n\n add(value: V): this {\n this.#map.set(this.#toKey(value), value);\n return this;\n }\n\n clear(): void {\n this.#map.clear();\n }\n\n delete(value: V): boolean {\n return this.#map.delete(this.#toKey(value));\n }\n\n forEach(\n callbackfn: (value: V, value2: V, set: CustomKeySet<V>) => void,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n thisArg?: any,\n ): void {\n this.#map.forEach(value => {\n callbackfn.call(thisArg, value, value, this);\n });\n }\n\n has(value: V): boolean {\n return this.#map.has(this.#toKey(value));\n }\n\n get size(): number {\n return this.#map.size;\n }\n\n *entries(): IterableIterator<[V, V]> {\n for (const value of this.#map.values()) {\n yield [value, value];\n }\n }\n\n keys(): IterableIterator<V> {\n return this.#map.values();\n }\n\n values(): IterableIterator<V> {\n return this.#map.values();\n }\n\n [Symbol.iterator](): IterableIterator<V> {\n return this.#map.values();\n }\n}\n"],"names":[],"mappings":"AAUO,MAAM,aAAgB;AAAA,EAC3B,CAAU,OAAO,WAAW,IAAI;AAAA,EACvB;AAAA,EACA,2BAAW,IAAA;AAAA,EAEpB,YAAY,OAAgC,UAA+B;AACzE,SAAK,SAAS;AACd,QAAI,UAAU;AACZ,iBAAW,SAAS,YAAY,IAAI;AAClC,aAAK,KAAK,IAAI,MAAM,KAAK,GAAG,KAAK;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,OAAgB;AAClB,SAAK,KAAK,IAAI,KAAK,OAAO,KAAK,GAAG,KAAK;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,QAAc;AACZ,SAAK,KAAK,MAAA;AAAA,EACZ;AAAA,EAEA,OAAO,OAAmB;AACxB,WAAO,KAAK,KAAK,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,EAC5C;AAAA,EAEA,QACE,YAEA,SACM;AACN,SAAK,KAAK,QAAQ,CAAA,UAAS;AACzB,iBAAW,KAAK,SAAS,OAAO,OAAO,IAAI;AAAA,IAC7C,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,OAAmB;AACrB,WAAO,KAAK,KAAK,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,EACzC;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,CAAC,UAAoC;AACnC,eAAW,SAAS,KAAK,KAAK,OAAA,GAAU;AACtC,YAAM,CAAC,OAAO,KAAK;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,OAA4B;AAC1B,WAAO,KAAK,KAAK,OAAA;AAAA,EACnB;AAAA,EAEA,SAA8B;AAC5B,WAAO,KAAK,KAAK,OAAA;AAAA,EACnB;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAyB;AACvC,WAAO,KAAK,KAAK,OAAA;AAAA,EACnB;AACF;"}
1
+ {"version":3,"file":"custom-key-set.js","names":["#toKey","#map"],"sources":["../../../../shared/src/custom-key-set.ts"],"sourcesContent":["type Primitive = undefined | null | boolean | string | number | symbol | bigint;\n\n/**\n * A {@link Set} that uses a custom value transformation function to convert values\n * to a primitive type that can be used as a {@link Set} value.\n *\n * This allows for using objects as values in a {@link Set} without worrying about\n * reference equality.\n */\n\nexport class CustomKeySet<V> {\n readonly [Symbol.toStringTag] = 'CustomKeySet';\n readonly #toKey: (value: V) => Primitive;\n readonly #map = new Map<Primitive, V>();\n\n constructor(toKey: (value: V) => Primitive, iterable?: Iterable<V> | null) {\n this.#toKey = toKey;\n if (iterable) {\n for (const value of iterable ?? []) {\n this.#map.set(toKey(value), value);\n }\n }\n }\n\n add(value: V): this {\n this.#map.set(this.#toKey(value), value);\n return this;\n }\n\n clear(): void {\n this.#map.clear();\n }\n\n delete(value: V): boolean {\n return this.#map.delete(this.#toKey(value));\n }\n\n forEach(\n callbackfn: (value: V, value2: V, set: CustomKeySet<V>) => void,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n thisArg?: any,\n ): void {\n this.#map.forEach(value => {\n callbackfn.call(thisArg, value, value, this);\n });\n }\n\n has(value: V): boolean {\n return this.#map.has(this.#toKey(value));\n }\n\n get size(): number {\n return this.#map.size;\n }\n\n *entries(): IterableIterator<[V, V]> {\n for (const value of this.#map.values()) {\n yield [value, value];\n }\n }\n\n keys(): IterableIterator<V> {\n return this.#map.values();\n }\n\n values(): IterableIterator<V> {\n return this.#map.values();\n }\n\n [Symbol.iterator](): IterableIterator<V> {\n return this.#map.values();\n }\n}\n"],"mappings":";;;;;;;;AAUA,IAAa,eAAb,MAA6B;CAC3B,CAAU,OAAO,eAAe;CAChC;CACA,uBAAgB,IAAI,KAAmB;CAEvC,YAAY,OAAgC,UAA+B;AACzE,QAAA,QAAc;AACd,MAAI,SACF,MAAK,MAAM,SAAS,YAAY,EAAE,CAChC,OAAA,IAAU,IAAI,MAAM,MAAM,EAAE,MAAM;;CAKxC,IAAI,OAAgB;AAClB,QAAA,IAAU,IAAI,MAAA,MAAY,MAAM,EAAE,MAAM;AACxC,SAAO;;CAGT,QAAc;AACZ,QAAA,IAAU,OAAO;;CAGnB,OAAO,OAAmB;AACxB,SAAO,MAAA,IAAU,OAAO,MAAA,MAAY,MAAM,CAAC;;CAG7C,QACE,YAEA,SACM;AACN,QAAA,IAAU,SAAQ,UAAS;AACzB,cAAW,KAAK,SAAS,OAAO,OAAO,KAAK;IAC5C;;CAGJ,IAAI,OAAmB;AACrB,SAAO,MAAA,IAAU,IAAI,MAAA,MAAY,MAAM,CAAC;;CAG1C,IAAI,OAAe;AACjB,SAAO,MAAA,IAAU;;CAGnB,CAAC,UAAoC;AACnC,OAAK,MAAM,SAAS,MAAA,IAAU,QAAQ,CACpC,OAAM,CAAC,OAAO,MAAM;;CAIxB,OAA4B;AAC1B,SAAO,MAAA,IAAU,QAAQ;;CAG3B,SAA8B;AAC5B,SAAO,MAAA,IAAU,QAAQ;;CAG3B,CAAC,OAAO,YAAiC;AACvC,SAAO,MAAA,IAAU,QAAQ"}