@supabase/pg-delta 0.0.0 → 1.0.0-alpha.1

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 (569) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/cli/app.d.ts +1 -0
  4. package/dist/cli/app.js +26 -0
  5. package/dist/cli/bin/cli.d.ts +2 -0
  6. package/dist/cli/bin/cli.js +7 -0
  7. package/dist/cli/commands/apply.d.ts +5 -0
  8. package/dist/cli/commands/apply.js +85 -0
  9. package/dist/cli/commands/plan.d.ts +5 -0
  10. package/dist/cli/commands/plan.js +137 -0
  11. package/dist/cli/commands/sync.d.ts +5 -0
  12. package/dist/cli/commands/sync.js +141 -0
  13. package/dist/cli/formatters/index.d.ts +4 -0
  14. package/dist/cli/formatters/index.js +4 -0
  15. package/dist/cli/formatters/tree/tree-builder.d.ts +10 -0
  16. package/dist/cli/formatters/tree/tree-builder.js +333 -0
  17. package/dist/cli/formatters/tree/tree-renderer.d.ts +45 -0
  18. package/dist/cli/formatters/tree/tree-renderer.js +303 -0
  19. package/dist/cli/formatters/tree/tree.d.ts +8 -0
  20. package/dist/cli/formatters/tree/tree.js +161 -0
  21. package/dist/cli/utils/integrations.d.ts +14 -0
  22. package/dist/cli/utils/integrations.js +44 -0
  23. package/dist/cli/utils.d.ts +64 -0
  24. package/dist/cli/utils.js +160 -0
  25. package/dist/core/catalog.diff.d.ts +5 -0
  26. package/dist/core/catalog.diff.js +147 -0
  27. package/dist/core/catalog.model.d.ts +93 -0
  28. package/dist/core/catalog.model.js +254 -0
  29. package/dist/core/change.types.d.ts +22 -0
  30. package/dist/core/change.types.js +1 -0
  31. package/dist/core/context.d.ts +11 -0
  32. package/dist/core/context.js +12 -0
  33. package/dist/core/depend.d.ts +31 -0
  34. package/dist/core/depend.js +1833 -0
  35. package/dist/core/expand-replace-dependencies.d.ts +14 -0
  36. package/dist/core/expand-replace-dependencies.js +280 -0
  37. package/dist/core/fingerprint.d.ts +15 -0
  38. package/dist/core/fingerprint.js +174 -0
  39. package/dist/core/integrations/filter/dsl.d.ts +97 -0
  40. package/dist/core/integrations/filter/dsl.js +107 -0
  41. package/dist/core/integrations/filter/extractors.d.ts +12 -0
  42. package/dist/core/integrations/filter/extractors.js +136 -0
  43. package/dist/core/integrations/filter/filter.types.d.ts +2 -0
  44. package/dist/core/integrations/filter/filter.types.js +1 -0
  45. package/dist/core/integrations/integration-dsl.d.ts +22 -0
  46. package/dist/core/integrations/integration-dsl.js +6 -0
  47. package/dist/core/integrations/integration.types.d.ts +6 -0
  48. package/dist/core/integrations/integration.types.js +1 -0
  49. package/dist/core/integrations/serialize/dsl.d.ts +58 -0
  50. package/dist/core/integrations/serialize/dsl.js +42 -0
  51. package/dist/core/integrations/serialize/serialize.types.d.ts +2 -0
  52. package/dist/core/integrations/serialize/serialize.types.js +1 -0
  53. package/dist/core/integrations/supabase.d.ts +10 -0
  54. package/dist/core/integrations/supabase.js +114 -0
  55. package/dist/core/objects/aggregate/aggregate.diff.d.ts +10 -0
  56. package/dist/core/objects/aggregate/aggregate.diff.js +186 -0
  57. package/dist/core/objects/aggregate/aggregate.model.d.ts +174 -0
  58. package/dist/core/objects/aggregate/aggregate.model.js +297 -0
  59. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +19 -0
  60. package/dist/core/objects/aggregate/changes/aggregate.alter.js +25 -0
  61. package/dist/core/objects/aggregate/changes/aggregate.base.d.ts +17 -0
  62. package/dist/core/objects/aggregate/changes/aggregate.base.js +13 -0
  63. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +23 -0
  64. package/dist/core/objects/aggregate/changes/aggregate.comment.js +44 -0
  65. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +19 -0
  66. package/dist/core/objects/aggregate/changes/aggregate.create.js +228 -0
  67. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +17 -0
  68. package/dist/core/objects/aggregate/changes/aggregate.drop.js +26 -0
  69. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +62 -0
  70. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +102 -0
  71. package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +6 -0
  72. package/dist/core/objects/aggregate/changes/aggregate.types.js +1 -0
  73. package/dist/core/objects/base.change.d.ts +46 -0
  74. package/dist/core/objects/base.change.js +38 -0
  75. package/dist/core/objects/base.default-privileges.d.ts +29 -0
  76. package/dist/core/objects/base.default-privileges.js +167 -0
  77. package/dist/core/objects/base.diff.d.ts +6 -0
  78. package/dist/core/objects/base.diff.js +12 -0
  79. package/dist/core/objects/base.model.d.ts +74 -0
  80. package/dist/core/objects/base.model.js +47 -0
  81. package/dist/core/objects/base.privilege-diff.d.ts +54 -0
  82. package/dist/core/objects/base.privilege-diff.js +216 -0
  83. package/dist/core/objects/base.privilege.d.ts +27 -0
  84. package/dist/core/objects/base.privilege.js +169 -0
  85. package/dist/core/objects/collation/changes/collation.alter.d.ts +45 -0
  86. package/dist/core/objects/collation/changes/collation.alter.js +52 -0
  87. package/dist/core/objects/collation/changes/collation.base.d.ts +17 -0
  88. package/dist/core/objects/collation/changes/collation.base.js +13 -0
  89. package/dist/core/objects/collation/changes/collation.comment.d.ts +26 -0
  90. package/dist/core/objects/collation/changes/collation.comment.js +50 -0
  91. package/dist/core/objects/collation/changes/collation.create.d.ts +32 -0
  92. package/dist/core/objects/collation/changes/collation.create.js +86 -0
  93. package/dist/core/objects/collation/changes/collation.drop.d.ts +22 -0
  94. package/dist/core/objects/collation/changes/collation.drop.js +31 -0
  95. package/dist/core/objects/collation/changes/collation.types.d.ts +5 -0
  96. package/dist/core/objects/collation/changes/collation.types.js +1 -0
  97. package/dist/core/objects/collation/collation.diff.d.ts +13 -0
  98. package/dist/core/objects/collation/collation.diff.js +85 -0
  99. package/dist/core/objects/collation/collation.model.d.ts +67 -0
  100. package/dist/core/objects/collation/collation.model.js +207 -0
  101. package/dist/core/objects/domain/changes/domain.alter.d.ts +143 -0
  102. package/dist/core/objects/domain/changes/domain.alter.js +191 -0
  103. package/dist/core/objects/domain/changes/domain.base.d.ts +17 -0
  104. package/dist/core/objects/domain/changes/domain.base.js +13 -0
  105. package/dist/core/objects/domain/changes/domain.comment.d.ts +25 -0
  106. package/dist/core/objects/domain/changes/domain.comment.js +47 -0
  107. package/dist/core/objects/domain/changes/domain.create.d.ts +30 -0
  108. package/dist/core/objects/domain/changes/domain.create.js +92 -0
  109. package/dist/core/objects/domain/changes/domain.drop.d.ts +22 -0
  110. package/dist/core/objects/domain/changes/domain.drop.js +28 -0
  111. package/dist/core/objects/domain/changes/domain.privilege.d.ts +97 -0
  112. package/dist/core/objects/domain/changes/domain.privilege.js +127 -0
  113. package/dist/core/objects/domain/changes/domain.types.d.ts +6 -0
  114. package/dist/core/objects/domain/changes/domain.types.js +1 -0
  115. package/dist/core/objects/domain/domain.diff.d.ts +18 -0
  116. package/dist/core/objects/domain/domain.diff.js +244 -0
  117. package/dist/core/objects/domain/domain.model.d.ts +103 -0
  118. package/dist/core/objects/domain/domain.model.js +172 -0
  119. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +44 -0
  120. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +51 -0
  121. package/dist/core/objects/event-trigger/changes/event-trigger.base.d.ts +17 -0
  122. package/dist/core/objects/event-trigger/changes/event-trigger.base.js +13 -0
  123. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +23 -0
  124. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +46 -0
  125. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +25 -0
  126. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +55 -0
  127. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +22 -0
  128. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +28 -0
  129. package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +5 -0
  130. package/dist/core/objects/event-trigger/changes/event-trigger.types.js +1 -0
  131. package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +13 -0
  132. package/dist/core/objects/event-trigger/event-trigger.diff.js +81 -0
  133. package/dist/core/objects/event-trigger/event-trigger.model.d.ts +45 -0
  134. package/dist/core/objects/event-trigger/event-trigger.model.js +89 -0
  135. package/dist/core/objects/extension/changes/extension.alter.d.ts +44 -0
  136. package/dist/core/objects/extension/changes/extension.alter.js +51 -0
  137. package/dist/core/objects/extension/changes/extension.base.d.ts +17 -0
  138. package/dist/core/objects/extension/changes/extension.base.js +13 -0
  139. package/dist/core/objects/extension/changes/extension.comment.d.ts +26 -0
  140. package/dist/core/objects/extension/changes/extension.comment.js +46 -0
  141. package/dist/core/objects/extension/changes/extension.create.d.ts +25 -0
  142. package/dist/core/objects/extension/changes/extension.create.js +49 -0
  143. package/dist/core/objects/extension/changes/extension.drop.d.ts +22 -0
  144. package/dist/core/objects/extension/changes/extension.drop.js +28 -0
  145. package/dist/core/objects/extension/changes/extension.types.d.ts +5 -0
  146. package/dist/core/objects/extension/changes/extension.types.js +1 -0
  147. package/dist/core/objects/extension/extension.diff.d.ts +10 -0
  148. package/dist/core/objects/extension/extension.diff.js +65 -0
  149. package/dist/core/objects/extension/extension.model.d.ts +52 -0
  150. package/dist/core/objects/extension/extension.model.js +268 -0
  151. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +51 -0
  152. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +61 -0
  153. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.d.ts +17 -0
  154. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.js +13 -0
  155. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +26 -0
  156. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +50 -0
  157. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +25 -0
  158. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +78 -0
  159. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +22 -0
  160. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +28 -0
  161. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +97 -0
  162. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +123 -0
  163. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +6 -0
  164. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.js +1 -0
  165. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +18 -0
  166. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +221 -0
  167. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +59 -0
  168. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +128 -0
  169. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +5 -0
  170. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.js +1 -0
  171. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +163 -0
  172. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +248 -0
  173. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.d.ts +17 -0
  174. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.js +13 -0
  175. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +26 -0
  176. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +50 -0
  177. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +25 -0
  178. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +64 -0
  179. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +22 -0
  180. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +31 -0
  181. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +97 -0
  182. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +129 -0
  183. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +6 -0
  184. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.js +1 -0
  185. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +18 -0
  186. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +268 -0
  187. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +117 -0
  188. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +215 -0
  189. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +65 -0
  190. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +84 -0
  191. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.d.ts +17 -0
  192. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.js +13 -0
  193. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +26 -0
  194. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +43 -0
  195. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +24 -0
  196. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +62 -0
  197. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +22 -0
  198. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +28 -0
  199. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +97 -0
  200. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +123 -0
  201. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +6 -0
  202. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.js +1 -0
  203. package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +18 -0
  204. package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +209 -0
  205. package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +62 -0
  206. package/dist/core/objects/foreign-data-wrapper/server/server.model.js +118 -0
  207. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +37 -0
  208. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +38 -0
  209. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.d.ts +17 -0
  210. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.js +13 -0
  211. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +24 -0
  212. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +52 -0
  213. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +23 -0
  214. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +34 -0
  215. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +4 -0
  216. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.js +1 -0
  217. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.d.ts +10 -0
  218. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.js +77 -0
  219. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +36 -0
  220. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +85 -0
  221. package/dist/core/objects/index/changes/index.alter.d.ts +76 -0
  222. package/dist/core/objects/index/changes/index.alter.js +94 -0
  223. package/dist/core/objects/index/changes/index.base.d.ts +17 -0
  224. package/dist/core/objects/index/changes/index.base.js +13 -0
  225. package/dist/core/objects/index/changes/index.comment.d.ts +26 -0
  226. package/dist/core/objects/index/changes/index.comment.js +50 -0
  227. package/dist/core/objects/index/changes/index.create.d.ts +30 -0
  228. package/dist/core/objects/index/changes/index.create.js +53 -0
  229. package/dist/core/objects/index/changes/index.drop.d.ts +22 -0
  230. package/dist/core/objects/index/changes/index.drop.js +28 -0
  231. package/dist/core/objects/index/changes/index.types.d.ts +5 -0
  232. package/dist/core/objects/index/changes/index.types.js +1 -0
  233. package/dist/core/objects/index/changes/utils.d.ts +3 -0
  234. package/dist/core/objects/index/changes/utils.js +6 -0
  235. package/dist/core/objects/index/index.diff.d.ts +12 -0
  236. package/dist/core/objects/index/index.diff.js +182 -0
  237. package/dist/core/objects/index/index.model.d.ts +150 -0
  238. package/dist/core/objects/index/index.model.js +340 -0
  239. package/dist/core/objects/language/changes/language.alter.d.ts +32 -0
  240. package/dist/core/objects/language/changes/language.alter.js +30 -0
  241. package/dist/core/objects/language/changes/language.base.d.ts +17 -0
  242. package/dist/core/objects/language/changes/language.base.js +13 -0
  243. package/dist/core/objects/language/changes/language.comment.d.ts +26 -0
  244. package/dist/core/objects/language/changes/language.comment.js +45 -0
  245. package/dist/core/objects/language/changes/language.create.d.ts +25 -0
  246. package/dist/core/objects/language/changes/language.create.js +76 -0
  247. package/dist/core/objects/language/changes/language.drop.d.ts +22 -0
  248. package/dist/core/objects/language/changes/language.drop.js +31 -0
  249. package/dist/core/objects/language/changes/language.privilege.d.ts +97 -0
  250. package/dist/core/objects/language/changes/language.privilege.js +128 -0
  251. package/dist/core/objects/language/changes/language.types.d.ts +6 -0
  252. package/dist/core/objects/language/changes/language.types.js +1 -0
  253. package/dist/core/objects/language/language.diff.d.ts +15 -0
  254. package/dist/core/objects/language/language.diff.js +117 -0
  255. package/dist/core/objects/language/language.model.d.ts +62 -0
  256. package/dist/core/objects/language/language.model.js +128 -0
  257. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +67 -0
  258. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +63 -0
  259. package/dist/core/objects/materialized-view/changes/materialized-view.base.d.ts +17 -0
  260. package/dist/core/objects/materialized-view/changes/materialized-view.base.js +13 -0
  261. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +53 -0
  262. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +112 -0
  263. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +35 -0
  264. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +71 -0
  265. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +26 -0
  266. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +42 -0
  267. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +105 -0
  268. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +151 -0
  269. package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +6 -0
  270. package/dist/core/objects/materialized-view/changes/materialized-view.types.js +1 -0
  271. package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +18 -0
  272. package/dist/core/objects/materialized-view/materialized-view.diff.js +335 -0
  273. package/dist/core/objects/materialized-view/materialized-view.model.d.ts +152 -0
  274. package/dist/core/objects/materialized-view/materialized-view.model.js +228 -0
  275. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +143 -0
  276. package/dist/core/objects/procedure/changes/procedure.alter.js +207 -0
  277. package/dist/core/objects/procedure/changes/procedure.base.d.ts +17 -0
  278. package/dist/core/objects/procedure/changes/procedure.base.js +13 -0
  279. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +26 -0
  280. package/dist/core/objects/procedure/changes/procedure.comment.js +52 -0
  281. package/dist/core/objects/procedure/changes/procedure.create.d.ts +42 -0
  282. package/dist/core/objects/procedure/changes/procedure.create.js +77 -0
  283. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +23 -0
  284. package/dist/core/objects/procedure/changes/procedure.drop.js +37 -0
  285. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +98 -0
  286. package/dist/core/objects/procedure/changes/procedure.privilege.js +144 -0
  287. package/dist/core/objects/procedure/changes/procedure.types.d.ts +6 -0
  288. package/dist/core/objects/procedure/changes/procedure.types.js +1 -0
  289. package/dist/core/objects/procedure/procedure.diff.d.ts +18 -0
  290. package/dist/core/objects/procedure/procedure.diff.js +282 -0
  291. package/dist/core/objects/procedure/procedure.model.d.ts +132 -0
  292. package/dist/core/objects/procedure/procedure.model.js +244 -0
  293. package/dist/core/objects/procedure/utils.d.ts +14 -0
  294. package/dist/core/objects/procedure/utils.js +55 -0
  295. package/dist/core/objects/publication/changes/publication.alter.d.ts +88 -0
  296. package/dist/core/objects/publication/changes/publication.alter.js +176 -0
  297. package/dist/core/objects/publication/changes/publication.base.d.ts +17 -0
  298. package/dist/core/objects/publication/changes/publication.base.js +13 -0
  299. package/dist/core/objects/publication/changes/publication.comment.d.ts +23 -0
  300. package/dist/core/objects/publication/changes/publication.comment.js +46 -0
  301. package/dist/core/objects/publication/changes/publication.create.d.ts +17 -0
  302. package/dist/core/objects/publication/changes/publication.create.js +61 -0
  303. package/dist/core/objects/publication/changes/publication.drop.d.ts +17 -0
  304. package/dist/core/objects/publication/changes/publication.drop.js +23 -0
  305. package/dist/core/objects/publication/changes/publication.types.d.ts +5 -0
  306. package/dist/core/objects/publication/changes/publication.types.js +1 -0
  307. package/dist/core/objects/publication/publication.diff.d.ts +5 -0
  308. package/dist/core/objects/publication/publication.diff.js +161 -0
  309. package/dist/core/objects/publication/publication.model.d.ts +96 -0
  310. package/dist/core/objects/publication/publication.model.js +186 -0
  311. package/dist/core/objects/publication/utils.d.ts +5 -0
  312. package/dist/core/objects/publication/utils.js +45 -0
  313. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +62 -0
  314. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +90 -0
  315. package/dist/core/objects/rls-policy/changes/rls-policy.base.d.ts +17 -0
  316. package/dist/core/objects/rls-policy/changes/rls-policy.base.js +13 -0
  317. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +23 -0
  318. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +51 -0
  319. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +27 -0
  320. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +79 -0
  321. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +22 -0
  322. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +33 -0
  323. package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +5 -0
  324. package/dist/core/objects/rls-policy/changes/rls-policy.types.js +1 -0
  325. package/dist/core/objects/rls-policy/rls-policy.diff.d.ts +10 -0
  326. package/dist/core/objects/rls-policy/rls-policy.diff.js +80 -0
  327. package/dist/core/objects/rls-policy/rls-policy.model.d.ts +52 -0
  328. package/dist/core/objects/rls-policy/rls-policy.model.js +127 -0
  329. package/dist/core/objects/role/changes/role.alter.d.ts +78 -0
  330. package/dist/core/objects/role/changes/role.alter.js +55 -0
  331. package/dist/core/objects/role/changes/role.base.d.ts +17 -0
  332. package/dist/core/objects/role/changes/role.base.js +13 -0
  333. package/dist/core/objects/role/changes/role.comment.d.ts +23 -0
  334. package/dist/core/objects/role/changes/role.comment.js +42 -0
  335. package/dist/core/objects/role/changes/role.create.d.ts +38 -0
  336. package/dist/core/objects/role/changes/role.create.js +83 -0
  337. package/dist/core/objects/role/changes/role.drop.d.ts +22 -0
  338. package/dist/core/objects/role/changes/role.drop.js +28 -0
  339. package/dist/core/objects/role/changes/role.privilege.d.ts +148 -0
  340. package/dist/core/objects/role/changes/role.privilege.js +283 -0
  341. package/dist/core/objects/role/changes/role.types.d.ts +6 -0
  342. package/dist/core/objects/role/changes/role.types.js +1 -0
  343. package/dist/core/objects/role/role.diff.d.ts +13 -0
  344. package/dist/core/objects/role/role.diff.js +386 -0
  345. package/dist/core/objects/role/role.model.d.ts +89 -0
  346. package/dist/core/objects/role/role.model.js +312 -0
  347. package/dist/core/objects/rule/changes/rule.alter.d.ts +22 -0
  348. package/dist/core/objects/rule/changes/rule.alter.js +58 -0
  349. package/dist/core/objects/rule/changes/rule.base.d.ts +17 -0
  350. package/dist/core/objects/rule/changes/rule.base.js +13 -0
  351. package/dist/core/objects/rule/changes/rule.comment.d.ts +22 -0
  352. package/dist/core/objects/rule/changes/rule.comment.js +51 -0
  353. package/dist/core/objects/rule/changes/rule.create.d.ts +14 -0
  354. package/dist/core/objects/rule/changes/rule.create.js +28 -0
  355. package/dist/core/objects/rule/changes/rule.drop.d.ts +12 -0
  356. package/dist/core/objects/rule/changes/rule.drop.js +23 -0
  357. package/dist/core/objects/rule/changes/rule.types.d.ts +5 -0
  358. package/dist/core/objects/rule/changes/rule.types.js +1 -0
  359. package/dist/core/objects/rule/rule.diff.d.ts +3 -0
  360. package/dist/core/objects/rule/rule.diff.js +53 -0
  361. package/dist/core/objects/rule/rule.model.d.ts +72 -0
  362. package/dist/core/objects/rule/rule.model.js +156 -0
  363. package/dist/core/objects/schema/changes/schema.alter.d.ts +32 -0
  364. package/dist/core/objects/schema/changes/schema.alter.js +25 -0
  365. package/dist/core/objects/schema/changes/schema.base.d.ts +17 -0
  366. package/dist/core/objects/schema/changes/schema.base.js +13 -0
  367. package/dist/core/objects/schema/changes/schema.comment.d.ts +23 -0
  368. package/dist/core/objects/schema/changes/schema.comment.js +43 -0
  369. package/dist/core/objects/schema/changes/schema.create.d.ts +27 -0
  370. package/dist/core/objects/schema/changes/schema.create.js +38 -0
  371. package/dist/core/objects/schema/changes/schema.drop.d.ts +22 -0
  372. package/dist/core/objects/schema/changes/schema.drop.js +28 -0
  373. package/dist/core/objects/schema/changes/schema.privilege.d.ts +97 -0
  374. package/dist/core/objects/schema/changes/schema.privilege.js +131 -0
  375. package/dist/core/objects/schema/changes/schema.types.d.ts +6 -0
  376. package/dist/core/objects/schema/changes/schema.types.js +1 -0
  377. package/dist/core/objects/schema/schema.diff.d.ts +18 -0
  378. package/dist/core/objects/schema/schema.diff.js +142 -0
  379. package/dist/core/objects/schema/schema.model.d.ts +47 -0
  380. package/dist/core/objects/schema/schema.model.js +91 -0
  381. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +59 -0
  382. package/dist/core/objects/sequence/changes/sequence.alter.js +75 -0
  383. package/dist/core/objects/sequence/changes/sequence.base.d.ts +17 -0
  384. package/dist/core/objects/sequence/changes/sequence.base.js +13 -0
  385. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +23 -0
  386. package/dist/core/objects/sequence/changes/sequence.comment.js +47 -0
  387. package/dist/core/objects/sequence/changes/sequence.create.d.ts +25 -0
  388. package/dist/core/objects/sequence/changes/sequence.create.js +78 -0
  389. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +22 -0
  390. package/dist/core/objects/sequence/changes/sequence.drop.js +31 -0
  391. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +101 -0
  392. package/dist/core/objects/sequence/changes/sequence.privilege.js +135 -0
  393. package/dist/core/objects/sequence/changes/sequence.types.d.ts +6 -0
  394. package/dist/core/objects/sequence/changes/sequence.types.js +1 -0
  395. package/dist/core/objects/sequence/sequence.diff.d.ts +20 -0
  396. package/dist/core/objects/sequence/sequence.diff.js +258 -0
  397. package/dist/core/objects/sequence/sequence.model.d.ts +76 -0
  398. package/dist/core/objects/sequence/sequence.model.js +169 -0
  399. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +56 -0
  400. package/dist/core/objects/subscription/changes/subscription.alter.js +82 -0
  401. package/dist/core/objects/subscription/changes/subscription.base.d.ts +17 -0
  402. package/dist/core/objects/subscription/changes/subscription.base.js +13 -0
  403. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +23 -0
  404. package/dist/core/objects/subscription/changes/subscription.comment.js +46 -0
  405. package/dist/core/objects/subscription/changes/subscription.create.d.ts +12 -0
  406. package/dist/core/objects/subscription/changes/subscription.create.js +52 -0
  407. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +11 -0
  408. package/dist/core/objects/subscription/changes/subscription.drop.js +15 -0
  409. package/dist/core/objects/subscription/changes/subscription.types.d.ts +5 -0
  410. package/dist/core/objects/subscription/changes/subscription.types.js +1 -0
  411. package/dist/core/objects/subscription/subscription.diff.d.ts +5 -0
  412. package/dist/core/objects/subscription/subscription.diff.js +167 -0
  413. package/dist/core/objects/subscription/subscription.model.d.ts +80 -0
  414. package/dist/core/objects/subscription/subscription.model.js +166 -0
  415. package/dist/core/objects/subscription/utils.d.ts +37 -0
  416. package/dist/core/objects/subscription/utils.js +112 -0
  417. package/dist/core/objects/table/changes/table.alter.d.ts +357 -0
  418. package/dist/core/objects/table/changes/table.alter.js +607 -0
  419. package/dist/core/objects/table/changes/table.base.d.ts +17 -0
  420. package/dist/core/objects/table/changes/table.base.js +13 -0
  421. package/dist/core/objects/table/changes/table.comment.d.ts +106 -0
  422. package/dist/core/objects/table/changes/table.comment.js +175 -0
  423. package/dist/core/objects/table/changes/table.create.d.ts +33 -0
  424. package/dist/core/objects/table/changes/table.create.js +145 -0
  425. package/dist/core/objects/table/changes/table.drop.d.ts +22 -0
  426. package/dist/core/objects/table/changes/table.drop.js +35 -0
  427. package/dist/core/objects/table/changes/table.privilege.d.ts +107 -0
  428. package/dist/core/objects/table/changes/table.privilege.js +150 -0
  429. package/dist/core/objects/table/changes/table.types.d.ts +6 -0
  430. package/dist/core/objects/table/changes/table.types.js +1 -0
  431. package/dist/core/objects/table/table.diff.d.ts +18 -0
  432. package/dist/core/objects/table/table.diff.js +668 -0
  433. package/dist/core/objects/table/table.model.d.ts +341 -0
  434. package/dist/core/objects/table/table.model.js +426 -0
  435. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +29 -0
  436. package/dist/core/objects/trigger/changes/trigger.alter.js +27 -0
  437. package/dist/core/objects/trigger/changes/trigger.base.d.ts +17 -0
  438. package/dist/core/objects/trigger/changes/trigger.base.js +13 -0
  439. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +23 -0
  440. package/dist/core/objects/trigger/changes/trigger.comment.js +51 -0
  441. package/dist/core/objects/trigger/changes/trigger.create.d.ts +41 -0
  442. package/dist/core/objects/trigger/changes/trigger.create.js +61 -0
  443. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +22 -0
  444. package/dist/core/objects/trigger/changes/trigger.drop.js +33 -0
  445. package/dist/core/objects/trigger/changes/trigger.types.d.ts +5 -0
  446. package/dist/core/objects/trigger/changes/trigger.types.js +1 -0
  447. package/dist/core/objects/trigger/trigger.diff.d.ts +11 -0
  448. package/dist/core/objects/trigger/trigger.diff.js +84 -0
  449. package/dist/core/objects/trigger/trigger.model.d.ts +92 -0
  450. package/dist/core/objects/trigger/trigger.model.js +235 -0
  451. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +81 -0
  452. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +123 -0
  453. package/dist/core/objects/type/composite-type/changes/composite-type.base.d.ts +17 -0
  454. package/dist/core/objects/type/composite-type/changes/composite-type.base.js +13 -0
  455. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +53 -0
  456. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +108 -0
  457. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +23 -0
  458. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +72 -0
  459. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +22 -0
  460. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +31 -0
  461. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +97 -0
  462. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +131 -0
  463. package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +6 -0
  464. package/dist/core/objects/type/composite-type/changes/composite-type.types.js +1 -0
  465. package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +18 -0
  466. package/dist/core/objects/type/composite-type/composite-type.diff.js +250 -0
  467. package/dist/core/objects/type/composite-type/composite-type.model.d.ts +148 -0
  468. package/dist/core/objects/type/composite-type/composite-type.model.js +223 -0
  469. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +52 -0
  470. package/dist/core/objects/type/enum/changes/enum.alter.js +60 -0
  471. package/dist/core/objects/type/enum/changes/enum.base.d.ts +17 -0
  472. package/dist/core/objects/type/enum/changes/enum.base.js +13 -0
  473. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +26 -0
  474. package/dist/core/objects/type/enum/changes/enum.comment.js +47 -0
  475. package/dist/core/objects/type/enum/changes/enum.create.d.ts +22 -0
  476. package/dist/core/objects/type/enum/changes/enum.create.js +43 -0
  477. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +22 -0
  478. package/dist/core/objects/type/enum/changes/enum.drop.js +28 -0
  479. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +97 -0
  480. package/dist/core/objects/type/enum/changes/enum.privilege.js +131 -0
  481. package/dist/core/objects/type/enum/changes/enum.types.d.ts +6 -0
  482. package/dist/core/objects/type/enum/changes/enum.types.js +1 -0
  483. package/dist/core/objects/type/enum/enum.diff.d.ts +18 -0
  484. package/dist/core/objects/type/enum/enum.diff.js +268 -0
  485. package/dist/core/objects/type/enum/enum.model.d.ts +66 -0
  486. package/dist/core/objects/type/enum/enum.model.js +154 -0
  487. package/dist/core/objects/type/range/changes/range.alter.d.ts +33 -0
  488. package/dist/core/objects/type/range/changes/range.alter.js +30 -0
  489. package/dist/core/objects/type/range/changes/range.base.d.ts +17 -0
  490. package/dist/core/objects/type/range/changes/range.base.js +13 -0
  491. package/dist/core/objects/type/range/changes/range.comment.d.ts +26 -0
  492. package/dist/core/objects/type/range/changes/range.comment.js +47 -0
  493. package/dist/core/objects/type/range/changes/range.create.d.ts +31 -0
  494. package/dist/core/objects/type/range/changes/range.create.js +113 -0
  495. package/dist/core/objects/type/range/changes/range.drop.d.ts +22 -0
  496. package/dist/core/objects/type/range/changes/range.drop.js +28 -0
  497. package/dist/core/objects/type/range/changes/range.privilege.d.ts +97 -0
  498. package/dist/core/objects/type/range/changes/range.privilege.js +131 -0
  499. package/dist/core/objects/type/range/changes/range.types.d.ts +6 -0
  500. package/dist/core/objects/type/range/changes/range.types.js +1 -0
  501. package/dist/core/objects/type/range/range.diff.d.ts +18 -0
  502. package/dist/core/objects/type/range/range.diff.js +172 -0
  503. package/dist/core/objects/type/range/range.model.d.ts +81 -0
  504. package/dist/core/objects/type/range/range.model.js +165 -0
  505. package/dist/core/objects/type/type.types.d.ts +4 -0
  506. package/dist/core/objects/type/type.types.js +1 -0
  507. package/dist/core/objects/utils.d.ts +57 -0
  508. package/dist/core/objects/utils.js +137 -0
  509. package/dist/core/objects/view/changes/view.alter.d.ts +62 -0
  510. package/dist/core/objects/view/changes/view.alter.js +75 -0
  511. package/dist/core/objects/view/changes/view.base.d.ts +17 -0
  512. package/dist/core/objects/view/changes/view.base.js +13 -0
  513. package/dist/core/objects/view/changes/view.comment.d.ts +23 -0
  514. package/dist/core/objects/view/changes/view.comment.js +46 -0
  515. package/dist/core/objects/view/changes/view.create.d.ts +27 -0
  516. package/dist/core/objects/view/changes/view.create.js +57 -0
  517. package/dist/core/objects/view/changes/view.drop.d.ts +17 -0
  518. package/dist/core/objects/view/changes/view.drop.js +30 -0
  519. package/dist/core/objects/view/changes/view.privilege.d.ts +107 -0
  520. package/dist/core/objects/view/changes/view.privilege.js +150 -0
  521. package/dist/core/objects/view/changes/view.types.d.ts +6 -0
  522. package/dist/core/objects/view/changes/view.types.js +1 -0
  523. package/dist/core/objects/view/view.diff.d.ts +18 -0
  524. package/dist/core/objects/view/view.diff.js +270 -0
  525. package/dist/core/objects/view/view.model.d.ts +152 -0
  526. package/dist/core/objects/view/view.model.js +250 -0
  527. package/dist/core/plan/apply.d.ts +33 -0
  528. package/dist/core/plan/apply.js +112 -0
  529. package/dist/core/plan/create.d.ts +22 -0
  530. package/dist/core/plan/create.js +228 -0
  531. package/dist/core/plan/hierarchy.d.ts +19 -0
  532. package/dist/core/plan/hierarchy.js +488 -0
  533. package/dist/core/plan/index.d.ts +18 -0
  534. package/dist/core/plan/index.js +20 -0
  535. package/dist/core/plan/io.d.ts +12 -0
  536. package/dist/core/plan/io.js +17 -0
  537. package/dist/core/plan/risk.d.ts +10 -0
  538. package/dist/core/plan/risk.js +38 -0
  539. package/dist/core/plan/serialize.d.ts +26 -0
  540. package/dist/core/plan/serialize.js +176 -0
  541. package/dist/core/plan/statements.d.ts +8 -0
  542. package/dist/core/plan/statements.js +13 -0
  543. package/dist/core/plan/types.d.ts +142 -0
  544. package/dist/core/plan/types.js +32 -0
  545. package/dist/core/postgres-config.d.ts +8 -0
  546. package/dist/core/postgres-config.js +46 -0
  547. package/dist/core/sort/custom-constraints.d.ts +9 -0
  548. package/dist/core/sort/custom-constraints.js +133 -0
  549. package/dist/core/sort/debug-visualization.d.ts +8 -0
  550. package/dist/core/sort/debug-visualization.js +145 -0
  551. package/dist/core/sort/dependency-filter.d.ts +19 -0
  552. package/dist/core/sort/dependency-filter.js +152 -0
  553. package/dist/core/sort/graph-builder.d.ts +37 -0
  554. package/dist/core/sort/graph-builder.js +172 -0
  555. package/dist/core/sort/graph-utils.d.ts +14 -0
  556. package/dist/core/sort/graph-utils.js +41 -0
  557. package/dist/core/sort/logical-sort.d.ts +26 -0
  558. package/dist/core/sort/logical-sort.js +532 -0
  559. package/dist/core/sort/sort-changes.d.ts +28 -0
  560. package/dist/core/sort/sort-changes.js +147 -0
  561. package/dist/core/sort/topological-sort.d.ts +20 -0
  562. package/dist/core/sort/topological-sort.js +138 -0
  563. package/dist/core/sort/types.d.ts +102 -0
  564. package/dist/core/sort/types.js +1 -0
  565. package/dist/core/sort/utils.d.ts +23 -0
  566. package/dist/core/sort/utils.js +51 -0
  567. package/dist/index.d.ts +9 -0
  568. package/dist/index.js +8 -0
  569. package/package.json +61 -12
