@rocicorp/zero 1.12.0-canary.1 → 1.12.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 (1386) hide show
  1. package/out/_virtual/{_@oxc-project_runtime@0.130.0/helpers → _@oxc-project_runtime@0.154.0/helpers/esm}/usingCtx.js +2 -2
  2. package/out/analyze-query/src/analyze-cli.d.ts.map +1 -1
  3. package/out/analyze-query/src/analyze-cli.js +6 -4
  4. package/out/analyze-query/src/analyze-cli.js.map +1 -1
  5. package/out/analyze-query/src/bin-transform.js +4 -3
  6. package/out/analyze-query/src/bin-transform.js.map +1 -1
  7. package/out/analyze-query/src/zql-chain.d.ts +23 -0
  8. package/out/analyze-query/src/zql-chain.d.ts.map +1 -0
  9. package/out/analyze-query/src/zql-chain.js +162 -0
  10. package/out/analyze-query/src/zql-chain.js.map +1 -0
  11. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  12. package/out/ast-to-zql/src/bin.js +4 -3
  13. package/out/ast-to-zql/src/bin.js.map +1 -1
  14. package/out/ast-to-zql/src/format.js.map +1 -1
  15. package/out/datadog/src/datadog-log-sink.js +5 -4
  16. package/out/datadog/src/datadog-log-sink.js.map +1 -1
  17. package/out/otel/src/log-options.js.map +1 -1
  18. package/out/replicache/src/btree/node.d.ts +0 -2
  19. package/out/replicache/src/btree/node.d.ts.map +1 -1
  20. package/out/replicache/src/btree/node.js +14 -12
  21. package/out/replicache/src/btree/node.js.map +1 -1
  22. package/out/replicache/src/btree/read.js +4 -2
  23. package/out/replicache/src/btree/read.js.map +1 -1
  24. package/out/replicache/src/btree/splice.js.map +1 -1
  25. package/out/replicache/src/btree/write.js +9 -5
  26. package/out/replicache/src/btree/write.js.map +1 -1
  27. package/out/replicache/src/config.js +1 -2
  28. package/out/replicache/src/connection-loop.d.ts.map +1 -1
  29. package/out/replicache/src/connection-loop.js +1 -1
  30. package/out/replicache/src/connection-loop.js.map +1 -1
  31. package/out/replicache/src/dag/chunk.js +1 -1
  32. package/out/replicache/src/dag/gc.js.map +1 -1
  33. package/out/replicache/src/dag/lazy-store.js +8 -7
  34. package/out/replicache/src/dag/lazy-store.js.map +1 -1
  35. package/out/replicache/src/dag/store-impl.js +1 -1
  36. package/out/replicache/src/dag/store-impl.js.map +1 -1
  37. package/out/replicache/src/dag/visitor.js.map +1 -1
  38. package/out/replicache/src/db/commit.d.ts +0 -1
  39. package/out/replicache/src/db/commit.d.ts.map +1 -1
  40. package/out/replicache/src/db/commit.js +5 -3
  41. package/out/replicache/src/db/commit.js.map +1 -1
  42. package/out/replicache/src/db/read.js +1 -1
  43. package/out/replicache/src/db/read.js.map +1 -1
  44. package/out/replicache/src/db/rebase.js.map +1 -1
  45. package/out/replicache/src/db/write.d.ts +0 -2
  46. package/out/replicache/src/db/write.d.ts.map +1 -1
  47. package/out/replicache/src/db/write.js +5 -2
  48. package/out/replicache/src/db/write.js.map +1 -1
  49. package/out/replicache/src/deleted-clients.d.ts +0 -2
  50. package/out/replicache/src/deleted-clients.d.ts.map +1 -1
  51. package/out/replicache/src/deleted-clients.js +5 -3
  52. package/out/replicache/src/deleted-clients.js.map +1 -1
  53. package/out/replicache/src/expo-sqlite.js +1 -2
  54. package/out/replicache/src/frozen-json.d.ts +0 -1
  55. package/out/replicache/src/frozen-json.d.ts.map +1 -1
  56. package/out/replicache/src/frozen-json.js +1 -1
  57. package/out/replicache/src/frozen-json.js.map +1 -1
  58. package/out/replicache/src/get-default-puller.js +1 -1
  59. package/out/replicache/src/hash.js +1 -1
  60. package/out/replicache/src/hash.js.map +1 -1
  61. package/out/replicache/src/impl.js +1 -2
  62. package/out/replicache/src/index-defs.d.ts +0 -2
  63. package/out/replicache/src/index-defs.d.ts.map +1 -1
  64. package/out/replicache/src/index-defs.js +5 -3
  65. package/out/replicache/src/index-defs.js.map +1 -1
  66. package/out/replicache/src/kv/expo-sqlite/store.d.ts +0 -1
  67. package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
  68. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  69. package/out/replicache/src/kv/idb-store.js +2 -2
  70. package/out/replicache/src/kv/idb-store.js.map +1 -1
  71. package/out/replicache/src/kv/mem-fallback-store.js +1 -1
  72. package/out/replicache/src/kv/mem-fallback-store.js.map +1 -1
  73. package/out/replicache/src/kv/mem-store.js.map +1 -1
  74. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
  75. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
  76. package/out/replicache/src/kv/read-impl.js.map +1 -1
  77. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  78. package/out/replicache/src/kv/sqlite-store.js +8 -4
  79. package/out/replicache/src/kv/sqlite-store.js.map +1 -1
  80. package/out/replicache/src/kv/throw-if-closed.d.ts +0 -3
  81. package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
  82. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  83. package/out/replicache/src/kv/write-impl-base.js +4 -1
  84. package/out/replicache/src/kv/write-impl-base.js.map +1 -1
  85. package/out/replicache/src/kv/write-impl.js.map +1 -1
  86. package/out/replicache/src/log-options.js +2 -1
  87. package/out/replicache/src/log-options.js.map +1 -1
  88. package/out/replicache/src/make-idb-name.js +1 -1
  89. package/out/replicache/src/new-client-channel.js +9 -7
  90. package/out/replicache/src/new-client-channel.js.map +1 -1
  91. package/out/replicache/src/on-persist-channel.js +1 -1
  92. package/out/replicache/src/on-persist-channel.js.map +1 -1
  93. package/out/replicache/src/op-sqlite.js +1 -2
  94. package/out/replicache/src/pending-mutations.js +2 -1
  95. package/out/replicache/src/pending-mutations.js.map +1 -1
  96. package/out/replicache/src/persist/client-gc.js +2 -2
  97. package/out/replicache/src/persist/client-gc.js.map +1 -1
  98. package/out/replicache/src/persist/client-group-gc.d.ts +0 -7
  99. package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -1
  100. package/out/replicache/src/persist/client-group-gc.js +1 -1
  101. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  102. package/out/replicache/src/persist/client-groups.js +1 -1
  103. package/out/replicache/src/persist/client-groups.js.map +1 -1
  104. package/out/replicache/src/persist/clients.js +1 -1
  105. package/out/replicache/src/persist/clients.js.map +1 -1
  106. package/out/replicache/src/persist/collect-idb-databases.js +5 -4
  107. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
  108. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
  109. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
  110. package/out/replicache/src/persist/heartbeat.js +2 -2
  111. package/out/replicache/src/persist/heartbeat.js.map +1 -1
  112. package/out/replicache/src/persist/idb-databases-store.js +1 -1
  113. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  114. package/out/replicache/src/persist/make-client-id.js +1 -1
  115. package/out/replicache/src/persist/make-client-id.js.map +1 -1
  116. package/out/replicache/src/persist/persist.js +3 -2
  117. package/out/replicache/src/persist/persist.js.map +1 -1
  118. package/out/replicache/src/persist/refresh.js +8 -5
  119. package/out/replicache/src/persist/refresh.js.map +1 -1
  120. package/out/replicache/src/process-scheduler.js +1 -1
  121. package/out/replicache/src/process-scheduler.js.map +1 -1
  122. package/out/replicache/src/replicache-impl.d.ts +2 -7
  123. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  124. package/out/replicache/src/replicache-impl.js +21 -18
  125. package/out/replicache/src/replicache-impl.js.map +1 -1
  126. package/out/replicache/src/scan-iterator.js.map +1 -1
  127. package/out/replicache/src/scan-options.js +7 -6
  128. package/out/replicache/src/scan-options.js.map +1 -1
  129. package/out/replicache/src/sqlite.js +1 -2
  130. package/out/replicache/src/subscriptions.js +1 -1
  131. package/out/replicache/src/subscriptions.js.map +1 -1
  132. package/out/replicache/src/sync/diff.js +3 -1
  133. package/out/replicache/src/sync/diff.js.map +1 -1
  134. package/out/replicache/src/sync/ids.js.map +1 -1
  135. package/out/replicache/src/sync/patch.d.ts +0 -5
  136. package/out/replicache/src/sync/patch.d.ts.map +1 -1
  137. package/out/replicache/src/sync/patch.js +2 -4
  138. package/out/replicache/src/sync/patch.js.map +1 -1
  139. package/out/replicache/src/sync/pull.d.ts +0 -1
  140. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  141. package/out/replicache/src/sync/pull.js +3 -1
  142. package/out/replicache/src/sync/pull.js.map +1 -1
  143. package/out/replicache/src/sync/push.d.ts +2 -1
  144. package/out/replicache/src/sync/push.d.ts.map +1 -1
  145. package/out/replicache/src/sync/push.js.map +1 -1
  146. package/out/replicache/src/sync/request-id.js +1 -1
  147. package/out/replicache/src/sync/request-id.js.map +1 -1
  148. package/out/replicache/src/transactions.js +1 -1
  149. package/out/replicache/src/transactions.js.map +1 -1
  150. package/out/replicache/src/types.d.ts +2 -1
  151. package/out/replicache/src/types.d.ts.map +1 -1
  152. package/out/shared/src/arrays.js +4 -1
  153. package/out/shared/src/arrays.js.map +1 -1
  154. package/out/shared/src/asserts.d.ts +0 -5
  155. package/out/shared/src/asserts.d.ts.map +1 -1
  156. package/out/shared/src/asserts.js.map +1 -1
  157. package/out/shared/src/bigint-json.d.ts +9 -0
  158. package/out/shared/src/bigint-json.d.ts.map +1 -1
  159. package/out/shared/src/bigint-json.js +27 -2
  160. package/out/shared/src/bigint-json.js.map +1 -1
  161. package/out/shared/src/broadcast-channel.js +1 -1
  162. package/out/shared/src/browser-env.d.ts +0 -17
  163. package/out/shared/src/browser-env.d.ts.map +1 -1
  164. package/out/shared/src/browser-env.js.map +1 -1
  165. package/out/shared/src/btree-set.js +11 -8
  166. package/out/shared/src/btree-set.js.map +1 -1
  167. package/out/shared/src/cache.js.map +1 -1
  168. package/out/shared/src/config.js +1 -1
  169. package/out/shared/src/custom-key-map.js.map +1 -1
  170. package/out/shared/src/custom-key-set.js.map +1 -1
  171. package/out/shared/src/deep-clone.d.ts +0 -1
  172. package/out/shared/src/deep-clone.d.ts.map +1 -1
  173. package/out/shared/src/deep-clone.js.map +1 -1
  174. package/out/shared/src/document-visible.js +1 -1
  175. package/out/shared/src/document-visible.js.map +1 -1
  176. package/out/shared/src/dotenv.js.map +1 -1
  177. package/out/shared/src/error.js +1 -1
  178. package/out/shared/src/error.js.map +1 -1
  179. package/out/shared/src/expand.d.ts +0 -3
  180. package/out/shared/src/expand.d.ts.map +1 -1
  181. package/out/shared/src/hash.js +2 -2
  182. package/out/shared/src/hash.js.map +1 -1
  183. package/out/shared/src/immutable.d.ts +1 -1
  184. package/out/shared/src/immutable.d.ts.map +1 -1
  185. package/out/shared/src/iterables.d.ts +0 -1
  186. package/out/shared/src/iterables.d.ts.map +1 -1
  187. package/out/shared/src/iterables.js.map +1 -1
  188. package/out/shared/src/json-schema.js.map +1 -1
  189. package/out/shared/src/json.js.map +1 -1
  190. package/out/shared/src/logging-test-utils.js.map +1 -1
  191. package/out/shared/src/logging.js +1 -1
  192. package/out/shared/src/logging.js.map +1 -1
  193. package/out/shared/src/navigator.js +1 -1
  194. package/out/shared/src/options-types.d.ts +1 -1
  195. package/out/shared/src/options-types.d.ts.map +1 -1
  196. package/out/shared/src/options.d.ts +2 -3
  197. package/out/shared/src/options.d.ts.map +1 -1
  198. package/out/shared/src/options.js +8 -11
  199. package/out/shared/src/options.js.map +1 -1
  200. package/out/shared/src/promise-race.js +1 -1
  201. package/out/shared/src/promise-race.js.map +1 -1
  202. package/out/shared/src/queue.js +1 -1
  203. package/out/shared/src/queue.js.map +1 -1
  204. package/out/shared/src/record-proxy.js.map +1 -1
  205. package/out/shared/src/resolved-promises.d.ts +0 -4
  206. package/out/shared/src/resolved-promises.d.ts.map +1 -1
  207. package/out/shared/src/resolved-promises.js +0 -1
  208. package/out/shared/src/resolved-promises.js.map +1 -1
  209. package/out/shared/src/resolver.d.ts +9 -0
  210. package/out/shared/src/resolver.d.ts.map +1 -0
  211. package/out/shared/src/resolver.js +6 -0
  212. package/out/shared/src/resolver.js.map +1 -0
  213. package/out/shared/src/ring-buffer.js.map +1 -1
  214. package/out/shared/src/size-of-value.js +7 -10
  215. package/out/shared/src/size-of-value.js.map +1 -1
  216. package/out/shared/src/sleep.js +1 -1
  217. package/out/shared/src/sleep.js.map +1 -1
  218. package/out/shared/src/sorted-entries.js.map +1 -1
  219. package/out/shared/src/tdigest-schema.js.map +1 -1
  220. package/out/shared/src/tdigest.d.ts +0 -1
  221. package/out/shared/src/tdigest.d.ts.map +1 -1
  222. package/out/shared/src/tdigest.js.map +1 -1
  223. package/out/shared/src/valita.js +1 -1
  224. package/out/shared/src/valita.js.map +1 -1
  225. package/out/z2s/src/compiler.js +5 -7
  226. package/out/z2s/src/compiler.js.map +1 -1
  227. package/out/z2s/src/sql.d.ts +1 -5
  228. package/out/z2s/src/sql.d.ts.map +1 -1
  229. package/out/z2s/src/sql.js +1 -1
  230. package/out/z2s/src/sql.js.map +1 -1
  231. package/out/zero/package.js +210 -189
  232. package/out/zero/package.js.map +1 -1
  233. package/out/zero/src/adapters/drizzle.js +1 -2
  234. package/out/zero/src/adapters/kysely.js +1 -2
  235. package/out/zero/src/adapters/pg.js +1 -2
  236. package/out/zero/src/adapters/postgresjs.js +1 -2
  237. package/out/zero/src/adapters/prisma.js +1 -2
  238. package/out/zero/src/analyze.js +1 -2
  239. package/out/zero/src/change-protocol/v0.js +1 -2
  240. package/out/zero/src/expo-sqlite.js +1 -2
  241. package/out/zero/src/op-sqlite.js +1 -2
  242. package/out/zero/src/react-native.js.map +1 -1
  243. package/out/zero/src/sqlite.js +1 -2
  244. package/out/zero/src/zero-cache-dev.js +11 -10
  245. package/out/zero/src/zero-cache-dev.js.map +1 -1
  246. package/out/zero/src/zero-out.js +2 -1
  247. package/out/zero/src/zero-out.js.map +1 -1
  248. package/out/zero-cache/src/auth/auth.js +1 -1
  249. package/out/zero-cache/src/auth/auth.js.map +1 -1
  250. package/out/zero-cache/src/auth/jwt.js +4 -1
  251. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  252. package/out/zero-cache/src/auth/load-permissions.js +1 -1
  253. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  254. package/out/zero-cache/src/auth/read-authorizer.js +3 -2
  255. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  256. package/out/zero-cache/src/auth/write-authorizer.js +15 -19
  257. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  258. package/out/zero-cache/src/config/network.js +1 -1
  259. package/out/zero-cache/src/config/network.js.map +1 -1
  260. package/out/zero-cache/src/config/server-context.js.map +1 -1
  261. package/out/zero-cache/src/config/zero-config.d.ts +19 -11
  262. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  263. package/out/zero-cache/src/config/zero-config.js +38 -4
  264. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  265. package/out/zero-cache/src/custom/fetch.js +1 -1
  266. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  267. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  268. package/out/zero-cache/src/db/create.js.map +1 -1
  269. package/out/zero-cache/src/db/index-predicate.js.map +1 -1
  270. package/out/zero-cache/src/db/lite-tables.d.ts +2 -2
  271. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  272. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  273. package/out/zero-cache/src/db/migration-lite.js +1 -1
  274. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  275. package/out/zero-cache/src/db/migration.js +5 -3
  276. package/out/zero-cache/src/db/migration.js.map +1 -1
  277. package/out/zero-cache/src/db/pg-copy-binary.js +4 -3
  278. package/out/zero-cache/src/db/pg-copy-binary.js.map +1 -1
  279. package/out/zero-cache/src/db/pg-copy.js +0 -1
  280. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  281. package/out/zero-cache/src/db/pg-to-lite.js +1 -1
  282. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  283. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  284. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  285. package/out/zero-cache/src/db/specs.d.ts +3 -4
  286. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  287. package/out/zero-cache/src/db/specs.js +1 -1
  288. package/out/zero-cache/src/db/specs.js.map +1 -1
  289. package/out/zero-cache/src/db/sqlite-corruption.js.map +1 -1
  290. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  291. package/out/zero-cache/src/db/statements.js +9 -2
  292. package/out/zero-cache/src/db/statements.js.map +1 -1
  293. package/out/zero-cache/src/db/transaction-pool.js +6 -4
  294. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  295. package/out/zero-cache/src/db/warmup.js.map +1 -1
  296. package/out/zero-cache/src/observability/events.js +1 -1
  297. package/out/zero-cache/src/observability/events.js.map +1 -1
  298. package/out/zero-cache/src/observability/log-throttle.js.map +1 -1
  299. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  300. package/out/zero-cache/src/scripts/decommission.js +1 -1
  301. package/out/zero-cache/src/scripts/deploy-permissions.js +5 -3
  302. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  303. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  304. package/out/zero-cache/src/server/anonymous-otel-start.js +2 -1
  305. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  306. package/out/zero-cache/src/server/change-streamer.js +35 -11
  307. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  308. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  309. package/out/zero-cache/src/server/logging.js +1 -1
  310. package/out/zero-cache/src/server/logging.js.map +1 -1
  311. package/out/zero-cache/src/server/main.js +2 -2
  312. package/out/zero-cache/src/server/main.js.map +1 -1
  313. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  314. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  315. package/out/zero-cache/src/server/reaper.js +2 -2
  316. package/out/zero-cache/src/server/reaper.js.map +1 -1
  317. package/out/zero-cache/src/server/replicator.js +1 -1
  318. package/out/zero-cache/src/server/replicator.js.map +1 -1
  319. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  320. package/out/zero-cache/src/server/runner/run-worker.js +4 -3
  321. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  322. package/out/zero-cache/src/server/runner/runtime.js +2 -1
  323. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  324. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts +9 -1
  325. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  326. package/out/zero-cache/src/server/runner/zero-dispatcher.js +29 -2
  327. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  328. package/out/zero-cache/src/server/shadow-syncer.js +1 -1
  329. package/out/zero-cache/src/server/shadow-syncer.js.map +1 -1
  330. package/out/zero-cache/src/server/slot-keeper.js.map +1 -1
  331. package/out/zero-cache/src/server/syncer-assigner.js.map +1 -1
  332. package/out/zero-cache/src/server/syncer.js +10 -5
  333. package/out/zero-cache/src/server/syncer.js.map +1 -1
  334. package/out/zero-cache/src/server/worker-dispatcher.js +1 -1
  335. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  336. package/out/zero-cache/src/server/worker-urls.js.map +1 -1
  337. package/out/zero-cache/src/services/analyze.js +2 -2
  338. package/out/zero-cache/src/services/analyze.js.map +1 -1
  339. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +3 -3
  340. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  341. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +1 -1
  342. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  343. package/out/zero-cache/src/services/change-source/common/init-cleanup.js.map +1 -1
  344. package/out/zero-cache/src/services/change-source/common/replica-restore.js.map +1 -1
  345. package/out/zero-cache/src/services/change-source/common/replica-schema.js +4 -4
  346. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  347. package/out/zero-cache/src/services/change-source/custom/change-source.js +3 -3
  348. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  349. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
  350. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +4 -4
  351. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  352. package/out/zero-cache/src/services/change-source/pg/change-source-init.js +52 -27
  353. package/out/zero-cache/src/services/change-source/pg/change-source-init.js.map +1 -1
  354. package/out/zero-cache/src/services/change-source/pg/change-source.js +70 -15
  355. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  356. package/out/zero-cache/src/services/change-source/pg/decommission.js +2 -1
  357. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  358. package/out/zero-cache/src/services/change-source/pg/fork-request.js +54 -0
  359. package/out/zero-cache/src/services/change-source/pg/fork-request.js.map +1 -0
  360. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +9 -7
  361. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  362. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  363. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  364. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +5 -4
  365. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  366. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts +0 -2
  367. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts.map +1 -1
  368. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  369. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js +2 -2
  370. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js.map +1 -1
  371. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js +1 -1
  372. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js.map +1 -1
  373. package/out/zero-cache/src/services/change-source/pg/replication-slots.js +9 -3
  374. package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -1
  375. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +0 -12
  376. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
  377. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +6 -4
  378. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  379. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts +1 -1
  380. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts.map +1 -1
  381. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js +13 -12
  382. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js.map +1 -1
  383. package/out/zero-cache/src/services/change-source/pg/schema/init.js +1 -1
  384. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  385. package/out/zero-cache/src/services/change-source/pg/schema/published.js +2 -2
  386. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  387. package/out/zero-cache/src/services/change-source/pg/schema/replica-stage-enum.js.map +1 -1
  388. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +10 -7
  389. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  390. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +0 -1
  391. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
  392. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +1 -1
  393. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  394. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js +1 -1
  395. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js.map +1 -1
  396. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  397. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  398. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +1 -0
  399. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  400. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  401. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +3 -0
  402. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts.map +1 -1
  403. package/out/zero-cache/src/services/change-source/protocol/current/status.js +2 -1
  404. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  405. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -0
  406. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  407. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  408. package/out/zero-cache/src/services/change-source/protocol/current.js +1 -1
  409. package/out/zero-cache/src/services/change-source/protocol/mod.js +1 -2
  410. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.js.map +1 -1
  411. package/out/zero-cache/src/services/change-streamer/backfill-state.js +1 -1
  412. package/out/zero-cache/src/services/change-streamer/backfill-state.js.map +1 -1
  413. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js +6 -6
  414. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js.map +1 -1
  415. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +56 -21
  416. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  417. package/out/zero-cache/src/services/change-streamer/broadcast.js +2 -2
  418. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
  419. package/out/zero-cache/src/services/change-streamer/change-log-codec.js +2 -3
  420. package/out/zero-cache/src/services/change-streamer/change-log-codec.js.map +1 -1
  421. package/out/zero-cache/src/services/change-streamer/change-log-initializer.js +3 -3
  422. package/out/zero-cache/src/services/change-streamer/change-log-initializer.js.map +1 -1
  423. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.js.map +1 -1
  424. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +4 -2
  425. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  426. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +49 -30
  427. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  428. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  429. package/out/zero-cache/src/services/change-streamer/drain-tracker.js +1 -1
  430. package/out/zero-cache/src/services/change-streamer/drain-tracker.js.map +1 -1
  431. package/out/zero-cache/src/services/change-streamer/forwarder.js +11 -10
  432. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  433. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js +81 -12
  434. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js.map +1 -1
  435. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js +4 -4
  436. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js.map +1 -1
  437. package/out/zero-cache/src/services/change-streamer/replica-poller.js +2 -2
  438. package/out/zero-cache/src/services/change-streamer/replica-poller.js.map +1 -1
  439. package/out/zero-cache/src/services/change-streamer/restore-admission.js +12 -1
  440. package/out/zero-cache/src/services/change-streamer/restore-admission.js.map +1 -1
  441. package/out/zero-cache/src/services/change-streamer/schema/init.js +1 -1
  442. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  443. package/out/zero-cache/src/services/change-streamer/schema/tables.js +1 -1
  444. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  445. package/out/zero-cache/src/services/change-streamer/server-start-metrics.js +42 -0
  446. package/out/zero-cache/src/services/change-streamer/server-start-metrics.js.map +1 -0
  447. package/out/zero-cache/src/services/change-streamer/snapshot-message.js +1 -2
  448. package/out/zero-cache/src/services/change-streamer/snapshot-message.js.map +1 -1
  449. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.js.map +1 -1
  450. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js +2 -2
  451. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js.map +1 -1
  452. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js +2 -2
  453. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js.map +1 -1
  454. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.js.map +1 -1
  455. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.js.map +1 -1
  456. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js +4 -6
  457. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js.map +1 -1
  458. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js +3 -5
  459. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js.map +1 -1
  460. package/out/zero-cache/src/services/change-streamer/storer.js +4 -4
  461. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  462. package/out/zero-cache/src/services/change-streamer/subscribe.js.map +1 -1
  463. package/out/zero-cache/src/services/change-streamer/subscriber.js +8 -7
  464. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  465. package/out/zero-cache/src/services/change-streamer/upstream-acker.js +0 -1
  466. package/out/zero-cache/src/services/change-streamer/upstream-acker.js.map +1 -1
  467. package/out/zero-cache/src/services/heapz.js +2 -1
  468. package/out/zero-cache/src/services/heapz.js.map +1 -1
  469. package/out/zero-cache/src/services/http-service.d.ts +2 -2
  470. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  471. package/out/zero-cache/src/services/http-service.js +6 -4
  472. package/out/zero-cache/src/services/http-service.js.map +1 -1
  473. package/out/zero-cache/src/services/life-cycle.js +3 -3
  474. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  475. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +4 -2
  476. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  477. package/out/zero-cache/src/services/litestream/commands.js +4 -4
  478. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  479. package/out/zero-cache/src/services/litestream/litestream-checkpointer.js +2 -2
  480. package/out/zero-cache/src/services/litestream/litestream-checkpointer.js.map +1 -1
  481. package/out/zero-cache/src/services/litestream/litestream-controller.js.map +1 -1
  482. package/out/zero-cache/src/services/litestream/metrics.js.map +1 -1
  483. package/out/zero-cache/src/services/litestream/restore-progress.js.map +1 -1
  484. package/out/zero-cache/src/services/mutagen/mutagen.js +3 -4
  485. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  486. package/out/zero-cache/src/services/mutagen/pusher.js +61 -17
  487. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  488. package/out/zero-cache/src/services/plannerz.d.ts +4 -12
  489. package/out/zero-cache/src/services/plannerz.d.ts.map +1 -1
  490. package/out/zero-cache/src/services/plannerz.js +6 -7
  491. package/out/zero-cache/src/services/plannerz.js.map +1 -1
  492. package/out/zero-cache/src/services/profz.js +5 -3
  493. package/out/zero-cache/src/services/profz.js.map +1 -1
  494. package/out/zero-cache/src/services/replicator/change-log-cookies.js.map +1 -1
  495. package/out/zero-cache/src/services/replicator/change-log-db.js +4 -3
  496. package/out/zero-cache/src/services/replicator/change-log-db.js.map +1 -1
  497. package/out/zero-cache/src/services/replicator/change-log-stream-writer.js.map +1 -1
  498. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  499. package/out/zero-cache/src/services/replicator/drain-handler.js +1 -1
  500. package/out/zero-cache/src/services/replicator/drain-handler.js.map +1 -1
  501. package/out/zero-cache/src/services/replicator/incremental-sync.js +4 -4
  502. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  503. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  504. package/out/zero-cache/src/services/replicator/replication-status.js +4 -3
  505. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  506. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  507. package/out/zero-cache/src/services/replicator/reporter/recorder.js +2 -2
  508. package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -1
  509. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts +2 -11
  510. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts.map +1 -1
  511. package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -1
  512. package/out/zero-cache/src/services/replicator/schema/backfilling.js +2 -2
  513. package/out/zero-cache/src/services/replicator/schema/backfilling.js.map +1 -1
  514. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +19 -17
  515. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  516. package/out/zero-cache/src/services/replicator/schema/change-log.js +31 -15
  517. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  518. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +0 -7
  519. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
  520. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +1 -1
  521. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  522. package/out/zero-cache/src/services/replicator/schema/replication-state.js +10 -7
  523. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  524. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
  525. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js +1 -1
  526. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js.map +1 -1
  527. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js +1 -1
  528. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js.map +1 -1
  529. package/out/zero-cache/src/services/replicator/write-worker-client.js +2 -2
  530. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
  531. package/out/zero-cache/src/services/replicator/write-worker.js +3 -3
  532. package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -1
  533. package/out/zero-cache/src/services/run-ast.js +1 -1
  534. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  535. package/out/zero-cache/src/services/runner.js.map +1 -1
  536. package/out/zero-cache/src/services/running-state.js +1 -1
  537. package/out/zero-cache/src/services/running-state.js.map +1 -1
  538. package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +1 -1
  539. package/out/zero-cache/src/services/statz.js +4 -3
  540. package/out/zero-cache/src/services/statz.js.map +1 -1
  541. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +2 -2
  542. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  543. package/out/zero-cache/src/services/view-syncer/advancement-metrics.js.map +1 -1
  544. package/out/zero-cache/src/services/view-syncer/batch-pacer.js.map +1 -1
  545. package/out/zero-cache/src/services/view-syncer/client-handler.js +71 -24
  546. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  547. package/out/zero-cache/src/services/view-syncer/client-schema.js +46 -6
  548. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  549. package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -1
  550. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +2 -2
  551. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  552. package/out/zero-cache/src/services/view-syncer/cvr-store.js +12 -7
  553. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  554. package/out/zero-cache/src/services/view-syncer/cvr.js +12 -4
  555. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  556. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js +1 -1
  557. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js.map +1 -1
  558. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +2 -2
  559. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  560. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.js.map +1 -1
  561. package/out/zero-cache/src/services/view-syncer/hydration-budget.js.map +1 -1
  562. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js +2 -2
  563. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js.map +1 -1
  564. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +6 -4
  565. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  566. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +13 -10
  567. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  568. package/out/zero-cache/src/services/view-syncer/plan-warnings.js.map +1 -1
  569. package/out/zero-cache/src/services/view-syncer/push-cost.js.map +1 -1
  570. package/out/zero-cache/src/services/view-syncer/push-cutoff.js.map +1 -1
  571. package/out/zero-cache/src/services/view-syncer/query-covering.js.map +1 -1
  572. package/out/zero-cache/src/services/view-syncer/query-shape.js.map +1 -1
  573. package/out/zero-cache/src/services/view-syncer/query-stats.js +1 -1
  574. package/out/zero-cache/src/services/view-syncer/query-stats.js.map +1 -1
  575. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +2 -2
  576. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  577. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  578. package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -16
  579. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  580. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js +7 -1
  581. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js.map +1 -1
  582. package/out/zero-cache/src/services/view-syncer/snapshotter.js +12 -8
  583. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  584. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  585. package/out/zero-cache/src/services/view-syncer/view-syncer.js +52 -28
  586. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  587. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  588. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  589. package/out/zero-cache/src/types/lite.d.ts +0 -1
  590. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  591. package/out/zero-cache/src/types/lite.js +1 -1
  592. package/out/zero-cache/src/types/lite.js.map +1 -1
  593. package/out/zero-cache/src/types/pg-data-type.js +1 -1
  594. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  595. package/out/zero-cache/src/types/pg-types.d.ts +0 -40
  596. package/out/zero-cache/src/types/pg-types.d.ts.map +1 -1
  597. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  598. package/out/zero-cache/src/types/pg.js +6 -4
  599. package/out/zero-cache/src/types/pg.js.map +1 -1
  600. package/out/zero-cache/src/types/poke-chunk.d.ts +0 -1
  601. package/out/zero-cache/src/types/poke-chunk.d.ts.map +1 -1
  602. package/out/zero-cache/src/types/poke-chunk.js +1 -1
  603. package/out/zero-cache/src/types/poke-chunk.js.map +1 -1
  604. package/out/zero-cache/src/types/processes.js +1 -1
  605. package/out/zero-cache/src/types/processes.js.map +1 -1
  606. package/out/zero-cache/src/types/profiler.js +1 -1
  607. package/out/zero-cache/src/types/profiler.js.map +1 -1
  608. package/out/zero-cache/src/types/row-key.d.ts +0 -5
  609. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  610. package/out/zero-cache/src/types/row-key.js.map +1 -1
  611. package/out/zero-cache/src/types/sql.js.map +1 -1
  612. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  613. package/out/zero-cache/src/types/streams.js +11 -10
  614. package/out/zero-cache/src/types/streams.js.map +1 -1
  615. package/out/zero-cache/src/types/strings.js.map +1 -1
  616. package/out/zero-cache/src/types/subscription.js +1 -1
  617. package/out/zero-cache/src/types/subscription.js.map +1 -1
  618. package/out/zero-cache/src/types/timeout.js +1 -1
  619. package/out/zero-cache/src/types/websocket-handoff.d.ts +4 -7
  620. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  621. package/out/zero-cache/src/types/websocket-handoff.js +16 -2
  622. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  623. package/out/zero-cache/src/types/ws.d.ts +2 -1
  624. package/out/zero-cache/src/types/ws.d.ts.map +1 -1
  625. package/out/zero-cache/src/types/ws.js.map +1 -1
  626. package/out/zero-cache/src/workers/connection.d.ts +1 -2
  627. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  628. package/out/zero-cache/src/workers/connection.js +8 -6
  629. package/out/zero-cache/src/workers/connection.js.map +1 -1
  630. package/out/zero-cache/src/workers/mutator.js +1 -1
  631. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  632. package/out/zero-cache/src/workers/rehome.d.ts +15 -0
  633. package/out/zero-cache/src/workers/rehome.d.ts.map +1 -0
  634. package/out/zero-cache/src/workers/rehome.js +36 -0
  635. package/out/zero-cache/src/workers/rehome.js.map +1 -0
  636. package/out/zero-cache/src/workers/replicator.js +5 -4
  637. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  638. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +9 -1
  639. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  640. package/out/zero-cache/src/workers/syncer.js +32 -7
  641. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  642. package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
  643. package/out/zero-client/src/client/active-clients-manager.js +2 -2
  644. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  645. package/out/zero-client/src/client/bindings.js +11 -11
  646. package/out/zero-client/src/client/connection-manager.js +1 -1
  647. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  648. package/out/zero-client/src/client/connection.js +1 -1
  649. package/out/zero-client/src/client/connection.js.map +1 -1
  650. package/out/zero-client/src/client/context.js.map +1 -1
  651. package/out/zero-client/src/client/crud-impl.js +1 -1
  652. package/out/zero-client/src/client/crud-impl.js.map +1 -1
  653. package/out/zero-client/src/client/crud.d.ts +2 -8
  654. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  655. package/out/zero-client/src/client/crud.js.map +1 -1
  656. package/out/zero-client/src/client/custom.d.ts +0 -2
  657. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  658. package/out/zero-client/src/client/custom.js.map +1 -1
  659. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  660. package/out/zero-client/src/client/enable-analytics.d.ts +0 -1
  661. package/out/zero-client/src/client/enable-analytics.d.ts.map +1 -1
  662. package/out/zero-client/src/client/enable-analytics.js +1 -0
  663. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  664. package/out/zero-client/src/client/error.d.ts +4 -5
  665. package/out/zero-client/src/client/error.d.ts.map +1 -1
  666. package/out/zero-client/src/client/error.js.map +1 -1
  667. package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
  668. package/out/zero-client/src/client/inspector/client.js.map +1 -1
  669. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +1 -1
  670. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
  671. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  672. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  673. package/out/zero-client/src/client/inspector/query.js.map +1 -1
  674. package/out/zero-client/src/client/ivm-branch.js +1 -3
  675. package/out/zero-client/src/client/ivm-branch.js.map +1 -1
  676. package/out/zero-client/src/client/keys.d.ts +0 -1
  677. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  678. package/out/zero-client/src/client/keys.js +6 -3
  679. package/out/zero-client/src/client/keys.js.map +1 -1
  680. package/out/zero-client/src/client/log-options.js.map +1 -1
  681. package/out/zero-client/src/client/make-replicache-mutators.js +5 -3
  682. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  683. package/out/zero-client/src/client/metrics.js +3 -5
  684. package/out/zero-client/src/client/metrics.js.map +1 -1
  685. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  686. package/out/zero-client/src/client/mutation-tracker.js +1 -1
  687. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  688. package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
  689. package/out/zero-client/src/client/options.d.ts +0 -4
  690. package/out/zero-client/src/client/options.d.ts.map +1 -1
  691. package/out/zero-client/src/client/options.js.map +1 -1
  692. package/out/zero-client/src/client/query-manager.js +2 -2
  693. package/out/zero-client/src/client/query-manager.js.map +1 -1
  694. package/out/zero-client/src/client/reload-error-handler.js +4 -3
  695. package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
  696. package/out/zero-client/src/client/replicache-types.d.ts +3 -2
  697. package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
  698. package/out/zero-client/src/client/version.js +1 -1
  699. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -2
  700. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  701. package/out/zero-client/src/client/zero-poke-handler.js +1 -1
  702. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  703. package/out/zero-client/src/client/zero-rep.js.map +1 -1
  704. package/out/zero-client/src/client/zero.d.ts +1 -5
  705. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  706. package/out/zero-client/src/client/zero.js +20 -12
  707. package/out/zero-client/src/client/zero.js.map +1 -1
  708. package/out/zero-client/src/mod.js +23 -23
  709. package/out/zero-client/src/types/client-state.d.ts +0 -6
  710. package/out/zero-client/src/types/client-state.d.ts.map +1 -1
  711. package/out/zero-client/src/util/nanoid.js.map +1 -1
  712. package/out/zero-permissions/src/permissions.d.ts +1 -12
  713. package/out/zero-permissions/src/permissions.d.ts.map +1 -1
  714. package/out/zero-permissions/src/permissions.js +3 -3
  715. package/out/zero-permissions/src/permissions.js.map +1 -1
  716. package/out/zero-pg/src/mod.js +9 -9
  717. package/out/zero-protocol/src/analyze-query-result.js +1 -1
  718. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  719. package/out/zero-protocol/src/application-error.js.map +1 -1
  720. package/out/zero-protocol/src/ast.d.ts +0 -4
  721. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  722. package/out/zero-protocol/src/ast.js +21 -11
  723. package/out/zero-protocol/src/ast.js.map +1 -1
  724. package/out/zero-protocol/src/change-desired-queries.d.ts +0 -20
  725. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  726. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  727. package/out/zero-protocol/src/client-schema.d.ts +2 -5
  728. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  729. package/out/zero-protocol/src/client-schema.js.map +1 -1
  730. package/out/zero-protocol/src/close-connection.d.ts +0 -8
  731. package/out/zero-protocol/src/close-connection.d.ts.map +1 -1
  732. package/out/zero-protocol/src/close-connection.js.map +1 -1
  733. package/out/zero-protocol/src/connect.d.ts +0 -12
  734. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  735. package/out/zero-protocol/src/connect.js.map +1 -1
  736. package/out/zero-protocol/src/custom-queries.d.ts +3 -17
  737. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  738. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  739. package/out/zero-protocol/src/data.d.ts +0 -1
  740. package/out/zero-protocol/src/data.d.ts.map +1 -1
  741. package/out/zero-protocol/src/data.js +3 -1
  742. package/out/zero-protocol/src/data.js.map +1 -1
  743. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  744. package/out/zero-protocol/src/down.d.ts +2 -2
  745. package/out/zero-protocol/src/down.js.map +1 -1
  746. package/out/zero-protocol/src/error.js.map +1 -1
  747. package/out/zero-protocol/src/inspect-down.d.ts +82 -84
  748. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  749. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  750. package/out/zero-protocol/src/inspect-up.d.ts +0 -28
  751. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  752. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  753. package/out/zero-protocol/src/mutate-server.d.ts +0 -21
  754. package/out/zero-protocol/src/mutate-server.d.ts.map +1 -1
  755. package/out/zero-protocol/src/mutate-server.js.map +1 -1
  756. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  757. package/out/zero-protocol/src/mutation-type-enum.d.ts +0 -1
  758. package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
  759. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  760. package/out/zero-protocol/src/mutation.d.ts +2 -4
  761. package/out/zero-protocol/src/mutation.d.ts.map +1 -1
  762. package/out/zero-protocol/src/mutation.js.map +1 -1
  763. package/out/zero-protocol/src/mutations-patch.d.ts +0 -33
  764. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  765. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  766. package/out/zero-protocol/src/ping.d.ts +0 -2
  767. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  768. package/out/zero-protocol/src/ping.js.map +1 -1
  769. package/out/zero-protocol/src/poke.d.ts +3 -2
  770. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  771. package/out/zero-protocol/src/poke.js +1 -1
  772. package/out/zero-protocol/src/poke.js.map +1 -1
  773. package/out/zero-protocol/src/pong.d.ts +0 -2
  774. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  775. package/out/zero-protocol/src/pong.js.map +1 -1
  776. package/out/zero-protocol/src/primary-key.js.map +1 -1
  777. package/out/zero-protocol/src/protocol-version.js +1 -0
  778. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  779. package/out/zero-protocol/src/pull.d.ts +2 -7
  780. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  781. package/out/zero-protocol/src/pull.js.map +1 -1
  782. package/out/zero-protocol/src/push.d.ts +1 -3
  783. package/out/zero-protocol/src/push.d.ts.map +1 -1
  784. package/out/zero-protocol/src/push.js.map +1 -1
  785. package/out/zero-protocol/src/queries-patch.d.ts +0 -16
  786. package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
  787. package/out/zero-protocol/src/queries-patch.js +1 -1
  788. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  789. package/out/zero-protocol/src/query-hash-visitor.js.map +1 -1
  790. package/out/zero-protocol/src/query-hash.js +2 -2
  791. package/out/zero-protocol/src/query-server.d.ts +2 -41
  792. package/out/zero-protocol/src/query-server.d.ts.map +1 -1
  793. package/out/zero-protocol/src/query-server.js.map +1 -1
  794. package/out/zero-protocol/src/row-patch.js.map +1 -1
  795. package/out/zero-protocol/src/up.d.ts +60 -60
  796. package/out/zero-protocol/src/up.js +1 -1
  797. package/out/zero-protocol/src/up.js.map +1 -1
  798. package/out/zero-protocol/src/update-auth.js.map +1 -1
  799. package/out/zero-protocol/src/version.d.ts +0 -1
  800. package/out/zero-protocol/src/version.d.ts.map +1 -1
  801. package/out/zero-protocol/src/version.js.map +1 -1
  802. package/out/zero-react/src/bindings.js +11 -11
  803. package/out/zero-react/src/mod.js +5 -5
  804. package/out/zero-react/src/use-query.js +2 -2
  805. package/out/zero-react/src/use-query.js.map +1 -1
  806. package/out/zero-react/src/zero-provider.d.ts +1 -1
  807. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  808. package/out/zero-react/src/zero-provider.js +2 -1
  809. package/out/zero-react/src/zero-provider.js.map +1 -1
  810. package/out/zero-react/src/zero.js +23 -23
  811. package/out/zero-schema/src/builder/relationship-builder.d.ts +0 -2
  812. package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -1
  813. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  814. package/out/zero-schema/src/builder/schema-builder.js +3 -2
  815. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  816. package/out/zero-schema/src/builder/table-builder.d.ts +1 -1
  817. package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
  818. package/out/zero-schema/src/builder/table-builder.js +1 -1
  819. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  820. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  821. package/out/zero-schema/src/name-mapper.js +7 -5
  822. package/out/zero-schema/src/name-mapper.js.map +1 -1
  823. package/out/zero-schema/src/schema-config.d.ts +0 -1
  824. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  825. package/out/zero-schema/src/schema-config.js +1 -1
  826. package/out/zero-schema/src/schema-config.js.map +1 -1
  827. package/out/zero-schema/src/table-schema.d.ts +3 -11
  828. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  829. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  830. package/out/zero-server/src/adapters/kysely.js.map +1 -1
  831. package/out/zero-server/src/adapters/pg.js.map +1 -1
  832. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  833. package/out/zero-server/src/adapters/prisma.js.map +1 -1
  834. package/out/zero-server/src/closable-db-transaction.js.map +1 -1
  835. package/out/zero-server/src/custom.js +1 -1
  836. package/out/zero-server/src/custom.js.map +1 -1
  837. package/out/zero-server/src/mod.js +8 -8
  838. package/out/zero-server/src/process-mutations.js.map +1 -1
  839. package/out/zero-server/src/push-processor.js.map +1 -1
  840. package/out/zero-server/src/queries/process-queries.d.ts +2 -4
  841. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  842. package/out/zero-server/src/queries/process-queries.js +2 -1
  843. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  844. package/out/zero-server/src/schema.js +7 -7
  845. package/out/zero-server/src/schema.js.map +1 -1
  846. package/out/zero-server/src/zql-database.js.map +1 -1
  847. package/out/zero-solid/src/bindings.js +11 -11
  848. package/out/zero-solid/src/mod.js +5 -5
  849. package/out/zero-solid/src/solid-view.d.ts +0 -2
  850. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  851. package/out/zero-solid/src/solid-view.js +1 -1
  852. package/out/zero-solid/src/solid-view.js.map +1 -1
  853. package/out/zero-solid/src/use-connection-state.js +2 -1
  854. package/out/zero-solid/src/use-connection-state.js.map +1 -1
  855. package/out/zero-solid/src/use-query.js.map +1 -1
  856. package/out/zero-solid/src/use-zero-online.js +2 -1
  857. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  858. package/out/zero-solid/src/use-zero.js +3 -2
  859. package/out/zero-solid/src/use-zero.js.map +1 -1
  860. package/out/zero-solid/src/zero.js +23 -23
  861. package/out/zero-types/src/name-mapper.d.ts +2 -1
  862. package/out/zero-types/src/name-mapper.d.ts.map +1 -1
  863. package/out/zero-types/src/name-mapper.js.map +1 -1
  864. package/out/zero-types/src/schema-value.d.ts +3 -2
  865. package/out/zero-types/src/schema-value.d.ts.map +1 -1
  866. package/out/zero-types/src/schema.d.ts +1 -1
  867. package/out/zero-types/src/schema.d.ts.map +1 -1
  868. package/out/zql/src/builder/builder.d.ts +1 -11
  869. package/out/zql/src/builder/builder.d.ts.map +1 -1
  870. package/out/zql/src/builder/builder.js +15 -13
  871. package/out/zql/src/builder/builder.js.map +1 -1
  872. package/out/zql/src/builder/correlated-predicate-pushdown.js.map +1 -1
  873. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  874. package/out/zql/src/builder/filter.d.ts +0 -1
  875. package/out/zql/src/builder/filter.d.ts.map +1 -1
  876. package/out/zql/src/builder/filter.js.map +1 -1
  877. package/out/zql/src/builder/like.js +0 -1
  878. package/out/zql/src/builder/like.js.map +1 -1
  879. package/out/zql/src/error.d.ts +0 -5
  880. package/out/zql/src/error.d.ts.map +1 -1
  881. package/out/zql/src/error.js.map +1 -1
  882. package/out/zql/src/ivm/array-view.js.map +1 -1
  883. package/out/zql/src/ivm/cap.d.ts +1 -1
  884. package/out/zql/src/ivm/cap.d.ts.map +1 -1
  885. package/out/zql/src/ivm/cap.js +12 -4
  886. package/out/zql/src/ivm/cap.js.map +1 -1
  887. package/out/zql/src/ivm/constraint.d.ts +0 -7
  888. package/out/zql/src/ivm/constraint.d.ts.map +1 -1
  889. package/out/zql/src/ivm/constraint.js +1 -1
  890. package/out/zql/src/ivm/constraint.js.map +1 -1
  891. package/out/zql/src/ivm/data.d.ts +15 -2
  892. package/out/zql/src/ivm/data.d.ts.map +1 -1
  893. package/out/zql/src/ivm/data.js +15 -1
  894. package/out/zql/src/ivm/data.js.map +1 -1
  895. package/out/zql/src/ivm/deferred-input.js.map +1 -1
  896. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  897. package/out/zql/src/ivm/exists.js +32 -22
  898. package/out/zql/src/ivm/exists.js.map +1 -1
  899. package/out/zql/src/ivm/fan-in.js.map +1 -1
  900. package/out/zql/src/ivm/fan-out.js.map +1 -1
  901. package/out/zql/src/ivm/filter-operators.d.ts +5 -0
  902. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  903. package/out/zql/src/ivm/filter-operators.js +1 -1
  904. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  905. package/out/zql/src/ivm/filter-push.js.map +1 -1
  906. package/out/zql/src/ivm/filter.js.map +1 -1
  907. package/out/zql/src/ivm/flipped-join.js +1 -3
  908. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  909. package/out/zql/src/ivm/join-index-tap.js.map +1 -1
  910. package/out/zql/src/ivm/join-index.js.map +1 -1
  911. package/out/zql/src/ivm/join-utils.js +11 -13
  912. package/out/zql/src/ivm/join-utils.js.map +1 -1
  913. package/out/zql/src/ivm/join.d.ts.map +1 -1
  914. package/out/zql/src/ivm/join.js +6 -3
  915. package/out/zql/src/ivm/join.js.map +1 -1
  916. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  917. package/out/zql/src/ivm/memory-source.d.ts +1 -2
  918. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  919. package/out/zql/src/ivm/memory-source.js +27 -23
  920. package/out/zql/src/ivm/memory-source.js.map +1 -1
  921. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  922. package/out/zql/src/ivm/operator.d.ts +6 -0
  923. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  924. package/out/zql/src/ivm/operator.js +2 -2
  925. package/out/zql/src/ivm/operator.js.map +1 -1
  926. package/out/zql/src/ivm/push-accumulated.js +0 -1
  927. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  928. package/out/zql/src/ivm/skip-yields.js.map +1 -1
  929. package/out/zql/src/ivm/skip.js.map +1 -1
  930. package/out/zql/src/ivm/stream.d.ts +0 -1
  931. package/out/zql/src/ivm/stream.d.ts.map +1 -1
  932. package/out/zql/src/ivm/stream.js.map +1 -1
  933. package/out/zql/src/ivm/take-gate.js.map +1 -1
  934. package/out/zql/src/ivm/take.d.ts.map +1 -1
  935. package/out/zql/src/ivm/take.js +7 -8
  936. package/out/zql/src/ivm/take.js.map +1 -1
  937. package/out/zql/src/ivm/union-fan-in.d.ts +0 -1
  938. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  939. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  940. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  941. package/out/zql/src/ivm/view-apply-change.d.ts +5 -35
  942. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  943. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  944. package/out/zql/src/mutate/crud.d.ts +1 -3
  945. package/out/zql/src/mutate/crud.d.ts.map +1 -1
  946. package/out/zql/src/mutate/crud.js +2 -1
  947. package/out/zql/src/mutate/crud.js.map +1 -1
  948. package/out/zql/src/mutate/mutator-registry.d.ts +1 -1
  949. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
  950. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  951. package/out/zql/src/mutate/mutator.d.ts +1 -1
  952. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  953. package/out/zql/src/mutate/mutator.js.map +1 -1
  954. package/out/zql/src/planner/planner-builder.js +1 -1
  955. package/out/zql/src/planner/planner-builder.js.map +1 -1
  956. package/out/zql/src/planner/planner-connection.js.map +1 -1
  957. package/out/zql/src/planner/planner-debug.d.ts +10 -9
  958. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  959. package/out/zql/src/planner/planner-debug.js.map +1 -1
  960. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  961. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  962. package/out/zql/src/planner/planner-filter.js.map +1 -1
  963. package/out/zql/src/planner/planner-graph.js +1 -5
  964. package/out/zql/src/planner/planner-graph.js.map +1 -1
  965. package/out/zql/src/planner/planner-join.js +1 -1
  966. package/out/zql/src/planner/planner-join.js.map +1 -1
  967. package/out/zql/src/planner/planner-node.d.ts +0 -1
  968. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  969. package/out/zql/src/planner/planner-node.js.map +1 -1
  970. package/out/zql/src/planner/planner-source.js.map +1 -1
  971. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  972. package/out/zql/src/planner/planner-warnings.d.ts +3 -3
  973. package/out/zql/src/planner/planner-warnings.d.ts.map +1 -1
  974. package/out/zql/src/planner/planner-warnings.js.map +1 -1
  975. package/out/zql/src/query/create-builder.js +2 -1
  976. package/out/zql/src/query/create-builder.js.map +1 -1
  977. package/out/zql/src/query/expression.d.ts +0 -22
  978. package/out/zql/src/query/expression.d.ts.map +1 -1
  979. package/out/zql/src/query/expression.js +1 -1
  980. package/out/zql/src/query/expression.js.map +1 -1
  981. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  982. package/out/zql/src/query/named.js +2 -1
  983. package/out/zql/src/query/named.js.map +1 -1
  984. package/out/zql/src/query/query-delegate-base.d.ts +0 -7
  985. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  986. package/out/zql/src/query/query-delegate-base.js +1 -1
  987. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  988. package/out/zql/src/query/query-delegate.d.ts +1 -4
  989. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  990. package/out/zql/src/query/query-impl.js +3 -2
  991. package/out/zql/src/query/query-impl.js.map +1 -1
  992. package/out/zql/src/query/query-internals.d.ts +0 -3
  993. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  994. package/out/zql/src/query/query-internals.js.map +1 -1
  995. package/out/zql/src/query/query-registry.d.ts +5 -5
  996. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  997. package/out/zql/src/query/query-registry.js +1 -1
  998. package/out/zql/src/query/query-registry.js.map +1 -1
  999. package/out/zql/src/query/query-transitions.js +1 -1
  1000. package/out/zql/src/query/query-transitions.js.map +1 -1
  1001. package/out/zql/src/query/query.d.ts +2 -13
  1002. package/out/zql/src/query/query.d.ts.map +1 -1
  1003. package/out/zql/src/query/runnable-query-impl.d.ts +1 -19
  1004. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  1005. package/out/zql/src/query/runnable-query-impl.js +2 -1
  1006. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  1007. package/out/zql/src/query/static-query.js.map +1 -1
  1008. package/out/zql/src/query/ttl.d.ts +2 -3
  1009. package/out/zql/src/query/ttl.d.ts.map +1 -1
  1010. package/out/zql/src/query/ttl.js +8 -8
  1011. package/out/zql/src/query/ttl.js.map +1 -1
  1012. package/out/zql/src/query/validate-input.js.map +1 -1
  1013. package/out/zqlite/src/database-storage.js +195 -26
  1014. package/out/zqlite/src/database-storage.js.map +1 -1
  1015. package/out/zqlite/src/db.d.ts +47 -1
  1016. package/out/zqlite/src/db.d.ts.map +1 -1
  1017. package/out/zqlite/src/db.js +121 -21
  1018. package/out/zqlite/src/db.js.map +1 -1
  1019. package/out/zqlite/src/explain-queries.js.map +1 -1
  1020. package/out/zqlite/src/fetch-sql.d.ts +27 -0
  1021. package/out/zqlite/src/fetch-sql.d.ts.map +1 -0
  1022. package/out/zqlite/src/fetch-sql.js +112 -0
  1023. package/out/zqlite/src/fetch-sql.js.map +1 -0
  1024. package/out/zqlite/src/index-usage.js.map +1 -1
  1025. package/out/zqlite/src/internal/sql-inline.js.map +1 -1
  1026. package/out/zqlite/src/internal/sql.js.map +1 -1
  1027. package/out/zqlite/src/internal/statement-cache.d.ts +7 -0
  1028. package/out/zqlite/src/internal/statement-cache.d.ts.map +1 -1
  1029. package/out/zqlite/src/internal/statement-cache.js +11 -4
  1030. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1031. package/out/zqlite/src/mod.js +5 -5
  1032. package/out/zqlite/src/pending-delta.js.map +1 -1
  1033. package/out/zqlite/src/query-builder.d.ts +11 -3
  1034. package/out/zqlite/src/query-builder.d.ts.map +1 -1
  1035. package/out/zqlite/src/query-builder.js +22 -7
  1036. package/out/zqlite/src/query-builder.js.map +1 -1
  1037. package/out/zqlite/src/query-delegate.js.map +1 -1
  1038. package/out/zqlite/src/resolve-scalar-subqueries.js +2 -5
  1039. package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
  1040. package/out/zqlite/src/sqlite-cost-model.js +3 -2
  1041. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1042. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1043. package/out/zqlite/src/table-source.d.ts +20 -3
  1044. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1045. package/out/zqlite/src/table-source.js +74 -40
  1046. package/out/zqlite/src/table-source.js.map +1 -1
  1047. package/package.json +39 -39
  1048. package/out/analyze-query/src/bin-analyze.d.ts +0 -2
  1049. package/out/analyze-query/src/bin-analyze.d.ts.map +0 -1
  1050. package/out/analyze-query/src/bin-analyze.js +0 -283
  1051. package/out/analyze-query/src/bin-analyze.js.map +0 -1
  1052. package/out/otel/src/maybe-time.d.ts +0 -3
  1053. package/out/otel/src/maybe-time.d.ts.map +0 -1
  1054. package/out/otel/src/maybe-time.js +0 -15
  1055. package/out/otel/src/maybe-time.js.map +0 -1
  1056. package/out/shared/src/cache.d.ts +0 -22
  1057. package/out/shared/src/cache.d.ts.map +0 -1
  1058. package/out/shared/src/custom-key-map.d.ts +0 -26
  1059. package/out/shared/src/custom-key-map.d.ts.map +0 -1
  1060. package/out/shared/src/custom-key-set.d.ts +0 -25
  1061. package/out/shared/src/custom-key-set.d.ts.map +0 -1
  1062. package/out/shared/src/logging-test-utils.d.ts +0 -12
  1063. package/out/shared/src/logging-test-utils.d.ts.map +0 -1
  1064. package/out/shared/src/sorted-entries.d.ts +0 -2
  1065. package/out/shared/src/sorted-entries.d.ts.map +0 -1
  1066. package/out/zero/src/analyze-query.d.ts +0 -3
  1067. package/out/zero/src/analyze-query.d.ts.map +0 -1
  1068. package/out/zero/src/analyze-query.js +0 -3
  1069. package/out/zero/src/server/change-streamer.d.ts +0 -2
  1070. package/out/zero/src/server/change-streamer.d.ts.map +0 -1
  1071. package/out/zero/src/server/main.d.ts +0 -2
  1072. package/out/zero/src/server/main.d.ts.map +0 -1
  1073. package/out/zero/src/server/reaper.d.ts +0 -2
  1074. package/out/zero/src/server/reaper.d.ts.map +0 -1
  1075. package/out/zero/src/server/replicator.d.ts +0 -2
  1076. package/out/zero/src/server/replicator.d.ts.map +0 -1
  1077. package/out/zero/src/server/syncer.d.ts +0 -2
  1078. package/out/zero/src/server/syncer.d.ts.map +0 -1
  1079. package/out/zero-cache/src/auth/jwt.d.ts +0 -12
  1080. package/out/zero-cache/src/auth/jwt.d.ts.map +0 -1
  1081. package/out/zero-cache/src/auth/load-permissions.d.ts +0 -17
  1082. package/out/zero-cache/src/auth/load-permissions.d.ts.map +0 -1
  1083. package/out/zero-cache/src/auth/write-authorizer.d.ts +0 -28
  1084. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +0 -1
  1085. package/out/zero-cache/src/config/server-context.d.ts +0 -16
  1086. package/out/zero-cache/src/config/server-context.d.ts.map +0 -1
  1087. package/out/zero-cache/src/custom/fetch.d.ts +0 -38
  1088. package/out/zero-cache/src/custom/fetch.d.ts.map +0 -1
  1089. package/out/zero-cache/src/custom/metrics.d.ts +0 -31
  1090. package/out/zero-cache/src/custom/metrics.d.ts.map +0 -1
  1091. package/out/zero-cache/src/custom-queries/transform-query.d.ts +0 -68
  1092. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +0 -1
  1093. package/out/zero-cache/src/db/create.d.ts +0 -12
  1094. package/out/zero-cache/src/db/create.d.ts.map +0 -1
  1095. package/out/zero-cache/src/db/delete-lite-db.d.ts +0 -2
  1096. package/out/zero-cache/src/db/delete-lite-db.d.ts.map +0 -1
  1097. package/out/zero-cache/src/db/index-predicate.d.ts +0 -4
  1098. package/out/zero-cache/src/db/index-predicate.d.ts.map +0 -1
  1099. package/out/zero-cache/src/db/migration-lite.d.ts +0 -78
  1100. package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
  1101. package/out/zero-cache/src/db/migration.d.ts +0 -80
  1102. package/out/zero-cache/src/db/migration.d.ts.map +0 -1
  1103. package/out/zero-cache/src/db/pg-copy-binary.d.ts +0 -101
  1104. package/out/zero-cache/src/db/pg-copy-binary.d.ts.map +0 -1
  1105. package/out/zero-cache/src/db/pg-copy.d.ts +0 -30
  1106. package/out/zero-cache/src/db/pg-copy.d.ts.map +0 -1
  1107. package/out/zero-cache/src/db/pg-type-parser.d.ts +0 -15
  1108. package/out/zero-cache/src/db/pg-type-parser.d.ts.map +0 -1
  1109. package/out/zero-cache/src/db/transaction-pool.d.ts +0 -205
  1110. package/out/zero-cache/src/db/transaction-pool.d.ts.map +0 -1
  1111. package/out/zero-cache/src/db/warmup.d.ts +0 -4
  1112. package/out/zero-cache/src/db/warmup.d.ts.map +0 -1
  1113. package/out/zero-cache/src/observability/events.d.ts +0 -15
  1114. package/out/zero-cache/src/observability/events.d.ts.map +0 -1
  1115. package/out/zero-cache/src/observability/log-throttle.d.ts +0 -44
  1116. package/out/zero-cache/src/observability/log-throttle.d.ts.map +0 -1
  1117. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +0 -21
  1118. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +0 -1
  1119. package/out/zero-cache/src/server/change-streamer.d.ts +0 -3
  1120. package/out/zero-cache/src/server/change-streamer.d.ts.map +0 -1
  1121. package/out/zero-cache/src/server/inspector-delegate.d.ts +0 -71
  1122. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +0 -1
  1123. package/out/zero-cache/src/server/main.d.ts +0 -3
  1124. package/out/zero-cache/src/server/main.d.ts.map +0 -1
  1125. package/out/zero-cache/src/server/otel-diag-logger.d.ts +0 -16
  1126. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +0 -1
  1127. package/out/zero-cache/src/server/otel-start.d.ts +0 -3
  1128. package/out/zero-cache/src/server/otel-start.d.ts.map +0 -1
  1129. package/out/zero-cache/src/server/priority-op.d.ts +0 -8
  1130. package/out/zero-cache/src/server/priority-op.d.ts.map +0 -1
  1131. package/out/zero-cache/src/server/reaper.d.ts +0 -3
  1132. package/out/zero-cache/src/server/reaper.d.ts.map +0 -1
  1133. package/out/zero-cache/src/server/replicator.d.ts +0 -10
  1134. package/out/zero-cache/src/server/replicator.d.ts.map +0 -1
  1135. package/out/zero-cache/src/server/slot-keeper.d.ts +0 -26
  1136. package/out/zero-cache/src/server/slot-keeper.d.ts.map +0 -1
  1137. package/out/zero-cache/src/server/syncer.d.ts +0 -3
  1138. package/out/zero-cache/src/server/syncer.d.ts.map +0 -1
  1139. package/out/zero-cache/src/services/analyze.d.ts +0 -9
  1140. package/out/zero-cache/src/services/analyze.d.ts.map +0 -1
  1141. package/out/zero-cache/src/services/change-source/change-source.d.ts +0 -32
  1142. package/out/zero-cache/src/services/change-source/change-source.d.ts.map +0 -1
  1143. package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts +0 -57
  1144. package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts.map +0 -1
  1145. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts +0 -55
  1146. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts.map +0 -1
  1147. package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts +0 -24
  1148. package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts.map +0 -1
  1149. package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts +0 -115
  1150. package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts.map +0 -1
  1151. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +0 -14
  1152. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +0 -1
  1153. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +0 -25
  1154. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +0 -1
  1155. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts +0 -14
  1156. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts.map +0 -1
  1157. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts +0 -36
  1158. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +0 -1
  1159. package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts +0 -65
  1160. package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts.map +0 -1
  1161. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -115
  1162. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +0 -1
  1163. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +0 -155
  1164. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +0 -1
  1165. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +0 -17
  1166. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +0 -1
  1167. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts +0 -28
  1168. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts.map +0 -1
  1169. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts +0 -76
  1170. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts.map +0 -1
  1171. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts +0 -169
  1172. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +0 -1
  1173. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts +0 -16
  1174. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts.map +0 -1
  1175. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts +0 -15
  1176. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts.map +0 -1
  1177. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +0 -127
  1178. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +0 -1
  1179. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +0 -9
  1180. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +0 -1
  1181. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts +0 -68
  1182. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts.map +0 -1
  1183. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts +0 -72
  1184. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts.map +0 -1
  1185. package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts +0 -50
  1186. package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts.map +0 -1
  1187. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts +0 -14
  1188. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts.map +0 -1
  1189. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +0 -18
  1190. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +0 -1
  1191. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +0 -98
  1192. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +0 -1
  1193. package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts +0 -34
  1194. package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts.map +0 -1
  1195. package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts +0 -34
  1196. package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts.map +0 -1
  1197. package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts +0 -158
  1198. package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts.map +0 -1
  1199. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts +0 -19
  1200. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts.map +0 -1
  1201. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -78
  1202. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +0 -1
  1203. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -143
  1204. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +0 -1
  1205. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +0 -586
  1206. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +0 -1
  1207. package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts +0 -24
  1208. package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts.map +0 -1
  1209. package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts +0 -15
  1210. package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts.map +0 -1
  1211. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +0 -49
  1212. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +0 -1
  1213. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts +0 -53
  1214. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts.map +0 -1
  1215. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts +0 -88
  1216. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts.map +0 -1
  1217. package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts +0 -15
  1218. package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts.map +0 -1
  1219. package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts +0 -243
  1220. package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts.map +0 -1
  1221. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +0 -6
  1222. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +0 -1
  1223. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +0 -152
  1224. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +0 -1
  1225. package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts +0 -11
  1226. package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts.map +0 -1
  1227. package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts +0 -92
  1228. package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts.map +0 -1
  1229. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts +0 -36
  1230. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts.map +0 -1
  1231. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +0 -22
  1232. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +0 -1
  1233. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts +0 -99
  1234. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts.map +0 -1
  1235. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts +0 -83
  1236. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts.map +0 -1
  1237. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts +0 -121
  1238. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts.map +0 -1
  1239. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts +0 -73
  1240. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts.map +0 -1
  1241. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts +0 -62
  1242. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts.map +0 -1
  1243. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts +0 -114
  1244. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts.map +0 -1
  1245. package/out/zero-cache/src/services/change-streamer/storer.d.ts +0 -276
  1246. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +0 -1
  1247. package/out/zero-cache/src/services/change-streamer/subscribe.d.ts +0 -485
  1248. package/out/zero-cache/src/services/change-streamer/subscribe.d.ts.map +0 -1
  1249. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +0 -194
  1250. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +0 -1
  1251. package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts +0 -52
  1252. package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts.map +0 -1
  1253. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +0 -57
  1254. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +0 -1
  1255. package/out/zero-cache/src/services/litestream/commands.d.ts +0 -77
  1256. package/out/zero-cache/src/services/litestream/commands.d.ts.map +0 -1
  1257. package/out/zero-cache/src/services/litestream/litestream-controller.d.ts +0 -78
  1258. package/out/zero-cache/src/services/litestream/litestream-controller.d.ts.map +0 -1
  1259. package/out/zero-cache/src/services/litestream/metrics.d.ts +0 -31
  1260. package/out/zero-cache/src/services/litestream/metrics.d.ts.map +0 -1
  1261. package/out/zero-cache/src/services/litestream/restore-progress.d.ts +0 -24
  1262. package/out/zero-cache/src/services/litestream/restore-progress.d.ts.map +0 -1
  1263. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +0 -40
  1264. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +0 -1
  1265. package/out/zero-cache/src/services/mutagen/pusher.d.ts +0 -63
  1266. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +0 -1
  1267. package/out/zero-cache/src/services/replicator/change-log-db.d.ts +0 -368
  1268. package/out/zero-cache/src/services/replicator/change-log-db.d.ts.map +0 -1
  1269. package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts +0 -56
  1270. package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts.map +0 -1
  1271. package/out/zero-cache/src/services/replicator/change-processor.d.ts +0 -37
  1272. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +0 -1
  1273. package/out/zero-cache/src/services/replicator/drain-handler.d.ts +0 -82
  1274. package/out/zero-cache/src/services/replicator/drain-handler.d.ts.map +0 -1
  1275. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +0 -25
  1276. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +0 -1
  1277. package/out/zero-cache/src/services/replicator/notifier.d.ts +0 -9
  1278. package/out/zero-cache/src/services/replicator/notifier.d.ts.map +0 -1
  1279. package/out/zero-cache/src/services/replicator/replication-status.d.ts +0 -71
  1280. package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +0 -1
  1281. package/out/zero-cache/src/services/replicator/replicator.d.ts +0 -86
  1282. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +0 -1
  1283. package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts +0 -55
  1284. package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts.map +0 -1
  1285. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts +0 -132
  1286. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts.map +0 -1
  1287. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts +0 -120
  1288. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts.map +0 -1
  1289. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +0 -111
  1290. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +0 -1
  1291. package/out/zero-cache/src/services/run-ast.d.ts +0 -39
  1292. package/out/zero-cache/src/services/run-ast.d.ts.map +0 -1
  1293. package/out/zero-cache/src/services/runner.d.ts +0 -19
  1294. package/out/zero-cache/src/services/runner.d.ts.map +0 -1
  1295. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +0 -17
  1296. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +0 -1
  1297. package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts +0 -26
  1298. package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts.map +0 -1
  1299. package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts +0 -79
  1300. package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts.map +0 -1
  1301. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +0 -79
  1302. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +0 -1
  1303. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts +0 -5
  1304. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +0 -1
  1305. package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts +0 -184
  1306. package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts.map +0 -1
  1307. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +0 -22
  1308. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +0 -1
  1309. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +0 -128
  1310. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +0 -1
  1311. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -294
  1312. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +0 -1
  1313. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts +0 -81
  1314. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts.map +0 -1
  1315. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +0 -45
  1316. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +0 -1
  1317. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts +0 -53
  1318. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts.map +0 -1
  1319. package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts +0 -33
  1320. package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts.map +0 -1
  1321. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts +0 -51
  1322. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts.map +0 -1
  1323. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +0 -34
  1324. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +0 -1
  1325. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -296
  1326. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +0 -1
  1327. package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts +0 -7
  1328. package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts.map +0 -1
  1329. package/out/zero-cache/src/services/view-syncer/push-cost.d.ts +0 -132
  1330. package/out/zero-cache/src/services/view-syncer/push-cost.d.ts.map +0 -1
  1331. package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts +0 -55
  1332. package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts.map +0 -1
  1333. package/out/zero-cache/src/services/view-syncer/query-covering.d.ts +0 -28
  1334. package/out/zero-cache/src/services/view-syncer/query-covering.d.ts.map +0 -1
  1335. package/out/zero-cache/src/services/view-syncer/query-shape.d.ts +0 -25
  1336. package/out/zero-cache/src/services/view-syncer/query-shape.d.ts.map +0 -1
  1337. package/out/zero-cache/src/services/view-syncer/query-stats.d.ts +0 -89
  1338. package/out/zero-cache/src/services/view-syncer/query-stats.d.ts.map +0 -1
  1339. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +0 -90
  1340. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +0 -1
  1341. package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts +0 -17
  1342. package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts.map +0 -1
  1343. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +0 -86
  1344. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +0 -1
  1345. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +0 -5
  1346. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +0 -1
  1347. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +0 -563
  1348. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +0 -1
  1349. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts +0 -95
  1350. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts.map +0 -1
  1351. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +0 -412
  1352. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +0 -1
  1353. package/out/zero-cache/src/services/view-syncer/tracer.d.ts +0 -2
  1354. package/out/zero-cache/src/services/view-syncer/tracer.d.ts.map +0 -1
  1355. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +0 -10
  1356. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +0 -1
  1357. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +0 -133
  1358. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +0 -1
  1359. package/out/zero-cache/src/types/pg-patch.d.ts +0 -21
  1360. package/out/zero-cache/src/types/pg-patch.d.ts.map +0 -1
  1361. package/out/zero-cache/src/types/pg-versions.d.ts +0 -3
  1362. package/out/zero-cache/src/types/pg-versions.d.ts.map +0 -1
  1363. package/out/zero-cache/src/workers/replicator.d.ts +0 -57
  1364. package/out/zero-cache/src/workers/replicator.d.ts.map +0 -1
  1365. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts +0 -14
  1366. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +0 -1
  1367. package/out/zero-cache/src/workers/syncer.d.ts +0 -67
  1368. package/out/zero-cache/src/workers/syncer.d.ts.map +0 -1
  1369. package/out/zero-events/src/index.d.ts +0 -27
  1370. package/out/zero-events/src/index.d.ts.map +0 -1
  1371. package/out/zero-events/src/json.d.ts +0 -20
  1372. package/out/zero-events/src/json.d.ts.map +0 -1
  1373. package/out/zero-events/src/status.d.ts +0 -144
  1374. package/out/zero-events/src/status.d.ts.map +0 -1
  1375. package/out/zqlite/src/database-storage.d.ts +0 -24
  1376. package/out/zqlite/src/database-storage.d.ts.map +0 -1
  1377. package/out/zqlite/src/explain-queries.d.ts +0 -4
  1378. package/out/zqlite/src/explain-queries.d.ts.map +0 -1
  1379. package/out/zqlite/src/internal/sql-inline.d.ts +0 -13
  1380. package/out/zqlite/src/internal/sql-inline.d.ts.map +0 -1
  1381. package/out/zqlite/src/resolve-scalar-subqueries.d.ts +0 -72
  1382. package/out/zqlite/src/resolve-scalar-subqueries.d.ts.map +0 -1
  1383. package/out/zqlite/src/sqlite-cost-model.d.ts +0 -17
  1384. package/out/zqlite/src/sqlite-cost-model.d.ts.map +0 -1
  1385. package/out/zqlite/src/sqlite-stat-fanout.d.ts +0 -121
  1386. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ast.js","names":[],"sources":["../../../../zero-protocol/src/ast.ts"],"sourcesContent":["/**\n * Wire-format representation of the zql AST interface.\n *\n * `v.Type<...>` types are explicitly declared to facilitate Typescript verification\n * that the schemas satisfy the zql type definitions. (Incidentally, explicit types\n * are also required for recursive schema definitions.)\n */\n\nimport {compareUTF8} from 'compare-utf8';\nimport {assert} from '../../shared/src/asserts.ts';\nimport {isPlainObject} from '../../shared/src/deep-merge.ts';\nimport {getOrInsertComputed} from '../../shared/src/map.ts';\nimport {must} from '../../shared/src/must.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport type {NameMapper} from '../../zero-types/src/name-mapper.ts';\nimport {rowSchema, type Row} from './data.ts';\n\nexport const SUBQ_PREFIX = 'zsubq_';\n\nexport const selectorSchema = v.string();\nexport const toStaticParam = Symbol();\nexport const planIdSymbol = Symbol('planId');\n\nconst orderingElementSchema = v.readonly(\n v.tuple([selectorSchema, v.literalUnion('asc', 'desc')]),\n);\n\nexport const orderingSchema = v.readonlyArray(orderingElementSchema);\nexport type System = 'permissions' | 'client' | 'test';\n\nexport const primitiveSchema = v.union(\n v.string(),\n v.number(),\n v.boolean(),\n v.null(),\n);\n\nexport const equalityOpsSchema = v.literalUnion('=', '!=', 'IS', 'IS NOT');\n\nexport const orderOpsSchema = v.literalUnion('<', '>', '<=', '>=');\n\nexport const likeOpsSchema = v.literalUnion(\n 'LIKE',\n 'NOT LIKE',\n 'ILIKE',\n 'NOT ILIKE',\n);\n\nexport const inOpsSchema = v.literalUnion('IN', 'NOT IN');\n\nexport const simpleOperatorSchema = v.union(\n equalityOpsSchema,\n orderOpsSchema,\n likeOpsSchema,\n inOpsSchema,\n);\n\nconst literalReferenceSchema: v.Type<LiteralReference> = v.readonlyObject({\n type: v.literal('literal'),\n value: v.union(\n v.string(),\n v.number(),\n v.boolean(),\n v.null(),\n v.readonlyArray(v.union(v.string(), v.number(), v.boolean())),\n ),\n});\nconst columnReferenceSchema: v.Type<ColumnReference> = v.readonlyObject({\n type: v.literal('column'),\n name: v.string(),\n});\n\n/**\n * A parameter is a value that is not known at the time the query is written\n * and is resolved at runtime.\n *\n * Static parameters refer to something provided by the caller.\n * Static parameters are injected when the query pipeline is built from the AST\n * and do not change for the life of that pipeline.\n *\n * An example static parameter is the current authentication data.\n * When a user is authenticated, queries on the server have access\n * to the user's authentication data in order to evaluate authorization rules.\n * Authentication data doesn't change over the life of a query as a change\n * in auth data would represent a log-in / log-out of the user.\n *\n * AncestorParameters refer to rows encountered while running the query.\n * They are used by subqueries to refer to rows emitted by parent queries.\n */\nconst parameterReferenceSchema = v.readonlyObject({\n type: v.literal('static'),\n // The \"namespace\" of the injected parameter.\n // Write authorization will send the value of a row\n // prior to the mutation being run (preMutationRow).\n // Read and write authorization will both send the\n // current authentication data (authData).\n anchor: v.literalUnion('authData', 'preMutationRow'),\n field: v.union(v.string(), v.array(v.string())),\n});\n\nconst conditionValueSchema = v.union(\n literalReferenceSchema,\n columnReferenceSchema,\n parameterReferenceSchema,\n);\n\nexport type Parameter = v.Infer<typeof parameterReferenceSchema>;\n\nexport const simpleConditionSchema: v.Type<SimpleCondition> = v.readonlyObject({\n type: v.literal('simple'),\n op: simpleOperatorSchema,\n left: conditionValueSchema,\n right: v.union(parameterReferenceSchema, literalReferenceSchema),\n});\n\ntype ConditionValue = v.Infer<typeof conditionValueSchema>;\n\nexport const correlatedSubqueryConditionOperatorSchema: v.Type<CorrelatedSubqueryConditionOperator> =\n v.literalUnion('EXISTS', 'NOT EXISTS');\n\nexport const correlatedSubqueryConditionSchema: v.Type<CorrelatedSubqueryCondition> =\n v.readonlyObject({\n type: v.literal('correlatedSubquery'),\n related: v.lazy(() => correlatedSubquerySchema),\n op: correlatedSubqueryConditionOperatorSchema,\n flip: v.boolean().optional(),\n scalar: v.boolean().optional(),\n });\n\nexport const conditionSchema: v.Type<Condition> = v.union(\n simpleConditionSchema,\n v.lazy(() => conjunctionSchema),\n v.lazy(() => disjunctionSchema),\n correlatedSubqueryConditionSchema,\n);\n\nconst conjunctionSchema: v.Type<Conjunction> = v.readonlyObject({\n type: v.literal('and'),\n conditions: v.readonlyArray(conditionSchema),\n});\n\nconst disjunctionSchema: v.Type<Disjunction> = v.readonlyObject({\n type: v.literal('or'),\n conditions: v.readonlyArray(conditionSchema),\n});\n\nexport type CompoundKey = readonly [string, ...string[]];\n\nfunction mustCompoundKey(field: readonly string[]): CompoundKey {\n assert(\n Array.isArray(field) && field.length >= 1,\n 'Expected non-empty array for compound key',\n );\n return field as unknown as CompoundKey;\n}\n\nexport const compoundKeySchema: v.Type<CompoundKey> = v.readonly(\n // oxlint-disable-next-line e18e/prefer-spread-syntax\n v.tuple([v.string()]).concat(v.array(v.string())),\n);\n\nconst correlationSchema = v.readonlyObject({\n parentField: compoundKeySchema,\n childField: compoundKeySchema,\n});\n\n// Split out so that its inferred type can be checked against\n// Omit<CorrelatedSubquery, 'correlation'> in ast-type-test.ts.\n// The mutually-recursive reference of the 'other' field to astSchema\n// is the only thing added in v.lazy. The v.lazy is necessary due to the\n// mutually-recursive types, but v.lazy prevents inference of the resulting\n// type.\nexport const correlatedSubquerySchemaOmitSubquery = v.readonlyObject({\n correlation: correlationSchema,\n hidden: v.boolean().optional(),\n system: v.literalUnion('permissions', 'client', 'test').optional(),\n});\n\nexport const correlatedSubquerySchema: v.Type<CorrelatedSubquery> =\n correlatedSubquerySchemaOmitSubquery.extend({\n subquery: v.lazy(() => astSchema),\n });\n\nexport const astSchema: v.Type<AST> = v.readonlyObject({\n schema: v.string().optional(),\n table: v.string(),\n alias: v.string().optional(),\n where: conditionSchema.optional(),\n related: v.readonlyArray(correlatedSubquerySchema).optional(),\n limit: v.number().optional(),\n orderBy: orderingSchema.optional(),\n start: v\n .object({\n row: rowSchema,\n exclusive: v.boolean(),\n })\n .optional(),\n});\n\n/**\n * The maximum nesting depth of an AST sent by a client, counting and/or\n * conditions, correlated subqueries and related subqueries. Parsing and the\n * AST visitors in zero-cache are recursive, so a single deeply nested AST can\n * otherwise overflow the stack or burn seconds of CPU. Realistic queries,\n * permission rules included, are less than 10 levels deep.\n */\nexport const MAX_AST_DEPTH = 50;\n\n/**\n * Returns whether the unparsed `ast` is nested deeper than `maxDepth`.\n */\nexport function exceedsASTDepth(\n ast: unknown,\n maxDepth = MAX_AST_DEPTH,\n): boolean {\n return astExceedsDepth(ast, 0, maxDepth);\n}\n\n// Every step down increases the depth, except the one from an AST into its\n// where clause, so the recursion stops within 2 * maxDepth steps and cannot\n// overflow the stack.\nfunction astExceedsDepth(\n ast: unknown,\n depth: number,\n maxDepth: number,\n): boolean {\n if (depth > maxDepth) {\n return true;\n }\n if (!isPlainObject(ast)) {\n return false;\n }\n const {where, related} = ast;\n return (\n conditionExceedsDepth(where, depth, maxDepth) ||\n (Array.isArray(related) &&\n related.some(\n r =>\n isPlainObject(r) && astExceedsDepth(r.subquery, depth + 1, maxDepth),\n ))\n );\n}\n\nfunction conditionExceedsDepth(\n cond: unknown,\n depth: number,\n maxDepth: number,\n): boolean {\n if (depth > maxDepth) {\n return true;\n }\n if (!isPlainObject(cond)) {\n return false;\n }\n const {conditions, related} = cond;\n return (\n (Array.isArray(conditions) &&\n conditions.some(c => conditionExceedsDepth(c, depth + 1, maxDepth))) ||\n (isPlainObject(related) &&\n astExceedsDepth(related.subquery, depth + 1, maxDepth))\n );\n}\n\n/**\n * {@link astSchema} for ASTs sent by clients, which rejects ASTs nested deeper\n * than {@link MAX_AST_DEPTH} before parsing them. ASTs the server stored itself\n * (e.g. in the CVR) are parsed with {@link astSchema} so that ones stored\n * before the limit existed can still be read.\n */\nexport const depthBoundedAstSchema: v.Type<AST> = Object.assign(\n v\n .unknown()\n .chain((value, options) =>\n exceedsASTDepth(value)\n ? v.err(`AST exceeds the maximum depth of ${MAX_AST_DEPTH}`)\n : astSchema.try(value, options),\n ),\n // A transform serializes as just its name. Show astSchema too, so a change\n // to it still changes the hash in protocol-version.test.ts.\n {depthBounded: astSchema},\n);\n\n/**\n * {@link depthBoundedAstSchema} parsed strictly even inside a lenient parse. A\n * server that ignored an AST field it doesn't know would run a different query.\n */\nexport const strictASTSchema: v.Type<AST> = v.strict(depthBoundedAstSchema);\n\nexport type Bound = {\n row: Row;\n exclusive: boolean;\n};\n\n/**\n * As in SQL you can have multiple orderings. We don't currently\n * support ordering on anything other than the root query.\n */\nexport type OrderPart = readonly [field: string, direction: 'asc' | 'desc'];\nexport type Ordering = readonly OrderPart[];\n\nexport type SimpleOperator = EqualityOps | OrderOps | LikeOps | InOps;\nexport type EqualityOps = '=' | '!=' | 'IS' | 'IS NOT';\nexport type OrderOps = '<' | '>' | '<=' | '>=';\nexport type LikeOps = 'LIKE' | 'NOT LIKE' | 'ILIKE' | 'NOT ILIKE';\nexport type InOps = 'IN' | 'NOT IN';\n\nexport type AST = {\n readonly schema?: string | undefined;\n readonly table: string;\n\n // A query would be aliased if the AST is a subquery.\n // e.g., when two subqueries select from the same table\n // they need an alias to differentiate them.\n // `SELECT\n // [SELECT * FROM issue WHERE issue.id = outer.parentId] AS parent\n // [SELECT * FROM issue WHERE issue.parentId = outer.id] AS children\n // FROM issue as outer`\n readonly alias?: string | undefined;\n\n // `select` is missing given we return all columns for now.\n\n // The PipelineBuilder will pick what to use to correlate\n // a subquery with a parent query. It can choose something from the\n // where conditions or choose the _first_ `related` entry.\n // Choosing the first `related` entry is almost always the best choice if\n // one exists.\n readonly where?: Condition | undefined;\n\n readonly related?: readonly CorrelatedSubquery[] | undefined;\n readonly start?: Bound | undefined;\n readonly limit?: number | undefined;\n readonly orderBy?: Ordering | undefined;\n};\n\nexport type Correlation = {\n readonly parentField: CompoundKey;\n readonly childField: CompoundKey;\n};\n\nexport type CorrelatedSubquery = {\n /**\n * Only equality correlation are supported for now.\n * E.g., direct foreign key relationships.\n */\n readonly correlation: Correlation;\n readonly subquery: AST;\n readonly system?: System | undefined;\n // If a hop in the subquery chain should be hidden from the output view.\n // A common example is junction edges. The query API provides the illusion\n // that they don't exist: `issue.related('labels')` instead of `issue.related('issue_labels').related('labels')`.\n // To maintain this illusion, the junction edge should be hidden.\n // When `hidden` is set to true, this hop will not be included in the output view\n // but its children will be.\n readonly hidden?: boolean | undefined;\n};\n\nexport type ValuePosition = LiteralReference | Parameter | ColumnReference;\n\nexport type ColumnReference = {\n readonly type: 'column';\n /**\n * Not a path yet as we're currently not allowing\n * comparisons across tables. This will need to\n * be a path through the tree in the near future.\n */\n readonly name: string;\n};\n\nexport type LiteralReference = {\n readonly type: 'literal';\n readonly value: LiteralValue;\n};\n\nexport type LiteralValue =\n | string\n | number\n | boolean\n | null\n | ReadonlyArray<string | number | boolean>;\n\n/**\n * Starting only with SimpleCondition for now.\n * ivm1 supports Conjunctions and Disjunctions.\n * We'll support them in the future.\n */\nexport type Condition =\n | SimpleCondition\n | Conjunction\n | Disjunction\n | CorrelatedSubqueryCondition;\n\nexport type SimpleCondition = {\n readonly type: 'simple';\n readonly op: SimpleOperator;\n readonly left: ValuePosition;\n\n /**\n * `null` is absent since we do not have an `IS` or `IS NOT`\n * operator defined and `null != null` in SQL.\n */\n readonly right: Exclude<ValuePosition, ColumnReference>;\n};\n\nexport type Conjunction = {\n type: 'and';\n conditions: readonly Condition[];\n};\n\nexport type Disjunction = {\n type: 'or';\n conditions: readonly Condition[];\n};\n\nexport type CorrelatedSubqueryCondition = {\n type: 'correlatedSubquery';\n related: CorrelatedSubquery;\n op: CorrelatedSubqueryConditionOperator;\n flip?: boolean | undefined;\n scalar?: boolean | undefined;\n [planIdSymbol]?: number | undefined;\n};\n\nexport type CorrelatedSubqueryConditionOperator = 'EXISTS' | 'NOT EXISTS';\n\ninterface ASTTransform {\n tableName(orig: string): string;\n columnName(origTable: string, origColumn: string): string;\n}\n\nfunction transformAST(ast: AST, transform: ASTTransform): Required<AST> {\n // Name mapping functions (e.g. to server names)\n const {tableName, columnName} = transform;\n const colName = (c: string) => columnName(ast.table, c);\n const key = (table: string, k: CompoundKey) => {\n const serverKey = k.map(col => columnName(table, col));\n return mustCompoundKey(serverKey);\n };\n\n const transformed = {\n schema: ast.schema,\n table: tableName(ast.table),\n alias: ast.alias,\n where: ast.where\n ? transformWhere(ast.where, ast.table, transform)\n : undefined,\n related: ast.related?.map(\n r =>\n ({\n correlation: {\n parentField: key(ast.table, r.correlation.parentField),\n childField: key(r.subquery.table, r.correlation.childField),\n },\n hidden: r.hidden,\n subquery: transformAST(r.subquery, transform),\n system: r.system,\n }) satisfies Required<CorrelatedSubquery>,\n ),\n start: ast.start\n ? {\n ...ast.start,\n row: Object.fromEntries(\n Object.entries(ast.start.row).map(([col, val]) => [\n colName(col),\n val,\n ]),\n ),\n }\n : undefined,\n limit: ast.limit,\n orderBy: ast.orderBy?.map(([col, dir]) => [colName(col), dir] as const),\n };\n\n return transformed;\n}\n\nfunction transformWhere(\n where: Condition,\n table: string,\n transform: ASTTransform,\n): Condition {\n // Name mapping functions (e.g. to server names)\n const {columnName} = transform;\n const condValue = (c: ConditionValue) =>\n c.type !== 'column' ? c : {...c, name: columnName(table, c.name)};\n const key = (table: string, k: CompoundKey) => {\n const serverKey = k.map(col => columnName(table, col));\n return mustCompoundKey(serverKey);\n };\n\n if (where.type === 'simple') {\n return {...where, left: condValue(where.left)};\n } else if (where.type === 'correlatedSubquery') {\n const {correlation, subquery} = where.related;\n return {\n ...where,\n related: {\n ...where.related,\n correlation: {\n parentField: key(table, correlation.parentField),\n childField: key(subquery.table, correlation.childField),\n },\n subquery: transformAST(subquery, transform),\n },\n };\n }\n\n return {\n type: where.type,\n conditions: where.conditions.map(c => transformWhere(c, table, transform)),\n };\n}\n\ndeclare const normalizedTag: unique symbol;\n\n/**\n * An {@link AST} in its normalized form: `related` is sorted, `where` is\n * flattened and sorted, and every field is present, in a fixed order. Two ASTs\n * that describe the same query have the same JSON encoding, and thus the same\n * hash, once normalized.\n *\n * The tag only exists in the type, so the only way to get one is from\n * {@link normalizeAST}, {@link normalizedAST} or {@link tableAST}. Spreading\n * one keeps the tag, which is what lets a query builder derive a normalized\n * AST from another one by replacing a field it knows to be safe.\n */\nexport type NormalizedAST = Required<AST> & {readonly [normalizedTag]: true};\n\nfunction asNormalized(ast: Required<AST>): NormalizedAST {\n return ast as NormalizedAST;\n}\n\nconst normalizeCache = new WeakMap<AST, NormalizedAST>();\n\nexport function normalizeAST(ast: AST): NormalizedAST {\n return getOrInsertComputed(normalizeCache, ast, normalizeASTUncached);\n}\n\nfunction normalizeASTUncached(ast: AST): NormalizedAST {\n // normalizedAST() normalizes a single level, so normalize the subqueries\n // first.\n const {where, related} = ast;\n return normalizedAST({\n ...ast,\n where: where && normalizeSubqueries(where),\n related: related?.map(r =>\n normalizedRelated({...r, subquery: normalizeAST(r.subquery)}),\n ),\n });\n}\n\n/**\n * Normalizes the ASTs of the correlated subqueries of `cond`. The condition\n * itself is normalized by {@link normalizeCondition}.\n */\nfunction normalizeSubqueries(cond: Condition): Condition {\n switch (cond.type) {\n case 'simple':\n return cond;\n case 'correlatedSubquery':\n return {\n ...cond,\n related: {\n ...cond.related,\n subquery: normalizeAST(cond.related.subquery),\n },\n };\n default:\n return {\n type: cond.type,\n conditions: cond.conditions.map(normalizeSubqueries),\n };\n }\n}\n\n/**\n * Normalizes a single level of an AST, assuming that the ASTs of its\n * subqueries (i.e. those in `related` and in correlated subquery conditions)\n * are already normalized and that the `related` entries have the shape that\n * {@link normalizedRelated} gives them.\n *\n * This lets a query builder keep its AST normalized as it builds it up\n * instead of normalizing the whole tree afterwards. A builder that knows\n * which of the rules a step can break at all is better off applying just\n * those (see {@link tableAST}, {@link insertRelated} and\n * {@link normalizeCondition}).\n */\nexport function normalizedAST(ast: AST): NormalizedAST {\n const {schema, table, alias, where, related, start, limit, orderBy} = ast;\n // Every field is written, in the same order, so that all normalized ASTs\n // have the same shape (one hidden class) and the same JSON encoding (and\n // thus the same hash) no matter how they were put together. The fields that\n // are undefined are dropped by JSON.stringify() anyway.\n return asNormalized({\n schema,\n table,\n alias,\n where: where === undefined ? undefined : normalizeCondition(where),\n related: related === undefined ? undefined : normalizeRelated(related),\n start,\n limit,\n orderBy,\n });\n}\n\n/**\n * The normalized AST that selects a whole table. Spreading it (or any other\n * normalized AST) and replacing a field keeps the field order, since a\n * normalized AST has every field.\n */\nexport function tableAST(\n table: string,\n alias?: string | undefined,\n): NormalizedAST {\n return asNormalized({\n schema: undefined,\n table,\n alias,\n where: undefined,\n related: undefined,\n start: undefined,\n limit: undefined,\n orderBy: undefined,\n });\n}\n\n/**\n * Adds `subquery` to the `related` of a normalized AST, at the position that\n * keeps it sorted.\n */\nexport function insertRelated(\n related: readonly CorrelatedSubquery[] | undefined,\n subquery: CorrelatedSubquery,\n): readonly CorrelatedSubquery[] {\n const normalized = normalizedRelated(subquery);\n if (related === undefined) {\n return [normalized];\n }\n // Sorting is stable, so an entry goes after the ones it compares equal to.\n let i = related.length;\n while (i > 0 && cmpRelated(related[i - 1], normalized) > 0) {\n i--;\n }\n return related.toSpliced(i, 0, normalized);\n}\n\n// Conjunctions and disjunctions that are known to be normalized. The query\n// builder rebuilds its AST for every step, so this keeps the conditions that\n// did not change from being normalized over and over again.\nconst normalizedConditions = new WeakSet<Condition>();\n\nfunction normalizeRelated(\n related: readonly CorrelatedSubquery[],\n): readonly CorrelatedSubquery[] {\n for (let i = 1; i < related.length; i++) {\n if (cmpRelated(related[i - 1], related[i]) > 0) {\n return related.toSorted(cmpRelated);\n }\n }\n return related;\n}\n\n/**\n * Gives a correlated subquery the shape that a normalized AST has: every\n * field, in a fixed order (see {@link normalizedAST}). Its `subquery` must\n * already be normalized.\n */\nexport function normalizedRelated(\n related: CorrelatedSubquery,\n): Required<CorrelatedSubquery> {\n const {correlation, hidden, subquery, system} = related;\n return {\n correlation: {\n parentField: correlation.parentField,\n childField: correlation.childField,\n },\n hidden,\n subquery,\n system,\n };\n}\n\nfunction normalizeValuePosition<T extends ValuePosition>(v: T): T {\n switch (v.type) {\n case 'literal':\n return {type: 'literal', value: v.value} as T;\n case 'column':\n return {type: 'column', name: v.name} as T;\n default:\n return {type: 'static', anchor: v.anchor, field: v.field} as T;\n }\n}\n\n/**\n * Normalizes a condition, assuming that the ASTs of any correlated subqueries\n * it contains are already normalized.\n *\n * Like {@link normalizedAST}, this rebuilds every node with its fields in a\n * fixed order, so that structurally equal conditions have the same JSON\n * encoding (and thus the same hash) no matter how they were put together.\n * That includes a round trip through Postgres, whose jsonb type reorders\n * object keys: without the rebuild, every query record reloaded from the CVR\n * re-hashed to a different transformationHash than was stored, making it look\n * changed and re-execute on every view-syncer restart.\n */\nexport function normalizeCondition(cond: Condition): Condition {\n if (normalizedConditions.has(cond)) {\n return cond;\n }\n if (cond.type === 'simple') {\n const normalized: Condition = {\n type: 'simple',\n op: cond.op,\n left: normalizeValuePosition(cond.left),\n right: normalizeValuePosition(cond.right),\n };\n normalizedConditions.add(normalized);\n return normalized;\n }\n if (cond.type === 'correlatedSubquery') {\n const normalized: Condition = {\n type: 'correlatedSubquery',\n related: normalizedRelated(cond.related),\n op: cond.op,\n flip: cond.flip,\n scalar: cond.scalar,\n };\n normalizedConditions.add(normalized);\n return normalized;\n }\n\n // Flatten the conditions of nested conjunctions of the same type and sort\n // them. The nested conditions are normalized (and thus flattened and sorted)\n // first.\n const conditions: Condition[] = [];\n for (const c of cond.conditions) {\n const n = normalizeCondition(c);\n if (n.type === cond.type) {\n conditions.push(...n.conditions);\n } else {\n conditions.push(n);\n }\n }\n\n // A singleton conjunction is the same as the condition itself. Empty\n // conjunctions, on the other hand, are meaningful: an empty 'and' is always\n // true and an empty 'or' is always false.\n if (conditions.length === 1) {\n return conditions[0];\n }\n conditions.sort(cmpCondition);\n const normalized: Condition = {type: cond.type, conditions};\n normalizedConditions.add(normalized);\n return normalized;\n}\n\n/**\n * Maps the table and column names of `ast`. The result is not a\n * {@link NormalizedAST} even if `ast` was normalized: the names it sorts by\n * are the ones that changed.\n */\nexport function mapAST(ast: AST, mapper: NameMapper) {\n return transformAST(ast, {\n tableName: table => mapper.tableName(table),\n columnName: (table, col) => mapper.columnName(table, col),\n });\n}\n\nexport function mapCondition(\n cond: Condition,\n table: string,\n mapper: NameMapper,\n) {\n return transformWhere(cond, table, {\n tableName: table => mapper.tableName(table),\n columnName: (table, col) => mapper.columnName(table, col),\n });\n}\n\nfunction cmpCondition(a: Condition, b: Condition): number {\n if (a.type === 'simple') {\n if (b.type !== 'simple') {\n return -1; // Order SimpleConditions first\n }\n\n return (\n compareValuePosition(a.left, b.left) ||\n compareUTF8MaybeNull(a.op, b.op) ||\n compareValuePosition(a.right, b.right)\n );\n }\n\n if (b.type === 'simple') {\n return 1; // Order SimpleConditions first\n }\n\n if (a.type === 'correlatedSubquery') {\n if (b.type !== 'correlatedSubquery') {\n return -1; // Order subquery before conjuctions/disjuctions\n }\n return (\n cmpRelated(a.related, b.related) ||\n compareUTF8MaybeNull(a.op, b.op) ||\n cmpOptionalBool(a.flip, b.flip) ||\n cmpOptionalBool(a.scalar, b.scalar)\n );\n }\n if (b.type === 'correlatedSubquery') {\n return -1; // Order correlatedSubquery before conjuctions/disjuctions\n }\n\n const val = compareUTF8MaybeNull(a.type, b.type);\n if (val !== 0) {\n return val;\n }\n for (\n let l = 0, r = 0;\n l < a.conditions.length && r < b.conditions.length;\n l++, r++\n ) {\n const val = cmpCondition(a.conditions[l], b.conditions[r]);\n if (val !== 0) {\n return val;\n }\n }\n // prefixes first\n return a.conditions.length - b.conditions.length;\n}\n\nfunction compareValuePosition(a: ValuePosition, b: ValuePosition): number {\n if (a.type !== b.type) {\n return compareUTF8(a.type, b.type);\n }\n switch (a.type) {\n case 'literal':\n assert(b.type === 'literal', 'Expected literal type for comparison');\n return cmpLiteralValue(a.value, b.value);\n case 'column':\n assert(b.type === 'column', 'Expected column type for comparison');\n return compareUTF8(a.name, b.name);\n case 'static':\n assert(b.type === 'static', 'Expected static type for comparison');\n // A field is a string or a path of strings, which cmpLiteralValue()\n // tells apart.\n return (\n compareUTF8(a.anchor, b.anchor) || cmpLiteralValue(a.field, b.field)\n );\n }\n}\n\n// null < boolean < number < string < array. Ordering values of different\n// types by their string form would make distinct values compare equal (['a',\n// 'b'] and 'a,b', or 1 and '1'), which would leave their order up to the\n// order they were written in, and with it the hash of the query.\nconst LITERAL_VALUE_TYPES = ['object', 'boolean', 'number', 'string'];\n\nfunction literalValueType(value: LiteralValue): number {\n return Array.isArray(value)\n ? LITERAL_VALUE_TYPES.length\n : LITERAL_VALUE_TYPES.indexOf(typeof value);\n}\n\nfunction cmpLiteralValue(a: LiteralValue, b: LiteralValue): number {\n const type = literalValueType(a) - literalValueType(b);\n if (type !== 0) {\n return type;\n }\n\n if (Array.isArray(a)) {\n assert(Array.isArray(b), 'Expected array for comparison');\n for (let i = 0; i < a.length && i < b.length; i++) {\n const val = cmpLiteralValue(a[i], b[i]);\n if (val !== 0) {\n return val;\n }\n }\n // prefixes first\n return a.length - b.length;\n }\n\n switch (typeof a) {\n case 'string':\n assert(typeof b === 'string', 'Expected string for comparison');\n return compareUTF8(a, b);\n case 'number':\n assert(typeof b === 'number', 'Expected number for comparison');\n return a < b ? -1 : a > b ? 1 : 0;\n case 'boolean':\n assert(typeof b === 'boolean', 'Expected boolean for comparison');\n return Number(a) - Number(b);\n default:\n return 0; // null\n }\n}\n\nfunction cmpRelated(a: CorrelatedSubquery, b: CorrelatedSubquery): number {\n return compareUTF8(must(a.subquery.alias), must(b.subquery.alias));\n}\n\nfunction compareUTF8MaybeNull(a: string | null, b: string | null): number {\n if (a !== null && b !== null) {\n return compareUTF8(a, b);\n }\n if (b !== null) {\n return -1;\n }\n if (a !== null) {\n return 1;\n }\n return 0;\n}\n\nfunction cmpOptionalBool(\n a: boolean | undefined,\n b: boolean | undefined,\n): number {\n // undefined < false < true\n const toNum = (v: boolean | undefined) => (v === undefined ? 0 : v ? 2 : 1);\n return toNum(a) - toNum(b);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ast.js","names":["v","v.readonly","v.literalUnion","v.readonlyArray","v.readonlyObject","v.strict"],"sources":["../../../../zero-protocol/src/ast.ts"],"sourcesContent":["/**\n * Wire-format representation of the zql AST interface.\n *\n * `v.Type<...>` types are explicitly declared to facilitate Typescript verification\n * that the schemas satisfy the zql type definitions. (Incidentally, explicit types\n * are also required for recursive schema definitions.)\n */\n\nimport {compareUTF8} from 'compare-utf8';\nimport {assert} from '../../shared/src/asserts.ts';\nimport {isPlainObject} from '../../shared/src/deep-merge.ts';\nimport {toSorted} from '../../shared/src/iterables.ts';\nimport {getOrInsertComputed} from '../../shared/src/map.ts';\nimport {must} from '../../shared/src/must.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport type {NameMapper} from '../../zero-types/src/name-mapper.ts';\nimport {rowSchema, type Row} from './data.ts';\n\nexport const SUBQ_PREFIX = 'zsubq_';\n\nconst selectorSchema = v.string();\nexport const toStaticParam = Symbol();\nexport const planIdSymbol = Symbol('planId');\n\nconst orderingElementSchema = v.readonly(\n v.tuple([selectorSchema, v.literalUnion('asc', 'desc')]),\n);\n\nexport const orderingSchema = v.readonlyArray(orderingElementSchema);\nexport type System = 'permissions' | 'client' | 'test';\n\nexport const equalityOpsSchema = v.literalUnion('=', '!=', 'IS', 'IS NOT');\n\nexport const orderOpsSchema = v.literalUnion('<', '>', '<=', '>=');\n\nexport const likeOpsSchema = v.literalUnion(\n 'LIKE',\n 'NOT LIKE',\n 'ILIKE',\n 'NOT ILIKE',\n);\n\nconst inOpsSchema = v.literalUnion('IN', 'NOT IN');\n\nexport const simpleOperatorSchema = v.union(\n equalityOpsSchema,\n orderOpsSchema,\n likeOpsSchema,\n inOpsSchema,\n);\n\nconst literalReferenceSchema: v.Type<LiteralReference> = v.readonlyObject({\n type: v.literal('literal'),\n value: v.union(\n v.string(),\n v.number(),\n v.boolean(),\n v.null(),\n v.readonlyArray(v.union(v.string(), v.number(), v.boolean())),\n ),\n});\nconst columnReferenceSchema: v.Type<ColumnReference> = v.readonlyObject({\n type: v.literal('column'),\n name: v.string(),\n});\n\n/**\n * A parameter is a value that is not known at the time the query is written\n * and is resolved at runtime.\n *\n * Static parameters refer to something provided by the caller.\n * Static parameters are injected when the query pipeline is built from the AST\n * and do not change for the life of that pipeline.\n *\n * An example static parameter is the current authentication data.\n * When a user is authenticated, queries on the server have access\n * to the user's authentication data in order to evaluate authorization rules.\n * Authentication data doesn't change over the life of a query as a change\n * in auth data would represent a log-in / log-out of the user.\n *\n * AncestorParameters refer to rows encountered while running the query.\n * They are used by subqueries to refer to rows emitted by parent queries.\n */\nconst parameterReferenceSchema = v.readonlyObject({\n type: v.literal('static'),\n // The \"namespace\" of the injected parameter.\n // Write authorization will send the value of a row\n // prior to the mutation being run (preMutationRow).\n // Read and write authorization will both send the\n // current authentication data (authData).\n anchor: v.literalUnion('authData', 'preMutationRow'),\n field: v.union(v.string(), v.array(v.string())),\n});\n\nconst conditionValueSchema = v.union(\n literalReferenceSchema,\n columnReferenceSchema,\n parameterReferenceSchema,\n);\n\nexport type Parameter = v.Infer<typeof parameterReferenceSchema>;\n\nconst simpleConditionSchema: v.Type<SimpleCondition> = v.readonlyObject({\n type: v.literal('simple'),\n op: simpleOperatorSchema,\n left: conditionValueSchema,\n right: v.union(parameterReferenceSchema, literalReferenceSchema),\n});\n\ntype ConditionValue = v.Infer<typeof conditionValueSchema>;\n\nexport const correlatedSubqueryConditionOperatorSchema: v.Type<CorrelatedSubqueryConditionOperator> =\n v.literalUnion('EXISTS', 'NOT EXISTS');\n\nexport const correlatedSubqueryConditionSchema: v.Type<CorrelatedSubqueryCondition> =\n v.readonlyObject({\n type: v.literal('correlatedSubquery'),\n related: v.lazy(() => correlatedSubquerySchema),\n op: correlatedSubqueryConditionOperatorSchema,\n flip: v.boolean().optional(),\n scalar: v.boolean().optional(),\n });\n\nexport const conditionSchema: v.Type<Condition> = v.union(\n simpleConditionSchema,\n v.lazy(() => conjunctionSchema),\n v.lazy(() => disjunctionSchema),\n correlatedSubqueryConditionSchema,\n);\n\nconst conjunctionSchema: v.Type<Conjunction> = v.readonlyObject({\n type: v.literal('and'),\n conditions: v.readonlyArray(conditionSchema),\n});\n\nconst disjunctionSchema: v.Type<Disjunction> = v.readonlyObject({\n type: v.literal('or'),\n conditions: v.readonlyArray(conditionSchema),\n});\n\nexport type CompoundKey = readonly [string, ...string[]];\n\nfunction mustCompoundKey(field: readonly string[]): CompoundKey {\n assert(\n Array.isArray(field) && field.length >= 1,\n 'Expected non-empty array for compound key',\n );\n return field as unknown as CompoundKey;\n}\n\nexport const compoundKeySchema: v.Type<CompoundKey> = v.readonly(\n // oxlint-disable-next-line e18e/prefer-spread-syntax\n v.tuple([v.string()]).concat(v.array(v.string())),\n);\n\nconst correlationSchema = v.readonlyObject({\n parentField: compoundKeySchema,\n childField: compoundKeySchema,\n});\n\n// Split out so that its inferred type can be checked against\n// Omit<CorrelatedSubquery, 'correlation'> in ast-type-test.ts.\n// The mutually-recursive reference of the 'other' field to astSchema\n// is the only thing added in v.lazy. The v.lazy is necessary due to the\n// mutually-recursive types, but v.lazy prevents inference of the resulting\n// type.\nexport const correlatedSubquerySchemaOmitSubquery = v.readonlyObject({\n correlation: correlationSchema,\n hidden: v.boolean().optional(),\n system: v.literalUnion('permissions', 'client', 'test').optional(),\n});\n\nexport const correlatedSubquerySchema: v.Type<CorrelatedSubquery> =\n correlatedSubquerySchemaOmitSubquery.extend({\n subquery: v.lazy(() => astSchema),\n });\n\nexport const astSchema: v.Type<AST> = v.readonlyObject({\n schema: v.string().optional(),\n table: v.string(),\n alias: v.string().optional(),\n where: conditionSchema.optional(),\n related: v.readonlyArray(correlatedSubquerySchema).optional(),\n limit: v.number().optional(),\n orderBy: orderingSchema.optional(),\n start: v\n .object({\n row: rowSchema,\n exclusive: v.boolean(),\n })\n .optional(),\n});\n\n/**\n * The maximum nesting depth of an AST sent by a client, counting and/or\n * conditions, correlated subqueries and related subqueries. Parsing and the\n * AST visitors in zero-cache are recursive, so a single deeply nested AST can\n * otherwise overflow the stack or burn seconds of CPU. Realistic queries,\n * permission rules included, are less than 10 levels deep.\n */\nexport const MAX_AST_DEPTH = 50;\n\n/**\n * Returns whether the unparsed `ast` is nested deeper than `maxDepth`.\n */\nexport function exceedsASTDepth(\n ast: unknown,\n maxDepth = MAX_AST_DEPTH,\n): boolean {\n return astExceedsDepth(ast, 0, maxDepth);\n}\n\n// Every step down increases the depth, except the one from an AST into its\n// where clause, so the recursion stops within 2 * maxDepth steps and cannot\n// overflow the stack.\nfunction astExceedsDepth(\n ast: unknown,\n depth: number,\n maxDepth: number,\n): boolean {\n if (depth > maxDepth) {\n return true;\n }\n if (!isPlainObject(ast)) {\n return false;\n }\n const {where, related} = ast;\n return (\n conditionExceedsDepth(where, depth, maxDepth) ||\n (Array.isArray(related) &&\n related.some(\n r =>\n isPlainObject(r) && astExceedsDepth(r.subquery, depth + 1, maxDepth),\n ))\n );\n}\n\nfunction conditionExceedsDepth(\n cond: unknown,\n depth: number,\n maxDepth: number,\n): boolean {\n if (depth > maxDepth) {\n return true;\n }\n if (!isPlainObject(cond)) {\n return false;\n }\n const {conditions, related} = cond;\n return (\n (Array.isArray(conditions) &&\n conditions.some(c => conditionExceedsDepth(c, depth + 1, maxDepth))) ||\n (isPlainObject(related) &&\n astExceedsDepth(related.subquery, depth + 1, maxDepth))\n );\n}\n\n/**\n * {@link astSchema} for ASTs sent by clients, which rejects ASTs nested deeper\n * than {@link MAX_AST_DEPTH} before parsing them. ASTs the server stored itself\n * (e.g. in the CVR) are parsed with {@link astSchema} so that ones stored\n * before the limit existed can still be read.\n */\nexport const depthBoundedAstSchema: v.Type<AST> = Object.assign(\n v\n .unknown()\n .chain((value, options) =>\n exceedsASTDepth(value)\n ? v.err(`AST exceeds the maximum depth of ${MAX_AST_DEPTH}`)\n : astSchema.try(value, options),\n ),\n // A transform serializes as just its name. Show astSchema too, so a change\n // to it still changes the hash in protocol-version.test.ts.\n {depthBounded: astSchema},\n);\n\n/**\n * {@link depthBoundedAstSchema} parsed strictly even inside a lenient parse. A\n * server that ignored an AST field it doesn't know would run a different query.\n */\nexport const strictASTSchema: v.Type<AST> = v.strict(depthBoundedAstSchema);\n\nexport type Bound = {\n row: Row;\n exclusive: boolean;\n};\n\n/**\n * As in SQL you can have multiple orderings. We don't currently\n * support ordering on anything other than the root query.\n */\nexport type OrderPart = readonly [field: string, direction: 'asc' | 'desc'];\nexport type Ordering = readonly OrderPart[];\n\nexport type SimpleOperator = EqualityOps | OrderOps | LikeOps | InOps;\nexport type EqualityOps = '=' | '!=' | 'IS' | 'IS NOT';\nexport type OrderOps = '<' | '>' | '<=' | '>=';\nexport type LikeOps = 'LIKE' | 'NOT LIKE' | 'ILIKE' | 'NOT ILIKE';\nexport type InOps = 'IN' | 'NOT IN';\n\nexport type AST = {\n readonly schema?: string | undefined;\n readonly table: string;\n\n // A query would be aliased if the AST is a subquery.\n // e.g., when two subqueries select from the same table\n // they need an alias to differentiate them.\n // `SELECT\n // [SELECT * FROM issue WHERE issue.id = outer.parentId] AS parent\n // [SELECT * FROM issue WHERE issue.parentId = outer.id] AS children\n // FROM issue as outer`\n readonly alias?: string | undefined;\n\n // `select` is missing given we return all columns for now.\n\n // The PipelineBuilder will pick what to use to correlate\n // a subquery with a parent query. It can choose something from the\n // where conditions or choose the _first_ `related` entry.\n // Choosing the first `related` entry is almost always the best choice if\n // one exists.\n readonly where?: Condition | undefined;\n\n readonly related?: readonly CorrelatedSubquery[] | undefined;\n readonly start?: Bound | undefined;\n readonly limit?: number | undefined;\n readonly orderBy?: Ordering | undefined;\n};\n\nexport type Correlation = {\n readonly parentField: CompoundKey;\n readonly childField: CompoundKey;\n};\n\nexport type CorrelatedSubquery = {\n /**\n * Only equality correlation are supported for now.\n * E.g., direct foreign key relationships.\n */\n readonly correlation: Correlation;\n readonly subquery: AST;\n readonly system?: System | undefined;\n // If a hop in the subquery chain should be hidden from the output view.\n // A common example is junction edges. The query API provides the illusion\n // that they don't exist: `issue.related('labels')` instead of `issue.related('issue_labels').related('labels')`.\n // To maintain this illusion, the junction edge should be hidden.\n // When `hidden` is set to true, this hop will not be included in the output view\n // but its children will be.\n readonly hidden?: boolean | undefined;\n};\n\nexport type ValuePosition = LiteralReference | Parameter | ColumnReference;\n\nexport type ColumnReference = {\n readonly type: 'column';\n /**\n * Not a path yet as we're currently not allowing\n * comparisons across tables. This will need to\n * be a path through the tree in the near future.\n */\n readonly name: string;\n};\n\nexport type LiteralReference = {\n readonly type: 'literal';\n readonly value: LiteralValue;\n};\n\nexport type LiteralValue =\n | string\n | number\n | boolean\n | null\n | ReadonlyArray<string | number | boolean>;\n\n/**\n * Starting only with SimpleCondition for now.\n * ivm1 supports Conjunctions and Disjunctions.\n * We'll support them in the future.\n */\nexport type Condition =\n | SimpleCondition\n | Conjunction\n | Disjunction\n | CorrelatedSubqueryCondition;\n\nexport type SimpleCondition = {\n readonly type: 'simple';\n readonly op: SimpleOperator;\n readonly left: ValuePosition;\n\n /**\n * `null` is absent since we do not have an `IS` or `IS NOT`\n * operator defined and `null != null` in SQL.\n */\n readonly right: Exclude<ValuePosition, ColumnReference>;\n};\n\nexport type Conjunction = {\n type: 'and';\n conditions: readonly Condition[];\n};\n\nexport type Disjunction = {\n type: 'or';\n conditions: readonly Condition[];\n};\n\nexport type CorrelatedSubqueryCondition = {\n type: 'correlatedSubquery';\n related: CorrelatedSubquery;\n op: CorrelatedSubqueryConditionOperator;\n flip?: boolean | undefined;\n scalar?: boolean | undefined;\n [planIdSymbol]?: number | undefined;\n};\n\nexport type CorrelatedSubqueryConditionOperator = 'EXISTS' | 'NOT EXISTS';\n\ninterface ASTTransform {\n tableName(orig: string): string;\n columnName(origTable: string, origColumn: string): string;\n}\n\nfunction transformAST(ast: AST, transform: ASTTransform): Required<AST> {\n // Name mapping functions (e.g. to server names)\n const {tableName, columnName} = transform;\n const colName = (c: string) => columnName(ast.table, c);\n const key = (table: string, k: CompoundKey) => {\n const serverKey = k.map(col => columnName(table, col));\n return mustCompoundKey(serverKey);\n };\n\n const transformed = {\n schema: ast.schema,\n table: tableName(ast.table),\n alias: ast.alias,\n where: ast.where\n ? transformWhere(ast.where, ast.table, transform)\n : undefined,\n related: ast.related?.map(\n r =>\n ({\n correlation: {\n parentField: key(ast.table, r.correlation.parentField),\n childField: key(r.subquery.table, r.correlation.childField),\n },\n hidden: r.hidden,\n subquery: transformAST(r.subquery, transform),\n system: r.system,\n }) satisfies Required<CorrelatedSubquery>,\n ),\n start: ast.start\n ? {\n ...ast.start,\n row: Object.fromEntries(\n Object.entries(ast.start.row).map(([col, val]) => [\n colName(col),\n val,\n ]),\n ),\n }\n : undefined,\n limit: ast.limit,\n orderBy: ast.orderBy?.map(([col, dir]) => [colName(col), dir] as const),\n };\n\n return transformed;\n}\n\nfunction transformWhere(\n where: Condition,\n table: string,\n transform: ASTTransform,\n): Condition {\n // Name mapping functions (e.g. to server names)\n const {columnName} = transform;\n const condValue = (c: ConditionValue) =>\n c.type !== 'column' ? c : {...c, name: columnName(table, c.name)};\n const key = (table: string, k: CompoundKey) => {\n const serverKey = k.map(col => columnName(table, col));\n return mustCompoundKey(serverKey);\n };\n\n if (where.type === 'simple') {\n return {...where, left: condValue(where.left)};\n } else if (where.type === 'correlatedSubquery') {\n const {correlation, subquery} = where.related;\n return {\n ...where,\n related: {\n ...where.related,\n correlation: {\n parentField: key(table, correlation.parentField),\n childField: key(subquery.table, correlation.childField),\n },\n subquery: transformAST(subquery, transform),\n },\n };\n }\n\n return {\n type: where.type,\n conditions: where.conditions.map(c => transformWhere(c, table, transform)),\n };\n}\n\ndeclare const normalizedTag: unique symbol;\n\n/**\n * An {@link AST} in its normalized form: `related` is sorted, `where` is\n * flattened and sorted, and every field is present, in a fixed order. Two ASTs\n * that describe the same query have the same JSON encoding, and thus the same\n * hash, once normalized.\n *\n * The tag only exists in the type, so the only way to get one is from\n * {@link normalizeAST}, {@link normalizedAST} or {@link tableAST}. Spreading\n * one keeps the tag, which is what lets a query builder derive a normalized\n * AST from another one by replacing a field it knows to be safe.\n */\nexport type NormalizedAST = Required<AST> & {readonly [normalizedTag]: true};\n\nfunction asNormalized(ast: Required<AST>): NormalizedAST {\n return ast as NormalizedAST;\n}\n\nconst normalizeCache = new WeakMap<AST, NormalizedAST>();\n\nexport function normalizeAST(ast: AST): NormalizedAST {\n return getOrInsertComputed(normalizeCache, ast, normalizeASTUncached);\n}\n\nfunction normalizeASTUncached(ast: AST): NormalizedAST {\n // normalizedAST() normalizes a single level, so normalize the subqueries\n // first.\n const {where, related} = ast;\n return normalizedAST({\n ...ast,\n where: where && normalizeSubqueries(where),\n related: related?.map(r =>\n normalizedRelated({...r, subquery: normalizeAST(r.subquery)}),\n ),\n });\n}\n\n/**\n * Normalizes the ASTs of the correlated subqueries of `cond`. The condition\n * itself is normalized by {@link normalizeCondition}.\n */\nfunction normalizeSubqueries(cond: Condition): Condition {\n switch (cond.type) {\n case 'simple':\n return cond;\n case 'correlatedSubquery':\n return {\n ...cond,\n related: {\n ...cond.related,\n subquery: normalizeAST(cond.related.subquery),\n },\n };\n default:\n return {\n type: cond.type,\n conditions: cond.conditions.map(normalizeSubqueries),\n };\n }\n}\n\n/**\n * Normalizes a single level of an AST, assuming that the ASTs of its\n * subqueries (i.e. those in `related` and in correlated subquery conditions)\n * are already normalized and that the `related` entries have the shape that\n * {@link normalizedRelated} gives them.\n *\n * This lets a query builder keep its AST normalized as it builds it up\n * instead of normalizing the whole tree afterwards. A builder that knows\n * which of the rules a step can break at all is better off applying just\n * those (see {@link tableAST}, {@link insertRelated} and\n * {@link normalizeCondition}).\n */\nexport function normalizedAST(ast: AST): NormalizedAST {\n const {schema, table, alias, where, related, start, limit, orderBy} = ast;\n // Every field is written, in the same order, so that all normalized ASTs\n // have the same shape (one hidden class) and the same JSON encoding (and\n // thus the same hash) no matter how they were put together. The fields that\n // are undefined are dropped by JSON.stringify() anyway.\n return asNormalized({\n schema,\n table,\n alias,\n where: where === undefined ? undefined : normalizeCondition(where),\n related: related === undefined ? undefined : normalizeRelated(related),\n start,\n limit,\n orderBy,\n });\n}\n\n/**\n * The normalized AST that selects a whole table. Spreading it (or any other\n * normalized AST) and replacing a field keeps the field order, since a\n * normalized AST has every field.\n */\nexport function tableAST(\n table: string,\n alias?: string | undefined,\n): NormalizedAST {\n return asNormalized({\n schema: undefined,\n table,\n alias,\n where: undefined,\n related: undefined,\n start: undefined,\n limit: undefined,\n orderBy: undefined,\n });\n}\n\n/**\n * Adds `subquery` to the `related` of a normalized AST, at the position that\n * keeps it sorted.\n */\nexport function insertRelated(\n related: readonly CorrelatedSubquery[] | undefined,\n subquery: CorrelatedSubquery,\n): readonly CorrelatedSubquery[] {\n const normalized = normalizedRelated(subquery);\n if (related === undefined) {\n return [normalized];\n }\n // Sorting is stable, so an entry goes after the ones it compares equal to.\n let i = related.length;\n while (i > 0 && cmpRelated(related[i - 1], normalized) > 0) {\n i--;\n }\n return related.toSpliced(i, 0, normalized);\n}\n\n// Conjunctions and disjunctions that are known to be normalized. The query\n// builder rebuilds its AST for every step, so this keeps the conditions that\n// did not change from being normalized over and over again.\nconst normalizedConditions = new WeakSet<Condition>();\n\nfunction normalizeRelated(\n related: readonly CorrelatedSubquery[],\n): readonly CorrelatedSubquery[] {\n for (let i = 1; i < related.length; i++) {\n if (cmpRelated(related[i - 1], related[i]) > 0) {\n // Not Array.prototype.toSorted: Hermes (React Native) does not\n // implement it.\n return toSorted(related, cmpRelated);\n }\n }\n return related;\n}\n\n/**\n * Gives a correlated subquery the shape that a normalized AST has: every\n * field, in a fixed order (see {@link normalizedAST}). Its `subquery` must\n * already be normalized.\n */\nexport function normalizedRelated(\n related: CorrelatedSubquery,\n): Required<CorrelatedSubquery> {\n const {correlation, hidden, subquery, system} = related;\n return {\n correlation: {\n parentField: correlation.parentField,\n childField: correlation.childField,\n },\n hidden,\n subquery,\n system,\n };\n}\n\nfunction normalizeValuePosition<T extends ValuePosition>(v: T): T {\n switch (v.type) {\n case 'literal':\n return {type: 'literal', value: v.value} as T;\n case 'column':\n return {type: 'column', name: v.name} as T;\n default:\n return {type: 'static', anchor: v.anchor, field: v.field} as T;\n }\n}\n\n/**\n * Normalizes a condition, assuming that the ASTs of any correlated subqueries\n * it contains are already normalized.\n *\n * Like {@link normalizedAST}, this rebuilds every node with its fields in a\n * fixed order, so that structurally equal conditions have the same JSON\n * encoding (and thus the same hash) no matter how they were put together.\n * That includes a round trip through Postgres, whose jsonb type reorders\n * object keys: without the rebuild, every query record reloaded from the CVR\n * re-hashed to a different transformationHash than was stored, making it look\n * changed and re-execute on every view-syncer restart.\n */\nexport function normalizeCondition(cond: Condition): Condition {\n if (normalizedConditions.has(cond)) {\n return cond;\n }\n if (cond.type === 'simple') {\n const normalized: Condition = {\n type: 'simple',\n op: cond.op,\n left: normalizeValuePosition(cond.left),\n right: normalizeValuePosition(cond.right),\n };\n normalizedConditions.add(normalized);\n return normalized;\n }\n if (cond.type === 'correlatedSubquery') {\n const normalized: Condition = {\n type: 'correlatedSubquery',\n related: normalizedRelated(cond.related),\n op: cond.op,\n flip: cond.flip,\n scalar: cond.scalar,\n };\n normalizedConditions.add(normalized);\n return normalized;\n }\n\n // Flatten the conditions of nested conjunctions of the same type and sort\n // them. The nested conditions are normalized (and thus flattened and sorted)\n // first.\n const conditions: Condition[] = [];\n for (const c of cond.conditions) {\n const n = normalizeCondition(c);\n if (n.type === cond.type) {\n conditions.push(...n.conditions);\n } else {\n conditions.push(n);\n }\n }\n\n // A singleton conjunction is the same as the condition itself. Empty\n // conjunctions, on the other hand, are meaningful: an empty 'and' is always\n // true and an empty 'or' is always false.\n if (conditions.length === 1) {\n return conditions[0];\n }\n conditions.sort(cmpCondition);\n const normalized: Condition = {type: cond.type, conditions};\n normalizedConditions.add(normalized);\n return normalized;\n}\n\n/**\n * Maps the table and column names of `ast`. The result is not a\n * {@link NormalizedAST} even if `ast` was normalized: the names it sorts by\n * are the ones that changed.\n */\nexport function mapAST(ast: AST, mapper: NameMapper) {\n return transformAST(ast, {\n tableName: table => mapper.tableName(table),\n columnName: (table, col) => mapper.columnName(table, col),\n });\n}\n\nexport function mapCondition(\n cond: Condition,\n table: string,\n mapper: NameMapper,\n) {\n return transformWhere(cond, table, {\n tableName: table => mapper.tableName(table),\n columnName: (table, col) => mapper.columnName(table, col),\n });\n}\n\nfunction cmpCondition(a: Condition, b: Condition): number {\n if (a.type === 'simple') {\n if (b.type !== 'simple') {\n return -1; // Order SimpleConditions first\n }\n\n return (\n compareValuePosition(a.left, b.left) ||\n compareUTF8MaybeNull(a.op, b.op) ||\n compareValuePosition(a.right, b.right)\n );\n }\n\n if (b.type === 'simple') {\n return 1; // Order SimpleConditions first\n }\n\n if (a.type === 'correlatedSubquery') {\n if (b.type !== 'correlatedSubquery') {\n return -1; // Order subquery before conjuctions/disjuctions\n }\n return (\n cmpRelated(a.related, b.related) ||\n compareUTF8MaybeNull(a.op, b.op) ||\n cmpOptionalBool(a.flip, b.flip) ||\n cmpOptionalBool(a.scalar, b.scalar)\n );\n }\n if (b.type === 'correlatedSubquery') {\n return -1; // Order correlatedSubquery before conjuctions/disjuctions\n }\n\n const val = compareUTF8MaybeNull(a.type, b.type);\n if (val !== 0) {\n return val;\n }\n for (\n let l = 0, r = 0;\n l < a.conditions.length && r < b.conditions.length;\n l++, r++\n ) {\n const val = cmpCondition(a.conditions[l], b.conditions[r]);\n if (val !== 0) {\n return val;\n }\n }\n // prefixes first\n return a.conditions.length - b.conditions.length;\n}\n\nfunction compareValuePosition(a: ValuePosition, b: ValuePosition): number {\n if (a.type !== b.type) {\n return compareUTF8(a.type, b.type);\n }\n switch (a.type) {\n case 'literal':\n assert(b.type === 'literal', 'Expected literal type for comparison');\n return cmpLiteralValue(a.value, b.value);\n case 'column':\n assert(b.type === 'column', 'Expected column type for comparison');\n return compareUTF8(a.name, b.name);\n case 'static':\n assert(b.type === 'static', 'Expected static type for comparison');\n // A field is a string or a path of strings, which cmpLiteralValue()\n // tells apart.\n return (\n compareUTF8(a.anchor, b.anchor) || cmpLiteralValue(a.field, b.field)\n );\n }\n}\n\n// null < boolean < number < string < array. Ordering values of different\n// types by their string form would make distinct values compare equal (['a',\n// 'b'] and 'a,b', or 1 and '1'), which would leave their order up to the\n// order they were written in, and with it the hash of the query.\nconst LITERAL_VALUE_TYPES = ['object', 'boolean', 'number', 'string'];\n\nfunction literalValueType(value: LiteralValue): number {\n return Array.isArray(value)\n ? LITERAL_VALUE_TYPES.length\n : LITERAL_VALUE_TYPES.indexOf(typeof value);\n}\n\nfunction cmpLiteralValue(a: LiteralValue, b: LiteralValue): number {\n const type = literalValueType(a) - literalValueType(b);\n if (type !== 0) {\n return type;\n }\n\n if (Array.isArray(a)) {\n assert(Array.isArray(b), 'Expected array for comparison');\n for (let i = 0; i < a.length && i < b.length; i++) {\n const val = cmpLiteralValue(a[i], b[i]);\n if (val !== 0) {\n return val;\n }\n }\n // prefixes first\n return a.length - b.length;\n }\n\n switch (typeof a) {\n case 'string':\n assert(typeof b === 'string', 'Expected string for comparison');\n return compareUTF8(a, b);\n case 'number':\n assert(typeof b === 'number', 'Expected number for comparison');\n return a < b ? -1 : a > b ? 1 : 0;\n case 'boolean':\n assert(typeof b === 'boolean', 'Expected boolean for comparison');\n return Number(a) - Number(b);\n default:\n return 0; // null\n }\n}\n\nfunction cmpRelated(a: CorrelatedSubquery, b: CorrelatedSubquery): number {\n return compareUTF8(must(a.subquery.alias), must(b.subquery.alias));\n}\n\nfunction compareUTF8MaybeNull(a: string | null, b: string | null): number {\n if (a !== null && b !== null) {\n return compareUTF8(a, b);\n }\n if (b !== null) {\n return -1;\n }\n if (a !== null) {\n return 1;\n }\n return 0;\n}\n\nfunction cmpOptionalBool(\n a: boolean | undefined,\n b: boolean | undefined,\n): number {\n // undefined < false < true\n const toNum = (v: boolean | undefined) => (v === undefined ? 0 : v ? 2 : 1);\n return toNum(a) - toNum(b);\n}\n"],"mappings":"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"}
@@ -1,22 +1,4 @@
1
1
  import * as v from '../../shared/src/valita.ts';
2
- declare const changeDesiredQueriesBodySchema: v.ObjectType<{
3
- desiredQueriesPatch: v.ArrayType<v.UnionType<[v.ObjectType<Omit<{
4
- op: v.Type<"put">;
5
- hash: v.Type<string>;
6
- ttl: v.Optional<number>;
7
- }, "args" | "ast" | "name"> & {
8
- ast: v.Optional<import("./ast.ts").AST>;
9
- name: v.Optional<string>;
10
- args: v.Optional<readonly import("../../shared/src/json.ts").ReadonlyJSONValue[]>;
11
- }, undefined>, v.ObjectType<{
12
- op: v.Type<"del">;
13
- hash: v.Type<string>;
14
- }, undefined>, v.ObjectType<{
15
- op: v.Type<"clear">;
16
- }, undefined>]>>;
17
- /** W3C traceparent header for distributed tracing. */
18
- traceparent: v.Optional<string>;
19
- }, undefined>;
20
2
  export declare const changeDesiredQueriesMessageSchema: v.TupleType<[v.Type<"changeDesiredQueries">, v.ObjectType<{
21
3
  desiredQueriesPatch: v.ArrayType<v.UnionType<[v.ObjectType<Omit<{
22
4
  op: v.Type<"put">;
@@ -35,7 +17,5 @@ export declare const changeDesiredQueriesMessageSchema: v.TupleType<[v.Type<"cha
35
17
  /** W3C traceparent header for distributed tracing. */
36
18
  traceparent: v.Optional<string>;
37
19
  }, undefined>]>;
38
- export type ChangeDesiredQueriesBody = v.Infer<typeof changeDesiredQueriesBodySchema>;
39
20
  export type ChangeDesiredQueriesMessage = v.Infer<typeof changeDesiredQueriesMessageSchema>;
40
- export {};
41
21
  //# sourceMappingURL=change-desired-queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"change-desired-queries.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/change-desired-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAGhD,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;IAElC,sDAAsD;;aAEtD,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;IAJ5C,sDAAsD;;eAOtD,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC"}
1
+ {"version":3,"file":"change-desired-queries.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/change-desired-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAShD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;IAJ5C,sDAAsD;;eAOtD,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"change-desired-queries.js","names":[],"sources":["../../../../zero-protocol/src/change-desired-queries.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {upQueriesPatchSchema} from './queries-patch.ts';\n\nconst changeDesiredQueriesBodySchema = v.object({\n desiredQueriesPatch: upQueriesPatchSchema,\n /** W3C traceparent header for distributed tracing. */\n traceparent: v.string().optional(),\n});\n\nexport const changeDesiredQueriesMessageSchema = v.tuple([\n v.literal('changeDesiredQueries'),\n changeDesiredQueriesBodySchema,\n]);\n\nexport type ChangeDesiredQueriesBody = v.Infer<\n typeof changeDesiredQueriesBodySchema\n>;\nexport type ChangeDesiredQueriesMessage = v.Infer<\n typeof changeDesiredQueriesMessageSchema\n>;\n"],"mappings":";;;AAGA,IAAM,iCAAiC,eAAE,OAAO;CAC9C,qBAAqB;;CAErB,aAAa,eAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAED,IAAa,oCAAoC,eAAE,MAAM,CACvD,eAAE,QAAQ,sBAAsB,GAChC,8BACF,CAAC"}
1
+ {"version":3,"file":"change-desired-queries.js","names":["v"],"sources":["../../../../zero-protocol/src/change-desired-queries.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {upQueriesPatchSchema} from './queries-patch.ts';\n\nconst changeDesiredQueriesBodySchema = v.object({\n desiredQueriesPatch: upQueriesPatchSchema,\n /** W3C traceparent header for distributed tracing. */\n traceparent: v.string().optional(),\n});\n\nexport const changeDesiredQueriesMessageSchema = v.tuple([\n v.literal('changeDesiredQueries'),\n changeDesiredQueriesBodySchema,\n]);\n\nexport type ChangeDesiredQueriesMessage = v.Infer<\n typeof changeDesiredQueriesMessageSchema\n>;\n"],"mappings":";;;AAGA,IAAM,iCAAiCA,eAAE,OAAO;CAC9C,qBAAqB;;CAErB,aAAaA,eAAE,OAAO,CAAC,CAAC,SAAS;AACnC,CAAC;AAED,IAAa,oCAAoCA,eAAE,MAAM,CACvDA,eAAE,QAAQ,sBAAsB,GAChC,8BACF,CAAC"}
@@ -1,11 +1,7 @@
1
1
  import * as v from '../../shared/src/valita.ts';
2
2
  export type ValueType = 'string' | 'number' | 'boolean' | 'null' | 'json';
3
3
  export declare const valueTypeSchema: v.Type<ValueType>;
4
- export declare const columnSchemaSchema: v.ObjectType<{
5
- type: v.Type<ValueType>;
6
- }, undefined>;
7
- export type ColumnSchema = v.Infer<typeof columnSchemaSchema>;
8
- export declare const tableSchemaSchema: v.ObjectType<{
4
+ declare const tableSchemaSchema: v.ObjectType<{
9
5
  columns: v.Type<Record<string, {
10
6
  type: ValueType;
11
7
  }>>;
@@ -26,4 +22,5 @@ export type ClientSchema = v.Infer<typeof clientSchemaSchema>;
26
22
  * suitable for hashing.
27
23
  */
28
24
  export declare function normalizeClientSchema(schema: ClientSchema): ClientSchema;
25
+ export {};
29
26
  //# sourceMappingURL=client-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-schema.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/client-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1E,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAM7C,CAAC;AAEF,eAAO,MAAM,kBAAkB;;aAE7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,iBAAiB;;;;;aAG5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kBAAkB;;;;;;;aAE7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAK9D;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAexE"}
1
+ {"version":3,"file":"client-schema.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/client-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1E,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAM7C,CAAC;AAMF,QAAA,MAAM,iBAAiB;;;;;aAGrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kBAAkB;;;;;;;aAE7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAK9D;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAexE"}
@@ -1 +1 @@
1
- {"version":3,"file":"client-schema.js","names":[],"sources":["../../../../zero-protocol/src/client-schema.ts"],"sourcesContent":["import {must} from '../../shared/src/must.ts';\nimport {mapAllEntries} from '../../shared/src/objects.ts';\nimport * as v from '../../shared/src/valita.ts';\n\nexport type ValueType = 'string' | 'number' | 'boolean' | 'null' | 'json';\n\nexport const valueTypeSchema: v.Type<ValueType> = v.literalUnion(\n 'string',\n 'number',\n 'boolean',\n 'null',\n 'json',\n);\n\nexport const columnSchemaSchema = v.object({\n type: valueTypeSchema,\n});\n\nexport type ColumnSchema = v.Infer<typeof columnSchemaSchema>;\n\nexport const tableSchemaSchema = v.object({\n columns: v.record(columnSchemaSchema),\n primaryKey: v.array(v.string()),\n});\n\nexport type TableSchema = v.Infer<typeof tableSchemaSchema>;\n\nexport const clientSchemaSchema = v.object({\n tables: v.record(tableSchemaSchema),\n});\n\nexport type ClientSchema = v.Infer<typeof clientSchemaSchema>;\n\nconst keyCmp = ([a]: [a: string, _: unknown], [b]: [b: string, _: unknown]) =>\n a < b ? -1 : a > b ? 1 : 0;\n\n/**\n * Returns a normalized schema (with the tables and columns sorted)\n * suitable for hashing.\n */\nexport function normalizeClientSchema(schema: ClientSchema): ClientSchema {\n return {\n tables: mapAllEntries(schema.tables, tables =>\n tables.sort(keyCmp).map(([name, table]) => [\n name,\n {\n columns: mapAllEntries(table.columns, e => e.sort(keyCmp)),\n primaryKey: must(\n table.primaryKey,\n `new clients always specify a primaryKey`,\n ).sort(),\n },\n ]),\n ),\n };\n}\n"],"mappings":";;;;AAMA,IAAa,kBAAqC,aAChD,UACA,UACA,WACA,QACA,MACF;AAEA,IAAa,qBAAqB,eAAE,OAAO,EACzC,MAAM,gBACR,CAAC;AAID,IAAa,oBAAoB,eAAE,OAAO;CACxC,SAAS,eAAE,OAAO,kBAAkB;CACpC,YAAY,eAAE,MAAM,eAAE,OAAO,CAAC;AAChC,CAAC;AAID,IAAa,qBAAqB,eAAE,OAAO,EACzC,QAAQ,eAAE,OAAO,iBAAiB,EACpC,CAAC;AAID,IAAM,UAAU,CAAC,IAA6B,CAAC,OAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;;;;;AAM3B,SAAgB,sBAAsB,QAAoC;CACxE,OAAO,EACL,QAAQ,cAAc,OAAO,SAAQ,WACnC,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,MAAM,WAAW,CACzC,MACA;EACE,SAAS,cAAc,MAAM,UAAS,MAAK,EAAE,KAAK,MAAM,CAAC;EACzD,YAAY,KACV,MAAM,YACN,yCACF,EAAE,KAAK;CACT,CACF,CAAC,CACH,EACF;AACF"}
1
+ {"version":3,"file":"client-schema.js","names":["v.literalUnion","v"],"sources":["../../../../zero-protocol/src/client-schema.ts"],"sourcesContent":["import {must} from '../../shared/src/must.ts';\nimport {mapAllEntries} from '../../shared/src/objects.ts';\nimport * as v from '../../shared/src/valita.ts';\n\nexport type ValueType = 'string' | 'number' | 'boolean' | 'null' | 'json';\n\nexport const valueTypeSchema: v.Type<ValueType> = v.literalUnion(\n 'string',\n 'number',\n 'boolean',\n 'null',\n 'json',\n);\n\nconst columnSchemaSchema = v.object({\n type: valueTypeSchema,\n});\n\nconst tableSchemaSchema = v.object({\n columns: v.record(columnSchemaSchema),\n primaryKey: v.array(v.string()),\n});\n\nexport type TableSchema = v.Infer<typeof tableSchemaSchema>;\n\nexport const clientSchemaSchema = v.object({\n tables: v.record(tableSchemaSchema),\n});\n\nexport type ClientSchema = v.Infer<typeof clientSchemaSchema>;\n\nconst keyCmp = ([a]: [a: string, _: unknown], [b]: [b: string, _: unknown]) =>\n a < b ? -1 : a > b ? 1 : 0;\n\n/**\n * Returns a normalized schema (with the tables and columns sorted)\n * suitable for hashing.\n */\nexport function normalizeClientSchema(schema: ClientSchema): ClientSchema {\n return {\n tables: mapAllEntries(schema.tables, tables =>\n tables.sort(keyCmp).map(([name, table]) => [\n name,\n {\n columns: mapAllEntries(table.columns, e => e.sort(keyCmp)),\n primaryKey: must(\n table.primaryKey,\n `new clients always specify a primaryKey`,\n ).sort(),\n },\n ]),\n ),\n };\n}\n"],"mappings":";;;;AAMA,IAAa,kBAAqCA,aAChD,UACA,UACA,WACA,QACA,MACF;AAEA,IAAM,qBAAqBC,eAAE,OAAO,EAClC,MAAM,gBACR,CAAC;AAED,IAAM,oBAAoBA,eAAE,OAAO;CACjC,SAASA,eAAE,OAAO,kBAAkB;CACpC,YAAYA,eAAE,MAAMA,eAAE,OAAO,CAAC;AAChC,CAAC;AAID,IAAa,qBAAqBA,eAAE,OAAO,EACzC,QAAQA,eAAE,OAAO,iBAAiB,EACpC,CAAC;AAID,IAAM,UAAU,CAAC,IAA6B,CAAC,OAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;;;;;AAM3B,SAAgB,sBAAsB,QAAoC;CACxE,OAAO,EACL,QAAQ,cAAc,OAAO,SAAQ,WACnC,OAAO,KAAK,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW,CACzC,MACA;EACE,SAAS,cAAc,MAAM,UAAS,MAAK,EAAE,KAAK,MAAM,CAAC;EACzD,YAAY,KACV,MAAM,YACN,yCACF,CAAC,CAAC,KAAK;CACT,CACF,CAAC,CACH,EACF;AACF"}
@@ -1,8 +1,4 @@
1
1
  import * as v from '../../shared/src/valita.ts';
2
- /**
3
- * We do not use the body yet.
4
- */
5
- export declare const closeConnectionBodySchema: v.ArrayType<v.Type<unknown>>;
6
2
  /**
7
3
  * This message gets sent as part of the close reason in the WebSocket close event.
8
4
  * The close reason is a string, so we serialize this message to JSON.
@@ -13,8 +9,4 @@ export declare const closeConnectionBodySchema: v.ArrayType<v.Type<unknown>>;
13
9
  * @deprecated
14
10
  */
15
11
  export declare const closeConnectionMessageSchema: v.TupleType<[v.Type<"closeConnection">, v.ArrayType<v.Type<unknown>>]>;
16
- /** @deprecated */
17
- export type CloseConnectionBody = v.Infer<typeof closeConnectionBodySchema>;
18
- /** @deprecated */
19
- export type CloseConnectionMessage = v.Infer<typeof closeConnectionMessageSchema>;
20
12
  //# sourceMappingURL=close-connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"close-connection.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/close-connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,yBAAyB,8BAAuB,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,wEAGvC,CAAC;AAEH,kBAAkB;AAClB,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,kBAAkB;AAClB,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAC"}
1
+ {"version":3,"file":"close-connection.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/close-connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAOhD;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,wEAGvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"close-connection.js","names":[],"sources":["../../../../zero-protocol/src/close-connection.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\n\n/**\n * We do not use the body yet.\n */\nexport const closeConnectionBodySchema = v.array(v.unknown());\n\n/**\n * This message gets sent as part of the close reason in the WebSocket close event.\n * The close reason is a string, so we serialize this message to JSON.\n \n * \"The value must be no longer than 123 bytes (encoded in UTF-8).\" -\n * https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#reason\n * \n * @deprecated\n */\nexport const closeConnectionMessageSchema = v.tuple([\n v.literal('closeConnection'),\n closeConnectionBodySchema,\n]);\n\n/** @deprecated */\nexport type CloseConnectionBody = v.Infer<typeof closeConnectionBodySchema>;\n\n/** @deprecated */\nexport type CloseConnectionMessage = v.Infer<\n typeof closeConnectionMessageSchema\n>;\n"],"mappings":";;;;;AAKA,IAAa,4BAA4B,eAAE,MAAM,eAAE,QAAQ,CAAC;;;;;;;;;;AAW5D,IAAa,+BAA+B,eAAE,MAAM,CAClD,eAAE,QAAQ,iBAAiB,GAC3B,yBACF,CAAC"}
1
+ {"version":3,"file":"close-connection.js","names":["v"],"sources":["../../../../zero-protocol/src/close-connection.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\n\n/**\n * We do not use the body yet.\n */\nconst closeConnectionBodySchema = v.array(v.unknown());\n\n/**\n * This message gets sent as part of the close reason in the WebSocket close event.\n * The close reason is a string, so we serialize this message to JSON.\n \n * \"The value must be no longer than 123 bytes (encoded in UTF-8).\" -\n * https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#reason\n * \n * @deprecated\n */\nexport const closeConnectionMessageSchema = v.tuple([\n v.literal('closeConnection'),\n closeConnectionBodySchema,\n]);\n"],"mappings":";;;;;AAKA,IAAM,4BAA4BA,eAAE,MAAMA,eAAE,QAAQ,CAAC;;;;;;;;;;AAWrD,IAAa,+BAA+BA,eAAE,MAAM,CAClDA,eAAE,QAAQ,iBAAiB,GAC3B,yBACF,CAAC"}
@@ -1,15 +1,4 @@
1
1
  import * as v from '../../shared/src/valita.ts';
2
- /**
3
- * After opening a websocket the client waits for a `connected` message
4
- * from the server. It then sends an `initConnection` message to the
5
- * server. The server waits for the `initConnection` message before
6
- * beginning to send pokes to the newly connected client, so as to avoid
7
- * syncing lots of queries which are no longer desired by the client.
8
- */
9
- export declare const connectedBodySchema: v.ObjectType<{
10
- wsid: v.Type<string>;
11
- timestamp: v.Optional<number>;
12
- }, undefined>;
13
2
  export declare const connectedMessageSchema: v.TupleType<[v.Type<"connected">, v.ObjectType<{
14
3
  wsid: v.Type<string>;
15
4
  timestamp: v.Optional<number>;
@@ -96,7 +85,6 @@ export declare const initConnectionMessageSchema: v.TupleType<[v.Type<"initConne
96
85
  /** W3C traceparent header for distributed tracing. */
97
86
  traceparent: v.Optional<string>;
98
87
  }, undefined>]>;
99
- export type ConnectedBody = v.Infer<typeof connectedBodySchema>;
100
88
  export type ConnectedMessage = v.Infer<typeof connectedMessageSchema>;
101
89
  export type InitConnectionBody = v.Infer<typeof initConnectionBodySchema>;
102
90
  export type InitConnectionMessage = v.Infer<typeof initConnectionMessageSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAKhD;;;;;;GAMG;AAEH,eAAO,MAAM,mBAAmB;;;aAG9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;eAGjC,CAAC;AAEH,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAe5B;;;;;OAKG;;IAEH,sDAAsD;;aAEtD,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAXtC;;;;;OAKG;;IAEH,sDAAsD;;eAOtD,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,wBAAgB,kBAAkB,CAChC,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,EACxD,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,CAgBR;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG;IACvD,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACzD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAIA"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAkBhD,eAAO,MAAM,sBAAsB;;;eAGjC,CAAC;AAEH,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAe5B;;;;;OAKG;;IAEH,sDAAsD;;aAEtD,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAXtC;;;;;OAKG;;IAEH,sDAAsD;;eAOtD,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,wBAAgB,kBAAkB,CAChC,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,EACxD,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,CAgBR;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG;IACvD,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACzD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAIA"}
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","names":[],"sources":["../../../../zero-protocol/src/connect.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {clientSchemaSchema} from './client-schema.ts';\nimport {deleteClientsBodySchema} from './delete-clients.ts';\nimport {upQueriesPatchSchema} from './queries-patch.ts';\n\n/**\n * After opening a websocket the client waits for a `connected` message\n * from the server. It then sends an `initConnection` message to the\n * server. The server waits for the `initConnection` message before\n * beginning to send pokes to the newly connected client, so as to avoid\n * syncing lots of queries which are no longer desired by the client.\n */\n\nexport const connectedBodySchema = v.object({\n wsid: v.string(),\n timestamp: v.number().optional(),\n});\n\nexport const connectedMessageSchema = v.tuple([\n v.literal('connected'),\n connectedBodySchema,\n]);\n\nconst initConnectionBodySchema = v.object({\n desiredQueriesPatch: upQueriesPatchSchema,\n // As the schema can be large, client only sends when it does not have a\n // server snapshot (i.e. a snapshot with a cookie). Once it has a server\n // snapshot it will assume the zero-cache already has the schema for this\n // client's client group in the CVR store.\n clientSchema: clientSchemaSchema.optional(),\n deleted: deleteClientsBodySchema.optional(),\n // parameters to configure the mutate endpoint\n userPushURL: v.string().optional(),\n userPushHeaders: v.record(v.string()).optional(),\n // parameters to configure the query endpoint\n userQueryURL: v.string().optional(),\n userQueryHeaders: v.record(v.string()).optional(),\n\n /**\n * `activeClients` is an optional array of client IDs that are currently active\n * in the client group. This is used to inform the server about the clients\n * that are currently active (aka running, aka alive), so it can inactive\n * queries from inactive clients.\n */\n activeClients: v.array(v.string()).optional(),\n /** W3C traceparent header for distributed tracing. */\n traceparent: v.string().optional(),\n});\n\nexport const initConnectionMessageSchema = v.tuple([\n v.literal('initConnection'),\n initConnectionBodySchema,\n]);\n\nexport type ConnectedBody = v.Infer<typeof connectedBodySchema>;\nexport type ConnectedMessage = v.Infer<typeof connectedMessageSchema>;\nexport type InitConnectionBody = v.Infer<typeof initConnectionBodySchema>;\nexport type InitConnectionMessage = v.Infer<typeof initConnectionMessageSchema>;\n\nexport function encodeSecProtocols(\n initConnectionMessage: InitConnectionMessage | undefined,\n authToken: string | undefined,\n): string {\n const protocols = {\n initConnectionMessage,\n authToken,\n };\n // WS sec protocols needs to be URI encoded. To save space, we base64 encode\n // the JSON before URI encoding it. But InitConnectionMessage can contain\n // arbitrary unicode strings, so we need to encode the JSON as UTF-8 first.\n // Phew!\n const bytes = new TextEncoder().encode(JSON.stringify(protocols));\n\n // Convert bytes to string without spreading all bytes as arguments\n // to avoid \"Maximum call stack size exceeded\" error with large data\n const s = Array.from(bytes, byte => String.fromCharCode(byte)).join('');\n\n return encodeURIComponent(btoa(s));\n}\n\nexport function decodeSecProtocols(secProtocol: string): {\n initConnectionMessage: InitConnectionMessage | undefined;\n authToken: string | undefined;\n} {\n const binString = atob(decodeURIComponent(secProtocol));\n const bytes = Uint8Array.from(binString, c => c.charCodeAt(0));\n return JSON.parse(new TextDecoder().decode(bytes));\n}\n"],"mappings":";;;;;;;;;;;;AAaA,IAAa,sBAAsB,eAAE,OAAO;CAC1C,MAAM,eAAE,OAAO;CACf,WAAW,eAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAED,IAAa,yBAAyB,eAAE,MAAM,CAC5C,eAAE,QAAQ,WAAW,GACrB,mBACF,CAAC;AAED,IAAM,2BAA2B,eAAE,OAAO;CACxC,qBAAqB;CAKrB,cAAc,mBAAmB,SAAS;CAC1C,SAAS,wBAAwB,SAAS;CAE1C,aAAa,eAAE,OAAO,EAAE,SAAS;CACjC,iBAAiB,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,SAAS;CAE/C,cAAc,eAAE,OAAO,EAAE,SAAS;CAClC,kBAAkB,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,SAAS;;;;;;;CAQhD,eAAe,eAAE,MAAM,eAAE,OAAO,CAAC,EAAE,SAAS;;CAE5C,aAAa,eAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAED,IAAa,8BAA8B,eAAE,MAAM,CACjD,eAAE,QAAQ,gBAAgB,GAC1B,wBACF,CAAC;AAOD,SAAgB,mBACd,uBACA,WACQ;CACR,MAAM,YAAY;EAChB;EACA;CACF;CAKA,MAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,KAAK,UAAU,SAAS,CAAC;CAIhE,MAAM,IAAI,MAAM,KAAK,QAAO,SAAQ,OAAO,aAAa,IAAI,CAAC,EAAE,KAAK,EAAE;CAEtE,OAAO,mBAAmB,KAAK,CAAC,CAAC;AACnC;AAEA,SAAgB,mBAAmB,aAGjC;CACA,MAAM,YAAY,KAAK,mBAAmB,WAAW,CAAC;CACtD,MAAM,QAAQ,WAAW,KAAK,YAAW,MAAK,EAAE,WAAW,CAAC,CAAC;CAC7D,OAAO,KAAK,MAAM,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC;AACnD"}
1
+ {"version":3,"file":"connect.js","names":["v"],"sources":["../../../../zero-protocol/src/connect.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {clientSchemaSchema} from './client-schema.ts';\nimport {deleteClientsBodySchema} from './delete-clients.ts';\nimport {upQueriesPatchSchema} from './queries-patch.ts';\n\n/**\n * After opening a websocket the client waits for a `connected` message\n * from the server. It then sends an `initConnection` message to the\n * server. The server waits for the `initConnection` message before\n * beginning to send pokes to the newly connected client, so as to avoid\n * syncing lots of queries which are no longer desired by the client.\n */\n\nconst connectedBodySchema = v.object({\n wsid: v.string(),\n timestamp: v.number().optional(),\n});\n\nexport const connectedMessageSchema = v.tuple([\n v.literal('connected'),\n connectedBodySchema,\n]);\n\nconst initConnectionBodySchema = v.object({\n desiredQueriesPatch: upQueriesPatchSchema,\n // As the schema can be large, client only sends when it does not have a\n // server snapshot (i.e. a snapshot with a cookie). Once it has a server\n // snapshot it will assume the zero-cache already has the schema for this\n // client's client group in the CVR store.\n clientSchema: clientSchemaSchema.optional(),\n deleted: deleteClientsBodySchema.optional(),\n // parameters to configure the mutate endpoint\n userPushURL: v.string().optional(),\n userPushHeaders: v.record(v.string()).optional(),\n // parameters to configure the query endpoint\n userQueryURL: v.string().optional(),\n userQueryHeaders: v.record(v.string()).optional(),\n\n /**\n * `activeClients` is an optional array of client IDs that are currently active\n * in the client group. This is used to inform the server about the clients\n * that are currently active (aka running, aka alive), so it can inactive\n * queries from inactive clients.\n */\n activeClients: v.array(v.string()).optional(),\n /** W3C traceparent header for distributed tracing. */\n traceparent: v.string().optional(),\n});\n\nexport const initConnectionMessageSchema = v.tuple([\n v.literal('initConnection'),\n initConnectionBodySchema,\n]);\n\nexport type ConnectedMessage = v.Infer<typeof connectedMessageSchema>;\nexport type InitConnectionBody = v.Infer<typeof initConnectionBodySchema>;\nexport type InitConnectionMessage = v.Infer<typeof initConnectionMessageSchema>;\n\nexport function encodeSecProtocols(\n initConnectionMessage: InitConnectionMessage | undefined,\n authToken: string | undefined,\n): string {\n const protocols = {\n initConnectionMessage,\n authToken,\n };\n // WS sec protocols needs to be URI encoded. To save space, we base64 encode\n // the JSON before URI encoding it. But InitConnectionMessage can contain\n // arbitrary unicode strings, so we need to encode the JSON as UTF-8 first.\n // Phew!\n const bytes = new TextEncoder().encode(JSON.stringify(protocols));\n\n // Convert bytes to string without spreading all bytes as arguments\n // to avoid \"Maximum call stack size exceeded\" error with large data\n const s = Array.from(bytes, byte => String.fromCharCode(byte)).join('');\n\n return encodeURIComponent(btoa(s));\n}\n\nexport function decodeSecProtocols(secProtocol: string): {\n initConnectionMessage: InitConnectionMessage | undefined;\n authToken: string | undefined;\n} {\n const binString = atob(decodeURIComponent(secProtocol));\n const bytes = Uint8Array.from(binString, c => c.charCodeAt(0));\n return JSON.parse(new TextDecoder().decode(bytes));\n}\n"],"mappings":";;;;;;;;;;;;AAaA,IAAM,sBAAsBA,eAAE,OAAO;CACnC,MAAMA,eAAE,OAAO;CACf,WAAWA,eAAE,OAAO,CAAC,CAAC,SAAS;AACjC,CAAC;AAED,IAAa,yBAAyBA,eAAE,MAAM,CAC5CA,eAAE,QAAQ,WAAW,GACrB,mBACF,CAAC;AAED,IAAM,2BAA2BA,eAAE,OAAO;CACxC,qBAAqB;CAKrB,cAAc,mBAAmB,SAAS;CAC1C,SAAS,wBAAwB,SAAS;CAE1C,aAAaA,eAAE,OAAO,CAAC,CAAC,SAAS;CACjC,iBAAiBA,eAAE,OAAOA,eAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CAE/C,cAAcA,eAAE,OAAO,CAAC,CAAC,SAAS;CAClC,kBAAkBA,eAAE,OAAOA,eAAE,OAAO,CAAC,CAAC,CAAC,SAAS;;;;;;;CAQhD,eAAeA,eAAE,MAAMA,eAAE,OAAO,CAAC,CAAC,CAAC,SAAS;;CAE5C,aAAaA,eAAE,OAAO,CAAC,CAAC,SAAS;AACnC,CAAC;AAED,IAAa,8BAA8BA,eAAE,MAAM,CACjDA,eAAE,QAAQ,gBAAgB,GAC1B,wBACF,CAAC;AAMD,SAAgB,mBACd,uBACA,WACQ;CACR,MAAM,YAAY;EAChB;EACA;CACF;CAKA,MAAM,QAAQ,IAAI,YAAY,CAAC,CAAC,OAAO,KAAK,UAAU,SAAS,CAAC;CAIhE,MAAM,IAAI,MAAM,KAAK,QAAO,SAAQ,OAAO,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;CAEtE,OAAO,mBAAmB,KAAK,CAAC,CAAC;AACnC;AAEA,SAAgB,mBAAmB,aAGjC;CACA,MAAM,YAAY,KAAK,mBAAmB,WAAW,CAAC;CACtD,MAAM,QAAQ,WAAW,KAAK,YAAW,MAAK,EAAE,WAAW,CAAC,CAAC;CAC7D,OAAO,KAAK,MAAM,IAAI,YAAY,CAAC,CAAC,OAAO,KAAK,CAAC;AACnD"}
@@ -1,5 +1,5 @@
1
1
  import * as v from '../../shared/src/valita.ts';
2
- export declare const transformRequestBodySchema: v.ArrayType<v.ObjectType<{
2
+ declare const transformRequestBodySchema: v.ArrayType<v.ObjectType<{
3
3
  id: v.Type<string>;
4
4
  name: v.Type<string>;
5
5
  args: v.Type<readonly import("../../shared/src/json.ts").ReadonlyJSONValue[]>;
@@ -10,20 +10,6 @@ export declare const transformedQuerySchema: v.ObjectType<{
10
10
  name: v.Type<string>;
11
11
  ast: v.Type<import("./ast.ts").AST>;
12
12
  }, undefined>;
13
- export declare const appErroredQuerySchema: v.ObjectType<{
14
- error: v.Type<"app">;
15
- id: v.Type<string>;
16
- name: v.Type<string>;
17
- message: v.Optional<string>;
18
- details: v.Optional<import("../../shared/src/json.ts").ReadonlyJSONValue>;
19
- }, undefined>;
20
- export declare const parseErroredQuerySchema: v.ObjectType<{
21
- error: v.Type<"parse">;
22
- id: v.Type<string>;
23
- name: v.Type<string>;
24
- message: v.Type<string>;
25
- details: v.Optional<import("../../shared/src/json.ts").ReadonlyJSONValue>;
26
- }, undefined>;
27
13
  export declare const erroredQuerySchema: v.UnionType<[v.ObjectType<{
28
14
  error: v.Type<"app">;
29
15
  id: v.Type<string>;
@@ -38,7 +24,7 @@ export declare const erroredQuerySchema: v.UnionType<[v.ObjectType<{
38
24
  details: v.Optional<import("../../shared/src/json.ts").ReadonlyJSONValue>;
39
25
  }, undefined>]>;
40
26
  export type ErroredQuery = v.Infer<typeof erroredQuerySchema>;
41
- export declare const transformResponseBodySchema: v.ArrayType<v.UnionType<[v.ObjectType<{
27
+ declare const transformResponseBodySchema: v.ArrayType<v.UnionType<[v.ObjectType<{
42
28
  id: v.Type<string>;
43
29
  name: v.Type<string>;
44
30
  ast: v.Type<import("./ast.ts").AST>;
@@ -75,7 +61,6 @@ export declare const transformErrorMessageSchema: v.TupleType<[v.Type<"transform
75
61
  message: v.Type<string>;
76
62
  details: v.Optional<import("../../shared/src/json.ts").ReadonlyJSONValue>;
77
63
  }, undefined>]>>]>;
78
- export type TransformErrorMessage = v.Infer<typeof transformErrorMessageSchema>;
79
64
  export declare const transformResponseMessageSchema: v.UnionType<[v.TupleType<[v.Type<"transformed">, v.ArrayType<v.UnionType<[v.ObjectType<{
80
65
  id: v.Type<string>;
81
66
  name: v.Type<string>;
@@ -120,4 +105,5 @@ export declare const transformResponseMessageSchema: v.UnionType<[v.TupleType<[v
120
105
  reason: v.Type<"internal" | "parse" | "timeout">;
121
106
  }, undefined>]>]>]>;
122
107
  export type TransformResponseMessage = v.Infer<typeof transformResponseMessageSchema>;
108
+ export {};
123
109
  //# sourceMappingURL=custom-queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-queries.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/custom-queries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAIhD,eAAO,MAAM,0BAA0B;;;;cAMtC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,sBAAsB;;;;aAIjC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;aAOhC,CAAC;AACH,eAAO,MAAM,uBAAuB;;;;;;aAMlC,CAAC;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;eAG9B,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;kBAEvC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,6BAA6B;;;;gBAGxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AACF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;kBAGtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAWhF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAG1C,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC"}
1
+ {"version":3,"file":"custom-queries.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/custom-queries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAIhD,QAAA,MAAM,0BAA0B;;;;cAM/B,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,sBAAsB;;;;aAIjC,CAAC;AAiBH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;eAG9B,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;kBAEhC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,6BAA6B;;;;gBAGxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AACF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;kBAGtC,CAAC;AAWH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAG1C,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,8BAA8B,CACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"custom-queries.js","names":[],"sources":["../../../../zero-protocol/src/custom-queries.ts"],"sourcesContent":["import {jsonSchema} from '../../shared/src/json-schema.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport {astSchema} from './ast.ts';\nimport {transformFailedBodySchema} from './error.ts';\n\nexport const transformRequestBodySchema = v.array(\n v.object({\n id: v.string(),\n name: v.string(),\n args: v.readonly(v.array(jsonSchema)),\n }),\n);\nexport type TransformRequestBody = v.Infer<typeof transformRequestBodySchema>;\n\nexport const transformedQuerySchema = v.object({\n id: v.string(),\n name: v.string(),\n ast: astSchema,\n});\n\nexport const appErroredQuerySchema = v.object({\n error: v.literal('app'),\n id: v.string(),\n name: v.string(),\n // optional for backwards compatibility\n message: v.string().optional(),\n details: jsonSchema.optional(),\n});\nexport const parseErroredQuerySchema = v.object({\n error: v.literal('parse'),\n id: v.string(),\n name: v.string(),\n message: v.string(),\n details: jsonSchema.optional(),\n});\nexport const erroredQuerySchema = v.union(\n appErroredQuerySchema,\n parseErroredQuerySchema,\n);\nexport type ErroredQuery = v.Infer<typeof erroredQuerySchema>;\n\nexport const transformResponseBodySchema = v.array(\n v.union(transformedQuerySchema, erroredQuerySchema),\n);\nexport type TransformResponseBody = v.Infer<typeof transformResponseBodySchema>;\n\nexport const transformRequestMessageSchema = v.tuple([\n v.literal('transform'),\n transformRequestBodySchema,\n]);\nexport type TransformRequestMessage = v.Infer<\n typeof transformRequestMessageSchema\n>;\nexport const transformErrorMessageSchema = v.tuple([\n v.literal('transformError'),\n v.array(erroredQuerySchema),\n]);\nexport type TransformErrorMessage = v.Infer<typeof transformErrorMessageSchema>;\n\nconst transformFailedMessageSchema = v.tuple([\n v.literal('transformFailed'),\n transformFailedBodySchema,\n]);\nconst transformOkMessageSchema = v.tuple([\n v.literal('transformed'),\n transformResponseBodySchema,\n]);\n\nexport const transformResponseMessageSchema = v.union(\n transformOkMessageSchema,\n transformFailedMessageSchema,\n);\nexport type TransformResponseMessage = v.Infer<\n typeof transformResponseMessageSchema\n>;\n"],"mappings":";;;;;AAKA,IAAa,6BAA6B,eAAE,MAC1C,eAAE,OAAO;CACP,IAAI,eAAE,OAAO;CACb,MAAM,eAAE,OAAO;CACf,MAAM,SAAW,eAAE,MAAM,UAAU,CAAC;AACtC,CAAC,CACH;AAGA,IAAa,yBAAyB,eAAE,OAAO;CAC7C,IAAI,eAAE,OAAO;CACb,MAAM,eAAE,OAAO;CACf,KAAK;AACP,CAAC;AAED,IAAa,wBAAwB,eAAE,OAAO;CAC5C,OAAO,eAAE,QAAQ,KAAK;CACtB,IAAI,eAAE,OAAO;CACb,MAAM,eAAE,OAAO;CAEf,SAAS,eAAE,OAAO,EAAE,SAAS;CAC7B,SAAS,WAAW,SAAS;AAC/B,CAAC;AACD,IAAa,0BAA0B,eAAE,OAAO;CAC9C,OAAO,eAAE,QAAQ,OAAO;CACxB,IAAI,eAAE,OAAO;CACb,MAAM,eAAE,OAAO;CACf,SAAS,eAAE,OAAO;CAClB,SAAS,WAAW,SAAS;AAC/B,CAAC;AACD,IAAa,qBAAqB,eAAE,MAClC,uBACA,uBACF;AAGA,IAAa,8BAA8B,eAAE,MAC3C,eAAE,MAAM,wBAAwB,kBAAkB,CACpD;AAGA,IAAa,gCAAgC,eAAE,MAAM,CACnD,eAAE,QAAQ,WAAW,GACrB,0BACF,CAAC;AAID,IAAa,8BAA8B,eAAE,MAAM,CACjD,eAAE,QAAQ,gBAAgB,GAC1B,eAAE,MAAM,kBAAkB,CAC5B,CAAC;AAGD,IAAM,+BAA+B,eAAE,MAAM,CAC3C,eAAE,QAAQ,iBAAiB,GAC3B,yBACF,CAAC;AACD,IAAM,2BAA2B,eAAE,MAAM,CACvC,eAAE,QAAQ,aAAa,GACvB,2BACF,CAAC;AAED,IAAa,iCAAiC,eAAE,MAC9C,0BACA,4BACF"}
1
+ {"version":3,"file":"custom-queries.js","names":["v","v.readonly"],"sources":["../../../../zero-protocol/src/custom-queries.ts"],"sourcesContent":["import {jsonSchema} from '../../shared/src/json-schema.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport {astSchema} from './ast.ts';\nimport {transformFailedBodySchema} from './error.ts';\n\nconst transformRequestBodySchema = v.array(\n v.object({\n id: v.string(),\n name: v.string(),\n args: v.readonly(v.array(jsonSchema)),\n }),\n);\nexport type TransformRequestBody = v.Infer<typeof transformRequestBodySchema>;\n\nexport const transformedQuerySchema = v.object({\n id: v.string(),\n name: v.string(),\n ast: astSchema,\n});\n\nconst appErroredQuerySchema = v.object({\n error: v.literal('app'),\n id: v.string(),\n name: v.string(),\n // optional for backwards compatibility\n message: v.string().optional(),\n details: jsonSchema.optional(),\n});\nconst parseErroredQuerySchema = v.object({\n error: v.literal('parse'),\n id: v.string(),\n name: v.string(),\n message: v.string(),\n details: jsonSchema.optional(),\n});\nexport const erroredQuerySchema = v.union(\n appErroredQuerySchema,\n parseErroredQuerySchema,\n);\nexport type ErroredQuery = v.Infer<typeof erroredQuerySchema>;\n\nconst transformResponseBodySchema = v.array(\n v.union(transformedQuerySchema, erroredQuerySchema),\n);\nexport type TransformResponseBody = v.Infer<typeof transformResponseBodySchema>;\n\nexport const transformRequestMessageSchema = v.tuple([\n v.literal('transform'),\n transformRequestBodySchema,\n]);\nexport type TransformRequestMessage = v.Infer<\n typeof transformRequestMessageSchema\n>;\nexport const transformErrorMessageSchema = v.tuple([\n v.literal('transformError'),\n v.array(erroredQuerySchema),\n]);\n\nconst transformFailedMessageSchema = v.tuple([\n v.literal('transformFailed'),\n transformFailedBodySchema,\n]);\nconst transformOkMessageSchema = v.tuple([\n v.literal('transformed'),\n transformResponseBodySchema,\n]);\n\nexport const transformResponseMessageSchema = v.union(\n transformOkMessageSchema,\n transformFailedMessageSchema,\n);\nexport type TransformResponseMessage = v.Infer<\n typeof transformResponseMessageSchema\n>;\n"],"mappings":";;;;;AAKA,IAAM,6BAA6BA,eAAE,MACnCA,eAAE,OAAO;CACP,IAAIA,eAAE,OAAO;CACb,MAAMA,eAAE,OAAO;CACf,MAAMC,SAAWD,eAAE,MAAM,UAAU,CAAC;AACtC,CAAC,CACH;AAGA,IAAa,yBAAyBA,eAAE,OAAO;CAC7C,IAAIA,eAAE,OAAO;CACb,MAAMA,eAAE,OAAO;CACf,KAAK;AACP,CAAC;AAED,IAAM,wBAAwBA,eAAE,OAAO;CACrC,OAAOA,eAAE,QAAQ,KAAK;CACtB,IAAIA,eAAE,OAAO;CACb,MAAMA,eAAE,OAAO;CAEf,SAASA,eAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,SAAS,WAAW,SAAS;AAC/B,CAAC;AACD,IAAM,0BAA0BA,eAAE,OAAO;CACvC,OAAOA,eAAE,QAAQ,OAAO;CACxB,IAAIA,eAAE,OAAO;CACb,MAAMA,eAAE,OAAO;CACf,SAASA,eAAE,OAAO;CAClB,SAAS,WAAW,SAAS;AAC/B,CAAC;AACD,IAAa,qBAAqBA,eAAE,MAClC,uBACA,uBACF;AAGA,IAAM,8BAA8BA,eAAE,MACpCA,eAAE,MAAM,wBAAwB,kBAAkB,CACpD;AAGA,IAAa,gCAAgCA,eAAE,MAAM,CACnDA,eAAE,QAAQ,WAAW,GACrB,0BACF,CAAC;AAID,IAAa,8BAA8BA,eAAE,MAAM,CACjDA,eAAE,QAAQ,gBAAgB,GAC1BA,eAAE,MAAM,kBAAkB,CAC5B,CAAC;AAED,IAAM,+BAA+BA,eAAE,MAAM,CAC3CA,eAAE,QAAQ,iBAAiB,GAC3B,yBACF,CAAC;AACD,IAAM,2BAA2BA,eAAE,MAAM,CACvCA,eAAE,QAAQ,aAAa,GACvB,2BACF,CAAC;AAED,IAAa,iCAAiCA,eAAE,MAC9C,0BACA,4BACF"}
@@ -21,7 +21,6 @@ import * as v from '../../shared/src/valita.ts';
21
21
  * equivalently to `null`.
22
22
  */
23
23
  export type Value = ReadonlyJSONValue | undefined;
24
- export declare const valueSchema: v.Type<Value>;
25
24
  /**
26
25
  * A Row is represented as a JS Object.
27
26
  *
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,KAAK,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAElD,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAsC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAiC,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,KAAK,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAIlD;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAiC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { readonlyRecord, valita_exports } from "../../shared/src/valita.js";
2
2
  import { jsonSchema } from "../../shared/src/json-schema.js";
3
- var rowSchema = readonlyRecord(valita_exports.union(jsonSchema, valita_exports.undefined()));
3
+ //#region ../zero-protocol/src/data.ts
4
+ var valueSchema = valita_exports.union(jsonSchema, valita_exports.undefined());
5
+ var rowSchema = readonlyRecord(valueSchema);
4
6
  //#endregion
5
7
  export { rowSchema };
6
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","names":[],"sources":["../../../../zero-protocol/src/data.ts"],"sourcesContent":["import {jsonSchema} from '../../shared/src/json-schema.ts';\nimport type {ReadonlyJSONValue} from '../../shared/src/json.ts';\nimport * as v from '../../shared/src/valita.ts';\n\n/**\n * The data types that Zero can represent are limited by two things:\n *\n * 1. The underlying Replicache sync layer currently can only represent JSON\n * types. This could possibly be expanded in the future, but we do want to be\n * careful of adding encoding overhead. By using JSON, we are taking\n * advantage of IndexedDB’s fast native JSValue [de]serialization which has\n * historically been a perf advantage for us.\n *\n * 2. IDs in Zero need to be comparable because we use them for sorting and row\n * identity. We could expand the set of allowed value types (to include,\n * i.e., Objects) but we would then need to restrict IDs to only comparable\n * types.\n *\n * These two facts leave us with the following allowed types. Zero's replication\n * layer must convert other types into these for tables to be used with Zero.\n *\n * For developer convenience we also allow `undefined`, which we treat\n * equivalently to `null`.\n */\nexport type Value = ReadonlyJSONValue | undefined;\n\nexport const valueSchema: v.Type<Value> = v.union(jsonSchema, v.undefined());\n\n/**\n * A Row is represented as a JS Object.\n *\n * We do everything in IVM as loosely typed values because these pipelines are\n * going to be constructed at runtime by other code, so type-safety can't buy us\n * anything.\n *\n * Also since the calling code on the client ultimately wants objects to work\n * with we end up with a lot less copies by using objects throughout.\n */\nexport type Row = Readonly<Record<string, Value>>;\n\nexport const rowSchema: v.Type<Row> = v.readonlyRecord(valueSchema);\n"],"mappings":";;AAwCA,IAAa,YAAyB,eAdI,eAAE,MAAM,YAAY,eAAE,UAAU,CAcnB,CAAW"}
1
+ {"version":3,"file":"data.js","names":["v","v.readonlyRecord"],"sources":["../../../../zero-protocol/src/data.ts"],"sourcesContent":["import {jsonSchema} from '../../shared/src/json-schema.ts';\nimport type {ReadonlyJSONValue} from '../../shared/src/json.ts';\nimport * as v from '../../shared/src/valita.ts';\n\n/**\n * The data types that Zero can represent are limited by two things:\n *\n * 1. The underlying Replicache sync layer currently can only represent JSON\n * types. This could possibly be expanded in the future, but we do want to be\n * careful of adding encoding overhead. By using JSON, we are taking\n * advantage of IndexedDB’s fast native JSValue [de]serialization which has\n * historically been a perf advantage for us.\n *\n * 2. IDs in Zero need to be comparable because we use them for sorting and row\n * identity. We could expand the set of allowed value types (to include,\n * i.e., Objects) but we would then need to restrict IDs to only comparable\n * types.\n *\n * These two facts leave us with the following allowed types. Zero's replication\n * layer must convert other types into these for tables to be used with Zero.\n *\n * For developer convenience we also allow `undefined`, which we treat\n * equivalently to `null`.\n */\nexport type Value = ReadonlyJSONValue | undefined;\n\nconst valueSchema: v.Type<Value> = v.union(jsonSchema, v.undefined());\n\n/**\n * A Row is represented as a JS Object.\n *\n * We do everything in IVM as loosely typed values because these pipelines are\n * going to be constructed at runtime by other code, so type-safety can't buy us\n * anything.\n *\n * Also since the calling code on the client ultimately wants objects to work\n * with we end up with a lot less copies by using objects throughout.\n */\nexport type Row = Readonly<Record<string, Value>>;\n\nexport const rowSchema: v.Type<Row> = v.readonlyRecord(valueSchema);\n"],"mappings":";;;AA0BA,IAAM,cAA6BA,eAAE,MAAM,YAAYA,eAAE,UAAU,CAAC;AAcpE,IAAa,YAAyBC,eAAiB,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete-clients.js","names":[],"sources":["../../../../zero-protocol/src/delete-clients.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\n\nexport const deleteClientsBodySchema = v.union(\n v.readonlyObject({\n clientIDs: v.readonlyArray(v.string()).optional(),\n clientGroupIDs: v.readonlyArray(v.string()).optional(),\n }),\n);\n\nexport const deleteClientsMessageSchema = v.tuple([\n v.literal('deleteClients'),\n deleteClientsBodySchema,\n]);\n\nexport type DeleteClientsBody = v.Infer<typeof deleteClientsBodySchema>;\nexport type DeleteClientsMessage = v.Infer<typeof deleteClientsMessageSchema>;\n"],"mappings":";;AAEA,IAAa,0BAA0B,eAAE,MACvC,eAAiB;CACf,WAAW,cAAgB,eAAE,OAAO,CAAC,EAAE,SAAS;CAChD,gBAAgB,cAAgB,eAAE,OAAO,CAAC,EAAE,SAAS;AACvD,CAAC,CACH;AAEA,IAAa,6BAA6B,eAAE,MAAM,CAChD,eAAE,QAAQ,eAAe,GACzB,uBACF,CAAC"}
1
+ {"version":3,"file":"delete-clients.js","names":["v","v.readonlyObject","v.readonlyArray"],"sources":["../../../../zero-protocol/src/delete-clients.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\n\nexport const deleteClientsBodySchema = v.union(\n v.readonlyObject({\n clientIDs: v.readonlyArray(v.string()).optional(),\n clientGroupIDs: v.readonlyArray(v.string()).optional(),\n }),\n);\n\nexport const deleteClientsMessageSchema = v.tuple([\n v.literal('deleteClients'),\n deleteClientsBodySchema,\n]);\n\nexport type DeleteClientsBody = v.Infer<typeof deleteClientsBodySchema>;\nexport type DeleteClientsMessage = v.Infer<typeof deleteClientsMessageSchema>;\n"],"mappings":";;AAEA,IAAa,0BAA0BA,eAAE,MACvCC,eAAiB;CACf,WAAWC,cAAgBF,eAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CAChD,gBAAgBE,cAAgBF,eAAE,OAAO,CAAC,CAAC,CAAC,SAAS;AACvD,CAAC,CACH;AAEA,IAAa,6BAA6BA,eAAE,MAAM,CAChDA,eAAE,QAAQ,eAAe,GACzB,uBACF,CAAC"}
@@ -57,14 +57,14 @@ export declare const downstreamSchema: v.UnionType<[v.TupleType<[v.Type<"connect
57
57
  clientID: string;
58
58
  };
59
59
  result: {
60
- data?: import("../../shared/src/json.ts").ReadonlyJSONValue | undefined;
61
- } | {
62
60
  error: "app";
63
61
  message?: string | undefined;
64
62
  details?: import("../../shared/src/json.ts").ReadonlyJSONValue | undefined;
65
63
  } | {
66
64
  error: "alreadyProcessed" | "oooMutation";
67
65
  details?: import("../../shared/src/json.ts").ReadonlyJSONValue | undefined;
66
+ } | {
67
+ data?: import("../../shared/src/json.ts").ReadonlyJSONValue | undefined;
68
68
  };
69
69
  };
70
70
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"down.js","names":[],"sources":["../../../../zero-protocol/src/down.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {connectedMessageSchema} from './connect.ts';\nimport {transformErrorMessageSchema} from './custom-queries.ts';\nimport {deleteClientsMessageSchema} from './delete-clients.ts';\nimport {errorMessageSchema} from './error.ts';\nimport {inspectDownMessageSchema} from './inspect-down.ts';\nimport {\n pokeEndMessageSchema,\n pokePartMessageSchema,\n pokeStartMessageSchema,\n} from './poke.ts';\nimport {pongMessageSchema} from './pong.ts';\nimport {pullResponseMessageSchema} from './pull.ts';\nimport {pushResponseMessageSchema} from './push.ts';\n\nexport const downstreamSchema = v.union(\n connectedMessageSchema,\n errorMessageSchema,\n pongMessageSchema,\n pokeStartMessageSchema,\n pokePartMessageSchema,\n pokeEndMessageSchema,\n pullResponseMessageSchema,\n deleteClientsMessageSchema,\n pushResponseMessageSchema,\n inspectDownMessageSchema,\n transformErrorMessageSchema,\n);\n\nexport type Downstream = v.Infer<typeof downstreamSchema>;\n"],"mappings":";;;;;;;;;;;AAeA,IAAa,mBAAmB,eAAE,MAChC,wBACA,oBACA,mBACA,wBACA,uBACA,sBACA,2BACA,4BACA,2BACA,0BACA,2BACF"}
1
+ {"version":3,"file":"down.js","names":["v"],"sources":["../../../../zero-protocol/src/down.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {connectedMessageSchema} from './connect.ts';\nimport {transformErrorMessageSchema} from './custom-queries.ts';\nimport {deleteClientsMessageSchema} from './delete-clients.ts';\nimport {errorMessageSchema} from './error.ts';\nimport {inspectDownMessageSchema} from './inspect-down.ts';\nimport {\n pokeEndMessageSchema,\n pokePartMessageSchema,\n pokeStartMessageSchema,\n} from './poke.ts';\nimport {pongMessageSchema} from './pong.ts';\nimport {pullResponseMessageSchema} from './pull.ts';\nimport {pushResponseMessageSchema} from './push.ts';\n\nexport const downstreamSchema = v.union(\n connectedMessageSchema,\n errorMessageSchema,\n pongMessageSchema,\n pokeStartMessageSchema,\n pokePartMessageSchema,\n pokeEndMessageSchema,\n pullResponseMessageSchema,\n deleteClientsMessageSchema,\n pushResponseMessageSchema,\n inspectDownMessageSchema,\n transformErrorMessageSchema,\n);\n\nexport type Downstream = v.Infer<typeof downstreamSchema>;\n"],"mappings":";;;;;;;;;;;AAeA,IAAa,mBAAmBA,eAAE,MAChC,wBACA,oBACA,mBACA,wBACA,uBACA,sBACA,2BACA,4BACA,2BACA,0BACA,2BACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","names":[],"sources":["../../../../zero-protocol/src/error.ts"],"sourcesContent":["import {jsonSchema} from '../../shared/src/json-schema.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport {ErrorKind} from './error-kind.ts';\nimport {ErrorOrigin} from './error-origin.ts';\nimport {ErrorReason} from './error-reason.ts';\nimport {mutationIDSchema} from './mutation-id.ts';\n\nconst basicErrorKindSchema = v.literalUnion(\n ErrorKind.AuthInvalidated,\n ErrorKind.ClientNotFound,\n ErrorKind.InvalidConnectionRequest,\n ErrorKind.InvalidConnectionRequestBaseCookie,\n ErrorKind.InvalidConnectionRequestLastMutationID,\n ErrorKind.InvalidConnectionRequestClientDeleted,\n ErrorKind.InvalidMessage,\n ErrorKind.InvalidPush,\n ErrorKind.MutationRateLimited,\n ErrorKind.MutationFailed,\n ErrorKind.Unauthorized,\n ErrorKind.VersionNotSupported,\n ErrorKind.SchemaVersionNotSupported,\n ErrorKind.Internal,\n);\n\nconst basicErrorBodySchema = v.object({\n kind: basicErrorKindSchema,\n message: v.string(),\n // this is optional for backwards compatibility\n origin: v.literalUnion(ErrorOrigin.Server, ErrorOrigin.ZeroCache).optional(),\n});\n\nconst backoffErrorKindSchema = v.literalUnion(\n ErrorKind.Rebalance,\n ErrorKind.Rehome,\n ErrorKind.ServerOverloaded,\n);\n\nconst backoffBodySchema = v.object({\n kind: backoffErrorKindSchema,\n message: v.string(),\n minBackoffMs: v.number().optional(),\n maxBackoffMs: v.number().optional(),\n // Query parameters to send in the next reconnect. In the event of\n // a conflict, these will be overridden by the parameters used by\n // the client; it is the responsibility of the server to avoid\n // parameter name conflicts.\n //\n // The parameters will only be added to the immediately following\n // reconnect, and not after that.\n reconnectParams: v.record(v.string()).optional(),\n origin: v.literal(ErrorOrigin.ZeroCache).optional(),\n});\n\nconst pushFailedErrorKindSchema = v.literal(ErrorKind.PushFailed);\nconst transformFailedErrorKindSchema = v.literal(ErrorKind.TransformFailed);\n\nexport const errorKindSchema: v.Type<ErrorKind> = v.union(\n basicErrorKindSchema,\n backoffErrorKindSchema,\n pushFailedErrorKindSchema,\n transformFailedErrorKindSchema,\n);\n\nconst pushFailedBaseSchema = v.object({\n kind: pushFailedErrorKindSchema,\n details: jsonSchema.optional(),\n /**\n * The mutationIDs of the mutations that failed to process.\n * This can be a subset of the mutationIDs in the request.\n */\n mutationIDs: v.array(mutationIDSchema),\n message: v.string(),\n});\n\nexport const pushFailedBodySchema = v.union(\n pushFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.Server),\n reason: v.literalUnion(\n ErrorReason.Database,\n ErrorReason.Parse,\n ErrorReason.OutOfOrderMutation,\n ErrorReason.UnsupportedPushVersion,\n ErrorReason.Internal,\n ),\n }),\n pushFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literal(ErrorReason.HTTP),\n status: v.number(),\n bodyPreview: v.string().optional(),\n }),\n pushFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literalUnion(\n ErrorReason.Timeout,\n ErrorReason.Parse,\n ErrorReason.Internal,\n ),\n }),\n);\n\nconst transformFailedBaseSchema = v.object({\n kind: transformFailedErrorKindSchema,\n details: jsonSchema.optional(),\n /**\n * The queryIDs of the queries that failed to transform.\n */\n queryIDs: v.array(v.string()),\n message: v.string(),\n});\n\nexport const transformFailedBodySchema = v.union(\n transformFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.Server),\n reason: v.literalUnion(\n ErrorReason.Database,\n ErrorReason.Parse,\n ErrorReason.Internal,\n ),\n }),\n transformFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literal(ErrorReason.HTTP),\n status: v.number(),\n bodyPreview: v.string().optional(),\n }),\n transformFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literalUnion(\n ErrorReason.Timeout,\n ErrorReason.Parse,\n ErrorReason.Internal,\n ),\n }),\n);\n\nexport const errorBodySchema = v.union(\n basicErrorBodySchema,\n backoffBodySchema,\n pushFailedBodySchema,\n transformFailedBodySchema,\n);\n\nexport type BackoffBody = v.Infer<typeof backoffBodySchema>;\nexport type PushFailedBody = v.Infer<typeof pushFailedBodySchema>;\nexport type TransformFailedBody = v.Infer<typeof transformFailedBodySchema>;\nexport type ErrorBody = v.Infer<typeof errorBodySchema>;\n\nexport const errorMessageSchema: v.Type<ErrorMessage> = v.tuple([\n v.literal('error'),\n errorBodySchema,\n]);\n\nexport type ErrorMessage = ['error', ErrorBody];\n\n/**\n * Represents an error used across zero-client, zero-cache, and zero-server.\n */\nexport class ProtocolError<\n const T extends ErrorBody = ErrorBody,\n> extends Error {\n readonly errorBody: T;\n\n constructor(errorBody: T, options?: ErrorOptions) {\n super(errorBody.message, options);\n this.name = 'ProtocolError';\n this.errorBody = errorBody;\n }\n\n get kind(): T['kind'] {\n return this.errorBody.kind;\n }\n}\n\nexport function isProtocolError(error: unknown): error is ProtocolError {\n return error instanceof ProtocolError;\n}\n"],"mappings":";;;;;;;AAOA,IAAM,uBAAuB,aAC3B,iBACA,gBACA,0BACA,oCACA,wCACA,uCACA,gBACA,aACA,qBACA,gBACA,cACA,qBACA,2BACA,QACF;AAEA,IAAM,uBAAuB,eAAE,OAAO;CACpC,MAAM;CACN,SAAS,eAAE,OAAO;CAElB,QAAQ,aAAe,QAAoB,SAAqB,EAAE,SAAS;AAC7E,CAAC;AAED,IAAM,yBAAyB,aAC7B,WACA,QACA,gBACF;AAEA,IAAM,oBAAoB,eAAE,OAAO;CACjC,MAAM;CACN,SAAS,eAAE,OAAO;CAClB,cAAc,eAAE,OAAO,EAAE,SAAS;CAClC,cAAc,eAAE,OAAO,EAAE,SAAS;CAQlC,iBAAiB,eAAE,OAAO,eAAE,OAAO,CAAC,EAAE,SAAS;CAC/C,QAAQ,eAAE,QAAQ,SAAqB,EAAE,SAAS;AACpD,CAAC;AAED,IAAM,4BAA4B,eAAE,QAAQ,UAAoB;AAChE,IAAM,iCAAiC,eAAE,QAAQ,eAAyB;AAE1E,IAAa,kBAAqC,eAAE,MAClD,sBACA,wBACA,2BACA,8BACF;AAEA,IAAM,uBAAuB,eAAE,OAAO;CACpC,MAAM;CACN,SAAS,WAAW,SAAS;;;;;CAK7B,aAAa,eAAE,MAAM,gBAAgB;CACrC,SAAS,eAAE,OAAO;AACpB,CAAC;AAED,IAAa,uBAAuB,eAAE,MACpC,qBAAqB,OAAO;CAC1B,QAAQ,eAAE,QAAQ,MAAkB;CACpC,QAAQ,aACN,UACA,OACA,oBACA,wBACA,UACF;AACF,CAAC,GACD,qBAAqB,OAAO;CAC1B,QAAQ,eAAE,QAAQ,SAAqB;CACvC,QAAQ,eAAE,QAAQ,IAAgB;CAClC,QAAQ,eAAE,OAAO;CACjB,aAAa,eAAE,OAAO,EAAE,SAAS;AACnC,CAAC,GACD,qBAAqB,OAAO;CAC1B,QAAQ,eAAE,QAAQ,SAAqB;CACvC,QAAQ,aACN,SACA,OACA,UACF;AACF,CAAC,CACH;AAEA,IAAM,4BAA4B,eAAE,OAAO;CACzC,MAAM;CACN,SAAS,WAAW,SAAS;;;;CAI7B,UAAU,eAAE,MAAM,eAAE,OAAO,CAAC;CAC5B,SAAS,eAAE,OAAO;AACpB,CAAC;AAED,IAAa,4BAA4B,eAAE,MACzC,0BAA0B,OAAO;CAC/B,QAAQ,eAAE,QAAQ,MAAkB;CACpC,QAAQ,aACN,UACA,OACA,UACF;AACF,CAAC,GACD,0BAA0B,OAAO;CAC/B,QAAQ,eAAE,QAAQ,SAAqB;CACvC,QAAQ,eAAE,QAAQ,IAAgB;CAClC,QAAQ,eAAE,OAAO;CACjB,aAAa,eAAE,OAAO,EAAE,SAAS;AACnC,CAAC,GACD,0BAA0B,OAAO;CAC/B,QAAQ,eAAE,QAAQ,SAAqB;CACvC,QAAQ,aACN,SACA,OACA,UACF;AACF,CAAC,CACH;AAEA,IAAa,kBAAkB,eAAE,MAC/B,sBACA,mBACA,sBACA,yBACF;AAOA,IAAa,qBAA2C,eAAE,MAAM,CAC9D,eAAE,QAAQ,OAAO,GACjB,eACF,CAAC;;;;AAOD,IAAa,gBAAb,cAEU,MAAM;CACd;CAEA,YAAY,WAAc,SAAwB;EAChD,MAAM,UAAU,SAAS,OAAO;EAChC,KAAK,OAAO;EACZ,KAAK,YAAY;CACnB;CAEA,IAAI,OAAkB;EACpB,OAAO,KAAK,UAAU;CACxB;AACF;AAEA,SAAgB,gBAAgB,OAAwC;CACtE,OAAO,iBAAiB;AAC1B"}
1
+ {"version":3,"file":"error.js","names":["v.literalUnion","ErrorKind.AuthInvalidated","ErrorKind.ClientNotFound","ErrorKind.InvalidConnectionRequest","ErrorKind.InvalidConnectionRequestBaseCookie","ErrorKind.InvalidConnectionRequestLastMutationID","ErrorKind.InvalidConnectionRequestClientDeleted","ErrorKind.InvalidMessage","ErrorKind.InvalidPush","ErrorKind.MutationRateLimited","ErrorKind.MutationFailed","ErrorKind.Unauthorized","ErrorKind.VersionNotSupported","ErrorKind.SchemaVersionNotSupported","ErrorKind.Internal","v","ErrorOrigin.Server","ErrorOrigin.ZeroCache","ErrorKind.Rebalance","ErrorKind.Rehome","ErrorKind.ServerOverloaded","ErrorKind.PushFailed","ErrorKind.TransformFailed","ErrorReason.Database","ErrorReason.Parse","ErrorReason.OutOfOrderMutation","ErrorReason.UnsupportedPushVersion","ErrorReason.Internal","ErrorReason.HTTP","ErrorReason.Timeout"],"sources":["../../../../zero-protocol/src/error.ts"],"sourcesContent":["import {jsonSchema} from '../../shared/src/json-schema.ts';\nimport * as v from '../../shared/src/valita.ts';\nimport {ErrorKind} from './error-kind.ts';\nimport {ErrorOrigin} from './error-origin.ts';\nimport {ErrorReason} from './error-reason.ts';\nimport {mutationIDSchema} from './mutation-id.ts';\n\nconst basicErrorKindSchema = v.literalUnion(\n ErrorKind.AuthInvalidated,\n ErrorKind.ClientNotFound,\n ErrorKind.InvalidConnectionRequest,\n ErrorKind.InvalidConnectionRequestBaseCookie,\n ErrorKind.InvalidConnectionRequestLastMutationID,\n ErrorKind.InvalidConnectionRequestClientDeleted,\n ErrorKind.InvalidMessage,\n ErrorKind.InvalidPush,\n ErrorKind.MutationRateLimited,\n ErrorKind.MutationFailed,\n ErrorKind.Unauthorized,\n ErrorKind.VersionNotSupported,\n ErrorKind.SchemaVersionNotSupported,\n ErrorKind.Internal,\n);\n\nconst basicErrorBodySchema = v.object({\n kind: basicErrorKindSchema,\n message: v.string(),\n // this is optional for backwards compatibility\n origin: v.literalUnion(ErrorOrigin.Server, ErrorOrigin.ZeroCache).optional(),\n});\n\nconst backoffErrorKindSchema = v.literalUnion(\n ErrorKind.Rebalance,\n ErrorKind.Rehome,\n ErrorKind.ServerOverloaded,\n);\n\nconst backoffBodySchema = v.object({\n kind: backoffErrorKindSchema,\n message: v.string(),\n minBackoffMs: v.number().optional(),\n maxBackoffMs: v.number().optional(),\n // Query parameters to send in the next reconnect. In the event of\n // a conflict, these will be overridden by the parameters used by\n // the client; it is the responsibility of the server to avoid\n // parameter name conflicts.\n //\n // The parameters will only be added to the immediately following\n // reconnect, and not after that.\n reconnectParams: v.record(v.string()).optional(),\n origin: v.literal(ErrorOrigin.ZeroCache).optional(),\n});\n\nconst pushFailedErrorKindSchema = v.literal(ErrorKind.PushFailed);\nconst transformFailedErrorKindSchema = v.literal(ErrorKind.TransformFailed);\n\nexport const errorKindSchema: v.Type<ErrorKind> = v.union(\n basicErrorKindSchema,\n backoffErrorKindSchema,\n pushFailedErrorKindSchema,\n transformFailedErrorKindSchema,\n);\n\nconst pushFailedBaseSchema = v.object({\n kind: pushFailedErrorKindSchema,\n details: jsonSchema.optional(),\n /**\n * The mutationIDs of the mutations that failed to process.\n * This can be a subset of the mutationIDs in the request.\n */\n mutationIDs: v.array(mutationIDSchema),\n message: v.string(),\n});\n\nexport const pushFailedBodySchema = v.union(\n pushFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.Server),\n reason: v.literalUnion(\n ErrorReason.Database,\n ErrorReason.Parse,\n ErrorReason.OutOfOrderMutation,\n ErrorReason.UnsupportedPushVersion,\n ErrorReason.Internal,\n ),\n }),\n pushFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literal(ErrorReason.HTTP),\n status: v.number(),\n bodyPreview: v.string().optional(),\n }),\n pushFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literalUnion(\n ErrorReason.Timeout,\n ErrorReason.Parse,\n ErrorReason.Internal,\n ),\n }),\n);\n\nconst transformFailedBaseSchema = v.object({\n kind: transformFailedErrorKindSchema,\n details: jsonSchema.optional(),\n /**\n * The queryIDs of the queries that failed to transform.\n */\n queryIDs: v.array(v.string()),\n message: v.string(),\n});\n\nexport const transformFailedBodySchema = v.union(\n transformFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.Server),\n reason: v.literalUnion(\n ErrorReason.Database,\n ErrorReason.Parse,\n ErrorReason.Internal,\n ),\n }),\n transformFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literal(ErrorReason.HTTP),\n status: v.number(),\n bodyPreview: v.string().optional(),\n }),\n transformFailedBaseSchema.extend({\n origin: v.literal(ErrorOrigin.ZeroCache),\n reason: v.literalUnion(\n ErrorReason.Timeout,\n ErrorReason.Parse,\n ErrorReason.Internal,\n ),\n }),\n);\n\nexport const errorBodySchema = v.union(\n basicErrorBodySchema,\n backoffBodySchema,\n pushFailedBodySchema,\n transformFailedBodySchema,\n);\n\nexport type BackoffBody = v.Infer<typeof backoffBodySchema>;\nexport type PushFailedBody = v.Infer<typeof pushFailedBodySchema>;\nexport type TransformFailedBody = v.Infer<typeof transformFailedBodySchema>;\nexport type ErrorBody = v.Infer<typeof errorBodySchema>;\n\nexport const errorMessageSchema: v.Type<ErrorMessage> = v.tuple([\n v.literal('error'),\n errorBodySchema,\n]);\n\nexport type ErrorMessage = ['error', ErrorBody];\n\n/**\n * Represents an error used across zero-client, zero-cache, and zero-server.\n */\nexport class ProtocolError<\n const T extends ErrorBody = ErrorBody,\n> extends Error {\n readonly errorBody: T;\n\n constructor(errorBody: T, options?: ErrorOptions) {\n super(errorBody.message, options);\n this.name = 'ProtocolError';\n this.errorBody = errorBody;\n }\n\n get kind(): T['kind'] {\n return this.errorBody.kind;\n }\n}\n\nexport function isProtocolError(error: unknown): error is ProtocolError {\n return error instanceof ProtocolError;\n}\n"],"mappings":";;;;;;;AAOA,IAAM,uBAAuBA,aAC3BC,iBACAC,gBACAC,0BACAC,oCACAC,wCACAC,uCACAC,gBACAC,aACAC,qBACAC,gBACAC,cACAC,qBACAC,2BACAC,QACF;AAEA,IAAM,uBAAuBC,eAAE,OAAO;CACpC,MAAM;CACN,SAASA,eAAE,OAAO;CAElB,QAAQf,aAAegB,QAAoBC,SAAqB,CAAC,CAAC,SAAS;AAC7E,CAAC;AAED,IAAM,yBAAyBjB,aAC7BkB,WACAC,QACAC,gBACF;AAEA,IAAM,oBAAoBL,eAAE,OAAO;CACjC,MAAM;CACN,SAASA,eAAE,OAAO;CAClB,cAAcA,eAAE,OAAO,CAAC,CAAC,SAAS;CAClC,cAAcA,eAAE,OAAO,CAAC,CAAC,SAAS;CAQlC,iBAAiBA,eAAE,OAAOA,eAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CAC/C,QAAQA,eAAE,QAAQE,SAAqB,CAAC,CAAC,SAAS;AACpD,CAAC;AAED,IAAM,4BAA4BF,eAAE,QAAQM,UAAoB;AAChE,IAAM,iCAAiCN,eAAE,QAAQO,eAAyB;AAE1E,IAAa,kBAAqCP,eAAE,MAClD,sBACA,wBACA,2BACA,8BACF;AAEA,IAAM,uBAAuBA,eAAE,OAAO;CACpC,MAAM;CACN,SAAS,WAAW,SAAS;;;;;CAK7B,aAAaA,eAAE,MAAM,gBAAgB;CACrC,SAASA,eAAE,OAAO;AACpB,CAAC;AAED,IAAa,uBAAuBA,eAAE,MACpC,qBAAqB,OAAO;CAC1B,QAAQA,eAAE,QAAQC,MAAkB;CACpC,QAAQhB,aACNuB,UACAC,OACAC,oBACAC,wBACAC,UACF;AACF,CAAC,GACD,qBAAqB,OAAO;CAC1B,QAAQZ,eAAE,QAAQE,SAAqB;CACvC,QAAQF,eAAE,QAAQa,IAAgB;CAClC,QAAQb,eAAE,OAAO;CACjB,aAAaA,eAAE,OAAO,CAAC,CAAC,SAAS;AACnC,CAAC,GACD,qBAAqB,OAAO;CAC1B,QAAQA,eAAE,QAAQE,SAAqB;CACvC,QAAQjB,aACN6B,SACAL,OACAG,UACF;AACF,CAAC,CACH;AAEA,IAAM,4BAA4BZ,eAAE,OAAO;CACzC,MAAM;CACN,SAAS,WAAW,SAAS;;;;CAI7B,UAAUA,eAAE,MAAMA,eAAE,OAAO,CAAC;CAC5B,SAASA,eAAE,OAAO;AACpB,CAAC;AAED,IAAa,4BAA4BA,eAAE,MACzC,0BAA0B,OAAO;CAC/B,QAAQA,eAAE,QAAQC,MAAkB;CACpC,QAAQhB,aACNuB,UACAC,OACAG,UACF;AACF,CAAC,GACD,0BAA0B,OAAO;CAC/B,QAAQZ,eAAE,QAAQE,SAAqB;CACvC,QAAQF,eAAE,QAAQa,IAAgB;CAClC,QAAQb,eAAE,OAAO;CACjB,aAAaA,eAAE,OAAO,CAAC,CAAC,SAAS;AACnC,CAAC,GACD,0BAA0B,OAAO;CAC/B,QAAQA,eAAE,QAAQE,SAAqB;CACvC,QAAQjB,aACN6B,SACAL,OACAG,UACF;AACF,CAAC,CACH;AAEA,IAAa,kBAAkBZ,eAAE,MAC/B,sBACA,mBACA,sBACA,yBACF;AAOA,IAAa,qBAA2CA,eAAE,MAAM,CAC9DA,eAAE,QAAQ,OAAO,GACjB,eACF,CAAC;;;;AAOD,IAAa,gBAAb,cAEU,MAAM;CACd;CAEA,YAAY,WAAc,SAAwB;EAChD,MAAM,UAAU,SAAS,OAAO;EAChC,KAAK,OAAO;EACZ,KAAK,YAAY;CACnB;CAEA,IAAI,OAAkB;EACpB,OAAO,KAAK,UAAU;CACxB;AACF;AAEA,SAAgB,gBAAgB,OAAwC;CACtE,OAAO,iBAAiB;AAC1B"}