@rocicorp/zero 0.2.2024101101 → 0.3.2024102500

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 (632) hide show
  1. package/out/react.js +91 -39
  2. package/out/react.js.map +2 -2
  3. package/out/replicache/src/async-iterable-to-array.js +8 -0
  4. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  5. package/out/replicache/src/bg-interval.js +38 -0
  6. package/out/replicache/src/bg-interval.js.map +1 -0
  7. package/out/replicache/src/binary-search.js +31 -0
  8. package/out/replicache/src/binary-search.js.map +1 -0
  9. package/out/replicache/src/broadcast-channel.js +29 -0
  10. package/out/replicache/src/broadcast-channel.js.map +1 -0
  11. package/out/replicache/src/btree/diff.js +6 -0
  12. package/out/replicache/src/btree/diff.js.map +1 -0
  13. package/out/replicache/src/btree/node.js +392 -0
  14. package/out/replicache/src/btree/node.js.map +1 -0
  15. package/out/replicache/src/btree/read.js +227 -0
  16. package/out/replicache/src/btree/read.js.map +1 -0
  17. package/out/replicache/src/btree/splice.js +79 -0
  18. package/out/replicache/src/btree/splice.js.map +1 -0
  19. package/out/replicache/src/btree/write.js +154 -0
  20. package/out/replicache/src/btree/write.js.map +1 -0
  21. package/out/replicache/src/call-default-fetch.js +37 -0
  22. package/out/replicache/src/call-default-fetch.js.map +1 -0
  23. package/out/replicache/src/config.js +13 -0
  24. package/out/replicache/src/config.js.map +1 -0
  25. package/out/replicache/src/connection-loop-delegates.js +30 -0
  26. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  27. package/out/replicache/src/connection-loop.js +268 -0
  28. package/out/replicache/src/connection-loop.js.map +1 -0
  29. package/out/replicache/src/cookies.js +41 -0
  30. package/out/replicache/src/cookies.js.map +1 -0
  31. package/out/replicache/src/dag/chunk.js +60 -0
  32. package/out/replicache/src/dag/chunk.js.map +1 -0
  33. package/out/replicache/src/dag/gc.js +126 -0
  34. package/out/replicache/src/dag/gc.js.map +1 -0
  35. package/out/replicache/src/dag/key-type-enum.js +6 -0
  36. package/out/replicache/src/dag/key-type-enum.js.map +1 -0
  37. package/out/replicache/src/dag/key.js +54 -0
  38. package/out/replicache/src/dag/key.js.map +1 -0
  39. package/out/replicache/src/dag/lazy-store.js +532 -0
  40. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  41. package/out/replicache/src/dag/store-impl.js +175 -0
  42. package/out/replicache/src/dag/store-impl.js.map +1 -0
  43. package/out/replicache/src/dag/store.js +22 -0
  44. package/out/replicache/src/dag/store.js.map +1 -0
  45. package/out/replicache/src/dag/visitor.js +22 -0
  46. package/out/replicache/src/dag/visitor.js.map +1 -0
  47. package/out/replicache/src/db/commit.js +443 -0
  48. package/out/replicache/src/db/commit.js.map +1 -0
  49. package/out/replicache/src/db/index-operation-enum.js +4 -0
  50. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  51. package/out/replicache/src/db/index.js +170 -0
  52. package/out/replicache/src/db/index.js.map +1 -0
  53. package/out/replicache/src/db/meta-type-enum.js +7 -0
  54. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  55. package/out/replicache/src/db/read.js +59 -0
  56. package/out/replicache/src/db/read.js.map +1 -0
  57. package/out/replicache/src/db/rebase.js +56 -0
  58. package/out/replicache/src/db/rebase.js.map +1 -0
  59. package/out/replicache/src/db/scan.js +2 -0
  60. package/out/replicache/src/db/scan.js.map +1 -0
  61. package/out/replicache/src/db/write.js +260 -0
  62. package/out/replicache/src/db/write.js.map +1 -0
  63. package/out/replicache/src/error-responses.js +30 -0
  64. package/out/replicache/src/error-responses.js.map +1 -0
  65. package/out/replicache/src/filter-async-iterable.js +15 -0
  66. package/out/replicache/src/filter-async-iterable.js.map +1 -0
  67. package/out/replicache/src/format-version-enum.js +9 -0
  68. package/out/replicache/src/format-version-enum.js.map +1 -0
  69. package/out/replicache/src/format-version.js +8 -0
  70. package/out/replicache/src/format-version.js.map +1 -0
  71. package/out/replicache/src/frozen-json.js +151 -0
  72. package/out/replicache/src/frozen-json.js.map +1 -0
  73. package/out/replicache/src/get-default-puller.js +74 -0
  74. package/out/replicache/src/get-default-puller.js.map +1 -0
  75. package/out/replicache/src/get-default-pusher.js +36 -0
  76. package/out/replicache/src/get-default-pusher.js.map +1 -0
  77. package/out/replicache/src/hash.js +73 -0
  78. package/out/replicache/src/hash.js.map +1 -0
  79. package/out/replicache/src/http-request-info.js +7 -0
  80. package/out/replicache/src/http-request-info.js.map +1 -0
  81. package/out/replicache/src/impl.js +2 -0
  82. package/out/replicache/src/impl.js.map +1 -0
  83. package/out/replicache/src/index-defs.js +28 -0
  84. package/out/replicache/src/index-defs.js.map +1 -0
  85. package/out/replicache/src/invoke-kind-enum.js +4 -0
  86. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  87. package/out/replicache/src/iterable-union.js +5 -0
  88. package/out/replicache/src/iterable-union.js.map +1 -0
  89. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +93 -0
  90. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  91. package/out/replicache/src/kv/idb-store.js +179 -0
  92. package/out/replicache/src/kv/idb-store.js.map +1 -0
  93. package/out/replicache/src/kv/mem-store.js +61 -0
  94. package/out/replicache/src/kv/mem-store.js.map +1 -0
  95. package/out/replicache/src/kv/read-impl.js +23 -0
  96. package/out/replicache/src/kv/read-impl.js.map +1 -0
  97. package/out/replicache/src/kv/store.js +2 -0
  98. package/out/replicache/src/kv/store.js.map +1 -0
  99. package/out/replicache/src/kv/write-impl-base.js +48 -0
  100. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  101. package/out/replicache/src/kv/write-impl.js +25 -0
  102. package/out/replicache/src/kv/write-impl.js.map +1 -0
  103. package/out/replicache/src/lazy.js +10 -0
  104. package/out/replicache/src/lazy.js.map +1 -0
  105. package/out/replicache/src/log-options.js +13 -0
  106. package/out/replicache/src/log-options.js.map +1 -0
  107. package/out/replicache/src/merge-async-iterables.js +61 -0
  108. package/out/replicache/src/merge-async-iterables.js.map +1 -0
  109. package/out/replicache/src/mod.js +14 -0
  110. package/out/replicache/src/mod.js.map +1 -0
  111. package/out/replicache/src/mutation-recovery.js +439 -0
  112. package/out/replicache/src/mutation-recovery.js.map +1 -0
  113. package/out/replicache/src/new-client-channel.js +77 -0
  114. package/out/replicache/src/new-client-channel.js.map +1 -0
  115. package/out/replicache/src/on-persist-channel.js +33 -0
  116. package/out/replicache/src/on-persist-channel.js.map +1 -0
  117. package/out/replicache/src/patch-operation.js +37 -0
  118. package/out/replicache/src/patch-operation.js.map +1 -0
  119. package/out/replicache/src/pending-mutations.js +18 -0
  120. package/out/replicache/src/pending-mutations.js.map +1 -0
  121. package/out/replicache/src/persist/client-gc.js +38 -0
  122. package/out/replicache/src/persist/client-gc.js.map +1 -0
  123. package/out/replicache/src/persist/client-group-gc.js +38 -0
  124. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  125. package/out/replicache/src/persist/client-groups.js +180 -0
  126. package/out/replicache/src/persist/client-groups.js.map +1 -0
  127. package/out/replicache/src/persist/clients.js +390 -0
  128. package/out/replicache/src/persist/clients.js.map +1 -0
  129. package/out/replicache/src/persist/collect-idb-databases.js +174 -0
  130. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  131. package/out/replicache/src/persist/gather-mem-only-visitor.js +25 -0
  132. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  133. package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -0
  134. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  135. package/out/replicache/src/persist/heartbeat.js +37 -0
  136. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  137. package/out/replicache/src/persist/idb-databases-store-db-name.js +18 -0
  138. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  139. package/out/replicache/src/persist/idb-databases-store.js +90 -0
  140. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  141. package/out/replicache/src/persist/make-client-id.js +13 -0
  142. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  143. package/out/replicache/src/persist/persist.js +132 -0
  144. package/out/replicache/src/persist/persist.js.map +1 -0
  145. package/out/replicache/src/persist/refresh.js +147 -0
  146. package/out/replicache/src/persist/refresh.js.map +1 -0
  147. package/out/replicache/src/process-scheduler.js +93 -0
  148. package/out/replicache/src/process-scheduler.js.map +1 -0
  149. package/out/replicache/src/puller.js +2 -0
  150. package/out/replicache/src/puller.js.map +1 -0
  151. package/out/replicache/src/pusher.js +32 -0
  152. package/out/replicache/src/pusher.js.map +1 -0
  153. package/out/replicache/src/replicache-impl.js +1007 -0
  154. package/out/replicache/src/replicache-impl.js.map +1 -0
  155. package/out/replicache/src/replicache-options.js +2 -0
  156. package/out/replicache/src/replicache-options.js.map +1 -0
  157. package/out/replicache/src/replicache.js +387 -0
  158. package/out/replicache/src/replicache.js.map +1 -0
  159. package/out/replicache/src/request-idle.js +15 -0
  160. package/out/replicache/src/request-idle.js.map +1 -0
  161. package/out/replicache/src/scan-iterator.js +202 -0
  162. package/out/replicache/src/scan-iterator.js.map +1 -0
  163. package/out/replicache/src/scan-options.js +45 -0
  164. package/out/replicache/src/scan-options.js.map +1 -0
  165. package/out/replicache/src/set-interval-with-signal.js +7 -0
  166. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  167. package/out/replicache/src/size-of-value.js +77 -0
  168. package/out/replicache/src/size-of-value.js.map +1 -0
  169. package/out/replicache/src/subscriptions.js +357 -0
  170. package/out/replicache/src/subscriptions.js.map +1 -0
  171. package/out/replicache/src/sync/diff.js +75 -0
  172. package/out/replicache/src/sync/diff.js.map +1 -0
  173. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +5 -0
  174. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  175. package/out/replicache/src/sync/ids.js +4 -0
  176. package/out/replicache/src/sync/ids.js.map +1 -0
  177. package/out/replicache/src/sync/patch.js +41 -0
  178. package/out/replicache/src/sync/patch.js.map +1 -0
  179. package/out/replicache/src/sync/pull-error.js +16 -0
  180. package/out/replicache/src/sync/pull-error.js.map +1 -0
  181. package/out/replicache/src/sync/pull.js +375 -0
  182. package/out/replicache/src/sync/pull.js.map +1 -0
  183. package/out/replicache/src/sync/push.js +141 -0
  184. package/out/replicache/src/sync/push.js.map +1 -0
  185. package/out/replicache/src/sync/request-id.js +31 -0
  186. package/out/replicache/src/sync/request-id.js.map +1 -0
  187. package/out/replicache/src/sync/sync-head-name.js +2 -0
  188. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  189. package/out/replicache/src/test-license-key.js +3 -0
  190. package/out/replicache/src/test-license-key.js.map +1 -0
  191. package/out/replicache/src/to-error.js +7 -0
  192. package/out/replicache/src/to-error.js.map +1 -0
  193. package/out/replicache/src/transaction-closed-error.js +17 -0
  194. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  195. package/out/replicache/src/transactions.js +144 -0
  196. package/out/replicache/src/transactions.js.map +1 -0
  197. package/out/replicache/src/types.js +2 -0
  198. package/out/replicache/src/types.js.map +1 -0
  199. package/out/replicache/src/version.js +5 -0
  200. package/out/replicache/src/version.js.map +1 -0
  201. package/out/replicache/src/with-transactions.js +28 -0
  202. package/out/replicache/src/with-transactions.js.map +1 -0
  203. package/out/shared/src/browser-env.js +14 -0
  204. package/out/shared/src/browser-env.js.map +1 -0
  205. package/out/shared/src/document-visible.js +76 -0
  206. package/out/shared/src/document-visible.js.map +1 -0
  207. package/out/shared/src/immutable.js +2 -0
  208. package/out/shared/src/immutable.js.map +1 -0
  209. package/out/shared/src/iterables.d.ts +2 -2
  210. package/out/shared/src/iterables.d.ts.map +1 -1
  211. package/out/shared/src/iterables.js +40 -0
  212. package/out/shared/src/iterables.js.map +1 -0
  213. package/out/shared/src/navigator.js +3 -0
  214. package/out/shared/src/navigator.js.map +1 -0
  215. package/out/shared/src/random-uint64.js +8 -0
  216. package/out/shared/src/random-uint64.js.map +1 -0
  217. package/out/shared/src/random-values.d.ts +1 -0
  218. package/out/shared/src/random-values.d.ts.map +1 -1
  219. package/out/shared/src/random-values.js +22 -0
  220. package/out/shared/src/random-values.js.map +1 -0
  221. package/out/shared/src/set-utils.d.ts +1 -1
  222. package/out/shared/src/set-utils.d.ts.map +1 -1
  223. package/out/shared/src/set-utils.js +6 -4
  224. package/out/shared/src/set-utils.js.map +1 -1
  225. package/out/shared/src/sorted-entries.d.ts +2 -0
  226. package/out/shared/src/sorted-entries.d.ts.map +1 -0
  227. package/out/shared/src/sorted-entries.js +6 -0
  228. package/out/shared/src/sorted-entries.js.map +1 -0
  229. package/out/shared/src/types.js +2 -0
  230. package/out/shared/src/types.js.map +1 -0
  231. package/out/shared/src/valita.d.ts +1 -1
  232. package/out/shared/src/valita.d.ts.map +1 -1
  233. package/out/shared/src/valita.js.map +1 -1
  234. package/out/shared/src/writable.d.ts +4 -0
  235. package/out/shared/src/writable.d.ts.map +1 -0
  236. package/out/shared/src/writable.js +2 -0
  237. package/out/shared/src/writable.js.map +1 -0
  238. package/out/zero/src/config.d.ts +2 -0
  239. package/out/zero/src/config.d.ts.map +1 -0
  240. package/out/zero/src/config.js +2 -0
  241. package/out/zero/src/config.js.map +1 -0
  242. package/out/zero-cache/src/config/config-query.d.ts +18 -0
  243. package/out/zero-cache/src/config/config-query.d.ts.map +1 -0
  244. package/out/zero-cache/src/config/config-query.js +19 -0
  245. package/out/zero-cache/src/config/config-query.js.map +1 -0
  246. package/out/zero-cache/src/config/define-config.d.ts +43 -0
  247. package/out/zero-cache/src/config/define-config.d.ts.map +1 -0
  248. package/out/zero-cache/src/config/define-config.js +120 -0
  249. package/out/zero-cache/src/config/define-config.js.map +1 -0
  250. package/out/zero-cache/src/config/refs.d.ts +3 -0
  251. package/out/zero-cache/src/config/refs.d.ts.map +1 -0
  252. package/out/zero-cache/src/config/refs.js +14 -0
  253. package/out/zero-cache/src/config/refs.js.map +1 -0
  254. package/out/zero-cache/src/config/zero-config.d.ts +126 -686
  255. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  256. package/out/zero-cache/src/config/zero-config.js +43 -161
  257. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  258. package/out/zero-cache/src/db/create.d.ts +8 -0
  259. package/out/zero-cache/src/db/create.d.ts.map +1 -0
  260. package/out/zero-cache/src/db/create.js +39 -0
  261. package/out/zero-cache/src/db/create.js.map +1 -0
  262. package/out/zero-cache/src/db/lite-tables.d.ts +3 -3
  263. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  264. package/out/zero-cache/src/db/lite-tables.js +29 -20
  265. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  266. package/out/zero-cache/src/db/migration-lite.d.ts +60 -20
  267. package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
  268. package/out/zero-cache/src/db/migration-lite.js +89 -69
  269. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  270. package/out/zero-cache/src/db/migration.d.ts +61 -20
  271. package/out/zero-cache/src/db/migration.d.ts.map +1 -1
  272. package/out/zero-cache/src/db/migration.js +92 -75
  273. package/out/zero-cache/src/db/migration.js.map +1 -1
  274. package/out/zero-cache/src/db/pg-to-lite.d.ts +11 -0
  275. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -0
  276. package/out/zero-cache/src/{services/change-streamer/pg/schema/lite.js → db/pg-to-lite.js} +27 -15
  277. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -0
  278. package/out/zero-cache/src/db/specs.d.ts +73 -0
  279. package/out/zero-cache/src/db/specs.d.ts.map +1 -0
  280. package/out/zero-cache/src/db/specs.js +30 -0
  281. package/out/zero-cache/src/db/specs.js.map +1 -0
  282. package/out/zero-cache/src/db/statements.d.ts +1 -1
  283. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  284. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
  285. package/out/zero-cache/src/server/life-cycle.js +9 -5
  286. package/out/zero-cache/src/server/life-cycle.js.map +1 -1
  287. package/out/zero-cache/src/server/main.js +3 -3
  288. package/out/zero-cache/src/server/main.js.map +1 -1
  289. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  290. package/out/zero-cache/src/server/syncer.js +2 -1
  291. package/out/zero-cache/src/server/syncer.js.map +1 -1
  292. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +1 -1
  293. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  294. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +1 -4
  295. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  296. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +455 -13
  297. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  298. package/out/zero-cache/src/services/change-streamer/change-streamer.js +16 -0
  299. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  300. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -1
  301. package/out/zero-cache/src/services/change-streamer/pg/change-source.js +313 -88
  302. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -1
  303. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
  304. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +13 -54
  305. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
  306. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +239 -59
  307. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
  308. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +291 -183
  309. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
  310. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts +5 -0
  311. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts.map +1 -0
  312. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js +18 -0
  313. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js.map +1 -0
  314. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +4 -4
  315. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
  316. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +14 -19
  317. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
  318. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts +17 -0
  319. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts.map +1 -0
  320. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js +150 -0
  321. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js.map +1 -0
  322. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts.map +1 -1
  323. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +11 -5
  324. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -1
  325. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +325 -26
  326. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
  327. package/out/zero-cache/src/services/change-streamer/schema/change.js +84 -1
  328. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +1 -1
  329. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +2 -2
  330. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  331. package/out/zero-cache/src/services/change-streamer/schema/init.js +13 -5
  332. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  333. package/out/zero-cache/src/services/change-streamer/schema/tables.js +6 -6
  334. package/out/zero-cache/src/services/change-streamer/storer.js +4 -4
  335. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -0
  336. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
  337. package/out/zero-cache/src/services/dispatcher/connect-params.js +5 -2
  338. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
  339. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  340. package/out/zero-cache/src/services/mutagen/mutagen.js +21 -22
  341. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  342. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
  343. package/out/zero-cache/src/services/mutagen/write-authorizer.js +18 -9
  344. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
  345. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  346. package/out/zero-cache/src/services/replicator/incremental-sync.js +131 -16
  347. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  348. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +20 -3
  349. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  350. package/out/zero-cache/src/services/replicator/schema/change-log.js +46 -14
  351. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  352. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +1 -1
  353. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  354. package/out/zero-cache/src/services/replicator/schema/replication-state.js +9 -9
  355. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  356. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +4 -3
  357. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  358. package/out/zero-cache/src/services/view-syncer/client-handler.js +27 -21
  359. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  360. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -4
  361. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  362. package/out/zero-cache/src/services/view-syncer/cvr-store.js +63 -18
  363. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  364. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +11 -8
  365. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  366. package/out/zero-cache/src/services/view-syncer/cvr.js +22 -13
  367. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  368. package/out/zero-cache/src/services/view-syncer/database-storage.js +1 -1
  369. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
  370. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +31 -0
  371. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -0
  372. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +53 -0
  373. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -0
  374. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +13 -5
  375. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  376. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +27 -0
  377. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  378. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +2 -1
  379. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  380. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +5 -4
  381. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  382. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +4 -0
  383. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -0
  384. package/out/zero-cache/src/services/view-syncer/schema/init.js +16 -0
  385. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -0
  386. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +8 -216
  387. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  388. package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -4
  389. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  390. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +12 -4
  391. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  392. package/out/zero-cache/src/services/view-syncer/snapshotter.js +59 -49
  393. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  394. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -4
  395. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  396. package/out/zero-cache/src/services/view-syncer/view-syncer.js +105 -44
  397. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  398. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  399. package/out/zero-cache/src/types/lite.js +8 -9
  400. package/out/zero-cache/src/types/lite.js.map +1 -1
  401. package/out/zero-cache/src/types/pg.d.ts +10 -4
  402. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  403. package/out/zero-cache/src/types/pg.js +37 -15
  404. package/out/zero-cache/src/types/pg.js.map +1 -1
  405. package/out/zero-cache/src/workers/connection.d.ts +4 -2
  406. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  407. package/out/zero-cache/src/workers/connection.js +21 -2
  408. package/out/zero-cache/src/workers/connection.js.map +1 -1
  409. package/out/zero-cache/src/workers/syncer.d.ts +2 -1
  410. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  411. package/out/zero-cache/src/workers/syncer.js +20 -9
  412. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  413. package/out/zero-client/src/client/context.d.ts +1 -1
  414. package/out/zero-client/src/client/context.d.ts.map +1 -1
  415. package/out/zero-client/src/client/context.js +99 -0
  416. package/out/zero-client/src/client/context.js.map +1 -0
  417. package/out/zero-client/src/client/crud.d.ts +8 -10
  418. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  419. package/out/zero-client/src/client/crud.js +181 -0
  420. package/out/zero-client/src/client/crud.js.map +1 -0
  421. package/out/zero-client/src/client/enable-analytics.js +21 -0
  422. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  423. package/out/zero-client/src/client/http-string.js +14 -0
  424. package/out/zero-client/src/client/http-string.js.map +1 -0
  425. package/out/zero-client/src/client/keys.d.ts +3 -2
  426. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  427. package/out/zero-client/src/client/keys.js +32 -0
  428. package/out/zero-client/src/client/keys.js.map +1 -0
  429. package/out/zero-client/src/client/log-options.js +57 -0
  430. package/out/zero-client/src/client/log-options.js.map +1 -0
  431. package/out/zero-client/src/client/metrics.js +268 -0
  432. package/out/zero-client/src/client/metrics.js.map +1 -0
  433. package/out/zero-client/src/client/normalized-schema.d.ts +17 -0
  434. package/out/zero-client/src/client/normalized-schema.d.ts.map +1 -0
  435. package/out/zero-client/src/client/normalized-schema.js +31 -0
  436. package/out/zero-client/src/client/normalized-schema.js.map +1 -0
  437. package/out/zero-client/src/client/options.js +2 -0
  438. package/out/zero-client/src/client/options.js.map +1 -0
  439. package/out/zero-client/src/client/query-manager.d.ts +18 -3
  440. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  441. package/out/zero-client/src/client/query-manager.js +149 -0
  442. package/out/zero-client/src/client/query-manager.js.map +1 -0
  443. package/out/zero-client/src/client/reload-error-handler.js +23 -0
  444. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  445. package/out/zero-client/src/client/replicache-types.js +2 -0
  446. package/out/zero-client/src/client/replicache-types.js.map +1 -0
  447. package/out/zero-client/src/client/server-error.js +22 -0
  448. package/out/zero-client/src/client/server-error.js.map +1 -0
  449. package/out/zero-client/src/client/server-option.js +37 -0
  450. package/out/zero-client/src/client/server-option.js.map +1 -0
  451. package/out/zero-client/src/client/version.js +5 -0
  452. package/out/zero-client/src/client/version.js.map +1 -0
  453. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  454. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  455. package/out/zero-client/src/client/zero-poke-handler.js +240 -0
  456. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  457. package/out/zero-client/src/client/zero.d.ts +3 -2
  458. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  459. package/out/zero-client/src/client/zero.js +1212 -0
  460. package/out/zero-client/src/client/zero.js.map +1 -0
  461. package/out/zero-client/src/mod.d.ts +1 -0
  462. package/out/zero-client/src/mod.d.ts.map +1 -1
  463. package/out/zero-client/src/mod.js +5 -0
  464. package/out/zero-client/src/mod.js.map +1 -0
  465. package/out/zero-client/src/util/nanoid.js +34 -0
  466. package/out/zero-client/src/util/nanoid.js.map +1 -0
  467. package/out/zero-client/src/util/socket.js +4 -0
  468. package/out/zero-client/src/util/socket.js.map +1 -0
  469. package/out/zero-protocol/src/ast.d.ts +87 -1
  470. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  471. package/out/zero-protocol/src/ast.js +53 -0
  472. package/out/zero-protocol/src/ast.js.map +1 -1
  473. package/out/zero-protocol/src/change-desired-queries.d.ts +6 -6
  474. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  475. package/out/zero-protocol/src/clients-patch.d.ts +1 -1
  476. package/out/zero-protocol/src/connect.d.ts +15 -8
  477. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  478. package/out/zero-protocol/src/connect.js +21 -0
  479. package/out/zero-protocol/src/connect.js.map +1 -1
  480. package/out/zero-protocol/src/data.d.ts +36 -0
  481. package/out/zero-protocol/src/data.d.ts.map +1 -0
  482. package/out/zero-protocol/src/data.js +4 -0
  483. package/out/zero-protocol/src/data.js.map +1 -0
  484. package/out/zero-protocol/src/delete-clients.d.ts +4 -4
  485. package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
  486. package/out/zero-protocol/src/down.d.ts +18 -16
  487. package/out/zero-protocol/src/down.d.ts.map +1 -1
  488. package/out/zero-protocol/src/down.js +2 -1
  489. package/out/zero-protocol/src/down.js.map +1 -1
  490. package/out/zero-protocol/src/mod.d.ts +1 -2
  491. package/out/zero-protocol/src/mod.d.ts.map +1 -1
  492. package/out/zero-protocol/src/mod.js +2 -2
  493. package/out/zero-protocol/src/mod.js.map +1 -1
  494. package/out/zero-protocol/src/ping.d.ts +1 -1
  495. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  496. package/out/zero-protocol/src/poke.d.ts +26 -26
  497. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  498. package/out/zero-protocol/src/poke.js +8 -5
  499. package/out/zero-protocol/src/poke.js.map +1 -1
  500. package/out/zero-protocol/src/pong.d.ts +1 -1
  501. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  502. package/out/zero-protocol/src/primary-key.d.ts +2 -3
  503. package/out/zero-protocol/src/primary-key.d.ts.map +1 -1
  504. package/out/zero-protocol/src/primary-key.js +1 -3
  505. package/out/zero-protocol/src/primary-key.js.map +1 -1
  506. package/out/zero-protocol/src/pull.d.ts +4 -4
  507. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  508. package/out/zero-protocol/src/push.d.ts +105 -98
  509. package/out/zero-protocol/src/push.d.ts.map +1 -1
  510. package/out/zero-protocol/src/push.js +17 -13
  511. package/out/zero-protocol/src/push.js.map +1 -1
  512. package/out/zero-protocol/src/queries-patch.d.ts +4 -4
  513. package/out/zero-protocol/src/row-patch.d.ts +38 -0
  514. package/out/zero-protocol/src/row-patch.d.ts.map +1 -0
  515. package/out/zero-protocol/src/{entities-patch.js → row-patch.js} +10 -11
  516. package/out/zero-protocol/src/row-patch.js.map +1 -0
  517. package/out/zero-protocol/src/up.d.ts +28 -27
  518. package/out/zero-protocol/src/up.d.ts.map +1 -1
  519. package/out/zero-protocol/src/warm.d.ts +10 -0
  520. package/out/zero-protocol/src/warm.d.ts.map +1 -0
  521. package/out/zero-protocol/src/warm.js +6 -0
  522. package/out/zero-protocol/src/warm.js.map +1 -0
  523. package/out/zero-react/src/use-query.d.ts.map +1 -1
  524. package/out/zero.js +522 -217
  525. package/out/zero.js.map +4 -4
  526. package/out/zql/src/zql/builder/builder.d.ts +3 -4
  527. package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
  528. package/out/zql/src/zql/builder/builder.js +1 -2
  529. package/out/zql/src/zql/builder/builder.js.map +1 -1
  530. package/out/zql/src/zql/builder/filter.d.ts +2 -2
  531. package/out/zql/src/zql/builder/filter.d.ts.map +1 -1
  532. package/out/zql/src/zql/builder/filter.js.map +1 -1
  533. package/out/zql/src/zql/ivm/array-view.d.ts +5 -12
  534. package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
  535. package/out/zql/src/zql/ivm/array-view.js +226 -0
  536. package/out/zql/src/zql/ivm/array-view.js.map +1 -0
  537. package/out/zql/src/zql/ivm/change.d.ts +2 -1
  538. package/out/zql/src/zql/ivm/change.d.ts.map +1 -1
  539. package/out/zql/src/zql/ivm/data.d.ts +2 -33
  540. package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
  541. package/out/zql/src/zql/ivm/data.js.map +1 -1
  542. package/out/zql/src/zql/ivm/filter.d.ts +2 -1
  543. package/out/zql/src/zql/ivm/filter.d.ts.map +1 -1
  544. package/out/zql/src/zql/ivm/filter.js.map +1 -1
  545. package/out/zql/src/zql/ivm/join.d.ts +1 -1
  546. package/out/zql/src/zql/ivm/join.d.ts.map +1 -1
  547. package/out/zql/src/zql/ivm/join.js +68 -24
  548. package/out/zql/src/zql/ivm/join.js.map +1 -1
  549. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
  550. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
  551. package/out/zql/src/zql/ivm/memory-source.d.ts +8 -6
  552. package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
  553. package/out/zql/src/zql/ivm/memory-source.js +2 -0
  554. package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
  555. package/out/zql/src/zql/ivm/memory-storage.js +33 -0
  556. package/out/zql/src/zql/ivm/memory-storage.js.map +1 -0
  557. package/out/zql/src/zql/ivm/operator.d.ts +2 -1
  558. package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
  559. package/out/zql/src/zql/ivm/schema.d.ts +3 -3
  560. package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
  561. package/out/zql/src/zql/ivm/schema.js.map +1 -1
  562. package/out/zql/src/zql/ivm/skip.d.ts +2 -1
  563. package/out/zql/src/zql/ivm/skip.d.ts.map +1 -1
  564. package/out/zql/src/zql/ivm/skip.js.map +1 -1
  565. package/out/zql/src/zql/ivm/source.d.ts +2 -2
  566. package/out/zql/src/zql/ivm/source.d.ts.map +1 -1
  567. package/out/zql/src/zql/ivm/take.d.ts.map +1 -1
  568. package/out/zql/src/zql/ivm/take.js.map +1 -1
  569. package/out/zql/src/zql/query/like.d.ts +2 -0
  570. package/out/zql/src/zql/query/like.d.ts.map +1 -0
  571. package/out/zql/src/zql/query/like.js +18 -0
  572. package/out/zql/src/zql/query/like.js.map +1 -0
  573. package/out/zql/src/zql/query/normalize-table-schema.d.ts +48 -0
  574. package/out/zql/src/zql/query/normalize-table-schema.d.ts.map +1 -0
  575. package/out/zql/src/zql/query/normalize-table-schema.js +116 -0
  576. package/out/zql/src/zql/query/normalize-table-schema.js.map +1 -0
  577. package/out/zql/src/zql/query/query-impl.d.ts +6 -5
  578. package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
  579. package/out/zql/src/zql/query/query-impl.js +263 -0
  580. package/out/zql/src/zql/query/query-impl.js.map +1 -0
  581. package/out/zql/src/zql/query/query.d.ts +1 -1
  582. package/out/zql/src/zql/query/query.d.ts.map +1 -1
  583. package/out/zql/src/zql/query/query.js +3 -0
  584. package/out/zql/src/zql/query/query.js.map +1 -0
  585. package/out/zql/src/zql/query/schema.d.ts +13 -4
  586. package/out/zql/src/zql/query/schema.d.ts.map +1 -1
  587. package/out/zql/src/zql/query/schema.js +7 -0
  588. package/out/zql/src/zql/query/schema.js.map +1 -0
  589. package/out/zql/src/zql/query/typed-view.d.ts +5 -2
  590. package/out/zql/src/zql/query/typed-view.d.ts.map +1 -1
  591. package/out/zql/src/zql/query/typed-view.js +2 -0
  592. package/out/zql/src/zql/query/typed-view.js.map +1 -0
  593. package/out/zqlite/src/db.d.ts +1 -1
  594. package/out/zqlite/src/db.d.ts.map +1 -1
  595. package/out/zqlite/src/db.js +1 -1
  596. package/out/zqlite/src/db.js.map +1 -1
  597. package/out/zqlite/src/table-source.d.ts +2 -2
  598. package/out/zqlite/src/table-source.d.ts.map +1 -1
  599. package/out/zqlite/src/table-source.js.map +1 -1
  600. package/package.json +10 -8
  601. package/deps/sqlite3/sqlite3.c +0 -260574
  602. package/deps/sqlite3/sqlite3.h +0 -13572
  603. package/deps/sqlite3/sqlite3ext.h +0 -719
  604. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +0 -6
  605. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +0 -1
  606. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +0 -29
  607. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +0 -1
  608. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +0 -6
  609. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +0 -1
  610. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +0 -1
  611. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +0 -11
  612. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +0 -1
  613. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js +0 -86
  614. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.map +0 -1
  615. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts +0 -4
  616. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts.map +0 -1
  617. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +0 -12
  618. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +0 -1
  619. package/out/zero-cache/src/types/specs.d.ts +0 -29
  620. package/out/zero-cache/src/types/specs.d.ts.map +0 -1
  621. package/out/zero-cache/src/types/specs.js +0 -2
  622. package/out/zero-cache/src/types/specs.js.map +0 -1
  623. package/out/zero-client/src/client/make-id-from-primary-key.d.ts +0 -5
  624. package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +0 -1
  625. package/out/zero-protocol/src/entities-patch.d.ts +0 -66
  626. package/out/zero-protocol/src/entities-patch.d.ts.map +0 -1
  627. package/out/zero-protocol/src/entities-patch.js.map +0 -1
  628. package/out/zql/src/zql/ast/ast.d.ts +0 -84
  629. package/out/zql/src/zql/ast/ast.d.ts.map +0 -1
  630. package/out/zql/src/zql/ast/ast.js +0 -54
  631. package/out/zql/src/zql/ast/ast.js.map +0 -1
  632. package/tool/install-sqlite3.js +0 -37
