@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyze.js","names":[],"sources":["../../../../../zero-cache/src/services/analyze.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport type {AnalyzeQueryResult} from '../../../zero-protocol/src/analyze-query-result.ts';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {ClientSchema} from '../../../zero-protocol/src/client-schema.ts';\nimport type {PermissionsConfig} from '../../../zero-schema/src/compiled-permissions.ts';\nimport {Debug} from '../../../zql/src/builder/debug-delegate.ts';\nimport {MemoryStorage} from '../../../zql/src/ivm/memory-storage.ts';\nimport {\n AccumulatorDebugger,\n serializePlanDebugEvents,\n} from '../../../zql/src/planner/planner-debug.ts';\nimport {Database} from '../../../zqlite/src/db.ts';\nimport {explainQueries} from '../../../zqlite/src/explain-queries.ts';\nimport {createSQLiteCostModel} from '../../../zqlite/src/sqlite-cost-model.ts';\nimport {TableSource} from '../../../zqlite/src/table-source.ts';\nimport type {JWTAuth} from '../auth/auth.ts';\nimport type {NormalizedZeroConfig} from '../config/normalize.ts';\nimport {computeZqlSpecs, mustGetTableSpec} from '../db/lite-tables.ts';\nimport type {LiteAndZqlSpec, LiteTableSpec} from '../db/specs.ts';\nimport {runAst} from './run-ast.ts';\nimport {TimeSliceTimer} from './view-syncer/view-syncer.ts';\n\nconst TIME_SLICE_LAP_THRESHOLD_MS = 200;\n\nexport async function analyzeQuery(\n lc: LogContext,\n config: NormalizedZeroConfig,\n clientSchema: ClientSchema,\n ast: AST,\n syncedRows = true,\n vendedRows = false,\n permissions?: PermissionsConfig,\n auth?: JWTAuth,\n joinPlans = false,\n): Promise<AnalyzeQueryResult> {\n using db = new Database(lc, config.replica.file);\n const fullTables = new Map<string, LiteTableSpec>();\n const tableSpecs = new Map<string, LiteAndZqlSpec>();\n const tables = new Map<string, TableSource>();\n\n computeZqlSpecs(\n lc,\n db,\n {includeBackfillingColumns: false},\n tableSpecs,\n fullTables,\n );\n\n // Mirror production: the planner runs iff ZERO_ENABLE_QUERY_PLANNER is set\n // on the server, so the analysis reflects what actually executes. Diagnostic\n // event collection is orthogonal and opt-in via `joinPlans`.\n const costModel = config.enableQueryPlanner\n ? createSQLiteCostModel(db, tableSpecs)\n : undefined;\n const planDebugger = joinPlans ? new AccumulatorDebugger() : undefined;\n const timer = await new TimeSliceTimer(lc).start();\n const shouldYield = () => timer.elapsedLap() > TIME_SLICE_LAP_THRESHOLD_MS;\n const yieldProcess = () => timer.yieldProcess();\n const result = await runAst(\n lc,\n clientSchema,\n ast,\n true,\n {\n applyPermissions: permissions !== undefined,\n syncedRows,\n vendedRows,\n auth,\n db,\n tableSpecs,\n permissions,\n costModel,\n planDebugger,\n host: {\n debug: new Debug(),\n getSource(tableName: string) {\n let source = tables.get(tableName);\n if (source) {\n return source;\n }\n\n const tableSpec = mustGetTableSpec(tableSpecs, tableName);\n const {primaryKey} = tableSpec.tableSpec;\n\n source = new TableSource(\n lc,\n config.log,\n db,\n tableName,\n tableSpec.zqlSpec,\n primaryKey,\n shouldYield,\n );\n tables.set(tableName, source);\n return source;\n },\n createStorage() {\n return new MemoryStorage();\n },\n decorateSourceInput: input => input,\n decorateInput: input => input,\n addEdge() {},\n decorateFilterInput: input => input,\n },\n },\n yieldProcess,\n );\n\n result.sqlitePlans = explainQueries(result.readRowCountsByQuery ?? {}, db);\n\n if (planDebugger) {\n result.joinPlans = serializePlanDebugEvents(planDebugger.events);\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;AAsBA,IAAM,8BAA8B;AAEpC,eAAsB,aACpB,IACA,QACA,cACA,KACA,aAAa,MACb,aAAa,OACb,aACA,MACA,YAAY,OACiB;;;EAC7B,MAAM,KAAA,YAAA,EAAK,IAAI,SAAS,IAAI,OAAO,QAAQ,KAAK,CAAA;EAChD,MAAM,6BAAa,IAAI,KAA4B;EACnD,MAAM,6BAAa,IAAI,KAA6B;EACpD,MAAM,yBAAS,IAAI,KAA0B;AAE7C,kBACE,IACA,IACA,EAAC,2BAA2B,OAAM,EAClC,YACA,WACD;EAKD,MAAM,YAAY,OAAO,qBACrB,sBAAsB,IAAI,WAAW,GACrC,KAAA;EACJ,MAAM,eAAe,YAAY,IAAI,qBAAqB,GAAG,KAAA;EAC7D,MAAM,QAAQ,MAAM,IAAI,eAAe,GAAG,CAAC,OAAO;EAClD,MAAM,oBAAoB,MAAM,YAAY,GAAG;EAC/C,MAAM,qBAAqB,MAAM,cAAc;EAC/C,MAAM,SAAS,MAAM,OACnB,IACA,cACA,KACA,MACA;GACE,kBAAkB,gBAAgB,KAAA;GAClC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,MAAM;IACJ,OAAO,IAAI,OAAO;IAClB,UAAU,WAAmB;KAC3B,IAAI,SAAS,OAAO,IAAI,UAAU;AAClC,SAAI,OACF,QAAO;KAGT,MAAM,YAAY,iBAAiB,YAAY,UAAU;KACzD,MAAM,EAAC,eAAc,UAAU;AAE/B,cAAS,IAAI,YACX,IACA,OAAO,KACP,IACA,WACA,UAAU,SACV,YACA,YACD;AACD,YAAO,IAAI,WAAW,OAAO;AAC7B,YAAO;;IAET,gBAAgB;AACd,YAAO,IAAI,eAAe;;IAE5B,sBAAqB,UAAS;IAC9B,gBAAe,UAAS;IACxB,UAAU;IACV,sBAAqB,UAAS;IAC/B;GACF,EACD,aACD;AAED,SAAO,cAAc,eAAe,OAAO,wBAAwB,EAAE,EAAE,GAAG;AAE1E,MAAI,aACF,QAAO,YAAY,yBAAyB,aAAa,OAAO;AAGlE,SAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"backfill-manager.js","names":["#lc","#requiredBackfills","#changeStreamer","#backfillStreamer","#jsonFormat","#awaitingStatusWatermarks","#minBackoffMs","#maxBackoffMs","#retryDelayMs","#lastStatusWatermark","#setRequiredBackfill","#checkAndStartBackfill","#backfillRetryTimer","#runningBackfill","#runBackfill","#stopRunningBackfill","#retryBackfillWithBackoff","#changeStreamReached","#currentTxWatermark","#setLastStatusWatermark","#backfillRunningFor","#deleteRequiredBackfill"],"sources":["../../../../../../../zero-cache/src/services/change-source/common/backfill-manager.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {resolver} from '@rocicorp/resolver';\nimport {assert} 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 {JSON_STRINGIFIED, type JSONFormat} from '../../../types/lite.ts';\nimport {\n stateVersionFromString,\n stateVersionToString,\n} from '../../../types/state-version.ts';\nimport type {\n BackfillCompleted,\n BackfillRequest,\n ChangeStreamMessage,\n Identifier,\n MessageBackfill,\n} from '../protocol/current.ts';\nimport type {\n Cancelable,\n ChangeStreamMultiplexer,\n Listener,\n} from './change-stream-multiplexer.ts';\n\nfunction tableKey({schema, name}: Identifier) {\n return `${schema}.${name}`;\n}\n\ntype BackfillStreamer = (\n req: BackfillRequest,\n) => AsyncGenerator<MessageBackfill | BackfillCompleted>;\n\ntype RunningBackfillState = {\n request: BackfillRequest;\n canceledReason?: string | undefined;\n minWatermark: string;\n};\n\nconst MIN_BACKOFF_INTERVAL_MS = 2_000;\nconst MAX_BACKOFF_INTERVAL_MS = 60_000;\n\ntype AwaitingStatusWatermark = {\n watermark: string;\n reached: () => void;\n};\n\n/**\n * The BackfillManager initiates backfills for BackfillRequests from the\n * change-streamer (i.e. unfinished backfills from previous sessions)\n * or for new backfills signaled by `create-table` or `add-column` messages\n * from the change-source.\n *\n * The BackfillManager registers itself as a change stream listener in order\n * to track necessary backfills, and potentially invalidate the in-progress\n * backfill (e.g. due to a schema change) so that it can be retried at a\n * new snapshot.\n *\n * The manager also handles low priority streaming of the backfill messages\n * using the {@link ChangeStreamMultiplexer}, implementing a policy of always\n * releasing its reservation if another producer (i.e. the main change stream)\n * has messages to stream.\n */\nexport class BackfillManager implements Cancelable, Listener {\n readonly #lc: LogContext;\n\n /**\n * Tracks the metadata of required backfills based on schema changes\n * and initial backfill requests.\n */\n readonly #requiredBackfills = new CustomKeyMap<Identifier, BackfillRequest>(\n tableKey,\n );\n readonly #changeStreamer: ChangeStreamMultiplexer;\n readonly #backfillStreamer: BackfillStreamer;\n readonly #jsonFormat: JSONFormat;\n\n /**\n * The current running backfill. The backfill request is always also in\n * `#requiredBackfills` (technically, it can be a subset of what's in\n * `#requiredBackfills`); the request is removed from `#requiredBackfills`\n * upon completion.\n */\n #runningBackfill: RunningBackfillState | null = null;\n\n /** The last seen watermark in the change stream. */\n #lastStatusWatermark: string | null = null;\n\n readonly #awaitingStatusWatermarks: AwaitingStatusWatermark[] = [];\n\n /** The watermark of the current transaction in the change stream. */\n #currentTxWatermark: string | null = null;\n\n constructor(\n lc: LogContext,\n changeStreamer: ChangeStreamMultiplexer,\n backfillStreamer: BackfillStreamer,\n jsonFormat: JSONFormat = JSON_STRINGIFIED,\n minBackoffMs = MIN_BACKOFF_INTERVAL_MS,\n maxBackoffMs = MAX_BACKOFF_INTERVAL_MS,\n ) {\n this.#lc = lc.withContext('component', 'backfill-manager');\n this.#changeStreamer = changeStreamer;\n this.#backfillStreamer = backfillStreamer;\n this.#jsonFormat = jsonFormat;\n this.#minBackoffMs = minBackoffMs;\n this.#maxBackoffMs = maxBackoffMs;\n this.#retryDelayMs = minBackoffMs;\n }\n\n run(lastWatermark: string, initialRequests: BackfillRequest[]) {\n this.#lc.info?.(\n `starting backfill manager with ${initialRequests.length} initial requests`,\n {requests: initialRequests},\n );\n this.#lastStatusWatermark = lastWatermark;\n initialRequests.forEach(req =>\n this.#setRequiredBackfill('initial-request', req),\n );\n this.#checkAndStartBackfill();\n }\n\n #setLastStatusWatermark({watermark}: {watermark: string}) {\n // Only allow the watermark to move forward. This prevents a backfill\n // transaction (whose watermark is unrelated to change-stream state)\n // from moving the watermark backwards.\n if ((this.#lastStatusWatermark ?? '') < watermark) {\n this.#lastStatusWatermark = watermark;\n for (let i = this.#awaitingStatusWatermarks.length - 1; i >= 0; i--) {\n const awaiting = this.#awaitingStatusWatermarks[i];\n if (watermark >= awaiting.watermark) {\n awaiting.reached();\n this.#awaitingStatusWatermarks.splice(i, 1);\n }\n }\n }\n }\n\n #changeStreamReached(\n lc: LogContext,\n watermark: string,\n ): Promise<void> | null {\n if ((this.#lastStatusWatermark ?? '') < watermark) {\n const {promise, resolve: reached} = resolver();\n this.#awaitingStatusWatermarks.push({watermark, reached});\n lc.info?.(\n `waiting for change stream (at ${this.#lastStatusWatermark}) to reach ${watermark}`,\n );\n return promise;\n }\n return null;\n }\n\n readonly #minBackoffMs: number;\n readonly #maxBackoffMs: number;\n #retryDelayMs: number;\n #backfillRetryTimer: NodeJS.Timeout | undefined;\n\n #checkAndStartBackfill() {\n if (\n !this.#backfillRetryTimer &&\n !this.#runningBackfill &&\n this.#requiredBackfills.size\n ) {\n // Pick a random backfill to avoid head-of-line blocking by a\n // problematic backfill (e.g. awaiting a primary key). This is\n // simpler that adding logic to classify (and declassify)\n // problematic backfills.\n const candidates = [...this.#requiredBackfills.values()];\n const request = candidates[randInt(0, candidates.length - 1)];\n const state = {request, minWatermark: ''};\n const lc = this.#lc.withContext('table', request.table.name);\n\n this.#runningBackfill = state;\n void this.#runBackfill(lc, state)\n .then(() => {\n this.#stopRunningBackfill('backfill exited', state);\n this.#retryDelayMs = this.#minBackoffMs; // reset on success\n })\n // For unexpected errors (e.g. upstream replication slot\n // unavailability), retry with exponential backoff.\n .catch(e => {\n this.#stopRunningBackfill(String(e), state);\n this.#retryBackfillWithBackoff(e);\n });\n }\n }\n\n #retryBackfillWithBackoff(e: unknown) {\n const log = this.#retryDelayMs === this.#maxBackoffMs ? 'error' : 'warn';\n this.#lc[log]?.(\n `Error running backfill. Retrying in ${this.#retryDelayMs} ms`,\n e,\n );\n this.#backfillRetryTimer = setTimeout(() => {\n this.#backfillRetryTimer = undefined;\n this.#checkAndStartBackfill();\n }, this.#retryDelayMs);\n\n this.#retryDelayMs = Math.min(this.#retryDelayMs * 2, this.#maxBackoffMs);\n }\n\n async #runBackfill(lc: LogContext, state: RunningBackfillState) {\n const changeStream = this.#changeStreamer; // Purely for readability\n\n // backfillTx is set if and only if a changeStreamer reservation has been\n // acquired and the backfill stream is inside a transaction.\n let backfillTx: string | null = null;\n\n /**\n * @returns the new tx watermark, or null if backfill was cancelled\n */\n const beginTxFor = async (\n msg: MessageBackfill | BackfillCompleted,\n ): Promise<string | null> => {\n assert(backfillTx === null, 'Expected no active backfill transaction');\n const lastWatermark = await changeStream.reserve('backfill');\n\n // After obtaining the changeStream reservation, check if the stream\n // had changes that resulted in invalidating / canceling this backfill.\n if (\n state.canceledReason ||\n (msg.tag === 'backfill' && msg.watermark < state.minWatermark)\n ) {\n if (state.canceledReason === undefined) {\n assert(msg.tag === 'backfill', 'Expected backfill message tag'); // TypeScript should have figured this out.\n this.#stopRunningBackfill(\n `row key change at ${state.minWatermark} ` +\n `postdates backfill watermark at ${msg.watermark}`,\n state,\n );\n }\n changeStream.release(lastWatermark);\n return null;\n }\n\n const {major, minor = 0n} = stateVersionFromString(lastWatermark);\n let tx = stateVersionToString({\n major,\n minor: BigInt(minor) + 1n,\n });\n\n if (msg.tag === 'backfill-completed' && tx < msg.watermark) {\n // At this point it must be the case that the #changeStreamReached() the\n // backfill watermark. Given that guarantee, ensure that the version of the\n // transaction containing the backfill-completed message is at least up\n // to the backfill watermark, so that the final database state version is\n // never earlier than the version of any backfilled rows.\n tx = msg.watermark;\n }\n\n void changeStream.push([\n 'begin',\n {tag: 'begin', json: this.#jsonFormat, skipAck: true},\n {commitWatermark: tx},\n ]);\n return (backfillTx = tx);\n };\n\n const commitTx = () => {\n if (backfillTx) {\n void changeStream.push([\n 'commit',\n {tag: 'commit'},\n {watermark: backfillTx},\n ]);\n changeStream.release(backfillTx);\n }\n backfillTx = null;\n };\n\n for await (const msg of this.#backfillStreamer(state.request)) {\n // Before sending `backfill-completed`, the main replication stream\n // may need to catch up, and/or the current transaction may need to be\n // committed to open a new transaction that's up to backfill watermark.\n const mustWaitBeforeFlush =\n msg.tag === 'backfill-completed' &&\n (this.#changeStreamReached(lc, msg.watermark) ||\n (backfillTx !== null && backfillTx < msg.watermark));\n\n // If necessary, yield the reservation to the main stream.\n if (\n backfillTx &&\n (changeStream.waiterDelay() > 0 || mustWaitBeforeFlush)\n ) {\n commitTx();\n }\n\n mustWaitBeforeFlush && (await mustWaitBeforeFlush);\n\n if (\n msg.tag === 'backfill' &&\n msg.rowValues.length > 0 &&\n msg.relation.rowKey.columns.length === 0\n ) {\n throw new MissingRowKeyError(state.request);\n }\n\n // Reserve the changeStreamer if not in a transaction.\n if ((backfillTx ??= await beginTxFor(msg)) === null) {\n lc.info?.(\n `backfill stream canceled: ${state.canceledReason}`,\n state.request,\n );\n this.#checkAndStartBackfill(); // start the next backfill if present\n return; // this backfill is canceled\n }\n\n // `await` to allow the change streamer to exert back pressure\n // on backfills.\n await changeStream.push(['data', msg]);\n }\n\n // Flush any final tx and release the stream.\n backfillTx && commitTx();\n lc.debug?.(`backfill stream exited`, state.canceledReason ?? '');\n }\n\n #backfillRunningFor(table: Identifier): RunningBackfillState | null {\n const state = this.#runningBackfill;\n return state?.request.table.schema === table.schema &&\n state.request.table.name === table.name\n ? state\n : null;\n }\n\n /**\n * Stops the running backfill for the specified `reason`. If `instance` is\n * specified, the running backfill is stopped only if it is that instance.\n * This allows the running backfill itself to clear backfill state without\n * accidentally stopping a different (e.g. subsequent) backfill.\n */\n #stopRunningBackfill(reason?: string, instance?: RunningBackfillState) {\n const backfill = this.#runningBackfill;\n if (backfill && backfill === (instance ?? backfill)) {\n backfill.canceledReason = reason;\n this.#runningBackfill = null;\n reason && this.#lc.info?.(`canceling backfill:`, reason);\n }\n }\n\n #setRequiredBackfill(source: string, req: BackfillRequest) {\n const action = this.#requiredBackfills.has(req.table) ? 'updated' : 'added';\n this.#lc.info?.(`Backfill ${action}: ${source}`, {backfill: req});\n this.#requiredBackfills.set(req.table, req);\n }\n\n #deleteRequiredBackfill(source: string, id: Identifier) {\n const req = this.#requiredBackfills.get(id);\n if (req) {\n const action = source === 'backfill-completed' ? 'completed' : 'dropped';\n this.#lc.info?.(`Backfill ${action}: ${source}`, {backfill: req});\n this.#requiredBackfills.delete(id);\n }\n }\n\n /**\n * Implements {@link Listener.onChange()}, invoked by the\n * {@link ChangeStreamMultiplexer}.\n */\n onChange(message: ChangeStreamMessage): void {\n if (message[0] === 'begin') {\n this.#currentTxWatermark = message[2].commitWatermark;\n return;\n }\n if (message[0] === 'commit') {\n this.#currentTxWatermark = null;\n this.#setLastStatusWatermark(message[2]);\n // Every commit is a candidate for starting the next backfill\n // (if one is not currently running).\n this.#checkAndStartBackfill();\n return;\n }\n if (message[0] === 'status') {\n this.#setLastStatusWatermark(message[2]);\n return;\n }\n if (message[0] !== 'data') {\n return;\n }\n const change = message[1];\n const {tag} = change;\n switch (tag) {\n case 'update-table-metadata': {\n const {table, new: metadata} = change;\n const backfillRequest = this.#requiredBackfills.get(table);\n if (backfillRequest) {\n this.#setRequiredBackfill(tag, {\n ...backfillRequest,\n table: {...backfillRequest.table, metadata},\n });\n if (this.#backfillRunningFor(table)) {\n this.#stopRunningBackfill(`TableMetadata updated`);\n }\n }\n break;\n }\n case 'create-table': {\n const {\n spec: {schema, name},\n metadata = null,\n backfill,\n } = change;\n\n if (backfill) {\n this.#setRequiredBackfill(tag, {\n table: {schema, name, metadata},\n columns: backfill,\n });\n }\n break;\n }\n case 'rename-table': {\n const {old, new: newTable} = change;\n const backfillRequest = this.#requiredBackfills.get(old);\n if (backfillRequest) {\n const {schema, name} = newTable;\n this.#deleteRequiredBackfill(tag, old);\n this.#setRequiredBackfill(tag, {\n ...backfillRequest,\n table: {...backfillRequest.table, schema, name},\n });\n if (this.#backfillRunningFor(old)) {\n this.#stopRunningBackfill(`table renamed`);\n }\n }\n break;\n }\n case 'drop-table': {\n const {id} = change;\n const backfillRequest = this.#requiredBackfills.get(id);\n if (backfillRequest) {\n this.#deleteRequiredBackfill(tag, id);\n if (this.#backfillRunningFor(id)) {\n this.#stopRunningBackfill(`table dropped`);\n }\n }\n break;\n }\n case 'add-column': {\n const {\n table,\n tableMetadata: metadata = null,\n column,\n backfill,\n } = change;\n if (backfill) {\n const backfillRequest = this.#requiredBackfills.get(table);\n if (!backfillRequest) {\n this.#setRequiredBackfill(tag, {\n table: {...table, metadata},\n columns: {[column.name]: backfill},\n });\n } else {\n this.#setRequiredBackfill(tag, {\n ...backfillRequest,\n table: {...backfillRequest.table, metadata},\n columns: {\n ...backfillRequest.columns,\n [column.name]: backfill,\n },\n });\n // Note: The running backfill need not be canceled if a\n // new column is added. The new column will be backfilled\n // by its own stream after the current backfill completes.\n }\n }\n break;\n }\n case 'update-column': {\n const {\n table,\n old: {name: oldName},\n new: {name: newName},\n } = change;\n if (oldName !== newName) {\n const backfillRequest = this.#requiredBackfills.get(table);\n if (backfillRequest && oldName in backfillRequest.columns) {\n const {[oldName]: colSpec, ...otherCols} = backfillRequest.columns;\n this.#setRequiredBackfill(tag, {\n ...backfillRequest,\n columns: {...otherCols, [newName]: colSpec},\n });\n const backfill = this.#backfillRunningFor(table);\n if (backfill && oldName in backfill.request.columns) {\n this.#stopRunningBackfill(`column renamed`);\n }\n }\n }\n break;\n }\n case 'drop-column': {\n const {table, column} = change;\n const backfillRequest = this.#requiredBackfills.get(table);\n if (backfillRequest && column in backfillRequest.columns) {\n const {[column]: _excluded, ...remaining} = backfillRequest.columns;\n if (Object.keys(remaining).length === 0) {\n this.#deleteRequiredBackfill(tag, table);\n } else {\n this.#setRequiredBackfill(tag, {\n ...backfillRequest,\n columns: remaining,\n });\n }\n const backfill = this.#backfillRunningFor(table);\n if (backfill && column in backfill.request.columns) {\n this.#stopRunningBackfill(`column dropped`);\n }\n }\n break;\n }\n case 'update': {\n const {relation, key, new: row} = change;\n const backfill = this.#backfillRunningFor(relation);\n const txWatermark = must(this.#currentTxWatermark, `not in a tx`);\n if (backfill?.request.table.metadata && key !== null) {\n // A corner case that backfill is unable to correctly handle is\n // when a row's key changes; this is decomposed into a delete\n // of the old key and a set of the new key in the replica change\n // log, at which point the backfill algorithm assumes that the\n // (old) row is deleted but does not know to backfill the new row.\n // In these corner cases, the current backfill is canceled and\n // retried if its version precedes this update.\n for (const col of Object.keys(\n backfill.request.table.metadata.rowKey,\n )) {\n if (key[col] !== row[col]) {\n backfill.minWatermark = txWatermark;\n this.#lc.info?.(\n `key for row as changed (col: ${col}). ` +\n `backfill data must not predate ${backfill.minWatermark}`,\n );\n break;\n }\n }\n }\n break;\n }\n case 'backfill-completed': {\n const {relation, columns} = change;\n const backfillRequest = this.#requiredBackfills.get(relation);\n assert(\n backfillRequest,\n () => `No BackfillRequest completed backfill ${stringify(change)}`,\n );\n const remaining = Object.entries(backfillRequest.columns).filter(\n ([col]) =>\n !(columns.includes(col) || relation.rowKey.columns.includes(col)),\n );\n if (remaining.length === 0) {\n this.#deleteRequiredBackfill(tag, relation);\n } else {\n this.#setRequiredBackfill(tag, {\n ...backfillRequest,\n columns: Object.fromEntries(remaining),\n });\n }\n // Technically the backfill is already stopping, but this method\n // cleans up the state that tracks it.\n this.#stopRunningBackfill();\n break;\n }\n }\n }\n\n cancel(): void {\n this.#stopRunningBackfill(`change stream canceled`);\n clearTimeout(this.#backfillRetryTimer);\n }\n}\n\nabstract class BackfillStreamError extends Error {\n constructor(bf: BackfillRequest, msg: string, cause?: unknown) {\n super(\n `Cannot backfill ${bf.table.schema}.${bf.table.name}` +\n `[${Object.keys(bf.columns).join(',')}]: ${msg}`,\n {cause},\n );\n }\n}\n\n/**\n * Background: The zero-cache supports replication of tables without a\n * PRIMARY KEY to facilitate the onboarding process. These rows can be\n * INSERT'ed, but postgres will rightfully prohibit UPDATEs and DELETEs\n * on such tables because the rows cannot be identified by a key. Supporting\n * this mode of replication allows the user to \"fix\" the setup by adding the\n * primary key, after which the table can be published downstream without\n * requiring a resync of the data.\n *\n * In terms of backfill, however, non-empty tables without a row key **cannot**\n * be backfilled, because backfill retries would result in writing duplicating\n * rows. (Empty tables, on the other hand, are fine because there is no data\n * to be deduped.)\n *\n * The MissingRowKeyError is used to signal that the table cannot be backfilled\n * in its current state. For simplicity, it is handled like runtime errors and\n * retried with backoff, with which it can eventually succeed if (1) a primary\n * key is added or (2) the table is emptied, e.g. via a TRUNCATE.\n */\nclass MissingRowKeyError extends BackfillStreamError {\n readonly name = 'MissingRowKeyError';\n\n constructor(bf: BackfillRequest, cause?: unknown) {\n super(bf, `\"${bf.table.name}\" is missing a PRIMARY KEY`, cause);\n }\n}\n\n/**\n * Error type for backfill stream implementations to throw indicating that\n * the backfill request failed due to a schema incompatibility error. This\n * type of error does not need exponential backoff, as the retry happens\n * naturally once the invalidating schema change is processed and committed.\n */\nexport class SchemaIncompatibilityError extends BackfillStreamError {\n readonly name = 'SchemaIncompatibilityError';\n\n constructor(bf: BackfillRequest, msg: string, cause?: unknown) {\n super(bf, msg, cause);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-stream-multiplexer.js","names":["#lc","#sub","#producers","#listeners","#waiters","#lastWatermark"],"sources":["../../../../../../../zero-cache/src/services/change-source/common/change-stream-multiplexer.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {resolver} from '@rocicorp/resolver';\nimport {assert} from '../../../../../shared/src/asserts.ts';\nimport type {Source} from '../../../types/streams.ts';\nimport {Subscription} from '../../../types/subscription.ts';\nimport type {\n ChangeStreamMessage,\n DownstreamStatusMessage,\n} from '../protocol/current.ts';\n\nexport type Cancelable = {\n cancel(): void;\n};\n\nexport type Listener = {\n onChange(change: ChangeStreamMessage): void;\n};\n\ntype Waiter = {\n producer: string;\n startTime: number;\n grantReservation: (watermark: string) => void;\n};\n\n/**\n * Facilitates cooperative multiplexing of transactions from\n * multiple producers into a single change stream.\n */\nexport class ChangeStreamMultiplexer {\n readonly #lc: LogContext;\n readonly #sub: Subscription<ChangeStreamMessage>;\n readonly #producers: Cancelable[] = [];\n readonly #listeners: Listener[] = [];\n\n /**\n * The `#lastWatermark` tracks the watermark of the last transaction\n * committed to stream. It is set to null when a producer has reserved\n * the stream, and set to the new watermark when the producer releases\n * the reservation.\n */\n #lastWatermark: string | null;\n\n /**\n * Tracks the queue of producers waiting for a reservation.\n */\n readonly #waiters: Waiter[] = [];\n\n constructor(lc: LogContext, lastWatermark: string) {\n this.#lc = lc;\n this.#sub = Subscription.create<ChangeStreamMessage>({\n cleanup: () => this.#producers.forEach(p => p.cancel()),\n });\n this.#lastWatermark = lastWatermark;\n }\n\n addProducers(...p: Cancelable[]): this {\n this.#producers.push(...p);\n return this;\n }\n\n addListeners(...l: Listener[]): this {\n this.#listeners.push(...l);\n return this;\n }\n\n /**\n * Called by a producer to \"reserve\" the exclusive right to push data\n * changes to the stream. If the stream is currently reserved,\n * the resulting Promise must be awaited.\n *\n * The producer must then {@link release()} the reservation when it sees\n * fit.\n *\n * @param producer The name of the producer, purely for debugging output\n */\n reserve(producer: string): string | Promise<string> {\n if (this.#lastWatermark !== null) {\n // If the stream is not reserved, reserve it and return the\n // watermark.\n const lastWatermark = this.#lastWatermark;\n this.#lastWatermark = null;\n return lastWatermark;\n }\n\n // Otherwise, wait for the current reservation to be released.\n const startTime = performance.now();\n const {promise, resolve: grantReservation} = resolver<string>();\n this.#waiters.push({producer, startTime, grantReservation});\n\n return promise;\n }\n\n /**\n * If there are producers currently awaiting a reservation, returns\n * the duration (in milliseconds) of the oldest reservation request.\n * Returns a negative number if there are no waiters.\n */\n waiterDelay(): number {\n if (this.#waiters.length === 0) {\n return -1;\n }\n return performance.now() - this.#waiters[0].startTime;\n }\n\n /**\n * Called by a producer to release its reservation after committing its\n * last transaction.\n */\n release(newWatermark: string) {\n const waiter = this.#waiters.shift();\n if (!waiter) {\n this.#lastWatermark = newWatermark;\n } else {\n const {producer, startTime, grantReservation} = waiter;\n grantReservation(newWatermark);\n const elapsed = performance.now() - startTime;\n this.#lc.info?.(\n `${producer} waited ${elapsed.toFixed(3)} ms for stream reservation`,\n );\n }\n }\n\n /**\n * `pushStatus()` can be called without a reservation, as it\n * does not constitute a data change and can appear anywhere\n * in the stream.\n */\n pushStatus(message: DownstreamStatusMessage) {\n // Let listeners know about all status messages.\n this.#listeners.forEach(l => l.onChange(message));\n // The ChangeStreamer only cares about status messages requiring an ack\n // or containing a lagReport. To reduce churn, avoid sending other status\n // messages.\n if (message[1].ack || message[1].lagReport) {\n this.#sub.push(message);\n }\n }\n\n /**\n * `push()` must only be called by a producer after it has\n * {@link reserve}d the stream.\n */\n push(message: ChangeStreamMessage): Promise<unknown> {\n assert(\n this.#lastWatermark === null,\n `push() called without reserve()-ing the stream`,\n );\n this.#listeners.forEach(l => l.onChange(message));\n return this.#sub.push(message).result;\n }\n\n fail(err: Error) {\n this.#sub.fail(err);\n }\n\n asSource(): Source<ChangeStreamMessage> {\n return this.#sub;\n }\n}\n"],"mappings":";;;;;;;;AA4BA,IAAa,0BAAb,MAAqC;CACnC;CACA;CACA,aAAoC,EAAE;CACtC,aAAkC,EAAE;;;;;;;CAQpC;;;;CAKA,WAA8B,EAAE;CAEhC,YAAY,IAAgB,eAAuB;AACjD,QAAA,KAAW;AACX,QAAA,MAAY,aAAa,OAA4B,EACnD,eAAe,MAAA,UAAgB,SAAQ,MAAK,EAAE,QAAQ,CAAC,EACxD,CAAC;AACF,QAAA,gBAAsB;;CAGxB,aAAa,GAAG,GAAuB;AACrC,QAAA,UAAgB,KAAK,GAAG,EAAE;AAC1B,SAAO;;CAGT,aAAa,GAAG,GAAqB;AACnC,QAAA,UAAgB,KAAK,GAAG,EAAE;AAC1B,SAAO;;;;;;;;;;;;CAaT,QAAQ,UAA4C;AAClD,MAAI,MAAA,kBAAwB,MAAM;GAGhC,MAAM,gBAAgB,MAAA;AACtB,SAAA,gBAAsB;AACtB,UAAO;;EAIT,MAAM,YAAY,YAAY,KAAK;EACnC,MAAM,EAAC,SAAS,SAAS,qBAAoB,UAAkB;AAC/D,QAAA,QAAc,KAAK;GAAC;GAAU;GAAW;GAAiB,CAAC;AAE3D,SAAO;;;;;;;CAQT,cAAsB;AACpB,MAAI,MAAA,QAAc,WAAW,EAC3B,QAAO;AAET,SAAO,YAAY,KAAK,GAAG,MAAA,QAAc,GAAG;;;;;;CAO9C,QAAQ,cAAsB;EAC5B,MAAM,SAAS,MAAA,QAAc,OAAO;AACpC,MAAI,CAAC,OACH,OAAA,gBAAsB;OACjB;GACL,MAAM,EAAC,UAAU,WAAW,qBAAoB;AAChD,oBAAiB,aAAa;GAC9B,MAAM,UAAU,YAAY,KAAK,GAAG;AACpC,SAAA,GAAS,OACP,GAAG,SAAS,UAAU,QAAQ,QAAQ,EAAE,CAAC,4BAC1C;;;;;;;;CASL,WAAW,SAAkC;AAE3C,QAAA,UAAgB,SAAQ,MAAK,EAAE,SAAS,QAAQ,CAAC;AAIjD,MAAI,QAAQ,GAAG,OAAO,QAAQ,GAAG,UAC/B,OAAA,IAAU,KAAK,QAAQ;;;;;;CAQ3B,KAAK,SAAgD;AACnD,SACE,MAAA,kBAAwB,MACxB,iDACD;AACD,QAAA,UAAgB,SAAQ,MAAK,EAAE,SAAS,QAAQ,CAAC;AACjD,SAAO,MAAA,IAAU,KAAK,QAAQ,CAAC;;CAGjC,KAAK,KAAY;AACf,QAAA,IAAU,KAAK,IAAI;;CAGrB,WAAwC;AACtC,SAAO,MAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"replica-schema.js","names":[],"sources":["../../../../../../../zero-cache/src/services/change-source/common/replica-schema.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {SqliteError} from '@rocicorp/zero-sqlite3';\nimport type {Database} from '../../../../../zqlite/src/db.ts';\nimport {listTables} from '../../../db/lite-tables.ts';\nimport {\n runSchemaMigrations,\n type IncrementalMigrationMap,\n type Migration,\n} from '../../../db/migration-lite.ts';\nimport {AutoResetSignal} from '../../change-streamer/schema/tables.ts';\nimport {populateFromExistingTables} from '../../replicator/schema/column-metadata.ts';\nimport {\n CREATE_RUNTIME_EVENTS_TABLE,\n recordEvent,\n} from '../../replicator/schema/replication-state.ts';\n\nexport async function initReplica(\n log: LogContext,\n debugName: string,\n dbPath: string,\n initialSync: (lc: LogContext, tx: Database) => Promise<void>,\n): Promise<void> {\n const setupMigration: Migration = {\n migrateSchema: (log, tx) => initialSync(log, tx),\n minSafeVersion: 1,\n };\n\n try {\n await runSchemaMigrations(\n log,\n debugName,\n dbPath,\n setupMigration,\n schemaVersionMigrationMap,\n );\n } catch (e) {\n if (e instanceof SqliteError && e.code === 'SQLITE_CORRUPT') {\n throw new AutoResetSignal(e.message);\n }\n throw e;\n }\n}\n\nexport async function upgradeReplica(\n log: LogContext,\n debugName: string,\n dbPath: string,\n) {\n await runSchemaMigrations(\n log,\n debugName,\n dbPath,\n // setupMigration should never be invoked\n {\n migrateSchema: () => {\n throw new Error(\n 'This should only be called for already synced replicas',\n );\n },\n },\n schemaVersionMigrationMap,\n );\n}\n\nexport const CREATE_V6_COLUMN_METADATA_TABLE = /*sql*/ `\n CREATE TABLE \"_zero.column_metadata\" (\n table_name TEXT NOT NULL,\n column_name TEXT NOT NULL,\n upstream_type TEXT NOT NULL,\n is_not_null INTEGER NOT NULL,\n is_enum INTEGER NOT NULL,\n is_array INTEGER NOT NULL,\n character_max_length INTEGER,\n PRIMARY KEY (table_name, column_name)\n );\n`;\n\nexport const CREATE_V7_CHANGE_LOG = /*sql*/ `\n CREATE TABLE \"_zero.changeLog2\" (\n \"stateVersion\" TEXT NOT NULL,\n \"pos\" INT NOT NULL,\n \"table\" TEXT NOT NULL,\n \"rowKey\" TEXT NOT NULL,\n \"op\" TEXT NOT NULL,\n PRIMARY KEY(\"stateVersion\", \"pos\"),\n UNIQUE(\"table\", \"rowKey\")\n );\n`;\n\nexport const CREATE_V9_TABLE_METADATA_TABLE = /*sql*/ `\n CREATE TABLE \"_zero.tableMetadata\" (\n \"schema\" TEXT NOT NULL,\n \"table\" TEXT NOT NULL,\n \"metadata\" TEXT NOT NULL,\n PRIMARY KEY (\"schema\", \"table\")\n );\n`;\n\nexport const schemaVersionMigrationMap: IncrementalMigrationMap = {\n // There's no incremental migration from v1. Just reset the replica.\n 4: {\n migrateSchema: () => {\n throw new AutoResetSignal('upgrading replica to new schema');\n },\n minSafeVersion: 3,\n },\n\n 5: {\n migrateSchema: (_, db) => {\n db.exec(CREATE_RUNTIME_EVENTS_TABLE);\n },\n migrateData: (_, db) => {\n recordEvent(db, 'upgrade');\n },\n },\n\n // Revised in the migration to v8 because the v6 code was incomplete.\n 6: {},\n\n 7: {\n migrateSchema: (_, db) => {\n // Note: The original \"changeLog\" table is kept so that the replica file\n // is compatible with older zero-caches. However, it is truncated for\n // space savings (since historic changes were never read).\n db.exec(`DELETE FROM \"_zero.changeLog\"`);\n // First version of changeLog2\n db.exec(CREATE_V7_CHANGE_LOG);\n },\n },\n\n 8: {\n migrateSchema: (_, db) => {\n const tableExists = db\n .prepare(\n `SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = '_zero.column_metadata'`,\n )\n .get();\n\n if (!tableExists) {\n db.exec(CREATE_V6_COLUMN_METADATA_TABLE);\n }\n },\n migrateData: (_, db) => {\n // Re-populate the ColumnMetadataStore; the original migration\n // at v6 was incomplete, as covered replicas migrated from earlier\n // versions but did not initialize the table for new replicas.\n db.exec(/*sql*/ `DELETE FROM \"_zero.column_metadata\"`);\n\n const tables = listTables(db, false, false);\n populateFromExistingTables(db, tables);\n },\n },\n\n 9: {\n migrateSchema: (_, db) => {\n db.exec(\n /*sql*/ `\n ALTER TABLE \"_zero.changeLog2\" \n ADD COLUMN \"backfillingColumnVersions\" TEXT DEFAULT '{}';\n ALTER TABLE \"_zero.column_metadata\"\n ADD COLUMN backfill TEXT;\n ` + CREATE_V9_TABLE_METADATA_TABLE,\n );\n },\n },\n\n 10: {\n migrateSchema: (_, db) => {\n db.exec(/*sql*/ `\n ALTER TABLE \"_zero.replicationConfig\" \n ADD COLUMN \"initialSyncContext\" TEXT DEFAULT '{}';\n `);\n },\n },\n\n 11: {\n migrateSchema: (_, db) => {\n db.exec(/*sql*/ `\n ALTER TABLE \"_zero.tableMetadata\"\n ADD COLUMN \"minRowVersion\" TEXT NOT NULL DEFAULT '00';\n\n -- Removing the NOT NULL constraint from \"metadata\" requires copying\n -- the column. We piggyback the rename to \"upstreamMetadata\" here.\n ALTER TABLE \"_zero.tableMetadata\"\n ADD COLUMN \"upstreamMetadata\" TEXT;\n UPDATE \"_zero.tableMetadata\" SET \"upstreamMetadata\" = \"metadata\";\n ALTER TABLE \"_zero.tableMetadata\" DROP \"metadata\";\n `);\n },\n },\n\n 12: {\n migrateSchema: (_, db) => {\n // Bring back the \"metadata\" column removed in v11, but as a NULL-able column.\n // It is needed for backwards compatibility.\n db.exec(/*sql*/ `\n ALTER TABLE \"_zero.tableMetadata\"\n ADD COLUMN \"metadata\" TEXT;\n `);\n },\n\n migrateData: (_, db) => {\n // For rollback then roll forward, re-copy anything written to metadata.\n db.exec(/*sql*/ `\n UPDATE \"_zero.tableMetadata\" \n SET \"upstreamMetadata\" = COALESCE(\"metadata\", \"upstreamMetadata\"),\n \"metadata\" = NULL;\n `);\n },\n },\n\n 13: {\n migrateSchema: (_, db) => {\n db.exec(/*sql*/ `\n ALTER TABLE \"_zero.replicationState\" ADD COLUMN writeTimeMs INTEGER;\n `);\n },\n\n migrateData: (_, db) => {\n db.exec(/*sql*/ `\n UPDATE \"_zero.replicationState\" \n SET writeTimeMs = COALESCE(writeTimeMs, unixepoch('subsec') * 1000)`);\n },\n },\n};\n\n// Referenced in tests.\nexport const CURRENT_SCHEMA_VERSION = Object.keys(\n schemaVersionMigrationMap,\n).reduce((prev, curr) => Math.max(prev, parseInt(curr)), 0);\n"],"mappings":";;;;;;;AAgBA,eAAsB,YACpB,KACA,WACA,QACA,aACe;CACf,MAAM,iBAA4B;EAChC,gBAAgB,KAAK,OAAO,YAAY,KAAK,GAAG;EAChD,gBAAgB;EACjB;AAED,KAAI;AACF,QAAM,oBACJ,KACA,WACA,QACA,gBACA,0BACD;UACM,GAAG;AACV,MAAI,aAAa,eAAe,EAAE,SAAS,iBACzC,OAAM,IAAI,gBAAgB,EAAE,QAAQ;AAEtC,QAAM;;;AAIV,eAAsB,eACpB,KACA,WACA,QACA;AACA,OAAM,oBACJ,KACA,WACA,QAEA,EACE,qBAAqB;AACnB,QAAM,IAAI,MACR,yDACD;IAEJ,EACD,0BACD;;AAGH,IAAa,kCAA0C;;;;;;;;;;;;AAavD,IAAa,uBAA+B;;;;;;;;;;;AAY5C,IAAa,iCAAyC;;;;;;;;AAStD,IAAa,4BAAqD;CAEhE,GAAG;EACD,qBAAqB;AACnB,SAAM,IAAI,gBAAgB,kCAAkC;;EAE9D,gBAAgB;EACjB;CAED,GAAG;EACD,gBAAgB,GAAG,OAAO;AACxB,MAAG,KAAK,4BAA4B;;EAEtC,cAAc,GAAG,OAAO;AACtB,eAAY,IAAI,UAAU;;EAE7B;CAGD,GAAG,EAAE;CAEL,GAAG,EACD,gBAAgB,GAAG,OAAO;AAIxB,KAAG,KAAK,gCAAgC;AAExC,KAAG,KAAK,qBAAqB;IAEhC;CAED,GAAG;EACD,gBAAgB,GAAG,OAAO;AAOxB,OAAI,CANgB,GACjB,QACC,sFACD,CACA,KAAK,CAGN,IAAG,KAAK,gCAAgC;;EAG5C,cAAc,GAAG,OAAO;AAItB,MAAG,KAAa,sCAAsC;AAGtD,8BAA2B,IADZ,WAAW,IAAI,OAAO,MAAM,CACL;;EAEzC;CAED,GAAG,EACD,gBAAgB,GAAG,OAAO;AACxB,KAAG,KACO;;;;;UAKN,+BACH;IAEJ;CAED,IAAI,EACF,gBAAgB,GAAG,OAAO;AACxB,KAAG,KAAa;;;QAGd;IAEL;CAED,IAAI,EACF,gBAAgB,GAAG,OAAO;AACxB,KAAG,KAAa;;;;;;;;;;QAUd;IAEL;CAED,IAAI;EACF,gBAAgB,GAAG,OAAO;AAGxB,MAAG,KAAa;;;QAGd;;EAGJ,cAAc,GAAG,OAAO;AAEtB,MAAG,KAAa;;;;QAId;;EAEL;CAED,IAAI;EACF,gBAAgB,GAAG,OAAO;AACxB,MAAG,KAAa;;QAEd;;EAGJ,cAAc,GAAG,OAAO;AACtB,MAAG,KAAa;;+EAEyD;;EAE5E;CACF;AAGqC,OAAO,KAC3C,0BACD,CAAC,QAAQ,MAAM,SAAS,KAAK,IAAI,MAAM,SAAS,KAAK,CAAC,EAAE,EAAE"}
@@ -1,176 +0,0 @@
1
- import { assert, unreachable } from "../../../../../shared/src/asserts.js";
2
- import { deepEqual } from "../../../../../shared/src/json.js";
3
- import { stringify } from "../../../../../shared/src/bigint-json.js";
4
- import { changeStreamMessageSchema } from "../protocol/current/downstream.js";
5
- import "../protocol/current/upstream.js";
6
- import { Database } from "../../../../../zqlite/src/db.js";
7
- import { computeZqlSpecs } from "../../../db/lite-tables.js";
8
- import { createReplicationStateTables, getSubscriptionState, initReplicationState } from "../../replicator/schema/replication-state.js";
9
- import { StatementRunner } from "../../../db/statements.js";
10
- import { AutoResetSignal } from "../../change-streamer/schema/tables.js";
11
- import { initReplica } from "../common/replica-schema.js";
12
- import { stream } from "../../../types/streams.js";
13
- import { ChangeProcessor } from "../../replicator/change-processor.js";
14
- import { ReplicationStatusPublisher } from "../../replicator/replication-status.js";
15
- import { WebSocket as WebSocket$1 } from "ws";
16
- //#region ../zero-cache/src/services/change-source/custom/change-source.ts
17
- /**
18
- * Initializes a Custom change source before streaming changes from the
19
- * corresponding logical replication stream.
20
- */
21
- async function initializeCustomChangeSource(lc, upstreamURI, shard, replicaDbFile, context) {
22
- await initReplica(lc, `replica-${shard.appID}-${shard.shardNum}`, replicaDbFile, (log, tx) => initialSync(log, shard, tx, upstreamURI, context));
23
- const replica = new Database(lc, replicaDbFile);
24
- const subscriptionState = getSubscriptionState(new StatementRunner(replica));
25
- replica.close();
26
- if (shard.publications.length) {
27
- const requested = shard.publications.toSorted();
28
- const replicated = subscriptionState.publications.sort();
29
- if (!deepEqual(requested, replicated)) throw new Error(`Invalid ShardConfig. Requested publications [${requested}] do not match synced publications: [${replicated}]`);
30
- }
31
- return {
32
- subscriptionState,
33
- changeSource: new CustomChangeSource(lc, upstreamURI, shard, subscriptionState)
34
- };
35
- }
36
- var CustomChangeSource = class {
37
- #lc;
38
- #upstreamUri;
39
- #shard;
40
- #replicationConfig;
41
- constructor(lc, upstreamUri, shard, replicationConfig) {
42
- this.#lc = lc.withContext("component", "change-source");
43
- this.#upstreamUri = upstreamUri;
44
- this.#shard = shard;
45
- this.#replicationConfig = replicationConfig;
46
- }
47
- initialSync() {
48
- return this.#startStream();
49
- }
50
- startLagReporter() {
51
- return null;
52
- }
53
- stop() {
54
- return Promise.resolve();
55
- }
56
- startStream(clientWatermark, backfillRequests = []) {
57
- if (backfillRequests?.length) throw new Error("backfill is yet not supported for custom change sources");
58
- return Promise.resolve(this.#startStream(clientWatermark));
59
- }
60
- #startStream(clientWatermark) {
61
- const { publications, replicaVersion } = this.#replicationConfig;
62
- const { appID, shardNum } = this.#shard;
63
- const url = new URL(this.#upstreamUri);
64
- url.searchParams.set("appID", appID);
65
- url.searchParams.set("shardNum", String(shardNum));
66
- for (const pub of publications) url.searchParams.append("publications", pub);
67
- if (clientWatermark) {
68
- assert(replicaVersion.length, "replicaVersion is required when clientWatermark is set");
69
- url.searchParams.set("lastWatermark", clientWatermark);
70
- url.searchParams.set("replicaVersion", replicaVersion);
71
- }
72
- const ws = new WebSocket$1(url);
73
- const { instream, outstream } = stream(this.#lc, ws, changeStreamMessageSchema, { coalesce: (curr) => curr });
74
- return {
75
- changes: instream,
76
- acks: outstream
77
- };
78
- }
79
- };
80
- /**
81
- * Initial sync for a custom change source makes a request to the
82
- * change source endpoint with no `replicaVersion` or `lastWatermark`.
83
- * The initial transaction returned by the endpoint is treated as
84
- * the initial sync, and the commit watermark of that transaction
85
- * becomes the `replicaVersion` of the initialized replica.
86
- *
87
- * Note that this is equivalent to how the LSN of the Postgres WAL
88
- * at initial sync time is the `replicaVersion` (and starting
89
- * version for all initially-synced rows).
90
- */
91
- async function initialSync(lc, shard, tx, upstreamURI, context) {
92
- const { appID: id, publications } = shard;
93
- const { changes } = new CustomChangeSource(lc, upstreamURI, shard, {
94
- replicaVersion: "",
95
- publications
96
- }).initialSync();
97
- createReplicationStateTables(tx);
98
- const processor = new ChangeProcessor(new StatementRunner(tx), "initial-sync", (_, err) => {
99
- throw err;
100
- });
101
- const statusPublisher = ReplicationStatusPublisher.forRunningTransaction(tx);
102
- try {
103
- let num = 0;
104
- for await (const change of changes) {
105
- const [tag] = change;
106
- switch (tag) {
107
- case "begin": {
108
- const { commitWatermark } = change[2];
109
- lc.info?.(`initial sync of shard ${id} at replicaVersion ${commitWatermark}`);
110
- statusPublisher.publish(lc, "Initializing", `Copying upstream tables at version ${commitWatermark}`, 5e3);
111
- initReplicationState(tx, publications.toSorted(), commitWatermark, context, false);
112
- processor.processMessage(lc, change);
113
- break;
114
- }
115
- case "data":
116
- processor.processMessage(lc, change);
117
- if (++num % 1e3 === 0) lc.debug?.(`processed ${num} changes`);
118
- break;
119
- case "commit":
120
- processor.processMessage(lc, change);
121
- validateInitiallySyncedData(lc, tx, shard);
122
- lc.info?.(`finished initial-sync of ${num} changes`);
123
- return;
124
- case "status": break;
125
- case "control": {
126
- const { tag, message } = change[1];
127
- if (tag === "reset-required") throw new AutoResetSignal(message ?? "auto-reset signaled by change source");
128
- }
129
- case "rollback": throw new Error(`unexpected message during initial-sync: ${stringify(change)}`);
130
- default: unreachable(change);
131
- }
132
- }
133
- throw new Error(`change source ${upstreamURI} closed before initial-sync completed`);
134
- } catch (e) {
135
- await statusPublisher.publishAndThrowError(lc, "Initializing", e);
136
- } finally {
137
- statusPublisher.stop();
138
- }
139
- }
140
- function getRequiredTables({ appID, shardNum }) {
141
- return {
142
- [`${appID}_${shardNum}.clients`]: {
143
- clientGroupID: { type: "string" },
144
- clientID: { type: "string" },
145
- lastMutationID: { type: "number" },
146
- userID: { type: "string" }
147
- },
148
- [`${appID}_${shardNum}.mutations`]: {
149
- clientGroupID: { type: "string" },
150
- clientID: { type: "string" },
151
- mutationID: { type: "number" },
152
- mutation: { type: "json" }
153
- },
154
- [`${appID}.permissions`]: {
155
- permissions: { type: "json" },
156
- hash: { type: "string" }
157
- }
158
- };
159
- }
160
- function validateInitiallySyncedData(lc, db, shard) {
161
- const tables = computeZqlSpecs(lc, db, { includeBackfillingColumns: true });
162
- const required = getRequiredTables(shard);
163
- for (const [name, columns] of Object.entries(required)) {
164
- const table = tables.get(name)?.zqlSpec;
165
- if (!table) throw new Error(`Upstream is missing the "${name}" table. (Found ${[...tables.keys()]})Please ensure that each table has a unique index over one or more non-null columns.`);
166
- for (const [col, { type }] of Object.entries(columns)) {
167
- const found = table[col];
168
- if (!found) throw new Error(`Upstream "${table}" table is missing the "${col}" column`);
169
- if (found.type !== type) throw new Error(`Upstream "${table}.${col}" column is a ${found.type} type but must be a ${type} type.`);
170
- }
171
- }
172
- }
173
- //#endregion
174
- export { initializeCustomChangeSource };
175
-
176
- //# sourceMappingURL=change-source.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-source.js","names":["#lc","#upstreamUri","#shard","#replicationConfig","#startStream"],"sources":["../../../../../../../zero-cache/src/services/change-source/custom/change-source.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {WebSocket} from 'ws';\nimport {assert, unreachable} from '../../../../../shared/src/asserts.ts';\nimport {\n stringify,\n type JSONObject,\n} from '../../../../../shared/src/bigint-json.ts';\nimport {deepEqual} from '../../../../../shared/src/json.ts';\nimport type {SchemaValue} from '../../../../../zero-schema/src/table-schema.ts';\nimport {Database} from '../../../../../zqlite/src/db.ts';\nimport {computeZqlSpecs} from '../../../db/lite-tables.ts';\nimport {StatementRunner} from '../../../db/statements.ts';\nimport type {ShardConfig, ShardID} from '../../../types/shards.ts';\nimport {stream} from '../../../types/streams.ts';\nimport {\n AutoResetSignal,\n type ReplicationConfig,\n} from '../../change-streamer/schema/tables.ts';\nimport {ChangeProcessor} from '../../replicator/change-processor.ts';\nimport {ReplicationStatusPublisher} from '../../replicator/replication-status.ts';\nimport {\n createReplicationStateTables,\n getSubscriptionState,\n initReplicationState,\n type SubscriptionState,\n} from '../../replicator/schema/replication-state.ts';\nimport type {ChangeSource, ChangeStream} from '../change-source.ts';\nimport {initReplica} from '../common/replica-schema.ts';\nimport {changeStreamMessageSchema} from '../protocol/current/downstream.ts';\nimport {\n type BackfillRequest,\n type ChangeSourceUpstream,\n} from '../protocol/current/upstream.ts';\n\n/** Server context to store with the initial sync metadata for debugging. */\nexport type ServerContext = JSONObject;\n\n/**\n * Initializes a Custom change source before streaming changes from the\n * corresponding logical replication stream.\n */\nexport async function initializeCustomChangeSource(\n lc: LogContext,\n upstreamURI: string,\n shard: ShardConfig,\n replicaDbFile: string,\n context: ServerContext,\n): Promise<{subscriptionState: SubscriptionState; changeSource: ChangeSource}> {\n await initReplica(\n lc,\n `replica-${shard.appID}-${shard.shardNum}`,\n replicaDbFile,\n (log, tx) => initialSync(log, shard, tx, upstreamURI, context),\n );\n\n const replica = new Database(lc, replicaDbFile);\n const subscriptionState = getSubscriptionState(new StatementRunner(replica));\n replica.close();\n\n if (shard.publications.length) {\n // Verify that the publications match what has been synced.\n const requested = shard.publications.toSorted();\n const replicated = subscriptionState.publications.sort();\n if (!deepEqual(requested, replicated)) {\n throw new Error(\n `Invalid ShardConfig. Requested publications [${requested}] do not match synced publications: [${replicated}]`,\n );\n }\n }\n\n const changeSource = new CustomChangeSource(\n lc,\n upstreamURI,\n shard,\n subscriptionState,\n );\n\n return {subscriptionState, changeSource};\n}\n\nclass CustomChangeSource implements ChangeSource {\n readonly #lc: LogContext;\n readonly #upstreamUri: string;\n readonly #shard: ShardID;\n readonly #replicationConfig: ReplicationConfig;\n\n constructor(\n lc: LogContext,\n upstreamUri: string,\n shard: ShardID,\n replicationConfig: ReplicationConfig,\n ) {\n this.#lc = lc.withContext('component', 'change-source');\n this.#upstreamUri = upstreamUri;\n this.#shard = shard;\n this.#replicationConfig = replicationConfig;\n }\n\n initialSync(): ChangeStream {\n return this.#startStream();\n }\n\n startLagReporter() {\n return null; // Not supported for custom sources\n }\n\n stop(): Promise<void> {\n return Promise.resolve();\n }\n\n startStream(\n clientWatermark: string,\n backfillRequests: BackfillRequest[] = [],\n ): Promise<ChangeStream> {\n if (backfillRequests?.length) {\n throw new Error(\n 'backfill is yet not supported for custom change sources',\n );\n }\n return Promise.resolve(this.#startStream(clientWatermark));\n }\n\n #startStream(clientWatermark?: string): ChangeStream {\n const {publications, replicaVersion} = this.#replicationConfig;\n const {appID, shardNum} = this.#shard;\n const url = new URL(this.#upstreamUri);\n url.searchParams.set('appID', appID);\n url.searchParams.set('shardNum', String(shardNum));\n for (const pub of publications) {\n url.searchParams.append('publications', pub);\n }\n if (clientWatermark) {\n assert(\n replicaVersion.length,\n 'replicaVersion is required when clientWatermark is set',\n );\n url.searchParams.set('lastWatermark', clientWatermark);\n url.searchParams.set('replicaVersion', replicaVersion);\n }\n\n const ws = new WebSocket(url);\n const {instream, outstream} = stream(\n this.#lc,\n ws,\n changeStreamMessageSchema,\n // Upstream acks coalesce. If upstream exhibits back-pressure,\n // only the last ACK is kept / buffered.\n {coalesce: (curr: ChangeSourceUpstream) => curr},\n );\n return {changes: instream, acks: outstream};\n }\n}\n\n/**\n * Initial sync for a custom change source makes a request to the\n * change source endpoint with no `replicaVersion` or `lastWatermark`.\n * The initial transaction returned by the endpoint is treated as\n * the initial sync, and the commit watermark of that transaction\n * becomes the `replicaVersion` of the initialized replica.\n *\n * Note that this is equivalent to how the LSN of the Postgres WAL\n * at initial sync time is the `replicaVersion` (and starting\n * version for all initially-synced rows).\n */\nexport async function initialSync(\n lc: LogContext,\n shard: ShardConfig,\n tx: Database,\n upstreamURI: string,\n context: ServerContext,\n) {\n const {appID: id, publications} = shard;\n const changeSource = new CustomChangeSource(lc, upstreamURI, shard, {\n replicaVersion: '', // ignored for initialSync()\n publications,\n });\n const {changes} = changeSource.initialSync();\n\n createReplicationStateTables(tx);\n const processor = new ChangeProcessor(\n new StatementRunner(tx),\n 'initial-sync',\n (_, err) => {\n throw err;\n },\n );\n\n const statusPublisher = ReplicationStatusPublisher.forRunningTransaction(tx);\n try {\n let num = 0;\n for await (const change of changes) {\n const [tag] = change;\n switch (tag) {\n case 'begin': {\n const {commitWatermark} = change[2];\n lc.info?.(\n `initial sync of shard ${id} at replicaVersion ${commitWatermark}`,\n );\n statusPublisher.publish(\n lc,\n 'Initializing',\n `Copying upstream tables at version ${commitWatermark}`,\n 5000,\n );\n initReplicationState(\n tx,\n publications.toSorted(),\n commitWatermark,\n context,\n false,\n );\n processor.processMessage(lc, change);\n break;\n }\n case 'data':\n processor.processMessage(lc, change);\n if (++num % 1000 === 0) {\n lc.debug?.(`processed ${num} changes`);\n }\n break;\n case 'commit':\n processor.processMessage(lc, change);\n validateInitiallySyncedData(lc, tx, shard);\n lc.info?.(`finished initial-sync of ${num} changes`);\n return;\n\n case 'status':\n break; // Ignored\n // @ts-expect-error: falls through if the tag is not 'reset-required\n case 'control': {\n const {tag, message} = change[1];\n if (tag === 'reset-required') {\n throw new AutoResetSignal(\n message ?? 'auto-reset signaled by change source',\n );\n }\n }\n // falls through\n case 'rollback':\n throw new Error(\n `unexpected message during initial-sync: ${stringify(change)}`,\n );\n default:\n unreachable(change);\n }\n }\n throw new Error(\n `change source ${upstreamURI} closed before initial-sync completed`,\n );\n } catch (e) {\n await statusPublisher.publishAndThrowError(lc, 'Initializing', e);\n } finally {\n statusPublisher.stop();\n }\n}\n\n// Verify that the upstream tables expected by the sync logic\n// have been properly initialized.\nfunction getRequiredTables({\n appID,\n shardNum,\n}: ShardID): Record<string, Record<string, SchemaValue>> {\n return {\n [`${appID}_${shardNum}.clients`]: {\n clientGroupID: {type: 'string'},\n clientID: {type: 'string'},\n lastMutationID: {type: 'number'},\n userID: {type: 'string'},\n },\n [`${appID}_${shardNum}.mutations`]: {\n clientGroupID: {type: 'string'},\n clientID: {type: 'string'},\n mutationID: {type: 'number'},\n mutation: {type: 'json'},\n },\n [`${appID}.permissions`]: {\n permissions: {type: 'json'},\n hash: {type: 'string'},\n },\n };\n}\n\nfunction validateInitiallySyncedData(\n lc: LogContext,\n db: Database,\n shard: ShardID,\n) {\n const tables = computeZqlSpecs(lc, db, {includeBackfillingColumns: true});\n const required = getRequiredTables(shard);\n for (const [name, columns] of Object.entries(required)) {\n const table = tables.get(name)?.zqlSpec;\n if (!table) {\n throw new Error(\n `Upstream is missing the \"${name}\" table. (Found ${[\n ...tables.keys(),\n ]})` +\n `Please ensure that each table has a unique index over one ` +\n `or more non-null columns.`,\n );\n }\n for (const [col, {type}] of Object.entries(columns)) {\n const found = table[col];\n if (!found) {\n throw new Error(\n `Upstream \"${table}\" table is missing the \"${col}\" column`,\n );\n }\n if (found.type !== type) {\n throw new Error(\n `Upstream \"${table}.${col}\" column is a ${found.type} type but must be a ${type} type.`,\n );\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"backfill-metadata.js","names":[],"sources":["../../../../../../../zero-cache/src/services/change-source/pg/backfill-metadata.ts"],"sourcesContent":["import * as v from '../../../../../shared/src/valita.ts';\n\n// PG-specific messages passed in the table metadata and backfill ID\n// messages.\n\nexport const columnMetadataSchema = v.object({\n attNum: v.number(),\n});\n\nexport type ColumnMetadata = v.Infer<typeof columnMetadataSchema>;\n\nexport const tableMetadataSchema = v.object({\n schemaOID: v.number(),\n relationOID: v.number(),\n rowKey: v.record(columnMetadataSchema),\n});\n\nexport type TableMetadata = v.Infer<typeof tableMetadataSchema>;\n"],"mappings":";;AAKA,IAAa,uBAAuB,eAAE,OAAO,EAC3C,QAAQ,eAAE,QAAQ,EACnB,CAAC;AAIF,IAAa,sBAAsB,eAAE,OAAO;CAC1C,WAAW,eAAE,QAAQ;CACrB,aAAa,eAAE,QAAQ;CACvB,QAAQ,eAAE,OAAO,qBAAqB;CACvC,CAAC"}
@@ -1,197 +0,0 @@
1
- import { assert } from "../../../../../shared/src/asserts.js";
2
- import { parse } from "../../../../../shared/src/valita.js";
3
- import { equals } from "../../../../../shared/src/set-utils.js";
4
- import { pgClient } from "../../../types/pg.js";
5
- import { toStateVersionString } from "./lsn.js";
6
- import { READONLY } from "../../../db/mode-enum.js";
7
- import { getPublicationInfo } from "./schema/published.js";
8
- import { SchemaIncompatibilityError } from "../common/backfill-manager.js";
9
- import { BinaryCopyParser, hasBinaryDecoder, makeBinaryDecoder, textCastDecoder } from "../../../db/pg-copy-binary.js";
10
- import { TsvParser } from "../../../db/pg-copy.js";
11
- import { getTypeParsers } from "../../../db/pg-type-parser.js";
12
- import { TransactionPool, importSnapshot } from "../../../db/transaction-pool.js";
13
- import { columnMetadataSchema, tableMetadataSchema } from "./backfill-metadata.js";
14
- import { createReplicationSlot } from "./replication-slots.js";
15
- import { makeBinarySelectExprs, makeDownloadStatements } from "./initial-sync.js";
16
- import postgres from "postgres";
17
- import { PG_UNDEFINED_COLUMN, PG_UNDEFINED_TABLE } from "@drdgvhbh/postgres-error-codes";
18
- //#region ../zero-cache/src/services/change-source/pg/backfill-stream.ts
19
- var POSTGRES_COPY_CHUNK_SIZE = 64 * 1024;
20
- var SAMPLE_OR_LIMIT_RE = /\sTABLESAMPLE\s+BERNOULLI\b|\sLIMIT\s+\d/i;
21
- /**
22
- * Streams a series of `backfill` messages (ending with `backfill-complete`)
23
- * at a set watermark (i.e. LSN). The data is retrieved via a COPY stream
24
- * made at a transaction snapshot corresponding to specific LSN, obtained by
25
- * creating a short-lived replication slot.
26
- */
27
- async function* streamBackfill(lc, upstreamURI, { slot, publications }, bf, opts = {}) {
28
- lc = lc.withContext("component", "backfill").withContext("table", bf.table.name);
29
- const { flushThresholdBytes = POSTGRES_COPY_CHUNK_SIZE, textCopy = false } = opts;
30
- const db = pgClient(lc, upstreamURI, "backfill-stream", { ["max_lifetime"]: 7200 });
31
- let tx;
32
- let watermark;
33
- try {
34
- ({tx, watermark} = await createSnapshotTransaction(lc, upstreamURI, db, slot));
35
- const { tableSpec, backfill } = await validateSchema(tx, publications, bf, watermark);
36
- const { relation, columns } = backfill;
37
- const cols = [...relation.rowKey.columns, ...columns];
38
- const stmts = makeDownloadStatements(tableSpec, cols);
39
- if (textCopy) {
40
- const types = await getTypeParsers(db, { returnJsonAsString: true });
41
- yield* stream(lc, tx, backfill, stmts, `COPY (${stmts.select}) TO STDOUT`, new TsvParser(), cols.map((col) => {
42
- const parser = types.getTypeParser(tableSpec.columns[col].typeOID);
43
- return (text) => parser(text);
44
- }), flushThresholdBytes);
45
- } else {
46
- const binaryStmts = makeDownloadStatements(tableSpec, cols, void 0, void 0, makeBinarySelectExprs(tableSpec, cols));
47
- yield* stream(lc, tx, backfill, stmts, `COPY (${binaryStmts.select}) TO STDOUT WITH (FORMAT binary)`, new BinaryCopyParser(), cols.map((col) => {
48
- const spec = tableSpec.columns[col];
49
- const decoder = hasBinaryDecoder(spec) ? makeBinaryDecoder(spec) : textCastDecoder;
50
- return (buf) => decoder(buf);
51
- }), flushThresholdBytes);
52
- }
53
- } catch (e) {
54
- if (e instanceof postgres.PostgresError && (e.code === PG_UNDEFINED_TABLE || e.code === PG_UNDEFINED_COLUMN)) throw new SchemaIncompatibilityError(bf, String(e), { cause: e });
55
- throw e;
56
- } finally {
57
- tx?.setDone();
58
- db.end().catch((e) => lc.warn?.(`error closing backfill connection`, e));
59
- }
60
- }
61
- async function* stream(lc, tx, backfill, { getTotalRows, getTotalBytes }, copyCommand, parser, decoders, flushThresholdBytes) {
62
- assert(!SAMPLE_OR_LIMIT_RE.test(copyCommand), `backfill COPY must not sample or limit: ${copyCommand}`);
63
- const start = performance.now();
64
- const [rows, bytes] = await tx.processReadTask((sql) => Promise.all([sql.unsafe(getTotalRows), sql.unsafe(getTotalBytes)]));
65
- const status = {
66
- rows: 0,
67
- totalRows: Number(rows[0].totalRows),
68
- totalBytes: Number(bytes[0].totalBytes)
69
- };
70
- let elapsed = (performance.now() - start).toFixed(3);
71
- lc.info?.(`Computed total rows and bytes for: ${copyCommand} (${elapsed} ms)`, { status });
72
- const copyStream = await tx.processReadTask((sql) => sql.unsafe(copyCommand).readable());
73
- let totalBytes = 0;
74
- let totalMsgs = 0;
75
- let rowValues = [];
76
- let bufferedBytes = 0;
77
- const logFlushed = () => {
78
- lc.debug?.(`Flushed ${rowValues.length} rows, ${bufferedBytes} bytes (total: rows=${status.rows}, msgs=${totalMsgs}, bytes=${totalBytes})`);
79
- };
80
- let row = Array.from({ length: decoders.length });
81
- let col = 0;
82
- for await (const data of copyStream) {
83
- const chunk = data;
84
- for (const field of parser.parse(chunk)) {
85
- row[col] = field === null ? null : decoders[col](field);
86
- if (++col === decoders.length) {
87
- rowValues.push(row);
88
- status.rows++;
89
- row = Array.from({ length: decoders.length });
90
- col = 0;
91
- }
92
- }
93
- bufferedBytes += chunk.byteLength;
94
- totalBytes += chunk.byteLength;
95
- if (bufferedBytes >= flushThresholdBytes) {
96
- yield {
97
- tag: "backfill",
98
- ...backfill,
99
- rowValues,
100
- status
101
- };
102
- totalMsgs++;
103
- logFlushed();
104
- rowValues = [];
105
- bufferedBytes = 0;
106
- }
107
- }
108
- if (rowValues.length > 0) {
109
- yield {
110
- tag: "backfill",
111
- ...backfill,
112
- rowValues,
113
- status
114
- };
115
- totalMsgs++;
116
- logFlushed();
117
- }
118
- yield {
119
- tag: "backfill-completed",
120
- ...backfill,
121
- status
122
- };
123
- elapsed = (performance.now() - start).toFixed(3);
124
- lc.info?.(`Finished streaming ${status.rows} rows, ${totalMsgs} msgs, ${totalBytes} bytes (${elapsed} ms)`);
125
- }
126
- /**
127
- * Creates (and drops) a replication slot in order to obtain a snapshot
128
- * that corresponds with a specific LSN. Sets the snapshot on the
129
- * TransactionPool and returns the watermark corresponding to the LSN.
130
- *
131
- * (Note that PG's other LSN-related functions are not scoped to a
132
- * transaction; this is the only way to get set a transaction at a specific
133
- * LSN.)
134
- */
135
- async function createSnapshotTransaction(lc, upstreamURI, db, slotNamePrefix) {
136
- const replicationSession = pgClient(lc, upstreamURI, "backfill-replication-session", {
137
- ["fetch_types"]: false,
138
- connection: { replication: "database" }
139
- });
140
- const slotName = `${slotNamePrefix}_bf_${Date.now()}`;
141
- try {
142
- const { snapshot_name: snapshot, consistent_point: lsn } = await createReplicationSlot(lc, replicationSession, { slotName });
143
- const { init, imported } = importSnapshot(snapshot);
144
- const tx = new TransactionPool(lc, {
145
- mode: READONLY,
146
- init
147
- }).run(db);
148
- await imported;
149
- await replicationSession.unsafe(`DROP_REPLICATION_SLOT "${slotName}"`);
150
- const watermark = toStateVersionString(lsn);
151
- lc.info?.(`Opened snapshot transaction at LSN ${lsn} (${watermark})`);
152
- return {
153
- tx,
154
- watermark
155
- };
156
- } catch (e) {
157
- await replicationSession.unsafe(`SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots
158
- WHERE slot_name = '${slotName}'`);
159
- lc.warn?.(`Failed to create backfill snapshot`, e);
160
- throw e;
161
- } finally {
162
- await replicationSession.end();
163
- }
164
- }
165
- function validateSchema(tx, publications, bf, watermark) {
166
- return tx.processReadTask(async (sql) => {
167
- const { tables } = await getPublicationInfo(sql, publications);
168
- const spec = tables.find((spec) => spec.schema === bf.table.schema && spec.name === bf.table.name);
169
- if (!spec) throw new SchemaIncompatibilityError(bf, `Table has been renamed or dropped`);
170
- const tableMeta = parse(bf.table.metadata, tableMetadataSchema);
171
- if (spec.schemaOID !== tableMeta.schemaOID) throw new SchemaIncompatibilityError(bf, `Schema no longer corresponds to the original schema`);
172
- if (spec.oid !== tableMeta.relationOID) throw new SchemaIncompatibilityError(bf, `Table no longer corresponds to the original table`);
173
- if (!equals(new Set(Object.keys(tableMeta.rowKey)), new Set(spec.replicaIdentityColumns))) throw new SchemaIncompatibilityError(bf, "Row key (e.g. PRIMARY KEY or INDEX) has changed");
174
- const allCols = [...Object.entries(tableMeta.rowKey), ...Object.entries(bf.columns)];
175
- for (const [col, val] of allCols) {
176
- const colSpec = spec.columns[col];
177
- if (!colSpec) throw new SchemaIncompatibilityError(bf, `Column ${col} has been renamed or dropped`);
178
- if (parse(val, columnMetadataSchema).attNum !== colSpec.pos) throw new SchemaIncompatibilityError(bf, `Column ${col} no longer corresponds to the original column`);
179
- }
180
- return {
181
- tableSpec: spec,
182
- backfill: {
183
- relation: {
184
- schema: bf.table.schema,
185
- name: bf.table.name,
186
- rowKey: { columns: Object.keys(tableMeta.rowKey) }
187
- },
188
- columns: Object.keys(bf.columns).filter((col) => !(col in tableMeta.rowKey)),
189
- watermark
190
- }
191
- };
192
- });
193
- }
194
- //#endregion
195
- export { streamBackfill };
196
-
197
- //# sourceMappingURL=backfill-stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backfill-stream.js","names":[],"sources":["../../../../../../../zero-cache/src/services/change-source/pg/backfill-stream.ts"],"sourcesContent":["import {\n PG_UNDEFINED_COLUMN,\n PG_UNDEFINED_TABLE,\n} from '@drdgvhbh/postgres-error-codes';\nimport type {LogContext} from '@rocicorp/logger';\nimport postgres from 'postgres';\nimport {assert} from '../../../../../shared/src/asserts.ts';\nimport {equals} from '../../../../../shared/src/set-utils.ts';\nimport * as v from '../../../../../shared/src/valita.ts';\nimport {READONLY} from '../../../db/mode-enum.ts';\nimport {\n BinaryCopyParser,\n hasBinaryDecoder,\n makeBinaryDecoder,\n textCastDecoder,\n} from '../../../db/pg-copy-binary.ts';\nimport {TsvParser} from '../../../db/pg-copy.ts';\nimport {getTypeParsers} from '../../../db/pg-type-parser.ts';\nimport type {PublishedTableSpec} from '../../../db/specs.ts';\nimport {importSnapshot, TransactionPool} from '../../../db/transaction-pool.ts';\nimport {pgClient, type PostgresDB} from '../../../types/pg.ts';\nimport {SchemaIncompatibilityError} from '../common/backfill-manager.ts';\nimport type {\n BackfillCompleted,\n BackfillRequest,\n DownloadStatus,\n JSONValue,\n MessageBackfill,\n} from '../protocol/current.ts';\nimport {\n columnMetadataSchema,\n tableMetadataSchema,\n} from './backfill-metadata.ts';\nimport {\n makeBinarySelectExprs,\n makeDownloadStatements,\n type DownloadStatements,\n} from './initial-sync.ts';\nimport {toStateVersionString} from './lsn.ts';\nimport {createReplicationSlot} from './replication-slots.ts';\nimport {getPublicationInfo} from './schema/published.ts';\nimport type {Replica} from './schema/shard.ts';\n\ntype BackfillParams = Omit<BackfillCompleted, 'tag'>;\n\ntype StreamOptions = {\n /**\n * The number of bytes at which to flush a batch of rows in a\n * backfill message. Defaults to Node's getDefaultHighWatermark().\n */\n flushThresholdBytes?: number | undefined;\n\n /**\n * Use text-format COPY instead of binary COPY.\n * Binary is faster and handles all types (unknown types are cast to\n * `::text` in the SELECT). This flag exists as an escape hatch to\n * revert to the old code path if needed.\n */\n textCopy?: boolean | undefined;\n};\n\n// The size of chunks that Postgres sends on COPY stream.\n// This happens to match NodeJS's getDefaultHighWatermark()\n// (for Node v20+).\nconst POSTGRES_COPY_CHUNK_SIZE = 64 * 1024;\n\n// Matches the exact clauses emitted by makeDownloadStatements; quoted\n// identifiers like \"limit\" won't match because they lack the surrounding\n// whitespace.\nconst SAMPLE_OR_LIMIT_RE = /\\sTABLESAMPLE\\s+BERNOULLI\\b|\\sLIMIT\\s+\\d/i;\n\n/**\n * Streams a series of `backfill` messages (ending with `backfill-complete`)\n * at a set watermark (i.e. LSN). The data is retrieved via a COPY stream\n * made at a transaction snapshot corresponding to specific LSN, obtained by\n * creating a short-lived replication slot.\n */\nexport async function* streamBackfill(\n lc: LogContext,\n upstreamURI: string,\n {slot, publications}: Pick<Replica, 'slot' | 'publications'>,\n bf: BackfillRequest,\n opts: StreamOptions = {},\n): AsyncGenerator<MessageBackfill | BackfillCompleted> {\n lc = lc\n .withContext('component', 'backfill')\n .withContext('table', bf.table.name);\n\n const {flushThresholdBytes = POSTGRES_COPY_CHUNK_SIZE, textCopy = false} =\n opts;\n const db = pgClient(lc, upstreamURI, 'backfill-stream', {\n ['max_lifetime']: 120 * 60, // set a long (2h) limit for COPY streaming\n });\n let tx: TransactionPool | undefined;\n let watermark: string;\n try {\n ({tx, watermark} = await createSnapshotTransaction(\n lc,\n upstreamURI,\n db,\n slot,\n ));\n const {tableSpec, backfill} = await validateSchema(\n tx,\n publications,\n bf,\n watermark,\n );\n\n // Note: validateSchema ensures that the rowKey and columns are disjoint\n const {relation, columns} = backfill;\n const cols = [...relation.rowKey.columns, ...columns];\n const stmts = makeDownloadStatements(tableSpec, cols);\n\n if (textCopy) {\n const types = await getTypeParsers(db, {returnJsonAsString: true});\n yield* stream(\n lc,\n tx,\n backfill,\n stmts,\n `COPY (${stmts.select}) TO STDOUT`,\n new TsvParser(),\n cols.map(col => {\n const parser = types.getTypeParser(tableSpec.columns[col].typeOID);\n return (text: string) => parser(text) as JSONValue;\n }),\n flushThresholdBytes,\n );\n } else {\n const binaryStmts = makeDownloadStatements(\n tableSpec,\n cols,\n undefined,\n undefined,\n makeBinarySelectExprs(tableSpec, cols),\n );\n\n yield* stream(\n lc,\n tx,\n backfill,\n stmts,\n `COPY (${binaryStmts.select}) TO STDOUT WITH (FORMAT binary)`,\n new BinaryCopyParser(),\n cols.map(col => {\n const spec = tableSpec.columns[col];\n const decoder = hasBinaryDecoder(spec)\n ? makeBinaryDecoder(spec)\n : textCastDecoder;\n return (buf: Buffer) => decoder(buf) as unknown as JSONValue;\n }),\n flushThresholdBytes,\n );\n }\n } catch (e) {\n // Although we make the best effort to validate the schema at the\n // transaction snapshot, certain forms of `ALTER TABLE` are not\n // MVCC safe and not \"frozen\" in the snapshot:\n //\n // https://www.postgresql.org/docs/current/mvcc-caveats.html\n //\n // Handle these errors as schema incompatibility errors rather than\n // unknown runtime errors.\n if (\n e instanceof postgres.PostgresError &&\n (e.code === PG_UNDEFINED_TABLE || e.code === PG_UNDEFINED_COLUMN)\n ) {\n throw new SchemaIncompatibilityError(bf, String(e), {cause: e});\n }\n throw e;\n } finally {\n tx?.setDone();\n // Workaround postgres.js hanging at the end of some COPY commands:\n // https://github.com/porsager/postgres/issues/499\n void db.end().catch(e => lc.warn?.(`error closing backfill connection`, e));\n }\n}\n\nasync function* stream<T>(\n lc: LogContext,\n tx: TransactionPool,\n backfill: BackfillParams,\n {\n getTotalRows,\n getTotalBytes,\n }: Pick<DownloadStatements, 'getTotalRows' | 'getTotalBytes'>,\n copyCommand: string,\n parser: {parse(chunk: Buffer): Iterable<T | null>},\n decoders: ((field: T) => JSONValue)[],\n flushThresholdBytes: number,\n): AsyncGenerator<MessageBackfill | BackfillCompleted> {\n // Backfill must read every row: TABLESAMPLE / LIMIT are reserved for shadow\n // sync and must never appear in a backfill COPY.\n assert(\n !SAMPLE_OR_LIMIT_RE.test(copyCommand),\n `backfill COPY must not sample or limit: ${copyCommand}`,\n );\n const start = performance.now();\n const [rows, bytes] = await tx.processReadTask(sql =>\n Promise.all([\n sql.unsafe<{totalRows: bigint}[]>(getTotalRows),\n sql.unsafe<{totalBytes: bigint}[]>(getTotalBytes),\n ]),\n );\n const status: DownloadStatus = {\n rows: 0,\n totalRows: Number(rows[0].totalRows),\n totalBytes: Number(bytes[0].totalBytes),\n };\n\n let elapsed = (performance.now() - start).toFixed(3);\n lc.info?.(\n `Computed total rows and bytes for: ${copyCommand} (${elapsed} ms)`,\n {\n status,\n },\n );\n const copyStream = await tx.processReadTask(sql =>\n sql.unsafe(copyCommand).readable(),\n );\n\n let totalBytes = 0;\n let totalMsgs = 0;\n let rowValues: JSONValue[][] = [];\n let bufferedBytes = 0;\n\n const logFlushed = () => {\n lc.debug?.(\n `Flushed ${rowValues.length} rows, ${bufferedBytes} bytes ` +\n `(total: rows=${status.rows}, msgs=${totalMsgs}, bytes=${totalBytes})`,\n );\n };\n\n // Tracks the row being parsed.\n let row: JSONValue[] = Array.from({length: decoders.length});\n let col = 0;\n\n for await (const data of copyStream) {\n const chunk = data as Buffer;\n for (const field of parser.parse(chunk)) {\n row[col] = field === null ? null : decoders[col](field);\n\n if (++col === decoders.length) {\n rowValues.push(row);\n status.rows++;\n row = Array.from({length: decoders.length});\n col = 0;\n }\n }\n bufferedBytes += chunk.byteLength;\n totalBytes += chunk.byteLength;\n\n if (bufferedBytes >= flushThresholdBytes) {\n yield {tag: 'backfill', ...backfill, rowValues, status};\n totalMsgs++;\n logFlushed();\n rowValues = [];\n bufferedBytes = 0;\n }\n }\n\n // Flush the last batch of rows.\n if (rowValues.length > 0) {\n yield {tag: 'backfill', ...backfill, rowValues, status};\n totalMsgs++;\n logFlushed();\n }\n\n yield {tag: 'backfill-completed', ...backfill, status};\n elapsed = (performance.now() - start).toFixed(3);\n lc.info?.(\n `Finished streaming ${status.rows} rows, ${totalMsgs} msgs, ${totalBytes} bytes ` +\n `(${elapsed} ms)`,\n );\n}\n\n/**\n * Creates (and drops) a replication slot in order to obtain a snapshot\n * that corresponds with a specific LSN. Sets the snapshot on the\n * TransactionPool and returns the watermark corresponding to the LSN.\n *\n * (Note that PG's other LSN-related functions are not scoped to a\n * transaction; this is the only way to get set a transaction at a specific\n * LSN.)\n */\nasync function createSnapshotTransaction(\n lc: LogContext,\n upstreamURI: string,\n db: PostgresDB,\n slotNamePrefix: string,\n) {\n const replicationSession = pgClient(\n lc,\n upstreamURI,\n 'backfill-replication-session',\n {\n ['fetch_types']: false, // Necessary for the streaming protocol\n connection: {replication: 'database'}, // https://www.postgresql.org/docs/current/protocol-replication.html\n },\n );\n const slotName = `${slotNamePrefix}_bf_${Date.now()}`;\n try {\n const {snapshot_name: snapshot, consistent_point: lsn} =\n await createReplicationSlot(lc, replicationSession, {slotName});\n\n const {init, imported} = importSnapshot(snapshot);\n const tx = new TransactionPool(lc, {mode: READONLY, init}).run(db);\n await imported;\n await replicationSession.unsafe(`DROP_REPLICATION_SLOT \"${slotName}\"`);\n\n const watermark = toStateVersionString(lsn);\n lc.info?.(`Opened snapshot transaction at LSN ${lsn} (${watermark})`);\n return {tx, watermark};\n } catch (e) {\n // In the event of a failure, clean up the replication slot if created.\n await replicationSession.unsafe(\n /*sql*/\n `SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots\n WHERE slot_name = '${slotName}'`,\n );\n lc.warn?.(`Failed to create backfill snapshot`, e);\n throw e;\n } finally {\n await replicationSession.end();\n }\n}\n\nfunction validateSchema(\n tx: TransactionPool,\n publications: string[],\n bf: BackfillRequest,\n watermark: string,\n): Promise<{\n tableSpec: PublishedTableSpec;\n backfill: BackfillParams;\n}> {\n return tx.processReadTask(async sql => {\n const {tables} = await getPublicationInfo(sql, publications);\n const spec = tables.find(\n spec => spec.schema === bf.table.schema && spec.name === bf.table.name,\n );\n if (!spec) {\n throw new SchemaIncompatibilityError(\n bf,\n `Table has been renamed or dropped`,\n );\n }\n const tableMeta = v.parse(bf.table.metadata, tableMetadataSchema);\n if (spec.schemaOID !== tableMeta.schemaOID) {\n throw new SchemaIncompatibilityError(\n bf,\n `Schema no longer corresponds to the original schema`,\n );\n }\n if (spec.oid !== tableMeta.relationOID) {\n throw new SchemaIncompatibilityError(\n bf,\n `Table no longer corresponds to the original table`,\n );\n }\n if (\n !equals(\n new Set(Object.keys(tableMeta.rowKey)),\n new Set(spec.replicaIdentityColumns),\n )\n ) {\n throw new SchemaIncompatibilityError(\n bf,\n 'Row key (e.g. PRIMARY KEY or INDEX) has changed',\n );\n }\n const allCols = [\n ...Object.entries(tableMeta.rowKey),\n ...Object.entries(bf.columns),\n ];\n for (const [col, val] of allCols) {\n const colSpec = spec.columns[col];\n if (!colSpec) {\n throw new SchemaIncompatibilityError(\n bf,\n `Column ${col} has been renamed or dropped`,\n );\n }\n const colMeta = v.parse(val, columnMetadataSchema);\n if (colMeta.attNum !== colSpec.pos) {\n throw new SchemaIncompatibilityError(\n bf,\n `Column ${col} no longer corresponds to the original column`,\n );\n }\n }\n const backfill: BackfillParams = {\n relation: {\n schema: bf.table.schema,\n name: bf.table.name,\n rowKey: {columns: Object.keys(tableMeta.rowKey)},\n },\n columns: Object.keys(bf.columns).filter(\n col => !(col in tableMeta.rowKey),\n ),\n watermark,\n };\n return {tableSpec: spec, backfill};\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgEA,IAAM,2BAA2B,KAAK;AAKtC,IAAM,qBAAqB;;;;;;;AAQ3B,gBAAuB,eACrB,IACA,aACA,EAAC,MAAM,gBACP,IACA,OAAsB,EAAE,EAC6B;AACrD,MAAK,GACF,YAAY,aAAa,WAAW,CACpC,YAAY,SAAS,GAAG,MAAM,KAAK;CAEtC,MAAM,EAAC,sBAAsB,0BAA0B,WAAW,UAChE;CACF,MAAM,KAAK,SAAS,IAAI,aAAa,mBAAmB,GACrD,iBAAiB,MACnB,CAAC;CACF,IAAI;CACJ,IAAI;AACJ,KAAI;AACF,GAAC,CAAC,IAAI,aAAa,MAAM,0BACvB,IACA,aACA,IACA,KACD;EACD,MAAM,EAAC,WAAW,aAAY,MAAM,eAClC,IACA,cACA,IACA,UACD;EAGD,MAAM,EAAC,UAAU,YAAW;EAC5B,MAAM,OAAO,CAAC,GAAG,SAAS,OAAO,SAAS,GAAG,QAAQ;EACrD,MAAM,QAAQ,uBAAuB,WAAW,KAAK;AAErD,MAAI,UAAU;GACZ,MAAM,QAAQ,MAAM,eAAe,IAAI,EAAC,oBAAoB,MAAK,CAAC;AAClE,UAAO,OACL,IACA,IACA,UACA,OACA,SAAS,MAAM,OAAO,cACtB,IAAI,WAAW,EACf,KAAK,KAAI,QAAO;IACd,MAAM,SAAS,MAAM,cAAc,UAAU,QAAQ,KAAK,QAAQ;AAClE,YAAQ,SAAiB,OAAO,KAAK;KACrC,EACF,oBACD;SACI;GACL,MAAM,cAAc,uBAClB,WACA,MACA,KAAA,GACA,KAAA,GACA,sBAAsB,WAAW,KAAK,CACvC;AAED,UAAO,OACL,IACA,IACA,UACA,OACA,SAAS,YAAY,OAAO,mCAC5B,IAAI,kBAAkB,EACtB,KAAK,KAAI,QAAO;IACd,MAAM,OAAO,UAAU,QAAQ;IAC/B,MAAM,UAAU,iBAAiB,KAAK,GAClC,kBAAkB,KAAK,GACvB;AACJ,YAAQ,QAAgB,QAAQ,IAAI;KACpC,EACF,oBACD;;UAEI,GAAG;AASV,MACE,aAAa,SAAS,kBACrB,EAAE,SAAS,sBAAsB,EAAE,SAAS,qBAE7C,OAAM,IAAI,2BAA2B,IAAI,OAAO,EAAE,EAAE,EAAC,OAAO,GAAE,CAAC;AAEjE,QAAM;WACE;AACR,MAAI,SAAS;AAGR,KAAG,KAAK,CAAC,OAAM,MAAK,GAAG,OAAO,qCAAqC,EAAE,CAAC;;;AAI/E,gBAAgB,OACd,IACA,IACA,UACA,EACE,cACA,iBAEF,aACA,QACA,UACA,qBACqD;AAGrD,QACE,CAAC,mBAAmB,KAAK,YAAY,EACrC,2CAA2C,cAC5C;CACD,MAAM,QAAQ,YAAY,KAAK;CAC/B,MAAM,CAAC,MAAM,SAAS,MAAM,GAAG,iBAAgB,QAC7C,QAAQ,IAAI,CACV,IAAI,OAA8B,aAAa,EAC/C,IAAI,OAA+B,cAAc,CAClD,CAAC,CACH;CACD,MAAM,SAAyB;EAC7B,MAAM;EACN,WAAW,OAAO,KAAK,GAAG,UAAU;EACpC,YAAY,OAAO,MAAM,GAAG,WAAW;EACxC;CAED,IAAI,WAAW,YAAY,KAAK,GAAG,OAAO,QAAQ,EAAE;AACpD,IAAG,OACD,sCAAsC,YAAY,IAAI,QAAQ,OAC9D,EACE,QACD,CACF;CACD,MAAM,aAAa,MAAM,GAAG,iBAAgB,QAC1C,IAAI,OAAO,YAAY,CAAC,UAAU,CACnC;CAED,IAAI,aAAa;CACjB,IAAI,YAAY;CAChB,IAAI,YAA2B,EAAE;CACjC,IAAI,gBAAgB;CAEpB,MAAM,mBAAmB;AACvB,KAAG,QACD,WAAW,UAAU,OAAO,SAAS,cAAc,sBACjC,OAAO,KAAK,SAAS,UAAU,UAAU,WAAW,GACvE;;CAIH,IAAI,MAAmB,MAAM,KAAK,EAAC,QAAQ,SAAS,QAAO,CAAC;CAC5D,IAAI,MAAM;AAEV,YAAW,MAAM,QAAQ,YAAY;EACnC,MAAM,QAAQ;AACd,OAAK,MAAM,SAAS,OAAO,MAAM,MAAM,EAAE;AACvC,OAAI,OAAO,UAAU,OAAO,OAAO,SAAS,KAAK,MAAM;AAEvD,OAAI,EAAE,QAAQ,SAAS,QAAQ;AAC7B,cAAU,KAAK,IAAI;AACnB,WAAO;AACP,UAAM,MAAM,KAAK,EAAC,QAAQ,SAAS,QAAO,CAAC;AAC3C,UAAM;;;AAGV,mBAAiB,MAAM;AACvB,gBAAc,MAAM;AAEpB,MAAI,iBAAiB,qBAAqB;AACxC,SAAM;IAAC,KAAK;IAAY,GAAG;IAAU;IAAW;IAAO;AACvD;AACA,eAAY;AACZ,eAAY,EAAE;AACd,mBAAgB;;;AAKpB,KAAI,UAAU,SAAS,GAAG;AACxB,QAAM;GAAC,KAAK;GAAY,GAAG;GAAU;GAAW;GAAO;AACvD;AACA,cAAY;;AAGd,OAAM;EAAC,KAAK;EAAsB,GAAG;EAAU;EAAO;AACtD,YAAW,YAAY,KAAK,GAAG,OAAO,QAAQ,EAAE;AAChD,IAAG,OACD,sBAAsB,OAAO,KAAK,SAAS,UAAU,SAAS,WAAW,UACnE,QAAQ,MACf;;;;;;;;;;;AAYH,eAAe,0BACb,IACA,aACA,IACA,gBACA;CACA,MAAM,qBAAqB,SACzB,IACA,aACA,gCACA;GACG,gBAAgB;EACjB,YAAY,EAAC,aAAa,YAAW;EACtC,CACF;CACD,MAAM,WAAW,GAAG,eAAe,MAAM,KAAK,KAAK;AACnD,KAAI;EACF,MAAM,EAAC,eAAe,UAAU,kBAAkB,QAChD,MAAM,sBAAsB,IAAI,oBAAoB,EAAC,UAAS,CAAC;EAEjE,MAAM,EAAC,MAAM,aAAY,eAAe,SAAS;EACjD,MAAM,KAAK,IAAI,gBAAgB,IAAI;GAAC,MAAM;GAAU;GAAK,CAAC,CAAC,IAAI,GAAG;AAClE,QAAM;AACN,QAAM,mBAAmB,OAAO,0BAA0B,SAAS,GAAG;EAEtE,MAAM,YAAY,qBAAqB,IAAI;AAC3C,KAAG,OAAO,sCAAsC,IAAI,IAAI,UAAU,GAAG;AACrE,SAAO;GAAC;GAAI;GAAU;UACf,GAAG;AAEV,QAAM,mBAAmB,OAEvB;8BACwB,SAAS,GAClC;AACD,KAAG,OAAO,sCAAsC,EAAE;AAClD,QAAM;WACE;AACR,QAAM,mBAAmB,KAAK;;;AAIlC,SAAS,eACP,IACA,cACA,IACA,WAIC;AACD,QAAO,GAAG,gBAAgB,OAAM,QAAO;EACrC,MAAM,EAAC,WAAU,MAAM,mBAAmB,KAAK,aAAa;EAC5D,MAAM,OAAO,OAAO,MAClB,SAAQ,KAAK,WAAW,GAAG,MAAM,UAAU,KAAK,SAAS,GAAG,MAAM,KACnE;AACD,MAAI,CAAC,KACH,OAAM,IAAI,2BACR,IACA,oCACD;EAEH,MAAM,YAAY,MAAQ,GAAG,MAAM,UAAU,oBAAoB;AACjE,MAAI,KAAK,cAAc,UAAU,UAC/B,OAAM,IAAI,2BACR,IACA,sDACD;AAEH,MAAI,KAAK,QAAQ,UAAU,YACzB,OAAM,IAAI,2BACR,IACA,oDACD;AAEH,MACE,CAAC,OACC,IAAI,IAAI,OAAO,KAAK,UAAU,OAAO,CAAC,EACtC,IAAI,IAAI,KAAK,uBAAuB,CACrC,CAED,OAAM,IAAI,2BACR,IACA,kDACD;EAEH,MAAM,UAAU,CACd,GAAG,OAAO,QAAQ,UAAU,OAAO,EACnC,GAAG,OAAO,QAAQ,GAAG,QAAQ,CAC9B;AACD,OAAK,MAAM,CAAC,KAAK,QAAQ,SAAS;GAChC,MAAM,UAAU,KAAK,QAAQ;AAC7B,OAAI,CAAC,QACH,OAAM,IAAI,2BACR,IACA,UAAU,IAAI,8BACf;AAGH,OADgB,MAAQ,KAAK,qBAAqB,CACtC,WAAW,QAAQ,IAC7B,OAAM,IAAI,2BACR,IACA,UAAU,IAAI,+CACf;;AAcL,SAAO;GAAC,WAAW;GAAM,UAXQ;IAC/B,UAAU;KACR,QAAQ,GAAG,MAAM;KACjB,MAAM,GAAG,MAAM;KACf,QAAQ,EAAC,SAAS,OAAO,KAAK,UAAU,OAAO,EAAC;KACjD;IACD,SAAS,OAAO,KAAK,GAAG,QAAQ,CAAC,QAC/B,QAAO,EAAE,OAAO,UAAU,QAC3B;IACD;IACD;GACiC;GAClC"}