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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1777) hide show
  1. package/README.md +28 -3
  2. package/out/_virtual/_@oxc-project_runtime@0.130.0/helpers/usingCtx.js +57 -0
  3. package/out/_virtual/__vite-optional-peer-dep_pg-native_pg.js +13 -0
  4. package/out/_virtual/__vite-optional-peer-dep_pg-native_pg.js.map +1 -0
  5. package/out/_virtual/_rolldown/runtime.js +12 -1
  6. package/out/node_modules/.pnpm/@opentelemetry_semantic-conventions@1.41.1/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +12 -0
  7. package/out/node_modules/.pnpm/@opentelemetry_semantic-conventions@1.41.1/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -0
  8. package/out/node_modules/.pnpm/pg-cloudflare@1.3.0/node_modules/pg-cloudflare/dist/empty.js +11 -0
  9. package/out/node_modules/.pnpm/pg-cloudflare@1.3.0/node_modules/pg-cloudflare/dist/empty.js.map +1 -0
  10. package/out/node_modules/.pnpm/pg-connection-string@2.12.0/node_modules/pg-connection-string/index.js +130 -0
  11. package/out/node_modules/.pnpm/pg-connection-string@2.12.0/node_modules/pg-connection-string/index.js.map +1 -0
  12. package/out/node_modules/.pnpm/pg-int8@1.0.1/node_modules/pg-int8/index.js +62 -0
  13. package/out/node_modules/.pnpm/pg-int8@1.0.1/node_modules/pg-int8/index.js.map +1 -0
  14. package/out/node_modules/.pnpm/pg-pool@3.13.0_pg@8.20.0/node_modules/pg-pool/index.js +353 -0
  15. package/out/node_modules/.pnpm/pg-pool@3.13.0_pg@8.20.0/node_modules/pg-pool/index.js.map +1 -0
  16. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-reader.js +60 -0
  17. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-reader.js.map +1 -0
  18. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-writer.js +81 -0
  19. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -0
  20. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/index.js +35 -0
  21. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/index.js.map +1 -0
  22. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/messages.js +167 -0
  23. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/messages.js.map +1 -0
  24. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/parser.js +288 -0
  25. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/parser.js.map +1 -0
  26. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/serializer.js +177 -0
  27. package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/serializer.js.map +1 -0
  28. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.js +46 -0
  29. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.js.map +1 -0
  30. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/arrayParser.js +16 -0
  31. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/arrayParser.js.map +1 -0
  32. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/binaryParsers.js +165 -0
  33. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/binaryParsers.js.map +1 -0
  34. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/builtins.js +81 -0
  35. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/builtins.js.map +1 -0
  36. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/textParsers.js +167 -0
  37. package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/textParsers.js.map +1 -0
  38. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/esm/index.js +19 -0
  39. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/esm/index.js.map +1 -0
  40. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/client.js +508 -0
  41. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/client.js.map +1 -0
  42. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection-parameters.js +104 -0
  43. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection-parameters.js.map +1 -0
  44. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection.js +160 -0
  45. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection.js.map +1 -0
  46. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/cert-signatures.js +97 -0
  47. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/cert-signatures.js.map +1 -0
  48. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/sasl.js +131 -0
  49. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/sasl.js.map +1 -0
  50. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-legacy.js +39 -0
  51. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-legacy.js.map +1 -0
  52. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-webcrypto.js +89 -0
  53. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-webcrypto.js.map +1 -0
  54. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils.js +13 -0
  55. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils.js.map +1 -0
  56. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/defaults.js +46 -0
  57. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/defaults.js.map +1 -0
  58. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/index.js +71 -0
  59. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/index.js.map +1 -0
  60. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/client.js +226 -0
  61. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/client.js.map +1 -0
  62. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/index.js +11 -0
  63. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/index.js.map +1 -0
  64. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/query.js +117 -0
  65. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/query.js.map +1 -0
  66. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/query.js +151 -0
  67. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/query.js.map +1 -0
  68. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/result.js +76 -0
  69. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/result.js.map +1 -0
  70. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/stream.js +73 -0
  71. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/stream.js.map +1 -0
  72. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/type-overrides.js +35 -0
  73. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/type-overrides.js.map +1 -0
  74. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/utils.js +118 -0
  75. package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/utils.js.map +1 -0
  76. package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/helper.js +147 -0
  77. package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/helper.js.map +1 -0
  78. package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/index.js +21 -0
  79. package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/index.js.map +1 -0
  80. package/out/node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js +84 -0
  81. package/out/node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js.map +1 -0
  82. package/out/node_modules/.pnpm/postgres-bytea@1.0.1/node_modules/postgres-bytea/index.js +28 -0
  83. package/out/node_modules/.pnpm/postgres-bytea@1.0.1/node_modules/postgres-bytea/index.js.map +1 -0
  84. package/out/node_modules/.pnpm/postgres-date@1.0.7/node_modules/postgres-date/index.js +65 -0
  85. package/out/node_modules/.pnpm/postgres-date@1.0.7/node_modules/postgres-date/index.js.map +1 -0
  86. package/out/node_modules/.pnpm/postgres-interval@1.2.0/node_modules/postgres-interval/index.js +107 -0
  87. package/out/node_modules/.pnpm/postgres-interval@1.2.0/node_modules/postgres-interval/index.js.map +1 -0
  88. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js +696 -0
  89. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
  90. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js +44 -0
  91. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js.map +1 -0
  92. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js +1585 -0
  93. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js.map +1 -0
  94. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js +329 -0
  95. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js.map +1 -0
  96. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/index.js +13 -0
  97. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/index.js.map +1 -0
  98. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js +13 -0
  99. package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js.map +1 -0
  100. package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/dist/server.js +131 -0
  101. package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/dist/server.js.map +1 -0
  102. package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/store/dist/server.js +96 -0
  103. package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/store/dist/server.js.map +1 -0
  104. package/out/node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js +95 -0
  105. package/out/node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js.map +1 -0
  106. package/out/node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/mutable.js +18 -0
  107. package/out/node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/mutable.js.map +1 -0
  108. package/out/packages/analyze-query/src/analyze-cli.js +288 -0
  109. package/out/packages/analyze-query/src/analyze-cli.js.map +1 -0
  110. package/out/packages/analyze-query/src/bin-analyze.js +282 -0
  111. package/out/packages/analyze-query/src/bin-analyze.js.map +1 -0
  112. package/out/packages/analyze-query/src/bin-transform.js.map +1 -0
  113. package/out/packages/ast-to-zql/src/ast-to-zql.js.map +1 -0
  114. package/out/packages/ast-to-zql/src/bin.js.map +1 -0
  115. package/out/packages/ast-to-zql/src/format.js.map +1 -0
  116. package/out/packages/datadog/src/datadog-log-sink.js.map +1 -0
  117. package/out/packages/otel/src/enabled.js.map +1 -0
  118. package/out/packages/otel/src/log-options.js.map +1 -0
  119. package/out/packages/otel/src/maybe-time.js.map +1 -0
  120. package/out/packages/otel/src/span.js.map +1 -0
  121. package/out/packages/otel/src/version.js.map +1 -0
  122. package/out/packages/replicache/src/async-iterable-to-array.js.map +1 -0
  123. package/out/packages/replicache/src/bg-interval.js.map +1 -0
  124. package/out/packages/replicache/src/btree/diff.js.map +1 -0
  125. package/out/packages/replicache/src/btree/node.js.map +1 -0
  126. package/out/packages/replicache/src/btree/read.js.map +1 -0
  127. package/out/packages/replicache/src/btree/splice.js.map +1 -0
  128. package/out/packages/replicache/src/btree/write.js +191 -0
  129. package/out/packages/replicache/src/btree/write.js.map +1 -0
  130. package/out/packages/replicache/src/call-default-fetch.js.map +1 -0
  131. package/out/packages/replicache/src/connection-loop-delegates.js.map +1 -0
  132. package/out/packages/replicache/src/connection-loop.js.map +1 -0
  133. package/out/packages/replicache/src/cookies.js.map +1 -0
  134. package/out/packages/replicache/src/dag/chunk.js.map +1 -0
  135. package/out/packages/replicache/src/dag/gc.js.map +1 -0
  136. package/out/packages/replicache/src/dag/key.js.map +1 -0
  137. package/out/packages/replicache/src/dag/lazy-store.js.map +1 -0
  138. package/out/packages/replicache/src/dag/store-impl.js +157 -0
  139. package/out/packages/replicache/src/dag/store-impl.js.map +1 -0
  140. package/out/packages/replicache/src/dag/store.js.map +1 -0
  141. package/out/packages/replicache/src/dag/visitor.js.map +1 -0
  142. package/out/packages/replicache/src/db/commit.js.map +1 -0
  143. package/out/packages/replicache/src/db/index.js.map +1 -0
  144. package/out/packages/replicache/src/db/read.js.map +1 -0
  145. package/out/packages/replicache/src/db/rebase.js.map +1 -0
  146. package/out/packages/replicache/src/db/write.js.map +1 -0
  147. package/out/packages/replicache/src/deleted-clients.js.map +1 -0
  148. package/out/packages/replicache/src/error-responses.js.map +1 -0
  149. package/out/packages/replicache/src/frozen-json.js.map +1 -0
  150. package/out/packages/replicache/src/get-default-puller.js.map +1 -0
  151. package/out/packages/replicache/src/get-default-pusher.js.map +1 -0
  152. package/out/packages/replicache/src/get-kv-store-provider.js.map +1 -0
  153. package/out/packages/replicache/src/hash.js.map +1 -0
  154. package/out/packages/replicache/src/http-request-info.js.map +1 -0
  155. package/out/packages/replicache/src/index-defs.js.map +1 -0
  156. package/out/packages/replicache/src/kv/expo-sqlite/store.js +57 -0
  157. package/out/packages/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  158. package/out/packages/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  159. package/out/packages/replicache/src/kv/idb-store.js.map +1 -0
  160. package/out/packages/replicache/src/kv/mem-store.js.map +1 -0
  161. package/out/packages/replicache/src/kv/op-sqlite/store.js +63 -0
  162. package/out/packages/replicache/src/kv/op-sqlite/store.js.map +1 -0
  163. package/out/packages/replicache/src/kv/op-sqlite/types.js.map +1 -0
  164. package/out/packages/replicache/src/kv/read-impl.js.map +1 -0
  165. package/out/packages/replicache/src/kv/sqlite-store.js +301 -0
  166. package/out/packages/replicache/src/kv/sqlite-store.js.map +1 -0
  167. package/out/packages/replicache/src/kv/throw-if-closed.js +23 -0
  168. package/out/packages/replicache/src/kv/throw-if-closed.js.map +1 -0
  169. package/out/packages/replicache/src/kv/write-impl-base.js.map +1 -0
  170. package/out/packages/replicache/src/kv/write-impl.js.map +1 -0
  171. package/out/packages/replicache/src/lazy.js.map +1 -0
  172. package/out/packages/replicache/src/log-options.js.map +1 -0
  173. package/out/packages/replicache/src/make-idb-name.js.map +1 -0
  174. package/out/packages/replicache/src/new-client-channel.js.map +1 -0
  175. package/out/packages/replicache/src/on-persist-channel.js.map +1 -0
  176. package/out/packages/replicache/src/patch-operation.js.map +1 -0
  177. package/out/packages/replicache/src/pending-mutations.js.map +1 -0
  178. package/out/packages/replicache/src/persist/client-gc.js.map +1 -0
  179. package/out/packages/replicache/src/persist/client-group-gc.js.map +1 -0
  180. package/out/packages/replicache/src/persist/client-groups.js +150 -0
  181. package/out/packages/replicache/src/persist/client-groups.js.map +1 -0
  182. package/out/packages/replicache/src/persist/clients.js +289 -0
  183. package/out/packages/replicache/src/persist/clients.js.map +1 -0
  184. package/out/packages/replicache/src/persist/collect-idb-databases.js.map +1 -0
  185. package/out/packages/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  186. package/out/packages/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  187. package/out/packages/replicache/src/persist/heartbeat.js.map +1 -0
  188. package/out/packages/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  189. package/out/packages/replicache/src/persist/idb-databases-store.js.map +1 -0
  190. package/out/packages/replicache/src/persist/make-client-id.js.map +1 -0
  191. package/out/packages/replicache/src/persist/persist.js +124 -0
  192. package/out/packages/replicache/src/persist/persist.js.map +1 -0
  193. package/out/packages/replicache/src/persist/refresh.js.map +1 -0
  194. package/out/packages/replicache/src/process-scheduler.js.map +1 -0
  195. package/out/packages/replicache/src/pusher.js.map +1 -0
  196. package/out/packages/replicache/src/replicache-impl.js.map +1 -0
  197. package/out/packages/replicache/src/report-error.js.map +1 -0
  198. package/out/packages/replicache/src/request-idle.js.map +1 -0
  199. package/out/packages/replicache/src/scan-iterator.js.map +1 -0
  200. package/out/packages/replicache/src/scan-options.js.map +1 -0
  201. package/out/packages/replicache/src/set-interval-with-signal.js.map +1 -0
  202. package/out/packages/replicache/src/subscriptions.js.map +1 -0
  203. package/out/packages/replicache/src/sync/diff.js.map +1 -0
  204. package/out/packages/replicache/src/sync/ids.js.map +1 -0
  205. package/out/packages/replicache/src/sync/patch.js.map +1 -0
  206. package/out/packages/replicache/src/sync/pull-error.js.map +1 -0
  207. package/out/packages/replicache/src/sync/pull.js +169 -0
  208. package/out/packages/replicache/src/sync/pull.js.map +1 -0
  209. package/out/packages/replicache/src/sync/push.js.map +1 -0
  210. package/out/packages/replicache/src/sync/request-id.js.map +1 -0
  211. package/out/packages/replicache/src/sync/sync-head-name.js.map +1 -0
  212. package/out/packages/replicache/src/to-error.js.map +1 -0
  213. package/out/packages/replicache/src/transaction-closed-error.js.map +1 -0
  214. package/out/packages/replicache/src/transactions.js.map +1 -0
  215. package/out/packages/replicache/src/version.js.map +1 -0
  216. package/out/packages/replicache/src/with-transactions.js.map +1 -0
  217. package/out/packages/shared/src/abort-error.js.map +1 -0
  218. package/out/packages/shared/src/arrays.js.map +1 -0
  219. package/out/packages/shared/src/asserts.js.map +1 -0
  220. package/out/packages/shared/src/bigint-json.js.map +1 -0
  221. package/out/packages/shared/src/binary-search.js.map +1 -0
  222. package/out/packages/shared/src/broadcast-channel.js.map +1 -0
  223. package/out/packages/shared/src/browser-env.js.map +1 -0
  224. package/out/packages/shared/src/btree-set.js.map +1 -0
  225. package/out/packages/shared/src/cache.js.map +1 -0
  226. package/out/packages/shared/src/centroid.js.map +1 -0
  227. package/out/packages/shared/src/config.js.map +1 -0
  228. package/out/packages/shared/src/custom-key-map.js.map +1 -0
  229. package/out/packages/shared/src/custom-key-set.js.map +1 -0
  230. package/out/packages/shared/src/deep-clone.js.map +1 -0
  231. package/out/packages/shared/src/deep-merge.js.map +1 -0
  232. package/out/packages/shared/src/document-visible.js.map +1 -0
  233. package/out/packages/shared/src/dotenv.js.map +1 -0
  234. package/out/packages/shared/src/error.js.map +1 -0
  235. package/out/packages/shared/src/has-own.js.map +1 -0
  236. package/out/packages/shared/src/hash.js.map +1 -0
  237. package/out/packages/shared/src/iterables.js.map +1 -0
  238. package/out/packages/shared/src/json-schema.js.map +1 -0
  239. package/out/packages/shared/src/json.js.map +1 -0
  240. package/out/packages/shared/src/logging-test-utils.js.map +1 -0
  241. package/out/packages/shared/src/logging.js.map +1 -0
  242. package/out/packages/shared/src/map.js +39 -0
  243. package/out/packages/shared/src/map.js.map +1 -0
  244. package/out/packages/shared/src/must.js.map +1 -0
  245. package/out/packages/shared/src/navigator.js.map +1 -0
  246. package/out/packages/shared/src/object-traversal.js.map +1 -0
  247. package/out/packages/shared/src/objects.js.map +1 -0
  248. package/out/packages/shared/src/options.js.map +1 -0
  249. package/out/packages/shared/src/parse-big-int.js.map +1 -0
  250. package/out/packages/shared/src/promise-race.js.map +1 -0
  251. package/out/packages/shared/src/queue.js +120 -0
  252. package/out/packages/shared/src/queue.js.map +1 -0
  253. package/out/packages/shared/src/rand.js.map +1 -0
  254. package/out/packages/shared/src/random-uint64.js.map +1 -0
  255. package/out/packages/shared/src/random-values.js.map +1 -0
  256. package/out/packages/shared/src/record-proxy.js.map +1 -0
  257. package/out/packages/shared/src/resolved-promises.js.map +1 -0
  258. package/out/packages/shared/src/ring-buffer.js +109 -0
  259. package/out/packages/shared/src/ring-buffer.js.map +1 -0
  260. package/out/packages/shared/src/sentinels.js.map +1 -0
  261. package/out/packages/shared/src/set-utils.js.map +1 -0
  262. package/out/packages/shared/src/size-of-value.js.map +1 -0
  263. package/out/packages/shared/src/sleep.js.map +1 -0
  264. package/out/packages/shared/src/sorted-entries.js.map +1 -0
  265. package/out/packages/shared/src/string-compare.js.map +1 -0
  266. package/out/packages/shared/src/subscribable.js.map +1 -0
  267. package/out/packages/shared/src/tdigest-schema.js.map +1 -0
  268. package/out/packages/shared/src/tdigest.js.map +1 -0
  269. package/out/packages/shared/src/valita.js +172 -0
  270. package/out/packages/shared/src/valita.js.map +1 -0
  271. package/out/packages/z2s/src/compiler.js.map +1 -0
  272. package/out/packages/z2s/src/sql.js.map +1 -0
  273. package/out/packages/zero/package.js +205 -0
  274. package/out/packages/zero/package.js.map +1 -0
  275. package/out/packages/zero-cache/src/auth/auth.js.map +1 -0
  276. package/out/packages/zero-cache/src/auth/jwt.js.map +1 -0
  277. package/out/packages/zero-cache/src/auth/load-permissions.js.map +1 -0
  278. package/out/packages/zero-cache/src/auth/read-authorizer.js.map +1 -0
  279. package/out/packages/zero-cache/src/auth/write-authorizer.js.map +1 -0
  280. package/out/packages/zero-cache/src/config/network.js.map +1 -0
  281. package/out/packages/zero-cache/src/config/normalize.js.map +1 -0
  282. package/out/packages/zero-cache/src/config/server-context.js.map +1 -0
  283. package/out/packages/zero-cache/src/config/zero-config.js +921 -0
  284. package/out/packages/zero-cache/src/config/zero-config.js.map +1 -0
  285. package/out/packages/zero-cache/src/custom/fetch.js.map +1 -0
  286. package/out/packages/zero-cache/src/custom-queries/transform-query.js.map +1 -0
  287. package/out/packages/zero-cache/src/db/create.js.map +1 -0
  288. package/out/packages/zero-cache/src/db/delete-lite-db.js.map +1 -0
  289. package/out/packages/zero-cache/src/db/lite-tables.js.map +1 -0
  290. package/out/packages/zero-cache/src/db/migration-lite.js +166 -0
  291. package/out/packages/zero-cache/src/db/migration-lite.js.map +1 -0
  292. package/out/packages/zero-cache/src/db/migration.js +139 -0
  293. package/out/packages/zero-cache/src/db/migration.js.map +1 -0
  294. package/out/packages/zero-cache/src/db/mode-enum.js.map +1 -0
  295. package/out/packages/zero-cache/src/db/pg-copy-binary.js.map +1 -0
  296. package/out/packages/zero-cache/src/db/pg-copy.js.map +1 -0
  297. package/out/packages/zero-cache/src/db/pg-to-lite.js.map +1 -0
  298. package/out/packages/zero-cache/src/db/pg-type-parser.js.map +1 -0
  299. package/out/packages/zero-cache/src/db/run-transaction.js.map +1 -0
  300. package/out/packages/zero-cache/src/db/specs.js.map +1 -0
  301. package/out/packages/zero-cache/src/db/statements.js.map +1 -0
  302. package/out/packages/zero-cache/src/db/transaction-pool.js.map +1 -0
  303. package/out/packages/zero-cache/src/db/warmup.js.map +1 -0
  304. package/out/packages/zero-cache/src/observability/events.js.map +1 -0
  305. package/out/packages/zero-cache/src/observability/metrics.js.map +1 -0
  306. package/out/packages/zero-cache/src/scripts/decommission.js.map +1 -0
  307. package/out/packages/zero-cache/src/scripts/deploy-permissions.js.map +1 -0
  308. package/out/packages/zero-cache/src/scripts/permissions.js.map +1 -0
  309. package/out/packages/zero-cache/src/server/anonymous-otel-start.js +306 -0
  310. package/out/packages/zero-cache/src/server/anonymous-otel-start.js.map +1 -0
  311. package/out/packages/zero-cache/src/server/inspector-delegate.js.map +1 -0
  312. package/out/packages/zero-cache/src/server/logging.js.map +1 -0
  313. package/out/packages/zero-cache/src/server/otel-diag-logger.js.map +1 -0
  314. package/out/packages/zero-cache/src/server/otel-log-sink.js.map +1 -0
  315. package/out/packages/zero-cache/src/server/otel-start.js +53 -0
  316. package/out/packages/zero-cache/src/server/otel-start.js.map +1 -0
  317. package/out/packages/zero-cache/src/server/priority-op.js.map +1 -0
  318. package/out/packages/zero-cache/src/server/runner/main.js +11 -0
  319. package/out/packages/zero-cache/src/server/runner/main.js.map +1 -0
  320. package/out/packages/zero-cache/src/server/runner/run-worker.js.map +1 -0
  321. package/out/packages/zero-cache/src/server/runner/runtime.js.map +1 -0
  322. package/out/packages/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -0
  323. package/out/packages/zero-cache/src/server/worker-dispatcher.js.map +1 -0
  324. package/out/packages/zero-cache/src/server/worker-urls.js.map +1 -0
  325. package/out/packages/zero-cache/src/services/analyze.js +72 -0
  326. package/out/packages/zero-cache/src/services/analyze.js.map +1 -0
  327. package/out/packages/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -0
  328. package/out/packages/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -0
  329. package/out/packages/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -0
  330. package/out/packages/zero-cache/src/services/change-source/custom/change-source.js +176 -0
  331. package/out/packages/zero-cache/src/services/change-source/custom/change-source.js.map +1 -0
  332. package/out/packages/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -0
  333. package/out/packages/zero-cache/src/services/change-source/pg/backfill-stream.js +197 -0
  334. package/out/packages/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -0
  335. package/out/packages/zero-cache/src/services/change-source/pg/change-source.js +929 -0
  336. package/out/packages/zero-cache/src/services/change-source/pg/change-source.js.map +1 -0
  337. package/out/packages/zero-cache/src/services/change-source/pg/decommission.js.map +1 -0
  338. package/out/packages/zero-cache/src/services/change-source/pg/initial-sync.js +553 -0
  339. package/out/packages/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -0
  340. package/out/packages/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -0
  341. package/out/packages/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -0
  342. package/out/packages/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -0
  343. package/out/packages/zero-cache/src/services/change-source/pg/lsn.js.map +1 -0
  344. package/out/packages/zero-cache/src/services/change-source/pg/replication-slots.js +162 -0
  345. package/out/packages/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -0
  346. package/out/packages/zero-cache/src/services/change-source/pg/schema/ddl.js +334 -0
  347. package/out/packages/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -0
  348. package/out/packages/zero-cache/src/services/change-source/pg/schema/init.js +155 -0
  349. package/out/packages/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -0
  350. package/out/packages/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -0
  351. package/out/packages/zero-cache/src/services/change-source/pg/schema/shard.js +330 -0
  352. package/out/packages/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -0
  353. package/out/packages/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -0
  354. package/out/packages/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -0
  355. package/out/packages/zero-cache/src/services/change-source/protocol/current/data.js +194 -0
  356. package/out/packages/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -0
  357. package/out/packages/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -0
  358. package/out/packages/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -0
  359. package/out/packages/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -0
  360. package/out/packages/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -0
  361. package/out/packages/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -0
  362. package/out/packages/zero-cache/src/services/change-source/protocol/current.js +56 -0
  363. package/out/packages/zero-cache/src/services/change-source/protocol/current.js.map +1 -0
  364. package/out/packages/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -0
  365. package/out/packages/zero-cache/src/services/change-streamer/broadcast.js.map +1 -0
  366. package/out/packages/zero-cache/src/services/change-streamer/change-streamer-http.js +158 -0
  367. package/out/packages/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -0
  368. package/out/packages/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -0
  369. package/out/packages/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -0
  370. package/out/packages/zero-cache/src/services/change-streamer/forwarder.js.map +1 -0
  371. package/out/packages/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  372. package/out/packages/zero-cache/src/services/change-streamer/schema/init.js +70 -0
  373. package/out/packages/zero-cache/src/services/change-streamer/schema/init.js.map +1 -0
  374. package/out/packages/zero-cache/src/services/change-streamer/schema/tables.js +191 -0
  375. package/out/packages/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -0
  376. package/out/packages/zero-cache/src/services/change-streamer/snapshot.js +42 -0
  377. package/out/packages/zero-cache/src/services/change-streamer/snapshot.js.map +1 -0
  378. package/out/packages/zero-cache/src/services/change-streamer/storer.js.map +1 -0
  379. package/out/packages/zero-cache/src/services/change-streamer/subscriber.js.map +1 -0
  380. package/out/packages/zero-cache/src/services/heapz.js.map +1 -0
  381. package/out/packages/zero-cache/src/services/http-service.js.map +1 -0
  382. package/out/packages/zero-cache/src/services/life-cycle.js +200 -0
  383. package/out/packages/zero-cache/src/services/life-cycle.js.map +1 -0
  384. package/out/packages/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -0
  385. package/out/packages/zero-cache/src/services/litestream/commands.js.map +1 -0
  386. package/out/packages/zero-cache/src/services/mutagen/error.js.map +1 -0
  387. package/out/packages/zero-cache/src/services/mutagen/mutagen.js.map +1 -0
  388. package/out/packages/zero-cache/src/services/mutagen/pusher.js.map +1 -0
  389. package/out/packages/zero-cache/src/services/replicator/change-processor.js.map +1 -0
  390. package/out/packages/zero-cache/src/services/replicator/incremental-sync.js.map +1 -0
  391. package/out/packages/zero-cache/src/services/replicator/notifier.js.map +1 -0
  392. package/out/packages/zero-cache/src/services/replicator/replication-status.js.map +1 -0
  393. package/out/packages/zero-cache/src/services/replicator/replicator.js.map +1 -0
  394. package/out/packages/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -0
  395. package/out/packages/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -0
  396. package/out/packages/zero-cache/src/services/replicator/schema/change-log.js.map +1 -0
  397. package/out/packages/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -0
  398. package/out/packages/zero-cache/src/services/replicator/schema/constants.js.map +1 -0
  399. package/out/packages/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -0
  400. package/out/packages/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -0
  401. package/out/packages/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
  402. package/out/packages/zero-cache/src/services/replicator/write-worker.js.map +1 -0
  403. package/out/packages/zero-cache/src/services/run-ast.js +88 -0
  404. package/out/packages/zero-cache/src/services/run-ast.js.map +1 -0
  405. package/out/packages/zero-cache/src/services/runner.js.map +1 -0
  406. package/out/packages/zero-cache/src/services/running-state.js +139 -0
  407. package/out/packages/zero-cache/src/services/running-state.js.map +1 -0
  408. package/out/packages/zero-cache/src/services/shadow-sync/shadow-sync-service.js +57 -0
  409. package/out/packages/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +1 -0
  410. package/out/packages/zero-cache/src/services/statz.js.map +1 -0
  411. package/out/packages/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -0
  412. package/out/packages/zero-cache/src/services/view-syncer/client-handler.js +270 -0
  413. package/out/packages/zero-cache/src/services/view-syncer/client-handler.js.map +1 -0
  414. package/out/packages/zero-cache/src/services/view-syncer/client-schema.js.map +1 -0
  415. package/out/packages/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -0
  416. package/out/packages/zero-cache/src/services/view-syncer/cvr-purger.js +110 -0
  417. package/out/packages/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -0
  418. package/out/packages/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -0
  419. package/out/packages/zero-cache/src/services/view-syncer/cvr.js.map +1 -0
  420. package/out/packages/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -0
  421. package/out/packages/zero-cache/src/services/view-syncer/inspect-handler.js +102 -0
  422. package/out/packages/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -0
  423. package/out/packages/zero-cache/src/services/view-syncer/pipeline-driver.js +628 -0
  424. package/out/packages/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -0
  425. package/out/packages/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -0
  426. package/out/packages/zero-cache/src/services/view-syncer/row-set-signature.js.map +1 -0
  427. package/out/packages/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -0
  428. package/out/packages/zero-cache/src/services/view-syncer/schema/init.js +142 -0
  429. package/out/packages/zero-cache/src/services/view-syncer/schema/init.js.map +1 -0
  430. package/out/packages/zero-cache/src/services/view-syncer/schema/types.js +278 -0
  431. package/out/packages/zero-cache/src/services/view-syncer/schema/types.js.map +1 -0
  432. package/out/packages/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -0
  433. package/out/packages/zero-cache/src/services/view-syncer/tracer.js.map +1 -0
  434. package/out/packages/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -0
  435. package/out/packages/zero-cache/src/services/view-syncer/view-syncer.js +1245 -0
  436. package/out/packages/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -0
  437. package/out/packages/zero-cache/src/types/configuration-error.js +11 -0
  438. package/out/packages/zero-cache/src/types/configuration-error.js.map +1 -0
  439. package/out/packages/zero-cache/src/types/error-with-level.js.map +1 -0
  440. package/out/packages/zero-cache/src/types/http.js.map +1 -0
  441. package/out/packages/zero-cache/src/types/lexi-version.js.map +1 -0
  442. package/out/packages/zero-cache/src/types/lite.js.map +1 -0
  443. package/out/packages/zero-cache/src/types/names.js.map +1 -0
  444. package/out/packages/zero-cache/src/types/pg-data-type.js.map +1 -0
  445. package/out/packages/zero-cache/src/types/pg-types.js.map +1 -0
  446. package/out/packages/zero-cache/src/types/pg-versions.js.map +1 -0
  447. package/out/packages/zero-cache/src/types/pg.js +222 -0
  448. package/out/packages/zero-cache/src/types/pg.js.map +1 -0
  449. package/out/packages/zero-cache/src/types/processes.js.map +1 -0
  450. package/out/packages/zero-cache/src/types/profiler.js.map +1 -0
  451. package/out/packages/zero-cache/src/types/row-key.js.map +1 -0
  452. package/out/packages/zero-cache/src/types/shards.js.map +1 -0
  453. package/out/packages/zero-cache/src/types/sql.js.map +1 -0
  454. package/out/packages/zero-cache/src/types/state-version.js.map +1 -0
  455. package/out/packages/zero-cache/src/types/streams.js.map +1 -0
  456. package/out/packages/zero-cache/src/types/strings.js.map +1 -0
  457. package/out/packages/zero-cache/src/types/subscription.js.map +1 -0
  458. package/out/packages/zero-cache/src/types/timeout.js.map +1 -0
  459. package/out/packages/zero-cache/src/types/url-params.js.map +1 -0
  460. package/out/packages/zero-cache/src/types/websocket-handoff.js.map +1 -0
  461. package/out/packages/zero-cache/src/types/ws.js.map +1 -0
  462. package/out/packages/zero-cache/src/workers/connect-params.js.map +1 -0
  463. package/out/packages/zero-cache/src/workers/connection.js +229 -0
  464. package/out/packages/zero-cache/src/workers/connection.js.map +1 -0
  465. package/out/packages/zero-cache/src/workers/mutator.js.map +1 -0
  466. package/out/packages/zero-cache/src/workers/replicator.js.map +1 -0
  467. package/out/packages/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -0
  468. package/out/packages/zero-cache/src/workers/syncer.js.map +1 -0
  469. package/out/packages/zero-client/src/client/active-clients-manager.js.map +1 -0
  470. package/out/packages/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  471. package/out/packages/zero-client/src/client/connection-manager.js +296 -0
  472. package/out/packages/zero-client/src/client/connection-manager.js.map +1 -0
  473. package/out/packages/zero-client/src/client/connection-status-enum.js +20 -0
  474. package/out/packages/zero-client/src/client/connection-status-enum.js.map +1 -0
  475. package/out/packages/zero-client/src/client/connection.js.map +1 -0
  476. package/out/packages/zero-client/src/client/context.js.map +1 -0
  477. package/out/packages/zero-client/src/client/crud-impl.js +61 -0
  478. package/out/packages/zero-client/src/client/crud-impl.js.map +1 -0
  479. package/out/packages/zero-client/src/client/crud.js.map +1 -0
  480. package/out/packages/zero-client/src/client/custom.js +64 -0
  481. package/out/packages/zero-client/src/client/custom.js.map +1 -0
  482. package/out/packages/zero-client/src/client/delete-clients-manager.js.map +1 -0
  483. package/out/packages/zero-client/src/client/enable-analytics.js.map +1 -0
  484. package/out/packages/zero-client/src/client/error.js.map +1 -0
  485. package/out/packages/zero-client/src/client/http-string.js.map +1 -0
  486. package/out/packages/zero-client/src/client/inspector/client-group.js.map +1 -0
  487. package/out/packages/zero-client/src/client/inspector/client.js.map +1 -0
  488. package/out/packages/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  489. package/out/packages/zero-client/src/client/inspector/inspector.js.map +1 -0
  490. package/out/packages/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  491. package/out/packages/zero-client/src/client/inspector/query.js.map +1 -0
  492. package/out/packages/zero-client/src/client/ivm-branch.js.map +1 -0
  493. package/out/packages/zero-client/src/client/keys.js.map +1 -0
  494. package/out/packages/zero-client/src/client/log-options.js.map +1 -0
  495. package/out/packages/zero-client/src/client/make-mutate-property.js.map +1 -0
  496. package/out/packages/zero-client/src/client/make-replicache-mutators.js.map +1 -0
  497. package/out/packages/zero-client/src/client/metric-name-enum.js.map +1 -0
  498. package/out/packages/zero-client/src/client/metrics.js.map +1 -0
  499. package/out/packages/zero-client/src/client/mutation-tracker.js.map +1 -0
  500. package/out/packages/zero-client/src/client/mutator-proxy.js.map +1 -0
  501. package/out/packages/zero-client/src/client/options.js.map +1 -0
  502. package/out/packages/zero-client/src/client/query-manager.js.map +1 -0
  503. package/out/packages/zero-client/src/client/reload-error-handler.js.map +1 -0
  504. package/out/packages/zero-client/src/client/server-option.js.map +1 -0
  505. package/out/packages/zero-client/src/client/update-needed-reason-type-enum.js +27 -0
  506. package/out/packages/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  507. package/out/packages/zero-client/src/client/version.js +9 -0
  508. package/out/packages/zero-client/src/client/version.js.map +1 -0
  509. package/out/packages/zero-client/src/client/zero-poke-handler.js.map +1 -0
  510. package/out/packages/zero-client/src/client/zero-rep.js.map +1 -0
  511. package/out/packages/zero-client/src/client/zero.js +1469 -0
  512. package/out/packages/zero-client/src/client/zero.js.map +1 -0
  513. package/out/packages/zero-client/src/util/nanoid.js.map +1 -0
  514. package/out/packages/zero-protocol/src/analyze-query-result.js +123 -0
  515. package/out/packages/zero-protocol/src/analyze-query-result.js.map +1 -0
  516. package/out/packages/zero-protocol/src/application-error.js.map +1 -0
  517. package/out/packages/zero-protocol/src/ast.js.map +1 -0
  518. package/out/packages/zero-protocol/src/change-desired-queries.js +13 -0
  519. package/out/packages/zero-protocol/src/change-desired-queries.js.map +1 -0
  520. package/out/packages/zero-protocol/src/client-schema.js.map +1 -0
  521. package/out/packages/zero-protocol/src/close-connection.js.map +1 -0
  522. package/out/packages/zero-protocol/src/connect.js +54 -0
  523. package/out/packages/zero-protocol/src/connect.js.map +1 -0
  524. package/out/packages/zero-protocol/src/custom-queries.js.map +1 -0
  525. package/out/packages/zero-protocol/src/data.js.map +1 -0
  526. package/out/packages/zero-protocol/src/delete-clients.js.map +1 -0
  527. package/out/packages/zero-protocol/src/down.js.map +1 -0
  528. package/out/packages/zero-protocol/src/error-kind-enum.js.map +1 -0
  529. package/out/packages/zero-protocol/src/error-origin-enum.js.map +1 -0
  530. package/out/packages/zero-protocol/src/error-reason-enum.js.map +1 -0
  531. package/out/packages/zero-protocol/src/error.js +91 -0
  532. package/out/packages/zero-protocol/src/error.js.map +1 -0
  533. package/out/packages/zero-protocol/src/inspect-down.js.map +1 -0
  534. package/out/packages/zero-protocol/src/inspect-up.js +35 -0
  535. package/out/packages/zero-protocol/src/inspect-up.js.map +1 -0
  536. package/out/packages/zero-protocol/src/mutate-server.js.map +1 -0
  537. package/out/packages/zero-protocol/src/mutation-id.js.map +1 -0
  538. package/out/packages/zero-protocol/src/mutation-type-enum.js.map +1 -0
  539. package/out/packages/zero-protocol/src/mutation.js.map +1 -0
  540. package/out/packages/zero-protocol/src/mutations-patch.js.map +1 -0
  541. package/out/packages/zero-protocol/src/ping.js.map +1 -0
  542. package/out/packages/zero-protocol/src/poke.js +63 -0
  543. package/out/packages/zero-protocol/src/poke.js.map +1 -0
  544. package/out/packages/zero-protocol/src/pong.js.map +1 -0
  545. package/out/packages/zero-protocol/src/primary-key.js.map +1 -0
  546. package/out/packages/zero-protocol/src/protocol-version.js.map +1 -0
  547. package/out/packages/zero-protocol/src/pull.js.map +1 -0
  548. package/out/packages/zero-protocol/src/push.js +76 -0
  549. package/out/packages/zero-protocol/src/push.js.map +1 -0
  550. package/out/packages/zero-protocol/src/queries-patch.js.map +1 -0
  551. package/out/packages/zero-protocol/src/query-hash.js.map +1 -0
  552. package/out/packages/zero-protocol/src/query-server.js.map +1 -0
  553. package/out/packages/zero-protocol/src/row-patch.js.map +1 -0
  554. package/out/packages/zero-protocol/src/up.js.map +1 -0
  555. package/out/packages/zero-protocol/src/update-auth.js.map +1 -0
  556. package/out/packages/zero-protocol/src/version.js.map +1 -0
  557. package/out/packages/zero-react/src/use-connection-state.js +19 -0
  558. package/out/packages/zero-react/src/use-connection-state.js.map +1 -0
  559. package/out/packages/zero-react/src/use-query.js +301 -0
  560. package/out/packages/zero-react/src/use-query.js.map +1 -0
  561. package/out/packages/zero-react/src/use-zero-online.js +22 -0
  562. package/out/packages/zero-react/src/use-zero-online.js.map +1 -0
  563. package/out/packages/zero-react/src/zero-provider.js +90 -0
  564. package/out/packages/zero-react/src/zero-provider.js.map +1 -0
  565. package/out/packages/zero-schema/src/builder/relationship-builder.js.map +1 -0
  566. package/out/packages/zero-schema/src/builder/schema-builder.js.map +1 -0
  567. package/out/packages/zero-schema/src/builder/table-builder.js.map +1 -0
  568. package/out/packages/zero-schema/src/compiled-permissions.js.map +1 -0
  569. package/out/packages/zero-schema/src/name-mapper.js.map +1 -0
  570. package/out/packages/zero-schema/src/permissions.js.map +1 -0
  571. package/out/packages/zero-schema/src/schema-config.js.map +1 -0
  572. package/out/packages/zero-server/src/adapters/drizzle.js.map +1 -0
  573. package/out/packages/zero-server/src/adapters/kysely.js.map +1 -0
  574. package/out/packages/zero-server/src/adapters/pg.js +83 -0
  575. package/out/packages/zero-server/src/adapters/pg.js.map +1 -0
  576. package/out/packages/zero-server/src/adapters/postgresjs.js.map +1 -0
  577. package/out/packages/zero-server/src/adapters/prisma.js.map +1 -0
  578. package/out/packages/zero-server/src/custom.js +215 -0
  579. package/out/packages/zero-server/src/custom.js.map +1 -0
  580. package/out/packages/zero-server/src/logging.js.map +1 -0
  581. package/out/packages/zero-server/src/pg-query-executor.js.map +1 -0
  582. package/out/packages/zero-server/src/process-mutations.js.map +1 -0
  583. package/out/packages/zero-server/src/push-processor.js.map +1 -0
  584. package/out/packages/zero-server/src/queries/process-queries.js.map +1 -0
  585. package/out/packages/zero-server/src/schema.js.map +1 -0
  586. package/out/packages/zero-server/src/zql-database.js.map +1 -0
  587. package/out/packages/zero-solid/src/solid-view.js +145 -0
  588. package/out/packages/zero-solid/src/solid-view.js.map +1 -0
  589. package/out/packages/zero-solid/src/use-connection-state.js +21 -0
  590. package/out/packages/zero-solid/src/use-connection-state.js.map +1 -0
  591. package/out/packages/zero-solid/src/use-query.js +64 -0
  592. package/out/packages/zero-solid/src/use-query.js.map +1 -0
  593. package/out/packages/zero-solid/src/use-zero-online.js +21 -0
  594. package/out/packages/zero-solid/src/use-zero-online.js.map +1 -0
  595. package/out/packages/zero-solid/src/use-zero.js +93 -0
  596. package/out/packages/zero-solid/src/use-zero.js.map +1 -0
  597. package/out/packages/zero-types/src/format.js.map +1 -0
  598. package/out/packages/zero-types/src/name-mapper.js.map +1 -0
  599. package/out/packages/zql/src/builder/builder.js +381 -0
  600. package/out/packages/zql/src/builder/builder.js.map +1 -0
  601. package/out/packages/zql/src/builder/debug-delegate.js +81 -0
  602. package/out/packages/zql/src/builder/debug-delegate.js.map +1 -0
  603. package/out/packages/zql/src/builder/filter.js.map +1 -0
  604. package/out/packages/zql/src/builder/like.js.map +1 -0
  605. package/out/packages/zql/src/error.js.map +1 -0
  606. package/out/packages/zql/src/ivm/array-view.js.map +1 -0
  607. package/out/packages/zql/src/ivm/cap.js.map +1 -0
  608. package/out/packages/zql/src/ivm/change.js.map +1 -0
  609. package/out/packages/zql/src/ivm/constraint.js +82 -0
  610. package/out/packages/zql/src/ivm/constraint.js.map +1 -0
  611. package/out/packages/zql/src/ivm/data.js.map +1 -0
  612. package/out/packages/zql/src/ivm/exists.js.map +1 -0
  613. package/out/packages/zql/src/ivm/fan-in.js.map +1 -0
  614. package/out/packages/zql/src/ivm/fan-out.js.map +1 -0
  615. package/out/packages/zql/src/ivm/filter-operators.js.map +1 -0
  616. package/out/packages/zql/src/ivm/filter-push.js.map +1 -0
  617. package/out/packages/zql/src/ivm/filter.js.map +1 -0
  618. package/out/packages/zql/src/ivm/flipped-join.js +307 -0
  619. package/out/packages/zql/src/ivm/flipped-join.js.map +1 -0
  620. package/out/packages/zql/src/ivm/join-utils.js.map +1 -0
  621. package/out/packages/zql/src/ivm/join.js.map +1 -0
  622. package/out/packages/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -0
  623. package/out/packages/zql/src/ivm/memory-source.js.map +1 -0
  624. package/out/packages/zql/src/ivm/memory-storage.js.map +1 -0
  625. package/out/packages/zql/src/ivm/operator.js.map +1 -0
  626. package/out/packages/zql/src/ivm/push-accumulated.js.map +1 -0
  627. package/out/packages/zql/src/ivm/skip-yields.js.map +1 -0
  628. package/out/packages/zql/src/ivm/skip.js.map +1 -0
  629. package/out/packages/zql/src/ivm/source.js.map +1 -0
  630. package/out/packages/zql/src/ivm/stream.js.map +1 -0
  631. package/out/packages/zql/src/ivm/take.js.map +1 -0
  632. package/out/packages/zql/src/ivm/union-fan-in.js +165 -0
  633. package/out/packages/zql/src/ivm/union-fan-in.js.map +1 -0
  634. package/out/packages/zql/src/ivm/union-fan-out.js.map +1 -0
  635. package/out/packages/zql/src/ivm/view-apply-change.js.map +1 -0
  636. package/out/packages/zql/src/mutate/crud.js.map +1 -0
  637. package/out/packages/zql/src/mutate/custom.js.map +1 -0
  638. package/out/packages/zql/src/mutate/mutator-registry.js.map +1 -0
  639. package/out/packages/zql/src/mutate/mutator.js.map +1 -0
  640. package/out/packages/zql/src/planner/planner-builder.js.map +1 -0
  641. package/out/packages/zql/src/planner/planner-connection.js.map +1 -0
  642. package/out/packages/zql/src/planner/planner-constraint.js.map +1 -0
  643. package/out/packages/zql/src/planner/planner-debug.js.map +1 -0
  644. package/out/packages/zql/src/planner/planner-fan-in.js.map +1 -0
  645. package/out/packages/zql/src/planner/planner-fan-out.js.map +1 -0
  646. package/out/packages/zql/src/planner/planner-graph.js.map +1 -0
  647. package/out/packages/zql/src/planner/planner-join.js +262 -0
  648. package/out/packages/zql/src/planner/planner-join.js.map +1 -0
  649. package/out/packages/zql/src/planner/planner-node.js.map +1 -0
  650. package/out/packages/zql/src/planner/planner-source.js.map +1 -0
  651. package/out/packages/zql/src/planner/planner-terminus.js.map +1 -0
  652. package/out/packages/zql/src/query/complete-ordering.js.map +1 -0
  653. package/out/packages/zql/src/query/create-builder.js.map +1 -0
  654. package/out/packages/zql/src/query/error.js.map +1 -0
  655. package/out/packages/zql/src/query/escape-like.js.map +1 -0
  656. package/out/packages/zql/src/query/expression.js.map +1 -0
  657. package/out/packages/zql/src/query/measure-push-operator.js.map +1 -0
  658. package/out/packages/zql/src/query/metrics-delegate.js.map +1 -0
  659. package/out/packages/zql/src/query/named.js.map +1 -0
  660. package/out/packages/zql/src/query/query-delegate-base.js.map +1 -0
  661. package/out/packages/zql/src/query/query-impl.js +290 -0
  662. package/out/packages/zql/src/query/query-impl.js.map +1 -0
  663. package/out/packages/zql/src/query/query-internals.js.map +1 -0
  664. package/out/packages/zql/src/query/query-registry.js.map +1 -0
  665. package/out/packages/zql/src/query/runnable-query-impl.js.map +1 -0
  666. package/out/packages/zql/src/query/static-query.js.map +1 -0
  667. package/out/packages/zql/src/query/ttl.js.map +1 -0
  668. package/out/packages/zql/src/query/validate-input.js.map +1 -0
  669. package/out/packages/zqlite/src/database-storage.js.map +1 -0
  670. package/out/packages/zqlite/src/db.js.map +1 -0
  671. package/out/packages/zqlite/src/explain-queries.js.map +1 -0
  672. package/out/packages/zqlite/src/internal/sql-inline.js.map +1 -0
  673. package/out/packages/zqlite/src/internal/sql.js.map +1 -0
  674. package/out/packages/zqlite/src/internal/statement-cache.js.map +1 -0
  675. package/out/packages/zqlite/src/query-builder.js.map +1 -0
  676. package/out/packages/zqlite/src/query-delegate.js.map +1 -0
  677. package/out/packages/zqlite/src/resolve-scalar-subqueries.js.map +1 -0
  678. package/out/packages/zqlite/src/sqlite-cost-model.js.map +1 -0
  679. package/out/packages/zqlite/src/sqlite-stat-fanout.js.map +1 -0
  680. package/out/packages/zqlite/src/table-source.js +313 -0
  681. package/out/packages/zqlite/src/table-source.js.map +1 -0
  682. package/out/replicache/src/dag/store-impl.d.ts.map +1 -1
  683. package/out/replicache/src/kv/expo-sqlite/store.d.ts +1 -1
  684. package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
  685. package/out/replicache/src/kv/op-sqlite/store.d.ts.map +1 -1
  686. package/out/replicache/src/kv/sqlite-store.d.ts +6 -6
  687. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  688. package/out/replicache/src/kv/throw-if-closed.d.ts +1 -0
  689. package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
  690. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  691. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  692. package/out/shared/src/map.d.ts +6 -0
  693. package/out/shared/src/map.d.ts.map +1 -0
  694. package/out/shared/src/queue.d.ts.map +1 -1
  695. package/out/shared/src/ring-buffer.d.ts +32 -0
  696. package/out/shared/src/ring-buffer.d.ts.map +1 -0
  697. package/out/zero/src/adapters/drizzle.js +1 -1
  698. package/out/zero/src/adapters/kysely.js +1 -1
  699. package/out/zero/src/adapters/pg.js +1 -1
  700. package/out/zero/src/adapters/postgresjs.js +1 -1
  701. package/out/zero/src/adapters/prisma.js +1 -1
  702. package/out/zero/src/analyze-query.js +1 -1
  703. package/out/zero/src/analyze.js +1 -1
  704. package/out/zero/src/ast-to-zql.js +1 -1
  705. package/out/zero/src/bindings.js +11 -11
  706. package/out/zero/src/build-schema.js.map +1 -1
  707. package/out/zero/src/change-protocol/v0.js +2 -2
  708. package/out/zero/src/cli.js +1 -1
  709. package/out/zero/src/deploy-permissions.js +1 -1
  710. package/out/zero/src/expo-sqlite.js +2 -2
  711. package/out/zero/src/op-sqlite.js +2 -2
  712. package/out/zero/src/pg.js +9 -9
  713. package/out/zero/src/react-native.js +2 -2
  714. package/out/zero/src/react.js +5 -5
  715. package/out/zero/src/server.js +8 -8
  716. package/out/zero/src/solid.js +5 -5
  717. package/out/zero/src/sqlite.js +2 -2
  718. package/out/zero/src/transform-query.js +1 -1
  719. package/out/zero/src/zero-cache-dev.js +6 -6
  720. package/out/zero/src/zero-cache-dev.js.map +1 -1
  721. package/out/zero/src/zero-out.js +5 -5
  722. package/out/zero/src/zero-out.js.map +1 -1
  723. package/out/zero/src/zero.js +22 -22
  724. package/out/zero/src/zqlite.js +5 -5
  725. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  726. package/out/zero-cache/src/server/change-streamer.js +38 -32
  727. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  728. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  729. package/out/zero-cache/src/server/main.js +15 -13
  730. package/out/zero-cache/src/server/main.js.map +1 -1
  731. package/out/zero-cache/src/server/mutator.js +12 -10
  732. package/out/zero-cache/src/server/mutator.js.map +1 -1
  733. package/out/zero-cache/src/server/reaper.d.ts.map +1 -1
  734. package/out/zero-cache/src/server/reaper.js +18 -16
  735. package/out/zero-cache/src/server/reaper.js.map +1 -1
  736. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  737. package/out/zero-cache/src/server/replicator.js +20 -18
  738. package/out/zero-cache/src/server/replicator.js.map +1 -1
  739. package/out/zero-cache/src/server/runner/main.d.ts.map +1 -1
  740. package/out/zero-cache/src/server/shadow-syncer.js +16 -13
  741. package/out/zero-cache/src/server/shadow-syncer.js.map +1 -1
  742. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  743. package/out/zero-cache/src/server/syncer.js +36 -34
  744. package/out/zero-cache/src/server/syncer.js.map +1 -1
  745. package/out/zero-cache/src/server/write-worker.js +1 -1
  746. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  747. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  748. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +8 -2
  749. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  750. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +1 -1
  751. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +1 -1
  752. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
  753. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  754. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  755. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  756. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  757. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  758. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  759. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  760. package/out/zero-cache/src/types/configuration-error.d.ts +4 -0
  761. package/out/zero-cache/src/types/configuration-error.d.ts.map +1 -0
  762. package/out/zero-cache/src/types/pg.d.ts +2 -0
  763. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  764. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  765. package/out/zql/src/builder/builder.d.ts.map +1 -1
  766. package/out/zql/src/builder/debug-delegate.d.ts +5 -0
  767. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  768. package/out/zql/src/ivm/flipped-join.d.ts +4 -8
  769. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  770. package/out/zql/src/ivm/operator.d.ts +1 -1
  771. package/out/zql/src/ivm/schema.d.ts +0 -8
  772. package/out/zql/src/ivm/schema.d.ts.map +1 -1
  773. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  774. package/out/zql/src/mutate/mutator.d.ts +12 -3
  775. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  776. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  777. package/out/zql/src/query/query-registry.d.ts +10 -3
  778. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  779. package/out/zqlite/src/table-source.d.ts.map +1 -1
  780. package/package.json +23 -23
  781. package/out/_virtual/_@oxc-project_runtime@0.122.0/helpers/usingCtx.js +0 -57
  782. package/out/analyze-query/src/analyze-cli.js +0 -288
  783. package/out/analyze-query/src/analyze-cli.js.map +0 -1
  784. package/out/analyze-query/src/bin-analyze.js +0 -277
  785. package/out/analyze-query/src/bin-analyze.js.map +0 -1
  786. package/out/analyze-query/src/bin-transform.js.map +0 -1
  787. package/out/ast-to-zql/src/ast-to-zql.js.map +0 -1
  788. package/out/ast-to-zql/src/bin.js.map +0 -1
  789. package/out/ast-to-zql/src/format.js.map +0 -1
  790. package/out/datadog/src/datadog-log-sink.js.map +0 -1
  791. package/out/otel/src/enabled.js.map +0 -1
  792. package/out/otel/src/log-options.js.map +0 -1
  793. package/out/otel/src/maybe-time.js.map +0 -1
  794. package/out/otel/src/span.js.map +0 -1
  795. package/out/otel/src/version.js.map +0 -1
  796. package/out/replicache/src/async-iterable-to-array.js.map +0 -1
  797. package/out/replicache/src/bg-interval.js.map +0 -1
  798. package/out/replicache/src/btree/diff.js.map +0 -1
  799. package/out/replicache/src/btree/node.js.map +0 -1
  800. package/out/replicache/src/btree/read.js.map +0 -1
  801. package/out/replicache/src/btree/splice.js.map +0 -1
  802. package/out/replicache/src/btree/write.js +0 -188
  803. package/out/replicache/src/btree/write.js.map +0 -1
  804. package/out/replicache/src/call-default-fetch.js.map +0 -1
  805. package/out/replicache/src/connection-loop-delegates.js.map +0 -1
  806. package/out/replicache/src/connection-loop.js.map +0 -1
  807. package/out/replicache/src/cookies.js.map +0 -1
  808. package/out/replicache/src/dag/chunk.js.map +0 -1
  809. package/out/replicache/src/dag/gc.js.map +0 -1
  810. package/out/replicache/src/dag/key.js.map +0 -1
  811. package/out/replicache/src/dag/lazy-store.js.map +0 -1
  812. package/out/replicache/src/dag/store-impl.js +0 -152
  813. package/out/replicache/src/dag/store-impl.js.map +0 -1
  814. package/out/replicache/src/dag/store.js.map +0 -1
  815. package/out/replicache/src/dag/visitor.js.map +0 -1
  816. package/out/replicache/src/db/commit.js.map +0 -1
  817. package/out/replicache/src/db/index.js.map +0 -1
  818. package/out/replicache/src/db/read.js.map +0 -1
  819. package/out/replicache/src/db/rebase.js.map +0 -1
  820. package/out/replicache/src/db/write.js.map +0 -1
  821. package/out/replicache/src/deleted-clients.js.map +0 -1
  822. package/out/replicache/src/error-responses.js.map +0 -1
  823. package/out/replicache/src/frozen-json.js.map +0 -1
  824. package/out/replicache/src/get-default-puller.js.map +0 -1
  825. package/out/replicache/src/get-default-pusher.js.map +0 -1
  826. package/out/replicache/src/get-kv-store-provider.js.map +0 -1
  827. package/out/replicache/src/hash.js.map +0 -1
  828. package/out/replicache/src/http-request-info.js.map +0 -1
  829. package/out/replicache/src/index-defs.js.map +0 -1
  830. package/out/replicache/src/kv/expo-sqlite/store.js +0 -58
  831. package/out/replicache/src/kv/expo-sqlite/store.js.map +0 -1
  832. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +0 -1
  833. package/out/replicache/src/kv/idb-store.js.map +0 -1
  834. package/out/replicache/src/kv/mem-store.js.map +0 -1
  835. package/out/replicache/src/kv/op-sqlite/store.js +0 -63
  836. package/out/replicache/src/kv/op-sqlite/store.js.map +0 -1
  837. package/out/replicache/src/kv/op-sqlite/types.js.map +0 -1
  838. package/out/replicache/src/kv/read-impl.js.map +0 -1
  839. package/out/replicache/src/kv/sqlite-store.js +0 -216
  840. package/out/replicache/src/kv/sqlite-store.js.map +0 -1
  841. package/out/replicache/src/kv/throw-if-closed.js +0 -26
  842. package/out/replicache/src/kv/throw-if-closed.js.map +0 -1
  843. package/out/replicache/src/kv/write-impl-base.js.map +0 -1
  844. package/out/replicache/src/kv/write-impl.js.map +0 -1
  845. package/out/replicache/src/lazy.js.map +0 -1
  846. package/out/replicache/src/log-options.js.map +0 -1
  847. package/out/replicache/src/make-idb-name.js.map +0 -1
  848. package/out/replicache/src/new-client-channel.js.map +0 -1
  849. package/out/replicache/src/on-persist-channel.js.map +0 -1
  850. package/out/replicache/src/patch-operation.js.map +0 -1
  851. package/out/replicache/src/pending-mutations.js.map +0 -1
  852. package/out/replicache/src/persist/client-gc.js.map +0 -1
  853. package/out/replicache/src/persist/client-group-gc.js.map +0 -1
  854. package/out/replicache/src/persist/client-groups.js +0 -110
  855. package/out/replicache/src/persist/client-groups.js.map +0 -1
  856. package/out/replicache/src/persist/clients.js +0 -261
  857. package/out/replicache/src/persist/clients.js.map +0 -1
  858. package/out/replicache/src/persist/collect-idb-databases.js.map +0 -1
  859. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +0 -1
  860. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +0 -1
  861. package/out/replicache/src/persist/heartbeat.js.map +0 -1
  862. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +0 -1
  863. package/out/replicache/src/persist/idb-databases-store.js.map +0 -1
  864. package/out/replicache/src/persist/make-client-id.js.map +0 -1
  865. package/out/replicache/src/persist/persist.js +0 -122
  866. package/out/replicache/src/persist/persist.js.map +0 -1
  867. package/out/replicache/src/persist/refresh.js.map +0 -1
  868. package/out/replicache/src/process-scheduler.js.map +0 -1
  869. package/out/replicache/src/pusher.js.map +0 -1
  870. package/out/replicache/src/replicache-impl.js.map +0 -1
  871. package/out/replicache/src/report-error.js.map +0 -1
  872. package/out/replicache/src/request-idle.js.map +0 -1
  873. package/out/replicache/src/scan-iterator.js.map +0 -1
  874. package/out/replicache/src/scan-options.js.map +0 -1
  875. package/out/replicache/src/set-interval-with-signal.js.map +0 -1
  876. package/out/replicache/src/subscriptions.js.map +0 -1
  877. package/out/replicache/src/sync/diff.js.map +0 -1
  878. package/out/replicache/src/sync/ids.js.map +0 -1
  879. package/out/replicache/src/sync/patch.js.map +0 -1
  880. package/out/replicache/src/sync/pull-error.js.map +0 -1
  881. package/out/replicache/src/sync/pull.js +0 -166
  882. package/out/replicache/src/sync/pull.js.map +0 -1
  883. package/out/replicache/src/sync/push.js.map +0 -1
  884. package/out/replicache/src/sync/request-id.js.map +0 -1
  885. package/out/replicache/src/sync/sync-head-name.js.map +0 -1
  886. package/out/replicache/src/to-error.js.map +0 -1
  887. package/out/replicache/src/transaction-closed-error.js.map +0 -1
  888. package/out/replicache/src/transactions.js.map +0 -1
  889. package/out/replicache/src/version.js.map +0 -1
  890. package/out/replicache/src/with-transactions.js.map +0 -1
  891. package/out/shared/src/abort-error.js.map +0 -1
  892. package/out/shared/src/arrays.js.map +0 -1
  893. package/out/shared/src/asserts.js.map +0 -1
  894. package/out/shared/src/bigint-json.js.map +0 -1
  895. package/out/shared/src/binary-search.js.map +0 -1
  896. package/out/shared/src/broadcast-channel.js.map +0 -1
  897. package/out/shared/src/browser-env.js.map +0 -1
  898. package/out/shared/src/btree-set.js.map +0 -1
  899. package/out/shared/src/cache.js.map +0 -1
  900. package/out/shared/src/centroid.js.map +0 -1
  901. package/out/shared/src/config.js.map +0 -1
  902. package/out/shared/src/custom-key-map.js.map +0 -1
  903. package/out/shared/src/custom-key-set.js.map +0 -1
  904. package/out/shared/src/deep-clone.js.map +0 -1
  905. package/out/shared/src/deep-merge.js.map +0 -1
  906. package/out/shared/src/document-visible.js.map +0 -1
  907. package/out/shared/src/dotenv.js.map +0 -1
  908. package/out/shared/src/error.js.map +0 -1
  909. package/out/shared/src/has-own.js.map +0 -1
  910. package/out/shared/src/hash.js.map +0 -1
  911. package/out/shared/src/iterables.js.map +0 -1
  912. package/out/shared/src/json-schema.js.map +0 -1
  913. package/out/shared/src/json.js.map +0 -1
  914. package/out/shared/src/logging-test-utils.js.map +0 -1
  915. package/out/shared/src/logging.js.map +0 -1
  916. package/out/shared/src/must.js.map +0 -1
  917. package/out/shared/src/navigator.js.map +0 -1
  918. package/out/shared/src/object-traversal.js.map +0 -1
  919. package/out/shared/src/objects.js.map +0 -1
  920. package/out/shared/src/options.js.map +0 -1
  921. package/out/shared/src/parse-big-int.js.map +0 -1
  922. package/out/shared/src/promise-race.js.map +0 -1
  923. package/out/shared/src/queue.js +0 -126
  924. package/out/shared/src/queue.js.map +0 -1
  925. package/out/shared/src/rand.js.map +0 -1
  926. package/out/shared/src/random-uint64.js.map +0 -1
  927. package/out/shared/src/random-values.js.map +0 -1
  928. package/out/shared/src/record-proxy.js.map +0 -1
  929. package/out/shared/src/resolved-promises.js.map +0 -1
  930. package/out/shared/src/sentinels.js.map +0 -1
  931. package/out/shared/src/set-utils.js.map +0 -1
  932. package/out/shared/src/size-of-value.js.map +0 -1
  933. package/out/shared/src/sleep.js.map +0 -1
  934. package/out/shared/src/sorted-entries.js.map +0 -1
  935. package/out/shared/src/string-compare.js.map +0 -1
  936. package/out/shared/src/subscribable.js.map +0 -1
  937. package/out/shared/src/tdigest-schema.js.map +0 -1
  938. package/out/shared/src/tdigest.js.map +0 -1
  939. package/out/shared/src/valita.js +0 -172
  940. package/out/shared/src/valita.js.map +0 -1
  941. package/out/z2s/src/compiler.js.map +0 -1
  942. package/out/z2s/src/sql.js.map +0 -1
  943. package/out/zero/package.js +0 -205
  944. package/out/zero/package.js.map +0 -1
  945. package/out/zero-cache/src/auth/auth.js.map +0 -1
  946. package/out/zero-cache/src/auth/jwt.js.map +0 -1
  947. package/out/zero-cache/src/auth/load-permissions.js.map +0 -1
  948. package/out/zero-cache/src/auth/read-authorizer.js.map +0 -1
  949. package/out/zero-cache/src/auth/write-authorizer.js.map +0 -1
  950. package/out/zero-cache/src/config/network.js.map +0 -1
  951. package/out/zero-cache/src/config/normalize.js.map +0 -1
  952. package/out/zero-cache/src/config/server-context.js.map +0 -1
  953. package/out/zero-cache/src/config/zero-config.js +0 -916
  954. package/out/zero-cache/src/config/zero-config.js.map +0 -1
  955. package/out/zero-cache/src/custom/fetch.js.map +0 -1
  956. package/out/zero-cache/src/custom-queries/transform-query.js.map +0 -1
  957. package/out/zero-cache/src/db/create.js.map +0 -1
  958. package/out/zero-cache/src/db/delete-lite-db.js.map +0 -1
  959. package/out/zero-cache/src/db/lite-tables.js.map +0 -1
  960. package/out/zero-cache/src/db/migration-lite.js +0 -147
  961. package/out/zero-cache/src/db/migration-lite.js.map +0 -1
  962. package/out/zero-cache/src/db/migration.js +0 -120
  963. package/out/zero-cache/src/db/migration.js.map +0 -1
  964. package/out/zero-cache/src/db/mode-enum.js.map +0 -1
  965. package/out/zero-cache/src/db/pg-copy-binary.js.map +0 -1
  966. package/out/zero-cache/src/db/pg-copy.js.map +0 -1
  967. package/out/zero-cache/src/db/pg-to-lite.js.map +0 -1
  968. package/out/zero-cache/src/db/pg-type-parser.js.map +0 -1
  969. package/out/zero-cache/src/db/run-transaction.js.map +0 -1
  970. package/out/zero-cache/src/db/specs.js.map +0 -1
  971. package/out/zero-cache/src/db/statements.js.map +0 -1
  972. package/out/zero-cache/src/db/transaction-pool.js.map +0 -1
  973. package/out/zero-cache/src/db/warmup.js.map +0 -1
  974. package/out/zero-cache/src/observability/events.js.map +0 -1
  975. package/out/zero-cache/src/observability/metrics.js.map +0 -1
  976. package/out/zero-cache/src/scripts/decommission.js.map +0 -1
  977. package/out/zero-cache/src/scripts/deploy-permissions.js.map +0 -1
  978. package/out/zero-cache/src/scripts/permissions.js.map +0 -1
  979. package/out/zero-cache/src/server/anonymous-otel-start.js +0 -305
  980. package/out/zero-cache/src/server/anonymous-otel-start.js.map +0 -1
  981. package/out/zero-cache/src/server/inspector-delegate.js.map +0 -1
  982. package/out/zero-cache/src/server/logging.js.map +0 -1
  983. package/out/zero-cache/src/server/otel-diag-logger.js.map +0 -1
  984. package/out/zero-cache/src/server/otel-log-sink.js.map +0 -1
  985. package/out/zero-cache/src/server/otel-start.js +0 -53
  986. package/out/zero-cache/src/server/otel-start.js.map +0 -1
  987. package/out/zero-cache/src/server/priority-op.js.map +0 -1
  988. package/out/zero-cache/src/server/runner/main.js +0 -10
  989. package/out/zero-cache/src/server/runner/main.js.map +0 -1
  990. package/out/zero-cache/src/server/runner/run-worker.js.map +0 -1
  991. package/out/zero-cache/src/server/runner/runtime.js.map +0 -1
  992. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +0 -1
  993. package/out/zero-cache/src/server/worker-dispatcher.js.map +0 -1
  994. package/out/zero-cache/src/server/worker-urls.js.map +0 -1
  995. package/out/zero-cache/src/services/analyze.js +0 -69
  996. package/out/zero-cache/src/services/analyze.js.map +0 -1
  997. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +0 -1
  998. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +0 -1
  999. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +0 -1
  1000. package/out/zero-cache/src/services/change-source/custom/change-source.js +0 -176
  1001. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +0 -1
  1002. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +0 -1
  1003. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +0 -197
  1004. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +0 -1
  1005. package/out/zero-cache/src/services/change-source/pg/change-source.js +0 -920
  1006. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +0 -1
  1007. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +0 -1
  1008. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +0 -545
  1009. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +0 -1
  1010. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +0 -1
  1011. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +0 -1
  1012. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +0 -1
  1013. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +0 -1
  1014. package/out/zero-cache/src/services/change-source/pg/replication-slots.js +0 -162
  1015. package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +0 -1
  1016. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +0 -334
  1017. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +0 -1
  1018. package/out/zero-cache/src/services/change-source/pg/schema/init.js +0 -155
  1019. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +0 -1
  1020. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +0 -1
  1021. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +0 -330
  1022. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +0 -1
  1023. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +0 -1
  1024. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +0 -1
  1025. package/out/zero-cache/src/services/change-source/protocol/current/data.js +0 -192
  1026. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +0 -1
  1027. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +0 -1
  1028. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +0 -1
  1029. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +0 -1
  1030. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +0 -1
  1031. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +0 -1
  1032. package/out/zero-cache/src/services/change-source/protocol/current.js +0 -56
  1033. package/out/zero-cache/src/services/change-source/protocol/current.js.map +0 -1
  1034. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +0 -1
  1035. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +0 -1
  1036. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +0 -158
  1037. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +0 -1
  1038. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +0 -1
  1039. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +0 -1
  1040. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +0 -1
  1041. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +0 -1
  1042. package/out/zero-cache/src/services/change-streamer/schema/init.js +0 -74
  1043. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +0 -1
  1044. package/out/zero-cache/src/services/change-streamer/schema/tables.js +0 -191
  1045. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +0 -1
  1046. package/out/zero-cache/src/services/change-streamer/snapshot.js +0 -27
  1047. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +0 -1
  1048. package/out/zero-cache/src/services/change-streamer/storer.js.map +0 -1
  1049. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +0 -1
  1050. package/out/zero-cache/src/services/heapz.js.map +0 -1
  1051. package/out/zero-cache/src/services/http-service.js.map +0 -1
  1052. package/out/zero-cache/src/services/life-cycle.js +0 -195
  1053. package/out/zero-cache/src/services/life-cycle.js.map +0 -1
  1054. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +0 -1
  1055. package/out/zero-cache/src/services/litestream/commands.js.map +0 -1
  1056. package/out/zero-cache/src/services/mutagen/error.js.map +0 -1
  1057. package/out/zero-cache/src/services/mutagen/mutagen.js.map +0 -1
  1058. package/out/zero-cache/src/services/mutagen/pusher.js.map +0 -1
  1059. package/out/zero-cache/src/services/replicator/change-processor.js.map +0 -1
  1060. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +0 -1
  1061. package/out/zero-cache/src/services/replicator/notifier.js.map +0 -1
  1062. package/out/zero-cache/src/services/replicator/replication-status.js.map +0 -1
  1063. package/out/zero-cache/src/services/replicator/replicator.js.map +0 -1
  1064. package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +0 -1
  1065. package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +0 -1
  1066. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +0 -1
  1067. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +0 -1
  1068. package/out/zero-cache/src/services/replicator/schema/constants.js.map +0 -1
  1069. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +0 -1
  1070. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +0 -1
  1071. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +0 -1
  1072. package/out/zero-cache/src/services/replicator/write-worker.js.map +0 -1
  1073. package/out/zero-cache/src/services/run-ast.js +0 -87
  1074. package/out/zero-cache/src/services/run-ast.js.map +0 -1
  1075. package/out/zero-cache/src/services/runner.js.map +0 -1
  1076. package/out/zero-cache/src/services/running-state.js +0 -136
  1077. package/out/zero-cache/src/services/running-state.js.map +0 -1
  1078. package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js +0 -50
  1079. package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +0 -1
  1080. package/out/zero-cache/src/services/statz.js.map +0 -1
  1081. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +0 -1
  1082. package/out/zero-cache/src/services/view-syncer/client-handler.js +0 -270
  1083. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +0 -1
  1084. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +0 -1
  1085. package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +0 -1
  1086. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +0 -109
  1087. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +0 -1
  1088. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +0 -1
  1089. package/out/zero-cache/src/services/view-syncer/cvr.js.map +0 -1
  1090. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +0 -1
  1091. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +0 -102
  1092. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +0 -1
  1093. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +0 -628
  1094. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +0 -1
  1095. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +0 -1
  1096. package/out/zero-cache/src/services/view-syncer/row-set-signature.js.map +0 -1
  1097. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +0 -1
  1098. package/out/zero-cache/src/services/view-syncer/schema/init.js +0 -158
  1099. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +0 -1
  1100. package/out/zero-cache/src/services/view-syncer/schema/types.js +0 -176
  1101. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +0 -1
  1102. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +0 -1
  1103. package/out/zero-cache/src/services/view-syncer/tracer.js.map +0 -1
  1104. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +0 -1
  1105. package/out/zero-cache/src/services/view-syncer/view-syncer.js +0 -1235
  1106. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +0 -1
  1107. package/out/zero-cache/src/types/error-with-level.js.map +0 -1
  1108. package/out/zero-cache/src/types/http.js.map +0 -1
  1109. package/out/zero-cache/src/types/lexi-version.js.map +0 -1
  1110. package/out/zero-cache/src/types/lite.js.map +0 -1
  1111. package/out/zero-cache/src/types/names.js.map +0 -1
  1112. package/out/zero-cache/src/types/pg-data-type.js.map +0 -1
  1113. package/out/zero-cache/src/types/pg-types.js.map +0 -1
  1114. package/out/zero-cache/src/types/pg-versions.js.map +0 -1
  1115. package/out/zero-cache/src/types/pg.js +0 -189
  1116. package/out/zero-cache/src/types/pg.js.map +0 -1
  1117. package/out/zero-cache/src/types/processes.js.map +0 -1
  1118. package/out/zero-cache/src/types/profiler.js.map +0 -1
  1119. package/out/zero-cache/src/types/row-key.js.map +0 -1
  1120. package/out/zero-cache/src/types/shards.js.map +0 -1
  1121. package/out/zero-cache/src/types/sql.js.map +0 -1
  1122. package/out/zero-cache/src/types/state-version.js.map +0 -1
  1123. package/out/zero-cache/src/types/streams.js.map +0 -1
  1124. package/out/zero-cache/src/types/strings.js.map +0 -1
  1125. package/out/zero-cache/src/types/subscription.js.map +0 -1
  1126. package/out/zero-cache/src/types/timeout.js.map +0 -1
  1127. package/out/zero-cache/src/types/url-params.js.map +0 -1
  1128. package/out/zero-cache/src/types/websocket-handoff.js.map +0 -1
  1129. package/out/zero-cache/src/types/ws.js.map +0 -1
  1130. package/out/zero-cache/src/workers/connect-params.js.map +0 -1
  1131. package/out/zero-cache/src/workers/connection.js +0 -229
  1132. package/out/zero-cache/src/workers/connection.js.map +0 -1
  1133. package/out/zero-cache/src/workers/mutator.js.map +0 -1
  1134. package/out/zero-cache/src/workers/replicator.js.map +0 -1
  1135. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +0 -1
  1136. package/out/zero-cache/src/workers/syncer.js.map +0 -1
  1137. package/out/zero-client/src/client/active-clients-manager.js.map +0 -1
  1138. package/out/zero-client/src/client/client-error-kind-enum.js.map +0 -1
  1139. package/out/zero-client/src/client/connection-manager.js +0 -295
  1140. package/out/zero-client/src/client/connection-manager.js.map +0 -1
  1141. package/out/zero-client/src/client/connection-status-enum.js +0 -20
  1142. package/out/zero-client/src/client/connection-status-enum.js.map +0 -1
  1143. package/out/zero-client/src/client/connection.js.map +0 -1
  1144. package/out/zero-client/src/client/context.js.map +0 -1
  1145. package/out/zero-client/src/client/crud-impl.js +0 -61
  1146. package/out/zero-client/src/client/crud-impl.js.map +0 -1
  1147. package/out/zero-client/src/client/crud.js.map +0 -1
  1148. package/out/zero-client/src/client/custom.js +0 -63
  1149. package/out/zero-client/src/client/custom.js.map +0 -1
  1150. package/out/zero-client/src/client/delete-clients-manager.js.map +0 -1
  1151. package/out/zero-client/src/client/enable-analytics.js.map +0 -1
  1152. package/out/zero-client/src/client/error.js.map +0 -1
  1153. package/out/zero-client/src/client/http-string.js.map +0 -1
  1154. package/out/zero-client/src/client/inspector/client-group.js.map +0 -1
  1155. package/out/zero-client/src/client/inspector/client.js.map +0 -1
  1156. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +0 -1
  1157. package/out/zero-client/src/client/inspector/inspector.js.map +0 -1
  1158. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +0 -1
  1159. package/out/zero-client/src/client/inspector/query.js.map +0 -1
  1160. package/out/zero-client/src/client/ivm-branch.js.map +0 -1
  1161. package/out/zero-client/src/client/keys.js.map +0 -1
  1162. package/out/zero-client/src/client/log-options.js.map +0 -1
  1163. package/out/zero-client/src/client/make-mutate-property.js.map +0 -1
  1164. package/out/zero-client/src/client/make-replicache-mutators.js.map +0 -1
  1165. package/out/zero-client/src/client/metric-name-enum.js.map +0 -1
  1166. package/out/zero-client/src/client/metrics.js.map +0 -1
  1167. package/out/zero-client/src/client/mutation-tracker.js.map +0 -1
  1168. package/out/zero-client/src/client/mutator-proxy.js.map +0 -1
  1169. package/out/zero-client/src/client/options.js.map +0 -1
  1170. package/out/zero-client/src/client/query-manager.js.map +0 -1
  1171. package/out/zero-client/src/client/reload-error-handler.js.map +0 -1
  1172. package/out/zero-client/src/client/server-option.js.map +0 -1
  1173. package/out/zero-client/src/client/update-needed-reason-type-enum.js +0 -27
  1174. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +0 -1
  1175. package/out/zero-client/src/client/version.js +0 -9
  1176. package/out/zero-client/src/client/version.js.map +0 -1
  1177. package/out/zero-client/src/client/zero-poke-handler.js.map +0 -1
  1178. package/out/zero-client/src/client/zero-rep.js.map +0 -1
  1179. package/out/zero-client/src/client/zero.js +0 -1443
  1180. package/out/zero-client/src/client/zero.js.map +0 -1
  1181. package/out/zero-client/src/util/nanoid.js.map +0 -1
  1182. package/out/zero-client/src/util/socket.d.ts +0 -3
  1183. package/out/zero-client/src/util/socket.d.ts.map +0 -1
  1184. package/out/zero-client/src/util/socket.js +0 -8
  1185. package/out/zero-client/src/util/socket.js.map +0 -1
  1186. package/out/zero-protocol/src/analyze-query-result.js +0 -120
  1187. package/out/zero-protocol/src/analyze-query-result.js.map +0 -1
  1188. package/out/zero-protocol/src/application-error.js.map +0 -1
  1189. package/out/zero-protocol/src/ast.js.map +0 -1
  1190. package/out/zero-protocol/src/change-desired-queries.js +0 -12
  1191. package/out/zero-protocol/src/change-desired-queries.js.map +0 -1
  1192. package/out/zero-protocol/src/client-schema.js.map +0 -1
  1193. package/out/zero-protocol/src/close-connection.js.map +0 -1
  1194. package/out/zero-protocol/src/connect.js +0 -47
  1195. package/out/zero-protocol/src/connect.js.map +0 -1
  1196. package/out/zero-protocol/src/custom-queries.js.map +0 -1
  1197. package/out/zero-protocol/src/data.js.map +0 -1
  1198. package/out/zero-protocol/src/delete-clients.js.map +0 -1
  1199. package/out/zero-protocol/src/down.js.map +0 -1
  1200. package/out/zero-protocol/src/error-kind-enum.js.map +0 -1
  1201. package/out/zero-protocol/src/error-origin-enum.js.map +0 -1
  1202. package/out/zero-protocol/src/error-reason-enum.js.map +0 -1
  1203. package/out/zero-protocol/src/error.js +0 -84
  1204. package/out/zero-protocol/src/error.js.map +0 -1
  1205. package/out/zero-protocol/src/inspect-down.js.map +0 -1
  1206. package/out/zero-protocol/src/inspect-up.js +0 -34
  1207. package/out/zero-protocol/src/inspect-up.js.map +0 -1
  1208. package/out/zero-protocol/src/mutate-server.js.map +0 -1
  1209. package/out/zero-protocol/src/mutation-id.js.map +0 -1
  1210. package/out/zero-protocol/src/mutation-type-enum.js.map +0 -1
  1211. package/out/zero-protocol/src/mutation.js.map +0 -1
  1212. package/out/zero-protocol/src/mutations-patch.js.map +0 -1
  1213. package/out/zero-protocol/src/ping.js.map +0 -1
  1214. package/out/zero-protocol/src/poke.js +0 -59
  1215. package/out/zero-protocol/src/poke.js.map +0 -1
  1216. package/out/zero-protocol/src/pong.js.map +0 -1
  1217. package/out/zero-protocol/src/primary-key.js.map +0 -1
  1218. package/out/zero-protocol/src/protocol-version.js.map +0 -1
  1219. package/out/zero-protocol/src/pull.js.map +0 -1
  1220. package/out/zero-protocol/src/push.js +0 -60
  1221. package/out/zero-protocol/src/push.js.map +0 -1
  1222. package/out/zero-protocol/src/queries-patch.js.map +0 -1
  1223. package/out/zero-protocol/src/query-hash.js.map +0 -1
  1224. package/out/zero-protocol/src/query-server.js.map +0 -1
  1225. package/out/zero-protocol/src/row-patch.js.map +0 -1
  1226. package/out/zero-protocol/src/up.js.map +0 -1
  1227. package/out/zero-protocol/src/update-auth.js.map +0 -1
  1228. package/out/zero-protocol/src/version.js.map +0 -1
  1229. package/out/zero-react/src/use-connection-state.js +0 -17
  1230. package/out/zero-react/src/use-connection-state.js.map +0 -1
  1231. package/out/zero-react/src/use-query.js +0 -299
  1232. package/out/zero-react/src/use-query.js.map +0 -1
  1233. package/out/zero-react/src/use-zero-online.js +0 -20
  1234. package/out/zero-react/src/use-zero-online.js.map +0 -1
  1235. package/out/zero-react/src/zero-provider.js +0 -87
  1236. package/out/zero-react/src/zero-provider.js.map +0 -1
  1237. package/out/zero-schema/src/builder/relationship-builder.js.map +0 -1
  1238. package/out/zero-schema/src/builder/schema-builder.js.map +0 -1
  1239. package/out/zero-schema/src/builder/table-builder.js.map +0 -1
  1240. package/out/zero-schema/src/compiled-permissions.js.map +0 -1
  1241. package/out/zero-schema/src/name-mapper.js.map +0 -1
  1242. package/out/zero-schema/src/permissions.js.map +0 -1
  1243. package/out/zero-schema/src/schema-config.js.map +0 -1
  1244. package/out/zero-server/src/adapters/drizzle.js.map +0 -1
  1245. package/out/zero-server/src/adapters/kysely.js.map +0 -1
  1246. package/out/zero-server/src/adapters/pg.js +0 -83
  1247. package/out/zero-server/src/adapters/pg.js.map +0 -1
  1248. package/out/zero-server/src/adapters/postgresjs.js.map +0 -1
  1249. package/out/zero-server/src/adapters/prisma.js.map +0 -1
  1250. package/out/zero-server/src/custom.js +0 -214
  1251. package/out/zero-server/src/custom.js.map +0 -1
  1252. package/out/zero-server/src/logging.js.map +0 -1
  1253. package/out/zero-server/src/pg-query-executor.js.map +0 -1
  1254. package/out/zero-server/src/process-mutations.js.map +0 -1
  1255. package/out/zero-server/src/push-processor.js.map +0 -1
  1256. package/out/zero-server/src/queries/process-queries.js.map +0 -1
  1257. package/out/zero-server/src/schema.js.map +0 -1
  1258. package/out/zero-server/src/zql-database.js.map +0 -1
  1259. package/out/zero-solid/src/solid-view.js +0 -145
  1260. package/out/zero-solid/src/solid-view.js.map +0 -1
  1261. package/out/zero-solid/src/use-connection-state.js +0 -21
  1262. package/out/zero-solid/src/use-connection-state.js.map +0 -1
  1263. package/out/zero-solid/src/use-query.js +0 -64
  1264. package/out/zero-solid/src/use-query.js.map +0 -1
  1265. package/out/zero-solid/src/use-zero-online.js +0 -21
  1266. package/out/zero-solid/src/use-zero-online.js.map +0 -1
  1267. package/out/zero-solid/src/use-zero.js +0 -93
  1268. package/out/zero-solid/src/use-zero.js.map +0 -1
  1269. package/out/zero-types/src/format.js.map +0 -1
  1270. package/out/zero-types/src/name-mapper.js.map +0 -1
  1271. package/out/zql/src/builder/builder.js +0 -380
  1272. package/out/zql/src/builder/builder.js.map +0 -1
  1273. package/out/zql/src/builder/debug-delegate.js +0 -72
  1274. package/out/zql/src/builder/debug-delegate.js.map +0 -1
  1275. package/out/zql/src/builder/filter.js.map +0 -1
  1276. package/out/zql/src/builder/like.js.map +0 -1
  1277. package/out/zql/src/error.js.map +0 -1
  1278. package/out/zql/src/ivm/array-view.js.map +0 -1
  1279. package/out/zql/src/ivm/cap.js.map +0 -1
  1280. package/out/zql/src/ivm/change.js.map +0 -1
  1281. package/out/zql/src/ivm/constraint.js +0 -82
  1282. package/out/zql/src/ivm/constraint.js.map +0 -1
  1283. package/out/zql/src/ivm/data.js.map +0 -1
  1284. package/out/zql/src/ivm/exists.js.map +0 -1
  1285. package/out/zql/src/ivm/fan-in.js.map +0 -1
  1286. package/out/zql/src/ivm/fan-out.js.map +0 -1
  1287. package/out/zql/src/ivm/filter-operators.js.map +0 -1
  1288. package/out/zql/src/ivm/filter-push.js.map +0 -1
  1289. package/out/zql/src/ivm/filter.js.map +0 -1
  1290. package/out/zql/src/ivm/flipped-join.js +0 -311
  1291. package/out/zql/src/ivm/flipped-join.js.map +0 -1
  1292. package/out/zql/src/ivm/join-utils.js.map +0 -1
  1293. package/out/zql/src/ivm/join.js.map +0 -1
  1294. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +0 -1
  1295. package/out/zql/src/ivm/memory-source.js.map +0 -1
  1296. package/out/zql/src/ivm/memory-storage.js.map +0 -1
  1297. package/out/zql/src/ivm/operator.js.map +0 -1
  1298. package/out/zql/src/ivm/push-accumulated.js.map +0 -1
  1299. package/out/zql/src/ivm/skip-yields.js.map +0 -1
  1300. package/out/zql/src/ivm/skip.js.map +0 -1
  1301. package/out/zql/src/ivm/source.js.map +0 -1
  1302. package/out/zql/src/ivm/stream.js.map +0 -1
  1303. package/out/zql/src/ivm/take.js.map +0 -1
  1304. package/out/zql/src/ivm/union-fan-in.js +0 -163
  1305. package/out/zql/src/ivm/union-fan-in.js.map +0 -1
  1306. package/out/zql/src/ivm/union-fan-out.js.map +0 -1
  1307. package/out/zql/src/ivm/view-apply-change.js.map +0 -1
  1308. package/out/zql/src/mutate/crud.js.map +0 -1
  1309. package/out/zql/src/mutate/custom.js.map +0 -1
  1310. package/out/zql/src/mutate/mutator-registry.js.map +0 -1
  1311. package/out/zql/src/mutate/mutator.js.map +0 -1
  1312. package/out/zql/src/planner/planner-builder.js.map +0 -1
  1313. package/out/zql/src/planner/planner-connection.js.map +0 -1
  1314. package/out/zql/src/planner/planner-constraint.js.map +0 -1
  1315. package/out/zql/src/planner/planner-debug.js.map +0 -1
  1316. package/out/zql/src/planner/planner-fan-in.js.map +0 -1
  1317. package/out/zql/src/planner/planner-fan-out.js.map +0 -1
  1318. package/out/zql/src/planner/planner-graph.js.map +0 -1
  1319. package/out/zql/src/planner/planner-join.js +0 -261
  1320. package/out/zql/src/planner/planner-join.js.map +0 -1
  1321. package/out/zql/src/planner/planner-node.js.map +0 -1
  1322. package/out/zql/src/planner/planner-source.js.map +0 -1
  1323. package/out/zql/src/planner/planner-terminus.js.map +0 -1
  1324. package/out/zql/src/query/complete-ordering.js.map +0 -1
  1325. package/out/zql/src/query/create-builder.js.map +0 -1
  1326. package/out/zql/src/query/error.js.map +0 -1
  1327. package/out/zql/src/query/escape-like.js.map +0 -1
  1328. package/out/zql/src/query/expression.js.map +0 -1
  1329. package/out/zql/src/query/measure-push-operator.js.map +0 -1
  1330. package/out/zql/src/query/metrics-delegate.js.map +0 -1
  1331. package/out/zql/src/query/named.js.map +0 -1
  1332. package/out/zql/src/query/query-delegate-base.js.map +0 -1
  1333. package/out/zql/src/query/query-impl.js +0 -290
  1334. package/out/zql/src/query/query-impl.js.map +0 -1
  1335. package/out/zql/src/query/query-internals.js.map +0 -1
  1336. package/out/zql/src/query/query-registry.js.map +0 -1
  1337. package/out/zql/src/query/runnable-query-impl.js.map +0 -1
  1338. package/out/zql/src/query/static-query.js.map +0 -1
  1339. package/out/zql/src/query/ttl.js.map +0 -1
  1340. package/out/zql/src/query/validate-input.js.map +0 -1
  1341. package/out/zqlite/src/database-storage.js.map +0 -1
  1342. package/out/zqlite/src/db.js.map +0 -1
  1343. package/out/zqlite/src/explain-queries.js.map +0 -1
  1344. package/out/zqlite/src/internal/sql-inline.js.map +0 -1
  1345. package/out/zqlite/src/internal/sql.js.map +0 -1
  1346. package/out/zqlite/src/internal/statement-cache.js.map +0 -1
  1347. package/out/zqlite/src/query-builder.js.map +0 -1
  1348. package/out/zqlite/src/query-delegate.js.map +0 -1
  1349. package/out/zqlite/src/resolve-scalar-subqueries.js.map +0 -1
  1350. package/out/zqlite/src/sqlite-cost-model.js.map +0 -1
  1351. package/out/zqlite/src/sqlite-stat-fanout.js.map +0 -1
  1352. package/out/zqlite/src/table-source.js +0 -313
  1353. package/out/zqlite/src/table-source.js.map +0 -1
  1354. /package/out/{analyze-query → packages/analyze-query}/src/bin-transform.js +0 -0
  1355. /package/out/{ast-to-zql → packages/ast-to-zql}/src/ast-to-zql.js +0 -0
  1356. /package/out/{ast-to-zql → packages/ast-to-zql}/src/bin.js +0 -0
  1357. /package/out/{ast-to-zql → packages/ast-to-zql}/src/format.js +0 -0
  1358. /package/out/{datadog → packages/datadog}/src/datadog-log-sink.js +0 -0
  1359. /package/out/{otel → packages/otel}/src/enabled.js +0 -0
  1360. /package/out/{otel → packages/otel}/src/log-options.js +0 -0
  1361. /package/out/{otel → packages/otel}/src/maybe-time.js +0 -0
  1362. /package/out/{otel → packages/otel}/src/span.js +0 -0
  1363. /package/out/{otel → packages/otel}/src/version.js +0 -0
  1364. /package/out/{replicache → packages/replicache}/src/async-iterable-to-array.js +0 -0
  1365. /package/out/{replicache → packages/replicache}/src/bg-interval.js +0 -0
  1366. /package/out/{replicache → packages/replicache}/src/btree/diff.js +0 -0
  1367. /package/out/{replicache → packages/replicache}/src/btree/node.js +0 -0
  1368. /package/out/{replicache → packages/replicache}/src/btree/read.js +0 -0
  1369. /package/out/{replicache → packages/replicache}/src/btree/splice.js +0 -0
  1370. /package/out/{replicache → packages/replicache}/src/call-default-fetch.js +0 -0
  1371. /package/out/{replicache → packages/replicache}/src/config.js +0 -0
  1372. /package/out/{replicache → packages/replicache}/src/connection-loop-delegates.js +0 -0
  1373. /package/out/{replicache → packages/replicache}/src/connection-loop.js +0 -0
  1374. /package/out/{replicache → packages/replicache}/src/cookies.js +0 -0
  1375. /package/out/{replicache → packages/replicache}/src/dag/chunk.js +0 -0
  1376. /package/out/{replicache → packages/replicache}/src/dag/gc.js +0 -0
  1377. /package/out/{replicache → packages/replicache}/src/dag/key.js +0 -0
  1378. /package/out/{replicache → packages/replicache}/src/dag/lazy-store.js +0 -0
  1379. /package/out/{replicache → packages/replicache}/src/dag/store.js +0 -0
  1380. /package/out/{replicache → packages/replicache}/src/dag/visitor.js +0 -0
  1381. /package/out/{replicache → packages/replicache}/src/db/commit.js +0 -0
  1382. /package/out/{replicache → packages/replicache}/src/db/index.js +0 -0
  1383. /package/out/{replicache → packages/replicache}/src/db/read.js +0 -0
  1384. /package/out/{replicache → packages/replicache}/src/db/rebase.js +0 -0
  1385. /package/out/{replicache → packages/replicache}/src/db/write.js +0 -0
  1386. /package/out/{replicache → packages/replicache}/src/deleted-clients.js +0 -0
  1387. /package/out/{replicache → packages/replicache}/src/error-responses.js +0 -0
  1388. /package/out/{replicache → packages/replicache}/src/expo-sqlite.js +0 -0
  1389. /package/out/{replicache → packages/replicache}/src/frozen-json.js +0 -0
  1390. /package/out/{replicache → packages/replicache}/src/get-default-puller.js +0 -0
  1391. /package/out/{replicache → packages/replicache}/src/get-default-pusher.js +0 -0
  1392. /package/out/{replicache → packages/replicache}/src/get-kv-store-provider.js +0 -0
  1393. /package/out/{replicache → packages/replicache}/src/hash.js +0 -0
  1394. /package/out/{replicache → packages/replicache}/src/http-request-info.js +0 -0
  1395. /package/out/{replicache → packages/replicache}/src/impl.js +0 -0
  1396. /package/out/{replicache → packages/replicache}/src/index-defs.js +0 -0
  1397. /package/out/{replicache → packages/replicache}/src/kv/idb-store-with-mem-fallback.js +0 -0
  1398. /package/out/{replicache → packages/replicache}/src/kv/idb-store.js +0 -0
  1399. /package/out/{replicache → packages/replicache}/src/kv/mem-store.js +0 -0
  1400. /package/out/{replicache → packages/replicache}/src/kv/op-sqlite/types.js +0 -0
  1401. /package/out/{replicache → packages/replicache}/src/kv/read-impl.js +0 -0
  1402. /package/out/{replicache → packages/replicache}/src/kv/write-impl-base.js +0 -0
  1403. /package/out/{replicache → packages/replicache}/src/kv/write-impl.js +0 -0
  1404. /package/out/{replicache → packages/replicache}/src/lazy.js +0 -0
  1405. /package/out/{replicache → packages/replicache}/src/log-options.js +0 -0
  1406. /package/out/{replicache → packages/replicache}/src/make-idb-name.js +0 -0
  1407. /package/out/{replicache → packages/replicache}/src/mutation-recovery.js +0 -0
  1408. /package/out/{replicache → packages/replicache}/src/new-client-channel.js +0 -0
  1409. /package/out/{replicache → packages/replicache}/src/on-persist-channel.js +0 -0
  1410. /package/out/{replicache → packages/replicache}/src/op-sqlite.js +0 -0
  1411. /package/out/{replicache → packages/replicache}/src/patch-operation.js +0 -0
  1412. /package/out/{replicache → packages/replicache}/src/pending-mutations.js +0 -0
  1413. /package/out/{replicache → packages/replicache}/src/persist/client-gc.js +0 -0
  1414. /package/out/{replicache → packages/replicache}/src/persist/client-group-gc.js +0 -0
  1415. /package/out/{replicache → packages/replicache}/src/persist/collect-idb-databases.js +0 -0
  1416. /package/out/{replicache → packages/replicache}/src/persist/gather-mem-only-visitor.js +0 -0
  1417. /package/out/{replicache → packages/replicache}/src/persist/gather-not-cached-visitor.js +0 -0
  1418. /package/out/{replicache → packages/replicache}/src/persist/heartbeat.js +0 -0
  1419. /package/out/{replicache → packages/replicache}/src/persist/idb-databases-store-db-name.js +0 -0
  1420. /package/out/{replicache → packages/replicache}/src/persist/idb-databases-store.js +0 -0
  1421. /package/out/{replicache → packages/replicache}/src/persist/make-client-id.js +0 -0
  1422. /package/out/{replicache → packages/replicache}/src/persist/refresh.js +0 -0
  1423. /package/out/{replicache → packages/replicache}/src/process-scheduler.js +0 -0
  1424. /package/out/{replicache → packages/replicache}/src/pusher.js +0 -0
  1425. /package/out/{replicache → packages/replicache}/src/replicache-impl.js +0 -0
  1426. /package/out/{replicache → packages/replicache}/src/report-error.js +0 -0
  1427. /package/out/{replicache → packages/replicache}/src/request-idle.js +0 -0
  1428. /package/out/{replicache → packages/replicache}/src/scan-iterator.js +0 -0
  1429. /package/out/{replicache → packages/replicache}/src/scan-options.js +0 -0
  1430. /package/out/{replicache → packages/replicache}/src/set-interval-with-signal.js +0 -0
  1431. /package/out/{replicache → packages/replicache}/src/sqlite.js +0 -0
  1432. /package/out/{replicache → packages/replicache}/src/subscriptions.js +0 -0
  1433. /package/out/{replicache → packages/replicache}/src/sync/diff.js +0 -0
  1434. /package/out/{replicache → packages/replicache}/src/sync/ids.js +0 -0
  1435. /package/out/{replicache → packages/replicache}/src/sync/patch.js +0 -0
  1436. /package/out/{replicache → packages/replicache}/src/sync/pull-error.js +0 -0
  1437. /package/out/{replicache → packages/replicache}/src/sync/push.js +0 -0
  1438. /package/out/{replicache → packages/replicache}/src/sync/request-id.js +0 -0
  1439. /package/out/{replicache → packages/replicache}/src/sync/sync-head-name.js +0 -0
  1440. /package/out/{replicache → packages/replicache}/src/to-error.js +0 -0
  1441. /package/out/{replicache → packages/replicache}/src/transaction-closed-error.js +0 -0
  1442. /package/out/{replicache → packages/replicache}/src/transactions.js +0 -0
  1443. /package/out/{replicache → packages/replicache}/src/version.js +0 -0
  1444. /package/out/{replicache → packages/replicache}/src/with-transactions.js +0 -0
  1445. /package/out/{shared → packages/shared}/src/abort-error.js +0 -0
  1446. /package/out/{shared → packages/shared}/src/arrays.js +0 -0
  1447. /package/out/{shared → packages/shared}/src/asserts.js +0 -0
  1448. /package/out/{shared → packages/shared}/src/bigint-json.js +0 -0
  1449. /package/out/{shared → packages/shared}/src/binary-search.js +0 -0
  1450. /package/out/{shared → packages/shared}/src/broadcast-channel.js +0 -0
  1451. /package/out/{shared → packages/shared}/src/browser-env.js +0 -0
  1452. /package/out/{shared → packages/shared}/src/btree-set.js +0 -0
  1453. /package/out/{shared → packages/shared}/src/cache.js +0 -0
  1454. /package/out/{shared → packages/shared}/src/centroid.js +0 -0
  1455. /package/out/{shared → packages/shared}/src/config.js +0 -0
  1456. /package/out/{shared → packages/shared}/src/custom-key-map.js +0 -0
  1457. /package/out/{shared → packages/shared}/src/custom-key-set.js +0 -0
  1458. /package/out/{shared → packages/shared}/src/deep-clone.js +0 -0
  1459. /package/out/{shared → packages/shared}/src/deep-merge.js +0 -0
  1460. /package/out/{shared → packages/shared}/src/document-visible.js +0 -0
  1461. /package/out/{shared → packages/shared}/src/dotenv.js +0 -0
  1462. /package/out/{shared → packages/shared}/src/error.js +0 -0
  1463. /package/out/{shared → packages/shared}/src/has-own.js +0 -0
  1464. /package/out/{shared → packages/shared}/src/hash.js +0 -0
  1465. /package/out/{shared → packages/shared}/src/iterables.js +0 -0
  1466. /package/out/{shared → packages/shared}/src/json-schema.js +0 -0
  1467. /package/out/{shared → packages/shared}/src/json.js +0 -0
  1468. /package/out/{shared → packages/shared}/src/logging-test-utils.js +0 -0
  1469. /package/out/{shared → packages/shared}/src/logging.js +0 -0
  1470. /package/out/{shared → packages/shared}/src/must.js +0 -0
  1471. /package/out/{shared → packages/shared}/src/navigator.js +0 -0
  1472. /package/out/{shared → packages/shared}/src/object-traversal.js +0 -0
  1473. /package/out/{shared → packages/shared}/src/objects.js +0 -0
  1474. /package/out/{shared → packages/shared}/src/options.js +0 -0
  1475. /package/out/{shared → packages/shared}/src/parse-big-int.js +0 -0
  1476. /package/out/{shared → packages/shared}/src/promise-race.js +0 -0
  1477. /package/out/{shared → packages/shared}/src/rand.js +0 -0
  1478. /package/out/{shared → packages/shared}/src/random-uint64.js +0 -0
  1479. /package/out/{shared → packages/shared}/src/random-values.js +0 -0
  1480. /package/out/{shared → packages/shared}/src/record-proxy.js +0 -0
  1481. /package/out/{shared → packages/shared}/src/resolved-promises.js +0 -0
  1482. /package/out/{shared → packages/shared}/src/sentinels.js +0 -0
  1483. /package/out/{shared → packages/shared}/src/set-utils.js +0 -0
  1484. /package/out/{shared → packages/shared}/src/size-of-value.js +0 -0
  1485. /package/out/{shared → packages/shared}/src/sleep.js +0 -0
  1486. /package/out/{shared → packages/shared}/src/sorted-entries.js +0 -0
  1487. /package/out/{shared → packages/shared}/src/string-compare.js +0 -0
  1488. /package/out/{shared → packages/shared}/src/subscribable.js +0 -0
  1489. /package/out/{shared → packages/shared}/src/tdigest-schema.js +0 -0
  1490. /package/out/{shared → packages/shared}/src/tdigest.js +0 -0
  1491. /package/out/{z2s → packages/z2s}/src/compiler.js +0 -0
  1492. /package/out/{z2s → packages/z2s}/src/sql.js +0 -0
  1493. /package/out/{zero → packages/zero}/src/server/runner/main.js +0 -0
  1494. /package/out/{zero-cache → packages/zero-cache}/src/auth/auth.js +0 -0
  1495. /package/out/{zero-cache → packages/zero-cache}/src/auth/jwt.js +0 -0
  1496. /package/out/{zero-cache → packages/zero-cache}/src/auth/load-permissions.js +0 -0
  1497. /package/out/{zero-cache → packages/zero-cache}/src/auth/read-authorizer.js +0 -0
  1498. /package/out/{zero-cache → packages/zero-cache}/src/auth/write-authorizer.js +0 -0
  1499. /package/out/{zero-cache → packages/zero-cache}/src/config/network.js +0 -0
  1500. /package/out/{zero-cache → packages/zero-cache}/src/config/normalize.js +0 -0
  1501. /package/out/{zero-cache → packages/zero-cache}/src/config/server-context.js +0 -0
  1502. /package/out/{zero-cache → packages/zero-cache}/src/custom/fetch.js +0 -0
  1503. /package/out/{zero-cache → packages/zero-cache}/src/custom-queries/transform-query.js +0 -0
  1504. /package/out/{zero-cache → packages/zero-cache}/src/db/create.js +0 -0
  1505. /package/out/{zero-cache → packages/zero-cache}/src/db/delete-lite-db.js +0 -0
  1506. /package/out/{zero-cache → packages/zero-cache}/src/db/lite-tables.js +0 -0
  1507. /package/out/{zero-cache → packages/zero-cache}/src/db/mode-enum.js +0 -0
  1508. /package/out/{zero-cache → packages/zero-cache}/src/db/pg-copy-binary.js +0 -0
  1509. /package/out/{zero-cache → packages/zero-cache}/src/db/pg-copy.js +0 -0
  1510. /package/out/{zero-cache → packages/zero-cache}/src/db/pg-to-lite.js +0 -0
  1511. /package/out/{zero-cache → packages/zero-cache}/src/db/pg-type-parser.js +0 -0
  1512. /package/out/{zero-cache → packages/zero-cache}/src/db/run-transaction.js +0 -0
  1513. /package/out/{zero-cache → packages/zero-cache}/src/db/specs.js +0 -0
  1514. /package/out/{zero-cache → packages/zero-cache}/src/db/statements.js +0 -0
  1515. /package/out/{zero-cache → packages/zero-cache}/src/db/transaction-pool.js +0 -0
  1516. /package/out/{zero-cache → packages/zero-cache}/src/db/warmup.js +0 -0
  1517. /package/out/{zero-cache → packages/zero-cache}/src/observability/events.js +0 -0
  1518. /package/out/{zero-cache → packages/zero-cache}/src/observability/metrics.js +0 -0
  1519. /package/out/{zero-cache → packages/zero-cache}/src/scripts/decommission.js +0 -0
  1520. /package/out/{zero-cache → packages/zero-cache}/src/scripts/deploy-permissions.js +0 -0
  1521. /package/out/{zero-cache → packages/zero-cache}/src/scripts/permissions.js +0 -0
  1522. /package/out/{zero-cache → packages/zero-cache}/src/server/inspector-delegate.js +0 -0
  1523. /package/out/{zero-cache → packages/zero-cache}/src/server/logging.js +0 -0
  1524. /package/out/{zero-cache → packages/zero-cache}/src/server/otel-diag-logger.js +0 -0
  1525. /package/out/{zero-cache → packages/zero-cache}/src/server/otel-log-sink.js +0 -0
  1526. /package/out/{zero-cache → packages/zero-cache}/src/server/priority-op.js +0 -0
  1527. /package/out/{zero-cache → packages/zero-cache}/src/server/runner/run-worker.js +0 -0
  1528. /package/out/{zero-cache → packages/zero-cache}/src/server/runner/runtime.js +0 -0
  1529. /package/out/{zero-cache → packages/zero-cache}/src/server/runner/zero-dispatcher.js +0 -0
  1530. /package/out/{zero-cache → packages/zero-cache}/src/server/worker-dispatcher.js +0 -0
  1531. /package/out/{zero-cache → packages/zero-cache}/src/server/worker-urls.js +0 -0
  1532. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/common/backfill-manager.js +0 -0
  1533. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/common/change-stream-multiplexer.js +0 -0
  1534. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/common/replica-schema.js +0 -0
  1535. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/backfill-metadata.js +0 -0
  1536. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/decommission.js +0 -0
  1537. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/logical-replication/binary-reader.js +0 -0
  1538. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/logical-replication/pgoutput-parser.js +0 -0
  1539. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/logical-replication/stream.js +0 -0
  1540. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/lsn.js +0 -0
  1541. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/schema/published.js +0 -0
  1542. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/schema/validation.js +0 -0
  1543. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/control.js +0 -0
  1544. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/downstream.js +0 -0
  1545. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/json.js +0 -0
  1546. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/path.js +0 -0
  1547. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/status.js +0 -0
  1548. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/upstream.js +0 -0
  1549. /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/mod.js +0 -0
  1550. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/backup-monitor.js +0 -0
  1551. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/broadcast.js +0 -0
  1552. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/change-streamer-service.js +0 -0
  1553. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/change-streamer.js +0 -0
  1554. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/forwarder.js +0 -0
  1555. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/replica-monitor.js +0 -0
  1556. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/storer.js +0 -0
  1557. /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/subscriber.js +0 -0
  1558. /package/out/{zero-cache → packages/zero-cache}/src/services/heapz.js +0 -0
  1559. /package/out/{zero-cache → packages/zero-cache}/src/services/http-service.js +0 -0
  1560. /package/out/{zero-cache → packages/zero-cache}/src/services/limiter/sliding-window-limiter.js +0 -0
  1561. /package/out/{zero-cache → packages/zero-cache}/src/services/litestream/commands.js +0 -0
  1562. /package/out/{zero-cache → packages/zero-cache}/src/services/mutagen/error.js +0 -0
  1563. /package/out/{zero-cache → packages/zero-cache}/src/services/mutagen/mutagen.js +0 -0
  1564. /package/out/{zero-cache → packages/zero-cache}/src/services/mutagen/pusher.js +0 -0
  1565. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/change-processor.js +0 -0
  1566. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/incremental-sync.js +0 -0
  1567. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/notifier.js +0 -0
  1568. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/replication-status.js +0 -0
  1569. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/replicator.js +0 -0
  1570. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/reporter/recorder.js +0 -0
  1571. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/reporter/report-schema.js +0 -0
  1572. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/change-log.js +0 -0
  1573. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/column-metadata.js +0 -0
  1574. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/constants.js +0 -0
  1575. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/replication-state.js +0 -0
  1576. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/table-metadata.js +0 -0
  1577. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/write-worker-client.js +0 -0
  1578. /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/write-worker.js +0 -0
  1579. /package/out/{zero-cache → packages/zero-cache}/src/services/runner.js +0 -0
  1580. /package/out/{zero-cache → packages/zero-cache}/src/services/statz.js +0 -0
  1581. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/active-users-gauge.js +0 -0
  1582. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/client-schema.js +0 -0
  1583. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/connection-context-manager.js +0 -0
  1584. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/cvr-store.js +0 -0
  1585. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/cvr.js +0 -0
  1586. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/drain-coordinator.js +0 -0
  1587. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/row-record-cache.js +0 -0
  1588. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/row-set-signature.js +0 -0
  1589. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/schema/cvr.js +0 -0
  1590. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/snapshotter.js +0 -0
  1591. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/tracer.js +0 -0
  1592. /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/ttl-clock.js +0 -0
  1593. /package/out/{zero-cache → packages/zero-cache}/src/types/error-with-level.js +0 -0
  1594. /package/out/{zero-cache → packages/zero-cache}/src/types/http.js +0 -0
  1595. /package/out/{zero-cache → packages/zero-cache}/src/types/lexi-version.js +0 -0
  1596. /package/out/{zero-cache → packages/zero-cache}/src/types/lite.js +0 -0
  1597. /package/out/{zero-cache → packages/zero-cache}/src/types/names.js +0 -0
  1598. /package/out/{zero-cache → packages/zero-cache}/src/types/pg-data-type.js +0 -0
  1599. /package/out/{zero-cache → packages/zero-cache}/src/types/pg-types.js +0 -0
  1600. /package/out/{zero-cache → packages/zero-cache}/src/types/pg-versions.js +0 -0
  1601. /package/out/{zero-cache → packages/zero-cache}/src/types/processes.js +0 -0
  1602. /package/out/{zero-cache → packages/zero-cache}/src/types/profiler.js +0 -0
  1603. /package/out/{zero-cache → packages/zero-cache}/src/types/row-key.js +0 -0
  1604. /package/out/{zero-cache → packages/zero-cache}/src/types/shards.js +0 -0
  1605. /package/out/{zero-cache → packages/zero-cache}/src/types/sql.js +0 -0
  1606. /package/out/{zero-cache → packages/zero-cache}/src/types/state-version.js +0 -0
  1607. /package/out/{zero-cache → packages/zero-cache}/src/types/streams.js +0 -0
  1608. /package/out/{zero-cache → packages/zero-cache}/src/types/strings.js +0 -0
  1609. /package/out/{zero-cache → packages/zero-cache}/src/types/subscription.js +0 -0
  1610. /package/out/{zero-cache → packages/zero-cache}/src/types/timeout.js +0 -0
  1611. /package/out/{zero-cache → packages/zero-cache}/src/types/url-params.js +0 -0
  1612. /package/out/{zero-cache → packages/zero-cache}/src/types/websocket-handoff.js +0 -0
  1613. /package/out/{zero-cache → packages/zero-cache}/src/types/ws.js +0 -0
  1614. /package/out/{zero-cache → packages/zero-cache}/src/workers/connect-params.js +0 -0
  1615. /package/out/{zero-cache → packages/zero-cache}/src/workers/mutator.js +0 -0
  1616. /package/out/{zero-cache → packages/zero-cache}/src/workers/replicator.js +0 -0
  1617. /package/out/{zero-cache → packages/zero-cache}/src/workers/syncer-ws-message-handler.js +0 -0
  1618. /package/out/{zero-cache → packages/zero-cache}/src/workers/syncer.js +0 -0
  1619. /package/out/{zero-client → packages/zero-client}/src/client/active-clients-manager.js +0 -0
  1620. /package/out/{zero-client → packages/zero-client}/src/client/bindings.js +0 -0
  1621. /package/out/{zero-client → packages/zero-client}/src/client/client-error-kind-enum.js +0 -0
  1622. /package/out/{zero-client → packages/zero-client}/src/client/connection.js +0 -0
  1623. /package/out/{zero-client → packages/zero-client}/src/client/context.js +0 -0
  1624. /package/out/{zero-client → packages/zero-client}/src/client/crud.js +0 -0
  1625. /package/out/{zero-client → packages/zero-client}/src/client/delete-clients-manager.js +0 -0
  1626. /package/out/{zero-client → packages/zero-client}/src/client/enable-analytics.js +0 -0
  1627. /package/out/{zero-client → packages/zero-client}/src/client/error.js +0 -0
  1628. /package/out/{zero-client → packages/zero-client}/src/client/http-string.js +0 -0
  1629. /package/out/{zero-client → packages/zero-client}/src/client/inspector/client-group.js +0 -0
  1630. /package/out/{zero-client → packages/zero-client}/src/client/inspector/client.js +0 -0
  1631. /package/out/{zero-client → packages/zero-client}/src/client/inspector/html-dialog-prompt.js +0 -0
  1632. /package/out/{zero-client → packages/zero-client}/src/client/inspector/inspector.js +0 -0
  1633. /package/out/{zero-client → packages/zero-client}/src/client/inspector/lazy-inspector.js +0 -0
  1634. /package/out/{zero-client → packages/zero-client}/src/client/inspector/query.js +0 -0
  1635. /package/out/{zero-client → packages/zero-client}/src/client/ivm-branch.js +0 -0
  1636. /package/out/{zero-client → packages/zero-client}/src/client/keys.js +0 -0
  1637. /package/out/{zero-client → packages/zero-client}/src/client/log-options.js +0 -0
  1638. /package/out/{zero-client → packages/zero-client}/src/client/make-mutate-property.js +0 -0
  1639. /package/out/{zero-client → packages/zero-client}/src/client/make-replicache-mutators.js +0 -0
  1640. /package/out/{zero-client → packages/zero-client}/src/client/metric-name-enum.js +0 -0
  1641. /package/out/{zero-client → packages/zero-client}/src/client/metrics.js +0 -0
  1642. /package/out/{zero-client → packages/zero-client}/src/client/mutation-tracker.js +0 -0
  1643. /package/out/{zero-client → packages/zero-client}/src/client/mutator-proxy.js +0 -0
  1644. /package/out/{zero-client → packages/zero-client}/src/client/options.js +0 -0
  1645. /package/out/{zero-client → packages/zero-client}/src/client/query-manager.js +0 -0
  1646. /package/out/{zero-client → packages/zero-client}/src/client/reload-error-handler.js +0 -0
  1647. /package/out/{zero-client → packages/zero-client}/src/client/server-option.js +0 -0
  1648. /package/out/{zero-client → packages/zero-client}/src/client/zero-poke-handler.js +0 -0
  1649. /package/out/{zero-client → packages/zero-client}/src/client/zero-rep.js +0 -0
  1650. /package/out/{zero-client → packages/zero-client}/src/mod.js +0 -0
  1651. /package/out/{zero-client → packages/zero-client}/src/util/nanoid.js +0 -0
  1652. /package/out/{zero-pg → packages/zero-pg}/src/mod.js +0 -0
  1653. /package/out/{zero-protocol → packages/zero-protocol}/src/application-error.js +0 -0
  1654. /package/out/{zero-protocol → packages/zero-protocol}/src/ast.js +0 -0
  1655. /package/out/{zero-protocol → packages/zero-protocol}/src/client-schema.js +0 -0
  1656. /package/out/{zero-protocol → packages/zero-protocol}/src/close-connection.js +0 -0
  1657. /package/out/{zero-protocol → packages/zero-protocol}/src/custom-queries.js +0 -0
  1658. /package/out/{zero-protocol → packages/zero-protocol}/src/data.js +0 -0
  1659. /package/out/{zero-protocol → packages/zero-protocol}/src/delete-clients.js +0 -0
  1660. /package/out/{zero-protocol → packages/zero-protocol}/src/down.js +0 -0
  1661. /package/out/{zero-protocol → packages/zero-protocol}/src/error-kind-enum.js +0 -0
  1662. /package/out/{zero-protocol → packages/zero-protocol}/src/error-origin-enum.js +0 -0
  1663. /package/out/{zero-protocol → packages/zero-protocol}/src/error-reason-enum.js +0 -0
  1664. /package/out/{zero-protocol → packages/zero-protocol}/src/inspect-down.js +0 -0
  1665. /package/out/{zero-protocol → packages/zero-protocol}/src/mutate-server.js +0 -0
  1666. /package/out/{zero-protocol → packages/zero-protocol}/src/mutation-id.js +0 -0
  1667. /package/out/{zero-protocol → packages/zero-protocol}/src/mutation-type-enum.js +0 -0
  1668. /package/out/{zero-protocol → packages/zero-protocol}/src/mutation.js +0 -0
  1669. /package/out/{zero-protocol → packages/zero-protocol}/src/mutations-patch.js +0 -0
  1670. /package/out/{zero-protocol → packages/zero-protocol}/src/ping.js +0 -0
  1671. /package/out/{zero-protocol → packages/zero-protocol}/src/pong.js +0 -0
  1672. /package/out/{zero-protocol → packages/zero-protocol}/src/primary-key.js +0 -0
  1673. /package/out/{zero-protocol → packages/zero-protocol}/src/protocol-version.js +0 -0
  1674. /package/out/{zero-protocol → packages/zero-protocol}/src/pull.js +0 -0
  1675. /package/out/{zero-protocol → packages/zero-protocol}/src/queries-patch.js +0 -0
  1676. /package/out/{zero-protocol → packages/zero-protocol}/src/query-hash.js +0 -0
  1677. /package/out/{zero-protocol → packages/zero-protocol}/src/query-server.js +0 -0
  1678. /package/out/{zero-protocol → packages/zero-protocol}/src/row-patch.js +0 -0
  1679. /package/out/{zero-protocol → packages/zero-protocol}/src/up.js +0 -0
  1680. /package/out/{zero-protocol → packages/zero-protocol}/src/update-auth.js +0 -0
  1681. /package/out/{zero-protocol → packages/zero-protocol}/src/version.js +0 -0
  1682. /package/out/{zero-react → packages/zero-react}/src/bindings.js +0 -0
  1683. /package/out/{zero-react → packages/zero-react}/src/mod.js +0 -0
  1684. /package/out/{zero-react → packages/zero-react}/src/zero.js +0 -0
  1685. /package/out/{zero-schema → packages/zero-schema}/src/builder/relationship-builder.js +0 -0
  1686. /package/out/{zero-schema → packages/zero-schema}/src/builder/schema-builder.js +0 -0
  1687. /package/out/{zero-schema → packages/zero-schema}/src/builder/table-builder.js +0 -0
  1688. /package/out/{zero-schema → packages/zero-schema}/src/compiled-permissions.js +0 -0
  1689. /package/out/{zero-schema → packages/zero-schema}/src/name-mapper.js +0 -0
  1690. /package/out/{zero-schema → packages/zero-schema}/src/permissions.js +0 -0
  1691. /package/out/{zero-schema → packages/zero-schema}/src/schema-config.js +0 -0
  1692. /package/out/{zero-server → packages/zero-server}/src/adapters/drizzle.js +0 -0
  1693. /package/out/{zero-server → packages/zero-server}/src/adapters/kysely.js +0 -0
  1694. /package/out/{zero-server → packages/zero-server}/src/adapters/postgresjs.js +0 -0
  1695. /package/out/{zero-server → packages/zero-server}/src/adapters/prisma.js +0 -0
  1696. /package/out/{zero-server → packages/zero-server}/src/logging.js +0 -0
  1697. /package/out/{zero-server → packages/zero-server}/src/mod.js +0 -0
  1698. /package/out/{zero-server → packages/zero-server}/src/pg-query-executor.js +0 -0
  1699. /package/out/{zero-server → packages/zero-server}/src/process-mutations.js +0 -0
  1700. /package/out/{zero-server → packages/zero-server}/src/push-processor.js +0 -0
  1701. /package/out/{zero-server → packages/zero-server}/src/queries/process-queries.js +0 -0
  1702. /package/out/{zero-server → packages/zero-server}/src/schema.js +0 -0
  1703. /package/out/{zero-server → packages/zero-server}/src/zql-database.js +0 -0
  1704. /package/out/{zero-solid → packages/zero-solid}/src/bindings.js +0 -0
  1705. /package/out/{zero-solid → packages/zero-solid}/src/mod.js +0 -0
  1706. /package/out/{zero-solid → packages/zero-solid}/src/zero.js +0 -0
  1707. /package/out/{zero-types → packages/zero-types}/src/format.js +0 -0
  1708. /package/out/{zero-types → packages/zero-types}/src/name-mapper.js +0 -0
  1709. /package/out/{zql → packages/zql}/src/builder/filter.js +0 -0
  1710. /package/out/{zql → packages/zql}/src/builder/like.js +0 -0
  1711. /package/out/{zql → packages/zql}/src/error.js +0 -0
  1712. /package/out/{zql → packages/zql}/src/ivm/array-view.js +0 -0
  1713. /package/out/{zql → packages/zql}/src/ivm/cap.js +0 -0
  1714. /package/out/{zql → packages/zql}/src/ivm/change.js +0 -0
  1715. /package/out/{zql → packages/zql}/src/ivm/data.js +0 -0
  1716. /package/out/{zql → packages/zql}/src/ivm/exists.js +0 -0
  1717. /package/out/{zql → packages/zql}/src/ivm/fan-in.js +0 -0
  1718. /package/out/{zql → packages/zql}/src/ivm/fan-out.js +0 -0
  1719. /package/out/{zql → packages/zql}/src/ivm/filter-operators.js +0 -0
  1720. /package/out/{zql → packages/zql}/src/ivm/filter-push.js +0 -0
  1721. /package/out/{zql → packages/zql}/src/ivm/filter.js +0 -0
  1722. /package/out/{zql → packages/zql}/src/ivm/join-utils.js +0 -0
  1723. /package/out/{zql → packages/zql}/src/ivm/join.js +0 -0
  1724. /package/out/{zql → packages/zql}/src/ivm/maybe-split-and-push-edit-change.js +0 -0
  1725. /package/out/{zql → packages/zql}/src/ivm/memory-source.js +0 -0
  1726. /package/out/{zql → packages/zql}/src/ivm/memory-storage.js +0 -0
  1727. /package/out/{zql → packages/zql}/src/ivm/operator.js +0 -0
  1728. /package/out/{zql → packages/zql}/src/ivm/push-accumulated.js +0 -0
  1729. /package/out/{zql → packages/zql}/src/ivm/skip-yields.js +0 -0
  1730. /package/out/{zql → packages/zql}/src/ivm/skip.js +0 -0
  1731. /package/out/{zql → packages/zql}/src/ivm/source.js +0 -0
  1732. /package/out/{zql → packages/zql}/src/ivm/stream.js +0 -0
  1733. /package/out/{zql → packages/zql}/src/ivm/take.js +0 -0
  1734. /package/out/{zql → packages/zql}/src/ivm/union-fan-out.js +0 -0
  1735. /package/out/{zql → packages/zql}/src/ivm/view-apply-change.js +0 -0
  1736. /package/out/{zql → packages/zql}/src/mutate/crud.js +0 -0
  1737. /package/out/{zql → packages/zql}/src/mutate/custom.js +0 -0
  1738. /package/out/{zql → packages/zql}/src/mutate/mutator-registry.js +0 -0
  1739. /package/out/{zql → packages/zql}/src/mutate/mutator.js +0 -0
  1740. /package/out/{zql → packages/zql}/src/planner/planner-builder.js +0 -0
  1741. /package/out/{zql → packages/zql}/src/planner/planner-connection.js +0 -0
  1742. /package/out/{zql → packages/zql}/src/planner/planner-constraint.js +0 -0
  1743. /package/out/{zql → packages/zql}/src/planner/planner-debug.js +0 -0
  1744. /package/out/{zql → packages/zql}/src/planner/planner-fan-in.js +0 -0
  1745. /package/out/{zql → packages/zql}/src/planner/planner-fan-out.js +0 -0
  1746. /package/out/{zql → packages/zql}/src/planner/planner-graph.js +0 -0
  1747. /package/out/{zql → packages/zql}/src/planner/planner-node.js +0 -0
  1748. /package/out/{zql → packages/zql}/src/planner/planner-source.js +0 -0
  1749. /package/out/{zql → packages/zql}/src/planner/planner-terminus.js +0 -0
  1750. /package/out/{zql → packages/zql}/src/query/complete-ordering.js +0 -0
  1751. /package/out/{zql → packages/zql}/src/query/create-builder.js +0 -0
  1752. /package/out/{zql → packages/zql}/src/query/error.js +0 -0
  1753. /package/out/{zql → packages/zql}/src/query/escape-like.js +0 -0
  1754. /package/out/{zql → packages/zql}/src/query/expression.js +0 -0
  1755. /package/out/{zql → packages/zql}/src/query/measure-push-operator.js +0 -0
  1756. /package/out/{zql → packages/zql}/src/query/metrics-delegate.js +0 -0
  1757. /package/out/{zql → packages/zql}/src/query/named.js +0 -0
  1758. /package/out/{zql → packages/zql}/src/query/query-delegate-base.js +0 -0
  1759. /package/out/{zql → packages/zql}/src/query/query-internals.js +0 -0
  1760. /package/out/{zql → packages/zql}/src/query/query-registry.js +0 -0
  1761. /package/out/{zql → packages/zql}/src/query/query.js +0 -0
  1762. /package/out/{zql → packages/zql}/src/query/runnable-query-impl.js +0 -0
  1763. /package/out/{zql → packages/zql}/src/query/static-query.js +0 -0
  1764. /package/out/{zql → packages/zql}/src/query/ttl.js +0 -0
  1765. /package/out/{zql → packages/zql}/src/query/validate-input.js +0 -0
  1766. /package/out/{zqlite → packages/zqlite}/src/database-storage.js +0 -0
  1767. /package/out/{zqlite → packages/zqlite}/src/db.js +0 -0
  1768. /package/out/{zqlite → packages/zqlite}/src/explain-queries.js +0 -0
  1769. /package/out/{zqlite → packages/zqlite}/src/internal/sql-inline.js +0 -0
  1770. /package/out/{zqlite → packages/zqlite}/src/internal/sql.js +0 -0
  1771. /package/out/{zqlite → packages/zqlite}/src/internal/statement-cache.js +0 -0
  1772. /package/out/{zqlite → packages/zqlite}/src/mod.js +0 -0
  1773. /package/out/{zqlite → packages/zqlite}/src/query-builder.js +0 -0
  1774. /package/out/{zqlite → packages/zqlite}/src/query-delegate.js +0 -0
  1775. /package/out/{zqlite → packages/zqlite}/src/resolve-scalar-subqueries.js +0 -0
  1776. /package/out/{zqlite → packages/zqlite}/src/sqlite-cost-model.js +0 -0
  1777. /package/out/{zqlite → packages/zqlite}/src/sqlite-stat-fanout.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin-analyze.js","names":[],"sources":["../../../../../analyze-query/src/bin-analyze.ts"],"sourcesContent":["import '../../shared/src/dotenv.ts';\n\nimport fs from 'node:fs';\nimport {styleText} from 'node:util';\nimport {astToZQL} from '../../ast-to-zql/src/ast-to-zql.ts';\nimport {formatOutput} from '../../ast-to-zql/src/format.ts';\nimport {logLevel, logOptions} from '../../otel/src/log-options.ts';\nimport {colorConsole, createLogContext} from '../../shared/src/logging.ts';\nimport {must} from '../../shared/src/must.ts';\nimport {parseOptions} from '../../shared/src/options.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport {\n appOptions,\n shardOptions,\n ZERO_ENV_VAR_PREFIX,\n zeroOptions,\n} from '../../zero-cache/src/config/zero-config.ts';\nimport {\n computeZqlSpecs,\n mustGetTableSpec,\n} from '../../zero-cache/src/db/lite-tables.ts';\nimport {\n deployPermissionsOptions,\n loadSchemaAndPermissions,\n} from '../../zero-cache/src/scripts/permissions.ts';\nimport {runAst} from '../../zero-cache/src/services/run-ast.ts';\nimport {pgClient} from '../../zero-cache/src/types/pg.ts';\nimport {getShardID, upstreamSchema} from '../../zero-cache/src/types/shards.ts';\nimport type {AnalyzeQueryResult} from '../../zero-protocol/src/analyze-query-result.ts';\nimport {type AST} from '../../zero-protocol/src/ast.ts';\nimport {clientSchemaFrom} from '../../zero-schema/src/builder/schema-builder.ts';\nimport {clientToServer} from '../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport {\n Debug,\n runtimeDebugFlags,\n} from '../../zql/src/builder/debug-delegate.ts';\nimport type {Source} from '../../zql/src/ivm/source.ts';\nimport {QueryDelegateBase} from '../../zql/src/query/query-delegate-base.ts';\nimport {newQuery} from '../../zql/src/query/query-impl.ts';\nimport {asQueryInternals} from '../../zql/src/query/query-internals.ts';\nimport {type PullRow, type Query} from '../../zql/src/query/query.ts';\nimport {Database} from '../../zqlite/src/db.ts';\nimport {explainQueries} from '../../zqlite/src/explain-queries.ts';\nimport {TableSource} from '../../zqlite/src/table-source.ts';\n\nconst options = {\n schema: deployPermissionsOptions.schema,\n replicaFile: {\n ...zeroOptions.replica.file,\n desc: ['File path to the SQLite replica to test queries against.'],\n },\n ast: {\n type: v.string().optional(),\n desc: [\n 'AST for the query to be analyzed. Only one of ast/query/hash should be provided.',\n ],\n },\n query: {\n type: v.string().optional(),\n desc: [\n 'Query to be analyzed in the form of: table.where(...).related(...).etc. ',\n 'Only one of ast/query/hash should be provided.',\n ],\n },\n hash: {\n type: v.string().optional(),\n desc: [\n 'Hash of the query to be analyzed. This is used to look up the query in the database. ',\n 'Only one of ast/query/hash should be provided.',\n 'You should run this script from the directory containing your .env file to reduce the amount of',\n 'configuration required. The .env file should contain the connection URL to the CVR database.',\n ],\n },\n applyPermissions: {\n type: v.boolean().default(false),\n desc: [\n 'Whether to apply permissions (from your schema file) to the provided query.',\n ],\n },\n authData: {\n type: v.string().optional(),\n desc: [\n 'JSON encoded payload of the auth data.',\n 'This will be used to fill permission variables if the \"applyPermissions\" option is set',\n ],\n },\n outputVendedRows: {\n type: v.boolean().default(false),\n desc: [\n 'Whether to output the rows which were read from the replica in order to execute the analyzed query. ',\n 'If the same row is read more than once it will be logged once for each time it was read.',\n ],\n },\n outputSyncedRows: {\n type: v.boolean().default(false),\n desc: [\n 'Whether to output the rows which would be synced to the client for the analyzed query.',\n ],\n },\n cvr: {\n db: {\n type: v.string().optional(),\n desc: [\n 'Connection URL to the CVR database. If using --hash, either this or --upstream-db',\n 'must be specified.',\n ],\n },\n },\n upstream: {\n db: {\n desc: [\n `Connection URL to the \"upstream\" authoritative postgres database. If using --hash, `,\n 'either this or --cvr-db must be specified.',\n ],\n type: v.string().optional(),\n },\n type: zeroOptions.upstream.type,\n },\n app: appOptions,\n shard: shardOptions,\n log: {\n ...logOptions,\n level: logLevel.default('error'),\n },\n};\n\nconst cfg = parseOptions(options, {\n argv: process.argv.slice(2).map(s => s.replaceAll('\\n', ' ')),\n envNamePrefix: ZERO_ENV_VAR_PREFIX,\n description: [\n {\n header: 'analyze-query',\n content: `Analyze a ZQL query and show information about how it runs against a SQLite replica.\n\n analyze-query uses the same environment variables and flags as zero-cache-dev. If run from your development environment, it will pick up your ZERO_REPLICA_FILE, ZERO_SCHEMA_PATH, and other env vars automatically.\n\n If run in another environment (e.g., production) you will have to specify these flags. In particular, you must have a copy of the appropriate Zero schema file to give to the --schema-path flag.`,\n },\n {\n header: 'Examples',\n content: `# In development\n npx analyze-query --query='issue.related(\"comments\").limit(10)'\n npx analyze-query --ast='\\\\{\"table\": \"artist\",\"limit\": 10\\\\}'\n npx analyze-query --hash=1234567890\n\n # In production\n # First copy schema.ts to your production environment, then run:\n npx analyze-query \\\\\n --schema-path='./schema.ts' \\\\\n --replica-file='/path/to/replica.db' \\\\\n --query='issue.related(\"comments\").limit(10)'\n\n npx analyze-query \\\\\n --schema-path='./schema.ts' \\\\\n --replica-file='/path/to/replica.db' \\\\\n --ast='\\\\{\"table\": \"artist\",\"limit\": 10\\\\}'\n\n # cvr-db is required when using the hash option.\n # It is typically the same as your upstream db.\n npx analyze-query \\\\\n --schema-path='./schema.ts' \\\\\n --replica-file='/path/to/replica.db' \\\\\n --cvr-db='postgres://user:pass@host:port/db' \\\\\n --hash=1234567890\n `,\n },\n ],\n});\nconst config = {\n ...cfg,\n cvr: {\n ...cfg.cvr,\n db: cfg.cvr.db ?? cfg.upstream.db,\n },\n};\n\nruntimeDebugFlags.trackRowCountsVended = true;\nruntimeDebugFlags.trackRowsVended = config.outputVendedRows;\n\nconst lc = createLogContext({\n log: config.log,\n});\n\ncolorConsole.warn(\n 'DEPRECATED: `analyze-query` is deprecated. Please migrate to a project-specific analyze command built with `runAnalyzeCLI` from `@rocicorp/zero/analyze`.',\n);\n\nif (!fs.existsSync(config.replicaFile)) {\n colorConsole.error(`Replica file ${config.replicaFile} does not exist`);\n process.exit(1);\n}\nconst db = new Database(lc, config.replicaFile);\n\nconst {schema, permissions} = await loadSchemaAndPermissions(\n config.schema.path,\n);\nconst clientSchema = clientSchemaFrom(schema).clientSchema;\n\nconst sources = new Map<string, TableSource>();\nconst clientToServerMapper = clientToServer(schema.tables);\nconst debug = new Debug();\nconst tableSpecs = computeZqlSpecs(lc, db, {includeBackfillingColumns: false});\n\nclass AnalyzeQueryDelegate extends QueryDelegateBase {\n readonly debug = debug;\n readonly defaultQueryComplete = true;\n\n getSource(serverTableName: string): Source | undefined {\n let source = sources.get(serverTableName);\n if (source) {\n return source;\n }\n const tableSpec = mustGetTableSpec(tableSpecs, serverTableName);\n const {primaryKey} = tableSpec.tableSpec;\n\n source = new TableSource(\n lc,\n config.log,\n db,\n serverTableName,\n tableSpec.zqlSpec,\n primaryKey,\n );\n\n sources.set(serverTableName, source);\n return source;\n }\n}\n\nconst host = new AnalyzeQueryDelegate();\n\nlet result: AnalyzeQueryResult;\n\nif (config.ast) {\n result = await runAst(\n lc,\n clientSchema,\n JSON.parse(config.ast),\n true,\n {\n applyPermissions: config.applyPermissions,\n auth: config.authData\n ? {type: 'jwt' as const, raw: '', decoded: JSON.parse(config.authData)}\n : undefined,\n clientToServerMapper,\n permissions,\n syncedRows: config.outputSyncedRows,\n db,\n tableSpecs,\n host,\n },\n async () => {},\n );\n} else if (config.query) {\n result = await runQuery(config.query);\n} else if (config.hash) {\n result = await runHash(config.hash);\n} else {\n colorConsole.error('No query or AST or hash provided');\n process.exit(1);\n}\n\nfunction runQuery(queryString: string): Promise<AnalyzeQueryResult> {\n const z = {\n query: Object.fromEntries(\n Object.entries(schema.tables).map(([name]) => [\n name,\n newQuery(schema, name),\n ]),\n ),\n };\n\n const f = new Function('z', `return z.query.${queryString};`);\n const q: Query<string, Schema, PullRow<string, Schema>> = f(z);\n\n const ast = asQueryInternals(q).ast;\n return runAst(\n lc,\n clientSchema,\n ast,\n false,\n {\n applyPermissions: config.applyPermissions,\n auth: config.authData\n ? {type: 'jwt' as const, raw: '', decoded: JSON.parse(config.authData)}\n : undefined,\n clientToServerMapper,\n permissions,\n syncedRows: config.outputSyncedRows,\n db,\n tableSpecs,\n host,\n },\n async () => {},\n );\n}\n\nasync function runHash(hash: string) {\n const cvrDB = pgClient(\n lc,\n must(config.cvr.db, 'CVR DB must be provided when using the hash option'),\n 'analyze-query-hash-cvr',\n );\n\n const rows = await cvrDB`select \"clientAST\", \"internal\" from ${cvrDB(\n upstreamSchema(getShardID(config)) + '/cvr',\n )}.\"queries\" where \"queryHash\" = ${must(hash)} limit 1;`;\n await cvrDB.end();\n\n colorConsole.log('ZQL from Hash:');\n const ast = rows[0].clientAST as AST;\n colorConsole.log(await formatOutput(ast.table + astToZQL(ast)));\n\n return runAst(\n lc,\n clientSchema,\n ast,\n true,\n {\n applyPermissions: config.applyPermissions,\n auth: config.authData\n ? {type: 'jwt' as const, raw: '', decoded: JSON.parse(config.authData)}\n : undefined,\n clientToServerMapper,\n permissions,\n syncedRows: config.outputSyncedRows,\n db,\n tableSpecs,\n host,\n },\n async () => {},\n );\n}\n\nif (config.outputSyncedRows) {\n colorConsole.log(styleText(['blue', 'bold'], '=== Synced Rows: ===\\n'));\n for (const [table, rows] of Object.entries(result.syncedRows ?? {})) {\n colorConsole.log(styleText('bold', table + ':'), rows);\n }\n}\n\ncolorConsole.log(styleText(['blue', 'bold'], '=== Query Stats: ===\\n'));\ncolorConsole.log(\n styleText('bold', 'total synced rows:'),\n result.syncedRowCount,\n);\nshowStats();\nif (config.outputVendedRows) {\n colorConsole.log(\n styleText(['blue', 'bold'], '=== JS Row Scan Values: ===\\n'),\n );\n for (const source of sources.values()) {\n colorConsole.log(\n styleText('bold', `${source.tableSchema.name}:`),\n debug.getVendedRows()?.[source.tableSchema.name] ?? {},\n );\n }\n}\n\ncolorConsole.log(\n styleText(['blue', 'bold'], '\\n=== Rows Scanned (by SQLite): ===\\n'),\n);\nconst nvisitCounts = debug.getNVisitCounts();\nlet totalNVisit = 0;\nfor (const [table, queries] of Object.entries(nvisitCounts)) {\n colorConsole.log(styleText('bold', `${table}:`), queries);\n for (const count of Object.values(queries)) {\n totalNVisit += count;\n }\n}\ncolorConsole.log(\n styleText('bold', 'total rows scanned:'),\n colorRowsConsidered(totalNVisit),\n);\n\ncolorConsole.log(styleText(['blue', 'bold'], '\\n\\n=== Query Plans: ===\\n'));\nconst fallbackPlans = explainQueries(debug.getVendedRowCounts() ?? {}, db);\nconst capturedPlans = debug.getSQLitePlans();\nconst plans: Record<string, string[]> = {...fallbackPlans, ...capturedPlans};\nfor (const [query, plan] of Object.entries(plans)) {\n colorConsole.log(styleText('bold', 'query'), query);\n colorConsole.log(plan.map((row, i) => colorPlanRow(row, i)).join('\\n'));\n colorConsole.log('\\n');\n}\n\nfunction showStats() {\n let totalRowsConsidered = 0;\n for (const source of sources.values()) {\n const values = Object.values(\n debug.getVendedRowCounts()?.[source.tableSchema.name] ?? {},\n );\n for (const v of values) {\n totalRowsConsidered += v;\n }\n colorConsole.log(\n styleText('bold', source.tableSchema.name + ' vended:'),\n debug.getVendedRowCounts()?.[source.tableSchema.name] ?? {},\n );\n }\n\n colorConsole.log(\n styleText('bold', 'Rows Read (into JS):'),\n colorRowsConsidered(totalRowsConsidered),\n );\n colorConsole.log(\n styleText('bold', 'time:'),\n colorTime(result.end - result.start),\n 'ms',\n );\n}\n\nfunction colorTime(duration: number) {\n if (duration < 100) {\n return styleText('green', duration.toFixed(2) + 'ms');\n } else if (duration < 1000) {\n return styleText('yellow', duration.toFixed(2) + 'ms');\n }\n return styleText('red', duration.toFixed(2) + 'ms');\n}\n\nfunction colorRowsConsidered(n: number) {\n if (n < 1000) {\n return styleText('green', n.toString());\n } else if (n < 10000) {\n return styleText('yellow', n.toString());\n }\n return styleText('red', n.toString());\n}\n\nfunction colorPlanRow(row: string, i: number) {\n if (row.includes('SCAN')) {\n if (i === 0) {\n return styleText('yellow', row);\n }\n return styleText('red', row);\n }\n return styleText('green', row);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+HA,IAAM,MAAM,aAAa;CAhFvB,QAAQ,yBAAyB;CACjC,aAAa;EACX,GAAG,YAAY,QAAQ;EACvB,MAAM,CAAC,0DAA0D;CACnE;CACA,KAAK;EACH,MAAM,eAAE,OAAO,EAAE,SAAS;EAC1B,MAAM,CACJ,mFACF;CACF;CACA,OAAO;EACL,MAAM,eAAE,OAAO,EAAE,SAAS;EAC1B,MAAM,CACJ,4EACA,gDACF;CACF;CACA,MAAM;EACJ,MAAM,eAAE,OAAO,EAAE,SAAS;EAC1B,MAAM;GACJ;GACA;GACA;GACA;EACF;CACF;CACA,kBAAkB;EAChB,MAAM,eAAE,QAAQ,EAAE,QAAQ,KAAK;EAC/B,MAAM,CACJ,6EACF;CACF;CACA,UAAU;EACR,MAAM,eAAE,OAAO,EAAE,SAAS;EAC1B,MAAM,CACJ,0CACA,0FACF;CACF;CACA,kBAAkB;EAChB,MAAM,eAAE,QAAQ,EAAE,QAAQ,KAAK;EAC/B,MAAM,CACJ,wGACA,0FACF;CACF;CACA,kBAAkB;EAChB,MAAM,eAAE,QAAQ,EAAE,QAAQ,KAAK;EAC/B,MAAM,CACJ,wFACF;CACF;CACA,KAAK,EACH,IAAI;EACF,MAAM,eAAE,OAAO,EAAE,SAAS;EAC1B,MAAM,CACJ,qFACA,oBACF;CACF,EACF;CACA,UAAU;EACR,IAAI;GACF,MAAM,CACJ,uFACA,4CACF;GACA,MAAM,eAAE,OAAO,EAAE,SAAS;EAC5B;EACA,MAAM,YAAY,SAAS;CAC7B;CACA,KAAK;CACL,OAAO;CACP,KAAK;EACH,GAAG;EACH,OAAO,SAAS,QAAQ,OAAO;CACjC;AAGuB,GAAS;CAChC,MAAM,QAAQ,KAAK,MAAM,CAAC,EAAE,KAAI,MAAK,EAAE,WAAW,MAAM,GAAG,CAAC;CAC5D,eAAe;CACf,aAAa,CACX;EACE,QAAQ;EACR,SAAS;;;;;CAKX,GACA;EACE,QAAQ;EACR,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;CAyBX,CACF;AACF,CAAC;AACD,IAAM,SAAS;CACb,GAAG;CACH,KAAK;EACH,GAAG,IAAI;EACP,IAAI,IAAI,IAAI,MAAM,IAAI,SAAS;CACjC;AACF;AAEA,kBAAkB,uBAAuB;AACzC,kBAAkB,kBAAkB,OAAO;AAE3C,IAAM,KAAK,iBAAiB,EAC1B,KAAK,OAAO,IACd,CAAC;AAED,aAAa,KACX,2JACF;AAEA,IAAI,CAAC,GAAG,WAAW,OAAO,WAAW,GAAG;CACtC,aAAa,MAAM,gBAAgB,OAAO,YAAY,gBAAgB;CACtE,QAAQ,KAAK,CAAC;AAChB;AACA,IAAM,KAAK,IAAI,SAAS,IAAI,OAAO,WAAW;AAE9C,IAAM,EAAC,QAAQ,gBAAe,MAAM,yBAClC,OAAO,OAAO,IAChB;AACA,IAAM,eAAe,iBAAiB,MAAM,EAAE;AAE9C,IAAM,0BAAU,IAAI,IAAyB;AAC7C,IAAM,uBAAuB,eAAe,OAAO,MAAM;AACzD,IAAM,QAAQ,IAAI,MAAM;AACxB,IAAM,aAAa,gBAAgB,IAAI,IAAI,EAAC,2BAA2B,MAAK,CAAC;AAE7E,IAAM,uBAAN,cAAmC,kBAAkB;CACnD,QAAiB;CACjB,uBAAgC;CAEhC,UAAU,iBAA6C;EACrD,IAAI,SAAS,QAAQ,IAAI,eAAe;EACxC,IAAI,QACF,OAAO;EAET,MAAM,YAAY,iBAAiB,YAAY,eAAe;EAC9D,MAAM,EAAC,eAAc,UAAU;EAE/B,SAAS,IAAI,YACX,IACA,OAAO,KACP,IACA,iBACA,UAAU,SACV,UACF;EAEA,QAAQ,IAAI,iBAAiB,MAAM;EACnC,OAAO;CACT;AACF;AAEA,IAAM,OAAO,IAAI,qBAAqB;AAEtC,IAAI;AAEJ,IAAI,OAAO,KACT,SAAS,MAAM,OACb,IACA,cACA,KAAK,MAAM,OAAO,GAAG,GACrB,MACA;CACE,kBAAkB,OAAO;CACzB,MAAM,OAAO,WACT;EAAC,MAAM;EAAgB,KAAK;EAAI,SAAS,KAAK,MAAM,OAAO,QAAQ;CAAC,IACpE,KAAA;CACJ;CACA;CACA,YAAY,OAAO;CACnB;CACA;CACA;AACF,GACA,YAAY,CAAC,CACf;KACK,IAAI,OAAO,OAChB,SAAS,MAAM,SAAS,OAAO,KAAK;KAC/B,IAAI,OAAO,MAChB,SAAS,MAAM,QAAQ,OAAO,IAAI;KAC7B;CACL,aAAa,MAAM,kCAAkC;CACrD,QAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,SAAS,aAAkD;CAClE,MAAM,IAAI,EACR,OAAO,OAAO,YACZ,OAAO,QAAQ,OAAO,MAAM,EAAE,KAAK,CAAC,UAAU,CAC5C,MACA,SAAS,QAAQ,IAAI,CACvB,CAAC,CACH,EACF;CAKA,MAAM,MAAM,iBAF8C,IAD5C,SAAS,KAAK,kBAAkB,YAAY,EACA,EAAE,CAE/B,CAAC,EAAE;CAChC,OAAO,OACL,IACA,cACA,KACA,OACA;EACE,kBAAkB,OAAO;EACzB,MAAM,OAAO,WACT;GAAC,MAAM;GAAgB,KAAK;GAAI,SAAS,KAAK,MAAM,OAAO,QAAQ;EAAC,IACpE,KAAA;EACJ;EACA;EACA,YAAY,OAAO;EACnB;EACA;EACA;CACF,GACA,YAAY,CAAC,CACf;AACF;AAEA,eAAe,QAAQ,MAAc;CACnC,MAAM,QAAQ,SACZ,IACA,KAAK,OAAO,IAAI,IAAI,oDAAoD,GACxE,wBACF;CAEA,MAAM,OAAO,MAAM,KAAK,uCAAuC,MAC7D,eAAe,WAAW,MAAM,CAAC,IAAI,MACvC,EAAE,iCAAiC,KAAK,IAAI,EAAE;CAC9C,MAAM,MAAM,IAAI;CAEhB,aAAa,IAAI,gBAAgB;CACjC,MAAM,MAAM,KAAK,GAAG;CACpB,aAAa,IAAI,MAAM,aAAa,IAAI,QAAQ,SAAS,GAAG,CAAC,CAAC;CAE9D,OAAO,OACL,IACA,cACA,KACA,MACA;EACE,kBAAkB,OAAO;EACzB,MAAM,OAAO,WACT;GAAC,MAAM;GAAgB,KAAK;GAAI,SAAS,KAAK,MAAM,OAAO,QAAQ;EAAC,IACpE,KAAA;EACJ;EACA;EACA,YAAY,OAAO;EACnB;EACA;EACA;CACF,GACA,YAAY,CAAC,CACf;AACF;AAEA,IAAI,OAAO,kBAAkB;CAC3B,aAAa,IAAI,UAAU,CAAC,QAAQ,MAAM,GAAG,wBAAwB,CAAC;CACtE,KAAK,MAAM,CAAC,OAAO,SAAS,OAAO,QAAQ,OAAO,cAAc,CAAC,CAAC,GAChE,aAAa,IAAI,UAAU,QAAQ,QAAQ,GAAG,GAAG,IAAI;AAEzD;AAEA,aAAa,IAAI,UAAU,CAAC,QAAQ,MAAM,GAAG,wBAAwB,CAAC;AACtE,aAAa,IACX,UAAU,QAAQ,oBAAoB,GACtC,OAAO,cACT;AACA,UAAU;AACV,IAAI,OAAO,kBAAkB;CAC3B,aAAa,IACX,UAAU,CAAC,QAAQ,MAAM,GAAG,+BAA+B,CAC7D;CACA,KAAK,MAAM,UAAU,QAAQ,OAAO,GAClC,aAAa,IACX,UAAU,QAAQ,GAAG,OAAO,YAAY,KAAK,EAAE,GAC/C,MAAM,cAAc,IAAI,OAAO,YAAY,SAAS,CAAC,CACvD;AAEJ;AAEA,aAAa,IACX,UAAU,CAAC,QAAQ,MAAM,GAAG,uCAAuC,CACrE;AACA,IAAM,eAAe,MAAM,gBAAgB;AAC3C,IAAI,cAAc;AAClB,KAAK,MAAM,CAAC,OAAO,YAAY,OAAO,QAAQ,YAAY,GAAG;CAC3D,aAAa,IAAI,UAAU,QAAQ,GAAG,MAAM,EAAE,GAAG,OAAO;CACxD,KAAK,MAAM,SAAS,OAAO,OAAO,OAAO,GACvC,eAAe;AAEnB;AACA,aAAa,IACX,UAAU,QAAQ,qBAAqB,GACvC,oBAAoB,WAAW,CACjC;AAEA,aAAa,IAAI,UAAU,CAAC,QAAQ,MAAM,GAAG,4BAA4B,CAAC;AAC1E,IAAM,gBAAgB,eAAe,MAAM,mBAAmB,KAAK,CAAC,GAAG,EAAE;AACzE,IAAM,gBAAgB,MAAM,eAAe;AAC3C,IAAM,QAAkC;CAAC,GAAG;CAAe,GAAG;AAAa;AAC3E,KAAK,MAAM,CAAC,OAAO,SAAS,OAAO,QAAQ,KAAK,GAAG;CACjD,aAAa,IAAI,UAAU,QAAQ,OAAO,GAAG,KAAK;CAClD,aAAa,IAAI,KAAK,KAAK,KAAK,MAAM,aAAa,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;CACtE,aAAa,IAAI,IAAI;AACvB;AAEA,SAAS,YAAY;CACnB,IAAI,sBAAsB;CAC1B,KAAK,MAAM,UAAU,QAAQ,OAAO,GAAG;EACrC,MAAM,SAAS,OAAO,OACpB,MAAM,mBAAmB,IAAI,OAAO,YAAY,SAAS,CAAC,CAC5D;EACA,KAAK,MAAM,KAAK,QACd,uBAAuB;EAEzB,aAAa,IACX,UAAU,QAAQ,OAAO,YAAY,OAAO,UAAU,GACtD,MAAM,mBAAmB,IAAI,OAAO,YAAY,SAAS,CAAC,CAC5D;CACF;CAEA,aAAa,IACX,UAAU,QAAQ,sBAAsB,GACxC,oBAAoB,mBAAmB,CACzC;CACA,aAAa,IACX,UAAU,QAAQ,OAAO,GACzB,UAAU,OAAO,MAAM,OAAO,KAAK,GACnC,IACF;AACF;AAEA,SAAS,UAAU,UAAkB;CACnC,IAAI,WAAW,KACb,OAAO,UAAU,SAAS,SAAS,QAAQ,CAAC,IAAI,IAAI;MAC/C,IAAI,WAAW,KACpB,OAAO,UAAU,UAAU,SAAS,QAAQ,CAAC,IAAI,IAAI;CAEvD,OAAO,UAAU,OAAO,SAAS,QAAQ,CAAC,IAAI,IAAI;AACpD;AAEA,SAAS,oBAAoB,GAAW;CACtC,IAAI,IAAI,KACN,OAAO,UAAU,SAAS,EAAE,SAAS,CAAC;MACjC,IAAI,IAAI,KACb,OAAO,UAAU,UAAU,EAAE,SAAS,CAAC;CAEzC,OAAO,UAAU,OAAO,EAAE,SAAS,CAAC;AACtC;AAEA,SAAS,aAAa,KAAa,GAAW;CAC5C,IAAI,IAAI,SAAS,MAAM,GAAG;EACxB,IAAI,MAAM,GACR,OAAO,UAAU,UAAU,GAAG;EAEhC,OAAO,UAAU,OAAO,GAAG;CAC7B;CACA,OAAO,UAAU,SAAS,GAAG;AAC/B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin-transform.js","names":[],"sources":["../../../../../analyze-query/src/bin-transform.ts"],"sourcesContent":["import '../../shared/src/dotenv.ts';\n\nimport {consoleLogSink, LogContext} from '@rocicorp/logger';\nimport {astToZQL} from '../../ast-to-zql/src/ast-to-zql.ts';\nimport {formatOutput} from '../../ast-to-zql/src/format.ts';\nimport {must} from '../../shared/src/must.ts';\nimport {parseOptions} from '../../shared/src/options.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport {transformAndHashQuery} from '../../zero-cache/src/auth/read-authorizer.ts';\nimport {\n appOptions,\n shardOptions,\n ZERO_ENV_VAR_PREFIX,\n} from '../../zero-cache/src/config/zero-config.ts';\nimport {loadSchemaAndPermissions} from '../../zero-cache/src/scripts/permissions.ts';\nimport {pgClient} from '../../zero-cache/src/types/pg.ts';\nimport {getShardID, upstreamSchema} from '../../zero-cache/src/types/shards.ts';\n\nconst options = {\n cvr: {db: v.string()},\n schema: {\n type: v.string().default('./schema.ts'),\n desc: ['Path to the schema file.'],\n },\n app: appOptions,\n shard: shardOptions,\n hash: {\n type: v.string().optional(),\n desc: ['Hash of the query to fetch the AST for.'],\n },\n};\n\nconst config = parseOptions(options, {envNamePrefix: ZERO_ENV_VAR_PREFIX});\n\nconst lc = new LogContext('debug', {}, consoleLogSink);\nconst {permissions} = await loadSchemaAndPermissions(config.schema);\n\nconst cvrDB = pgClient(lc, config.cvr.db, 'analyze-query-transform-cvr');\n\nconst rows =\n await cvrDB`select \"clientAST\", \"internal\" from ${cvrDB(upstreamSchema(getShardID(config)) + '/cvr')}.\"queries\" where \"queryHash\" = ${must(\n config.hash,\n )} limit 1;`;\n\nconst queryAst = transformAndHashQuery(\n lc,\n '',\n rows[0].clientAST,\n permissions,\n {\n type: 'jwt',\n raw: '',\n decoded: {},\n },\n rows[0].internal,\n).transformedAst;\n\n// oxlint-disable no-console\nconsole.log('\\n=== AST ===\\n');\nconsole.log(JSON.stringify(queryAst, null, 2));\nconsole.log('\\n=== ZQL ===\\n');\nconsole.log(await formatOutput(queryAst.table + astToZQL(queryAst)));\n// oxlint-enable no-console\n\nawait cvrDB.end();\n"],"mappings":";;;;;;;;;;;;;AAgCA,IAAM,SAAS,aAAa;CAb1B,KAAK,EAAC,IAAI,eAAE,OAAO,EAAC;CACpB,QAAQ;EACN,MAAM,eAAE,OAAO,EAAE,QAAQ,aAAa;EACtC,MAAM,CAAC,0BAA0B;CACnC;CACA,KAAK;CACL,OAAO;CACP,MAAM;EACJ,MAAM,eAAE,OAAO,EAAE,SAAS;EAC1B,MAAM,CAAC,yCAAyC;CAClD;AAG0B,GAAS,EAAC,eAAe,oBAAmB,CAAC;AAEzE,IAAM,KAAK,IAAI,WAAW,SAAS,CAAC,GAAG,cAAc;AACrD,IAAM,EAAC,gBAAe,MAAM,yBAAyB,OAAO,MAAM;AAElE,IAAM,QAAQ,SAAS,IAAI,OAAO,IAAI,IAAI,6BAA6B;AAEvE,IAAM,OACJ,MAAM,KAAK,uCAAuC,MAAM,eAAe,WAAW,MAAM,CAAC,IAAI,MAAM,EAAE,iCAAiC,KACpI,OAAO,IACT,EAAE;AAEJ,IAAM,WAAW,sBACf,IACA,IACA,KAAK,GAAG,WACR,aACA;CACE,MAAM;CACN,KAAK;CACL,SAAS,CAAC;AACZ,GACA,KAAK,GAAG,QACV,EAAE;AAGF,QAAQ,IAAI,iBAAiB;AAC7B,QAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C,QAAQ,IAAI,iBAAiB;AAC7B,QAAQ,IAAI,MAAM,aAAa,SAAS,QAAQ,SAAS,QAAQ,CAAC,CAAC;AAGnE,MAAM,MAAM,IAAI"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-to-zql.js","names":[],"sources":["../../../../../ast-to-zql/src/ast-to-zql.ts"],"sourcesContent":["import {unreachable} from '../../shared/src/asserts.ts';\nimport {toSorted} from '../../shared/src/iterables.ts';\nimport {must} from '../../shared/src/must.ts';\nimport type {\n AST,\n Condition,\n Conjunction,\n CorrelatedSubquery,\n CorrelatedSubqueryCondition,\n Disjunction,\n LiteralReference,\n Ordering,\n Parameter,\n SimpleCondition,\n ValuePosition,\n} from '../../zero-protocol/src/ast.ts';\nimport {SUBQ_PREFIX} from '../../zero-protocol/src/ast.ts';\n\n/**\n * Converts an AST to the equivalent query builder code.\n * This is useful for debugging and understanding queries.\n *\n * @example\n * ```\n * const ast = query.issue.where('id', '=', 123)[astSymbol];\n * console.log(astToZQL(ast)); // outputs: .where('id', '=', 123)\n * ```\n */\nexport function astToZQL(ast: AST): string {\n let code = '';\n\n // Handle where conditions\n if (ast.where) {\n code += transformCondition(ast.where, '.where', new Set());\n }\n\n // Handle related subqueries\n if (ast.related && ast.related.length > 0) {\n for (const related of ast.related) {\n if (related.hidden) {\n const nestedRelated = related.subquery.related?.[0];\n if (nestedRelated) {\n code += transformRelated(nestedRelated);\n }\n } else {\n code += transformRelated(related);\n }\n }\n }\n\n // Handle orderBy\n if (ast.orderBy && ast.orderBy.length > 0) {\n code += transformOrder(ast.orderBy);\n }\n\n // Handle limit\n if (ast.limit !== undefined) {\n code += `.limit(${ast.limit})`;\n }\n\n // Handle start\n if (ast.start) {\n const {row, exclusive} = ast.start;\n code += `.start(${JSON.stringify(row)}${\n exclusive ? '' : ', { inclusive: true }'\n })`;\n }\n\n return code;\n}\n\ntype Args = Set<string>;\n\ntype Prefix = '.where' | 'cmp';\n\nfunction transformCondition(\n condition: Condition,\n prefix: Prefix,\n args: Args,\n): string {\n switch (condition.type) {\n case 'simple':\n return transformSimpleCondition(condition, prefix);\n case 'and':\n case 'or':\n return transformLogicalCondition(condition, prefix, args);\n case 'correlatedSubquery':\n return transformExistsCondition(condition, prefix, args);\n default:\n unreachable(condition);\n }\n}\n\nfunction transformSimpleCondition(\n condition: SimpleCondition,\n prefix: Prefix,\n): string {\n const {left, op, right} = condition;\n\n const leftCode = transformValuePosition(left);\n const rightCode = transformValuePosition(right);\n\n // Handle the shorthand form for equals\n if (op === '=') {\n return `${prefix}(${leftCode}, ${rightCode})`;\n }\n\n return `${prefix}(${leftCode}, '${op}', ${rightCode})`;\n}\n\nfunction transformLogicalCondition(\n condition: Conjunction | Disjunction,\n prefix: Prefix,\n args: Args,\n): string {\n const {type, conditions} = condition;\n\n // For single condition, no need for logical operator\n if (conditions.length === 1) {\n return transformCondition(conditions[0], prefix, args);\n }\n\n // Generate multiple where calls for top-level AND conditions\n if (type === 'and') {\n const parts = conditions.map(c => transformCondition(c, prefix, args));\n // Simply concatenate the where conditions\n if (prefix === '.where') {\n return parts.join('');\n }\n args.add('and');\n return 'and(' + parts.join(', ') + ')';\n }\n\n args = new Set<string>();\n\n // Handle nested conditions with a callback for OR conditions and nested ANDs/ORs\n const conditionsCode = conditions\n .map(c => transformCondition(c, 'cmp', args))\n .join(', ');\n\n args.add('cmp');\n args.add(type);\n const argsCode = toSorted(args).join(', ');\n\n return `.where(({${argsCode}}) => ${type}(${conditionsCode}))`;\n}\n\nfunction transformExistsCondition(\n condition: CorrelatedSubqueryCondition,\n prefix: '.where' | 'cmp',\n args: Set<string>,\n): string {\n const {related, op} = condition;\n const relationship = extractRelationshipName(related);\n\n const nextSubquery = getNextExistsSubquery(related);\n\n // Check if subquery has additional properties\n const hasSubQueryProps =\n nextSubquery.where ||\n (nextSubquery.related && nextSubquery.related.length > 0) ||\n nextSubquery.orderBy ||\n nextSubquery.limit;\n\n // Build options string for flip and scalar\n const optionParts: string[] = [];\n if (condition.flip !== undefined) {\n optionParts.push(`flip: ${condition.flip}`);\n }\n if (condition.scalar !== undefined) {\n optionParts.push(`scalar: ${condition.scalar}`);\n }\n const optionsStr =\n optionParts.length > 0 ? `, {${optionParts.join(', ')}}` : '';\n\n if (op === 'EXISTS') {\n if (!hasSubQueryProps) {\n if (prefix === '.where') {\n return `.whereExists('${relationship}'${optionsStr})`;\n }\n args.add('exists');\n return `exists('${relationship}'${optionsStr})`;\n }\n\n if (prefix === '.where') {\n return `.whereExists('${relationship}', q => q${astToZQL(nextSubquery)}${optionsStr})`;\n }\n prefix satisfies 'cmp';\n args.add('exists');\n return `exists('${relationship}', q => q${astToZQL(nextSubquery)}${optionsStr})`;\n }\n\n op satisfies 'NOT EXISTS';\n\n if (hasSubQueryProps) {\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}', q => q${astToZQL(\n nextSubquery,\n )}${optionsStr})))`;\n }\n prefix satisfies 'cmp';\n args.add('not');\n args.add('exists');\n return `not(exists('${relationship}', q => q${astToZQL(nextSubquery)}${optionsStr}))`;\n }\n\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}'${optionsStr})))`;\n }\n args.add('not');\n args.add('exists');\n\n return `not(exists('${relationship}'${optionsStr})))`;\n}\n\n// If the `exists` is applied against a junction edge, both hops will have the same alias and both hops will be exists conditions.\nfunction getNextExistsSubquery(related: CorrelatedSubquery): AST {\n if (\n related.subquery.where?.type === 'correlatedSubquery' &&\n related.subquery.where.related.subquery.alias?.includes(\n SUBQ_PREFIX + 'zhidden_',\n )\n ) {\n return getNextExistsSubquery(related.subquery.where.related);\n }\n\n return related.subquery;\n}\n\nfunction extractRelationshipName(related: CorrelatedSubquery): string {\n const alias = must(related.subquery.alias);\n return alias.startsWith(SUBQ_PREFIX)\n ? alias.substring(SUBQ_PREFIX.length)\n : alias;\n}\n\nfunction transformRelated(related: CorrelatedSubquery): string {\n const {alias} = related.subquery;\n if (!alias) return '';\n\n const relationship = alias;\n let code = `.related('${relationship}'`;\n\n // If the subquery has additional filters or configurations\n if (\n related.subquery.where ||\n (related.subquery.related && related.subquery.related.length > 0) ||\n related.subquery.orderBy ||\n related.subquery.limit\n ) {\n code += ', q => q' + astToZQL(related.subquery);\n }\n\n code += ')';\n return code;\n}\n\nfunction transformOrder(orderBy: Ordering): string {\n let code = '';\n for (const [field, direction] of orderBy) {\n code += `.orderBy('${field}', '${direction}')`;\n }\n return code;\n}\n\nfunction transformValuePosition(value: ValuePosition): string {\n switch (value.type) {\n case 'literal':\n return transformLiteral(value);\n case 'column':\n return `'${value.name}'`;\n case 'static':\n return transformParameter(value);\n default:\n unreachable(value);\n }\n}\n\nfunction transformLiteral(literal: LiteralReference): string {\n if (literal.value === null) {\n return 'null';\n }\n if (Array.isArray(literal.value)) {\n return JSON.stringify(literal.value);\n }\n if (typeof literal.value === 'string') {\n return `'${literal.value.replace(/'/g, \"\\\\'\")}'`;\n }\n return String(literal.value);\n}\n\nfunction transformParameter(param: Parameter): string {\n const fieldStr = Array.isArray(param.field)\n ? `[${param.field.map(f => `'${f}'`).join(', ')}]`\n : `'${param.field}'`;\n\n return `authParam(${fieldStr})`;\n}\n"],"mappings":";;;;;;;;;;;;;;;AA4BA,SAAgB,SAAS,KAAkB;CACzC,IAAI,OAAO;CAGX,IAAI,IAAI,OACN,QAAQ,mBAAmB,IAAI,OAAO,0BAAU,IAAI,IAAI,CAAC;CAI3D,IAAI,IAAI,WAAW,IAAI,QAAQ,SAAS,GACtC,KAAK,MAAM,WAAW,IAAI,SACxB,IAAI,QAAQ,QAAQ;EAClB,MAAM,gBAAgB,QAAQ,SAAS,UAAU;EACjD,IAAI,eACF,QAAQ,iBAAiB,aAAa;CAE1C,OACE,QAAQ,iBAAiB,OAAO;CAMtC,IAAI,IAAI,WAAW,IAAI,QAAQ,SAAS,GACtC,QAAQ,eAAe,IAAI,OAAO;CAIpC,IAAI,IAAI,UAAU,KAAA,GAChB,QAAQ,UAAU,IAAI,MAAM;CAI9B,IAAI,IAAI,OAAO;EACb,MAAM,EAAC,KAAK,cAAa,IAAI;EAC7B,QAAQ,UAAU,KAAK,UAAU,GAAG,IAClC,YAAY,KAAK,wBAClB;CACH;CAEA,OAAO;AACT;AAMA,SAAS,mBACP,WACA,QACA,MACQ;CACR,QAAQ,UAAU,MAAlB;EACE,KAAK,UACH,OAAO,yBAAyB,WAAW,MAAM;EACnD,KAAK;EACL,KAAK,MACH,OAAO,0BAA0B,WAAW,QAAQ,IAAI;EAC1D,KAAK,sBACH,OAAO,yBAAyB,WAAW,QAAQ,IAAI;EACzD,SACE,YAAY,SAAS;CACzB;AACF;AAEA,SAAS,yBACP,WACA,QACQ;CACR,MAAM,EAAC,MAAM,IAAI,UAAS;CAE1B,MAAM,WAAW,uBAAuB,IAAI;CAC5C,MAAM,YAAY,uBAAuB,KAAK;CAG9C,IAAI,OAAO,KACT,OAAO,GAAG,OAAO,GAAG,SAAS,IAAI,UAAU;CAG7C,OAAO,GAAG,OAAO,GAAG,SAAS,KAAK,GAAG,KAAK,UAAU;AACtD;AAEA,SAAS,0BACP,WACA,QACA,MACQ;CACR,MAAM,EAAC,MAAM,eAAc;CAG3B,IAAI,WAAW,WAAW,GACxB,OAAO,mBAAmB,WAAW,IAAI,QAAQ,IAAI;CAIvD,IAAI,SAAS,OAAO;EAClB,MAAM,QAAQ,WAAW,KAAI,MAAK,mBAAmB,GAAG,QAAQ,IAAI,CAAC;EAErE,IAAI,WAAW,UACb,OAAO,MAAM,KAAK,EAAE;EAEtB,KAAK,IAAI,KAAK;EACd,OAAO,SAAS,MAAM,KAAK,IAAI,IAAI;CACrC;CAEA,uBAAO,IAAI,IAAY;CAGvB,MAAM,iBAAiB,WACpB,KAAI,MAAK,mBAAmB,GAAG,OAAO,IAAI,CAAC,EAC3C,KAAK,IAAI;CAEZ,KAAK,IAAI,KAAK;CACd,KAAK,IAAI,IAAI;CAGb,OAAO,YAFU,SAAS,IAAI,EAAE,KAAK,IAElB,EAAS,QAAQ,KAAK,GAAG,eAAe;AAC7D;AAEA,SAAS,yBACP,WACA,QACA,MACQ;CACR,MAAM,EAAC,SAAS,OAAM;CACtB,MAAM,eAAe,wBAAwB,OAAO;CAEpD,MAAM,eAAe,sBAAsB,OAAO;CAGlD,MAAM,mBACJ,aAAa,SACZ,aAAa,WAAW,aAAa,QAAQ,SAAS,KACvD,aAAa,WACb,aAAa;CAGf,MAAM,cAAwB,CAAC;CAC/B,IAAI,UAAU,SAAS,KAAA,GACrB,YAAY,KAAK,SAAS,UAAU,MAAM;CAE5C,IAAI,UAAU,WAAW,KAAA,GACvB,YAAY,KAAK,WAAW,UAAU,QAAQ;CAEhD,MAAM,aACJ,YAAY,SAAS,IAAI,MAAM,YAAY,KAAK,IAAI,EAAE,KAAK;CAE7D,IAAI,OAAO,UAAU;EACnB,IAAI,CAAC,kBAAkB;GACrB,IAAI,WAAW,UACb,OAAO,iBAAiB,aAAa,GAAG,WAAW;GAErD,KAAK,IAAI,QAAQ;GACjB,OAAO,WAAW,aAAa,GAAG,WAAW;EAC/C;EAEA,IAAI,WAAW,UACb,OAAO,iBAAiB,aAAa,WAAW,SAAS,YAAY,IAAI,WAAW;EAGtF,KAAK,IAAI,QAAQ;EACjB,OAAO,WAAW,aAAa,WAAW,SAAS,YAAY,IAAI,WAAW;CAChF;CAIA,IAAI,kBAAkB;EACpB,IAAI,WAAW,UACb,OAAO,yCAAyC,aAAa,WAAW,SACtE,YACF,IAAI,WAAW;EAGjB,KAAK,IAAI,KAAK;EACd,KAAK,IAAI,QAAQ;EACjB,OAAO,eAAe,aAAa,WAAW,SAAS,YAAY,IAAI,WAAW;CACpF;CAEA,IAAI,WAAW,UACb,OAAO,yCAAyC,aAAa,GAAG,WAAW;CAE7E,KAAK,IAAI,KAAK;CACd,KAAK,IAAI,QAAQ;CAEjB,OAAO,eAAe,aAAa,GAAG,WAAW;AACnD;AAGA,SAAS,sBAAsB,SAAkC;CAC/D,IACE,QAAQ,SAAS,OAAO,SAAS,wBACjC,QAAQ,SAAS,MAAM,QAAQ,SAAS,OAAO,SAAA,gBAE/C,GAEA,OAAO,sBAAsB,QAAQ,SAAS,MAAM,OAAO;CAG7D,OAAO,QAAQ;AACjB;AAEA,SAAS,wBAAwB,SAAqC;CACpE,MAAM,QAAQ,KAAK,QAAQ,SAAS,KAAK;CACzC,OAAO,MAAM,WAAA,QAAsB,IAC/B,MAAM,UAAU,YAAY,MAAM,IAClC;AACN;AAEA,SAAS,iBAAiB,SAAqC;CAC7D,MAAM,EAAC,UAAS,QAAQ;CACxB,IAAI,CAAC,OAAO,OAAO;CAGnB,IAAI,OAAO,aAAa,MAAa;CAGrC,IACE,QAAQ,SAAS,SAChB,QAAQ,SAAS,WAAW,QAAQ,SAAS,QAAQ,SAAS,KAC/D,QAAQ,SAAS,WACjB,QAAQ,SAAS,OAEjB,QAAQ,aAAa,SAAS,QAAQ,QAAQ;CAGhD,QAAQ;CACR,OAAO;AACT;AAEA,SAAS,eAAe,SAA2B;CACjD,IAAI,OAAO;CACX,KAAK,MAAM,CAAC,OAAO,cAAc,SAC/B,QAAQ,aAAa,MAAM,MAAM,UAAU;CAE7C,OAAO;AACT;AAEA,SAAS,uBAAuB,OAA8B;CAC5D,QAAQ,MAAM,MAAd;EACE,KAAK,WACH,OAAO,iBAAiB,KAAK;EAC/B,KAAK,UACH,OAAO,IAAI,MAAM,KAAK;EACxB,KAAK,UACH,OAAO,mBAAmB,KAAK;EACjC,SACE,YAAY,KAAK;CACrB;AACF;AAEA,SAAS,iBAAiB,SAAmC;CAC3D,IAAI,QAAQ,UAAU,MACpB,OAAO;CAET,IAAI,MAAM,QAAQ,QAAQ,KAAK,GAC7B,OAAO,KAAK,UAAU,QAAQ,KAAK;CAErC,IAAI,OAAO,QAAQ,UAAU,UAC3B,OAAO,IAAI,QAAQ,MAAM,QAAQ,MAAM,KAAK,EAAE;CAEhD,OAAO,OAAO,QAAQ,KAAK;AAC7B;AAEA,SAAS,mBAAmB,OAA0B;CAKpD,OAAO,aAJU,MAAM,QAAQ,MAAM,KAAK,IACtC,IAAI,MAAM,MAAM,KAAI,MAAK,IAAI,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,KAC9C,IAAI,MAAM,MAAM,GAES;AAC/B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","names":[],"sources":["../../../../../ast-to-zql/src/bin.ts"],"sourcesContent":["/* oxlint-disable no-console */\nimport {readFile} from 'node:fs/promises';\nimport process from 'node:process';\nimport {createInterface} from 'node:readline';\nimport {parseOptions} from '../../shared/src/options.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport {loadSchemaAndPermissions} from '../../zero-cache/src/scripts/permissions.ts';\nimport {mapAST} from '../../zero-protocol/src/ast.ts';\nimport {serverToClient} from '../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport {astToZQL} from './ast-to-zql.ts';\nimport {formatOutput} from './format.ts';\n\nconst options = {\n schema: {\n type: v.string().optional(),\n desc: [\n 'Path to the schema file. Use this to re-map the AST to client names.',\n ],\n },\n};\n\nconst config = parseOptions(options);\n\nlet schema: Schema | undefined;\nif (config.schema) {\n schema = (await loadSchemaAndPermissions(config.schema)).schema;\n}\n\nfunction isStdinPiped(): boolean {\n return !process.stdin.isTTY;\n}\n\nfunction readFromStdin(): Promise<string> {\n return new Promise(resolve => {\n let data = '';\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout,\n terminal: false,\n });\n\n rl.on('line', line => {\n data += line + '\\n';\n });\n\n rl.on('close', () => {\n resolve(data);\n });\n });\n}\n\nasync function main(): Promise<void> {\n try {\n let input: string;\n\n if (isStdinPiped()) {\n input = await readFromStdin();\n } else if (process.argv.length > 2) {\n const filePath = process.argv[2];\n input = await readFile(filePath, 'utf-8');\n } else {\n console.error('Error: No input provided.');\n console.error('Usage:');\n console.error(` cat ast.json | npx ast-to-zql`);\n console.error(` npx ast-to-zql ast.json`);\n process.exit(1);\n }\n\n let ast = JSON.parse(input);\n if (schema) {\n const mapper = serverToClient(schema.tables);\n ast = mapAST(ast, mapper);\n }\n\n const zql = astToZQL(ast);\n const code = `query.${ast.table}${zql}`;\n\n console.log(await formatOutput(code));\n } catch (error) {\n console.error('Error processing input:', error);\n process.exit(1);\n }\n}\n\nawait main();\n"],"mappings":";;;;;;;;;;;AAsBA,IAAM,SAAS,aAAa,EAR1B,QAAQ;CACN,MAAM,eAAE,OAAO,EAAE,SAAS;CAC1B,MAAM,CACJ,sEACF;AACF,EAG0B,CAAO;AAEnC,IAAI;AACJ,IAAI,OAAO,QACT,UAAU,MAAM,yBAAyB,OAAO,MAAM,GAAG;AAG3D,SAAS,eAAwB;CAC/B,OAAO,CAAC,QAAQ,MAAM;AACxB;AAEA,SAAS,gBAAiC;CACxC,OAAO,IAAI,SAAQ,YAAW;EAC5B,IAAI,OAAO;EACX,MAAM,KAAK,gBAAgB;GACzB,OAAO,QAAQ;GACf,QAAQ,QAAQ;GAChB,UAAU;EACZ,CAAC;EAED,GAAG,GAAG,SAAQ,SAAQ;GACpB,QAAQ,OAAO;EACjB,CAAC;EAED,GAAG,GAAG,eAAe;GACnB,QAAQ,IAAI;EACd,CAAC;CACH,CAAC;AACH;AAEA,eAAe,OAAsB;CACnC,IAAI;EACF,IAAI;EAEJ,IAAI,aAAa,GACf,QAAQ,MAAM,cAAc;OACvB,IAAI,QAAQ,KAAK,SAAS,GAAG;GAClC,MAAM,WAAW,QAAQ,KAAK;GAC9B,QAAQ,MAAM,SAAS,UAAU,OAAO;EAC1C,OAAO;GACL,QAAQ,MAAM,2BAA2B;GACzC,QAAQ,MAAM,QAAQ;GACtB,QAAQ,MAAM,iCAAiC;GAC/C,QAAQ,MAAM,2BAA2B;GACzC,QAAQ,KAAK,CAAC;EAChB;EAEA,IAAI,MAAM,KAAK,MAAM,KAAK;EAC1B,IAAI,QAAQ;GACV,MAAM,SAAS,eAAe,OAAO,MAAM;GAC3C,MAAM,OAAO,KAAK,MAAM;EAC1B;EAEA,MAAM,MAAM,SAAS,GAAG;EACxB,MAAM,OAAO,SAAS,IAAI,QAAQ;EAElC,QAAQ,IAAI,MAAM,aAAa,IAAI,CAAC;CACtC,SAAS,OAAO;EACd,QAAQ,MAAM,2BAA2B,KAAK;EAC9C,QAAQ,KAAK,CAAC;CAChB;AACF;AAEA,MAAM,KAAK"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","names":[],"sources":["../../../../../ast-to-zql/src/format.ts"],"sourcesContent":["import {format} from 'oxfmt';\n\nexport async function formatOutput(content: string): Promise<string> {\n try {\n const result = await format('output.ts', content, {\n semi: false,\n printWidth: 80,\n });\n return result.code;\n } catch (error) {\n // oxlint-disable-next-line no-console\n console.warn('Warning: Unable to format output with oxfmt:', error);\n return content;\n }\n}\n"],"mappings":";;AAEA,eAAsB,aAAa,SAAkC;CACnE,IAAI;EAKF,QAAO,MAJc,OAAO,aAAa,SAAS;GAChD,MAAM;GACN,YAAY;EACd,CAAC,GACa;CAChB,SAAS,OAAO;EAEd,QAAQ,KAAK,gDAAgD,KAAK;EAClE,OAAO;CACT;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datadog-log-sink.js","names":["#apiKey","#source","#service","#host","#version","#interval","#baseURL","#messages","#startTimer","#timerID","#flushLock"],"sources":["../../../../../datadog/src/datadog-log-sink.ts"],"sourcesContent":["import {Lock} from '@rocicorp/lock';\nimport type {Context, LogLevel, LogSink} from '@rocicorp/logger';\n\nexport interface DatadogLogSinkOptions {\n apiKey?: string | undefined;\n source?: string | undefined;\n service?: string | undefined;\n host?: string | undefined;\n version?: string | undefined;\n interval?: number | undefined;\n baseURL?: URL | undefined;\n}\n\nconst DD_BASE_URL = new URL(\n 'https://http-intake.logs.datadoghq.com/api/v2/logs',\n);\n\n// https://docs.datadoghq.com/api/latest/logs/\nexport const MAX_LOG_ENTRIES_PER_FLUSH = 1000;\nexport const FORCE_FLUSH_THRESHOLD = 250;\nconst MAX_ENTRY_BYTES = 5 * 1024 * 1024;\nconst MAX_MESSAGE_RETRIES = 2;\n\n// Conservative limit that assumes all chars are encoded as 4 UTF-8 bytes.\n// This makes the actual limit somewhere closer to 1.25 MB, which is still\n// a reasonable amount of log data to send per request.\nexport const MAX_ENTRY_CHARS = MAX_ENTRY_BYTES / 4;\n\nexport class DatadogLogSink implements LogSink {\n #messages: Message[] = [];\n readonly #apiKey: string | undefined;\n readonly #source: string | undefined;\n readonly #service: string | undefined;\n readonly #host: string | undefined;\n readonly #version: string | undefined;\n readonly #interval: number;\n readonly #baseURL: string;\n #timerID: ReturnType<typeof setTimeout> | 0 = 0;\n #flushLock = new Lock();\n\n constructor(options: DatadogLogSinkOptions) {\n const {\n apiKey,\n source,\n service,\n host,\n version,\n interval = 5_000,\n baseURL: baseUrl = DD_BASE_URL,\n } = options;\n\n this.#apiKey = apiKey;\n this.#source = source;\n this.#service = service;\n this.#host = host;\n this.#version = version;\n this.#interval = interval;\n this.#baseURL = baseUrl.toString();\n }\n\n log(level: LogLevel, context: Context | undefined, ...args: unknown[]): void {\n this.#messages.push(makeMessage(args, context, level));\n if (level === 'error' || this.#messages.length === FORCE_FLUSH_THRESHOLD) {\n // Do not await. Later calls to flush will await as needed.\n void this.flush();\n } else {\n this.#startTimer();\n }\n }\n #startTimer() {\n if (this.#timerID) {\n return;\n }\n\n this.#timerID = setTimeout(() => {\n this.#timerID = 0;\n\n void this.flush();\n }, this.#interval);\n }\n\n flush(): Promise<void> {\n return this.#flushLock.withLock(async () => {\n const {length} = this.#messages;\n if (length === 0) {\n return;\n }\n do {\n const flushTime = Date.now();\n const stringified = [];\n let totalBytes = 0;\n\n for (const m of this.#messages) {\n // As a small perf optimization, we directly mutate\n // the message rather than making a shallow copy.\n // The LOG_SINK_FLUSH_DELAY_ATTRIBUTE will be clobbered by\n // the next flush if this flush fails (which is the desired behavior).\n m.flushDelayMs = flushTime - m.date;\n\n let str = JSON.stringify(m);\n if (str.length > MAX_ENTRY_CHARS) {\n // A single message above the total payload limit will otherwise halt\n // log flushing progress. Drop and replace with a message indicating so.\n m.message = `[Dropped message of length ${str.length}]`;\n str = JSON.stringify(m);\n }\n // Calculate the totalBytes with the newline characters between messages.\n if (str.length + totalBytes + stringified.length > MAX_ENTRY_CHARS) {\n break;\n }\n totalBytes += str.length;\n stringified.push(str);\n\n if (stringified.length === MAX_LOG_ENTRIES_PER_FLUSH) {\n break;\n }\n }\n\n const body = stringified.join('\\n');\n const url = new URL(this.#baseURL);\n if (this.#apiKey !== undefined) {\n url.searchParams.set('dd-api-key', this.#apiKey);\n }\n\n if (this.#source) {\n // Both need to be set for server to treat us as the browser SDK for\n // value 'browser'.\n url.searchParams.set('ddsource', this.#source);\n url.searchParams.set('dd-evp-origin', this.#source);\n }\n\n if (this.#service) {\n url.searchParams.set('service', this.#service);\n }\n\n if (this.#host) {\n url.searchParams.set('host', this.#host);\n }\n\n if (this.#version) {\n url.searchParams.set('ddtags', `version:${this.#version}`);\n }\n\n let ok = false;\n try {\n const response = await fetch(url.toString(), {\n method: 'POST',\n body,\n keepalive: true,\n } as RequestInit);\n\n ok = response.ok;\n if (!ok) {\n // Log to console so that we might catch this in `wrangler tail`.\n // oxlint-disable-next-line no-console\n console.error(\n 'response',\n response.status,\n response.statusText,\n await response.text,\n );\n }\n } catch (e) {\n // Log to console so that we might catch this in `wrangler tail`.\n // oxlint-disable-next-line no-console\n console.error('Log flush to datadog failed', e);\n }\n\n if (ok) {\n // Remove messages that were successfully flushed.\n this.#messages.splice(0, stringified.length);\n } else {\n let numWithTooManyRetries = 0;\n for (let i = 0; i < stringified.length; i++) {\n const m = this.#messages[i];\n m.flushRetryCount = (m.flushRetryCount ?? 0) + 1;\n if (m.flushRetryCount > MAX_MESSAGE_RETRIES) {\n numWithTooManyRetries++;\n }\n }\n if (numWithTooManyRetries > 0) {\n // oxlint-disable-next-line no-console\n console.error(\n `Dropping ${numWithTooManyRetries} datadog log messages which failed to send ${\n MAX_MESSAGE_RETRIES + 1\n } times.`,\n );\n // Remove messages that have failed too many times.\n this.#messages.splice(0, numWithTooManyRetries);\n }\n }\n } while (this.#messages.length >= FORCE_FLUSH_THRESHOLD);\n // If any messages left at this point schedule another flush.\n if (this.#messages.length) {\n this.#startTimer();\n }\n });\n }\n}\n\ntype Message = Context & {\n status: LogLevel;\n date: number;\n message: unknown;\n error?: {origin: 'logger'};\n flushDelayMs?: number;\n flushRetryCount?: number;\n};\n\nfunction flattenMessage(message: unknown): unknown {\n if (Array.isArray(message) && message.length === 1) {\n return flattenMessage(message[0]);\n }\n return message;\n}\n\nfunction convertError(e: Error): {\n name: string;\n message: string;\n stack: string | undefined;\n} {\n return {\n name: e.name,\n message: e.message,\n stack: e.stack,\n };\n}\n\nfunction convertErrors(message: unknown): unknown {\n if (message instanceof Error) {\n return convertError(message);\n }\n if (message instanceof Array) {\n const convertedMessage: unknown[] = [];\n for (const item of message) {\n if (item instanceof Error) {\n convertedMessage.push(convertError(item));\n } else {\n convertedMessage.push(item);\n }\n }\n return convertedMessage;\n }\n return message;\n}\n\nconst LOG_SINK_FLUSH_RETRY_COUNT = 'flushRetryCount';\nconst LOG_SINK_FLUSH_DELAY_ATTRIBUTE = 'flushDelayMs';\n// This code assumes that no context keys will start with\n// @DATADOG_RESERVED_ (a fairly safe assumption).\nconst RESERVED_KEY_PREFIX = '@DATADOG_RESERVED_';\n// See https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#reserved-attributes\n// Note 'msg' and 'date' are not documented.\n// We should avoid using these as context keys. We escape them here\n// because otherwise the impact on the data dog log UI is very confusing\n// (e.g. using 'msg' as a context key results, in the context value\n// replacing the log message.)\nconst RESERVED_KEYS: ReadonlyArray<string> = [\n 'host',\n 'source',\n 'status',\n 'service',\n 'version',\n 'trace_id',\n 'message',\n 'msg', // alias for message\n 'date',\n // The following are attributes reserved by the DataDogLogSink\n // itself (as opposed to DataDog), to report on its own behavior.\n LOG_SINK_FLUSH_DELAY_ATTRIBUTE,\n LOG_SINK_FLUSH_RETRY_COUNT,\n];\n\nfunction makeMessage(\n message: unknown,\n context: Context | undefined,\n logLevel: LogLevel,\n): Message {\n let safeContext = undefined;\n if (context !== undefined) {\n for (const reservedKey of RESERVED_KEYS) {\n if (Object.hasOwn(context, reservedKey)) {\n if (safeContext === undefined) {\n safeContext = {...context};\n }\n safeContext[RESERVED_KEY_PREFIX + reservedKey] =\n safeContext[reservedKey];\n delete safeContext[reservedKey];\n }\n }\n }\n const msg: Message = {\n ...(safeContext ?? context),\n date: Date.now(),\n message: convertErrors(flattenMessage(message)),\n status: logLevel,\n };\n if (logLevel === 'error') {\n msg.error = {origin: 'logger'};\n }\n return msg;\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enabled.js","names":[],"sources":["../../../../../otel/src/enabled.ts"],"sourcesContent":["export function otelEnabled() {\n return otelMetricsEnabled() || otelTracesEnabled() || otelLogsEnabled();\n}\n\nexport function otelMetricsEnabled() {\n return (\n process.env.OTEL_EXPORTER_OTLP_ENDPOINT ||\n process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT ||\n process.env.OTEL_METRICS_EXPORTER\n );\n}\n\nexport function otelLogsEnabled() {\n return (\n process.env.OTEL_EXPORTER_OTLP_ENDPOINT ||\n process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT ||\n process.env.OTEL_LOGS_EXPORTER\n );\n}\n\nexport function otelTracesEnabled() {\n return (\n process.env.OTEL_EXPORTER_OTLP_ENDPOINT ||\n process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ||\n process.env.OTEL_TRACES_EXPORTER\n );\n}\n"],"mappings":";AAAA,SAAgB,cAAc;CAC5B,OAAO,mBAAmB,KAAK,kBAAkB,KAAK,gBAAgB;AACxE;AAEA,SAAgB,qBAAqB;CACnC,OACE,QAAQ,IAAI,+BACZ,QAAQ,IAAI,uCACZ,QAAQ,IAAI;AAEhB;AAEA,SAAgB,kBAAkB;CAChC,OACE,QAAQ,IAAI,+BACZ,QAAQ,IAAI,oCACZ,QAAQ,IAAI;AAEhB;AAEA,SAAgB,oBAAoB;CAClC,OACE,QAAQ,IAAI,+BACZ,QAAQ,IAAI,sCACZ,QAAQ,IAAI;AAEhB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-options.js","names":[],"sources":["../../../../../otel/src/log-options.ts"],"sourcesContent":["import {type Config} from '../../shared/src/options-types.ts';\nimport * as v from '../../shared/src/valita.ts';\n\nexport const logLevel = v.literalUnion('debug', 'info', 'warn', 'error');\n\nexport const logOptions = {\n level: logLevel.default('info'),\n\n format: {\n type: v.literalUnion('text', 'json').default('text'),\n desc: [\n `Use {bold text} for developer-friendly console logging`,\n `and {bold json} for consumption by structured-logging services`,\n ],\n },\n\n slowRowThreshold: {\n type: v.number().default(2),\n desc: [\n `The number of ms a row must take to fetch from table-source before it is considered slow.`,\n ],\n },\n\n slowHydrateThreshold: {\n type: v.number().default(100),\n desc: [\n `The number of milliseconds a query hydration must take to print a slow warning.`,\n ],\n },\n\n ivmSampling: {\n type: v.number().default(5000),\n desc: [\n `How often to collect IVM metrics. 1 out of N requests will be sampled where N is this value.`,\n ],\n },\n};\n\nexport type LogConfig = Config<typeof logOptions>;\n"],"mappings":";;AAGA,IAAa,WAAW,aAAe,SAAS,QAAQ,QAAQ,OAAO;AAEvE,IAAa,aAAa;CACxB,OAAO,SAAS,QAAQ,MAAM;CAE9B,QAAQ;EACN,MAAM,aAAe,QAAQ,MAAM,EAAE,QAAQ,MAAM;EACnD,MAAM,CACJ,0DACA,gEACF;CACF;CAEA,kBAAkB;EAChB,MAAM,eAAE,OAAO,EAAE,QAAQ,CAAC;EAC1B,MAAM,CACJ,2FACF;CACF;CAEA,sBAAsB;EACpB,MAAM,eAAE,OAAO,EAAE,QAAQ,GAAG;EAC5B,MAAM,CACJ,iFACF;CACF;CAEA,aAAa;EACX,MAAM,eAAE,OAAO,EAAE,QAAQ,GAAI;EAC7B,MAAM,CACJ,8FACF;CACF;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybe-time.js","names":[],"sources":["../../../../../otel/src/maybe-time.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\n\nexport function timeSampled<T>(\n lc: LogContext,\n numerator: number,\n denominator: number,\n cb: () => T,\n threshold: number = 0,\n prefix: () => string = () => '',\n) {\n if (denominator > 0 && numerator % denominator === 0) {\n const start = performance.now();\n const result = cb();\n const duration = performance.now() - start;\n if (duration > threshold) {\n lc.warn?.(`${prefix()} duration: ${duration}ms`);\n }\n\n return result;\n }\n return cb();\n}\n"],"mappings":";AAEA,SAAgB,YACd,IACA,WACA,aACA,IACA,YAAoB,GACpB,eAA6B,IAC7B;CACA,IAAI,cAAc,KAAK,YAAY,gBAAgB,GAAG;EACpD,MAAM,QAAQ,YAAY,IAAI;EAC9B,MAAM,SAAS,GAAG;EAClB,MAAM,WAAW,YAAY,IAAI,IAAI;EACrC,IAAI,WAAW,WACb,GAAG,OAAO,GAAG,OAAO,EAAE,aAAa,SAAS,GAAG;EAGjD,OAAO;CACT;CACA,OAAO,GAAG;AACZ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span.js","names":[],"sources":["../../../../../otel/src/span.ts"],"sourcesContent":["import {\n type Attributes,\n type Span,\n type Tracer,\n context,\n} from '@opentelemetry/api';\n\nexport function startSpan<T>(\n tracer: Tracer,\n name: string,\n cb: (span: Omit<Span, 'end'>) => T,\n): T {\n return tracer.startActiveSpan(name, span => {\n try {\n return cb(span);\n } finally {\n span.end();\n }\n });\n}\n\nexport function startAsyncSpan<T>(\n tracer: Tracer,\n name: string,\n cb: (span: Omit<Span, 'end'>) => Promise<T>,\n): Promise<T> {\n return tracer.startActiveSpan(name, async span => {\n try {\n return await cb(span);\n } finally {\n span.end();\n }\n });\n}\n\nexport function manualSpan(\n tracer: Tracer,\n name: string,\n durationMs: number,\n attributes?: Attributes,\n): void {\n const startTime = Date.now() - durationMs;\n const span = tracer.startSpan(name, {startTime}, context.active());\n if (attributes) {\n span.setAttributes(attributes);\n }\n span.end(startTime + durationMs);\n}\n"],"mappings":";;AAOA,SAAgB,UACd,QACA,MACA,IACG;CACH,OAAO,OAAO,gBAAgB,OAAM,SAAQ;EAC1C,IAAI;GACF,OAAO,GAAG,IAAI;EAChB,UAAU;GACR,KAAK,IAAI;EACX;CACF,CAAC;AACH;AAEA,SAAgB,eACd,QACA,MACA,IACY;CACZ,OAAO,OAAO,gBAAgB,MAAM,OAAM,SAAQ;EAChD,IAAI;GACF,OAAO,MAAM,GAAG,IAAI;EACtB,UAAU;GACR,KAAK,IAAI;EACX;CACF,CAAC;AACH;AAEA,SAAgB,WACd,QACA,MACA,YACA,YACM;CACN,MAAM,YAAY,KAAK,IAAI,IAAI;CAC/B,MAAM,OAAO,OAAO,UAAU,MAAM,EAAC,UAAS,GAAG,QAAQ,OAAO,CAAC;CACjE,IAAI,YACF,KAAK,cAAc,UAAU;CAE/B,KAAK,IAAI,YAAY,UAAU;AACjC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","names":[],"sources":["../../../../../otel/src/version.ts"],"sourcesContent":["export const version = '0.0.2';\n"],"mappings":";AAAA,IAAa,UAAU"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-iterable-to-array.js","names":[],"sources":["../../../../../replicache/src/async-iterable-to-array.ts"],"sourcesContent":["export async function asyncIterableToArray<T>(\n it: AsyncIterable<T>,\n): Promise<T[]> {\n const arr: T[] = [];\n for await (const v of it) {\n arr.push(v);\n }\n return arr;\n}\n"],"mappings":";AAAA,eAAsB,qBACpB,IACc;CACd,MAAM,MAAW,CAAC;CAClB,WAAW,MAAM,KAAK,IACpB,IAAI,KAAK,CAAC;CAEZ,OAAO;AACT"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bg-interval.js","names":[],"sources":["../../../../../replicache/src/bg-interval.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {AbortError} from '../../shared/src/abort-error.ts';\nimport {sleep} from '../../shared/src/sleep.ts';\nimport {IDBNotFoundError} from './kv/idb-store.ts';\n\nexport function initBgIntervalProcess(\n processName: string,\n process: () => Promise<unknown>,\n delayMs: () => number,\n lc: LogContext,\n signal: AbortSignal,\n): void {\n void runBgIntervalProcess(processName, process, delayMs, lc, signal);\n}\n\nasync function runBgIntervalProcess(\n processName: string,\n process: () => Promise<unknown>,\n delayMs: () => number,\n lc: LogContext,\n signal: AbortSignal,\n): Promise<void> {\n if (signal.aborted) {\n return;\n }\n lc = lc.withContext('bgIntervalProcess', processName);\n lc.debug?.('Starting');\n while (!signal.aborted) {\n try {\n await sleep(delayMs(), signal);\n } catch (e) {\n if (!(e instanceof AbortError)) {\n throw e;\n }\n }\n if (!signal.aborted) {\n lc.debug?.('Running');\n try {\n await process();\n } catch (e) {\n if (signal.aborted) {\n lc.debug?.('Error running most likely due to close.', e);\n } else if (e instanceof IDBNotFoundError) {\n lc.info?.('IndexedDB was deleted externally.', e);\n } else {\n lc.error?.('Error running.', e);\n }\n }\n }\n }\n lc.debug?.('Stopping');\n}\n"],"mappings":";;;;AAKA,SAAgB,sBACd,aACA,SACA,SACA,IACA,QACM;CACN,qBAA0B,aAAa,SAAS,SAAS,IAAI,MAAM;AACrE;AAEA,eAAe,qBACb,aACA,SACA,SACA,IACA,QACe;CACf,IAAI,OAAO,SACT;CAEF,KAAK,GAAG,YAAY,qBAAqB,WAAW;CACpD,GAAG,QAAQ,UAAU;CACrB,OAAO,CAAC,OAAO,SAAS;EACtB,IAAI;GACF,MAAM,MAAM,QAAQ,GAAG,MAAM;EAC/B,SAAS,GAAG;GACV,IAAI,EAAE,aAAa,aACjB,MAAM;EAEV;EACA,IAAI,CAAC,OAAO,SAAS;GACnB,GAAG,QAAQ,SAAS;GACpB,IAAI;IACF,MAAM,QAAQ;GAChB,SAAS,GAAG;IACV,IAAI,OAAO,SACT,GAAG,QAAQ,2CAA2C,CAAC;SAClD,IAAI,aAAa,kBACtB,GAAG,OAAO,qCAAqC,CAAC;SAEhD,GAAG,QAAQ,kBAAkB,CAAC;GAElC;EACF;CACF;CACA,GAAG,QAAQ,UAAU;AACvB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","names":[],"sources":["../../../../../../replicache/src/btree/diff.ts"],"sourcesContent":["import {asyncIterableToArray} from '../async-iterable-to-array.ts';\nimport type {InternalDiff} from './node.ts';\nimport type {BTreeRead} from './read.ts';\n\nexport function diff(\n oldMap: BTreeRead,\n newMap: BTreeRead,\n): Promise<InternalDiff> {\n // Return an array to ensure we do not compute the diff more than once.\n return asyncIterableToArray(newMap.diff(oldMap));\n}\n"],"mappings":";;AAIA,SAAgB,KACd,QACA,QACuB;CAEvB,OAAO,qBAAqB,OAAO,KAAK,MAAM,CAAC;AACjD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","names":["#childNodeSize","#splice","#mergeAndPartition","#replaceChild"],"sources":["../../../../../../replicache/src/btree/node.ts"],"sourcesContent":["import {compareUTF8} from 'compare-utf8';\nimport {\n assert,\n assertArray,\n assertNumber,\n assertString,\n} from '../../../shared/src/asserts.ts';\nimport {binarySearch as binarySearchWithFunc} from '../../../shared/src/binary-search.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport {joinIterables} from '../../../shared/src/iterables.ts';\nimport {\n type JSONValue,\n type ReadonlyJSONValue,\n assertJSONValue,\n} from '../../../shared/src/json.ts';\nimport {skipBTreeNodeAsserts} from '../config.ts';\nimport type {IndexKey} from '../db/index.ts';\nimport * as FormatVersion from '../format-version-enum.ts';\nimport {\n type FrozenJSONValue,\n type FrozenTag,\n assertDeepFrozen,\n deepFreeze,\n} from '../frozen-json.ts';\nimport {type Hash, emptyHash, newRandomHash} from '../hash.ts';\nimport type {BTreeRead} from './read.ts';\nimport type {BTreeWrite} from './write.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nexport type Entry<V> = readonly [key: string, value: V, sizeOfEntry: number];\n\nexport const NODE_LEVEL = 0;\nexport const NODE_ENTRIES = 1;\n\n/**\n * The type of B+Tree node chunk data\n */\ntype BaseNode<V> = FrozenTag<\n readonly [level: number, entries: ReadonlyArray<Entry<V>>]\n>;\nexport type InternalNode = BaseNode<Hash>;\n\nexport type DataNode = BaseNode<FrozenJSONValue>;\n\nexport function makeNodeChunkData<V>(\n level: number,\n entries: ReadonlyArray<Entry<V>>,\n formatVersion: FormatVersion,\n): BaseNode<V> {\n return deepFreeze([\n level,\n (formatVersion >= FormatVersion.V7\n ? entries\n : entries.map(e => e.slice(0, 2))) as readonly ReadonlyJSONValue[],\n ]) as BaseNode<V>;\n}\n\nexport type Node = DataNode | InternalNode;\n\n/**\n * Describes the changes that happened to Replicache after a\n * {@link WriteTransaction} was committed.\n *\n * @experimental This type is experimental and may change in the future.\n */\nexport type Diff = IndexDiff | NoIndexDiff;\n\n/**\n * @experimental This type is experimental and may change in the future.\n */\nexport type IndexDiff = readonly DiffOperation<IndexKey>[];\n\n/**\n * @experimental This type is experimental and may change in the future.\n */\nexport type NoIndexDiff = readonly DiffOperation<string>[];\n\n/**\n * InternalDiff uses string keys even for the secondary index maps.\n */\nexport type InternalDiff = readonly InternalDiffOperation[];\n\nexport type DiffOperationAdd<Key, Value = ReadonlyJSONValue> = {\n readonly op: 'add';\n readonly key: Key;\n readonly newValue: Value;\n};\n\nexport type DiffOperationDel<Key, Value = ReadonlyJSONValue> = {\n readonly op: 'del';\n readonly key: Key;\n readonly oldValue: Value;\n};\n\nexport type DiffOperationChange<Key, Value = ReadonlyJSONValue> = {\n readonly op: 'change';\n readonly key: Key;\n readonly oldValue: Value;\n readonly newValue: Value;\n};\n\n/**\n * The individual parts describing the changes that happened to the Replicache\n * data. There are three different kinds of operations:\n * - `add`: A new entry was added.\n * - `del`: An entry was deleted.\n * - `change`: An entry was changed.\n *\n * @experimental This type is experimental and may change in the future.\n */\nexport type DiffOperation<Key> =\n | DiffOperationAdd<Key>\n | DiffOperationDel<Key>\n | DiffOperationChange<Key>;\n\n// Duplicated with DiffOperation to make the docs less confusing.\nexport type InternalDiffOperation<Key = string, Value = FrozenJSONValue> =\n | DiffOperationAdd<Key, Value>\n | DiffOperationDel<Key, Value>\n | DiffOperationChange<Key, Value>;\n\n/**\n * Finds the leaf where a key is (if present) or where it should go if not\n * present.\n */\nexport async function findLeaf(\n key: string,\n hash: Hash,\n source: BTreeRead,\n expectedRootHash: Hash,\n): Promise<DataNodeImpl> {\n const node = await source.getNode(hash);\n // The root changed. Try again\n if (expectedRootHash !== source.rootHash) {\n return findLeaf(key, source.rootHash, source, source.rootHash);\n }\n if (isDataNodeImpl(node)) {\n return node;\n }\n const {entries} = node;\n let i = binarySearch(key, entries);\n if (i === entries.length) {\n i--;\n }\n const entry = entries[i];\n return findLeaf(key, entry[1], source, expectedRootHash);\n}\n\ntype BinarySearchEntries = readonly Entry<unknown>[];\n\n/**\n * Does a binary search over entries\n *\n * If the key found then the return value is the index it was found at.\n *\n * If the key was *not* found then the return value is the index where it should\n * be inserted at\n */\nexport function binarySearch(\n key: string,\n entries: BinarySearchEntries,\n): number {\n return binarySearchFrom(key, entries, 0);\n}\n\n/**\n * Binary search starting from a given index.\n */\nfunction binarySearchFrom(\n key: string,\n entries: BinarySearchEntries,\n start: number,\n): number {\n const result = binarySearchWithFunc(entries.length - start, i =>\n compareUTF8(key, entries[start + i][0]),\n );\n return start + result;\n}\n\nexport function binarySearchFound(\n i: number,\n entries: BinarySearchEntries,\n key: string,\n): boolean {\n return i !== entries.length && entries[i][0] === key;\n}\n\nexport function parseBTreeNode(\n v: unknown,\n formatVersion: FormatVersion,\n getSizeOfEntry: <K, V>(key: K, value: V) => number,\n): InternalNode | DataNode {\n if (skipBTreeNodeAsserts && formatVersion >= FormatVersion.V7) {\n return v as InternalNode | DataNode;\n }\n\n assertArray(v);\n assertDeepFrozen(v);\n // Be relaxed about what we accept.\n assert(v.length >= 2, 'Expected node array to have at least 2 elements');\n const [level, entries] = v;\n assertNumber(level);\n assertArray(entries);\n\n const f = level > 0 ? assertString : assertJSONValue;\n\n // For V7 we do not need to change the entries. Just assert that they are correct.\n if (formatVersion >= FormatVersion.V7) {\n for (const e of entries) {\n assertEntry(e, f);\n }\n return v as unknown as InternalNode | DataNode;\n }\n\n const newEntries = entries.map(e => convertNonV7Entry(e, f, getSizeOfEntry));\n return [level, newEntries] as unknown as InternalNode | DataNode;\n}\n\nfunction assertEntry(\n entry: unknown,\n f:\n | ((v: unknown) => asserts v is Hash)\n | ((v: unknown) => asserts v is JSONValue),\n): asserts entry is Entry<Hash | JSONValue> {\n assertArray(entry);\n // Be relaxed about what we accept.\n assert(entry.length >= 3, 'Expected entry array to have at least 3 elements');\n assertString(entry[0]);\n f(entry[1]);\n assertNumber(entry[2]);\n}\n\n/**\n * Converts an entry that was from a format version before V7 to the format\n * wanted by V7.\n */\nfunction convertNonV7Entry(\n entry: unknown,\n f:\n | ((v: unknown) => asserts v is Hash)\n | ((v: unknown) => asserts v is JSONValue),\n getSizeOfEntry: <K, V>(key: K, value: V) => number,\n): Entry<Hash | JSONValue> {\n assertArray(entry);\n assert(entry.length >= 2, 'Expected entry array to have at least 2 elements');\n assertString(entry[0]);\n f(entry[1]);\n const entrySize = getSizeOfEntry(entry[0], entry[1]);\n return [entry[0], entry[1], entrySize] as Entry<Hash | JSONValue>;\n}\n\nexport function isInternalNode(node: Node): node is InternalNode {\n return node[NODE_LEVEL] > 0;\n}\n\nabstract class NodeImpl<Value> {\n entries: Array<Entry<Value>>;\n hash: Hash;\n abstract readonly level: number;\n readonly isMutable: boolean;\n\n #childNodeSize = -1;\n\n constructor(entries: Array<Entry<Value>>, hash: Hash, isMutable: boolean) {\n this.entries = entries;\n this.hash = hash;\n this.isMutable = isMutable;\n }\n\n abstract set(\n key: string,\n value: FrozenJSONValue,\n entrySize: number,\n tree: BTreeWrite,\n ): Promise<NodeImpl<Value>>;\n\n abstract putMany(\n entries: ReadonlyArray<Entry<FrozenJSONValue>>,\n tree: BTreeWrite,\n ): Promise<NodeImpl<Value>>;\n\n abstract del(\n key: string,\n tree: BTreeWrite,\n ): Promise<NodeImpl<Value> | DataNodeImpl>;\n\n maxKey(): string {\n // oxlint-disable-next-line typescript/no-non-null-assertion\n return this.entries.at(-1)![0];\n }\n\n getChildNodeSize(tree: BTreeRead): number {\n if (this.#childNodeSize !== -1) {\n return this.#childNodeSize;\n }\n\n let sum = tree.chunkHeaderSize;\n for (const entry of this.entries) {\n sum += entry[2];\n }\n return (this.#childNodeSize = sum);\n }\n\n protected _updateNode(tree: BTreeWrite) {\n this.#childNodeSize = -1;\n tree.updateNode(\n this as NodeImpl<unknown> as DataNodeImpl | InternalNodeImpl,\n );\n }\n}\n\nexport function toChunkData<V>(\n node: NodeImpl<V>,\n formatVersion: FormatVersion,\n): BaseNode<V> {\n return makeNodeChunkData(node.level, node.entries, formatVersion);\n}\n\nexport class DataNodeImpl extends NodeImpl<FrozenJSONValue> {\n readonly level = 0;\n\n set(\n key: string,\n value: FrozenJSONValue,\n entrySize: number,\n tree: BTreeWrite,\n ): Promise<DataNodeImpl> {\n let deleteCount: number;\n const i = binarySearch(key, this.entries);\n if (!binarySearchFound(i, this.entries, key)) {\n // Not found, insert.\n deleteCount = 0;\n } else {\n deleteCount = 1;\n }\n\n return Promise.resolve(\n this.#splice(tree, i, deleteCount, [key, value, entrySize]),\n );\n }\n\n putMany(\n entries: ReadonlyArray<Entry<FrozenJSONValue>>,\n tree: BTreeWrite,\n ): Promise<DataNodeImpl> {\n if (entries.length === 0) {\n return Promise.resolve(this);\n }\n\n // Merge sorted entries with existing entries\n const merged: Entry<FrozenJSONValue>[] = [];\n let i = 0; // index in this.entries\n let j = 0; // index in entries\n\n while (i < this.entries.length && j < entries.length) {\n const existingEntry = this.entries[i];\n const newEntry = entries[j];\n const cmp = compareUTF8(existingEntry[0], newEntry[0]);\n\n if (cmp < 0) {\n merged.push(existingEntry);\n i++;\n } else if (cmp > 0) {\n merged.push(newEntry);\n j++;\n } else {\n // Same key, new entry wins (update)\n merged.push(newEntry);\n i++;\n j++;\n }\n }\n\n // Add remaining entries\n while (i < this.entries.length) {\n merged.push(this.entries[i]);\n i++;\n }\n while (j < entries.length) {\n merged.push(entries[j]);\n j++;\n }\n\n if (this.isMutable) {\n this.entries = merged;\n this._updateNode(tree);\n return Promise.resolve(this);\n }\n\n return Promise.resolve(tree.newDataNodeImpl(merged));\n }\n\n #splice(\n tree: BTreeWrite,\n start: number,\n deleteCount: number,\n ...items: Entry<FrozenJSONValue>[]\n ): DataNodeImpl {\n if (this.isMutable) {\n this.entries.splice(start, deleteCount, ...items);\n this._updateNode(tree);\n return this;\n }\n\n const entries = readonlySplice(this.entries, start, deleteCount, ...items);\n return tree.newDataNodeImpl(entries);\n }\n\n del(key: string, tree: BTreeWrite): Promise<DataNodeImpl> {\n const i = binarySearch(key, this.entries);\n if (!binarySearchFound(i, this.entries, key)) {\n // Not found. Return this without changes.\n return Promise.resolve(this);\n }\n\n // Found. Create new node or mutate existing one.\n return Promise.resolve(this.#splice(tree, i, 1));\n }\n\n async *keys(_tree: BTreeRead): AsyncGenerator<string, void> {\n for (const entry of this.entries) {\n yield entry[0];\n }\n }\n\n async *entriesIter(\n _tree: BTreeRead,\n ): AsyncGenerator<Entry<FrozenJSONValue>, void> {\n for (const entry of this.entries) {\n yield entry;\n }\n }\n}\n\nfunction readonlySplice<T>(\n array: ReadonlyArray<T>,\n start: number,\n deleteCount: number,\n ...items: T[]\n): T[] {\n const arr = array.slice(0, start);\n for (let i = 0; i < items.length; i++) {\n arr.push(items[i]);\n }\n for (let i = start + deleteCount; i < array.length; i++) {\n arr.push(array[i]);\n }\n return arr;\n}\n\nexport class InternalNodeImpl extends NodeImpl<Hash> {\n readonly level: number;\n\n constructor(\n entries: Array<Entry<Hash>>,\n hash: Hash,\n level: number,\n isMutable: boolean,\n ) {\n super(entries, hash, isMutable);\n this.level = level;\n }\n\n async set(\n key: string,\n value: FrozenJSONValue,\n entrySize: number,\n tree: BTreeWrite,\n ): Promise<InternalNodeImpl> {\n let i = binarySearch(key, this.entries);\n if (i === this.entries.length) {\n // We are going to insert into last (right most) leaf.\n i--;\n }\n\n const childHash = this.entries[i][1];\n const oldChildNode = await tree.getNode(childHash);\n\n const childNode = await oldChildNode.set(key, value, entrySize, tree);\n\n const childNodeSize = childNode.getChildNodeSize(tree);\n if (childNodeSize > tree.maxSize || childNodeSize < tree.minSize) {\n return this.#mergeAndPartition(tree, i, childNode);\n }\n\n const newEntry = createNewInternalEntryForNode(\n childNode,\n tree.getEntrySize,\n );\n return this.#replaceChild(tree, i, newEntry);\n }\n\n async putMany(\n entries: ReadonlyArray<Entry<FrozenJSONValue>>,\n tree: BTreeWrite,\n ): Promise<InternalNodeImpl> {\n if (entries.length === 0) {\n return this;\n }\n\n // Group entries by child index\n // Since entries are sorted, we can restrict the binary search range\n const childGroups: Map<number, Entry<FrozenJSONValue>[]> = new Map();\n\n let searchStart = 0;\n for (const entry of entries) {\n const key = entry[0];\n // Binary search from searchStart to end (entries are sorted)\n let i = binarySearchFrom(key, this.entries, searchStart);\n if (i === this.entries.length) {\n // Insert into last (right most) leaf.\n i--;\n }\n searchStart = i;\n\n let group = childGroups.get(i);\n if (!group) {\n group = [];\n childGroups.set(i, group);\n }\n group.push(entry);\n }\n\n // Process each affected child\n const newEntries = [...this.entries];\n const childrenToRebalance: Array<{\n index: number;\n node: DataNodeImpl | InternalNodeImpl;\n }> = [];\n\n for (const [childIndex, childEntries] of childGroups) {\n const childHash = this.entries[childIndex][1];\n const oldChildNode = await tree.getNode(childHash);\n const childNode = await oldChildNode.putMany(childEntries, tree);\n\n const childNodeSize = childNode.getChildNodeSize(tree);\n if (childNodeSize > tree.maxSize || childNodeSize < tree.minSize) {\n childrenToRebalance.push({index: childIndex, node: childNode});\n } else {\n const newEntry = createNewInternalEntryForNode(\n childNode,\n tree.getEntrySize,\n );\n newEntries[childIndex] = newEntry;\n }\n }\n\n // Handle rebalancing - merge adjacent children that need rebalancing\n // into contiguous groups and process each group as one unit.\n //\n // BUG FIX: Previously, each child was rebalanced independently R-to-L.\n // When adjacent children (e.g., indices 0 and 1) both needed rebalancing,\n // child[1] would merge with sibling[0] (the ORIGINAL), then child[0]\n // would merge with the rebalanced result at position 1, duplicating\n // child[0]'s data. The fix groups adjacent indices together.\n if (childrenToRebalance.length > 0) {\n childrenToRebalance.sort((a, b) => a.index - b.index);\n\n // Group adjacent indices into contiguous runs, each extended by one\n // sibling on either side for merge context.\n const groups: Array<{\n nodes: Map<number, DataNodeImpl | InternalNodeImpl>;\n minIndex: number;\n maxIndex: number;\n }> = [];\n\n for (const {index, node} of childrenToRebalance) {\n const lastGroup = groups.at(-1);\n // Adjacent to previous group? (within 1 index of the last group's max)\n if (lastGroup && index <= lastGroup.maxIndex + 1) {\n lastGroup.nodes.set(index, node);\n lastGroup.maxIndex = index;\n } else {\n groups.push({\n nodes: new Map([[index, node]]),\n minIndex: index,\n maxIndex: index,\n });\n }\n }\n\n // Process groups from right to left to maintain indices during splices.\n for (let g = groups.length - 1; g >= 0; g--) {\n const group = groups[g];\n\n // Extend range by one sibling on each side for merge context.\n const startIndex = Math.max(0, group.minIndex - 1);\n const endIndex = Math.min(newEntries.length - 1, group.maxIndex + 1);\n const removeCount = endIndex - startIndex + 1;\n\n // Collect all entries from the range: use the putMany result for\n // indices that were rebalanced, the current newEntries node otherwise.\n type IterableHashEntries = Iterable<Entry<Hash>>;\n const allValues: IterableHashEntries[] = [];\n for (let idx = startIndex; idx <= endIndex; idx++) {\n const rebalancedNode = group.nodes.get(idx);\n if (rebalancedNode) {\n allValues.push(rebalancedNode.entries as IterableHashEntries);\n } else {\n const hash = newEntries[idx][1];\n const existingNode = await tree.getNode(hash);\n allValues.push(existingNode.entries as IterableHashEntries);\n }\n }\n\n const level = this.level - 1;\n const merged = joinIterables(...allValues);\n const rebalanced = partition(\n merged,\n e => e[2],\n tree.minSize - tree.chunkHeaderSize,\n tree.maxSize - tree.chunkHeaderSize,\n entries => {\n const node = tree.newNodeImpl(entries, level);\n return createNewInternalEntryForNode(node, tree.getEntrySize);\n },\n );\n\n newEntries.splice(startIndex, removeCount, ...rebalanced);\n }\n }\n\n if (this.isMutable) {\n this.entries = newEntries;\n this._updateNode(tree);\n return this;\n }\n\n return tree.newInternalNodeImpl(newEntries, this.level);\n }\n\n /**\n * This merges the child node entries with previous or next sibling and then\n * partitions the merged entries.\n */\n async #mergeAndPartition(\n tree: BTreeWrite,\n i: number,\n childNode: DataNodeImpl | InternalNodeImpl,\n ): Promise<InternalNodeImpl> {\n const level = this.level - 1;\n const thisEntries = this.entries;\n\n type IterableHashEntries = Iterable<Entry<Hash>>;\n\n let values: IterableHashEntries;\n let startIndex: number;\n let removeCount: number;\n if (i > 0) {\n const hash = thisEntries[i - 1][1];\n const previousSibling = await tree.getNode(hash);\n values = joinIterables(\n previousSibling.entries as IterableHashEntries,\n childNode.entries as IterableHashEntries,\n );\n startIndex = i - 1;\n removeCount = 2;\n } else if (i < thisEntries.length - 1) {\n const hash = thisEntries[i + 1][1];\n const nextSibling = await tree.getNode(hash);\n values = joinIterables(\n childNode.entries as IterableHashEntries,\n nextSibling.entries as IterableHashEntries,\n );\n startIndex = i;\n removeCount = 2;\n } else {\n values = childNode.entries as IterableHashEntries;\n startIndex = i;\n removeCount = 1;\n }\n\n const newEntries = partition(\n values,\n value => value[2],\n tree.minSize - tree.chunkHeaderSize,\n tree.maxSize - tree.chunkHeaderSize,\n entries => {\n const node = tree.newNodeImpl(entries, level);\n return createNewInternalEntryForNode(node, tree.getEntrySize);\n },\n );\n\n if (this.isMutable) {\n this.entries.splice(startIndex, removeCount, ...newEntries);\n this._updateNode(tree);\n return this;\n }\n\n const entries = readonlySplice(\n thisEntries,\n startIndex,\n removeCount,\n ...newEntries,\n );\n\n return tree.newInternalNodeImpl(entries, this.level);\n }\n\n #replaceChild(\n tree: BTreeWrite,\n index: number,\n newEntry: Entry<Hash>,\n ): InternalNodeImpl {\n if (this.isMutable) {\n this.entries.splice(index, 1, newEntry);\n this._updateNode(tree);\n return this;\n }\n const entries = readonlySplice(this.entries, index, 1, newEntry);\n return tree.newInternalNodeImpl(entries, this.level);\n }\n\n async del(\n key: string,\n tree: BTreeWrite,\n ): Promise<InternalNodeImpl | DataNodeImpl> {\n const i = binarySearch(key, this.entries);\n if (i === this.entries.length) {\n // Key is larger than maxKey of rightmost entry so it is not present.\n return this;\n }\n\n const childHash = this.entries[i][1];\n const oldChildNode = await tree.getNode(childHash);\n const oldHash = oldChildNode.hash;\n\n const childNode = await oldChildNode.del(key, tree);\n if (childNode.hash === oldHash) {\n // Not changed so not found.\n return this;\n }\n\n if (childNode.entries.length === 0) {\n // Subtree is now empty. Remove internal node.\n const entries = readonlySplice(this.entries, i, 1);\n return tree.newInternalNodeImpl(entries, this.level);\n }\n\n if (i === 0 && this.entries.length === 1) {\n // There was only one node at this level and it was removed. We can return\n // the modified subtree.\n return childNode;\n }\n\n // The child node is still a good size.\n if (childNode.getChildNodeSize(tree) > tree.minSize) {\n // No merging needed.\n const entry = createNewInternalEntryForNode(childNode, tree.getEntrySize);\n return this.#replaceChild(tree, i, entry);\n }\n\n // Child node size is too small.\n return this.#mergeAndPartition(tree, i, childNode);\n }\n\n async *keys(tree: BTreeRead): AsyncGenerator<string, void> {\n for (const entry of this.entries) {\n const childNode = await tree.getNode(entry[1]);\n yield* childNode.keys(tree);\n }\n }\n\n async *entriesIter(\n tree: BTreeRead,\n ): AsyncGenerator<Entry<FrozenJSONValue>, void> {\n for (const entry of this.entries) {\n const childNode = await tree.getNode(entry[1]);\n yield* childNode.entriesIter(tree);\n }\n }\n\n getChildren(\n start: number,\n length: number,\n tree: BTreeRead,\n ): Promise<Array<InternalNodeImpl | DataNodeImpl>> {\n const ps: Promise<DataNodeImpl | InternalNodeImpl>[] = [];\n for (let i = start; i < length && i < this.entries.length; i++) {\n ps.push(tree.getNode(this.entries[i][1]));\n }\n return Promise.all(ps);\n }\n\n async getCompositeChildren(\n start: number,\n length: number,\n tree: BTreeRead,\n ): Promise<InternalNodeImpl | DataNodeImpl> {\n const {level} = this;\n\n if (length === 0) {\n return new InternalNodeImpl([], newRandomHash(), level - 1, true);\n }\n\n const output = await this.getChildren(start, start + length, tree);\n\n if (level > 1) {\n const entries: Entry<Hash>[] = [];\n for (const child of output as InternalNodeImpl[]) {\n entries.push(...child.entries);\n }\n return new InternalNodeImpl(entries, newRandomHash(), level - 1, true);\n }\n\n assert(level === 1, 'Expected level to be 1');\n const entries: Entry<FrozenJSONValue>[] = [];\n for (const child of output as DataNodeImpl[]) {\n entries.push(...child.entries);\n }\n return new DataNodeImpl(entries, newRandomHash(), true);\n }\n}\n\nexport function newNodeImpl(\n entries: Array<Entry<FrozenJSONValue>>,\n hash: Hash,\n level: number,\n isMutable: boolean,\n): DataNodeImpl;\nexport function newNodeImpl(\n entries: Array<Entry<Hash>>,\n hash: Hash,\n level: number,\n isMutable: boolean,\n): InternalNodeImpl;\nexport function newNodeImpl(\n entries: Array<Entry<FrozenJSONValue>> | Array<Entry<Hash>>,\n hash: Hash,\n level: number,\n isMutable: boolean,\n): DataNodeImpl | InternalNodeImpl;\nexport function newNodeImpl(\n entries: Array<Entry<FrozenJSONValue>> | Array<Entry<Hash>>,\n hash: Hash,\n level: number,\n isMutable: boolean,\n): DataNodeImpl | InternalNodeImpl {\n if (level === 0) {\n return new DataNodeImpl(\n entries as Entry<FrozenJSONValue>[],\n hash,\n isMutable,\n );\n }\n return new InternalNodeImpl(entries as Entry<Hash>[], hash, level, isMutable);\n}\n\nexport function isDataNodeImpl(\n node: DataNodeImpl | InternalNodeImpl,\n): node is DataNodeImpl {\n return node.level === 0;\n}\n\nexport function partition<T, R>(\n values: Iterable<T>,\n // This is the size of each Entry\n getSizeOfEntry: (v: T) => number,\n min: number,\n max: number,\n create: (entries: T[]) => R,\n): R[] {\n const results: R[] = [];\n let sum = 0;\n let accum: T[] = [];\n // The most recently finalized partition, held back until we know it won't be\n // merged with trailing entries.\n let lastPartition: T[] | null = null;\n let lastSize = 0;\n\n function commitLast() {\n if (lastPartition !== null) {\n results.push(create(lastPartition));\n lastPartition = null;\n }\n }\n\n for (const value of values) {\n const size = getSizeOfEntry(value);\n if (size >= max) {\n if (accum.length > 0) {\n commitLast();\n lastPartition = accum;\n lastSize = sum;\n accum = [];\n sum = 0;\n }\n commitLast();\n lastPartition = [value];\n lastSize = size;\n } else if (sum + size >= min) {\n accum.push(value);\n commitLast();\n lastPartition = accum;\n lastSize = sum + size;\n accum = [];\n sum = 0;\n } else {\n sum += size;\n accum.push(value);\n }\n }\n\n if (sum > 0) {\n if (lastPartition !== null && sum + lastSize <= max) {\n lastPartition.push(...accum);\n commitLast();\n } else {\n commitLast();\n results.push(create(accum));\n }\n } else {\n commitLast();\n }\n\n return results;\n}\n\nexport const emptyDataNode = makeNodeChunkData<ReadonlyJSONValue>(\n 0,\n [],\n FormatVersion.Latest,\n);\nexport const emptyDataNodeImpl = new DataNodeImpl([], emptyHash, false);\n\nexport function createNewInternalEntryForNode(\n node: NodeImpl<unknown>,\n getSizeOfEntry: <K, V>(k: K, v: V) => number,\n): [string, Hash, number] {\n const key = node.maxKey();\n const value = node.hash;\n const size = getSizeOfEntry(key, value);\n return [key, value, size];\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","names":[],"sources":["../../../../../../replicache/src/btree/read.ts"],"sourcesContent":["import type {Enum} from '../../../shared/src/enum.ts';\nimport {deepEqual} from '../../../shared/src/json.ts';\nimport {getSizeOfEntry} from '../../../shared/src/size-of-value.ts';\nimport type {Read} from '../dag/store.ts';\nimport type * as FormatVersion from '../format-version-enum.ts';\nimport type {FrozenJSONValue} from '../frozen-json.ts';\nimport {type Hash, emptyHash} from '../hash.ts';\nimport type {DataNodeImpl, InternalNodeImpl} from './node.ts';\nimport {\n type Entry,\n type InternalDiff,\n type InternalDiffOperation,\n NODE_ENTRIES,\n NODE_LEVEL,\n binarySearch,\n binarySearchFound,\n emptyDataNodeImpl,\n findLeaf,\n isDataNodeImpl,\n newNodeImpl,\n parseBTreeNode,\n} from './node.ts';\nimport {\n SPLICE_ADDED,\n SPLICE_AT,\n SPLICE_FROM,\n SPLICE_REMOVED,\n computeSplices,\n} from './splice.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\n/**\n * The size of the header of a node. (If we had compile time\n * constants we would have used that).\n *\n * There is a test ensuring this is correct.\n */\nexport const NODE_HEADER_SIZE = 11;\n\nexport class BTreeRead implements AsyncIterable<Entry<FrozenJSONValue>> {\n protected readonly _cache: Map<Hash, DataNodeImpl | InternalNodeImpl> =\n new Map();\n\n protected readonly _dagRead: Read;\n protected readonly _formatVersion: FormatVersion;\n rootHash: Hash;\n readonly getEntrySize: <K, V>(k: K, v: V) => number;\n readonly chunkHeaderSize: number;\n\n constructor(\n dagRead: Read,\n formatVersion: FormatVersion,\n root: Hash = emptyHash,\n getEntrySize: <K, V>(k: K, v: V) => number = getSizeOfEntry,\n chunkHeaderSize = NODE_HEADER_SIZE,\n ) {\n this._dagRead = dagRead;\n this._formatVersion = formatVersion;\n this.rootHash = root;\n this.getEntrySize = getEntrySize;\n this.chunkHeaderSize = chunkHeaderSize;\n }\n\n async getNode(hash: Hash): Promise<DataNodeImpl | InternalNodeImpl> {\n if (hash === emptyHash) {\n return emptyDataNodeImpl;\n }\n\n const cached = this._cache.get(hash);\n if (cached) {\n return cached;\n }\n\n const chunk = await this._dagRead.mustGetChunk(hash);\n const data = parseBTreeNode(\n chunk.data,\n this._formatVersion,\n this.getEntrySize,\n );\n const impl = newNodeImpl(\n data[NODE_ENTRIES] as Entry<FrozenJSONValue>[],\n hash,\n data[NODE_LEVEL],\n false,\n );\n this._cache.set(hash, impl);\n return impl;\n }\n\n async get(key: string): Promise<FrozenJSONValue | undefined> {\n const leaf = await findLeaf(key, this.rootHash, this, this.rootHash);\n const index = binarySearch(key, leaf.entries);\n if (!binarySearchFound(index, leaf.entries, key)) {\n return undefined;\n }\n return leaf.entries[index][1];\n }\n\n async has(key: string): Promise<boolean> {\n const leaf = await findLeaf(key, this.rootHash, this, this.rootHash);\n const index = binarySearch(key, leaf.entries);\n return binarySearchFound(index, leaf.entries, key);\n }\n\n async isEmpty(): Promise<boolean> {\n const {rootHash} = this;\n const node = await this.getNode(this.rootHash);\n // The root hash has changed, so the tree has been modified.\n if (this.rootHash !== rootHash) {\n return this.isEmpty();\n }\n return node.entries.length === 0;\n }\n\n // We don't do any encoding of the key in the map, so we have no way of\n // determining from an entry.key alone whether it is a regular key or an\n // encoded IndexKey in an index map. Without encoding regular map keys the\n // caller has to deal with encoding and decoding the keys for the index map.\n scan(fromKey: string): AsyncIterableIterator<Entry<FrozenJSONValue>> {\n return scanForHash(\n this.rootHash,\n () => this.rootHash,\n this.rootHash,\n fromKey,\n async hash => {\n const cached = await this.getNode(hash);\n if (cached) {\n return [\n cached.level,\n cached.isMutable ? cached.entries.slice() : cached.entries,\n ];\n }\n const chunk = await this._dagRead.mustGetChunk(hash);\n return parseBTreeNode(\n chunk.data,\n this._formatVersion,\n this.getEntrySize,\n );\n },\n );\n }\n\n async *keys(): AsyncIterableIterator<string> {\n const node = await this.getNode(this.rootHash);\n yield* node.keys(this);\n }\n\n async *entries(): AsyncIterableIterator<Entry<FrozenJSONValue>> {\n const node = await this.getNode(this.rootHash);\n yield* node.entriesIter(this);\n }\n\n [Symbol.asyncIterator](): AsyncIterableIterator<Entry<FrozenJSONValue>> {\n return this.entries();\n }\n\n async *diff(last: BTreeRead): AsyncIterableIterator<InternalDiffOperation> {\n const [currentNode, lastNode] = await Promise.all([\n this.getNode(this.rootHash),\n last.getNode(last.rootHash),\n ]);\n yield* diffNodes(lastNode, currentNode, last, this);\n }\n}\n\nasync function* diffNodes(\n last: InternalNodeImpl | DataNodeImpl,\n current: InternalNodeImpl | DataNodeImpl,\n lastTree: BTreeRead,\n currentTree: BTreeRead,\n): AsyncIterableIterator<InternalDiffOperation> {\n if (last.level > current.level) {\n // merge all of last's children into a new node\n // We know last is an internal node because level > 0.\n const lastChild = (await (last as InternalNodeImpl).getCompositeChildren(\n 0,\n last.entries.length,\n lastTree,\n )) as InternalNodeImpl;\n yield* diffNodes(lastChild, current, lastTree, currentTree);\n return;\n }\n\n if (current.level > last.level) {\n // We know current is an internal node because level > 0.\n const currentChild = (await (\n current as InternalNodeImpl\n ).getCompositeChildren(\n 0,\n current.entries.length,\n currentTree,\n )) as InternalNodeImpl;\n yield* diffNodes(last, currentChild, lastTree, currentTree);\n return;\n }\n\n if (isDataNodeImpl(last) && isDataNodeImpl(current)) {\n yield* diffEntries(\n (last as DataNodeImpl).entries,\n (current as DataNodeImpl).entries,\n );\n return;\n }\n\n // Now we have two internal nodes with the same level. We compute the diff as\n // splices for the internal node entries. We then flatten these and call diff\n // recursively.\n const initialSplices = computeSplices(\n (last as InternalNodeImpl).entries,\n (current as InternalNodeImpl).entries,\n );\n for (const splice of initialSplices) {\n const [lastChild, currentChild] = await Promise.all([\n (last as InternalNodeImpl).getCompositeChildren(\n splice[SPLICE_AT],\n splice[SPLICE_REMOVED],\n lastTree,\n ),\n (current as InternalNodeImpl).getCompositeChildren(\n splice[SPLICE_FROM],\n splice[SPLICE_ADDED],\n currentTree,\n ),\n ]);\n yield* diffNodes(lastChild, currentChild, lastTree, currentTree);\n }\n}\n\nfunction* diffEntries(\n lastEntries: readonly Entry<FrozenJSONValue>[],\n currentEntries: readonly Entry<FrozenJSONValue>[],\n): IterableIterator<InternalDiffOperation> {\n const lastLength = lastEntries.length;\n const currentLength = currentEntries.length;\n let i = 0;\n let j = 0;\n while (i < lastLength && j < currentLength) {\n const lastKey = lastEntries[i][0];\n const currentKey = currentEntries[j][0];\n if (lastKey === currentKey) {\n if (!deepEqual(lastEntries[i][1], currentEntries[j][1])) {\n yield {\n op: 'change',\n key: lastKey,\n oldValue: lastEntries[i][1],\n newValue: currentEntries[j][1],\n };\n }\n i++;\n j++;\n } else if (lastKey < currentKey) {\n yield {\n op: 'del',\n key: lastKey,\n oldValue: lastEntries[i][1],\n };\n i++;\n } else {\n yield {\n op: 'add',\n key: currentKey,\n newValue: currentEntries[j][1],\n };\n j++;\n }\n }\n for (; i < lastLength; i++) {\n yield {\n op: 'del',\n key: lastEntries[i][0],\n oldValue: lastEntries[i][1],\n };\n }\n for (; j < currentLength; j++) {\n yield {\n op: 'add',\n key: currentEntries[j][0],\n newValue: currentEntries[j][1],\n };\n }\n}\n\n// Redefine the type here to allow the optional size in the tuple.\ntype ReadNodeResult = readonly [\n level: number,\n data: readonly Entry<FrozenJSONValue>[] | readonly Entry<Hash>[],\n];\n\ntype ReadNode = (hash: Hash) => Promise<ReadNodeResult>;\n\nasync function* scanForHash(\n expectedRootHash: Hash,\n getRootHash: () => Hash,\n hash: Hash,\n fromKey: string,\n readNode: ReadNode,\n): AsyncIterableIterator<Entry<FrozenJSONValue>> {\n if (hash === emptyHash) {\n return;\n }\n\n const data = await readNode(hash);\n const entries = data[NODE_ENTRIES];\n let i = 0;\n if (fromKey) {\n i = binarySearch(fromKey, entries);\n }\n if (data[NODE_LEVEL] > 0) {\n for (; i < entries.length; i++) {\n yield* scanForHash(\n expectedRootHash,\n getRootHash,\n (entries[i] as Entry<Hash>)[1],\n fromKey,\n readNode,\n );\n fromKey = '';\n }\n } else {\n for (; i < entries.length; i++) {\n const rootHash = getRootHash();\n // If rootHash changed then we start a new iterator from the key.\n if (expectedRootHash !== rootHash) {\n yield* scanForHash(\n rootHash,\n getRootHash,\n rootHash,\n entries[i][0],\n readNode,\n );\n return;\n }\n yield entries[i] as Entry<FrozenJSONValue>;\n }\n }\n}\n\nexport async function allEntriesAsDiff(\n map: BTreeRead,\n op: 'add' | 'del',\n): Promise<InternalDiff> {\n const diff: InternalDiffOperation[] = [];\n const make: (entry: Entry<FrozenJSONValue>) => InternalDiffOperation =\n op === 'add'\n ? entry => ({\n op: 'add',\n key: entry[0],\n newValue: entry[1],\n })\n : entry => ({\n op: 'del',\n key: entry[0],\n oldValue: entry[1],\n });\n\n for await (const entry of map.entries()) {\n diff.push(make(entry));\n }\n return diff;\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splice.js","names":[],"sources":["../../../../../../replicache/src/btree/splice.ts"],"sourcesContent":["import {deepEqual, type ReadonlyJSONValue} from '../../../shared/src/json.ts';\n\nexport type Splice = [at: number, removed: number, added: number, from: number];\n\nconst SPLICE_UNASSIGNED = -1;\nexport const SPLICE_AT = 0;\nexport const SPLICE_REMOVED = 1;\nexport const SPLICE_ADDED = 2;\nexport const SPLICE_FROM = 3;\n\nconst KEY = 0;\nconst VALUE = 1;\n\ntype Entry<V> = readonly [key: string, value: V, ...rest: unknown[]];\n\nexport function* computeSplices<T>(\n previous: readonly Entry<T>[],\n current: readonly Entry<T>[],\n): Generator<Splice, void> {\n let previousIndex = 0;\n let currentIndex = 0;\n let splice: Splice | undefined;\n\n function ensureAssigned(splice: Splice, index: number): void {\n if (splice[SPLICE_FROM] === SPLICE_UNASSIGNED) {\n splice[SPLICE_FROM] = index;\n }\n }\n\n function newSplice(): Splice {\n return [previousIndex, 0, 0, SPLICE_UNASSIGNED];\n }\n\n while (previousIndex < previous.length && currentIndex < current.length) {\n if (previous[previousIndex][KEY] === current[currentIndex][KEY]) {\n if (\n deepEqual(\n // These are really Hash | InternalValue\n previous[previousIndex][VALUE] as ReadonlyJSONValue,\n current[currentIndex][VALUE] as ReadonlyJSONValue,\n )\n ) {\n if (splice) {\n ensureAssigned(splice, 0);\n yield splice;\n splice = undefined;\n }\n } else {\n if (!splice) {\n splice = newSplice();\n }\n splice[SPLICE_ADDED]++;\n splice[SPLICE_REMOVED]++;\n ensureAssigned(splice, currentIndex);\n }\n previousIndex++;\n currentIndex++;\n } else if (previous[previousIndex][KEY] < current[currentIndex][KEY]) {\n // previous was removed\n if (!splice) {\n splice = newSplice();\n }\n splice[SPLICE_REMOVED]++;\n\n previousIndex++;\n } else {\n // current was added\n if (!splice) {\n splice = newSplice();\n }\n splice[SPLICE_ADDED]++;\n ensureAssigned(splice, currentIndex);\n\n currentIndex++;\n }\n }\n\n if (currentIndex < current.length) {\n if (!splice) {\n splice = newSplice();\n }\n splice[SPLICE_ADDED] += current.length - currentIndex;\n ensureAssigned(splice, currentIndex);\n }\n\n if (previousIndex < previous.length) {\n if (!splice) {\n splice = newSplice();\n }\n splice[SPLICE_REMOVED] += previous.length - previousIndex;\n }\n\n if (splice) {\n ensureAssigned(splice, 0);\n yield splice;\n }\n}\n"],"mappings":";;AAIA,IAAM,oBAAoB;AAM1B,IAAM,MAAM;AACZ,IAAM,QAAQ;AAId,UAAiB,eACf,UACA,SACyB;CACzB,IAAI,gBAAgB;CACpB,IAAI,eAAe;CACnB,IAAI;CAEJ,SAAS,eAAe,QAAgB,OAAqB;EAC3D,IAAI,OAAA,OAAwB,mBAC1B,OAAA,KAAsB;CAE1B;CAEA,SAAS,YAAoB;EAC3B,OAAO;GAAC;GAAe;GAAG;GAAG;EAAiB;CAChD;CAEA,OAAO,gBAAgB,SAAS,UAAU,eAAe,QAAQ,QAC/D,IAAI,SAAS,eAAe,SAAS,QAAQ,cAAc,MAAM;EAC/D,IACE,UAEE,SAAS,eAAe,QACxB,QAAQ,cAAc,MACxB;OAEI,QAAQ;IACV,eAAe,QAAQ,CAAC;IACxB,MAAM;IACN,SAAS,KAAA;GACX;SACK;GACL,IAAI,CAAC,QACH,SAAS,UAAU;GAErB,OAAA;GACA,OAAA;GACA,eAAe,QAAQ,YAAY;EACrC;EACA;EACA;CACF,OAAO,IAAI,SAAS,eAAe,OAAO,QAAQ,cAAc,MAAM;EAEpE,IAAI,CAAC,QACH,SAAS,UAAU;EAErB,OAAA;EAEA;CACF,OAAO;EAEL,IAAI,CAAC,QACH,SAAS,UAAU;EAErB,OAAA;EACA,eAAe,QAAQ,YAAY;EAEnC;CACF;CAGF,IAAI,eAAe,QAAQ,QAAQ;EACjC,IAAI,CAAC,QACH,SAAS,UAAU;EAErB,OAAA,MAAwB,QAAQ,SAAS;EACzC,eAAe,QAAQ,YAAY;CACrC;CAEA,IAAI,gBAAgB,SAAS,QAAQ;EACnC,IAAI,CAAC,QACH,SAAS,UAAU;EAErB,OAAA,MAA0B,SAAS,SAAS;CAC9C;CAEA,IAAI,QAAQ;EACV,eAAe,QAAQ,CAAC;EACxB,MAAM;CACR;AACF"}