@@ -1,9 +1,10 @@
1
- import { jsonObjectSchema } from '../../../../../../shared/src/json-schema.js';
1
+ import { ident as id, literal as lit } from 'pg-format';
2
2
  import * as v from '../../../../../../shared/src/valita.js';
3
+ import { filteredTableSpec, indexSpec } from '../../../../db/specs.js';
3
4
  import { indexDefinitionsQuery, publishedTableQuery } from './published.js';
4
- // Sent in the 'version' tag of "ddl" event messages. This is used to ensure
5
- // that the message constructed in the upstream Trigger function is compatible
6
- // with the code processing it in the zero-cache.
5
+ // Sent in the 'version' tag of "ddlStart" and "ddlUpdate" event messages.
6
+ // This is used to ensure that the message constructed in the upstream
7
+ // Trigger function is compatible with the code processing it in the zero-cache.
7
8
  //
8
9
  // Increment this when changing the format of the contents of the "ddl" events.
9
10
  // This will allow old / incompatible code to detect the change and abort.
@@ -11,46 +12,124 @@ export const PROTOCOL_VERSION = 1;
11
12
  const triggerEvent = v.object({
12
13
  context: v.object({ query: v.string() }).rest(v.string()),
13
14
  });
14
- const createOrAlterTableTagSchema = v.union(v.literal('CREATE TABLE'), v.literal('ALTER TABLE'));
15
- const createIndexTagSchema = v.literal('CREATE INDEX');
16
- const createOrAlterTableEventSchema = triggerEvent.extend({
17
- tag: createOrAlterTableTagSchema,
18
- table: jsonObjectSchema.map(t => t), // TODO: Define FilteredTableSpec schema.
19
- indexes: v.array(jsonObjectSchema.map(t => t)), // TODO: Define IndexSpec schema.
15
+ // The Schema type encapsulates a snapshot of the tables and indexes that
16
+ // are published / relevant to the shard.
17
+ const publishedSchema = v.object({
18
+ tables: v.array(filteredTableSpec),
19
+ indexes: v.array(indexSpec),
20
20
  });
21
- const createIndexEventSchema = triggerEvent.extend({
22
- tag: createIndexTagSchema,
23
- index: jsonObjectSchema.map(t => t), // TODO: Define IndexSpec schema.
21
+ // All DDL events contain a snapshot of the current tables and indexes that
22
+ // are published / relevant to the shard.
23
+ export const ddlEventSchema = triggerEvent.extend({
24
+ version: v.literal(PROTOCOL_VERSION),
25
+ schema: publishedSchema,
24
26
  });
25
- const dropTableTagSchema = v.literal('DROP TABLE');
26
- const dropIndexTagSchema = v.literal('DROP INDEX');
27
- const identifier = v.object({
28
- schema: v.string(),
29
- // `object_identity` field, as defined in
30
- // https://www.postgresql.org/docs/current/functions-event-triggers.html#PG-EVENT-TRIGGER-SQL-DROP-FUNCTIONS
31
- objectIdentity: v.string(),
27
+ // The `ddlStart` message is computed before every DDL event, regardless of
28
+ // whether the subsequent event affects the shard. Downstream processing should
29
+ // capture the contained schema information in order to determine the schema
30
+ // changes necessary to apply a subsequent `ddlUpdate` message. Note that a
31
+ // `ddlUpdate` message may not follow, as updates determined to be irrelevant
32
+ // to the shard will not result in a message. However, all `ddlUpdate` messages
33
+ // are guaranteed to be preceded by a `ddlStart` message.
34
+ export const ddlStartEventSchema = ddlEventSchema.extend({
35
+ type: v.literal('ddlStart'),
32
36
  });
33
- const dropTableEventSchema = triggerEvent.extend({
34
- tag: dropTableTagSchema,
35
- tables: v.array(identifier),
37
+ /**
38
+ * An tableEvent indicates the table that was created or altered. Note that
39
+ * this may result in changes to indexes.
40
+ *
41
+ * Note that a table alteration can only consistent of a single change, whether
42
+ * that be the name of the table, or an aspect of a single column. In particular,
43
+ * if the update contains a new column and removes an old column, that must
44
+ * necessarily mean that the old column was renamed.
45
+ *
46
+ * tableEvents are only emitted for tables published to the shard.
47
+ */
48
+ const tableEvent = v.object({
49
+ tag: v.union(v.literal('CREATE TABLE'), v.literal('ALTER TABLE')),
50
+ table: v.object({ schema: v.string(), name: v.string() }),
36
51
  });
37
- const dropIndexEventSchema = triggerEvent.extend({
38
- tag: dropIndexTagSchema,
39
- indexes: v.array(identifier),
52
+ /**
53
+ * An indexEvent indicates an index that was manually created.
54
+ *
55
+ * indexEvents are only emitted for (indexes of) tables published to the shard.
56
+ */
57
+ const indexEvent = v.object({
58
+ tag: v.literal('CREATE INDEX'),
59
+ index: v.object({ schema: v.string(), name: v.string() }),
40
60
  });
41
- export const ddlEventSchema = v.object({
42
- type: v.literal('ddl'),
43
- version: v.literal(PROTOCOL_VERSION),
44
- event: v.union(createOrAlterTableEventSchema, createIndexEventSchema, dropTableEventSchema, dropIndexEventSchema),
61
+ /**
62
+ * A drop event indicates the dropping of table(s) or index(es). Note
63
+ * that a `DROP TABLE` event can result in the dropping of both tables
64
+ * and their indexes.
65
+ *
66
+ * Drop events are emitted to all shards. It is up to the downstream
67
+ * processor to determine (from the preceding {@link DdlStartEvent})
68
+ * whether the dropped objects are relevant to the shard.
69
+ */
70
+ const dropEvent = v.object({
71
+ tag: v.union(v.literal('DROP TABLE'), v.literal('DROP INDEX')),
45
72
  });
46
- export const errorEventSchema = v.object({
47
- type: v.literal('error'),
48
- event: triggerEvent.extend({ message: v.string() }).rest(v.string()),
73
+ /**
74
+ * A publication event indicates a change in the visibility of tables
75
+ * and/or columns. This can mean any number of columns added or
76
+ * removed. However, it will never represent table or column renames
77
+ * (as those are only possible with `ALTER TABLE` statements).
78
+ *
79
+ * Publication events are not emitted if the altered publication is
80
+ * known and not included by the shard. However, due to the way
81
+ * Postgres Triggers work, the publication is not always known, and
82
+ * so it is possible for a shard to receive irrelevant publication
83
+ * events.
84
+ */
85
+ const publicationEvent = v.object({
86
+ tag: v.literal('ALTER PUBLICATION'),
49
87
  });
50
- const COMMON_TRIGGER_FUNCTIONS = `
51
- CREATE OR REPLACE FUNCTION zero.get_trigger_context()
52
- RETURNS record
53
- AS $$
88
+ /**
89
+ * The {@link DdlUpdateEvent} contains an updated schema resulting from
90
+ * a particular ddl event. The event type provides information
91
+ * (i.e. constraints) on the difference from the schema of the preceding
92
+ * {@link DdlStartEvent}.
93
+ *
94
+ * Note that in almost all cases (the exception being `CREATE` events),
95
+ * it is possible that there is no relevant difference between the
96
+ * ddl-start schema and the ddl-update schema, as many aspects of the
97
+ * schema (e.g. column constraints) are not relevant to downstream
98
+ * replication.
99
+ */
100
+ export const ddlUpdateEventSchema = ddlEventSchema.extend({
101
+ type: v.literal('ddlUpdate'),
102
+ event: v.union(tableEvent, indexEvent, dropEvent, publicationEvent),
103
+ });
104
+ export const replicationEventSchema = v.union(ddlStartEventSchema, ddlUpdateEventSchema);
105
+ // Creates a function that appends `_SHARD_ID` to the input.
106
+ function append(shardID) {
107
+ return (name) => id(name + '_' + shardID);
108
+ }
109
+ /**
110
+ * Event trigger functions contain the core logic that are invoked by triggers.
111
+ *
112
+ * Note that although many of these functions can theoretically be parameterized and
113
+ * shared across shards, it is advantageous to keep the functions in each shard
114
+ * isolated from each other in order to avoid the complexity of shared-function
115
+ * versioning.
116
+ *
117
+ * In a sense, shards (and their triggers and functions) should be thought of as
118
+ * execution environments that can be updated at different schedules. If per-shard
119
+ * triggers called into shared functions, we would have to consider versioning the
120
+ * functions when changing their behavior, backwards compatibility, removal of
121
+ * unused versions, etc. (not unlike versioning of npm packages).
122
+ *
123
+ * Instead, we opt for the simplicity and isolation of having each shard
124
+ * completely own (and maintain) the entirety of its trigger/function stack.
125
+ */
126
+ function createEventFunctionStatements(shardID, publications) {
127
+ const schema = append(shardID)('zero'); // e.g. "zero_SHARD_ID"
128
+ return `
129
+ CREATE SCHEMA IF NOT EXISTS ${schema};
130
+
131
+ CREATE OR REPLACE FUNCTION ${schema}.get_trigger_context()
132
+ RETURNS record AS $$
54
133
  DECLARE
55
134
  result record;
56
135
  BEGIN
@@ -59,179 +138,208 @@ BEGIN
59
138
  END
60
139
  $$ LANGUAGE plpgsql;
61
140
 
62
- CREATE OR REPLACE FUNCTION zero.emit_error(message TEXT)
63
- RETURNS void
64
- AS $$
65
- DECLARE
66
- event text;
141
+
142
+ CREATE OR REPLACE FUNCTION ${schema}.notice_ignore(object_id TEXT)
143
+ RETURNS void AS $$
67
144
  BEGIN
68
- SELECT json_build_object(
69
- 'type', 'error',
70
- 'event', json_build_object(
71
- 'context', zero.get_trigger_context(),
72
- 'message', message
73
- )
74
- ) into event;
75
-
76
- PERFORM pg_logical_emit_message(true, 'zero', event);
145
+ RAISE NOTICE 'zero(%) ignoring %', ${lit(shardID)}, object_id;
77
146
  END
78
147
  $$ LANGUAGE plpgsql;
79
- `;
80
- export function replicateCreateOrAlterTable() {
81
- return `
82
- CREATE OR REPLACE FUNCTION zero.replicate_create_or_alter_table()
83
- RETURNS event_trigger
84
- AS $$
148
+
149
+
150
+ CREATE OR REPLACE FUNCTION ${schema}.schema_specs()
151
+ RETURNS TEXT AS $$
85
152
  DECLARE
86
- tag text;
87
153
  tables record;
88
154
  indexes record;
89
- event text;
90
- BEGIN
91
- SELECT command_tag FROM pg_event_trigger_ddl_commands() INTO tag;
92
- IF LENGTH(tag) = 0 -- should be impossible
93
- THEN
94
- RAISE EXCEPTION 'missing command_tag from pg_event_trigger_ddl_commands() for %', query;
95
- END IF;
96
-
97
- ${publishedTableQuery(undefined, `JOIN pg_event_trigger_ddl_commands() ddl ON ddl.objid = pc.oid`)} INTO tables;
155
+ BEGIN
156
+ ${publishedTableQuery(publications)} INTO tables;
157
+ ${indexDefinitionsQuery(publications)} INTO indexes;
158
+ RETURN json_build_object(
159
+ 'tables', tables.tables,
160
+ 'indexes', indexes.indexes
161
+ );
162
+ END
163
+ $$ LANGUAGE plpgsql;
98
164
 
99
- IF json_array_length(tables.tables) = 0
100
- THEN RETURN; END IF; -- not a table published by "pubPrefix"
101
165
 
102
- IF json_array_length(tables.tables) > 1
103
- THEN
104
- PERFORM zero.emit_error(
105
- FORMAT('unexpected number of tables for "%s": %s',
106
- tag, json_array_length(tables.tables))
107
- );
108
- RETURN;
109
- END IF;
166
+ CREATE OR REPLACE FUNCTION ${schema}.emit_ddl_start()
167
+ RETURNS event_trigger AS $$
168
+ DECLARE
169
+ schema_specs TEXT;
170
+ message TEXT;
171
+ BEGIN
172
+ SELECT ${schema}.schema_specs() INTO schema_specs;
110
173
 
111
- ${indexDefinitionsQuery(undefined, `JOIN pg_event_trigger_ddl_commands() ddl on ddl.objid = pg_index.indrelid`)} INTO indexes;
112
-
113
174
  SELECT json_build_object(
114
- 'type', 'ddl',
175
+ 'type', 'ddlStart',
115
176
  'version', ${PROTOCOL_VERSION},
116
- 'event', json_build_object(
117
- 'context', zero.get_trigger_context(),
118
- 'tag', tag,
119
- 'table', tables.tables -> 0,
120
- 'indexes', indexes.indexes
121
- )
122
- ) INTO event;
123
-
124
- PERFORM pg_logical_emit_message(true, 'zero', event);
125
- END
177
+ 'schema', schema_specs::json,
178
+ 'context', ${schema}.get_trigger_context()
179
+ ) INTO message;
180
+
181
+ PERFORM pg_logical_emit_message(true, ${lit('zero/' + shardID)}, message);
182
+ END
126
183
  $$ LANGUAGE plpgsql;
127
- `;
128
- }
129
- export function replicateCreateIndex() {
130
- return `
131
- CREATE OR REPLACE FUNCTION zero.replicate_create_index()
132
- RETURNS event_trigger
133
- AS $$
184
+
185
+
186
+ CREATE OR REPLACE FUNCTION ${schema}.emit_ddl_end(tag TEXT)
187
+ RETURNS void AS $$
134
188
  DECLARE
135
- indexes record;
136
- event text;
137
- BEGIN
138
- ${indexDefinitionsQuery(undefined, `JOIN pg_event_trigger_ddl_commands() ddl on ddl.objid = pc.oid`)} INTO indexes;
189
+ publications TEXT[];
190
+ cmd RECORD;
191
+ target RECORD;
192
+ pub RECORD;
193
+ in_shard RECORD;
194
+ schema_specs TEXT;
195
+ message TEXT;
196
+ event TEXT;
197
+ BEGIN
198
+ publications := ARRAY[${lit(publications)}];
199
+
200
+ SELECT objid, object_type, object_identity FROM pg_event_trigger_ddl_commands() LIMIT 1 INTO cmd;
201
+
202
+ -- Filter DDL updates that are not relevant to the shard (i.e. publications) when possible.
203
+
204
+ IF cmd.object_type = 'table' OR cmd.object_type = 'table column' THEN
205
+ SELECT ns.nspname as "schema", c.relname as "name" FROM pg_class AS c
206
+ JOIN pg_namespace As ns ON c.relnamespace = ns.oid
207
+ JOIN pg_publication_tables AS pb ON pb.schemaname = ns.nspname AND pb.tablename = c.relname
208
+ WHERE c.oid = cmd.objid AND pb.pubname = ANY (publications)
209
+ INTO target;
210
+ IF target IS NULL THEN
211
+ PERFORM ${schema}.notice_ignore(cmd.object_identity);
212
+ RETURN;
213
+ END IF;
214
+
215
+ cmd.object_type := 'table'; -- normalize the 'table column' target to 'table'
216
+
217
+ ELSIF cmd.object_type = 'index' THEN
218
+ SELECT ns.nspname as "schema", c.relname as "name" FROM pg_class AS c
219
+ JOIN pg_namespace As ns ON c.relnamespace = ns.oid
220
+ JOIN pg_indexes as ind ON ind.schemaname = ns.nspname AND ind.indexname = c.relname
221
+ JOIN pg_publication_tables AS pb ON pb.schemaname = ns.nspname AND pb.tablename = ind.tablename
222
+ WHERE c.oid = cmd.objid AND pb.pubname = ANY (publications)
223
+ INTO target;
224
+ IF target IS NULL THEN
225
+ PERFORM ${schema}.notice_ignore(cmd.object_identity);
226
+ RETURN;
227
+ END IF;
228
+
229
+ ELSIF cmd.object_type = 'publication relation' THEN
230
+ SELECT pb.pubname FROM pg_publication_rel AS rel
231
+ JOIN pg_publication AS pb ON pb.oid = rel.prpubid
232
+ WHERE rel.oid = cmd.objid AND pb.pubname = ANY (publications)
233
+ INTO pub;
234
+ IF pub IS NULL THEN
235
+ PERFORM ${schema}.notice_ignore(cmd.object_identity);
236
+ RETURN;
237
+ END IF;
238
+
239
+ ELSIF cmd.object_type = 'publication namespace' THEN
240
+ SELECT pb.pubname FROM pg_publication_namespace AS ns
241
+ JOIN pg_publication AS pb ON pb.oid = ns.pnpubid
242
+ WHERE ns.oid = cmd.objid AND pb.pubname = ANY (publications)
243
+ INTO pub;
244
+ IF pub IS NULL THEN
245
+ PERFORM ${schema}.notice_ignore(cmd.object_identity);
246
+ RETURN;
247
+ END IF;
248
+ END IF;
139
249
 
140
- IF json_array_length(indexes.indexes) = 0
141
- THEN RETURN; END IF; -- not an index published by "pubPrefix"
250
+ -- Construct and emit the DdlUpdateEvent message.
142
251
 
143
- IF json_array_length(indexes.indexes) > 1
252
+ IF target IS NOT NULL
144
253
  THEN
145
- PERFORM zero.emit_error(
146
- FORMAT('unexpected number of indexes for "CREATE INDEX": %s',
147
- json_array_length(indexes.indexes))
148
- );
149
- RETURN;
254
+ SELECT json_build_object('tag', tag, cmd.object_type, target) INTO event;
255
+ ELSE
256
+ SELECT json_build_object('tag', tag) INTO event;
150
257
  END IF;
151
258
 
259
+ SELECT ${schema}.schema_specs() INTO schema_specs;
260
+
152
261
  SELECT json_build_object(
153
- 'type', 'ddl',
262
+ 'type', 'ddlUpdate',
154
263
  'version', ${PROTOCOL_VERSION},
155
- 'event', json_build_object(
156
- 'context', zero.get_trigger_context(),
157
- 'tag', 'CREATE INDEX',
158
- 'index', indexes.indexes -> 0
159
- )
160
- ) INTO event;
161
-
162
- PERFORM pg_logical_emit_message(true, 'zero', event);
264
+ 'schema', schema_specs::json,
265
+ 'event', event::json,
266
+ 'context', ${schema}.get_trigger_context()
267
+ ) INTO message;
268
+
269
+ PERFORM pg_logical_emit_message(true, ${lit('zero/' + shardID)}, message);
163
270
  END
164
271
  $$ LANGUAGE plpgsql;
165
- `;
272
+ `;
166
273
  }
167
- const DROP_EVENT_TRIGGERS = `
168
- CREATE OR REPLACE FUNCTION zero.replicate_drop_event(tag TEXT, type TEXT, dropped TEXT)
169
- RETURNS void
170
- AS $$
171
- DECLARE
172
- event text;
274
+ const TAGS = [
275
+ 'CREATE TABLE',
276
+ 'ALTER TABLE',
277
+ 'CREATE INDEX',
278
+ 'DROP TABLE',
279
+ 'DROP INDEX',
280
+ 'ALTER PUBLICATION',
281
+ ];
282
+ export function createEventTriggerStatements(shardID, publications) {
283
+ // Unlike functions, which are namespaced in shard-specific schemas,
284
+ // EVENT TRIGGER names are in the global namespace and instead have the shardID appended.
285
+ const sharded = append(shardID);
286
+ const schema = sharded('zero');
287
+ const triggers = [createEventFunctionStatements(shardID, publications)];
288
+ // A single ddl_command_start trigger covering all relevant tags.
289
+ triggers.push(`
290
+ DROP EVENT TRIGGER IF EXISTS ${sharded('zero_ddl_start')};
291
+ CREATE EVENT TRIGGER ${sharded('zero_ddl_start')}
292
+ ON ddl_command_start
293
+ WHEN TAG IN (${lit(TAGS)})
294
+ EXECUTE PROCEDURE ${schema}.emit_ddl_start();
295
+ `);
296
+ // A per-tag ddl_command_end trigger that dispatches to ${schema}.emit_ddl_end(tag)
297
+ for (const tag of TAGS) {
298
+ const tagID = tag.toLowerCase().replace(' ', '_');
299
+ triggers.push(`
300
+ CREATE OR REPLACE FUNCTION ${schema}.emit_${tagID}()
301
+ RETURNS event_trigger AS $$
173
302
  BEGIN
174
- SELECT json_build_object(
175
- 'type', 'ddl',
176
- 'version', ${PROTOCOL_VERSION},
177
- 'event', json_build_object(
178
- 'context', zero.get_trigger_context(),
179
- 'tag', tag,
180
- dropped, json_agg(json_build_object(
181
- 'schema', schema_name,
182
- 'objectIdentity', object_identity
183
- ))
184
- )
185
- ) FROM pg_event_trigger_dropped_objects()
186
- WHERE object_type = type
187
- INTO event;
188
-
189
- PERFORM pg_logical_emit_message(true, 'zero', event);
303
+ PERFORM ${schema}.emit_ddl_end(${lit(tag)});
190
304
  END
191
305
  $$ LANGUAGE plpgsql;
192
306
 
193
- CREATE OR REPLACE FUNCTION zero.replicate_drop_table()
194
- RETURNS event_trigger
195
- AS $$
196
- BEGIN
197
- PERFORM zero.replicate_drop_event('DROP TABLE', 'table', 'tables');
198
- END
199
- $$ LANGUAGE plpgsql;
200
307
 
201
- CREATE OR REPLACE FUNCTION zero.replicate_drop_index()
202
- RETURNS event_trigger
203
- AS $$
204
- BEGIN
205
- PERFORM zero.replicate_drop_event('DROP INDEX', 'index', 'indexes');
206
- END
207
- $$ LANGUAGE plpgsql;
208
- `;
209
- export function createEventTriggerStatements() {
210
- return [
211
- COMMON_TRIGGER_FUNCTIONS,
212
- replicateCreateOrAlterTable(),
213
- `DROP EVENT TRIGGER IF EXISTS zero_replicate_create_or_alter_table`,
214
- `CREATE EVENT TRIGGER zero_replicate_create_or_alter_table
215
- ON ddl_command_end
216
- WHEN TAG IN ('CREATE TABLE', 'ALTER TABLE')
217
- EXECUTE PROCEDURE zero.replicate_create_or_alter_table()`,
218
- replicateCreateIndex(),
219
- `DROP EVENT TRIGGER IF EXISTS zero_replicate_create_index`,
220
- `CREATE EVENT TRIGGER zero_replicate_create_index
221
- ON ddl_command_end
222
- WHEN TAG IN ('CREATE INDEX')
223
- EXECUTE PROCEDURE zero.replicate_create_index()`,
224
- DROP_EVENT_TRIGGERS,
225
- `DROP EVENT TRIGGER IF EXISTS zero_replicate_drop_table`,
226
- `CREATE EVENT TRIGGER zero_replicate_drop_table
227
- ON sql_drop
228
- WHEN TAG IN ('DROP TABLE')
229
- EXECUTE PROCEDURE zero.replicate_drop_table()`,
230
- `DROP EVENT TRIGGER IF EXISTS zero_replicate_drop_index`,
231
- `CREATE EVENT TRIGGER zero_replicate_drop_index
232
- ON sql_drop
233
- WHEN TAG IN ('DROP INDEX')
234
- EXECUTE PROCEDURE zero.replicate_drop_index()`,
235
- ].join(';\n');
308
+ DROP EVENT TRIGGER IF EXISTS ${sharded(`zero_${tagID}`)};
309
+ CREATE EVENT TRIGGER ${sharded(`zero_${tagID}`)}
310
+ ON ddl_command_end
311
+ WHEN TAG IN (${lit(tag)})
312
+ EXECUTE PROCEDURE ${schema}.emit_${tagID}();
313
+ `);
314
+ }
315
+ // Delete legacy triggers/functions. This should be removable once all early
316
+ // testers have updated.
317
+ for (const trigger of LEGACY_TRIGGER_NAMES) {
318
+ triggers.push(`DROP EVENT TRIGGER IF EXISTS ${sharded(trigger)};`);
319
+ }
320
+ for (const fn of LEGACY_FUNCTION_NAMES) {
321
+ triggers.push(`DROP FUNCTION IF EXISTS zero.${fn};`);
322
+ triggers.push(`DROP FUNCTION IF EXISTS zero.${sharded(fn)};`);
323
+ }
324
+ return triggers.join('');
236
325
  }
326
+ const LEGACY_TRIGGER_NAMES = [
327
+ 'zero_replicate_create_or_alter_table',
328
+ 'zero_replicate_create_index',
329
+ 'zero_replicate_alter_publication',
330
+ 'zero_replicate_alter_publication_drop',
331
+ 'zero_replicate_drop_table',
332
+ 'zero_replicate_drop_index',
333
+ ];
334
+ const LEGACY_FUNCTION_NAMES = [
335
+ 'replicate_create_or_alter_table',
336
+ 'replicate_create_index',
337
+ 'replicate_alter_publication',
338
+ 'replicate_alter_publication_drop',
339
+ 'replicate_drop_event',
340
+ 'replicate_drop_table',
341
+ 'replicate_drop_index',
342
+ 'get_trigger_context',
343
+ 'emit_all_publications',
344
+ ];
237
345
  //# sourceMappingURL=ddl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ddl.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/ddl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ddl.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/ddl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { LogContext } from '@rocicorp/logger';
2
+ import type { PostgresDB } from '../../../../types/pg.js';
3
+ import type { ShardConfig } from '../shard-config.js';
4
+ export declare function initShardSchema(lc: LogContext, db: PostgresDB, shardConfig: ShardConfig): Promise<void>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAMjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAGpD,wBAAsB,eAAe,CACnC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -0,0 +1,18 @@
1
+ import { runSchemaMigrations, } from '../../../../db/migration.js';
2
+ import { setupTablesAndReplication, unescapedSchema } from './shard.js';
3
+ export async function initShardSchema(lc, db, shardConfig) {
4
+ const setupMigration = {
5
+ migrateSchema: (lc, tx) => setupTablesAndReplication(lc, tx, shardConfig),
6
+ minSafeVersion: 1,
7
+ };
8
+ const schemaVersionMigrationMap = {
9
+ 1: setupMigration,
10
+ // There are no incremental migrations yet, but if we were to, say introduce
11
+ // another column, setupTablesAndReplication would be updated the table with
12
+ // the new column, and then there would be an incremental migration here at
13
+ // version `2` that adds the column for databases that were initialized to
14
+ // version `1`.
15
+ };
16
+ await runSchemaMigrations(lc, 'upstream-shard', unescapedSchema(shardConfig.id), db, setupMigration, schemaVersionMigrationMap);
17
+ }
18
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/init.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAGpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAC,yBAAyB,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAc,EACd,EAAc,EACd,WAAwB;IAExB,MAAM,cAAc,GAAc;QAChC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC;QACzE,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,MAAM,yBAAyB,GAA4B;QACzD,CAAC,EAAE,cAAc;QACjB,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,eAAe;KAChB,CAAC;IAEF,MAAM,mBAAmB,CACvB,EAAE,EACF,gBAAgB,EAChB,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,EAC/B,EAAE,EACF,cAAc,EACd,yBAAyB,CAC1B,CAAC;AACJ,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import type postgres from 'postgres';
2
2
  import * as v from '../../../../../../shared/src/valita.js';
3
- import type { FilteredTableSpec, IndexSpec } from '../../../../types/specs.js';
4
- export declare function publishedTableQuery(publications: string[] | undefined, join?: string): string;
5
- export declare function indexDefinitionsQuery(publications: string[] | undefined, join?: string): string;
3
+ import type { FilteredTableSpec, IndexSpec } from '../../../../db/specs.js';
4
+ export declare function publishedTableQuery(publications: string[]): string;
5
+ export declare function indexDefinitionsQuery(publications: string[]): string;
6
6
  declare const publicationSchema: v.ObjectType<{
7
7
  pubname: v.Type<string>;
8
8
  pubinsert: v.Type<boolean>;
@@ -21,6 +21,6 @@ export type PublicationInfo = {
21
21
  * publications that start with "zero_" or "_zero_", but this can be
22
22
  * overridden by specifying a specific set of `publications`.
23
23
  */
24
- export declare function getPublicationInfo(sql: postgres.Sql, publications?: string[]): Promise<PublicationInfo>;
24
+ export declare function getPublicationInfo(sql: postgres.Sql, publications: string[]): Promise<PublicationInfo>;
25
25
  export {};
26
26
  //# sourceMappingURL=published.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"published.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/published.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAC5D,OAAO,KAAK,EAAC,iBAAiB,EAAE,SAAS,EAAC,MAAM,4BAA4B,CAAC;AAc7E,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,EAClC,IAAI,SAAK,UAkEV;AAMD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,EAClC,IAAI,SAAK,UAsDV;AAED,QAAA,MAAM,iBAAiB;;;;;;aAMrB,CAAC;AAIH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,eAAe,CAAC,CAiD1B"}
1
+ {"version":3,"file":"published.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/published.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAC5D,OAAO,KAAK,EAAC,iBAAiB,EAAE,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAM1E,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAgEzD;AAMD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,UAwD3D;AAED,QAAA,MAAM,iBAAiB;;;;;;aAMrB,CAAC;AAIH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,eAAe,CAAC,CAiD1B"}