@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":"view-syncer.js","names":["#shard","#lc","#pipelines","#stateChanges","#drainCoordinator","#keepaliveMs","#slowHydrateThreshold","#clients","#lock","#cvrStore","#stopped","#initialized","#setTimeout","#customQueryTransformer","#queryReplacements","#activeClients","#hydrations","#hydrationTime","#transactionAdvanceTime","#queryTransformations","#queryTransformationTime","#queryTransformationHashChanges","#queryTransformationNoOps","#lockWaitTime","#pipelineResets","#rowSetSignatureDrifts","#inspectorDelegate","#config","#runPriorityOp","#expiredQueriesTimer","#checkForShutdownConditionsInLock","#cvr","#lastConnectTime","#ttlClock","#ttlClockBase","#getTTLClock","#scheduleAuthMaintenance","#runInLockWithCVR","#pipelinesSynced","#advancePipelines","#hydrateUnchangedQueries","#syncQueryPipelineSet","#totalHydrationTimeMs","#cleanup","#scheduleExpireEviction","#keepAliveUntil","#shutdownTimer","#scheduleShutdown","#updateTTLClockInCVRWithoutLock","#stopExpireTimer","#authMaintenanceTimer","#stopAuthMaintenanceTimer","#runAuthMaintenance","#validateConnection","#runBackgroundRetransform","#deleteClientDueToDisconnect","#runInLockForClient","#handleConfigUpdate","#startTTLClockInterval","#stopTTLClockInterval","#ttlClockInterval","#updateCVRConfig","#flushUpdater","#getClients","#removeExpiredQueries","#addQueryMaterializationServerMetric","#sendQueryTransformErrorToClients","#processTransformedCustomQueries","#checkForThrashing","#addAndRemoveQueries","#catchupClients","#processChanges","#handleInspect","#failMaintenanceConnection","#total","#startLap","#stopLap","#start"],"sources":["../../../../../../../zero-cache/src/services/view-syncer/view-syncer.ts"],"sourcesContent":["import {Lock} from '@rocicorp/lock';\nimport type {LogContext} from '@rocicorp/logger';\nimport {resolver} from '@rocicorp/resolver';\nimport type {Row} from 'postgres';\nimport {\n manualSpan,\n startAsyncSpan,\n startSpan,\n} from '../../../../otel/src/span.ts';\nimport {assert, unreachable} from '../../../../shared/src/asserts.ts';\nimport {stringify} from '../../../../shared/src/bigint-json.ts';\nimport {CustomKeyMap} from '../../../../shared/src/custom-key-map.ts';\nimport {must} from '../../../../shared/src/must.ts';\nimport {randInt} from '../../../../shared/src/rand.ts';\nimport type {AST} from '../../../../zero-protocol/src/ast.ts';\nimport type {ChangeDesiredQueriesMessage} from '../../../../zero-protocol/src/change-desired-queries.ts';\nimport type {\n InitConnectionBody,\n InitConnectionMessage,\n} from '../../../../zero-protocol/src/connect.ts';\nimport type {ErroredQuery} from '../../../../zero-protocol/src/custom-queries.ts';\nimport type {DeleteClientsMessage} from '../../../../zero-protocol/src/delete-clients.ts';\nimport type {Downstream} from '../../../../zero-protocol/src/down.ts';\nimport {ErrorKind} from '../../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../../zero-protocol/src/error-origin.ts';\nimport {\n isProtocolError,\n ProtocolError,\n type TransformFailedBody,\n} from '../../../../zero-protocol/src/error.ts';\nimport type {\n InspectUpBody,\n InspectUpMessage,\n} from '../../../../zero-protocol/src/inspect-up.ts';\nimport type {UpdateAuthMessage} from '../../../../zero-protocol/src/update-auth.ts';\nimport {ChangeType} from '../../../../zql/src/ivm/change-type.ts';\nimport {clampTTL, MAX_TTL_MS} from '../../../../zql/src/query/ttl.ts';\nimport {isAuthErrorBody, type Auth} from '../../auth/auth.ts';\nimport {\n transformAndHashQuery,\n type TransformedAndHashed,\n} from '../../auth/read-authorizer.ts';\nimport type {NormalizedZeroConfig} from '../../config/normalize.ts';\nimport type {\n CustomQueryTransformer,\n HashedTransformResponse,\n} from '../../custom-queries/transform-query.ts';\nimport {\n getOrCreateCounter,\n getOrCreateLatencyHistogram,\n getOrCreateUpDownCounter,\n} from '../../observability/metrics.ts';\nimport type {InspectorDelegate} from '../../server/inspector-delegate.ts';\nimport {\n getLogLevel,\n ProtocolErrorWithLevel,\n wrapWithProtocolError,\n} from '../../types/error-with-level.ts';\nimport type {PostgresDB} from '../../types/pg.ts';\nimport {rowIDString, type RowKey} from '../../types/row-key.ts';\nimport type {ShardID} from '../../types/shards.ts';\nimport type {Source} from '../../types/streams.ts';\nimport {Subscription} from '../../types/subscription.ts';\nimport type {ReplicaState} from '../replicator/replicator.ts';\nimport {ZERO_VERSION_COLUMN_NAME} from '../replicator/schema/replication-state.ts';\nimport type {ActivityBasedService} from '../service.ts';\nimport {\n ClientHandler,\n startPoke,\n type PatchToVersion,\n type PokeHandler,\n type RowPatch,\n} from './client-handler.ts';\nimport type {\n ConnectionContext,\n ConnectionContextManager,\n ConnectionSelector,\n ConnectionValidation,\n} from './connection-context-manager.ts';\nimport {ClientNotFoundError, CVRStore} from './cvr-store.ts';\nimport type {CVRUpdater} from './cvr.ts';\nimport {\n CVRConfigDrivenUpdater,\n CVRQueryDrivenUpdater,\n nextEvictionTime,\n type CVRSnapshot,\n type RowUpdate,\n} from './cvr.ts';\nimport type {DrainCoordinator} from './drain-coordinator.ts';\nimport {handleInspect} from './inspect-handler.ts';\nimport type {PipelineDriver} from './pipeline-driver.ts';\nimport {type RowChange} from './pipeline-driver.ts';\nimport {parseSignature} from './row-set-signature.ts';\nimport {\n cmpVersions,\n EMPTY_CVR_VERSION,\n versionFromString,\n versionString,\n versionToCookie,\n type ClientQueryRecord,\n type CustomQueryRecord,\n type CVRVersion,\n type InternalQueryRecord,\n type NullableCVRVersion,\n type QueryRecord,\n type RowID,\n} from './schema/types.ts';\nimport {ResetPipelinesSignal} from './snapshotter.ts';\nimport {tracer} from './tracer.ts';\nimport {\n ttlClockAsNumber,\n ttlClockFromNumber,\n type TTLClock,\n} from './ttl-clock.ts';\n\nconst PROTOCOL_VERSION_ATTR = 'protocol.version';\n\nexport interface ViewSyncer {\n initConnection(\n selector: ConnectionSelector,\n initConnectionMessage: InitConnectionMessage,\n ): Source<Downstream>;\n\n changeDesiredQueries(\n selector: ConnectionSelector,\n msg: ChangeDesiredQueriesMessage,\n ): Promise<void>;\n\n deleteClients(\n selector: ConnectionSelector,\n msg: DeleteClientsMessage,\n ): Promise<string[]>;\n\n inspect(selector: ConnectionSelector, msg: InspectUpMessage): Promise<void>;\n updateAuth(\n selector: ConnectionSelector,\n msg: UpdateAuthMessage,\n authRevisionChanged: boolean,\n ): Promise<void>;\n\n // Connection context management is owned by the view syncer for disconnect cleanup.\n connContextManager: ConnectionContextManager;\n\n readonly queryCount: number;\n readonly rowCount: number;\n}\n\nexport type SyncContext = ConnectionSelector & {\n readonly profileID: string | null;\n readonly baseCookie: string | null;\n readonly protocolVersion: number;\n readonly httpCookie: string | undefined;\n readonly origin: string | undefined;\n readonly userID: string | undefined;\n readonly auth: Auth | undefined;\n};\n\nconst DEFAULT_KEEPALIVE_MS = 5_000;\n\nfunction randomID() {\n return randInt(1, Number.MAX_SAFE_INTEGER).toString(36);\n}\n\nfunction shutdownBeforeInitializationError(): ProtocolErrorWithLevel {\n return new ProtocolErrorWithLevel(\n {\n kind: ErrorKind.Internal,\n message: 'shut down before initialization completed',\n origin: ErrorOrigin.ZeroCache,\n },\n 'warn',\n );\n}\n\ntype SetTimeout = (\n fn: (...args: unknown[]) => void,\n delay?: number,\n) => ReturnType<typeof setTimeout>;\n\n/**\n * We update the ttlClock in flush that writes to the CVR but\n * some flushes do not write to the CVR and in those cases we\n * use a timer to update the ttlClock every minute.\n */\nexport const TTL_CLOCK_INTERVAL = 60_000;\n\n/**\n * This is some extra time we delay the TTL timer to allow for some\n * slack in the timing of the timer. This is to allow multiple evictions\n * to happen in a short period of time without having to wait for the\n * next tick of the timer.\n */\nexport const TTL_TIMER_HYSTERESIS = 50; // ms\n\ntype CustomQueryTransformMode = 'all' | 'missing';\n\nexport class ViewSyncerService implements ViewSyncer, ActivityBasedService {\n readonly id: string;\n // Centralized connection/group auth bookkeeping plus maintenance policy.\n // Network validation still happens in ViewSyncerService.\n readonly connContextManager: ConnectionContextManager;\n\n readonly #shard: ShardID;\n readonly #lc: LogContext;\n readonly #pipelines: PipelineDriver;\n readonly #stateChanges: Subscription<ReplicaState>;\n readonly #drainCoordinator: DrainCoordinator;\n readonly #keepaliveMs: number;\n readonly #slowHydrateThreshold: number;\n\n // The ViewSyncerService is only started in response to a connection,\n // so #lastConnectTime is always initialized to now(). This is necessary\n // to handle race conditions in which, e.g. the replica is ready and the\n // CVR is accessed before the first connection sends a request.\n //\n // Note: It is fine to update this variable outside of the lock.\n #lastConnectTime = Date.now();\n\n /**\n * The TTL clock is used to determine the time at which queries are considered\n * expired.\n */\n #ttlClock: TTLClock | undefined;\n\n /**\n * The base time for the TTL clock. This is used to compute the current TTL\n * clock value. The first time a connection is made, this is set to the\n * current time. On subsequent connections, the TTL clock is computed as the\n * difference between the current time and this base time.\n *\n * Every time we write the ttlClock this is update to the current time. That\n * way we can compute how much time has passed since the last time we set the\n * ttlClock. When we set the ttlClock we just increment it by the amount of\n * time that has passed since the last time we set it.\n */\n #ttlClockBase = Date.now();\n\n /**\n * We update the ttlClock every minute to ensure that it is not too much\n * out of sync with the current time.\n */\n #ttlClockInterval: ReturnType<SetTimeout> | 0 = 0;\n\n // Note: It is okay to add/remove clients without acquiring the lock.\n readonly #clients = new Map<string, ClientHandler>();\n\n // Serialize on this lock for:\n // (1) storage or database-dependent operations\n // (2) updating member variables.\n readonly #lock = new Lock();\n readonly #cvrStore: CVRStore;\n readonly #stopped = resolver();\n readonly #initialized = resolver<'initialized'>();\n\n #cvr: CVRSnapshot | undefined;\n #pipelinesSynced = false;\n\n #expiredQueriesTimer: ReturnType<SetTimeout> | 0 = 0;\n #authMaintenanceTimer: ReturnType<SetTimeout> | 0 = 0;\n readonly #setTimeout: SetTimeout;\n readonly #customQueryTransformer: CustomQueryTransformer | undefined;\n\n // Track query replacements for thrashing detection\n readonly #queryReplacements = new Map<\n string,\n {count: number; windowStart: number}\n >();\n\n readonly #activeClients = getOrCreateUpDownCounter(\n 'sync',\n 'active-clients',\n 'Number of active sync clients',\n );\n readonly #hydrations = getOrCreateCounter(\n 'sync',\n 'hydration',\n 'Number of query hydrations',\n );\n readonly #hydrationTime = getOrCreateLatencyHistogram(\n 'sync',\n 'hydration-time',\n 'Time to hydrate a query.',\n );\n readonly #transactionAdvanceTime = getOrCreateLatencyHistogram(\n 'sync',\n 'advance-time',\n 'Time to advance all queries for a given client group after applying a new transaction to the replica.',\n );\n readonly #queryTransformations = getOrCreateCounter(\n 'sync',\n 'query.transformations',\n 'Number of query transformations performed',\n );\n readonly #queryTransformationTime = getOrCreateLatencyHistogram(\n 'sync',\n 'query.transformation-time',\n 'Time to transform custom queries via API server.',\n );\n readonly #queryTransformationHashChanges = getOrCreateCounter(\n 'sync',\n 'query.transformation-hash-changes',\n 'Number of times query transformation hash changed',\n );\n readonly #queryTransformationNoOps = getOrCreateCounter(\n 'sync',\n 'query.transformation-no-ops',\n 'Number of times query transformation resulted in no-op (hash unchanged)',\n );\n readonly #lockWaitTime = getOrCreateLatencyHistogram(\n 'sync',\n 'lock-wait-time',\n 'Time spent waiting to acquire the ViewSyncer lock.',\n );\n readonly #pipelineResets = getOrCreateCounter(\n 'sync',\n 'pipeline-resets',\n 'Number of pipeline resets',\n );\n readonly #rowSetSignatureDrifts = getOrCreateCounter(\n 'sync',\n 'query.row-set-signature-drifts',\n 'Number of times re-hydration of an unchanged query produced a different ' +\n 'row-set signature than what is stored in the CVR (forcing a configVersion ' +\n 'bump and full re-execution). Expected to be near-zero in steady state; ' +\n 'persistent non-zero values indicate non-deterministic query execution ' +\n '(e.g. Cap operator picking different N-row subsets).',\n );\n\n readonly #inspectorDelegate: InspectorDelegate;\n\n readonly #config: NormalizedZeroConfig;\n #runPriorityOp: <T>(\n lc: LogContext,\n description: string,\n op: () => Promise<T>,\n ) => Promise<T>;\n\n constructor(\n config: NormalizedZeroConfig,\n lc: LogContext,\n shard: ShardID,\n taskID: string,\n clientGroupID: string,\n cvrDb: PostgresDB,\n pipelineDriver: PipelineDriver,\n versionChanges: Subscription<ReplicaState>,\n drainCoordinator: DrainCoordinator,\n slowHydrateThreshold: number,\n inspectorDelegate: InspectorDelegate,\n connContextManager: ConnectionContextManager,\n customQueryTransformer: CustomQueryTransformer | undefined,\n runPriorityOp: <T>(\n lc: LogContext,\n description: string,\n op: () => Promise<T>,\n ) => Promise<T>,\n keepaliveMs = DEFAULT_KEEPALIVE_MS,\n setTimeoutFn: SetTimeout = setTimeout.bind(globalThis),\n ) {\n this.#config = config;\n this.id = clientGroupID;\n this.connContextManager = connContextManager;\n this.#shard = shard;\n this.#lc = lc;\n this.#pipelines = pipelineDriver;\n this.#stateChanges = versionChanges;\n this.#drainCoordinator = drainCoordinator;\n this.#keepaliveMs = keepaliveMs;\n this.#slowHydrateThreshold = slowHydrateThreshold;\n this.#inspectorDelegate = inspectorDelegate;\n this.#customQueryTransformer = customQueryTransformer;\n this.#cvrStore = new CVRStore(\n lc,\n cvrDb,\n shard,\n taskID,\n clientGroupID,\n // On failure, cancel the #stateChanges subscription. The run()\n // loop will then await #cvrStore.flushed() which rejects if necessary.\n () => this.#stateChanges.cancel(),\n );\n this.#setTimeout = setTimeoutFn;\n this.#runPriorityOp = runPriorityOp;\n // Wait for the first connection to init.\n this.keepalive();\n }\n\n #runInLockWithCVR(\n fn: (lc: LogContext, cvr: CVRSnapshot) => Promise<void> | void,\n ): Promise<void> {\n const rid = randomID();\n this.#lc.debug?.('about to acquire lock for cvr ', rid);\n const lockWaitStart = performance.now();\n return this.#lock.withLock(async () => {\n this.#lockWaitTime.recordMs(performance.now() - lockWaitStart);\n this.#lc.debug?.('acquired lock in #runInLockWithCVR ', rid);\n const lc = this.#lc.withContext('lock', rid);\n if (!this.#stateChanges.active) {\n // view-syncer has been shutdown. this can be a backlog of tasks\n // queued on the lock, or it can be a race condition in which a\n // client connects before the ViewSyncer has been deleted from the\n // ServiceRunner.\n this.#lc.debug?.('state changes are inactive');\n clearTimeout(this.#expiredQueriesTimer);\n throw new ProtocolErrorWithLevel(\n {\n kind: ErrorKind.Rehome,\n message: 'Reconnect required',\n origin: ErrorOrigin.ZeroCache,\n },\n 'info',\n );\n }\n // If all clients have disconnected, cancel all pending work.\n if (await this.#checkForShutdownConditionsInLock()) {\n this.#lc.info?.(`closing clientGroupID=${this.id}`);\n // Reject #initialized so that run() unblocks if it is still\n // waiting on readyState(). This is a no-op if already resolved.\n this.#initialized.reject(shutdownBeforeInitializationError());\n this.#stateChanges.cancel(); // Note: #stateChanges.active becomes false.\n return;\n }\n if (!this.#cvr) {\n this.#lc.debug?.('loading cvr');\n this.#cvr = await this.#runPriorityOp(lc, 'loading cvr', () =>\n this.#cvrStore.load(lc, this.#lastConnectTime),\n );\n this.#ttlClock = this.#cvr.ttlClock;\n this.#ttlClockBase = Date.now();\n } else {\n // Make sure the CVR ttlClock is up to date.\n const now = Date.now();\n this.#cvr = {\n ...this.#cvr,\n ttlClock: this.#getTTLClock(now),\n };\n }\n\n try {\n await fn(lc, this.#cvr);\n } catch (e) {\n // Clear cached state if an error is encountered.\n this.#cvr = undefined;\n throw e;\n } finally {\n // Lock-scoped work is where validated connections gain or lose\n // schedulable auth-maintenance deadlines. Recompute the single wakeup\n // after every locked operation; out-of-lock fail/close transitions only\n // clear or relax deadlines, so a stale earlier wakeup is harmless.\n this.#scheduleAuthMaintenance(lc);\n }\n });\n }\n\n readyState(): Promise<'initialized' | 'draining'> {\n return Promise.race([\n this.#initialized.promise,\n this.#drainCoordinator.draining,\n ]);\n }\n\n async run(): Promise<void> {\n try {\n // Wait for initialization if we need to process queries.\n // This ensures authData and cvr.clientSchema are available before\n // transforming custom queries (dependency on authData) and building\n // pipelines (dependency on cvr.clientSchema).\n if ((await this.readyState()) === 'draining') {\n this.#lc.debug?.(`draining view-syncer ${this.id} before running`);\n void this.stop();\n }\n for await (const {state} of this.#stateChanges) {\n if (this.#drainCoordinator.shouldDrain()) {\n this.#lc.debug?.(`draining view-syncer ${this.id} (elective)`);\n break;\n }\n assert(state === 'version-ready', 'state should be version-ready'); // This is the only state change used.\n\n await this.#runInLockWithCVR(async (lc, cvr) => {\n const clientSchema = must(\n cvr.clientSchema,\n 'cvr.clientSchema missing after initialization',\n );\n if (!this.#pipelines.initialized()) {\n // On the first version-ready signal, connect to the replica.\n this.#pipelines.init(clientSchema);\n }\n if (\n cvr.replicaVersion !== null &&\n cvr.version.stateVersion !== '00' &&\n this.#pipelines.replicaVersion < cvr.replicaVersion\n ) {\n const message = `Cannot sync from older replica: CVR=${\n cvr.replicaVersion\n }, DB=${this.#pipelines.replicaVersion}`;\n lc.info?.(`resetting CVR: ${message}`);\n throw new ClientNotFoundError(message);\n }\n\n if (this.#pipelinesSynced) {\n const result = await this.#advancePipelines(lc, cvr);\n if (result === 'success') {\n return;\n }\n lc.info?.(`resetting pipelines: ${result.message}`);\n this.#pipelineResets.add(1, {reason: result.reason});\n this.#pipelines.reset(clientSchema);\n this.#pipelinesSynced = false;\n this.connContextManager.setSharedRetransformReady(false);\n }\n\n // Advance the snapshot to the current version.\n const version = this.#pipelines.advanceWithoutDiff();\n const cvrVer = versionString(cvr.version);\n\n if (version < cvr.version.stateVersion) {\n lc.debug?.(`replica@${version} is behind cvr@${cvrVer}`);\n return; // Wait for the next advancement.\n }\n\n // stateVersion is at or beyond CVR version for the first time.\n lc.info?.(`init pipelines@${version} (cvr@${cvrVer})`);\n\n const driftedQueryIDs = await this.#hydrateUnchangedQueries(lc, cvr);\n // hydrateUnchangedQueries just transformed\n // all the custom queries, this #syncQueryPipelineSet call\n // should retransform those that are missing from #pipelines, which\n // are those which errored or changed transform hash, plus those\n // removed because their rowSetSignature drifted (Cap re-execution\n // chose a different N-row subset).\n await this.#syncQueryPipelineSet(\n lc,\n cvr,\n 'missing',\n undefined,\n driftedQueryIDs,\n );\n this.#pipelinesSynced = true;\n this.connContextManager.setSharedRetransformReady(true);\n });\n }\n\n // If this view-syncer exited due to an elective or forced drain,\n // set the next drain timeout.\n if (this.#drainCoordinator.shouldDrain()) {\n this.#drainCoordinator.drainNextIn(this.#totalHydrationTimeMs());\n }\n await this.#cleanup();\n } catch (e) {\n this.#lc[getLogLevel(e)]?.(\n `stopping view-syncer ${this.id}: ${String(e)}`,\n e,\n );\n await this.#cleanup(e);\n } finally {\n // Always wait for the cvrStore to flush, regardless of how the service\n // was stopped.\n await this.#cvrStore\n .flushed(this.#lc)\n .catch(e => this.#lc[getLogLevel(e)]?.(e));\n this.#lc.info?.(`view-syncer ${this.id} finished`);\n this.#stopped.resolve();\n }\n }\n\n // must be called from within #lock\n #removeExpiredQueries = async (\n lc: LogContext,\n cvr: CVRSnapshot,\n ): Promise<void> => {\n if (hasExpiredQueries(cvr)) {\n lc = lc.withContext('method', '#removeExpiredQueries');\n lc.debug?.('Queries have expired');\n // #syncQueryPipelineSet() will remove the expired queries.\n if (this.#pipelinesSynced) {\n await this.#syncQueryPipelineSet(lc, cvr, 'missing', undefined);\n }\n }\n\n // Even if we have expired queries, we still need to schedule next eviction\n // since there might be inactivated queries that need to be expired queries\n // in the future.\n this.#scheduleExpireEviction(lc, cvr);\n };\n\n #totalHydrationTimeMs(): number {\n return this.#pipelines.totalHydrationTimeMs();\n }\n\n get queryCount(): number {\n return this.#pipelines.initialized() ? this.#pipelines.queries().size : 0;\n }\n\n get rowCount(): number {\n return this.#cvrStore.rowCount;\n }\n\n #keepAliveUntil: number = 0;\n\n /**\n * Guarantees that the ViewSyncer will remain running for at least\n * its configured `keepaliveMs`. This is called when establishing a\n * new connection to ensure that its associated ViewSyncer isn't\n * shutdown before it receives the connection.\n *\n * @return `true` if the ViewSyncer will stay alive, `false` if the\n * ViewSyncer is shutting down.\n */\n keepalive(): boolean {\n if (!this.#stateChanges.active) {\n return false;\n }\n this.#keepAliveUntil = Date.now() + this.#keepaliveMs;\n return true;\n }\n\n // oxlint-disable-next-line no-unused-private-class-members -- False positive, used in #scheduleShutdown\n #shutdownTimer: NodeJS.Timeout | null = null;\n\n #scheduleShutdown(delayMs = 0) {\n this.#shutdownTimer ??= this.#setTimeout(() => {\n this.#shutdownTimer = null;\n\n // All lock tasks check for shutdown so that queued work is immediately\n // canceled when clients disconnect. Queue an empty task to ensure that\n // this check happens.\n void this.#runInLockWithCVR(() => {}).catch(e =>\n // If an error occurs (e.g. ownership change), propagate the error\n // to the main run() loop via the #stateChanges Subscription.\n this.#stateChanges.fail(e),\n );\n }, delayMs);\n }\n\n async #checkForShutdownConditionsInLock(): Promise<boolean> {\n if (this.#clients.size > 0) {\n return false; // common case.\n }\n\n // Keep the view-syncer alive if there are pending rows being flushed.\n // It's better to do this before shutting down since it may take a\n // while, during which new connections may come in.\n await this.#cvrStore.flushed(this.#lc);\n\n if (Date.now() <= this.#keepAliveUntil) {\n this.#scheduleShutdown(this.#keepaliveMs); // check again later\n return false;\n }\n\n // If no clients have connected while waiting for the row flush, shutdown.\n return this.#clients.size === 0;\n }\n\n #deleteClientDueToDisconnect(clientID: string, client: ClientHandler) {\n this.connContextManager.closeConnection({\n clientID,\n wsID: client.wsID,\n });\n\n // Note: It is okay to delete / cleanup clients without acquiring the lock.\n // In fact, it is important to do so in order to guarantee that idle cleanup\n // is performed in a timely manner, regardless of the amount of work\n // queued on the lock.\n const c = this.#clients.get(clientID);\n if (c === client) {\n this.#clients.delete(clientID);\n\n if (this.#clients.size === 0) {\n // It is possible to delete a client before we read the ttl clock from\n // the CVR.\n if (this.#ttlClock !== undefined) {\n this.#updateTTLClockInCVRWithoutLock(this.#lc);\n }\n this.#stopExpireTimer();\n this.#scheduleShutdown();\n }\n }\n }\n\n #stopExpireTimer() {\n this.#lc.debug?.('Stopping expired queries timer');\n clearTimeout(this.#expiredQueriesTimer);\n this.#expiredQueriesTimer = 0;\n }\n\n #stopAuthMaintenanceTimer() {\n if (this.#authMaintenanceTimer !== 0) {\n this.#lc.debug?.('Stopping auth maintenance timer');\n }\n clearTimeout(this.#authMaintenanceTimer);\n this.#authMaintenanceTimer = 0;\n }\n\n /**\n * Schedules the auth maintenance wakeup from coordinator-derived\n * deadlines. The timer plumbing is intentionally separate from the actual\n * revalidation/retransform work so future policy changes only need to update\n * the maintenance workers, not the wakeup logic.\n */\n #scheduleAuthMaintenance(lc: LogContext) {\n this.#stopAuthMaintenanceTimer();\n\n const plan = this.connContextManager.planMaintenance();\n if (plan.earliestDeadlineAt === undefined) {\n lc.debug?.('No auth maintenance wakeup scheduled');\n return;\n }\n\n const delay = Math.max(0, plan.earliestDeadlineAt - Date.now());\n lc.debug?.(\n `Scheduling auth maintenance timer at ${new Date(plan.earliestDeadlineAt).toISOString()}`,\n {\n delay,\n earliestDeadlineAt: plan.earliestDeadlineAt,\n },\n );\n this.#authMaintenanceTimer = this.#setTimeout(async () => {\n try {\n this.#authMaintenanceTimer = 0;\n await this.#runInLockWithCVR((lc, cvr) =>\n this.#runAuthMaintenance(lc, cvr),\n );\n } catch (e) {\n // If an error occurs (e.g. ownership change), propagate the error\n // to the main run() loop via the #stateChanges Subscription.\n this.#stateChanges.fail(e instanceof Error ? e : new Error(String(e)));\n }\n }, delay);\n }\n\n async #runAuthMaintenance(lc: LogContext, _cvr: CVRSnapshot): Promise<void> {\n const plan = this.connContextManager.planMaintenance();\n if (plan.dueRevalidations.length === 0 && !plan.dueRetransform) {\n lc.debug?.('Auth maintenance woke up with no due work');\n return;\n }\n\n lc.debug?.('Auth maintenance woke up with pending work', {\n dueRevalidations: plan.dueRevalidations.length,\n dueRetransform: plan.dueRetransform,\n });\n\n for (const connCtx of plan.dueRevalidations) {\n try {\n await this.#validateConnection(connCtx);\n } catch (e) {\n if (isProtocolError(e) && isTransformFailedError(e)) {\n lc.warn?.(\n 'Scheduled auth revalidation failed; deferring auth maintenance',\n {\n clientID: connCtx.clientID,\n wsID: connCtx.wsID,\n message: e.message,\n },\n );\n this.connContextManager.deferMaintenance('revalidate');\n return;\n }\n throw e;\n }\n }\n\n // Revalidation can change which connection is safe for shared background work.\n // Replan before deciding whether to run the group retransform.\n const refreshedPlan = this.connContextManager.planMaintenance();\n if (refreshedPlan.dueRetransform) {\n await this.#runBackgroundRetransform(lc);\n }\n }\n\n initConnection(\n selector: ConnectionSelector,\n initConnectionMessage: InitConnectionMessage,\n ): Source<Downstream> {\n this.#lc.debug?.('viewSyncer.initConnection');\n return startSpan(tracer, 'vs.initConnection', () => {\n const connCtx =\n this.connContextManager.mustGetConnectionContext(selector);\n\n const lc = this.#lc\n .withContext('clientID', connCtx.clientID)\n .withContext('wsID', connCtx.wsID);\n\n // Setup the downstream connection.\n const downstream = Subscription.create<Downstream>({\n cleanup: (_, err) => {\n err\n ? lc[getLogLevel(err)]?.(`client closed with error`, err)\n : lc.info?.('client closed');\n this.#deleteClientDueToDisconnect(connCtx.clientID, newClient);\n this.#activeClients.add(-1, {\n [PROTOCOL_VERSION_ATTR]: connCtx.protocolVersion,\n });\n },\n });\n this.#activeClients.add(1, {\n [PROTOCOL_VERSION_ATTR]: connCtx.protocolVersion,\n });\n\n if (this.#clients.size === 0) {\n // First connection to this ViewSyncerService.\n\n // initConnection must be synchronous so that the downstream\n // subscription is returned immediately.\n const now = Date.now();\n this.#ttlClockBase = now;\n }\n\n const newClient = new ClientHandler(\n lc,\n this.id,\n connCtx.clientID,\n connCtx.wsID,\n this.#shard,\n connCtx.baseCookie,\n downstream,\n );\n this.#clients\n .get(connCtx.clientID)\n ?.close(`replaced by wsID: ${connCtx.wsID}`);\n this.#clients.set(connCtx.clientID, newClient);\n\n // Note: initConnection() must be synchronous so that `downstream` is\n // immediately returned to the caller (connection.ts). This ensures\n // that if the connection is subsequently closed, the `downstream`\n // subscription can be properly canceled even if #runInLockForClient()\n // has not had a chance to run.\n void startAsyncSpan(tracer, 'vs.initConnection.async', () =>\n this.#runInLockForClient(\n connCtx,\n initConnectionMessage,\n async (lc, clientID, msg: InitConnectionBody, cvr) => {\n if (cvr.clientSchema === null && !msg.clientSchema) {\n throw new ProtocolErrorWithLevel(\n {\n kind: ErrorKind.InvalidConnectionRequest,\n message:\n 'The initConnection message for a new client group must include client schema.',\n origin: ErrorOrigin.ZeroCache,\n },\n 'warn',\n );\n }\n // Validate auth before sending any data is sent to this connection.\n // the #handleConfigUpdate call below will also transform\n // queries, but that may hit the transform cache so do not rely on\n // it for validation. This also ensures shared maintenance always has\n // a validated connection to fall back to.\n if (!(await this.#validateConnection(connCtx))) {\n return;\n }\n await this.#handleConfigUpdate(\n lc,\n clientID,\n msg,\n cvr,\n 'all', // re transform all on new connections\n // Until the profileID is required in the URL, default it to\n // `cg${clientGroupID}`, as is done in the schema migration.\n // As clients update to the zero version with the profileID logic,\n // the value will be correspondingly in the CVR db.\n connCtx.profileID ?? `cg${this.id}`,\n connCtx,\n );\n // this.#authData and cvr (in particular cvr.clientSchema) have been\n // initialized, signal the run loop to run.\n this.#initialized.resolve('initialized');\n },\n newClient,\n ),\n ).catch(e => newClient.fail(e));\n\n return downstream;\n });\n }\n\n async changeDesiredQueries(\n selector: ConnectionSelector,\n msg: ChangeDesiredQueriesMessage,\n ): Promise<void> {\n await this.#runInLockForClient(\n selector,\n msg,\n (lc, clientID, msg: Partial<InitConnectionBody>, cvr) =>\n this.#handleConfigUpdate(\n lc,\n clientID,\n msg,\n cvr,\n 'missing',\n undefined,\n this.connContextManager.mustGetConnectionContext(selector),\n ),\n );\n }\n\n async updateAuth(\n selector: ConnectionSelector,\n msg: UpdateAuthMessage,\n authRevisionChanged: boolean,\n ): Promise<void> {\n await this.#runInLockForClient(\n selector,\n msg,\n async (lc, clientID, _, cvr) => {\n // Avoid revalidation and query re-transformation if the revision is the same\n if (!authRevisionChanged) {\n lc.debug?.('Auth unchanged, skipping query re-transformation');\n return;\n }\n lc.debug?.('Auth changed, re-validating and re-transforming queries');\n\n const connCtx =\n this.connContextManager.mustGetConnectionContext(selector);\n\n // If pipelines are not yet synced, there is no transform request that\n // can absorb validation, so validate immediately.\n if (!this.#pipelinesSynced) {\n if (!(await this.#validateConnection(connCtx))) {\n return;\n }\n }\n\n // Re-transform all queries so auth-sensitive query expansion matches\n // the newly validated credential.\n return await this.#handleConfigUpdate(\n lc,\n clientID,\n {}, // no config updates, but we want to trigger re-transformation of custom queries if auth changed\n cvr,\n 'all',\n undefined,\n connCtx,\n );\n },\n );\n }\n\n async deleteClients(\n selector: ConnectionSelector,\n msg: DeleteClientsMessage,\n ): Promise<string[]> {\n const deletedClientIDs = await this.#runInLockForClient(\n selector,\n [msg[0], {deleted: msg[1]}],\n (lc, clientID, msg: Partial<InitConnectionBody>, cvr) =>\n this.#handleConfigUpdate(\n lc,\n clientID,\n msg,\n cvr,\n 'missing',\n undefined,\n this.connContextManager.mustGetConnectionContext(selector),\n ),\n );\n return deletedClientIDs ?? [];\n }\n\n #getTTLClock(now: number): TTLClock {\n // We will update ttlClock with delta from the ttlClockBase to the current time.\n const delta = now - this.#ttlClockBase;\n assert(this.#ttlClock !== undefined, 'ttlClock should be defined');\n const ttlClock = ttlClockFromNumber(\n ttlClockAsNumber(this.#ttlClock) + delta,\n );\n assert(\n ttlClockAsNumber(ttlClock) <= now,\n 'ttlClock should be less than or equal to now',\n );\n this.#ttlClock = ttlClock;\n this.#ttlClockBase = now;\n return ttlClock;\n }\n\n #flushUpdater(lc: LogContext, updater: CVRUpdater): Promise<CVRSnapshot> {\n return startAsyncSpan(tracer, 'vs.#flushUpdater', () =>\n this.#runPriorityOp(lc, 'flushing cvr', async () => {\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n const {cvr, flushed} = await updater.flush(\n lc,\n this.#lastConnectTime,\n now,\n ttlClock,\n );\n\n if (flushed) {\n // If the CVR was flushed, we restart the ttlClock interval.\n this.#startTTLClockInterval(lc);\n }\n\n return cvr;\n }),\n );\n }\n\n #startTTLClockInterval(lc: LogContext): void {\n this.#stopTTLClockInterval();\n this.#ttlClockInterval = this.#setTimeout(() => {\n this.#updateTTLClockInCVRWithoutLock(lc);\n this.#startTTLClockInterval(lc);\n }, TTL_CLOCK_INTERVAL);\n }\n\n #stopTTLClockInterval(): void {\n clearTimeout(this.#ttlClockInterval);\n this.#ttlClockInterval = 0;\n }\n\n #updateTTLClockInCVRWithoutLock(lc: LogContext): void {\n const rid = randomID();\n lc.debug?.('Syncing ttlClock', rid);\n const start = Date.now();\n const ttlClock = this.#getTTLClock(start);\n this.#cvrStore\n .updateTTLClock(ttlClock, start)\n .then(() => {\n lc.debug?.('Synced ttlClock', rid, `in ${Date.now() - start} ms`);\n })\n .catch(e => {\n lc.warn?.(\n 'failed to update TTL clock',\n rid,\n `after ${Date.now() - start} ms`,\n e,\n );\n });\n }\n\n async #updateCVRConfig(\n lc: LogContext,\n cvr: CVRSnapshot,\n clientID: string,\n customQueryTransformMode: CustomQueryTransformMode,\n connCtx: ConnectionContext | undefined,\n fn: (updater: CVRConfigDrivenUpdater) => PatchToVersion[],\n ): Promise<CVRSnapshot> {\n const updater = new CVRConfigDrivenUpdater(\n this.#cvrStore,\n cvr,\n this.#shard,\n );\n updater.ensureClient(clientID);\n const patches = fn(updater);\n\n this.#cvr = await this.#flushUpdater(lc, updater);\n\n if (cmpVersions(cvr.version, this.#cvr.version) < 0) {\n // Send pokes to catch up clients that are up to date.\n // (Clients that are behind the cvr.version need to be caught up in\n // #syncQueryPipelineSet(), as row data may be needed for catchup)\n const newCVR = this.#cvr;\n await startAsyncSpan(\n tracer,\n 'vs.#updateCVRConfig.pokeClients',\n async () => {\n const pokers = startPoke(\n this.#getClients(cvr.version),\n newCVR.version,\n );\n for (const patch of patches) {\n await pokers.addPatch(patch);\n }\n await pokers.end(newCVR.version);\n },\n );\n }\n\n if (this.#pipelinesSynced) {\n await this.#syncQueryPipelineSet(\n lc,\n this.#cvr,\n customQueryTransformMode,\n connCtx,\n );\n }\n\n return this.#cvr;\n }\n\n /**\n * Runs the given `fn` to process the `msg` from within the `#lock`,\n * optionally adding the `newClient` if supplied.\n */\n #runInLockForClient<B, R = void, M extends [cmd: string, B] = [string, B]>(\n selector: ConnectionSelector,\n msg: M,\n fn: (\n lc: LogContext,\n clientID: string,\n body: B,\n cvr: CVRSnapshot,\n ) => Promise<R>,\n newClient?: ClientHandler,\n ): Promise<R | undefined> {\n this.#lc.debug?.('viewSyncer.#runInLockForClient');\n const {clientID, wsID} = selector;\n const [cmd, body] = msg;\n\n if (newClient || !this.#clients.has(clientID)) {\n this.#lastConnectTime = Date.now();\n }\n\n return startAsyncSpan(\n tracer,\n `vs.#runInLockForClient(${cmd})`,\n async span => {\n span.setAttribute('clientGroupID', this.id);\n span.setAttribute('clientID', clientID);\n let client: ClientHandler | undefined;\n let result: R | undefined;\n let connCtx: ConnectionContext | undefined;\n try {\n await this.#runInLockWithCVR(async (lc, cvr) => {\n lc = lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID)\n .withContext('cmd', cmd);\n lc.debug?.('acquired lock for cvr');\n\n client = this.#clients.get(clientID);\n if (client?.wsID !== wsID) {\n lc.debug?.('mismatched wsID', client?.wsID, wsID);\n // Only respond to messages of the currently connected client.\n // Connections may have been drained or dropped due to an error.\n return;\n }\n\n connCtx = this.connContextManager.getConnectionContext(selector);\n\n if (newClient) {\n assert(\n newClient === client,\n 'newClient must match existing client',\n );\n checkClientAndCVRVersions(client.version(), cvr.version);\n } else if (!this.#clients.has(clientID)) {\n lc.warn?.(`Processing ${cmd} before initConnection was received`);\n }\n\n lc.debug?.(cmd, body);\n result = await fn(lc, clientID, body, cvr);\n });\n } catch (e) {\n const lc = this.#lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID)\n .withContext('cmd', cmd);\n lc[getLogLevel(e)]?.(`closing connection with error`, e);\n if (connCtx) {\n this.connContextManager.failConnection(selector, connCtx.revision);\n }\n if (client) {\n // Ideally, propagate the exception to the client's downstream subscription ...\n client.fail(e);\n } else {\n // unless the exception happened before the client could be looked up.\n throw e;\n }\n }\n return result;\n },\n );\n }\n\n #getClients(atVersion?: CVRVersion): ClientHandler[] {\n const clients = [...this.#clients.values()];\n return atVersion\n ? clients.filter(\n c => cmpVersions(c.version() ?? EMPTY_CVR_VERSION, atVersion) === 0,\n )\n : clients;\n }\n\n // Must be called from within #lock.\n readonly #handleConfigUpdate = (\n lc: LogContext,\n clientID: string,\n\n {\n clientSchema,\n deleted,\n desiredQueriesPatch,\n activeClients,\n }: Partial<InitConnectionBody>,\n cvr: CVRSnapshot,\n customQueryTransformMode: CustomQueryTransformMode,\n profileID: string | undefined,\n connCtx: ConnectionContext,\n ) =>\n startAsyncSpan(tracer, 'vs.#handleConfigUpdate', async () => {\n const deletedClientIDs: string[] = [];\n const deletedClientGroupIDs: string[] = [];\n\n cvr = await this.#updateCVRConfig(\n lc,\n cvr,\n clientID,\n customQueryTransformMode,\n connCtx,\n updater => {\n const {ttlClock} = cvr;\n const patches: PatchToVersion[] = [];\n\n if (clientSchema) {\n updater.setClientSchema(lc, clientSchema);\n }\n if (profileID) {\n updater.setProfileID(lc, profileID);\n }\n\n // Apply requested patches.\n lc.debug?.(\n `applying ${desiredQueriesPatch?.length ?? 0} query patches`,\n );\n if (desiredQueriesPatch?.length) {\n for (const patch of desiredQueriesPatch) {\n switch (patch.op) {\n case 'put':\n patches.push(...updater.putDesiredQueries(clientID, [patch]));\n break;\n case 'del':\n patches.push(\n ...updater.markDesiredQueriesAsInactive(\n clientID,\n [patch.hash],\n ttlClock,\n ),\n );\n break;\n case 'clear':\n patches.push(...updater.clearDesiredQueries(clientID));\n break;\n }\n }\n }\n\n const clientIDsToDelete: Set<string> = new Set();\n\n if (activeClients) {\n // We find all the clients in this client group that are not active.\n const allClientIDs = Object.keys(cvr.clients);\n const activeClientsSet = new Set(activeClients);\n for (const id of allClientIDs) {\n if (!activeClientsSet.has(id)) {\n clientIDsToDelete.add(id);\n }\n }\n }\n\n if (deleted?.clientIDs?.length) {\n for (const cid of deleted.clientIDs) {\n assert(cid !== clientID, 'cannot delete self');\n clientIDsToDelete.add(cid);\n }\n }\n\n for (const cid of clientIDsToDelete) {\n const patchesDueToClient = updater.deleteClient(cid, ttlClock);\n patches.push(...patchesDueToClient);\n deletedClientIDs.push(cid);\n }\n\n if (deleted?.clientGroupIDs?.length) {\n lc.debug?.(\n `ignoring ${deleted.clientGroupIDs.length} deprecated client group deletes`,\n );\n }\n\n return patches;\n },\n );\n\n // Send 'deleteClients' ack to the clients.\n if (\n (deletedClientIDs.length && deleted?.clientIDs?.length) ||\n deletedClientGroupIDs.length\n ) {\n const clients = this.#getClients();\n await startAsyncSpan(\n tracer,\n 'vs.#handleConfigUpdate.sendDeleteClients',\n () =>\n Promise.allSettled(\n clients.map(client =>\n client.sendDeleteClients(\n lc,\n deletedClientIDs,\n deletedClientGroupIDs,\n ),\n ),\n ),\n );\n }\n\n this.#scheduleExpireEviction(lc, cvr);\n return deletedClientIDs;\n });\n\n #scheduleExpireEviction(lc: LogContext, cvr: CVRSnapshot): void {\n const {ttlClock} = cvr;\n this.#stopExpireTimer();\n\n // first see if there is any inactive query with a ttl.\n const next = nextEvictionTime(cvr);\n\n if (next === undefined) {\n lc.debug?.('no inactive queries with ttl');\n // no inactive queries with a ttl. Cancel existing timeout if any.\n return;\n }\n\n // It is common for many queries to be evicted close to the same time, so\n // we add a small delay so we can collapse multiple evictions into a\n // single timer. However, don't add the delay if we're already at the\n // maximum timer limit, as that's not about collapsing.\n const delay = Math.max(\n TTL_TIMER_HYSTERESIS,\n Math.min(\n ttlClockAsNumber(next) -\n ttlClockAsNumber(ttlClock) +\n TTL_TIMER_HYSTERESIS,\n MAX_TTL_MS,\n ),\n );\n\n lc.debug?.('Scheduling eviction timer to run in ', delay, 'ms');\n this.#expiredQueriesTimer = this.#setTimeout(() => {\n this.#expiredQueriesTimer = 0;\n this.#runInLockWithCVR((lc, cvr) =>\n this.#removeExpiredQueries(lc, cvr),\n ).catch(e =>\n // If an error occurs (e.g. ownership change), propagate the error\n // to the main run() loop via the #stateChanges Subscription.\n this.#stateChanges.fail(e),\n );\n }, delay);\n }\n\n /**\n * Adds and hydrates pipelines for queries whose results are already\n * recorded in the CVR. Namely:\n *\n * 1. The CVR state version and database version are the same.\n * 2. The transformation hash of the queries equal those in the CVR.\n *\n * Note that by definition, only \"got\" queries can satisfy condition (2),\n * as desired queries do not have a transformation hash.\n *\n * This is an initialization step that sets up pipeline state without\n * the expensive of loading and diffing CVR row state.\n *\n * This must be called from within the #lock.\n */\n async #hydrateUnchangedQueries(\n lc: LogContext,\n cvr: CVRSnapshot,\n ): Promise<Set<string>> {\n assert(this.#pipelines.initialized(), 'pipelines must be initialized');\n\n const dbVersion = this.#pipelines.currentVersion();\n const cvrVersion = cvr.version;\n\n if (cvrVersion.stateVersion !== dbVersion) {\n lc.info?.(\n `CVR (${versionToCookie(cvrVersion)}) is behind db ${dbVersion}`,\n );\n return new Set(); // hydration needs to be run with the CVR updater.\n }\n\n const gotQueries = Object.entries(cvr.queries).filter(\n ([_, state]) => state.transformationHash !== undefined,\n );\n\n const customQueries: Map<string, CustomQueryRecord> = new Map();\n const otherQueries: (ClientQueryRecord | InternalQueryRecord)[] = [];\n let inactivatedCount = 0;\n\n for (const [, query] of gotQueries) {\n if (\n query.type !== 'internal' &&\n Object.values(query.clientState).every(\n ({inactivatedAt}) => inactivatedAt !== undefined,\n )\n ) {\n inactivatedCount++;\n continue; // No longer desired.\n }\n\n if (query.type === 'custom') {\n customQueries.set(query.id, query);\n } else {\n otherQueries.push(query);\n }\n }\n\n const transformedQueries: TransformedAndHashed[] = [];\n let customErrorCount = 0;\n let customHashMismatchCount = 0;\n let otherHashMismatchCount = 0;\n if (customQueries.size > 0 && !this.#customQueryTransformer) {\n lc.warn?.(\n 'Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.',\n );\n }\n const backgroundContext =\n this.connContextManager.mustGetBackgroundConnectionContext();\n const customQueryTransformer = this.#customQueryTransformer;\n if (customQueryTransformer && customQueries.size > 0) {\n // Always transform custom queries during initialization to ensure\n // authorization validation with current auth context.\n const transformedCustomQueries = await this.#runPriorityOp(\n lc,\n '#hydrateUnchangedQueries transforming custom queries',\n () =>\n customQueryTransformer.transform(\n backgroundContext,\n customQueries.values(),\n ),\n );\n // Uncached results can also return the authoritative server userID\n // for that snapshot.\n if (\n transformedCustomQueries.kind === 'success' &&\n !transformedCustomQueries.cached\n ) {\n this.connContextManager.validateConnection(\n backgroundContext,\n backgroundContext.revision,\n transformedCustomQueries.validation,\n );\n }\n\n // Only process queries that successfully transformed and transformed to\n // the same transformationHash as in the CVR here.\n // Queries that failed to transform will be retransformed by\n // #syncQueryPipelineSet, if they fail again errors will be sent to\n // the client.\n if (Array.isArray(transformedCustomQueries.result)) {\n for (const q of transformedCustomQueries.result) {\n if ('error' in q) {\n customErrorCount++;\n } else if (\n q.transformationHash !== customQueries.get(q.id)?.transformationHash\n ) {\n customHashMismatchCount++;\n } else {\n transformedQueries.push(q);\n }\n }\n }\n }\n\n for (const q of otherQueries) {\n const transformed = transformAndHashQuery(\n lc,\n q.id,\n q.ast,\n must(this.#pipelines.currentPermissions()).permissions ?? {\n tables: {},\n },\n backgroundContext.auth?.type === 'jwt'\n ? backgroundContext.auth\n : undefined,\n q.type === 'internal',\n );\n if (transformed.transformationHash === q.transformationHash) {\n // only process queries that transformed to the same\n // transformationHash as in the CVR here\n transformedQueries.push(transformed);\n } else {\n otherHashMismatchCount++;\n }\n }\n\n lc.info?.(\n `hydrateUnchangedQueries: ${gotQueries.length} got queries, ` +\n `${inactivatedCount} inactivated, ` +\n `${customErrorCount} custom transform errors, ` +\n `${customHashMismatchCount} custom hash mismatches, ` +\n `${otherHashMismatchCount} other hash mismatches, ` +\n `${transformedQueries.length} hydrated`,\n );\n\n const driftedQueryIDs = new Set<string>();\n\n for (const {\n id: queryID,\n transformationHash,\n transformedAst,\n } of transformedQueries) {\n const timer = new TimeSliceTimer(lc);\n let count = 0;\n await startAsyncSpan(\n tracer,\n 'vs.#hydrateUnchangedQueries.addQuery',\n async span => {\n span.setAttribute('queryHash', queryID);\n span.setAttribute('transformationHash', transformationHash);\n span.setAttribute('table', transformedAst.table);\n for (const change of this.#pipelines.addQuery(\n transformationHash,\n queryID,\n transformedAst,\n await timer.start(),\n )) {\n if (change === 'yield') {\n await timer.yieldProcess('yield in hydrateUnchangedQueries');\n } else {\n count++;\n }\n }\n },\n );\n\n const elapsed = timer.totalElapsed();\n this.#hydrations.add(1);\n this.#hydrationTime.recordMs(elapsed);\n this.#addQueryMaterializationServerMetric(transformationHash, elapsed);\n this.#inspectorDelegate.addQuery(transformationHash, transformedAst);\n lc.debug?.(`hydrated ${count} rows for ${queryID} (${elapsed} ms)`);\n\n // Drift detection: compare the just-computed candidate signature against\n // the signature stored in the CVR. They should match for a deterministic\n // query at the same db state. A mismatch indicates a query containing\n // the Cap operator picked a different N-row subset on re-execution.\n // Remove the query from pipelines so #syncQueryPipelineSet 'missing'\n // re-executes it via the CVRQueryDrivenUpdater path, where the row diff\n // will be properly emitted to the client.\n //\n // Skip when the stored signature is absent — legacy queries from before\n // this feature was deployed have no signature to compare against, and a\n // forced re-execution would needlessly resend rows to the client. Such\n // queries get their signature initialized whenever they next re-execute\n // via the normal path (transformation hash change, etc.), at which\n // point drift detection becomes effective for subsequent cycles.\n const storedSigHex = cvr.queries[queryID]?.rowSetSignature;\n if (storedSigHex !== undefined && storedSigHex !== null) {\n const priorSig = parseSignature(storedSigHex);\n const candidateSig = this.#pipelines.rowSetSignature(queryID) ?? 0n;\n if (priorSig !== candidateSig) {\n lc.warn?.(\n `rowSetSignature drift for query ${queryID}: ` +\n `prior=${priorSig.toString(16)} new=${candidateSig.toString(16)} ` +\n `(${count} rows). Removing from pipelines for full re-execution.`,\n );\n this.#rowSetSignatureDrifts.add(1);\n this.#pipelines.removeQuery(queryID);\n driftedQueryIDs.add(queryID);\n }\n }\n }\n\n return driftedQueryIDs;\n }\n\n #processTransformedCustomQueries(\n lc: LogContext,\n transformedCustomQueries:\n | (TransformedAndHashed | ErroredQuery)[]\n | TransformFailedBody,\n cb: (q: TransformedAndHashed) => void,\n customQueryMap: Map<string, CustomQueryRecord>,\n ): string[] {\n if ('kind' in transformedCustomQueries) {\n this.#sendQueryTransformErrorToClients(\n customQueryMap,\n transformedCustomQueries,\n );\n return transformedCustomQueries.queryIDs;\n }\n\n const appQueryErrors: ErroredQuery[] = [];\n\n for (const q of transformedCustomQueries) {\n if ('error' in q) {\n const errorMessage = `Error transforming custom query ${q.name}: ${q.error}${q.details ? ` ${JSON.stringify(q.details)}` : ''}`;\n lc.warn?.(errorMessage, q);\n appQueryErrors.push(q);\n continue;\n }\n cb(q);\n }\n\n this.#sendQueryTransformErrorToClients(customQueryMap, appQueryErrors);\n return appQueryErrors.map(q => q.id);\n }\n\n #sendQueryTransformErrorToClients(\n customQueryMap: Map<string, CustomQueryRecord>,\n errorOrErrors: ErroredQuery[] | TransformFailedBody,\n ) {\n const getAffectedClientIDs = (queryIDs: string[]): Set<string> => {\n const clientIds = new Set<string>();\n for (const queryID of queryIDs) {\n const q = customQueryMap.get(queryID);\n assert(\n q,\n `got an error for query ${queryID} that does not map back to a custom query`,\n );\n Object.keys(q.clientState).forEach(id => clientIds.add(id));\n }\n return clientIds;\n };\n\n // send the transform failed error to each affected client\n if ('queryIDs' in errorOrErrors) {\n for (const clientId of getAffectedClientIDs(errorOrErrors.queryIDs)) {\n this.#clients\n .get(clientId)\n ?.sendQueryTransformFailedError(errorOrErrors);\n }\n\n return;\n }\n\n // Group and send application errors to each affected client\n const appErrorGroups = new Map<string, ErroredQuery[]>();\n\n for (const err of errorOrErrors) {\n // Application errors need to be grouped by client\n for (const clientId of getAffectedClientIDs([err.id])) {\n const group = appErrorGroups.get(clientId) ?? [];\n group.push(err);\n appErrorGroups.set(clientId, group);\n }\n }\n\n for (const [clientId, errors] of appErrorGroups) {\n this.#clients.get(clientId)?.sendQueryTransformApplicationErrors(errors);\n }\n }\n\n #addQueryMaterializationServerMetric(queryID: string, elapsed: number) {\n this.#inspectorDelegate.addMetric(\n 'query-materialization-server',\n elapsed,\n queryID,\n );\n }\n\n /**\n * Adds and/or removes queries to/from the PipelineDriver to bring it\n * in sync with the set of queries in the CVR (both got and desired).\n * If queries are added, removed, or queried due to a new state version,\n * a new CVR version is created and pokes sent to connected clients.\n *\n * This must be called from within the #lock.\n */\n #syncQueryPipelineSet(\n lc: LogContext,\n cvr: CVRSnapshot,\n customQueryTransformMode: CustomQueryTransformMode,\n connCtx: ConnectionContext | undefined,\n driftedQueryIDs: Set<string> = new Set(),\n ) {\n return startAsyncSpan(tracer, 'vs.#syncQueryPipelineSet', async span => {\n span.setAttribute('clientGroupID', this.id);\n assert(\n this.#pipelines.initialized(),\n 'pipelines must be initialized (syncQueryPipelineSet)',\n );\n\n if (this.#ttlClock === undefined) {\n // Get it from the CVR or initialize it to now.\n this.#ttlClock = cvr.ttlClock;\n }\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n\n // group cvr queries into:\n // 1. custom queries\n // 2. everything else\n // Handle transformation appropriately\n // Then hydrate as `serverQueries`\n const cvrQueryEntires = Object.entries(cvr.queries);\n const customQueries: Map<string, CustomQueryRecord> = new Map();\n const otherQueries: {\n id: string;\n query: ClientQueryRecord | InternalQueryRecord;\n }[] = [];\n const transformedQueries: {\n id: string;\n origQuery: QueryRecord;\n transformed: TransformedAndHashed;\n }[] = [];\n // When a specific connection triggered this work, use its context.\n // Only background/shared sync work falls back to the selected\n // validated connection.\n const resolvedConnCtx =\n connCtx ?? this.connContextManager.mustGetBackgroundConnectionContext();\n\n for (const [id, query] of cvrQueryEntires) {\n if (query.type === 'custom') {\n // This should always match, no?\n assert(id === query.id, 'custom query id mismatch');\n customQueries.set(id, query);\n } else {\n otherQueries.push({id, query});\n }\n }\n\n for (const {id, query: origQuery} of otherQueries) {\n // This should always match, no?\n assert(id === origQuery.id, 'query id mismatch');\n const transformed = transformAndHashQuery(\n lc,\n origQuery.id,\n origQuery.ast,\n must(this.#pipelines.currentPermissions()).permissions ?? {\n tables: {},\n },\n resolvedConnCtx.auth?.type === 'jwt'\n ? resolvedConnCtx.auth\n : undefined,\n origQuery.type === 'internal',\n );\n transformedQueries.push({\n id,\n origQuery,\n transformed,\n });\n }\n\n if (customQueries.size > 0 && !this.#customQueryTransformer) {\n lc.warn?.(\n 'Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.',\n );\n }\n\n let erroredQueryIDs: string[] | undefined;\n const customQueriesToTransform =\n customQueryTransformMode === 'all'\n ? [...customQueries.values()]\n : (customQueryTransformMode satisfies 'missing') &&\n [...customQueries.values()].filter(\n q => !this.#pipelines.queries().has(q.id),\n );\n const customQueryTransformer = this.#customQueryTransformer;\n if (customQueryTransformer && customQueriesToTransform.length > 0) {\n // Always re-transform custom queries on client connection for security.\n // This ensures the user's API server validates authorization with the\n // current auth context.\n const transformStart = performance.now();\n let transformedCustomQueries: HashedTransformResponse;\n try {\n transformedCustomQueries = await this.#runPriorityOp(\n lc,\n '#syncQueryPipelineSet transforming custom queries',\n () =>\n customQueryTransformer.transform(\n resolvedConnCtx,\n customQueriesToTransform,\n ),\n );\n\n // Check if transform failed entirely (HTTP error or server-side failure).\n // This should disconnect the client and keep existing pipelines intact.\n if (transformedCustomQueries.kind === 'failed') {\n throw new ProtocolErrorWithLevel(\n transformedCustomQueries.result,\n 'warn',\n );\n } else {\n // If the transform wasn't cached, we mark the connection as validated.\n // This also threads the authoritative server userID through the\n // revision check so auth races do not validate stale credentials.\n if (!transformedCustomQueries.cached) {\n this.connContextManager.validateConnection(\n resolvedConnCtx,\n resolvedConnCtx.revision,\n transformedCustomQueries.validation,\n );\n }\n this.#queryTransformations.add(1, {result: 'success'});\n }\n } catch (e) {\n this.#queryTransformations.add(1, {result: 'error'});\n throw e;\n } finally {\n const transformDuration = performance.now() - transformStart;\n this.#queryTransformationTime.recordMs(transformDuration);\n }\n\n // Process the transformed queries and track which ones succeeded.\n const successfullyTransformedCustomQueries = new Map<\n string,\n TransformedAndHashed\n >();\n erroredQueryIDs = this.#processTransformedCustomQueries(\n lc,\n transformedCustomQueries.result,\n (q: TransformedAndHashed) => {\n const origQuery = customQueries.get(q.id);\n if (origQuery) {\n successfullyTransformedCustomQueries.set(q.id, q);\n transformedQueries.push({\n id: q.id,\n origQuery,\n transformed: q,\n });\n }\n },\n customQueries,\n );\n\n // Check for queries whose transformation hash changed and log for debugging.\n // The old pipelines will be removed and destroyed when\n // PipelineManager.addQuery is called with an existing query id and\n // different transformation hash.\n for (const [\n queryID,\n newTransform,\n ] of successfullyTransformedCustomQueries) {\n const existingTransformHash =\n cvr.queries[queryID]?.transformationHash;\n if (existingTransformHash) {\n const oldHash = existingTransformHash;\n const newHash = newTransform.transformationHash;\n\n if (oldHash !== newHash) {\n // Transformation changed - log and check for thrashing.\n // The unhydrateQueries mechanism below will remove the old pipeline,\n // and addQueries will add the new one.\n lc.info?.(\n `Query ${queryID} transformation changed: ${oldHash} -> ${newHash}`,\n );\n this.#checkForThrashing(queryID);\n this.#queryTransformationHashChanges.add(1);\n } else {\n // hash is the same (no re-hydration needed)\n this.#queryTransformationNoOps.add(1);\n }\n }\n // else: new query, will be added normally\n }\n }\n\n const removeQueriesQueryIds: Set<string> = new Set([\n ...Object.values(cvr.queries)\n .filter(q => expired(ttlClock, q))\n .map(q => q.id),\n ...(erroredQueryIDs || []),\n ]);\n const addQueries = transformedQueries\n .map(({id, origQuery, transformed}) => ({\n id,\n ast: transformed.transformedAst,\n transformationHash: transformed.transformationHash,\n name: origQuery.type === 'custom' ? origQuery.name : undefined,\n }))\n .filter(\n q =>\n !removeQueriesQueryIds.has(q.id) &&\n this.#pipelines.queries().get(q.id)?.transformationHash !==\n q.transformationHash,\n );\n\n lc.info?.(\n `syncQueryPipelineSet: ${cvrQueryEntires.length} CVR queries, ` +\n `${customQueriesToTransform.length} custom re-transformed, ` +\n `${erroredQueryIDs?.length ?? 0} errored, ` +\n `${removeQueriesQueryIds.size} to remove, ` +\n `${addQueries.length} to add`,\n );\n\n for (const q of addQueries) {\n const orig = cvr.queries[q.id];\n lc.debug?.(\n 'ViewSyncer adding query',\n q.ast,\n 'transformed from',\n orig.type === 'custom' ? orig.name : orig.ast,\n );\n }\n\n if (addQueries.length > 0 || removeQueriesQueryIds.size > 0) {\n await this.#addAndRemoveQueries(\n lc,\n cvr,\n addQueries,\n Array.from(removeQueriesQueryIds, id => ({id})),\n driftedQueryIDs,\n );\n } else {\n await this.#catchupClients(lc, cvr);\n }\n });\n }\n\n /**\n * Check if a query is being replaced too frequently (thrashing).\n * Logs a warning if the query has been replaced more than 3 times in 60 seconds.\n */\n #checkForThrashing(queryID: string) {\n const THRASH_WINDOW_MS = 60_000; // 60 seconds\n const THRASH_THRESHOLD = 3;\n const now = Date.now();\n\n let record = this.#queryReplacements.get(queryID);\n if (!record) {\n record = {count: 1, windowStart: now};\n this.#queryReplacements.set(queryID, record);\n return;\n }\n\n // If outside the time window, delete the old entry and create a new one\n if (now - record.windowStart > THRASH_WINDOW_MS) {\n this.#queryReplacements.delete(queryID);\n this.#queryReplacements.set(queryID, {count: 1, windowStart: now});\n return;\n }\n\n // Increment count within the window\n record.count++;\n\n if (record.count >= THRASH_THRESHOLD) {\n this.#lc.warn?.(\n `Query thrashing detected for query ${queryID}. ${record.count} replacements in 60s. This may indicate clients with different auth contexts connecting to the same client group.`,\n );\n }\n }\n\n // This must be called from within the #lock.\n #addAndRemoveQueries(\n lc: LogContext,\n cvr: CVRSnapshot,\n addQueries: {\n id: string;\n ast: AST;\n transformationHash: string;\n name?: string | undefined;\n }[],\n removeQueries: {id: string}[],\n driftedQueryIDs: Set<string> = new Set(),\n ): Promise<void> {\n return startAsyncSpan(tracer, 'vs.#addAndRemoveQueries', async () => {\n assert(\n addQueries.length > 0 || removeQueries.length > 0,\n 'Must have queries to add or remove',\n );\n const start = performance.now();\n\n const stateVersion = this.#pipelines.currentVersion();\n lc = lc.withContext('stateVersion', stateVersion);\n lc.info?.(`hydrating ${addQueries.length} queries`);\n\n const updater = new CVRQueryDrivenUpdater(\n this.#cvrStore,\n cvr,\n stateVersion,\n this.#pipelines.replicaVersion,\n queryID => this.#pipelines.rowSetSignature(queryID),\n );\n\n // For queries being re-executed solely due to rowSetSignature drift\n // (not a transformationHash change), trackQueries does not bump\n // configVersion. Force a bump so the row diff produced by received()\n // gets propagated to the client via a poke. Must happen before\n // startPoke so the pokers see the final cookie version.\n if (addQueries.some(q => driftedQueryIDs.has(q.id))) {\n updater.ensureNewVersion();\n }\n\n // Note: This kicks off background PG queries for CVR data associated with the\n // executed and removed queries.\n const {queryPatches, newVersion} = updater.trackQueries(\n lc,\n addQueries,\n removeQueries,\n );\n\n const clients = this.#getClients();\n const pokers = startPoke(clients, newVersion);\n for (const patch of queryPatches) {\n // Bump patches' toVersion to the post-drift-bump version so that\n // pokers don't see them as belonging to a stale cookie.\n await pokers.addPatch(patch);\n }\n\n // Removing queries is easy. The pipelines are dropped, and the CVR\n // updater handles the updates and pokes.\n for (const q of removeQueries) {\n this.#pipelines.removeQuery(q.id);\n // Remove per-query server metrics when query is deleted\n this.#inspectorDelegate.removeQuery(q.id);\n // Clean up thrashing detection for removed queries\n this.#queryReplacements.delete(q.id);\n }\n\n let totalProcessTime = 0;\n const timer = new TimeSliceTimer(lc);\n const pipelines = this.#pipelines;\n const hydrations = this.#hydrations;\n const hydrationTime = this.#hydrationTime;\n // oxlint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n // yield at the very beginning so that the first time slice\n // is properly processed by the time-slice queue.\n await yieldProcess(lc);\n\n function* generateRowChanges(slowHydrateThreshold: number) {\n for (const q of addQueries) {\n lc = lc\n .withContext('hash', q.id)\n .withContext('transformationHash', q.transformationHash);\n lc.debug?.(`adding pipeline for query`, q.ast);\n\n yield* pipelines.addQuery(\n q.transformationHash,\n q.id,\n q.ast,\n timer.startWithoutYielding(),\n );\n const elapsed = timer.stop();\n totalProcessTime += elapsed;\n\n self.#addQueryMaterializationServerMetric(q.id, elapsed);\n self.#inspectorDelegate.addQuery(q.id, q.ast);\n\n if (elapsed > slowHydrateThreshold) {\n lc.warn?.('Slow query materialization', elapsed, q.ast);\n }\n manualSpan(tracer, 'vs.addAndConsumeQuery', elapsed, {\n hash: q.id,\n transformationHash: q.transformationHash,\n ...(q.name !== undefined && {name: q.name}),\n });\n }\n hydrations.add(1);\n hydrationTime.recordMs(totalProcessTime);\n }\n // #processChanges does batched de-duping of rows. Wrap all pipelines in\n // a single generator in order to maximize de-duping.\n await this.#processChanges(\n lc,\n timer,\n generateRowChanges(this.#slowHydrateThreshold),\n updater,\n pokers,\n );\n\n await startAsyncSpan(\n tracer,\n 'vs.#syncQueryPipelineSet.deleteUnreferencedRows',\n async () => {\n for (const patch of await updater.deleteUnreferencedRows(lc)) {\n await pokers.addPatch(patch);\n }\n },\n );\n\n // Commit the changes and update the CVR snapshot.\n this.#cvr = await this.#flushUpdater(lc, updater);\n\n const finalVersion = this.#cvr.version;\n\n // Before ending the poke, catch up clients that were behind the old CVR.\n await this.#catchupClients(\n lc,\n cvr,\n finalVersion,\n addQueries.map(q => q.id),\n pokers,\n );\n\n // Signal clients to commit.\n await startAsyncSpan(tracer, 'vs.#syncQueryPipelineSet.pokeEnd', () =>\n pokers.end(finalVersion),\n );\n\n const wallTime = performance.now() - start;\n lc.info?.(\n `finished processing queries (process: ${totalProcessTime} ms, wall: ${wallTime} ms)`,\n );\n });\n }\n\n /**\n * @param cvr The CVR to which clients should be caught up to. This does\n * not necessarily need to be the current CVR.\n * @param current The expected current CVR version. Before performing\n * catchup, the snapshot read will verify that the CVR has not been\n * concurrently modified. Note that this only needs to be done for\n * catchup because it is the only time data from the CVR DB is\n * \"exported\" without being gated by a CVR flush (which provides\n * concurrency protection in all other cases).\n *\n * If unspecified, the version of the `cvr` is used.\n * @param excludeQueryHashes Exclude patches from rows associated with\n * the specified queries.\n * @param usePokers If specified, sends pokes on existing PokeHandlers,\n * in which case the caller is responsible for sending the `pokeEnd`\n * messages. If unspecified, the pokes will be started and ended\n * using the version from the supplied `cvr`.\n */\n // Must be called within #lock\n #catchupClients(\n lc: LogContext,\n cvr: CVRSnapshot,\n current?: CVRVersion,\n excludeQueryHashes: string[] = [],\n usePokers?: PokeHandler,\n ) {\n return startAsyncSpan(tracer, 'vs.#catchupClients', async span => {\n current ??= cvr.version;\n const clients = this.#getClients();\n const pokers = usePokers ?? startPoke(clients, cvr.version);\n span.setAttribute('numClients', clients.length);\n\n const catchupFrom = clients\n .map(c => c.version())\n .reduce((a, b) => (cmpVersions(a, b) < 0 ? a : b), cvr.version);\n\n // This is an AsyncGenerator which won't execute until awaited.\n const rowPatches = this.#cvrStore.catchupRowPatches(\n lc,\n catchupFrom,\n cvr,\n current,\n excludeQueryHashes,\n );\n\n // This is a plain async function that kicks off immediately.\n const configPatches = this.#cvrStore.catchupConfigPatches(\n lc,\n catchupFrom,\n cvr,\n current,\n );\n\n // The configPatches Promise will be awaited, and exceptions propagated,\n // after the rowPatches are processed. However, a catch handler must be\n // installed on the Promise in the meantime in order to avoid Node\n // crashing with an unhandled rejection error.\n configPatches.catch(() => {});\n\n // await the rowPatches first so that the AsyncGenerator kicks off.\n let rowPatchCount = 0;\n for await (const rows of rowPatches) {\n for (const row of rows) {\n const {schema, table} = row;\n const rowKey = row.rowKey as RowKey;\n const toVersion = versionFromString(row.patchVersion);\n\n const id: RowID = {schema, table, rowKey};\n let patch: RowPatch;\n if (!row.refCounts) {\n patch = {type: 'row', op: 'del', id};\n } else {\n const row = must(\n this.#pipelines.getRow(table, rowKey),\n `Missing row ${table}:${stringify(rowKey)}`,\n );\n const {contents} = contentsAndVersion(row);\n patch = {type: 'row', op: 'put', id, contents};\n }\n const patchToVersion = {patch, toVersion};\n await pokers.addPatch(patchToVersion);\n rowPatchCount++;\n }\n }\n span.setAttribute('rowPatchCount', rowPatchCount);\n if (rowPatchCount) {\n lc.debug?.(`sent ${rowPatchCount} row patches`);\n }\n\n // Then await the config patches which were fetched in parallel.\n for (const patch of await configPatches) {\n await pokers.addPatch(patch);\n }\n\n if (!usePokers) {\n await pokers.end(cvr.version);\n }\n });\n }\n\n #processChanges(\n lc: LogContext,\n timer: TimeSliceTimer,\n changes: Iterable<RowChange | 'yield'>,\n updater: CVRQueryDrivenUpdater,\n pokers: PokeHandler,\n ) {\n return startAsyncSpan(tracer, 'vs.#processChanges', async () => {\n const start = performance.now();\n\n const rows = new CustomKeyMap<RowID, RowUpdate>(rowIDString);\n let total = 0;\n\n const processBatch = () =>\n startAsyncSpan(tracer, 'processBatch', async () => {\n const wallElapsed = performance.now() - start;\n total += rows.size;\n lc.debug?.(\n `processing ${rows.size} (of ${total}) rows (${wallElapsed} ms)`,\n );\n const patches = await updater.received(lc, rows);\n\n await startAsyncSpan(\n tracer,\n 'processBatch.flushToClient',\n async span => {\n span.setAttribute('patches', patches.length);\n for (const patch of patches) {\n await pokers.addPatch(patch);\n }\n },\n );\n rows.clear();\n });\n\n await startAsyncSpan(tracer, 'loopingChanges', async span => {\n for (const change of changes) {\n if (change === 'yield') {\n await timer.yieldProcess('yield in processChanges');\n continue;\n }\n const {type, queryID, table, rowKey, row} = change;\n const rowID: RowID = {schema: '', table, rowKey: rowKey as RowKey};\n\n let parsedRow = rows.get(rowID);\n if (!parsedRow) {\n parsedRow = {refCounts: {}};\n rows.set(rowID, parsedRow);\n }\n parsedRow.refCounts[queryID] ??= 0;\n\n const updateVersion = (row: Row) => {\n // IVM can output multiple versions of a row as it goes through its\n // intermediate stages. Always update the version and contents;\n // the last version will reflect the final state.\n const {version, contents} = contentsAndVersion(row);\n parsedRow.version = version;\n parsedRow.contents = contents;\n };\n switch (type) {\n case ChangeType.ADD:\n updateVersion(row);\n parsedRow.refCounts[queryID]++;\n break;\n case ChangeType.EDIT:\n updateVersion(row);\n // No update to refCounts.\n break;\n case ChangeType.REMOVE:\n parsedRow.refCounts[queryID]--;\n break;\n default:\n unreachable(type);\n }\n\n if (rows.size % CURSOR_PAGE_SIZE === 0) {\n await processBatch();\n }\n }\n if (rows.size) {\n await processBatch();\n }\n span.setAttribute('totalRows', total);\n });\n });\n }\n\n /**\n * Advance to the current snapshot of the replica and apply / send\n * changes.\n *\n * Must be called from within the #lock.\n *\n * Returns false if the advancement failed due to a schema change.\n */\n #advancePipelines(\n lc: LogContext,\n cvr: CVRSnapshot,\n ): Promise<'success' | ResetPipelinesSignal> {\n return startAsyncSpan(tracer, 'vs.#advancePipelines', async span => {\n span.setAttribute('clientGroupID', this.id);\n assert(\n this.#pipelines.initialized(),\n 'pipelines must be initialized (advancePipelines',\n );\n const start = performance.now();\n\n const timer = new TimeSliceTimer(lc);\n const {version, numChanges, changes} = this.#pipelines.advance(timer);\n lc = lc.withContext('newVersion', version);\n\n // Probably need a new updater type. CVRAdvancementUpdater?\n const updater = new CVRQueryDrivenUpdater(\n this.#cvrStore,\n cvr,\n version,\n this.#pipelines.replicaVersion,\n queryID => this.#pipelines.rowSetSignature(queryID),\n );\n // Only poke clients that are at the cvr.version. New clients that\n // are behind need to first be caught up when their initConnection\n // message is processed (and #syncQueryPipelines is called).\n const pokers = startPoke(\n this.#getClients(cvr.version),\n updater.updatedVersion(),\n );\n lc.debug?.(`applying ${numChanges} to advance to ${version}`);\n\n try {\n await this.#processChanges(\n lc,\n await timer.start(),\n changes,\n updater,\n pokers,\n );\n } catch (e) {\n if (e instanceof ResetPipelinesSignal) {\n await pokers.cancel();\n return e;\n }\n throw e;\n }\n\n // Commit the changes and update the CVR snapshot.\n this.#cvr = await this.#flushUpdater(lc, updater);\n const finalVersion = this.#cvr.version;\n\n // Signal clients to commit.\n await startAsyncSpan(tracer, 'vs.#advancePipelines.pokeEnd', () =>\n pokers.end(finalVersion),\n );\n\n const wallTime = performance.now() - start;\n const totalProcessTime = timer.totalElapsed();\n lc.debug?.(\n `finished processing advancement of ${numChanges} changes ((process: ${totalProcessTime} ms, wall: ${wallTime} ms))`,\n );\n this.#transactionAdvanceTime.recordMs(totalProcessTime);\n return 'success';\n });\n }\n\n async inspect(\n selector: ConnectionSelector,\n msg: InspectUpMessage,\n ): Promise<void> {\n await this.#runInLockForClient(selector, msg, this.#handleInspect);\n }\n\n // oxlint-disable-next-line require-await\n #handleInspect = async (\n lc: LogContext,\n clientID: string,\n body: InspectUpBody,\n cvr: CVRSnapshot,\n ): Promise<void> => {\n const client = must(this.#clients.get(clientID));\n const connCtx = this.connContextManager.mustGetConnectionContext({\n clientID,\n wsID: client.wsID,\n });\n return handleInspect(\n lc,\n body,\n cvr,\n client,\n this.#inspectorDelegate,\n this.id,\n this.#cvrStore,\n this.#config,\n connCtx,\n );\n };\n\n async #runBackgroundRetransform(lc: LogContext): Promise<void> {\n const attemptRetransform = async (connCtx: ConnectionContext) => {\n await this.#syncQueryPipelineSet(\n lc,\n must(this.#cvr, 'cvr missing during auth maintenance retransform'),\n 'all',\n connCtx,\n );\n this.connContextManager.markBackgroundRetransformSuccess(\n {\n clientID: connCtx.clientID,\n wsID: connCtx.wsID,\n },\n connCtx.revision,\n );\n };\n\n let backgroundConnCtx =\n this.connContextManager.getBackgroundConnectionContext();\n if (!backgroundConnCtx) {\n // The timer may have fired using an old deadline. If there is no longer a\n // selected validated connection, shared background retransform is simply\n // unschedulable until one exists again.\n lc.debug?.('Skipping background retransform with no selected connection');\n return;\n }\n\n for (;;) {\n try {\n await attemptRetransform(backgroundConnCtx);\n return;\n } catch (e) {\n if (isProtocolError(e)) {\n if (isAuthErrorBody(e.errorBody)) {\n lc.warn?.(\n 'Background retransform auth failed; failing connection and searching for replacement',\n {\n clientID: backgroundConnCtx.clientID,\n message: e.message,\n },\n );\n this.#failMaintenanceConnection(backgroundConnCtx, e);\n } else if (isTransformFailedError(e)) {\n lc.warn?.(\n 'Background retransform failed; deferring auth maintenance',\n {\n clientID: backgroundConnCtx.clientID,\n message: e.message,\n },\n );\n this.connContextManager.deferMaintenance('retransform');\n return;\n }\n } else {\n throw e;\n }\n }\n\n const replacementConnCtx =\n this.connContextManager.getBackgroundConnectionContext();\n if (!replacementConnCtx) {\n // The selected connection failed and nothing valid replaced it, so\n // there is no credential left that can safely drive shared background\n // reads.\n lc.debug?.(\n 'No replacement connection available for background retransform',\n );\n return;\n }\n\n lc.debug?.(\n 'Retrying background retransform with replacement connection',\n {\n clientID: replacementConnCtx.clientID,\n wsID: replacementConnCtx.wsID,\n },\n );\n backgroundConnCtx = replacementConnCtx;\n }\n }\n\n async #validateConnection(connCtx: ConnectionContext): Promise<boolean> {\n try {\n let validation: ConnectionValidation | undefined = undefined;\n if (this.#customQueryTransformer) {\n const response = await this.#customQueryTransformer.validate(connCtx);\n if (response.kind === 'TransformFailed') {\n throw new ProtocolErrorWithLevel(response, 'warn');\n }\n validation = response.validation;\n } else {\n validation = {kind: 'client-fallback'};\n }\n\n this.connContextManager.validateConnection(\n connCtx,\n connCtx.revision,\n validation,\n );\n return true;\n } catch (e) {\n if (isProtocolError(e) && isAuthErrorBody(e.errorBody)) {\n this.#lc.warn?.(\n 'Connection auth validation failed; invalidating connection',\n {\n clientID: connCtx.clientID,\n wsID: connCtx.wsID,\n revision: connCtx.revision,\n message: e.message,\n },\n );\n this.#failMaintenanceConnection(connCtx, e);\n return false;\n }\n throw e;\n }\n }\n\n #failMaintenanceConnection(connCtx: ConnectionContext, error: ProtocolError) {\n const failed = this.connContextManager.failConnection(\n connCtx,\n connCtx.revision,\n );\n if (!failed) {\n return;\n }\n\n const wrapped = wrapWithProtocolError(error);\n const client = this.#clients.get(connCtx.clientID);\n if (client?.wsID === connCtx.wsID) {\n client.fail(wrapped);\n }\n }\n\n stop(): Promise<void> {\n this.#lc.info?.('stopping view syncer');\n this.connContextManager.setSharedRetransformReady(false);\n this.#initialized.reject(shutdownBeforeInitializationError());\n this.#stateChanges.cancel();\n return this.#stopped.promise;\n }\n\n async #cleanup(err?: unknown) {\n this.connContextManager.setSharedRetransformReady(false);\n this.#stopTTLClockInterval();\n this.#stopExpireTimer();\n this.#stopAuthMaintenanceTimer();\n\n for (const client of this.#clients.values()) {\n if (err) {\n client.fail(err);\n } else {\n client.close(`closed clientGroupID=${this.id}`);\n }\n }\n\n // Wait for existing lock logic to complete before\n // cleaning up the pipelines and closing db connections.\n await this.#lock.withLock(() => {});\n this.#pipelines.destroy();\n }\n\n /**\n * Test helper: Manually mark initialization as complete.\n * This should only be used in tests that don't call initConnection().\n */\n markInitialized() {\n this.#initialized.resolve('initialized');\n }\n}\n\n// Update CVR after every 10000 rows.\nconst CURSOR_PAGE_SIZE = 10000;\n\n// A global Lock acts as a queue to run a single IVM time slice per iteration\n// of the node event loop, thus bounding I/O delay to the duration of a single\n// time slice.\n//\n// Refresher:\n// https://nodejs.org/en/learn/asynchronous-work/event-loop-timers-and-nexttick#phases-overview\n//\n// Note that recursive use of setImmediate() (i.e. calling setImmediate() from\n// within a setImmediate() callback), results in enqueuing the latter\n// callback in the *next* event loop iteration, as documented in:\n// https://nodejs.org/api/timers.html#setimmediatecallback-args\n//\n// This effectively achieves the desired one-per-event-loop-iteration behavior.\nconst timeSliceQueue = new Lock();\n\nfunction yieldProcess(_lc: LogContext) {\n return timeSliceQueue.withLock(() => new Promise(setImmediate));\n}\n\nfunction contentsAndVersion(row: Row) {\n const {[ZERO_VERSION_COLUMN_NAME]: version, ...contents} = row;\n if (typeof version !== 'string' || version.length === 0) {\n throw new Error(`Invalid _0_version in ${stringify(row)}`);\n }\n return {contents, version};\n}\n\nconst NEW_CVR_VERSION = {stateVersion: '00'};\n\nfunction checkClientAndCVRVersions(\n client: NullableCVRVersion,\n cvr: CVRVersion,\n) {\n if (\n cmpVersions(cvr, NEW_CVR_VERSION) === 0 &&\n cmpVersions(client, NEW_CVR_VERSION) > 0\n ) {\n // CVR is empty but client is not.\n throw new ClientNotFoundError('Client not found');\n }\n\n if (cmpVersions(client, cvr) > 0) {\n // Client is ahead of a non-empty CVR.\n throw new ProtocolError({\n kind: ErrorKind.InvalidConnectionRequestBaseCookie,\n message: `CVR is at version ${versionString(cvr)}`,\n origin: ErrorOrigin.ZeroCache,\n });\n }\n}\n\nfunction isTransformFailedError(error: ProtocolError): boolean {\n return (\n error.errorBody.kind === ErrorKind.TransformFailed &&\n !isAuthErrorBody(error.errorBody)\n );\n}\n\n/**\n * A query must be expired for all clients in order to be considered\n * expired.\n */\nfunction expired(\n ttlClock: TTLClock,\n q: InternalQueryRecord | ClientQueryRecord | CustomQueryRecord,\n): boolean {\n if (q.type === 'internal') {\n return false;\n }\n\n for (const clientState of Object.values(q.clientState)) {\n const {ttl, inactivatedAt} = clientState;\n if (inactivatedAt === undefined) {\n return false;\n }\n\n const clampedTTL = clampTTL(ttl);\n if (\n ttlClockAsNumber(inactivatedAt) + clampedTTL >\n ttlClockAsNumber(ttlClock)\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction hasExpiredQueries(cvr: CVRSnapshot): boolean {\n const {ttlClock} = cvr;\n for (const q of Object.values(cvr.queries)) {\n if (expired(ttlClock, q)) {\n return true;\n }\n }\n return false;\n}\n\nexport class TimeSliceTimer {\n #total = 0;\n #start = 0;\n #lc: LogContext;\n\n constructor(lc: LogContext) {\n this.#lc = lc;\n }\n\n async start() {\n // yield at the very beginning so that the first time slice\n // is properly processed by the time-slice queue.\n await yieldProcess(this.#lc);\n return this.startWithoutYielding();\n }\n\n startWithoutYielding() {\n this.#total = 0;\n this.#startLap();\n return this;\n }\n\n async yieldProcess(_msgForTesting?: string) {\n this.#stopLap();\n await yieldProcess(this.#lc);\n this.#startLap();\n }\n\n #startLap() {\n assert(this.#start === 0, 'already running');\n this.#start = performance.now();\n }\n\n elapsedLap() {\n assert(this.#start !== 0, 'not running');\n return performance.now() - this.#start;\n }\n\n #stopLap() {\n assert(this.#start !== 0, 'not running');\n this.#total += performance.now() - this.#start;\n this.#start = 0;\n }\n\n /** @returns the total elapsed time */\n stop(): number {\n this.#stopLap();\n return this.#total;\n }\n\n /**\n * @returns the elapsed time. This can be called while the Timer is running\n * or after it has been stopped.\n */\n totalElapsed(): number {\n return this.#start === 0\n ? this.#total\n : this.#total + performance.now() - this.#start;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ //#region ../zero-cache/src/types/configuration-error.ts
2
+ var ConfigurationError = class extends Error {
3
+ constructor(message, options) {
4
+ super(message, options);
5
+ this.name = "ConfigurationError";
6
+ }
7
+ };
8
+ //#endregion
9
+ export { ConfigurationError };
10
+
11
+ //# sourceMappingURL=configuration-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-error.js","names":[],"sources":["../../../../../../zero-cache/src/types/configuration-error.ts"],"sourcesContent":["export class ConfigurationError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = 'ConfigurationError';\n }\n}\n"],"mappings":";AAAA,IAAa,qBAAb,cAAwC,MAAM;CAC5C,YAAY,SAAiB,SAAwB;EACnD,MAAM,SAAS,OAAO;EACtB,KAAK,OAAO;CACd;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-with-level.js","names":[],"sources":["../../../../../../zero-cache/src/types/error-with-level.ts"],"sourcesContent":["import type {LogLevel} from '@rocicorp/logger';\nimport {getErrorMessage} from '../../../shared/src/error.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../zero-protocol/src/error-origin.ts';\nimport {\n isProtocolError,\n ProtocolError,\n type ErrorBody,\n} from '../../../zero-protocol/src/error.ts';\n\nexport class ProtocolErrorWithLevel extends ProtocolError {\n readonly logLevel: LogLevel;\n\n constructor(\n errorBody: ErrorBody,\n logLevel: LogLevel,\n options?: ErrorOptions,\n ) {\n super(errorBody, options);\n this.logLevel = logLevel;\n }\n}\n\nexport function getLogLevel(error: unknown): LogLevel {\n return error instanceof ProtocolErrorWithLevel\n ? error.logLevel\n : isProtocolError(error)\n ? 'warn'\n : 'error';\n}\n\nexport function wrapWithProtocolError(error: unknown): ProtocolError {\n if (isProtocolError(error)) {\n return error;\n }\n\n return new ProtocolError(\n {\n kind: ErrorKind.Internal,\n message: getErrorMessage(error),\n origin: ErrorOrigin.ZeroCache,\n },\n {cause: error},\n );\n}\n"],"mappings":";;;;;AAUA,IAAa,yBAAb,cAA4C,cAAc;CACxD;CAEA,YACE,WACA,UACA,SACA;EACA,MAAM,WAAW,OAAO;EACxB,KAAK,WAAW;CAClB;AACF;AAEA,SAAgB,YAAY,OAA0B;CACpD,OAAO,iBAAiB,yBACpB,MAAM,WACN,gBAAgB,KAAK,IACnB,SACA;AACR;AAEA,SAAgB,sBAAsB,OAA+B;CACnE,IAAI,gBAAgB,KAAK,GACvB,OAAO;CAGT,OAAO,IAAI,cACT;EACE,MAAM;EACN,SAAS,gBAAgB,KAAK;EAC9B,QAAQ;CACV,GACA,EAAC,OAAO,MAAK,CACf;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","names":[],"sources":["../../../../../../zero-cache/src/types/http.ts"],"sourcesContent":["import type {IncomingMessage} from 'http';\n\n/**\n * Contains the subset of {@link IncomingMessage} fields suitable for\n * passing across processes.\n */\nexport type IncomingMessageSubset = Pick<\n IncomingMessage,\n | 'headers'\n | 'headersDistinct'\n | 'httpVersion'\n | 'method'\n | 'rawHeaders'\n | 'rawTrailers'\n | 'trailers'\n | 'trailersDistinct'\n | 'url'\n>;\n\nexport function serializableSubset(\n msg: IncomingMessageSubset,\n): IncomingMessageSubset {\n const {\n headers,\n headersDistinct,\n httpVersion,\n method = 'GET',\n rawHeaders,\n rawTrailers,\n trailers,\n trailersDistinct,\n url,\n } = msg;\n\n return {\n headers,\n headersDistinct,\n httpVersion,\n method,\n rawHeaders,\n rawTrailers,\n trailers,\n trailersDistinct,\n url,\n };\n}\n"],"mappings":";AAmBA,SAAgB,mBACd,KACuB;CACvB,MAAM,EACJ,SACA,iBACA,aACA,SAAS,OACT,YACA,aACA,UACA,kBACA,QACE;CAEJ,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexi-version.js","names":[],"sources":["../../../../../../zero-cache/src/types/lexi-version.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport {parseBigInt} from '../../../shared/src/parse-big-int.ts';\n\n/**\n * A LexiVersion is a lexicographically sortable representation of\n * numbers from 0 to Number.MAX_SAFE_INTEGER (which is the safe range of\n * Version values used in Zero).\n *\n * The Version is first encoded in base36, and then prepended by a single\n * base36 character representing the length (of the base36 version) minus 1.\n * This encoding can encode numbers up to 185 bits, with the maximum encoded\n * number being `\"z\".repeat(37)`, or 36^36-1 (approximately 1.0638735892371651e+56).\n *\n * Examples:\n * * 0 => \"00\"\n * * 10 => \"0a\"\n * * 35 => \"0z\"\n * * 36 => \"110\"\n * * 46655 => \"2zzz\"\n * * 2^64 => \"c3w5e11264sgsg\"\n *\n * Note that when using the `number` type, the library will assert if attempting\n * to encode a Version larger than Number.MAX_SAFE_INTEGER. For large numbers,\n * use the `bigint` type.\n */\nexport type LexiVersion = string;\n\nexport function versionToLexi(v: number | bigint): LexiVersion {\n assert(v >= 0, 'Negative versions are not supported');\n assert(\n typeof v === 'bigint' ||\n (v <= Number.MAX_SAFE_INTEGER && Number.isInteger(v)),\n `Invalid or unsafe version ${v}`,\n );\n const base36Version = BigInt(v).toString(36);\n const length = BigInt(base36Version.length - 1).toString(36);\n assert(\n length.length === 1,\n `Value is too large to be encoded as a LexiVersion: ${v.toString()}`,\n );\n return `${length}${base36Version}`;\n}\n\nexport function versionFromLexi(lexiVersion: LexiVersion): bigint {\n assert(\n lexiVersion.length >= 2,\n () =>\n `LexiVersion must have at least 2 characters, got ${lexiVersion.length}`,\n );\n const length = lexiVersion.substring(0, 1);\n const base36Version = lexiVersion.substring(1);\n assert(\n base36Version.length === parseInt(length, 36) + 1,\n `Invalid LexiVersion: ${lexiVersion}`,\n );\n return parseBigInt(base36Version, 36);\n}\n\nexport type AtLeastOne<T> = [T, ...T[]];\n\nexport function max(...versions: AtLeastOne<LexiVersion>): LexiVersion {\n let winner = versions[0];\n for (let i = 1; i < versions.length; i++) {\n const b = versions[i];\n winner = winner > b ? winner : b;\n }\n return winner;\n}\n\nexport function min(...versions: AtLeastOne<LexiVersion>): LexiVersion {\n let winner = versions[0];\n for (let i = 1; i < versions.length; i++) {\n const b = versions[i];\n winner = winner < b ? winner : b;\n }\n return winner;\n}\n"],"mappings":";;;AA2BA,SAAgB,cAAc,GAAiC;CAC7D,OAAO,KAAK,GAAG,qCAAqC;CACpD,OACE,OAAO,MAAM,YACV,KAAK,OAAO,oBAAoB,OAAO,UAAU,CAAC,GACrD,6BAA6B,GAC/B;CACA,MAAM,gBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE;CAC3C,MAAM,SAAS,OAAO,cAAc,SAAS,CAAC,EAAE,SAAS,EAAE;CAC3D,OACE,OAAO,WAAW,GAClB,sDAAsD,EAAE,SAAS,GACnE;CACA,OAAO,GAAG,SAAS;AACrB;AAEA,SAAgB,gBAAgB,aAAkC;CAChE,OACE,YAAY,UAAU,SAEpB,oDAAoD,YAAY,QACpE;CACA,MAAM,SAAS,YAAY,UAAU,GAAG,CAAC;CACzC,MAAM,gBAAgB,YAAY,UAAU,CAAC;CAC7C,OACE,cAAc,WAAW,SAAS,QAAQ,EAAE,IAAI,GAChD,wBAAwB,aAC1B;CACA,OAAO,YAAY,eAAe,EAAE;AACtC;AAIA,SAAgB,IAAI,GAAG,UAAgD;CACrE,IAAI,SAAS,SAAS;CACtB,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;EACxC,MAAM,IAAI,SAAS;EACnB,SAAS,SAAS,IAAI,SAAS;CACjC;CACA,OAAO;AACT;AAEA,SAAgB,IAAI,GAAG,UAAgD;CACrE,IAAI,SAAS,SAAS;CACtB,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;EACxC,MAAM,IAAI,SAAS;EACnB,SAAS,SAAS,IAAI,SAAS;CACjC;CACA,OAAO;AACT"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lite.js","names":[],"sources":["../../../../../../zero-cache/src/types/lite.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport {stringify, type JSONValue} from '../../../shared/src/bigint-json.ts';\nimport type {\n SchemaValue,\n ValueType,\n} from '../../../zero-schema/src/table-schema.ts';\nimport type {ColumnSpec, LiteTableSpec} from '../db/specs.ts';\nimport {dataTypeToZqlValueType as upstreamDataTypeToZqlValueType} from './pg-data-type.ts';\nimport type {PostgresValueType} from './pg.ts';\nimport type {RowValue} from './row-key.ts';\n\n/** Javascript value types supported by better-sqlite3. */\nexport type LiteValueType = number | bigint | string | null | Uint8Array;\n\nexport type LiteRow = Readonly<Record<string, LiteValueType>>;\nexport type LiteRowKey = LiteRow; // just for API readability\n\nfunction columnType(col: string, table: LiteTableSpec) {\n const spec = table.columns[col];\n assert(spec, `Unknown column ${col} in table ${table.name}`);\n return spec.dataType;\n}\n\nexport const JSON_STRINGIFIED = 's';\nexport const JSON_PARSED = 'p';\n\nexport type JSONFormat = typeof JSON_STRINGIFIED | typeof JSON_PARSED;\n\n/**\n * Creates a LiteRow from the supplied RowValue. A copy of the `row`\n * is made only if a value conversion is performed.\n */\nexport function liteRow(\n row: RowValue,\n table: LiteTableSpec,\n jsonFormat: JSONFormat,\n): {row: LiteRow; numCols: number} {\n let copyNeeded = false;\n let numCols = 0;\n\n for (const key in row) {\n numCols++;\n const val = row[key];\n const liteVal = liteValue(val, columnType(key, table), jsonFormat);\n if (val !== liteVal) {\n copyNeeded = true;\n break;\n }\n }\n if (!copyNeeded) {\n return {row: row as unknown as LiteRow, numCols};\n }\n // Slow path for when a conversion is needed.\n numCols = 0;\n const converted: Record<string, LiteValueType> = {};\n for (const key in row) {\n numCols++;\n converted[key] = liteValue(row[key], columnType(key, table), jsonFormat);\n }\n return {row: converted, numCols};\n}\n\n/**\n * Postgres values types that are supported by SQLite are stored as-is.\n * This includes Uint8Arrays for the `bytea` / `BLOB` type.\n * * `boolean` values are converted to `0` or `1` integers.\n * * `PreciseDate` values are converted to epoch microseconds.\n * * JSON and Array values are stored as `JSON.stringify()` strings.\n *\n * Note that this currently does not handle the `bytea[]` type, but that's\n * already a pretty questionable type.\n */\nexport function liteValue(\n val: PostgresValueType,\n pgType: string,\n jsonFormat: JSONFormat,\n): LiteValueType {\n if (val instanceof Uint8Array || val === null) {\n return val;\n }\n const valueType = liteTypeToZqlValueType(pgType);\n if (valueType === 'json') {\n if (jsonFormat === JSON_STRINGIFIED && typeof val === 'string') {\n // JSON and JSONB values are already strings if the JSON was not parsed.\n return val;\n }\n // Non-JSON/JSONB values will always appear as objects / arrays.\n return stringify(val);\n }\n const obj = toLiteValue(val);\n return obj && typeof obj === 'object' ? stringify(obj) : obj;\n}\n\nfunction toLiteValue(val: JSONValue): Exclude<JSONValue, boolean> {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'bigint':\n return val;\n case 'boolean':\n return val ? 1 : 0;\n }\n if (val === null) {\n return val;\n }\n if (Array.isArray(val)) {\n return val.map(v => toLiteValue(v));\n }\n assert(\n val.constructor?.name === 'Object',\n `Unhandled object type ${val.constructor?.name}`,\n );\n return val; // JSON\n}\n\nexport function mapLiteDataTypeToZqlSchemaValue(\n liteDataType: LiteTypeString,\n): SchemaValue {\n return {type: mapLiteDataTypeToZqlValueType(liteDataType)};\n}\n\nfunction mapLiteDataTypeToZqlValueType(dataType: LiteTypeString): ValueType {\n const type = liteTypeToZqlValueType(dataType);\n if (type === undefined) {\n throw new Error(`Unsupported data type ${dataType}`);\n }\n return type;\n}\n\n// Note: Includes the \"TEXT\" substring for SQLite type affinity\nconst TEXT_ENUM_ATTRIBUTE = '|TEXT_ENUM';\nconst NOT_NULL_ATTRIBUTE = '|NOT_NULL';\nexport const TEXT_ARRAY_ATTRIBUTE = '|TEXT_ARRAY';\n\n/**\n * The `LiteTypeString` utilizes SQLite's loose type system to encode\n * auxiliary information about the upstream column (e.g. type and\n * constraints) that does not necessarily affect how SQLite handles the data,\n * but nonetheless determines how higher level logic handles the data.\n *\n * The format of the type string is the original upstream type, followed\n * by any number of attributes, each of which begins with the `|` character.\n * The current list of attributes are:\n * * `|NOT_NULL` to indicate that the upstream column does not allow nulls\n * * `|TEXT_ENUM` to indicate an enum that should be treated as a string\n * * `|TEXT_ARRAY` to indicate an array\n *\n * Examples:\n * * `int8`\n * * `int8|NOT_NULL`\n * * `timestamp with time zone`\n * * `timestamp with time zone|NOT_NULL`\n * * `nomz|TEXT_ENUM`\n * * `nomz|NOT_NULL|TEXT_ENUM`\n * * `int8[]` - Legacy (read support)\n * * `int8[]|TEXT_ARRAY`\n * * `int8|TEXT_ARRAY[]` - Legacy (read support)\n * * `int8[]|TEXT_ARRAY[]` - Legacy (read support)\n * * `int8|NOT_NULL[]` - Legacy (read support)\n * * `nomz[]|TEXT_ENUM|TEXT_ARRAY`\n * * `nomz|TEXT_ENUM[]` - Legacy (read support)\n * * `nomz|TEXT_ENUM|TEXT_ARRAY[]` - Legacy (read support)\n */\nexport type LiteTypeString = string;\n\n/**\n * Formats a {@link LiteTypeString}.\n */\nexport function liteTypeString(\n upstreamDataType: string,\n notNull: boolean | null | undefined,\n textEnum: boolean,\n textArray: boolean,\n): LiteTypeString {\n let typeString = upstreamDataType;\n assert(!typeString.includes('|'), 'Upstream type should not contain |');\n if (notNull) {\n typeString += NOT_NULL_ATTRIBUTE;\n }\n if (textEnum) {\n typeString += TEXT_ENUM_ATTRIBUTE;\n }\n if (textArray) {\n typeString += TEXT_ARRAY_ATTRIBUTE;\n }\n return typeString;\n}\n\nexport function upstreamDataType(liteTypeString: LiteTypeString) {\n const delim = liteTypeString.indexOf('|');\n return delim > 0 ? liteTypeString.substring(0, delim) : liteTypeString;\n}\n\nexport function nullableUpstream(liteTypeString: LiteTypeString) {\n return !liteTypeString.includes(NOT_NULL_ATTRIBUTE);\n}\n\n/**\n * Returns the value type for the `pgDataType` if it is supported by ZQL.\n * (Note that `pgDataType` values are stored as-is in the SQLite column defs).\n *\n * For types not supported by ZQL, returns `undefined`.\n */\nexport function liteTypeToZqlValueType(\n liteTypeString: LiteTypeString,\n): ValueType | undefined {\n return upstreamDataTypeToZqlValueType(\n upstreamDataType(liteTypeString).toLowerCase(),\n liteTypeString.includes(TEXT_ENUM_ATTRIBUTE),\n isArray(liteTypeString),\n );\n}\n\nexport function isEnum(liteTypeString: LiteTypeString) {\n return liteTypeString.includes(TEXT_ENUM_ATTRIBUTE);\n}\n\nexport function isArray(liteTypeString: LiteTypeString) {\n return (\n liteTypeString.includes(TEXT_ARRAY_ATTRIBUTE) ||\n // Before we added `|TEXT_ARRAY`, we just used `[]` suffix to indicate arrays.\n liteTypeString.includes('[]')\n );\n}\n\nconst invalidDataTypeRe = /^.+\\|.*\\[\\]/;\n\nexport function assertValidLiteColumnSpec(spec: ColumnSpec) {\n const {dataType} = spec;\n assert(\n dataType.includes(TEXT_ARRAY_ATTRIBUTE) === dataType.includes('[]'),\n () =>\n `TEXT_ARRAY_ATTRIBUTE and [] must be consistent in dataType: ${dataType}`,\n );\n assert(\n dataType.includes('[]') === (spec.elemPgTypeClass !== null),\n () =>\n `[] in dataType (${dataType}) must match elemPgTypeClass presence (${spec.elemPgTypeClass})`,\n );\n\n // and no [] after |\n assert(!invalidDataTypeRe.test(dataType), `Invalid dataType ${dataType}`);\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","names":[],"sources":["../../../../../../zero-cache/src/types/names.ts"],"sourcesContent":["export function liteTableName(t: {schema: string; name: string}) {\n return t.schema === 'public' ? t.name : `${t.schema}.${t.name}`;\n}\n"],"mappings":";AAAA,SAAgB,cAAc,GAAmC;CAC/D,OAAO,EAAE,WAAW,WAAW,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,EAAE;AAC3D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-data-type.js","names":[],"sources":["../../../../../../zero-cache/src/types/pg-data-type.ts"],"sourcesContent":["import type {ValueType} from '../../../zero-protocol/src/client-schema.ts';\n\nexport const pgToZqlNumericTypeMap = Object.freeze({\n 'smallint': 'number',\n 'integer': 'number',\n 'int': 'number',\n 'int2': 'number',\n 'int4': 'number',\n 'int8': 'number',\n 'bigint': 'number',\n 'smallserial': 'number',\n 'serial': 'number',\n 'serial2': 'number',\n 'serial4': 'number',\n 'serial8': 'number',\n 'bigserial': 'number',\n 'decimal': 'number',\n 'numeric': 'number',\n 'real': 'number',\n 'double precision': 'number',\n 'float': 'number',\n 'float4': 'number',\n 'float8': 'number',\n});\n\nexport function isPgNumberType(pgType: string): boolean {\n return Object.hasOwn(pgToZqlNumericTypeMap, formatTypeForLookup(pgType));\n}\n\nexport const pgToZqlStringTypeMap = Object.freeze({\n 'bpchar': 'string',\n 'character': 'string',\n 'character varying': 'string',\n 'text': 'string',\n 'uuid': 'string',\n 'varchar': 'string',\n});\n\nexport function isPgStringType(pgType: string): boolean {\n return Object.hasOwn(pgToZqlStringTypeMap, formatTypeForLookup(pgType));\n}\n\nexport const pgToZqlTypeMap = Object.freeze({\n // Numeric types\n ...pgToZqlNumericTypeMap,\n\n // Date/Time types\n 'date': 'number',\n 'time': 'number',\n 'timetz': 'number',\n 'time with time zone': 'number',\n 'time without time zone': 'number',\n 'timestamp': 'number',\n 'timestamptz': 'number',\n 'timestamp with time zone': 'number',\n 'timestamp without time zone': 'number',\n\n // String types\n ...pgToZqlStringTypeMap,\n\n // Boolean types\n 'bool': 'boolean',\n 'boolean': 'boolean',\n\n 'json': 'json',\n 'jsonb': 'json',\n\n // TODO: Add support for these.\n // 'bytea':\n});\n\nexport function dataTypeToZqlValueType(\n pgType: string,\n isEnum: boolean,\n isArray: boolean,\n): ValueType | undefined {\n // We treat pg arrays as JSON values.\n if (isArray) {\n return 'json';\n }\n\n const valueType = (pgToZqlTypeMap as Record<string, ValueType>)[\n formatTypeForLookup(pgType)\n ];\n if (valueType === undefined && isEnum) {\n return 'string';\n }\n return valueType;\n}\n\n// Strips args (i.e. (32) in char(32)) and lowercases.\nfunction formatTypeForLookup(pgType: string): string {\n const startOfArgs = pgType.indexOf('(');\n if (startOfArgs === -1) {\n return pgType.toLocaleLowerCase();\n }\n return pgType.toLocaleLowerCase().substring(0, startOfArgs);\n}\n"],"mappings":";AAEA,IAAa,wBAAwB,OAAO,OAAO;CACjD,YAAY;CACZ,WAAW;CACX,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,eAAe;CACf,UAAU;CACV,WAAW;CACX,WAAW;CACX,WAAW;CACX,aAAa;CACb,WAAW;CACX,WAAW;CACX,QAAQ;CACR,oBAAoB;CACpB,SAAS;CACT,UAAU;CACV,UAAU;AACZ,CAAC;AAED,SAAgB,eAAe,QAAyB;CACtD,OAAO,OAAO,OAAO,uBAAuB,oBAAoB,MAAM,CAAC;AACzE;AAEA,IAAa,uBAAuB,OAAO,OAAO;CAChD,UAAU;CACV,aAAa;CACb,qBAAqB;CACrB,QAAQ;CACR,QAAQ;CACR,WAAW;AACb,CAAC;AAED,SAAgB,eAAe,QAAyB;CACtD,OAAO,OAAO,OAAO,sBAAsB,oBAAoB,MAAM,CAAC;AACxE;AAEA,IAAa,iBAAiB,OAAO,OAAO;CAE1C,GAAG;CAGH,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,uBAAuB;CACvB,0BAA0B;CAC1B,aAAa;CACb,eAAe;CACf,4BAA4B;CAC5B,+BAA+B;CAG/B,GAAG;CAGH,QAAQ;CACR,WAAW;CAEX,QAAQ;CACR,SAAS;AAIX,CAAC;AAED,SAAgB,uBACd,QACA,QACA,SACuB;CAEvB,IAAI,SACF,OAAO;CAGT,MAAM,YAAa,eACjB,oBAAoB,MAAM;CAE5B,IAAI,cAAc,KAAA,KAAa,QAC7B,OAAO;CAET,OAAO;AACT;AAGA,SAAS,oBAAoB,QAAwB;CACnD,MAAM,cAAc,OAAO,QAAQ,GAAG;CACtC,IAAI,gBAAgB,IAClB,OAAO,OAAO,kBAAkB;CAElC,OAAO,OAAO,kBAAkB,EAAE,UAAU,GAAG,WAAW;AAC5D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-types.js","names":[],"sources":["../../../../../../zero-cache/src/types/pg-types.ts"],"sourcesContent":["// Forked from https=//github.com/brianc/node-pg-types/blob/5b26b826466cff4a9092b8c9e31960fe293ef3d9/lib/builtins.js\n\n/**\n * Following query was used to generate this file=\n\n SELECT json_object_agg(UPPER(PT.typname), PT.oid==int4 ORDER BY pt.oid)\n FROM pg_type PT\n WHERE typnamespace = (SELECT pgn.oid FROM pg_namespace pgn WHERE nspname = 'pg_catalog') -- Take only builting Postgres types with stable OID (extension types are not guaranted to be stable)\n AND typtype = 'b' -- Only basic types\n AND typelem = 0 -- Ignore aliases\n AND typisdefined -- Ignore undefined types\n */\n\nexport const BOOL = 16;\nexport const BYTEA = 17;\nexport const CHAR = 18;\nexport const INT8 = 20;\nexport const INT2 = 21;\nexport const INT4 = 23;\nexport const REGPROC = 24;\nexport const TEXT = 25;\nexport const OID = 26;\nexport const TID = 27;\nexport const XID = 28;\nexport const CID = 29;\nexport const JSON = 114;\nexport const XML = 142;\nexport const PG_NODE_TREE = 194;\nexport const SMGR = 210;\nexport const PATH = 602;\nexport const POLYGON = 604;\nexport const CIDR = 650;\nexport const FLOAT4 = 700;\nexport const FLOAT8 = 701;\nexport const ABSTIME = 702;\nexport const RELTIME = 703;\nexport const TINTERVAL = 704;\nexport const CIRCLE = 718;\nexport const MACADDR8 = 774;\nexport const MONEY = 790;\nexport const MACADDR = 829;\nexport const INET = 869;\nexport const ACLITEM = 1033;\nexport const BPCHAR = 1042;\nexport const VARCHAR = 1043;\nexport const DATE = 1082;\nexport const TIME = 1083;\nexport const TIMESTAMP = 1114;\nexport const TIMESTAMPTZ = 1184;\nexport const INTERVAL = 1186;\nexport const TIMETZ = 1266;\nexport const BIT = 1560;\nexport const VARBIT = 1562;\nexport const NUMERIC = 1700;\nexport const REFCURSOR = 1790;\nexport const REGPROCEDURE = 2202;\nexport const REGOPER = 2203;\nexport const REGOPERATOR = 2204;\nexport const REGCLASS = 2205;\nexport const REGTYPE = 2206;\nexport const UUID = 2950;\nexport const TXID_SNAPSHOT = 2970;\nexport const PG_LSN = 3220;\nexport const PG_NDISTINCT = 3361;\nexport const PG_DEPENDENCIES = 3402;\nexport const TSVECTOR = 3614;\nexport const TSQUERY = 3615;\nexport const GTSVECTOR = 3642;\nexport const REGCONFIG = 3734;\nexport const REGDICTIONARY = 3769;\nexport const JSONB = 3802;\nexport const REGNAMESPACE = 4089;\nexport const REGROLE = 4096;\n"],"mappings":";AA2CA,IAAa,SAAS;AACtB,IAAa,UAAU;AACvB,IAAa,OAAO;AACpB,IAAa,OAAO;AACpB,IAAa,YAAY;AACzB,IAAa,cAAc;AAE3B,IAAa,SAAS;AAGtB,IAAa,UAAU;AAOvB,IAAa,OAAO;AAUpB,IAAa,QAAQ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-versions.js","names":[],"sources":["../../../../../../zero-cache/src/types/pg-versions.ts"],"sourcesContent":["export const PG_15 = 150000;\nexport const PG_17 = 170000;\n"],"mappings":";AAAA,IAAa,QAAQ;AACrB,IAAa,QAAQ"}