@@ -0,0 +1,191 @@
1
+ import { assert } from "../../../shared/src/asserts.js";
2
+ import { emptyHash, newRandomHash } from "../hash.js";
3
+ import { toRefs } from "../dag/chunk.js";
4
+ import { DataNodeImpl, InternalNodeImpl, createNewInternalEntryForNode, emptyDataNode, isDataNodeImpl, newNodeImpl, partition, toChunkData } from "./node.js";
5
+ import { getSizeOfEntry } from "../../../shared/src/size-of-value.js";
6
+ import { BTreeRead } from "./read.js";
7
+ import { Lock } from "@rocicorp/lock";
8
+ //#region ../replicache/src/btree/write.ts
9
+ var BTreeWrite = class extends BTreeRead {
10
+ /**
11
+ * This rw lock is used to ensure we do not mutate the btree in parallel. It
12
+ * would be a problem if we didn't have the lock in cases like this:
13
+ *
14
+ * ```ts
15
+ * const p1 = tree.put('a', 0);
16
+ * const p2 = tree.put('b', 1);
17
+ * await p1;
18
+ * await p2;
19
+ * ```
20
+ *
21
+ * because both `p1` and `p2` would start from the old root hash but a put
22
+ * changes the root hash so the two concurrent puts would lead to only one of
23
+ * them actually working, and it is not deterministic which one would finish
24
+ * last.
25
+ */
26
+ #lock = new Lock();
27
+ #modified = /* @__PURE__ */ new Map();
28
+ minSize;
29
+ maxSize;
30
+ constructor(dagWrite, formatVersion, root = emptyHash, minSize = 8 * 1024, maxSize = 16 * 1024, getEntrySize = getSizeOfEntry, chunkHeaderSize) {
31
+ super(dagWrite, formatVersion, root, getEntrySize, chunkHeaderSize);
32
+ this.minSize = minSize;
33
+ this.maxSize = maxSize;
34
+ }
35
+ #addToModified(node) {
36
+ assert(node.isMutable, "Expected node to be mutable");
37
+ this.#modified.set(node.hash, node);
38
+ this._cache.set(node.hash, node);
39
+ }
40
+ updateNode(node) {
41
+ assert(node.isMutable, "Expected node to be mutable");
42
+ this.#modified.delete(node.hash);
43
+ node.hash = newRandomHash();
44
+ this.#addToModified(node);
45
+ }
46
+ newInternalNodeImpl(entries, level) {
47
+ const n = new InternalNodeImpl(entries, newRandomHash(), level, true);
48
+ this.#addToModified(n);
49
+ return n;
50
+ }
51
+ newDataNodeImpl(entries) {
52
+ const n = new DataNodeImpl(entries, newRandomHash(), true);
53
+ this.#addToModified(n);
54
+ return n;
55
+ }
56
+ newNodeImpl(entries, level) {
57
+ const n = newNodeImpl(entries, newRandomHash(), level, true);
58
+ this.#addToModified(n);
59
+ return n;
60
+ }
61
+ put(key, value) {
62
+ return this.#lock.withLock(async () => {
63
+ const oldRootNode = await this.getNode(this.rootHash);
64
+ const entrySize = this.getEntrySize(key, value);
65
+ const rootNode = await oldRootNode.set(key, value, entrySize, this);
66
+ if (rootNode.getChildNodeSize(this) > this.maxSize) {
67
+ const headerSize = this.chunkHeaderSize;
68
+ const { level } = rootNode;
69
+ const entries = partition(rootNode.entries, (value) => value[2], this.minSize - headerSize, this.maxSize - headerSize, (entries) => {
70
+ return createNewInternalEntryForNode(this.newNodeImpl(entries, level), this.getEntrySize);
71
+ });
72
+ const newRoot = this.newInternalNodeImpl(entries, level + 1);
73
+ this.rootHash = newRoot.hash;
74
+ return;
75
+ }
76
+ this.rootHash = rootNode.hash;
77
+ });
78
+ }
79
+ /**
80
+ * Inserts multiple key-value pairs into the BTree efficiently.
81
+ * The entries array must be sorted by key.
82
+ * @param entries - Array of [key, value] tuples, must be sorted by key
83
+ * @returns Promise that resolves when all entries are inserted
84
+ */
85
+ putMany(entries) {
86
+ return this.#lock.withLock(async () => {
87
+ if (entries.length === 0) return;
88
+ const sizedEntries = entries.map(([k, v], i) => {
89
+ if (i > 0) assert(entries[i - 1][0] < k, `putMany entries must be sorted and unique`);
90
+ return [
91
+ k,
92
+ v,
93
+ this.getEntrySize(k, v)
94
+ ];
95
+ });
96
+ const headerSize = this.chunkHeaderSize;
97
+ const contentMin = this.minSize - headerSize;
98
+ const contentMax = this.maxSize - headerSize;
99
+ if (this.rootHash === emptyHash) {
100
+ const leafPartitions = partition(sizedEntries, (e) => e[2], contentMin, contentMax, (entries) => entries);
101
+ if (leafPartitions.length === 0) return;
102
+ if (leafPartitions.length === 1) {
103
+ const leaf = this.newDataNodeImpl(leafPartitions[0]);
104
+ this.rootHash = leaf.hash;
105
+ return;
106
+ }
107
+ let currentLevel = leafPartitions.map((entries) => this.newDataNodeImpl(entries));
108
+ let level = 0;
109
+ while (currentLevel.length > 1) {
110
+ level++;
111
+ const parentEntriesLength = currentLevel.length;
112
+ for (let i = 0; i < parentEntriesLength; i++) currentLevel[i] = createNewInternalEntryForNode(currentLevel[i], this.getEntrySize);
113
+ currentLevel = partition(currentLevel, (e) => e[2], contentMin, contentMax, (entries) => entries).map((entries) => this.newInternalNodeImpl(entries, level));
114
+ }
115
+ this.rootHash = currentLevel[0].hash;
116
+ return;
117
+ }
118
+ const rootNode = await (await this.getNode(this.rootHash)).putMany(sizedEntries, this);
119
+ if (rootNode.getChildNodeSize(this) > this.maxSize) {
120
+ const { level } = rootNode;
121
+ const entries = partition(rootNode.entries, (e) => e[2], contentMin, contentMax, (partitionEntries) => {
122
+ return createNewInternalEntryForNode(this.newNodeImpl(partitionEntries, level), this.getEntrySize);
123
+ });
124
+ const newRoot = this.newInternalNodeImpl(entries, level + 1);
125
+ this.rootHash = newRoot.hash;
126
+ return;
127
+ }
128
+ this.rootHash = rootNode.hash;
129
+ });
130
+ }
131
+ del(key) {
132
+ return this.#lock.withLock(async () => {
133
+ const newRootNode = await (await this.getNode(this.rootHash)).del(key, this);
134
+ const found = this.rootHash !== newRootNode.hash;
135
+ if (found) if (newRootNode.level > 0 && newRootNode.entries.length === 1) this.rootHash = newRootNode.entries[0][1];
136
+ else this.rootHash = newRootNode.hash;
137
+ return found;
138
+ });
139
+ }
140
+ clear() {
141
+ return this.#lock.withLock(() => {
142
+ this.#modified.clear();
143
+ this.rootHash = emptyHash;
144
+ });
145
+ }
146
+ flush() {
147
+ return this.#lock.withLock(async () => {
148
+ const dagWrite = this._dagRead;
149
+ if (this.rootHash === emptyHash) {
150
+ const chunk = dagWrite.createChunk(emptyDataNode, []);
151
+ await dagWrite.putChunk(chunk);
152
+ return chunk.hash;
153
+ }
154
+ const newChunks = [];
155
+ const newRoot = gatherNewChunks(this.rootHash, newChunks, dagWrite.createChunk, this.#modified, this._formatVersion);
156
+ await Promise.all(newChunks.map((chunk) => dagWrite.putChunk(chunk)));
157
+ this.#modified.clear();
158
+ this.rootHash = newRoot;
159
+ return newRoot;
160
+ });
161
+ }
162
+ };
163
+ function gatherNewChunks(hash, newChunks, createChunk, modified, formatVersion) {
164
+ const node = modified.get(hash);
165
+ if (node === void 0) return hash;
166
+ if (isDataNodeImpl(node)) {
167
+ const chunk = createChunk(toChunkData(node, formatVersion), []);
168
+ newChunks.push(chunk);
169
+ return chunk.hash;
170
+ }
171
+ const refs = [];
172
+ const { entries } = node;
173
+ for (let i = 0; i < entries.length; i++) {
174
+ const entry = entries[i];
175
+ const childHash = entry[1];
176
+ const newChildHash = gatherNewChunks(childHash, newChunks, createChunk, modified, formatVersion);
177
+ if (newChildHash !== childHash) entries[i] = [
178
+ entry[0],
179
+ newChildHash,
180
+ entry[2]
181
+ ];
182
+ refs.push(newChildHash);
183
+ }
184
+ const chunk = createChunk(toChunkData(node, formatVersion), toRefs(refs));
185
+ newChunks.push(chunk);
186
+ return chunk.hash;
187
+ }
188
+ //#endregion
189
+ export { BTreeWrite };
190
+
191
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","names":["#lock","#modified","#addToModified"],"sources":["../../../../../../replicache/src/btree/write.ts"],"sourcesContent":["import {Lock} from '@rocicorp/lock';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {getSizeOfEntry} from '../../../shared/src/size-of-value.ts';\nimport {type Chunk, type CreateChunk, toRefs} from '../dag/chunk.ts';\nimport type {Write} from '../dag/store.ts';\nimport type * as FormatVersion from '../format-version-enum.ts';\nimport type {FrozenJSONValue} from '../frozen-json.ts';\nimport {type Hash, emptyHash, newRandomHash} from '../hash.ts';\nimport {\n DataNodeImpl,\n type Entry,\n InternalNodeImpl,\n createNewInternalEntryForNode,\n emptyDataNode,\n isDataNodeImpl,\n newNodeImpl,\n partition,\n toChunkData,\n} from './node.ts';\nimport {BTreeRead} from './read.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nexport class BTreeWrite extends BTreeRead {\n /**\n * This rw lock is used to ensure we do not mutate the btree in parallel. It\n * would be a problem if we didn't have the lock in cases like this:\n *\n * ```ts\n * const p1 = tree.put('a', 0);\n * const p2 = tree.put('b', 1);\n * await p1;\n * await p2;\n * ```\n *\n * because both `p1` and `p2` would start from the old root hash but a put\n * changes the root hash so the two concurrent puts would lead to only one of\n * them actually working, and it is not deterministic which one would finish\n * last.\n */\n readonly #lock = new Lock();\n readonly #modified: Map<Hash, DataNodeImpl | InternalNodeImpl> = new Map();\n\n declare protected _dagRead: Write;\n\n readonly minSize: number;\n readonly maxSize: number;\n\n constructor(\n dagWrite: Write,\n formatVersion: FormatVersion,\n root: Hash = emptyHash,\n minSize = 8 * 1024,\n maxSize = 16 * 1024,\n getEntrySize: <K, V>(k: K, v: V) => number = getSizeOfEntry,\n chunkHeaderSize?: number,\n ) {\n super(dagWrite, formatVersion, root, getEntrySize, chunkHeaderSize);\n\n this.minSize = minSize;\n this.maxSize = maxSize;\n }\n\n #addToModified(node: DataNodeImpl | InternalNodeImpl): void {\n assert(node.isMutable, 'Expected node to be mutable');\n this.#modified.set(node.hash, node);\n this._cache.set(node.hash, node);\n }\n\n updateNode(node: DataNodeImpl | InternalNodeImpl): void {\n assert(node.isMutable, 'Expected node to be mutable');\n this.#modified.delete(node.hash);\n node.hash = newRandomHash();\n this.#addToModified(node);\n }\n\n newInternalNodeImpl(\n entries: Array<Entry<Hash>>,\n level: number,\n ): InternalNodeImpl {\n const n = new InternalNodeImpl(entries, newRandomHash(), level, true);\n this.#addToModified(n);\n return n;\n }\n\n newDataNodeImpl(entries: Entry<FrozenJSONValue>[]): DataNodeImpl {\n const n = new DataNodeImpl(entries, newRandomHash(), true);\n this.#addToModified(n);\n return n;\n }\n\n newNodeImpl(entries: Entry<FrozenJSONValue>[], level: number): DataNodeImpl;\n newNodeImpl(entries: Entry<Hash>[], level: number): InternalNodeImpl;\n newNodeImpl(\n entries: Entry<Hash>[] | Entry<FrozenJSONValue>[],\n level: number,\n ): InternalNodeImpl | DataNodeImpl;\n newNodeImpl(\n entries: Entry<Hash>[] | Entry<FrozenJSONValue>[],\n level: number,\n ): InternalNodeImpl | DataNodeImpl {\n const n = newNodeImpl(entries, newRandomHash(), level, true);\n this.#addToModified(n);\n return n;\n }\n\n put(key: string, value: FrozenJSONValue): Promise<void> {\n return this.#lock.withLock(async () => {\n const oldRootNode = await this.getNode(this.rootHash);\n const entrySize = this.getEntrySize(key, value);\n const rootNode = await oldRootNode.set(key, value, entrySize, this);\n\n // We do the rebalancing in the parent so we need to do it here as well.\n if (rootNode.getChildNodeSize(this) > this.maxSize) {\n const headerSize = this.chunkHeaderSize;\n const {level} = rootNode;\n const entries = partition(\n rootNode.entries,\n value => value[2],\n this.minSize - headerSize,\n this.maxSize - headerSize,\n entries => {\n const node = this.newNodeImpl(entries, level);\n return createNewInternalEntryForNode(node, this.getEntrySize);\n },\n );\n const newRoot = this.newInternalNodeImpl(entries, level + 1);\n this.rootHash = newRoot.hash;\n return;\n }\n\n this.rootHash = rootNode.hash;\n });\n }\n\n /**\n * Inserts multiple key-value pairs into the BTree efficiently.\n * The entries array must be sorted by key.\n * @param entries - Array of [key, value] tuples, must be sorted by key\n * @returns Promise that resolves when all entries are inserted\n */\n putMany(\n entries: ReadonlyArray<readonly [string, FrozenJSONValue]>,\n ): Promise<void> {\n return this.#lock.withLock(async () => {\n if (entries.length === 0) {\n return;\n }\n\n // Validate sortedness and convert to sized entries in one pass\n const sizedEntries: Entry<FrozenJSONValue>[] = entries.map(\n ([k, v], i) => {\n if (i > 0) {\n assert(\n entries[i - 1][0] < k,\n `putMany entries must be sorted and unique`,\n );\n }\n return [k, v, this.getEntrySize(k, v)];\n },\n );\n\n // Compute content size constraints\n const headerSize = this.chunkHeaderSize;\n const contentMin = this.minSize - headerSize;\n const contentMax = this.maxSize - headerSize;\n\n // Fast path: if tree is empty, use bulk loading algorithm\n if (this.rootHash === emptyHash) {\n // Build leaf nodes\n const leafPartitions = partition(\n sizedEntries,\n e => e[2],\n contentMin,\n contentMax,\n entries => entries,\n );\n\n if (leafPartitions.length === 0) {\n return;\n }\n\n if (leafPartitions.length === 1) {\n const leaf = this.newDataNodeImpl(leafPartitions[0]);\n this.rootHash = leaf.hash;\n return;\n }\n\n // Build tree bottom-up - reuse array to avoid allocations\n let currentLevel: Array<DataNodeImpl | InternalNodeImpl | Entry<Hash>> =\n leafPartitions.map(entries => this.newDataNodeImpl(entries));\n let level = 0;\n\n while (currentLevel.length > 1) {\n level++;\n\n // Create entries pointing to current level nodes - reuse array\n const parentEntriesLength = currentLevel.length;\n for (let i = 0; i < parentEntriesLength; i++) {\n currentLevel[i] = createNewInternalEntryForNode(\n currentLevel[i] as DataNodeImpl | InternalNodeImpl,\n this.getEntrySize,\n );\n }\n\n // Partition parent entries\n const parentPartitions = partition(\n currentLevel as Entry<Hash>[],\n e => e[2],\n contentMin,\n contentMax,\n entries => entries,\n );\n\n // Create internal nodes\n currentLevel = parentPartitions.map(entries =>\n this.newInternalNodeImpl(entries, level),\n );\n }\n\n this.rootHash = (\n currentLevel[0] as DataNodeImpl | InternalNodeImpl\n ).hash;\n return;\n }\n\n // Slow path: merge with existing tree\n const oldRootNode = await this.getNode(this.rootHash);\n const rootNode = await oldRootNode.putMany(sizedEntries, this);\n\n // We do the rebalancing in the parent so we need to do it here as well.\n if (rootNode.getChildNodeSize(this) > this.maxSize) {\n const {level} = rootNode;\n const entries: Entry<Hash>[] = partition(\n rootNode.entries,\n e => e[2],\n contentMin,\n contentMax,\n partitionEntries => {\n const node = this.newNodeImpl(partitionEntries, level);\n return createNewInternalEntryForNode(node, this.getEntrySize);\n },\n );\n const newRoot = this.newInternalNodeImpl(entries, level + 1);\n this.rootHash = newRoot.hash;\n return;\n }\n\n this.rootHash = rootNode.hash;\n });\n }\n\n del(key: string): Promise<boolean> {\n return this.#lock.withLock(async () => {\n const oldRootNode = await this.getNode(this.rootHash);\n const newRootNode = await oldRootNode.del(key, this);\n\n // No need to rebalance here since if root gets too small there is nothing\n // we can do about that.\n const found = this.rootHash !== newRootNode.hash;\n if (found) {\n // Flatten one layer.\n if (newRootNode.level > 0 && newRootNode.entries.length === 1) {\n this.rootHash = (newRootNode as InternalNodeImpl).entries[0][1];\n } else {\n this.rootHash = newRootNode.hash;\n }\n }\n\n return found;\n });\n }\n\n clear(): Promise<void> {\n return this.#lock.withLock(() => {\n this.#modified.clear();\n this.rootHash = emptyHash;\n });\n }\n\n flush(): Promise<Hash> {\n return this.#lock.withLock(async () => {\n const dagWrite = this._dagRead;\n\n if (this.rootHash === emptyHash) {\n // Write a chunk for the empty tree.\n const chunk = dagWrite.createChunk(emptyDataNode, []);\n await dagWrite.putChunk(chunk as Chunk<ReadonlyJSONValue>);\n return chunk.hash;\n }\n\n const newChunks: Chunk[] = [];\n const newRoot = gatherNewChunks(\n this.rootHash,\n newChunks,\n dagWrite.createChunk,\n this.#modified,\n this._formatVersion,\n );\n await Promise.all(newChunks.map(chunk => dagWrite.putChunk(chunk)));\n this.#modified.clear();\n this.rootHash = newRoot;\n return newRoot;\n });\n }\n}\n\nfunction gatherNewChunks(\n hash: Hash,\n newChunks: Chunk[],\n createChunk: CreateChunk,\n modified: Map<Hash, DataNodeImpl | InternalNodeImpl>,\n formatVersion: FormatVersion,\n): Hash {\n const node = modified.get(hash);\n if (node === undefined) {\n // Not modified, use the original.\n return hash;\n }\n\n if (isDataNodeImpl(node)) {\n const chunk = createChunk(toChunkData(node, formatVersion), []);\n newChunks.push(chunk);\n return chunk.hash;\n }\n\n // The BTree cannot have duplicate keys so the child entry hashes are unique.\n // No need fot a set to dedupe here.\n const refs: Hash[] = [];\n const {entries} = node;\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n const childHash = entry[1];\n const newChildHash = gatherNewChunks(\n childHash,\n newChunks,\n createChunk,\n modified,\n formatVersion,\n );\n if (newChildHash !== childHash) {\n // MUTATES the entries!\n // Hashes do not change the size of the entry because all hashes have the same length\n entries[i] = [entry[0], newChildHash, entry[2]];\n }\n refs.push(newChildHash);\n }\n const chunk = createChunk(toChunkData(node, formatVersion), toRefs(refs));\n newChunks.push(chunk);\n return chunk.hash;\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-default-fetch.js","names":[],"sources":["../../../../../replicache/src/call-default-fetch.ts"],"sourcesContent":["import type {HTTPRequestInfo} from './http-request-info.ts';\n\n/**\n * Helper function for {@link getDefaultPuller} and {@link getDefaultPusher}.\n */\nexport async function callDefaultFetch<Body>(\n url: string,\n auth: string,\n requestID: string,\n requestBody: Body,\n): Promise<readonly [Response | undefined, HTTPRequestInfo]> {\n const init = {\n headers: {\n 'Content-type': 'application/json',\n 'Authorization': auth,\n 'X-Replicache-RequestID': requestID,\n },\n body: JSON.stringify(requestBody),\n method: 'POST',\n };\n const request = new Request(url, init);\n const response = await fetch(request);\n const httpStatusCode = response.status;\n if (httpStatusCode !== 200) {\n return [\n undefined,\n {\n httpStatusCode,\n errorMessage: await response.text(),\n },\n ];\n }\n return [\n response,\n {\n httpStatusCode,\n errorMessage: '',\n },\n ];\n}\n"],"mappings":";;;;AAKA,eAAsB,iBACpB,KACA,MACA,WACA,aAC2D;CAC3D,MAAM,OAAO;EACX,SAAS;GACP,gBAAgB;GAChB,iBAAiB;GACjB,0BAA0B;EAC5B;EACA,MAAM,KAAK,UAAU,WAAW;EAChC,QAAQ;CACV;CACA,MAAM,UAAU,IAAI,QAAQ,KAAK,IAAI;CACrC,MAAM,WAAW,MAAM,MAAM,OAAO;CACpC,MAAM,iBAAiB,SAAS;CAChC,IAAI,mBAAmB,KACrB,OAAO,CACL,KAAA,GACA;EACE;EACA,cAAc,MAAM,SAAS,KAAK;CACpC,CACF;CAEF,OAAO,CACL,UACA;EACE;EACA,cAAc;CAChB,CACF;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-loop-delegates.js","names":[],"sources":["../../../../../replicache/src/connection-loop-delegates.ts"],"sourcesContent":["import type {ConnectionLoopDelegate} from './connection-loop.ts';\nimport type {ReplicacheImpl} from './replicache-impl.ts';\n\nclass ConnectionLoopDelegateImpl {\n readonly rep: ReplicacheImpl;\n readonly invokeSend: () => Promise<boolean>;\n\n // TODO: Remove the ability to have more than one concurrent connection and update tests.\n // Bug: https://github.com/rocicorp/replicache-internal/issues/303\n readonly maxConnections = 1;\n\n constructor(rep: ReplicacheImpl, invokeSend: () => Promise<boolean>) {\n this.rep = rep;\n this.invokeSend = invokeSend;\n }\n\n get maxDelayMs(): number {\n return this.rep.requestOptions.maxDelayMs;\n }\n\n get minDelayMs(): number {\n return this.rep.requestOptions.minDelayMs;\n }\n}\n\nexport class PullDelegate\n extends ConnectionLoopDelegateImpl\n implements ConnectionLoopDelegate\n{\n readonly debounceDelay = 0;\n\n get watchdogTimer(): number | null {\n return this.rep.pullInterval;\n }\n}\n\nexport class PushDelegate\n extends ConnectionLoopDelegateImpl\n implements ConnectionLoopDelegate\n{\n get debounceDelay(): number {\n return this.rep.pushDelay;\n }\n\n watchdogTimer = null;\n}\n"],"mappings":";AAGA,IAAM,6BAAN,MAAiC;CAC/B;CACA;CAIA,iBAA0B;CAE1B,YAAY,KAAqB,YAAoC;EACnE,KAAK,MAAM;EACX,KAAK,aAAa;CACpB;CAEA,IAAI,aAAqB;EACvB,OAAO,KAAK,IAAI,eAAe;CACjC;CAEA,IAAI,aAAqB;EACvB,OAAO,KAAK,IAAI,eAAe;CACjC;AACF;AAEA,IAAa,eAAb,cACU,2BAEV;CACE,gBAAyB;CAEzB,IAAI,gBAA+B;EACjC,OAAO,KAAK,IAAI;CAClB;AACF;AAEA,IAAa,eAAb,cACU,2BAEV;CACE,IAAI,gBAAwB;EAC1B,OAAO,KAAK,IAAI;CAClB;CAEA,gBAAgB;AAClB"}