@@ -0,0 +1,14 @@
1
+ import type { Catalog } from "./catalog.model.ts";
2
+ import type { Change } from "./change.types.ts";
3
+ /**
4
+ * For objects we are replacing (drop + create), ensure that any dependents are also
5
+ * replaced so that destructive drops succeed. Uses dependency edges from pg_depend
6
+ * (already captured in Catalog.depends) plus change metadata (creates/drops/requires).
7
+ *
8
+ * New changes are appended; ordering is handled later by the sorter.
9
+ */
10
+ export declare function expandReplaceDependencies({ changes, mainCatalog, branchCatalog, }: {
11
+ changes: Change[];
12
+ mainCatalog: Catalog;
13
+ branchCatalog: Catalog;
14
+ }): Change[];
@@ -0,0 +1,280 @@
1
+ import { CreateDomain } from "./objects/domain/changes/domain.create.js";
2
+ import { DropDomain } from "./objects/domain/changes/domain.drop.js";
3
+ import { CreateMaterializedView } from "./objects/materialized-view/changes/materialized-view.create.js";
4
+ import { DropMaterializedView } from "./objects/materialized-view/changes/materialized-view.drop.js";
5
+ import { CreateProcedure } from "./objects/procedure/changes/procedure.create.js";
6
+ import { DropProcedure } from "./objects/procedure/changes/procedure.drop.js";
7
+ import { AlterTableAddConstraint, AlterTableValidateConstraint, } from "./objects/table/changes/table.alter.js";
8
+ import { CreateCommentOnConstraint } from "./objects/table/changes/table.comment.js";
9
+ import { CreateTable } from "./objects/table/changes/table.create.js";
10
+ import { DropTable } from "./objects/table/changes/table.drop.js";
11
+ import { CreateCompositeType } from "./objects/type/composite-type/changes/composite-type.create.js";
12
+ import { DropCompositeType } from "./objects/type/composite-type/changes/composite-type.drop.js";
13
+ import { CreateEnum } from "./objects/type/enum/changes/enum.create.js";
14
+ import { DropEnum } from "./objects/type/enum/changes/enum.drop.js";
15
+ import { CreateRange } from "./objects/type/range/changes/range.create.js";
16
+ import { DropRange } from "./objects/type/range/changes/range.drop.js";
17
+ import { CreateView } from "./objects/view/changes/view.create.js";
18
+ import { DropView } from "./objects/view/changes/view.drop.js";
19
+ /**
20
+ * For objects we are replacing (drop + create), ensure that any dependents are also
21
+ * replaced so that destructive drops succeed. Uses dependency edges from pg_depend
22
+ * (already captured in Catalog.depends) plus change metadata (creates/drops/requires).
23
+ *
24
+ * New changes are appended; ordering is handled later by the sorter.
25
+ */
26
+ export function expandReplaceDependencies({ changes, mainCatalog, branchCatalog, }) {
27
+ const createdIds = new Set();
28
+ const droppedIds = new Set();
29
+ for (const change of changes) {
30
+ for (const id of change.creates ?? [])
31
+ createdIds.add(id);
32
+ for (const id of change.drops ?? [])
33
+ droppedIds.add(id);
34
+ }
35
+ const replaceRoots = new Set();
36
+ for (const id of createdIds) {
37
+ if (droppedIds.has(id)) {
38
+ replaceRoots.add(id);
39
+ }
40
+ }
41
+ if (replaceRoots.size === 0) {
42
+ return changes;
43
+ }
44
+ // Build referenced -> dependents adjacency from main catalog dependencies.
45
+ const dependentsByReferenced = new Map();
46
+ for (const dep of mainCatalog.depends) {
47
+ let list = dependentsByReferenced.get(dep.referenced_stable_id);
48
+ if (!list) {
49
+ list = new Set();
50
+ dependentsByReferenced.set(dep.referenced_stable_id, list);
51
+ }
52
+ list.add(dep.dependent_stable_id);
53
+ }
54
+ const additions = [];
55
+ const visitedTargets = new Set();
56
+ const visitedRefs = new Set(replaceRoots);
57
+ const queue = [...replaceRoots];
58
+ while (queue.length > 0) {
59
+ const refId = queue.shift();
60
+ const dependents = dependentsByReferenced.get(refId);
61
+ if (!dependents)
62
+ continue;
63
+ for (const dependentRaw of dependents) {
64
+ // Continue traversing the dependency graph from the raw dependent id.
65
+ if (!visitedRefs.has(dependentRaw)) {
66
+ visitedRefs.add(dependentRaw);
67
+ queue.push(dependentRaw);
68
+ }
69
+ const targetId = normalizeDependentId(dependentRaw);
70
+ if (!targetId)
71
+ continue;
72
+ // Also traverse using the normalized owning object id (e.g., table for a column).
73
+ if (!visitedRefs.has(targetId)) {
74
+ visitedRefs.add(targetId);
75
+ queue.push(targetId);
76
+ }
77
+ if (visitedTargets.has(targetId))
78
+ continue;
79
+ visitedTargets.add(targetId);
80
+ // Already handled (either original replace or previously added).
81
+ if (createdIds.has(targetId) && droppedIds.has(targetId))
82
+ continue;
83
+ if (replaceRoots.has(targetId))
84
+ continue;
85
+ const resolved = resolveObjectForStableId(targetId, mainCatalog, branchCatalog);
86
+ if (!resolved)
87
+ continue;
88
+ const hasCreate = createdIds.has(targetId);
89
+ const hasDrop = droppedIds.has(targetId);
90
+ const addDrop = !hasDrop;
91
+ const addCreate = !hasCreate;
92
+ if (!addDrop && !addCreate)
93
+ continue;
94
+ const replacementChanges = buildReplaceChanges(resolved, {
95
+ addDrop,
96
+ addCreate,
97
+ });
98
+ if (!replacementChanges)
99
+ continue;
100
+ additions.push(...replacementChanges);
101
+ // Track new creates/drops so we don't duplicate work for downstream dependents.
102
+ for (const change of replacementChanges) {
103
+ for (const id of change.creates ?? [])
104
+ createdIds.add(id);
105
+ for (const id of change.drops ?? [])
106
+ droppedIds.add(id);
107
+ }
108
+ }
109
+ }
110
+ if (additions.length === 0) {
111
+ return changes;
112
+ }
113
+ return [...changes, ...additions];
114
+ }
115
+ function normalizeDependentId(dependentId) {
116
+ let id = dependentId;
117
+ while (id.startsWith("comment:")) {
118
+ id = id.slice("comment:".length);
119
+ }
120
+ if (id.startsWith("acl:") ||
121
+ id.startsWith("defacl:") ||
122
+ id.startsWith("membership:") ||
123
+ id.startsWith("role:") ||
124
+ id.startsWith("schema:")) {
125
+ return null;
126
+ }
127
+ if (id.startsWith("column:")) {
128
+ const parts = id.slice("column:".length).split(".");
129
+ if (parts.length >= 2) {
130
+ const [schema, table] = parts;
131
+ return `table:${schema}.${table}`;
132
+ }
133
+ return null;
134
+ }
135
+ if (id.startsWith("constraint:")) {
136
+ const parts = id.slice("constraint:".length).split(".");
137
+ if (parts.length >= 2) {
138
+ const [schema, table] = parts;
139
+ return `table:${schema}.${table}`;
140
+ }
141
+ return null;
142
+ }
143
+ return id;
144
+ }
145
+ function resolveObjectForStableId(stableId, mainCatalog, branchCatalog) {
146
+ if (stableId.startsWith("table:")) {
147
+ const main = mainCatalog.tables[stableId];
148
+ const branch = branchCatalog.tables[stableId];
149
+ return main && branch ? { kind: "table", main, branch } : null;
150
+ }
151
+ if (stableId.startsWith("view:")) {
152
+ const main = mainCatalog.views[stableId];
153
+ const branch = branchCatalog.views[stableId];
154
+ return main && branch ? { kind: "view", main, branch } : null;
155
+ }
156
+ if (stableId.startsWith("materializedView:")) {
157
+ const main = mainCatalog.materializedViews[stableId];
158
+ const branch = branchCatalog.materializedViews[stableId];
159
+ return main && branch ? { kind: "materialized_view", main, branch } : null;
160
+ }
161
+ if (stableId.startsWith("procedure:")) {
162
+ const main = mainCatalog.procedures[stableId];
163
+ const branch = branchCatalog.procedures[stableId];
164
+ return main && branch ? { kind: "procedure", main, branch } : null;
165
+ }
166
+ if (stableId.startsWith("domain:")) {
167
+ const main = mainCatalog.domains[stableId];
168
+ const branch = branchCatalog.domains[stableId];
169
+ return main && branch ? { kind: "domain", main, branch } : null;
170
+ }
171
+ if (stableId.startsWith("type:")) {
172
+ const enumMain = mainCatalog.enums[stableId];
173
+ const enumBranch = branchCatalog.enums[stableId];
174
+ if (enumMain && enumBranch) {
175
+ return { kind: "enum", main: enumMain, branch: enumBranch };
176
+ }
177
+ const rangeMain = mainCatalog.ranges[stableId];
178
+ const rangeBranch = branchCatalog.ranges[stableId];
179
+ if (rangeMain && rangeBranch) {
180
+ return { kind: "range", main: rangeMain, branch: rangeBranch };
181
+ }
182
+ const compositeMain = mainCatalog.compositeTypes[stableId];
183
+ const compositeBranch = branchCatalog.compositeTypes[stableId];
184
+ if (compositeMain && compositeBranch) {
185
+ return {
186
+ kind: "composite_type",
187
+ main: compositeMain,
188
+ branch: compositeBranch,
189
+ };
190
+ }
191
+ }
192
+ return null;
193
+ }
194
+ function buildReplaceChanges(resolved, options) {
195
+ const { addDrop, addCreate } = options;
196
+ if (!addDrop && !addCreate)
197
+ return null;
198
+ switch (resolved.kind) {
199
+ case "table":
200
+ return [
201
+ ...(addDrop ? [new DropTable({ table: resolved.main })] : []),
202
+ ...(addCreate
203
+ ? [
204
+ new CreateTable({ table: resolved.branch }),
205
+ ...(resolved.branch.constraints ?? [])
206
+ .filter((c) => !c.is_partition_clone)
207
+ .flatMap((constraint) => {
208
+ const items = [
209
+ new AlterTableAddConstraint({
210
+ table: resolved.branch,
211
+ constraint,
212
+ }),
213
+ ];
214
+ if (!constraint.validated) {
215
+ items.push(new AlterTableValidateConstraint({
216
+ table: resolved.branch,
217
+ constraint,
218
+ }));
219
+ }
220
+ if (constraint.comment !== null &&
221
+ constraint.comment !== undefined) {
222
+ items.push(new CreateCommentOnConstraint({
223
+ table: resolved.branch,
224
+ constraint,
225
+ }));
226
+ }
227
+ return items;
228
+ }),
229
+ ]
230
+ : []),
231
+ ];
232
+ case "view":
233
+ return [
234
+ ...(addDrop ? [new DropView({ view: resolved.main })] : []),
235
+ ...(addCreate ? [new CreateView({ view: resolved.branch })] : []),
236
+ ];
237
+ case "materialized_view":
238
+ return [
239
+ ...(addDrop
240
+ ? [new DropMaterializedView({ materializedView: resolved.main })]
241
+ : []),
242
+ ...(addCreate
243
+ ? [new CreateMaterializedView({ materializedView: resolved.branch })]
244
+ : []),
245
+ ];
246
+ case "procedure":
247
+ return [
248
+ ...(addDrop ? [new DropProcedure({ procedure: resolved.main })] : []),
249
+ ...(addCreate
250
+ ? [new CreateProcedure({ procedure: resolved.branch })]
251
+ : []),
252
+ ];
253
+ case "enum":
254
+ return [
255
+ ...(addDrop ? [new DropEnum({ enum: resolved.main })] : []),
256
+ ...(addCreate ? [new CreateEnum({ enum: resolved.branch })] : []),
257
+ ];
258
+ case "range":
259
+ return [
260
+ ...(addDrop ? [new DropRange({ range: resolved.main })] : []),
261
+ ...(addCreate ? [new CreateRange({ range: resolved.branch })] : []),
262
+ ];
263
+ case "composite_type":
264
+ return [
265
+ ...(addDrop
266
+ ? [new DropCompositeType({ compositeType: resolved.main })]
267
+ : []),
268
+ ...(addCreate
269
+ ? [new CreateCompositeType({ compositeType: resolved.branch })]
270
+ : []),
271
+ ];
272
+ case "domain":
273
+ return [
274
+ ...(addDrop ? [new DropDomain({ domain: resolved.main })] : []),
275
+ ...(addCreate ? [new CreateDomain({ domain: resolved.branch })] : []),
276
+ ];
277
+ default:
278
+ return null;
279
+ }
280
+ }
@@ -0,0 +1,15 @@
1
+ import type { Catalog } from "./catalog.model.ts";
2
+ import type { Change } from "./change.types.ts";
3
+ /**
4
+ * Build a deterministic fingerprint for the objects actually touched by a plan.
5
+ * Uses the stableIds declared by the changes (creates/requires/drops) and snapshots
6
+ * only the catalog entities that exist for those stableIds (parent objects, no virtuals).
7
+ */
8
+ export declare function buildPlanScopeFingerprint(catalog: Catalog, changes: Change[]): {
9
+ hash: string;
10
+ stableIds: string[];
11
+ };
12
+ /**
13
+ * Compute a fingerprint from a catalog and a set of stableIds.
14
+ */
15
+ export declare function hashStableIds(catalog: Catalog, stableIds: string[]): string;
@@ -0,0 +1,174 @@
1
+ import crypto from "node:crypto";
2
+ /**
3
+ * Build a deterministic fingerprint for the objects actually touched by a plan.
4
+ * Uses the stableIds declared by the changes (creates/requires/drops) and snapshots
5
+ * only the catalog entities that exist for those stableIds (parent objects, no virtuals).
6
+ */
7
+ export function buildPlanScopeFingerprint(catalog, changes) {
8
+ const stableIds = collectStableIds(changes);
9
+ const hash = hashStableIds(catalog, stableIds);
10
+ return { hash, stableIds };
11
+ }
12
+ /**
13
+ * Compute a fingerprint from a catalog and a set of stableIds.
14
+ */
15
+ export function hashStableIds(catalog, stableIds) {
16
+ const catalogLookup = buildCatalogLookup(catalog);
17
+ const projection = [];
18
+ for (const stableId of stableIds) {
19
+ const record = catalogLookup[stableId];
20
+ if (!record) {
21
+ continue;
22
+ }
23
+ projection.push({
24
+ stableId,
25
+ snapshot: record.stableSnapshot(),
26
+ });
27
+ }
28
+ const canonical = stableStringify(projection);
29
+ return sha256(canonical);
30
+ }
31
+ /**
32
+ * Hash a string to hex SHA256.
33
+ */
34
+ function sha256(input) {
35
+ return crypto.createHash("sha256").update(input).digest("hex");
36
+ }
37
+ /**
38
+ * Collect the union of stableIds referenced by all changes.
39
+ */
40
+ function collectStableIds(changes) {
41
+ const ids = new Set();
42
+ for (const change of changes) {
43
+ for (const id of getChangeStableIds(change)) {
44
+ ids.add(id);
45
+ }
46
+ }
47
+ return Array.from(ids).sort((a, b) => a.localeCompare(b));
48
+ }
49
+ /**
50
+ * Gather the stableIds a change touches (creates/requires/drops) and, when the
51
+ * change has a primary entity with a stableId, include it as well.
52
+ */
53
+ function getChangeStableIds(change) {
54
+ const ids = [];
55
+ // Dependencies declared on the change.
56
+ ids.push(...change.creates, ...change.requires, ...change.drops);
57
+ // Best-effort primary entity stableId, when available.
58
+ const primary = getPrimaryStableId(change);
59
+ if (primary)
60
+ ids.push(primary);
61
+ return ids;
62
+ }
63
+ /**
64
+ * Extract the primary entity stableId for a change, when it exists.
65
+ */
66
+ function getPrimaryStableId(change) {
67
+ switch (change.objectType) {
68
+ case "aggregate":
69
+ return change.aggregate.stableId;
70
+ case "collation":
71
+ return change.collation.stableId;
72
+ case "composite_type":
73
+ return change.compositeType.stableId;
74
+ case "domain":
75
+ return change.domain.stableId;
76
+ case "enum":
77
+ return change.enum.stableId;
78
+ case "event_trigger":
79
+ return change.eventTrigger.stableId;
80
+ case "extension":
81
+ return change.extension.stableId;
82
+ case "foreign_data_wrapper":
83
+ return change.foreignDataWrapper.stableId;
84
+ case "foreign_table":
85
+ return change.foreignTable.stableId;
86
+ case "index":
87
+ return change.index.stableId;
88
+ case "language":
89
+ return change.language.stableId;
90
+ case "materialized_view":
91
+ return change.materializedView.stableId;
92
+ case "procedure":
93
+ return change.procedure.stableId;
94
+ case "publication":
95
+ return change.publication.stableId;
96
+ case "range":
97
+ return change.range.stableId;
98
+ case "role":
99
+ return change.role.stableId;
100
+ case "schema":
101
+ return change.schema.stableId;
102
+ case "sequence":
103
+ return change.sequence.stableId;
104
+ case "server":
105
+ return change.server.stableId;
106
+ case "subscription":
107
+ return change.subscription.stableId;
108
+ case "table":
109
+ return change.table.stableId;
110
+ case "trigger":
111
+ return change.trigger.stableId;
112
+ case "rls_policy":
113
+ return change.policy.stableId;
114
+ case "rule":
115
+ return change.rule.stableId;
116
+ case "view":
117
+ return change.view.stableId;
118
+ case "user_mapping":
119
+ return change.userMapping.stableId;
120
+ default:
121
+ return null;
122
+ }
123
+ }
124
+ /**
125
+ * Build a flat lookup of catalog objects keyed by stableId.
126
+ */
127
+ function buildCatalogLookup(catalog) {
128
+ return {
129
+ ...catalog.aggregates,
130
+ ...catalog.collations,
131
+ ...catalog.compositeTypes,
132
+ ...catalog.domains,
133
+ ...catalog.enums,
134
+ ...catalog.extensions,
135
+ ...catalog.procedures,
136
+ ...catalog.indexes,
137
+ ...catalog.materializedViews,
138
+ ...catalog.subscriptions,
139
+ ...catalog.publications,
140
+ ...catalog.rlsPolicies,
141
+ ...catalog.roles,
142
+ ...catalog.schemas,
143
+ ...catalog.sequences,
144
+ ...catalog.tables,
145
+ ...catalog.triggers,
146
+ ...catalog.eventTriggers,
147
+ ...catalog.rules,
148
+ ...catalog.ranges,
149
+ ...catalog.views,
150
+ ...catalog.foreignDataWrappers,
151
+ ...catalog.servers,
152
+ ...catalog.userMappings,
153
+ ...catalog.foreignTables,
154
+ };
155
+ }
156
+ /**
157
+ * Deterministic stringify with sorted object keys.
158
+ */
159
+ function stableStringify(value) {
160
+ if (value === null || typeof value !== "object") {
161
+ if (typeof value === "bigint") {
162
+ return JSON.stringify(value.toString());
163
+ }
164
+ return JSON.stringify(value);
165
+ }
166
+ if (Array.isArray(value)) {
167
+ return `[${value.map(stableStringify).join(",")}]`;
168
+ }
169
+ const entries = Object.entries(value).sort(([a], [b]) => a.localeCompare(b));
170
+ const inner = entries
171
+ .map(([k, v]) => `${JSON.stringify(k)}:${stableStringify(v)}`)
172
+ .join(",");
173
+ return `{${inner}}`;
174
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Filter DSL - A serializable domain-specific language for change filtering.
3
+ */
4
+ import type { Change } from "../../change.types.ts";
5
+ import type { ChangeFilter } from "./filter.types.ts";
6
+ /**
7
+ * Core properties that all changes have.
8
+ */
9
+ type CoreProperties = {
10
+ type?: Change["objectType"];
11
+ operation?: "create" | "alter" | "drop";
12
+ scope?: Change["scope"];
13
+ };
14
+ /**
15
+ * Extracted properties that are extracted from changes via extractor functions.
16
+ * String value = exact match, Array value = value must be in array
17
+ */
18
+ type ExtractedProperties = {
19
+ schema?: string | string[];
20
+ owner?: string | string[];
21
+ member?: string | string[];
22
+ };
23
+ /**
24
+ * Property pattern - matches against change properties.
25
+ * Multiple properties are combined with AND (all must match).
26
+ */
27
+ type PropertyPattern = CoreProperties & ExtractedProperties & {
28
+ and?: never;
29
+ or?: never;
30
+ not?: never;
31
+ };
32
+ /**
33
+ * Composition pattern - combines other patterns using logical operators.
34
+ * Composition operators are exclusive - cannot be mixed with properties.
35
+ */
36
+ type CompositionPattern = ({
37
+ and: FilterPattern[];
38
+ or?: never;
39
+ not?: never;
40
+ } & {
41
+ [K in keyof CoreProperties]?: never;
42
+ } & {
43
+ [K in keyof ExtractedProperties]?: never;
44
+ }) | ({
45
+ or: FilterPattern[];
46
+ and?: never;
47
+ not?: never;
48
+ } & {
49
+ [K in keyof CoreProperties]?: never;
50
+ } & {
51
+ [K in keyof ExtractedProperties]?: never;
52
+ }) | ({
53
+ not: FilterPattern;
54
+ and?: never;
55
+ or?: never;
56
+ } & {
57
+ [K in keyof CoreProperties]?: never;
58
+ } & {
59
+ [K in keyof ExtractedProperties]?: never;
60
+ });
61
+ /**
62
+ * Filter pattern DSL.
63
+ * Either a property pattern (matches against change properties) or
64
+ * a composition pattern (combines other patterns using logical operators).
65
+ * Composition operators are exclusive - cannot be mixed with properties.
66
+ */
67
+ export type FilterPattern = PropertyPattern | CompositionPattern;
68
+ /**
69
+ * Filter DSL - a single pattern expression.
70
+ */
71
+ export type FilterDSL = FilterPattern;
72
+ /**
73
+ * Evaluate a pattern against a change.
74
+ *
75
+ * @param pattern - The pattern to evaluate
76
+ * @param change - The change to match against
77
+ * @returns true if the pattern matches, false otherwise
78
+ */
79
+ export declare function evaluatePattern(pattern: FilterPattern, change: Change): boolean;
80
+ /**
81
+ * Compile a Filter DSL to a ChangeFilter function.
82
+ *
83
+ * @param dsl - The filter DSL pattern
84
+ * @returns A ChangeFilter function that evaluates the pattern
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * const filter = compileFilterDSL({
89
+ * or: [
90
+ * { type: "schema", operation: "create" },
91
+ * { schema: "public" }
92
+ * ]
93
+ * });
94
+ * ```
95
+ */
96
+ export declare function compileFilterDSL(dsl: FilterDSL): ChangeFilter;
97
+ export {};
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Filter DSL - A serializable domain-specific language for change filtering.
3
+ */
4
+ import { PROPERTY_EXTRACTORS } from "./extractors.js";
5
+ /**
6
+ * Evaluate a pattern against a change.
7
+ *
8
+ * @param pattern - The pattern to evaluate
9
+ * @param change - The change to match against
10
+ * @returns true if the pattern matches, false otherwise
11
+ */
12
+ export function evaluatePattern(pattern, change) {
13
+ // Handle composition operators first (they take precedence)
14
+ // NOT operator - negate the result
15
+ if (pattern.not) {
16
+ return !evaluatePattern(pattern.not, change);
17
+ }
18
+ // AND operator - all patterns must match
19
+ if (pattern.and) {
20
+ return pattern.and.every((p) => evaluatePattern(p, change));
21
+ }
22
+ // OR operator - any pattern must match
23
+ if (pattern.or) {
24
+ return pattern.or.some((p) => evaluatePattern(p, change));
25
+ }
26
+ // Evaluate basic pattern matching
27
+ // Multiple properties in a pattern are combined with AND (all must match)
28
+ // Match objectType
29
+ if (pattern.type) {
30
+ if (change.objectType !== pattern.type) {
31
+ return false;
32
+ }
33
+ }
34
+ // Match operation
35
+ if (pattern.operation) {
36
+ if (change.operation !== pattern.operation) {
37
+ return false;
38
+ }
39
+ }
40
+ // Match scope
41
+ if (pattern.scope) {
42
+ if (change.scope !== pattern.scope) {
43
+ return false;
44
+ }
45
+ }
46
+ // Match extracted properties
47
+ for (const [key, value] of Object.entries(pattern)) {
48
+ // Skip composition operators and core properties
49
+ if (["and", "or", "not", "type", "operation", "scope"].includes(key)) {
50
+ continue;
51
+ }
52
+ // Check if this is a registered property extractor
53
+ const extractor = PROPERTY_EXTRACTORS[key];
54
+ if (!extractor) {
55
+ // Unknown property - ignore
56
+ continue;
57
+ }
58
+ // Extract the actual value from the change
59
+ const actualValue = extractor(change);
60
+ // Property matching rules:
61
+ // - String value: exact match
62
+ // - Array value: value must be in array
63
+ // - Missing properties (null) don't match
64
+ if (actualValue === null) {
65
+ return false;
66
+ }
67
+ if (typeof value === "string") {
68
+ // Exact match
69
+ if (actualValue !== value) {
70
+ return false;
71
+ }
72
+ }
73
+ else if (Array.isArray(value)) {
74
+ // Value must be in array
75
+ if (!value.includes(actualValue)) {
76
+ return false;
77
+ }
78
+ }
79
+ else {
80
+ // Invalid value type - don't match
81
+ return false;
82
+ }
83
+ }
84
+ // All checks passed
85
+ return true;
86
+ }
87
+ /**
88
+ * Compile a Filter DSL to a ChangeFilter function.
89
+ *
90
+ * @param dsl - The filter DSL pattern
91
+ * @returns A ChangeFilter function that evaluates the pattern
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * const filter = compileFilterDSL({
96
+ * or: [
97
+ * { type: "schema", operation: "create" },
98
+ * { schema: "public" }
99
+ * ]
100
+ * });
101
+ * ```
102
+ */
103
+ export function compileFilterDSL(dsl) {
104
+ return (change) => {
105
+ return evaluatePattern(dsl, change);
106
+ };
107
+ }