@supabase/pg-delta 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (935) hide show
  1. package/README.md +48 -3
  2. package/dist/cli/app.js +26 -3
  3. package/dist/cli/bin/cli.js +5 -0
  4. package/dist/cli/commands/catalog-export.d.ts +5 -0
  5. package/dist/cli/commands/catalog-export.js +64 -0
  6. package/dist/cli/commands/declarative-apply.d.ts +6 -0
  7. package/dist/cli/commands/declarative-apply.js +288 -0
  8. package/dist/cli/commands/declarative-export.d.ts +5 -0
  9. package/dist/cli/commands/declarative-export.js +240 -0
  10. package/dist/cli/commands/plan.js +47 -16
  11. package/dist/cli/commands/sync.js +8 -12
  12. package/dist/cli/exit-code.d.ts +2 -0
  13. package/dist/cli/exit-code.js +7 -0
  14. package/dist/cli/formatters/tree/tree.js +3 -2
  15. package/dist/cli/utils/apply-display.d.ts +52 -0
  16. package/dist/cli/utils/apply-display.js +183 -0
  17. package/dist/cli/utils/export-display.d.ts +43 -0
  18. package/dist/cli/utils/export-display.js +202 -0
  19. package/dist/cli/utils/integrations.d.ts +30 -6
  20. package/dist/cli/utils/integrations.js +98 -6
  21. package/dist/cli/utils/resolve-input.d.ts +7 -0
  22. package/dist/cli/utils/resolve-input.js +13 -0
  23. package/dist/cli/utils.d.ts +2 -0
  24. package/dist/cli/utils.js +1 -1
  25. package/dist/core/catalog-export/index.d.ts +11 -0
  26. package/dist/core/catalog-export/index.js +10 -0
  27. package/dist/core/catalog.diff.d.ts +1 -0
  28. package/dist/core/catalog.diff.js +70 -49
  29. package/dist/core/catalog.model.d.ts +14 -1
  30. package/dist/core/catalog.model.js +103 -1
  31. package/dist/core/catalog.snapshot.d.ts +66 -0
  32. package/dist/core/catalog.snapshot.js +206 -0
  33. package/dist/core/change-utils.d.ts +9 -0
  34. package/dist/core/change-utils.js +71 -0
  35. package/dist/core/change.types.d.ts +22 -0
  36. package/dist/core/change.types.js +37 -1
  37. package/dist/core/connection-url.d.ts +32 -0
  38. package/dist/core/connection-url.js +77 -0
  39. package/dist/core/declarative-apply/discover-sql.d.ts +18 -0
  40. package/dist/core/declarative-apply/discover-sql.js +86 -0
  41. package/dist/core/declarative-apply/extract-catalog-providers.d.ts +23 -0
  42. package/dist/core/declarative-apply/extract-catalog-providers.js +159 -0
  43. package/dist/core/declarative-apply/index.d.ts +49 -0
  44. package/dist/core/declarative-apply/index.js +134 -0
  45. package/dist/core/declarative-apply/round-apply.d.ts +100 -0
  46. package/dist/core/declarative-apply/round-apply.js +378 -0
  47. package/dist/core/depend.js +25 -0
  48. package/dist/core/expand-replace-dependencies.d.ts +8 -2
  49. package/dist/core/expand-replace-dependencies.js +116 -10
  50. package/dist/core/export/file-mapper.d.ts +71 -0
  51. package/dist/core/export/file-mapper.js +474 -0
  52. package/dist/core/export/grouper.d.ts +13 -0
  53. package/dist/core/export/grouper.js +76 -0
  54. package/dist/core/export/index.d.ts +45 -0
  55. package/dist/core/export/index.js +66 -0
  56. package/dist/core/export/types.d.ts +84 -0
  57. package/dist/core/export/types.js +25 -0
  58. package/dist/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
  59. package/dist/core/integrations/filter/dsl.d.ts +82 -41
  60. package/dist/core/integrations/filter/dsl.js +127 -61
  61. package/dist/core/integrations/filter/flatten.d.ts +51 -0
  62. package/dist/core/integrations/filter/flatten.js +116 -0
  63. package/dist/core/integrations/integration-dsl.d.ts +27 -1
  64. package/dist/core/integrations/integration.types.d.ts +26 -1
  65. package/dist/core/integrations/integration.types.js +31 -1
  66. package/dist/core/integrations/merge.d.ts +20 -0
  67. package/dist/core/integrations/merge.js +60 -0
  68. package/dist/core/integrations/serialize/dsl.d.ts +8 -12
  69. package/dist/core/integrations/serialize/dsl.js +2 -2
  70. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  71. package/dist/core/integrations/supabase.d.ts +8 -0
  72. package/dist/core/integrations/supabase.js +69 -8
  73. package/dist/core/objects/aggregate/aggregate.diff.d.ts +2 -8
  74. package/dist/core/objects/aggregate/aggregate.diff.js +16 -70
  75. package/dist/core/objects/aggregate/aggregate.model.d.ts +8 -8
  76. package/dist/core/objects/aggregate/aggregate.model.js +1 -1
  77. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  78. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  79. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  80. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  81. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  82. package/dist/core/objects/aggregate/changes/aggregate.create.js +2 -2
  83. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  84. package/dist/core/objects/aggregate/changes/aggregate.drop.js +2 -2
  85. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  86. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  87. package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +1 -0
  88. package/dist/core/objects/base.change.d.ts +12 -1
  89. package/dist/core/objects/base.change.js +10 -0
  90. package/dist/core/objects/base.model.d.ts +4 -1
  91. package/dist/core/objects/base.model.js +5 -2
  92. package/dist/core/objects/base.privilege-diff.d.ts +38 -13
  93. package/dist/core/objects/base.privilege-diff.js +104 -22
  94. package/dist/core/objects/base.privilege.d.ts +1 -0
  95. package/dist/core/objects/base.privilege.js +9 -2
  96. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  97. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  98. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  99. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  100. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  101. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  102. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  103. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  104. package/dist/core/objects/collation/changes/collation.types.d.ts +1 -0
  105. package/dist/core/objects/collation/collation.diff.d.ts +2 -3
  106. package/dist/core/objects/diff-context.d.ts +15 -0
  107. package/dist/core/objects/diff-context.js +1 -0
  108. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  109. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  110. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  111. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  112. package/dist/core/objects/domain/changes/domain.create.d.ts +3 -2
  113. package/dist/core/objects/domain/changes/domain.create.js +12 -4
  114. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  115. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  116. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  117. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  118. package/dist/core/objects/domain/changes/domain.types.d.ts +1 -0
  119. package/dist/core/objects/domain/domain.diff.d.ts +2 -8
  120. package/dist/core/objects/domain/domain.diff.js +16 -77
  121. package/dist/core/objects/domain/domain.model.js +1 -1
  122. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  123. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  124. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  125. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  126. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  127. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  128. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  129. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  130. package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +1 -0
  131. package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +2 -3
  132. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  133. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  134. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  135. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  136. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  137. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  138. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  139. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  140. package/dist/core/objects/extension/changes/extension.types.d.ts +1 -0
  141. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  142. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  143. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  144. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  145. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  146. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  147. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  148. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  149. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  150. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  151. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +1 -0
  152. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +2 -8
  153. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +13 -77
  154. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +2 -2
  155. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +1 -0
  156. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  157. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  158. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  159. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  160. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  161. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  162. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  163. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  164. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  165. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  166. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +1 -0
  167. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +2 -8
  168. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +16 -77
  169. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +1 -1
  170. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  171. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  172. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  173. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  174. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  175. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  176. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  177. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  178. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  179. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  180. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +1 -0
  181. package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +2 -8
  182. package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +13 -77
  183. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  184. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  185. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  186. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  187. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  188. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  189. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +1 -0
  190. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  191. package/dist/core/objects/index/changes/index.alter.js +3 -3
  192. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  193. package/dist/core/objects/index/changes/index.comment.js +2 -2
  194. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  195. package/dist/core/objects/index/changes/index.create.js +1 -1
  196. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  197. package/dist/core/objects/index/changes/index.drop.js +1 -1
  198. package/dist/core/objects/index/changes/index.types.d.ts +1 -0
  199. package/dist/core/objects/index/index.model.js +12 -2
  200. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  201. package/dist/core/objects/language/changes/language.alter.js +1 -1
  202. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  203. package/dist/core/objects/language/changes/language.comment.js +2 -2
  204. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  205. package/dist/core/objects/language/changes/language.create.js +1 -1
  206. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  207. package/dist/core/objects/language/changes/language.drop.js +1 -1
  208. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  209. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  210. package/dist/core/objects/language/changes/language.types.d.ts +1 -0
  211. package/dist/core/objects/language/language.diff.d.ts +2 -5
  212. package/dist/core/objects/language/language.diff.js +7 -39
  213. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  214. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  215. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  216. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  217. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  218. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  219. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  220. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  221. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  222. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  223. package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +1 -0
  224. package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +2 -8
  225. package/dist/core/objects/materialized-view/materialized-view.diff.js +16 -158
  226. package/dist/core/objects/materialized-view/materialized-view.model.d.ts +3 -3
  227. package/dist/core/objects/materialized-view/materialized-view.model.js +1 -1
  228. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  229. package/dist/core/objects/procedure/changes/procedure.alter.js +19 -19
  230. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  231. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  232. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  233. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  234. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  235. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  236. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  237. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  238. package/dist/core/objects/procedure/changes/procedure.types.d.ts +1 -0
  239. package/dist/core/objects/procedure/procedure.diff.d.ts +2 -8
  240. package/dist/core/objects/procedure/procedure.diff.js +57 -97
  241. package/dist/core/objects/procedure/procedure.model.d.ts +9 -9
  242. package/dist/core/objects/procedure/procedure.model.js +1 -1
  243. package/dist/core/objects/publication/changes/publication.alter.d.ts +10 -17
  244. package/dist/core/objects/publication/changes/publication.alter.js +12 -21
  245. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  246. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  247. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  248. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  249. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  250. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  251. package/dist/core/objects/publication/changes/publication.types.d.ts +3 -2
  252. package/dist/core/objects/publication/publication.diff.d.ts +2 -3
  253. package/dist/core/objects/publication/publication.diff.js +8 -13
  254. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  255. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +6 -6
  256. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  257. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  258. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  259. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +24 -1
  260. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  261. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  262. package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +1 -0
  263. package/dist/core/objects/rls-policy/rls-policy.model.d.ts +51 -2
  264. package/dist/core/objects/rls-policy/rls-policy.model.js +122 -1
  265. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  266. package/dist/core/objects/role/changes/role.alter.js +2 -2
  267. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  268. package/dist/core/objects/role/changes/role.comment.js +2 -2
  269. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  270. package/dist/core/objects/role/changes/role.create.js +1 -1
  271. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  272. package/dist/core/objects/role/changes/role.drop.js +1 -1
  273. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  274. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  275. package/dist/core/objects/role/changes/role.types.d.ts +1 -0
  276. package/dist/core/objects/role/role.diff.js +22 -1
  277. package/dist/core/objects/role/role.model.d.ts +4 -3
  278. package/dist/core/objects/role/role.model.js +118 -12
  279. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  280. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  281. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  282. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  283. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  284. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  285. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  286. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  287. package/dist/core/objects/rule/changes/rule.types.d.ts +1 -0
  288. package/dist/core/objects/rule/rule.model.d.ts +1 -1
  289. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  290. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  291. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  292. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  293. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  294. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  295. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  296. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  297. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  298. package/dist/core/objects/schema/changes/schema.types.d.ts +1 -0
  299. package/dist/core/objects/schema/schema.diff.d.ts +2 -8
  300. package/dist/core/objects/schema/schema.diff.js +16 -77
  301. package/dist/core/objects/schema/schema.model.js +1 -1
  302. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  303. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  304. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  305. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  306. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  307. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  308. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  309. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  310. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  311. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  312. package/dist/core/objects/sequence/changes/sequence.types.d.ts +1 -0
  313. package/dist/core/objects/sequence/sequence.diff.d.ts +5 -8
  314. package/dist/core/objects/sequence/sequence.diff.js +55 -90
  315. package/dist/core/objects/sequence/sequence.model.js +1 -1
  316. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  317. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  318. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  319. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  320. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  321. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  322. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  323. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  324. package/dist/core/objects/subscription/changes/subscription.types.d.ts +1 -0
  325. package/dist/core/objects/subscription/subscription.diff.d.ts +2 -3
  326. package/dist/core/objects/table/changes/table.alter.d.ts +69 -22
  327. package/dist/core/objects/table/changes/table.alter.js +130 -27
  328. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  329. package/dist/core/objects/table/changes/table.comment.js +6 -6
  330. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  331. package/dist/core/objects/table/changes/table.create.js +4 -1
  332. package/dist/core/objects/table/changes/table.drop.d.ts +16 -3
  333. package/dist/core/objects/table/changes/table.drop.js +24 -1
  334. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  335. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  336. package/dist/core/objects/table/changes/table.types.d.ts +1 -0
  337. package/dist/core/objects/table/table.diff.d.ts +2 -8
  338. package/dist/core/objects/table/table.diff.js +101 -162
  339. package/dist/core/objects/table/table.model.d.ts +29 -22
  340. package/dist/core/objects/table/table.model.js +16 -8
  341. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  342. package/dist/core/objects/trigger/changes/trigger.alter.js +24 -1
  343. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  344. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  345. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  346. package/dist/core/objects/trigger/changes/trigger.create.js +5 -6
  347. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  348. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  349. package/dist/core/objects/trigger/changes/trigger.types.d.ts +1 -0
  350. package/dist/core/objects/trigger/trigger.diff.js +7 -2
  351. package/dist/core/objects/trigger/trigger.model.d.ts +10 -1
  352. package/dist/core/objects/trigger/trigger.model.js +19 -1
  353. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  354. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  355. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  356. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  357. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  358. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  359. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  360. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  361. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  362. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  363. package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +1 -0
  364. package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +2 -8
  365. package/dist/core/objects/type/composite-type/composite-type.diff.js +16 -77
  366. package/dist/core/objects/type/composite-type/composite-type.model.d.ts +3 -3
  367. package/dist/core/objects/type/composite-type/composite-type.model.js +2 -1
  368. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  369. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  370. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  371. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  372. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  373. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  374. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  375. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  376. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  377. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  378. package/dist/core/objects/type/enum/changes/enum.types.d.ts +1 -0
  379. package/dist/core/objects/type/enum/enum.diff.d.ts +2 -8
  380. package/dist/core/objects/type/enum/enum.diff.js +25 -112
  381. package/dist/core/objects/type/enum/enum.model.js +1 -1
  382. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  383. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  384. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  385. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  386. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  387. package/dist/core/objects/type/range/changes/range.create.js +7 -4
  388. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  389. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  390. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  391. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  392. package/dist/core/objects/type/range/changes/range.types.d.ts +1 -0
  393. package/dist/core/objects/type/range/range.diff.d.ts +2 -8
  394. package/dist/core/objects/type/range/range.diff.js +16 -77
  395. package/dist/core/objects/type/range/range.model.js +1 -1
  396. package/dist/core/objects/type/type.types.d.ts +1 -0
  397. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  398. package/dist/core/objects/view/changes/view.alter.js +3 -3
  399. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  400. package/dist/core/objects/view/changes/view.comment.js +2 -2
  401. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  402. package/dist/core/objects/view/changes/view.create.js +1 -1
  403. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  404. package/dist/core/objects/view/changes/view.drop.js +1 -1
  405. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  406. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  407. package/dist/core/objects/view/changes/view.types.d.ts +1 -0
  408. package/dist/core/objects/view/view.diff.d.ts +2 -8
  409. package/dist/core/objects/view/view.diff.js +37 -168
  410. package/dist/core/objects/view/view.model.d.ts +18 -4
  411. package/dist/core/objects/view/view.model.js +3 -13
  412. package/dist/core/plan/apply.js +11 -28
  413. package/dist/core/plan/create.d.ts +19 -6
  414. package/dist/core/plan/create.js +154 -171
  415. package/dist/core/plan/serialize.js +16 -4
  416. package/dist/core/plan/sql-format/constants.d.ts +2 -0
  417. package/dist/core/plan/sql-format/constants.js +11 -0
  418. package/dist/core/plan/sql-format/fixtures.d.ts +2 -0
  419. package/dist/core/plan/sql-format/fixtures.js +2455 -0
  420. package/dist/core/plan/sql-format/format-utils.d.ts +37 -0
  421. package/dist/core/plan/sql-format/format-utils.js +274 -0
  422. package/dist/core/plan/sql-format/formatters.d.ts +20 -0
  423. package/dist/core/plan/sql-format/formatters.js +737 -0
  424. package/dist/core/plan/sql-format/index.d.ts +2 -0
  425. package/dist/core/plan/sql-format/index.js +98 -0
  426. package/dist/core/plan/sql-format/keyword-case.d.ts +2 -0
  427. package/dist/core/plan/sql-format/keyword-case.js +893 -0
  428. package/dist/core/plan/sql-format/protect.d.ts +3 -0
  429. package/dist/core/plan/sql-format/protect.js +269 -0
  430. package/dist/core/plan/sql-format/sql-scanner.d.ts +59 -0
  431. package/dist/core/plan/sql-format/sql-scanner.js +202 -0
  432. package/dist/core/plan/sql-format/tokenizer.d.ts +22 -0
  433. package/dist/core/plan/sql-format/tokenizer.js +118 -0
  434. package/dist/core/plan/sql-format/types.d.ts +28 -0
  435. package/dist/core/plan/sql-format/types.js +1 -0
  436. package/dist/core/plan/sql-format/wrap.d.ts +2 -0
  437. package/dist/core/plan/sql-format/wrap.js +165 -0
  438. package/dist/core/plan/sql-format.d.ts +2 -0
  439. package/dist/core/plan/sql-format.js +1 -0
  440. package/dist/core/plan/ssl-config.d.ts +32 -0
  441. package/dist/core/plan/ssl-config.js +115 -0
  442. package/dist/core/plan/statements.d.ts +2 -1
  443. package/dist/core/plan/statements.js +6 -2
  444. package/dist/core/plan/types.d.ts +9 -6
  445. package/dist/core/post-diff-cycle-breaking.d.ts +29 -0
  446. package/dist/core/post-diff-cycle-breaking.js +100 -0
  447. package/dist/core/postgres-config.d.ts +89 -3
  448. package/dist/core/postgres-config.js +273 -4
  449. package/dist/core/sort/custom-constraints.js +65 -1
  450. package/dist/core/sort/cycle-breakers.d.ts +15 -0
  451. package/dist/core/sort/cycle-breakers.js +269 -0
  452. package/dist/core/sort/graph-builder.js +10 -0
  453. package/dist/core/sort/logical-sort.js +34 -47
  454. package/dist/core/sort/sort-changes.js +97 -43
  455. package/dist/core/test-utils/assert-valid-sql.d.ts +10 -0
  456. package/dist/core/test-utils/assert-valid-sql.js +19 -0
  457. package/dist/index.d.ts +9 -0
  458. package/dist/index.js +9 -1
  459. package/package.json +59 -22
  460. package/src/cli/app.ts +52 -0
  461. package/src/cli/bin/cli.ts +15 -0
  462. package/src/cli/commands/apply.ts +101 -0
  463. package/src/cli/commands/catalog-export.ts +78 -0
  464. package/src/cli/commands/declarative-apply.diagnostics.test.ts +77 -0
  465. package/src/cli/commands/declarative-apply.ts +380 -0
  466. package/src/cli/commands/declarative-export.ts +322 -0
  467. package/src/cli/commands/plan.ts +210 -0
  468. package/src/cli/commands/sync.ts +178 -0
  469. package/src/cli/exit-code.test.ts +19 -0
  470. package/src/cli/exit-code.ts +7 -0
  471. package/src/cli/formatters/index.ts +5 -0
  472. package/src/cli/formatters/tree/tree-builder.ts +380 -0
  473. package/src/cli/formatters/tree/tree-renderer.ts +372 -0
  474. package/src/cli/formatters/tree/tree.ts +238 -0
  475. package/src/cli/utils/apply-display.test.ts +348 -0
  476. package/src/cli/utils/apply-display.ts +238 -0
  477. package/src/cli/utils/export-display.test.ts +103 -0
  478. package/src/cli/utils/export-display.ts +275 -0
  479. package/src/cli/utils/integrations.test.ts +251 -0
  480. package/src/cli/utils/integrations.ts +170 -0
  481. package/src/cli/utils/resolve-input.test.ts +38 -0
  482. package/src/cli/utils/resolve-input.ts +17 -0
  483. package/src/cli/utils.ts +231 -0
  484. package/src/core/catalog-export/index.ts +20 -0
  485. package/src/core/catalog.diff.ts +252 -0
  486. package/src/core/catalog.model.test.ts +122 -0
  487. package/src/core/catalog.model.ts +510 -0
  488. package/src/core/catalog.snapshot.test.ts +488 -0
  489. package/src/core/catalog.snapshot.ts +289 -0
  490. package/src/core/change-utils.test.ts +61 -0
  491. package/src/core/change-utils.ts +73 -0
  492. package/src/core/change.types.ts +94 -0
  493. package/src/core/connection-url.test.ts +142 -0
  494. package/src/core/connection-url.ts +82 -0
  495. package/src/core/context.ts +26 -0
  496. package/src/core/declarative-apply/discover-sql.test.ts +103 -0
  497. package/src/core/declarative-apply/discover-sql.ts +107 -0
  498. package/src/core/declarative-apply/extract-catalog-providers.ts +220 -0
  499. package/src/core/declarative-apply/index.test.ts +67 -0
  500. package/src/core/declarative-apply/index.ts +205 -0
  501. package/src/core/declarative-apply/round-apply.test.ts +504 -0
  502. package/src/core/declarative-apply/round-apply.ts +562 -0
  503. package/src/core/depend.ts +1895 -0
  504. package/src/core/expand-replace-dependencies.test.ts +555 -0
  505. package/src/core/expand-replace-dependencies.ts +536 -0
  506. package/src/core/export/file-mapper.test.ts +816 -0
  507. package/src/core/export/file-mapper.ts +579 -0
  508. package/src/core/export/grouper.ts +108 -0
  509. package/src/core/export/index.ts +138 -0
  510. package/src/core/export/types.ts +104 -0
  511. package/src/core/fingerprint.ts +204 -0
  512. package/src/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
  513. package/src/core/integrations/filter/dsl.test.ts +450 -0
  514. package/src/core/integrations/filter/dsl.ts +305 -0
  515. package/src/core/integrations/filter/filter.types.ts +3 -0
  516. package/src/core/integrations/filter/flatten.test.ts +282 -0
  517. package/src/core/integrations/filter/flatten.ts +150 -0
  518. package/src/core/integrations/integration-dsl.ts +50 -0
  519. package/src/core/integrations/integration.types.ts +65 -0
  520. package/src/core/integrations/merge.test.ts +128 -0
  521. package/src/core/integrations/merge.ts +72 -0
  522. package/src/core/integrations/serialize/dsl.test.ts +110 -0
  523. package/src/core/integrations/serialize/dsl.ts +71 -0
  524. package/src/core/integrations/serialize/serialize.types.ts +40 -0
  525. package/src/core/integrations/supabase.ts +180 -0
  526. package/src/core/objects/aggregate/aggregate.diff.test.ts +215 -0
  527. package/src/core/objects/aggregate/aggregate.diff.ts +222 -0
  528. package/src/core/objects/aggregate/aggregate.model.ts +317 -0
  529. package/src/core/objects/aggregate/changes/aggregate.alter.test.ts +66 -0
  530. package/src/core/objects/aggregate/changes/aggregate.alter.ts +33 -0
  531. package/src/core/objects/aggregate/changes/aggregate.base.ts +20 -0
  532. package/src/core/objects/aggregate/changes/aggregate.comment.test.ts +89 -0
  533. package/src/core/objects/aggregate/changes/aggregate.comment.ts +63 -0
  534. package/src/core/objects/aggregate/changes/aggregate.create.test.ts +104 -0
  535. package/src/core/objects/aggregate/changes/aggregate.create.ts +330 -0
  536. package/src/core/objects/aggregate/changes/aggregate.drop.test.ts +82 -0
  537. package/src/core/objects/aggregate/changes/aggregate.drop.ts +33 -0
  538. package/src/core/objects/aggregate/changes/aggregate.privilege.test.ts +136 -0
  539. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +147 -0
  540. package/src/core/objects/aggregate/changes/aggregate.types.ts +13 -0
  541. package/src/core/objects/base.change.ts +74 -0
  542. package/src/core/objects/base.default-privileges.ts +204 -0
  543. package/src/core/objects/base.diff.ts +20 -0
  544. package/src/core/objects/base.model.test.ts +43 -0
  545. package/src/core/objects/base.model.ts +85 -0
  546. package/src/core/objects/base.privilege-diff.ts +447 -0
  547. package/src/core/objects/base.privilege.ts +191 -0
  548. package/src/core/objects/collation/changes/collation.alter.test.ts +68 -0
  549. package/src/core/objects/collation/changes/collation.alter.ts +80 -0
  550. package/src/core/objects/collation/changes/collation.base.ts +20 -0
  551. package/src/core/objects/collation/changes/collation.comment.ts +69 -0
  552. package/src/core/objects/collation/changes/collation.create.test.ts +56 -0
  553. package/src/core/objects/collation/changes/collation.create.ts +107 -0
  554. package/src/core/objects/collation/changes/collation.drop.test.ts +31 -0
  555. package/src/core/objects/collation/changes/collation.drop.ts +38 -0
  556. package/src/core/objects/collation/changes/collation.types.ts +11 -0
  557. package/src/core/objects/collation/collation.diff.test.ts +97 -0
  558. package/src/core/objects/collation/collation.diff.ts +127 -0
  559. package/src/core/objects/collation/collation.model.ts +224 -0
  560. package/src/core/objects/diff-context.ts +16 -0
  561. package/src/core/objects/domain/changes/domain.alter.test.ts +335 -0
  562. package/src/core/objects/domain/changes/domain.alter.ts +287 -0
  563. package/src/core/objects/domain/changes/domain.base.ts +20 -0
  564. package/src/core/objects/domain/changes/domain.comment.ts +60 -0
  565. package/src/core/objects/domain/changes/domain.create.test.ts +95 -0
  566. package/src/core/objects/domain/changes/domain.create.ts +141 -0
  567. package/src/core/objects/domain/changes/domain.drop.test.ts +33 -0
  568. package/src/core/objects/domain/changes/domain.drop.ts +35 -0
  569. package/src/core/objects/domain/changes/domain.privilege.ts +172 -0
  570. package/src/core/objects/domain/changes/domain.types.ts +13 -0
  571. package/src/core/objects/domain/domain.diff.test.ts +284 -0
  572. package/src/core/objects/domain/domain.diff.ts +295 -0
  573. package/src/core/objects/domain/domain.model.ts +190 -0
  574. package/src/core/objects/event-trigger/changes/event-trigger.alter.test.ts +57 -0
  575. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +83 -0
  576. package/src/core/objects/event-trigger/changes/event-trigger.base.ts +20 -0
  577. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +67 -0
  578. package/src/core/objects/event-trigger/changes/event-trigger.create.test.ts +27 -0
  579. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +73 -0
  580. package/src/core/objects/event-trigger/changes/event-trigger.drop.test.ts +25 -0
  581. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +35 -0
  582. package/src/core/objects/event-trigger/changes/event-trigger.types.ts +11 -0
  583. package/src/core/objects/event-trigger/event-trigger.diff.test.ts +131 -0
  584. package/src/core/objects/event-trigger/event-trigger.diff.ts +127 -0
  585. package/src/core/objects/event-trigger/event-trigger.model.ts +106 -0
  586. package/src/core/objects/extension/changes/extension.alter.test.ts +63 -0
  587. package/src/core/objects/extension/changes/extension.alter.ts +79 -0
  588. package/src/core/objects/extension/changes/extension.base.ts +20 -0
  589. package/src/core/objects/extension/changes/extension.comment.ts +65 -0
  590. package/src/core/objects/extension/changes/extension.create.test.ts +50 -0
  591. package/src/core/objects/extension/changes/extension.create.ts +66 -0
  592. package/src/core/objects/extension/changes/extension.drop.test.ts +26 -0
  593. package/src/core/objects/extension/changes/extension.drop.ts +35 -0
  594. package/src/core/objects/extension/changes/extension.types.ts +11 -0
  595. package/src/core/objects/extension/extension.diff.test.ts +42 -0
  596. package/src/core/objects/extension/extension.diff.ts +90 -0
  597. package/src/core/objects/extension/extension.model.test.ts +98 -0
  598. package/src/core/objects/extension/extension.model.ts +280 -0
  599. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.test.ts +136 -0
  600. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +102 -0
  601. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.ts +20 -0
  602. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +73 -0
  603. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.test.ts +160 -0
  604. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +96 -0
  605. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.test.ts +26 -0
  606. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +37 -0
  607. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +173 -0
  608. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts +13 -0
  609. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.test.ts +286 -0
  610. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.ts +271 -0
  611. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.ts +149 -0
  612. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts +11 -0
  613. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.test.ts +340 -0
  614. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +342 -0
  615. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.ts +20 -0
  616. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +73 -0
  617. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.test.ts +210 -0
  618. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +82 -0
  619. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.test.ts +46 -0
  620. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +38 -0
  621. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +182 -0
  622. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts +13 -0
  623. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.test.ts +813 -0
  624. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.ts +343 -0
  625. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.ts +242 -0
  626. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.test.ts +183 -0
  627. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +127 -0
  628. package/src/core/objects/foreign-data-wrapper/server/changes/server.base.ts +20 -0
  629. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +61 -0
  630. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.test.ts +144 -0
  631. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +82 -0
  632. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.test.ts +27 -0
  633. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +35 -0
  634. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +165 -0
  635. package/src/core/objects/foreign-data-wrapper/server/changes/server.types.ts +13 -0
  636. package/src/core/objects/foreign-data-wrapper/server/server.diff.test.ts +262 -0
  637. package/src/core/objects/foreign-data-wrapper/server/server.diff.ts +247 -0
  638. package/src/core/objects/foreign-data-wrapper/server/server.model.ts +133 -0
  639. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.test.ts +91 -0
  640. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +70 -0
  641. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.ts +20 -0
  642. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.test.ts +96 -0
  643. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +67 -0
  644. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.test.ts +60 -0
  645. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +41 -0
  646. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts +9 -0
  647. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.test.ts +77 -0
  648. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.ts +107 -0
  649. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.ts +96 -0
  650. package/src/core/objects/index/changes/index.alter.test.ts +209 -0
  651. package/src/core/objects/index/changes/index.alter.ts +145 -0
  652. package/src/core/objects/index/changes/index.base.ts +20 -0
  653. package/src/core/objects/index/changes/index.comment.ts +64 -0
  654. package/src/core/objects/index/changes/index.create.test.ts +69 -0
  655. package/src/core/objects/index/changes/index.create.ts +69 -0
  656. package/src/core/objects/index/changes/index.drop.test.ts +47 -0
  657. package/src/core/objects/index/changes/index.drop.ts +35 -0
  658. package/src/core/objects/index/changes/index.types.ts +7 -0
  659. package/src/core/objects/index/changes/utils.ts +16 -0
  660. package/src/core/objects/index/index.diff.test.ts +153 -0
  661. package/src/core/objects/index/index.diff.ts +243 -0
  662. package/src/core/objects/index/index.model.test.ts +83 -0
  663. package/src/core/objects/index/index.model.ts +379 -0
  664. package/src/core/objects/language/changes/language.alter.test.ts +36 -0
  665. package/src/core/objects/language/changes/language.alter.ts +54 -0
  666. package/src/core/objects/language/changes/language.base.ts +20 -0
  667. package/src/core/objects/language/changes/language.comment.ts +59 -0
  668. package/src/core/objects/language/changes/language.create.test.ts +30 -0
  669. package/src/core/objects/language/changes/language.create.ts +105 -0
  670. package/src/core/objects/language/changes/language.drop.test.ts +28 -0
  671. package/src/core/objects/language/changes/language.drop.ts +40 -0
  672. package/src/core/objects/language/changes/language.privilege.ts +173 -0
  673. package/src/core/objects/language/changes/language.types.ts +13 -0
  674. package/src/core/objects/language/language.diff.test.ts +135 -0
  675. package/src/core/objects/language/language.diff.ts +144 -0
  676. package/src/core/objects/language/language.model.ts +150 -0
  677. package/src/core/objects/materialized-view/changes/materialized-view.alter.test.ts +130 -0
  678. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +114 -0
  679. package/src/core/objects/materialized-view/changes/materialized-view.base.ts +20 -0
  680. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +177 -0
  681. package/src/core/objects/materialized-view/changes/materialized-view.create.test.ts +69 -0
  682. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +94 -0
  683. package/src/core/objects/materialized-view/changes/materialized-view.drop.test.ts +37 -0
  684. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +61 -0
  685. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +213 -0
  686. package/src/core/objects/materialized-view/changes/materialized-view.types.ts +13 -0
  687. package/src/core/objects/materialized-view/materialized-view.diff.test.ts +264 -0
  688. package/src/core/objects/materialized-view/materialized-view.diff.ts +301 -0
  689. package/src/core/objects/materialized-view/materialized-view.model.ts +258 -0
  690. package/src/core/objects/procedure/changes/procedure.alter.test.ts +1077 -0
  691. package/src/core/objects/procedure/changes/procedure.alter.ts +291 -0
  692. package/src/core/objects/procedure/changes/procedure.base.ts +20 -0
  693. package/src/core/objects/procedure/changes/procedure.comment.ts +71 -0
  694. package/src/core/objects/procedure/changes/procedure.create.test.ts +51 -0
  695. package/src/core/objects/procedure/changes/procedure.create.ts +93 -0
  696. package/src/core/objects/procedure/changes/procedure.drop.test.ts +90 -0
  697. package/src/core/objects/procedure/changes/procedure.drop.ts +50 -0
  698. package/src/core/objects/procedure/changes/procedure.privilege.ts +189 -0
  699. package/src/core/objects/procedure/changes/procedure.types.ts +13 -0
  700. package/src/core/objects/procedure/procedure.diff.test.ts +284 -0
  701. package/src/core/objects/procedure/procedure.diff.ts +371 -0
  702. package/src/core/objects/procedure/procedure.model.ts +264 -0
  703. package/src/core/objects/procedure/utils.ts +58 -0
  704. package/src/core/objects/publication/changes/publication.alter.test.ts +221 -0
  705. package/src/core/objects/publication/changes/publication.alter.ts +232 -0
  706. package/src/core/objects/publication/changes/publication.base.ts +20 -0
  707. package/src/core/objects/publication/changes/publication.comment.test.ts +73 -0
  708. package/src/core/objects/publication/changes/publication.comment.ts +65 -0
  709. package/src/core/objects/publication/changes/publication.create.test.ts +90 -0
  710. package/src/core/objects/publication/changes/publication.create.ts +83 -0
  711. package/src/core/objects/publication/changes/publication.drop.test.ts +48 -0
  712. package/src/core/objects/publication/changes/publication.drop.ts +30 -0
  713. package/src/core/objects/publication/changes/publication.types.ts +25 -0
  714. package/src/core/objects/publication/publication.diff.test.ts +297 -0
  715. package/src/core/objects/publication/publication.diff.ts +247 -0
  716. package/src/core/objects/publication/publication.model.ts +206 -0
  717. package/src/core/objects/publication/utils.ts +55 -0
  718. package/src/core/objects/rls-policy/changes/rls-policy.alter.test.ts +283 -0
  719. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +129 -0
  720. package/src/core/objects/rls-policy/changes/rls-policy.base.ts +20 -0
  721. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +70 -0
  722. package/src/core/objects/rls-policy/changes/rls-policy.create.test.ts +209 -0
  723. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +128 -0
  724. package/src/core/objects/rls-policy/changes/rls-policy.drop.test.ts +33 -0
  725. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +40 -0
  726. package/src/core/objects/rls-policy/changes/rls-policy.types.ts +11 -0
  727. package/src/core/objects/rls-policy/rls-policy.diff.test.ts +81 -0
  728. package/src/core/objects/rls-policy/rls-policy.diff.ts +121 -0
  729. package/src/core/objects/rls-policy/rls-policy.model.ts +273 -0
  730. package/src/core/objects/role/changes/role.alter.test.ts +362 -0
  731. package/src/core/objects/role/changes/role.alter.ts +111 -0
  732. package/src/core/objects/role/changes/role.base.ts +24 -0
  733. package/src/core/objects/role/changes/role.comment.ts +56 -0
  734. package/src/core/objects/role/changes/role.create.test.ts +56 -0
  735. package/src/core/objects/role/changes/role.create.ts +103 -0
  736. package/src/core/objects/role/changes/role.drop.test.ts +32 -0
  737. package/src/core/objects/role/changes/role.drop.ts +35 -0
  738. package/src/core/objects/role/changes/role.privilege.ts +377 -0
  739. package/src/core/objects/role/changes/role.types.ts +13 -0
  740. package/src/core/objects/role/role.diff.test.ts +279 -0
  741. package/src/core/objects/role/role.diff.ts +499 -0
  742. package/src/core/objects/role/role.model.ts +452 -0
  743. package/src/core/objects/rule/changes/rule.alter.test.ts +82 -0
  744. package/src/core/objects/rule/changes/rule.alter.ts +73 -0
  745. package/src/core/objects/rule/changes/rule.base.ts +20 -0
  746. package/src/core/objects/rule/changes/rule.comment.test.ts +58 -0
  747. package/src/core/objects/rule/changes/rule.comment.ts +63 -0
  748. package/src/core/objects/rule/changes/rule.create.test.ts +63 -0
  749. package/src/core/objects/rule/changes/rule.create.ts +43 -0
  750. package/src/core/objects/rule/changes/rule.drop.test.ts +40 -0
  751. package/src/core/objects/rule/changes/rule.drop.ts +30 -0
  752. package/src/core/objects/rule/changes/rule.types.ts +13 -0
  753. package/src/core/objects/rule/rule.diff.test.ts +132 -0
  754. package/src/core/objects/rule/rule.diff.ts +79 -0
  755. package/src/core/objects/rule/rule.model.ts +173 -0
  756. package/src/core/objects/schema/changes/schema.alter.test.ts +31 -0
  757. package/src/core/objects/schema/changes/schema.alter.ts +46 -0
  758. package/src/core/objects/schema/changes/schema.base.ts +20 -0
  759. package/src/core/objects/schema/changes/schema.comment.ts +57 -0
  760. package/src/core/objects/schema/changes/schema.create.test.ts +25 -0
  761. package/src/core/objects/schema/changes/schema.create.ts +47 -0
  762. package/src/core/objects/schema/changes/schema.drop.test.ts +23 -0
  763. package/src/core/objects/schema/changes/schema.drop.ts +35 -0
  764. package/src/core/objects/schema/changes/schema.privilege.ts +176 -0
  765. package/src/core/objects/schema/changes/schema.types.ts +13 -0
  766. package/src/core/objects/schema/schema.diff.test.ts +42 -0
  767. package/src/core/objects/schema/schema.diff.ts +146 -0
  768. package/src/core/objects/schema/schema.model.ts +107 -0
  769. package/src/core/objects/sequence/changes/sequence.alter.test.ts +157 -0
  770. package/src/core/objects/sequence/changes/sequence.alter.ts +116 -0
  771. package/src/core/objects/sequence/changes/sequence.base.ts +20 -0
  772. package/src/core/objects/sequence/changes/sequence.comment.ts +61 -0
  773. package/src/core/objects/sequence/changes/sequence.create.test.ts +89 -0
  774. package/src/core/objects/sequence/changes/sequence.create.ts +112 -0
  775. package/src/core/objects/sequence/changes/sequence.drop.test.ts +35 -0
  776. package/src/core/objects/sequence/changes/sequence.drop.ts +50 -0
  777. package/src/core/objects/sequence/changes/sequence.privilege.ts +180 -0
  778. package/src/core/objects/sequence/changes/sequence.types.ts +13 -0
  779. package/src/core/objects/sequence/sequence.diff.test.ts +434 -0
  780. package/src/core/objects/sequence/sequence.diff.ts +334 -0
  781. package/src/core/objects/sequence/sequence.model.ts +185 -0
  782. package/src/core/objects/subscription/changes/subscription.alter.test.ts +134 -0
  783. package/src/core/objects/subscription/changes/subscription.alter.ts +111 -0
  784. package/src/core/objects/subscription/changes/subscription.base.ts +20 -0
  785. package/src/core/objects/subscription/changes/subscription.comment.test.ts +70 -0
  786. package/src/core/objects/subscription/changes/subscription.comment.ts +65 -0
  787. package/src/core/objects/subscription/changes/subscription.create.test.ts +80 -0
  788. package/src/core/objects/subscription/changes/subscription.create.ts +70 -0
  789. package/src/core/objects/subscription/changes/subscription.drop.test.ts +48 -0
  790. package/src/core/objects/subscription/changes/subscription.drop.ts +21 -0
  791. package/src/core/objects/subscription/changes/subscription.types.ts +23 -0
  792. package/src/core/objects/subscription/subscription.diff.test.ts +237 -0
  793. package/src/core/objects/subscription/subscription.diff.ts +242 -0
  794. package/src/core/objects/subscription/subscription.model.ts +190 -0
  795. package/src/core/objects/subscription/utils.ts +156 -0
  796. package/src/core/objects/table/changes/table.alter.test.ts +910 -0
  797. package/src/core/objects/table/changes/table.alter.ts +939 -0
  798. package/src/core/objects/table/changes/table.base.ts +20 -0
  799. package/src/core/objects/table/changes/table.comment.ts +267 -0
  800. package/src/core/objects/table/changes/table.create.test.ts +188 -0
  801. package/src/core/objects/table/changes/table.create.ts +193 -0
  802. package/src/core/objects/table/changes/table.drop.test.ts +36 -0
  803. package/src/core/objects/table/changes/table.drop.ts +87 -0
  804. package/src/core/objects/table/changes/table.privilege.ts +201 -0
  805. package/src/core/objects/table/changes/table.types.ts +13 -0
  806. package/src/core/objects/table/table.diff.test.ts +1189 -0
  807. package/src/core/objects/table/table.diff.ts +913 -0
  808. package/src/core/objects/table/table.model.ts +465 -0
  809. package/src/core/objects/trigger/changes/trigger.alter.test.ts +50 -0
  810. package/src/core/objects/trigger/changes/trigger.alter.ts +77 -0
  811. package/src/core/objects/trigger/changes/trigger.base.ts +20 -0
  812. package/src/core/objects/trigger/changes/trigger.comment.ts +65 -0
  813. package/src/core/objects/trigger/changes/trigger.create.test.ts +47 -0
  814. package/src/core/objects/trigger/changes/trigger.create.ts +89 -0
  815. package/src/core/objects/trigger/changes/trigger.drop.test.ts +47 -0
  816. package/src/core/objects/trigger/changes/trigger.drop.ts +40 -0
  817. package/src/core/objects/trigger/changes/trigger.types.ts +11 -0
  818. package/src/core/objects/trigger/trigger.diff.test.ts +84 -0
  819. package/src/core/objects/trigger/trigger.diff.ts +121 -0
  820. package/src/core/objects/trigger/trigger.model.ts +268 -0
  821. package/src/core/objects/type/composite-type/changes/composite-type.alter.test.ts +208 -0
  822. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +175 -0
  823. package/src/core/objects/type/composite-type/changes/composite-type.base.ts +20 -0
  824. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +146 -0
  825. package/src/core/objects/type/composite-type/changes/composite-type.create.test.ts +106 -0
  826. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +96 -0
  827. package/src/core/objects/type/composite-type/changes/composite-type.drop.test.ts +36 -0
  828. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +38 -0
  829. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +176 -0
  830. package/src/core/objects/type/composite-type/changes/composite-type.types.ts +13 -0
  831. package/src/core/objects/type/composite-type/composite-type.diff.test.ts +269 -0
  832. package/src/core/objects/type/composite-type/composite-type.diff.ts +310 -0
  833. package/src/core/objects/type/composite-type/composite-type.model.ts +253 -0
  834. package/src/core/objects/type/enum/changes/enum.alter.test.ts +113 -0
  835. package/src/core/objects/type/enum/changes/enum.alter.ts +92 -0
  836. package/src/core/objects/type/enum/changes/enum.base.ts +20 -0
  837. package/src/core/objects/type/enum/changes/enum.comment.ts +65 -0
  838. package/src/core/objects/type/enum/changes/enum.create.test.ts +31 -0
  839. package/src/core/objects/type/enum/changes/enum.create.ts +57 -0
  840. package/src/core/objects/type/enum/changes/enum.drop.test.ts +28 -0
  841. package/src/core/objects/type/enum/changes/enum.drop.ts +35 -0
  842. package/src/core/objects/type/enum/changes/enum.privilege.ts +176 -0
  843. package/src/core/objects/type/enum/changes/enum.types.ts +13 -0
  844. package/src/core/objects/type/enum/enum.diff.test.ts +372 -0
  845. package/src/core/objects/type/enum/enum.diff.ts +308 -0
  846. package/src/core/objects/type/enum/enum.model.ts +194 -0
  847. package/src/core/objects/type/range/changes/range.alter.test.ts +29 -0
  848. package/src/core/objects/type/range/changes/range.alter.ts +52 -0
  849. package/src/core/objects/type/range/changes/range.base.ts +20 -0
  850. package/src/core/objects/type/range/changes/range.comment.ts +65 -0
  851. package/src/core/objects/type/range/changes/range.create.test.ts +54 -0
  852. package/src/core/objects/type/range/changes/range.create.ts +156 -0
  853. package/src/core/objects/type/range/changes/range.drop.test.ts +28 -0
  854. package/src/core/objects/type/range/changes/range.drop.ts +35 -0
  855. package/src/core/objects/type/range/changes/range.privilege.ts +176 -0
  856. package/src/core/objects/type/range/changes/range.types.ts +13 -0
  857. package/src/core/objects/type/range/range.diff.test.ts +147 -0
  858. package/src/core/objects/type/range/range.diff.ts +197 -0
  859. package/src/core/objects/type/range/range.model.ts +187 -0
  860. package/src/core/objects/type/type.types.ts +6 -0
  861. package/src/core/objects/utils.ts +171 -0
  862. package/src/core/objects/view/changes/view.alter.test.ts +115 -0
  863. package/src/core/objects/view/changes/view.alter.ts +113 -0
  864. package/src/core/objects/view/changes/view.base.ts +20 -0
  865. package/src/core/objects/view/changes/view.comment.ts +60 -0
  866. package/src/core/objects/view/changes/view.create.test.ts +70 -0
  867. package/src/core/objects/view/changes/view.create.ts +74 -0
  868. package/src/core/objects/view/changes/view.drop.test.ts +37 -0
  869. package/src/core/objects/view/changes/view.drop.ts +41 -0
  870. package/src/core/objects/view/changes/view.privilege.ts +201 -0
  871. package/src/core/objects/view/changes/view.types.ts +13 -0
  872. package/src/core/objects/view/view.diff.test.ts +269 -0
  873. package/src/core/objects/view/view.diff.ts +230 -0
  874. package/src/core/objects/view/view.model.ts +262 -0
  875. package/src/core/plan/apply.ts +172 -0
  876. package/src/core/plan/create.ts +368 -0
  877. package/src/core/plan/hierarchy.ts +574 -0
  878. package/src/core/plan/index.ts +29 -0
  879. package/src/core/plan/io.ts +20 -0
  880. package/src/core/plan/risk.ts +48 -0
  881. package/src/core/plan/serialize.test.ts +317 -0
  882. package/src/core/plan/serialize.ts +209 -0
  883. package/src/core/plan/sql-format/constants.ts +13 -0
  884. package/src/core/plan/sql-format/fixtures.ts +2811 -0
  885. package/src/core/plan/sql-format/format-comment-literals.test.ts +96 -0
  886. package/src/core/plan/sql-format/format-functions.test.ts +127 -0
  887. package/src/core/plan/sql-format/format-lowercase-coverage.test.ts +119 -0
  888. package/src/core/plan/sql-format/format-off.test.ts +806 -0
  889. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1061 -0
  890. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1279 -0
  891. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1057 -0
  892. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1048 -0
  893. package/src/core/plan/sql-format/format-stress.test.ts +616 -0
  894. package/src/core/plan/sql-format/format-utils.test.ts +91 -0
  895. package/src/core/plan/sql-format/format-utils.ts +391 -0
  896. package/src/core/plan/sql-format/formatters.ts +921 -0
  897. package/src/core/plan/sql-format/index.ts +149 -0
  898. package/src/core/plan/sql-format/keyword-case.test.ts +118 -0
  899. package/src/core/plan/sql-format/keyword-case.ts +1120 -0
  900. package/src/core/plan/sql-format/protect.test.ts +127 -0
  901. package/src/core/plan/sql-format/protect.ts +337 -0
  902. package/src/core/plan/sql-format/sql-scanner.test.ts +240 -0
  903. package/src/core/plan/sql-format/sql-scanner.ts +252 -0
  904. package/src/core/plan/sql-format/tokenizer.test.ts +68 -0
  905. package/src/core/plan/sql-format/tokenizer.ts +152 -0
  906. package/src/core/plan/sql-format/types.ts +31 -0
  907. package/src/core/plan/sql-format/wrap.test.ts +119 -0
  908. package/src/core/plan/sql-format/wrap.ts +196 -0
  909. package/src/core/plan/sql-format.ts +2 -0
  910. package/src/core/plan/ssl-config.ts +172 -0
  911. package/src/core/plan/statements.ts +22 -0
  912. package/src/core/plan/types.ts +168 -0
  913. package/src/core/post-diff-cycle-breaking.test.ts +303 -0
  914. package/src/core/post-diff-cycle-breaking.ts +138 -0
  915. package/src/core/postgres-config.test.ts +336 -0
  916. package/src/core/postgres-config.ts +458 -0
  917. package/src/core/sort/custom-constraints.ts +235 -0
  918. package/src/core/sort/cycle-breakers.test.ts +476 -0
  919. package/src/core/sort/cycle-breakers.ts +311 -0
  920. package/src/core/sort/debug-visualization.ts +239 -0
  921. package/src/core/sort/dependency-filter.ts +224 -0
  922. package/src/core/sort/graph-builder.ts +235 -0
  923. package/src/core/sort/graph-utils.ts +51 -0
  924. package/src/core/sort/logical-sort.test.ts +371 -0
  925. package/src/core/sort/logical-sort.ts +573 -0
  926. package/src/core/sort/sort-changes.ts +319 -0
  927. package/src/core/sort/topological-sort.test.ts +275 -0
  928. package/src/core/sort/topological-sort.ts +184 -0
  929. package/src/core/sort/types.ts +112 -0
  930. package/src/core/sort/utils.ts +69 -0
  931. package/src/core/test-utils/assert-valid-sql.ts +20 -0
  932. package/src/index.ts +41 -0
  933. package/src/typedoc.ts +253 -0
  934. package/dist/core/integrations/filter/extractors.d.ts +0 -12
  935. package/dist/core/integrations/filter/extractors.js +0 -136
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Trigger } from "../trigger.model.ts";
2
3
  import { CreateTriggerChange, DropTriggerChange } from "./trigger.base.ts";
3
4
  export type CommentTrigger = CreateCommentOnTrigger | DropCommentOnTrigger;
@@ -9,7 +10,7 @@ export declare class CreateCommentOnTrigger extends CreateTriggerChange {
9
10
  });
10
11
  get creates(): `comment:${string}`[];
11
12
  get requires(): `trigger:${string}`[];
12
- serialize(): string;
13
+ serialize(_options?: SerializeOptions): string;
13
14
  }
14
15
  export declare class DropCommentOnTrigger extends DropTriggerChange {
15
16
  readonly trigger: Trigger;
@@ -19,5 +20,5 @@ export declare class DropCommentOnTrigger extends DropTriggerChange {
19
20
  });
20
21
  get drops(): `comment:${string}`[];
21
22
  get requires(): (`comment:${string}` | `trigger:${string}`)[];
22
- serialize(): string;
23
+ serialize(_options?: SerializeOptions): string;
23
24
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnTrigger extends CreateTriggerChange {
14
14
  get requires() {
15
15
  return [this.trigger.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON TRIGGER",
20
20
  this.trigger.name,
@@ -39,7 +39,7 @@ export class DropCommentOnTrigger extends DropTriggerChange {
39
39
  get requires() {
40
40
  return [stableId.comment(this.trigger.stableId), this.trigger.stableId];
41
41
  }
42
- serialize() {
42
+ serialize(_options) {
43
43
  return [
44
44
  "COMMENT ON TRIGGER",
45
45
  this.trigger.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { TableLikeObject } from "../../base.model.ts";
2
3
  import type { Trigger } from "../trigger.model.ts";
3
4
  import { CreateTriggerChange } from "./trigger.base.ts";
@@ -37,5 +38,5 @@ export declare class CreateTrigger extends CreateTriggerChange {
37
38
  });
38
39
  get creates(): `trigger:${string}`[];
39
40
  get requires(): string[];
40
- serialize(): string;
41
+ serialize(_options?: SerializeOptions): string;
41
42
  }
@@ -45,17 +45,16 @@ export class CreateTrigger extends CreateTriggerChange {
45
45
  // Table dependency
46
46
  dependencies.add(stableId.table(this.trigger.schema, this.trigger.table_name));
47
47
  // Function dependency
48
- // Note: We can't build the exact procedure stableId without argument types.
49
- // The trigger definition contains the full function call, but parsing it would be complex.
50
- // For now, we rely on pg_depend extraction for procedure dependencies.
51
- // If needed, we could parse the trigger definition to extract the full function signature.
48
+ // Trigger functions always have signature () RETURNS trigger, so no arguments.
49
+ dependencies.add(stableId.procedure(this.trigger.function_schema, this.trigger.function_name));
52
50
  // Owner dependency
53
51
  dependencies.add(stableId.role(this.trigger.owner));
54
52
  return Array.from(dependencies);
55
53
  }
56
- serialize() {
54
+ serialize(_options) {
57
55
  let definition = this.trigger.definition.trim();
58
- definition = definition.replace(/^CREATE\s+(?:OR\s+REPLACE\s+)?/i, `CREATE ${this.orReplace ? "OR REPLACE " : ""}`);
56
+ const isConstraintTrigger = this.trigger.isConstraintTrigger;
57
+ definition = definition.replace(/^CREATE\s+(?:OR\s+REPLACE\s+)?/i, `CREATE ${this.orReplace && !isConstraintTrigger ? "OR REPLACE " : ""}`);
59
58
  return definition;
60
59
  }
61
60
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Trigger } from "../trigger.model.ts";
2
3
  import { DropTriggerChange } from "./trigger.base.ts";
3
4
  /**
@@ -18,5 +19,5 @@ export declare class DropTrigger extends DropTriggerChange {
18
19
  });
19
20
  get drops(): `trigger:${string}`[];
20
21
  get requires(): `trigger:${string}`[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -22,7 +22,7 @@ export class DropTrigger extends DropTriggerChange {
22
22
  get requires() {
23
23
  return [this.trigger.stableId];
24
24
  }
25
- serialize() {
25
+ serialize(_options) {
26
26
  return [
27
27
  "DROP TRIGGER",
28
28
  this.trigger.name,
@@ -2,4 +2,5 @@ import type { AlterTrigger } from "./trigger.alter.ts";
2
2
  import type { CommentTrigger } from "./trigger.comment.ts";
3
3
  import type { CreateTrigger } from "./trigger.create.ts";
4
4
  import type { DropTrigger } from "./trigger.drop.ts";
5
+ /** Union of all trigger-related change variants (`objectType: "trigger"`). @category Change Types */
5
6
  export type TriggerChange = AlterTrigger | CommentTrigger | CreateTrigger | DropTrigger;
@@ -44,6 +44,11 @@ export function diffTriggers(main, branch, branchIndexableObjects) {
44
44
  if (mainTrigger.is_partition_clone || branchTrigger.is_partition_clone) {
45
45
  continue;
46
46
  }
47
+ // Note: column_numbers is excluded because it contains pg_trigger.tgattr
48
+ // attnums that differ between databases when physical column layouts
49
+ // diverge but logical (named) columns match. The definition field
50
+ // (pg_get_triggerdef) already captures the UPDATE OF column list by name,
51
+ // so we compare by definition instead.
47
52
  const NON_ALTERABLE_FIELDS = [
48
53
  "function_schema",
49
54
  "function_name",
@@ -53,14 +58,14 @@ export function diffTriggers(main, branch, branchIndexableObjects) {
53
58
  "deferrable",
54
59
  "initially_deferred",
55
60
  "argument_count",
56
- "column_numbers",
57
61
  "arguments",
58
62
  "when_condition",
59
63
  "old_table",
60
64
  "new_table",
61
65
  "owner",
66
+ "definition", // Compare by definition instead of column_numbers (tgattr)
62
67
  ];
63
- const shouldReplace = hasNonAlterableChanges(mainTrigger, branchTrigger, NON_ALTERABLE_FIELDS, { column_numbers: deepEqual, arguments: deepEqual });
68
+ const shouldReplace = hasNonAlterableChanges(mainTrigger, branchTrigger, NON_ALTERABLE_FIELDS, { arguments: deepEqual });
64
69
  if (shouldReplace) {
65
70
  const tableStableId = stableId.table(branchTrigger.schema, branchTrigger.table_name);
66
71
  changes.push(new ReplaceTrigger({
@@ -5,6 +5,13 @@ declare const triggerPropsSchema: z.ZodObject<{
5
5
  schema: z.ZodString;
6
6
  name: z.ZodString;
7
7
  table_name: z.ZodString;
8
+ table_relkind: z.ZodEnum<{
9
+ r: "r";
10
+ v: "v";
11
+ m: "m";
12
+ p: "p";
13
+ f: "f";
14
+ }>;
8
15
  function_schema: z.ZodString;
9
16
  function_name: z.ZodString;
10
17
  trigger_type: z.ZodNumber;
@@ -37,6 +44,7 @@ export declare class Trigger extends BasePgModel {
37
44
  readonly schema: TriggerProps["schema"];
38
45
  readonly name: TriggerProps["name"];
39
46
  readonly table_name: TriggerProps["table_name"];
47
+ readonly table_relkind: TriggerProps["table_relkind"];
40
48
  readonly function_schema: TriggerProps["function_schema"];
41
49
  readonly function_name: TriggerProps["function_name"];
42
50
  readonly trigger_type: TriggerProps["trigger_type"];
@@ -59,6 +67,7 @@ export declare class Trigger extends BasePgModel {
59
67
  readonly definition: TriggerProps["definition"];
60
68
  readonly comment: TriggerProps["comment"];
61
69
  constructor(props: TriggerProps);
70
+ get isConstraintTrigger(): boolean;
62
71
  get stableId(): `trigger:${string}`;
63
72
  get identityFields(): {
64
73
  schema: string;
@@ -74,7 +83,6 @@ export declare class Trigger extends BasePgModel {
74
83
  deferrable: boolean;
75
84
  initially_deferred: boolean;
76
85
  argument_count: number;
77
- column_numbers: number[] | null;
78
86
  arguments: string[];
79
87
  when_condition: string | null;
80
88
  old_table: string | null;
@@ -85,6 +93,7 @@ export declare class Trigger extends BasePgModel {
85
93
  parent_table_name: string | null;
86
94
  is_on_partitioned_table: boolean;
87
95
  owner: string;
96
+ definition: string;
88
97
  comment: string | null;
89
98
  };
90
99
  }
@@ -7,10 +7,18 @@ const TriggerEnabledSchema = z.enum([
7
7
  "R", // REPLICA - trigger fires only in "replica" mode
8
8
  "A", // ALWAYS - trigger fires regardless of replication mode
9
9
  ]);
10
+ const TriggerTableRelkindSchema = z.enum([
11
+ "r", // ordinary table
12
+ "p", // partitioned table
13
+ "f", // foreign table
14
+ "v", // view
15
+ "m", // materialized view
16
+ ]);
10
17
  const triggerPropsSchema = z.object({
11
18
  schema: z.string(),
12
19
  name: z.string(),
13
20
  table_name: z.string(),
21
+ table_relkind: TriggerTableRelkindSchema,
14
22
  function_schema: z.string(),
15
23
  function_name: z.string(),
16
24
  trigger_type: z.number(),
@@ -37,6 +45,7 @@ export class Trigger extends BasePgModel {
37
45
  schema;
38
46
  name;
39
47
  table_name;
48
+ table_relkind;
40
49
  function_schema;
41
50
  function_name;
42
51
  trigger_type;
@@ -64,6 +73,7 @@ export class Trigger extends BasePgModel {
64
73
  this.schema = props.schema;
65
74
  this.name = props.name;
66
75
  this.table_name = props.table_name;
76
+ this.table_relkind = props.table_relkind;
67
77
  // Data fields
68
78
  this.function_schema = props.function_schema;
69
79
  this.function_name = props.function_name;
@@ -87,6 +97,9 @@ export class Trigger extends BasePgModel {
87
97
  this.definition = props.definition;
88
98
  this.comment = props.comment;
89
99
  }
100
+ get isConstraintTrigger() {
101
+ return /^CREATE\s+CONSTRAINT\s+TRIGGER/i.test(this.definition.trim());
102
+ }
90
103
  get stableId() {
91
104
  return `trigger:${this.schema}.${this.table_name}.${this.name}`;
92
105
  }
@@ -107,7 +120,10 @@ export class Trigger extends BasePgModel {
107
120
  deferrable: this.deferrable,
108
121
  initially_deferred: this.initially_deferred,
109
122
  argument_count: this.argument_count,
110
- column_numbers: this.column_numbers,
123
+ // column_numbers excluded: contains pg_trigger.tgattr attnums that differ
124
+ // between databases when physical column layouts diverge but logical
125
+ // (named) columns match. The definition field (pg_get_triggerdef) captures
126
+ // the UPDATE OF column list by name, so we compare by definition instead.
111
127
  arguments: this.arguments,
112
128
  when_condition: this.when_condition,
113
129
  old_table: this.old_table,
@@ -118,6 +134,7 @@ export class Trigger extends BasePgModel {
118
134
  parent_table_name: this.parent_table_name,
119
135
  is_on_partitioned_table: this.is_on_partitioned_table,
120
136
  owner: this.owner,
137
+ definition: this.definition,
121
138
  comment: this.comment,
122
139
  };
123
140
  }
@@ -147,6 +164,7 @@ export async function extractTriggers(pool) {
147
164
  tc.relnamespace::regnamespace::text as schema,
148
165
  quote_ident(t.tgname) as name,
149
166
  quote_ident(tc.relname) as table_name,
167
+ tc.relkind as table_relkind,
150
168
 
151
169
  fc.pronamespace::regnamespace::text as function_schema,
152
170
  quote_ident(fc.proname) as function_name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { AlterCompositeTypeChange } from "./composite-type.base.ts";
3
4
  /**
@@ -29,7 +30,7 @@ export declare class AlterCompositeTypeChangeOwner extends AlterCompositeTypeCha
29
30
  owner: string;
30
31
  });
31
32
  get requires(): `type:${string}`[];
32
- serialize(): string;
33
+ serialize(_options?: SerializeOptions): string;
33
34
  }
34
35
  /**
35
36
  * ALTER TYPE ... ADD ATTRIBUTE ...
@@ -44,7 +45,7 @@ export declare class AlterCompositeTypeAddAttribute extends AlterCompositeTypeCh
44
45
  });
45
46
  get creates(): string[];
46
47
  get requires(): `type:${string}`[];
47
- serialize(): string;
48
+ serialize(_options?: SerializeOptions): string;
48
49
  }
49
50
  /**
50
51
  * ALTER TYPE ... DROP ATTRIBUTE ...
@@ -58,7 +59,7 @@ export declare class AlterCompositeTypeDropAttribute extends AlterCompositeTypeC
58
59
  attribute: CompositeType["columns"][number];
59
60
  });
60
61
  get requires(): string[];
61
- serialize(): string;
62
+ serialize(_options?: SerializeOptions): string;
62
63
  }
63
64
  /**
64
65
  * ALTER TYPE ... ALTER ATTRIBUTE ... TYPE ... [ COLLATE ... ]
@@ -72,7 +73,7 @@ export declare class AlterCompositeTypeAlterAttributeType extends AlterComposite
72
73
  attribute: CompositeType["columns"][number];
73
74
  });
74
75
  get requires(): string[];
75
- serialize(): string;
76
+ serialize(_options?: SerializeOptions): string;
76
77
  }
77
78
  /**
78
79
  * Replace a composite type by dropping and recreating it.
@@ -14,7 +14,7 @@ export class AlterCompositeTypeChangeOwner extends AlterCompositeTypeChange {
14
14
  get requires() {
15
15
  return [this.compositeType.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "ALTER TYPE",
20
20
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -41,7 +41,7 @@ export class AlterCompositeTypeAddAttribute extends AlterCompositeTypeChange {
41
41
  get requires() {
42
42
  return [this.compositeType.stableId];
43
43
  }
44
- serialize() {
44
+ serialize(_options) {
45
45
  const parts = [
46
46
  "ALTER TYPE",
47
47
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -73,7 +73,7 @@ export class AlterCompositeTypeDropAttribute extends AlterCompositeTypeChange {
73
73
  this.compositeType.stableId,
74
74
  ];
75
75
  }
76
- serialize() {
76
+ serialize(_options) {
77
77
  return [
78
78
  "ALTER TYPE",
79
79
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -100,7 +100,7 @@ export class AlterCompositeTypeAlterAttributeType extends AlterCompositeTypeChan
100
100
  this.compositeType.stableId,
101
101
  ];
102
102
  }
103
- serialize() {
103
+ serialize(_options) {
104
104
  const parts = [
105
105
  "ALTER TYPE",
106
106
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { ColumnProps } from "../../../base.model.ts";
2
3
  import type { CompositeType } from "../composite-type.model.ts";
3
4
  import { CreateCompositeTypeChange, DropCompositeTypeChange } from "./composite-type.base.ts";
@@ -15,7 +16,7 @@ export declare class CreateCommentOnCompositeType extends CreateCompositeTypeCha
15
16
  });
16
17
  get creates(): `comment:${string}`[];
17
18
  get requires(): `type:${string}`[];
18
- serialize(): string;
19
+ serialize(_options?: SerializeOptions): string;
19
20
  }
20
21
  export declare class DropCommentOnCompositeType extends DropCompositeTypeChange {
21
22
  readonly compositeType: CompositeType;
@@ -25,7 +26,7 @@ export declare class DropCommentOnCompositeType extends DropCompositeTypeChange
25
26
  });
26
27
  get drops(): `comment:${string}`[];
27
28
  get requires(): (`comment:${string}` | `type:${string}`)[];
28
- serialize(): string;
29
+ serialize(_options?: SerializeOptions): string;
29
30
  }
30
31
  export declare class CreateCommentOnCompositeTypeAttribute extends CreateCompositeTypeChange {
31
32
  readonly compositeType: CompositeType;
@@ -37,7 +38,7 @@ export declare class CreateCommentOnCompositeTypeAttribute extends CreateComposi
37
38
  });
38
39
  get creates(): `comment:${string}`[];
39
40
  get requires(): string[];
40
- serialize(): string;
41
+ serialize(_options?: SerializeOptions): string;
41
42
  }
42
43
  export declare class DropCommentOnCompositeTypeAttribute extends DropCompositeTypeChange {
43
44
  readonly compositeType: CompositeType;
@@ -49,5 +50,5 @@ export declare class DropCommentOnCompositeTypeAttribute extends DropCompositeTy
49
50
  });
50
51
  get drops(): `comment:${string}`[];
51
52
  get requires(): string[];
52
- serialize(): string;
53
+ serialize(_options?: SerializeOptions): string;
53
54
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnCompositeType extends CreateCompositeTypeChange {
14
14
  get requires() {
15
15
  return [this.compositeType.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON TYPE",
20
20
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -40,7 +40,7 @@ export class DropCommentOnCompositeType extends DropCompositeTypeChange {
40
40
  this.compositeType.stableId,
41
41
  ];
42
42
  }
43
- serialize() {
43
+ serialize(_options) {
44
44
  return [
45
45
  "COMMENT ON TYPE",
46
46
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -67,7 +67,7 @@ export class CreateCommentOnCompositeTypeAttribute extends CreateCompositeTypeCh
67
67
  this.compositeType.stableId,
68
68
  ];
69
69
  }
70
- serialize() {
70
+ serialize(_options) {
71
71
  return [
72
72
  "COMMENT ON COLUMN",
73
73
  `${this.compositeType.schema}.${this.compositeType.name}.${this.attribute.name}`,
@@ -98,7 +98,7 @@ export class DropCommentOnCompositeTypeAttribute extends DropCompositeTypeChange
98
98
  this.compositeType.stableId,
99
99
  ];
100
100
  }
101
- serialize() {
101
+ serialize(_options) {
102
102
  return [
103
103
  "COMMENT ON COLUMN",
104
104
  `${this.compositeType.schema}.${this.compositeType.name}.${this.attribute.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { CreateCompositeTypeChange } from "./composite-type.base.ts";
3
4
  /**
@@ -19,5 +20,5 @@ export declare class CreateCompositeType extends CreateCompositeTypeChange {
19
20
  });
20
21
  get creates(): `type:${string}`[];
21
22
  get requires(): string[];
22
- serialize(): string;
23
+ serialize(_options?: SerializeOptions): string;
23
24
  }
@@ -48,7 +48,7 @@ export class CreateCompositeType extends CreateCompositeTypeChange {
48
48
  }
49
49
  return Array.from(dependencies);
50
50
  }
51
- serialize() {
51
+ serialize(_options) {
52
52
  const parts = ["CREATE TYPE"];
53
53
  // Add schema and name
54
54
  parts.push(`${this.compositeType.schema}.${this.compositeType.name}`);
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { DropCompositeTypeChange } from "./composite-type.base.ts";
3
4
  /**
@@ -18,5 +19,5 @@ export declare class DropCompositeType extends DropCompositeTypeChange {
18
19
  });
19
20
  get drops(): `type:${string}`[];
20
21
  get requires(): `type:${string}`[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -22,7 +22,7 @@ export class DropCompositeType extends DropCompositeTypeChange {
22
22
  get requires() {
23
23
  return [this.compositeType.stableId];
24
24
  }
25
- serialize() {
25
+ serialize(_options) {
26
26
  return [
27
27
  "DROP TYPE",
28
28
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { AlterCompositeTypeChange } from "./composite-type.base.ts";
3
4
  export type CompositeTypePrivilege = GrantCompositeTypePrivileges | RevokeCompositeTypePrivileges | RevokeGrantOptionCompositeTypePrivileges;
@@ -34,7 +35,7 @@ export declare class GrantCompositeTypePrivileges extends AlterCompositeTypeChan
34
35
  });
35
36
  get creates(): `acl:${string}::grantee:${string}`[];
36
37
  get requires(): (`role:${string}` | `type:${string}`)[];
37
- serialize(): string;
38
+ serialize(_options?: SerializeOptions): string;
38
39
  }
39
40
  /**
40
41
  * Revoke privileges on a composite type.
@@ -71,7 +72,7 @@ export declare class RevokeCompositeTypePrivileges extends AlterCompositeTypeCha
71
72
  });
72
73
  get drops(): `acl:${string}::grantee:${string}`[];
73
74
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
74
- serialize(): string;
75
+ serialize(_options?: SerializeOptions): string;
75
76
  }
76
77
  /**
77
78
  * Revoke grant option for privileges on a composite type.
@@ -93,5 +94,5 @@ export declare class RevokeGrantOptionCompositeTypePrivileges extends AlterCompo
93
94
  version?: number;
94
95
  });
95
96
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
96
- serialize(): string;
97
+ serialize(_options?: SerializeOptions): string;
97
98
  }
@@ -33,7 +33,7 @@ export class GrantCompositeTypePrivileges extends AlterCompositeTypeChange {
33
33
  get requires() {
34
34
  return [this.compositeType.stableId, stableId.role(this.grantee)];
35
35
  }
36
- serialize() {
36
+ serialize(_options) {
37
37
  const hasGrantable = this.privileges.some((p) => p.grantable);
38
38
  const hasBase = this.privileges.some((p) => !p.grantable);
39
39
  if (hasGrantable && hasBase) {
@@ -87,7 +87,7 @@ export class RevokeCompositeTypePrivileges extends AlterCompositeTypeChange {
87
87
  stableId.role(this.grantee),
88
88
  ];
89
89
  }
90
- serialize() {
90
+ serialize(_options) {
91
91
  const kindPrefix = getObjectKindPrefix("TYPE");
92
92
  const list = this.privileges.map((p) => p.privilege);
93
93
  const privSql = formatObjectPrivilegeList("TYPE", list, this.version);
@@ -122,7 +122,7 @@ export class RevokeGrantOptionCompositeTypePrivileges extends AlterCompositeType
122
122
  stableId.role(this.grantee),
123
123
  ];
124
124
  }
125
- serialize() {
125
+ serialize(_options) {
126
126
  const kindPrefix = getObjectKindPrefix("TYPE");
127
127
  const privSql = formatObjectPrivilegeList("TYPE", this.privilegeNames, this.version);
128
128
  const typeName = `${this.compositeType.schema}.${this.compositeType.name}`;
@@ -3,4 +3,5 @@ import type { CommentCompositeType } from "./composite-type.comment.ts";
3
3
  import type { CreateCompositeType } from "./composite-type.create.ts";
4
4
  import type { DropCompositeType } from "./composite-type.drop.ts";
5
5
  import type { CompositeTypePrivilege } from "./composite-type.privilege.ts";
6
+ /** Union of all composite-type-related change variants (`objectType: "composite_type"`). @category Change Types */
6
7
  export type CompositeTypeChange = AlterCompositeType | CommentCompositeType | CreateCompositeType | DropCompositeType | CompositeTypePrivilege;
@@ -1,5 +1,4 @@
1
- import type { DefaultPrivilegeState } from "../../base.default-privileges.ts";
2
- import type { Role } from "../../role/role.model.ts";
1
+ import type { ObjectDiffContext } from "../../diff-context.ts";
3
2
  import type { CompositeTypeChange } from "./changes/composite-type.types.ts";
4
3
  import type { CompositeType } from "./composite-type.model.ts";
5
4
  /**
@@ -10,9 +9,4 @@ import type { CompositeType } from "./composite-type.model.ts";
10
9
  * @param branch - The composite types in the branch catalog.
11
10
  * @returns A list of changes to apply to main to make it match branch.
12
11
  */
13
- export declare function diffCompositeTypes(ctx: {
14
- version: number;
15
- currentUser: string;
16
- defaultPrivilegeState: DefaultPrivilegeState;
17
- mainRoles: Record<string, Role>;
18
- }, main: Record<string, CompositeType>, branch: Record<string, CompositeType>): CompositeTypeChange[];
12
+ export declare function diffCompositeTypes(ctx: Pick<ObjectDiffContext, "version" | "currentUser" | "defaultPrivilegeState">, main: Record<string, CompositeType>, branch: Record<string, CompositeType>): CompositeTypeChange[];
@@ -1,5 +1,5 @@
1
1
  import { diffObjects } from "../../base.diff.js";
2
- import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../../base.privilege-diff.js";
2
+ import { diffPrivileges, emitObjectPrivilegeChanges, filterPublicBuiltInDefaults, } from "../../base.privilege-diff.js";
3
3
  import { deepEqual, hasNonAlterableChanges } from "../../utils.js";
4
4
  import { AlterCompositeTypeAddAttribute, AlterCompositeTypeAlterAttributeType, AlterCompositeTypeChangeOwner, AlterCompositeTypeDropAttribute, } from "./changes/composite-type.alter.js";
5
5
  import { CreateCommentOnCompositeType, CreateCommentOnCompositeTypeAttribute, DropCommentOnCompositeType, DropCommentOnCompositeTypeAttribute, } from "./changes/composite-type.comment.js";
@@ -47,50 +47,21 @@ export function diffCompositeTypes(ctx, main, branch) {
47
47
  // We compare default privileges against desired privileges to generate REVOKE/GRANT statements
48
48
  // needed to reach the final desired state.
49
49
  const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "composite_type", ct.schema ?? "");
50
+ const creatorFilteredDefaults = ct.owner !== ctx.currentUser
51
+ ? effectiveDefaults.filter((p) => p.grantee !== ctx.currentUser)
52
+ : effectiveDefaults;
50
53
  // Filter out PUBLIC's built-in default USAGE privilege (PostgreSQL grants it automatically)
51
54
  // Reference: https://www.postgresql.org/docs/17/ddl-priv.html Table 5.2
52
55
  // This prevents generating unnecessary "GRANT USAGE TO PUBLIC" statements
53
56
  const desiredPrivileges = filterPublicBuiltInDefaults("composite_type", ct.privileges);
54
57
  // Filter out owner privileges - owner always has ALL privileges implicitly
55
58
  // and shouldn't be compared. Use the composite type owner as the reference.
56
- const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, ct.owner);
57
- // Generate grant changes
58
- for (const [grantee, result] of privilegeResults) {
59
- if (result.grants.length > 0) {
60
- const grantGroups = groupPrivilegesByGrantable(result.grants);
61
- for (const [grantable, list] of grantGroups) {
62
- void grantable;
63
- changes.push(new GrantCompositeTypePrivileges({
64
- compositeType: ct,
65
- grantee,
66
- privileges: list,
67
- version: ctx.version,
68
- }));
69
- }
70
- }
71
- // Generate revoke changes
72
- if (result.revokes.length > 0) {
73
- const revokeGroups = groupPrivilegesByGrantable(result.revokes);
74
- for (const [grantable, list] of revokeGroups) {
75
- void grantable;
76
- changes.push(new RevokeCompositeTypePrivileges({
77
- compositeType: ct,
78
- grantee,
79
- privileges: list,
80
- version: ctx.version,
81
- }));
82
- }
83
- }
84
- // Generate revoke grant option changes
85
- if (result.revokeGrantOption.length > 0) {
86
- changes.push(new RevokeGrantOptionCompositeTypePrivileges({
87
- compositeType: ct,
88
- grantee,
89
- privilegeNames: result.revokeGrantOption,
90
- version: ctx.version,
91
- }));
92
- }
93
- }
59
+ const privilegeResults = diffPrivileges(filterPublicBuiltInDefaults("composite_type", creatorFilteredDefaults), desiredPrivileges, ct.owner);
60
+ changes.push(...emitObjectPrivilegeChanges(privilegeResults, ct, ct, "compositeType", {
61
+ Grant: GrantCompositeTypePrivileges,
62
+ Revoke: RevokeCompositeTypePrivileges,
63
+ RevokeGrantOption: RevokeGrantOptionCompositeTypePrivileges,
64
+ }, ctx.version));
94
65
  }
95
66
  for (const compositeTypeId of dropped) {
96
67
  changes.push(new DropCompositeType({ compositeType: main[compositeTypeId] }));
@@ -203,44 +174,12 @@ export function diffCompositeTypes(ctx, main, branch) {
203
174
  const branchPrivilegesFiltered = filterPublicBuiltInDefaults("composite_type", branchCompositeType.privileges);
204
175
  // Filter out owner privileges - owner always has ALL privileges implicitly
205
176
  // and shouldn't be compared. Use branch owner as the reference.
206
- const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchCompositeType.owner, ctx.mainRoles);
207
- for (const [grantee, result] of privilegeResults) {
208
- // Generate grant changes
209
- if (result.grants.length > 0) {
210
- const grantGroups = groupPrivilegesByGrantable(result.grants);
211
- for (const [grantable, list] of grantGroups) {
212
- void grantable;
213
- changes.push(new GrantCompositeTypePrivileges({
214
- compositeType: branchCompositeType,
215
- grantee,
216
- privileges: list,
217
- version: ctx.version,
218
- }));
219
- }
220
- }
221
- // Generate revoke changes
222
- if (result.revokes.length > 0) {
223
- const revokeGroups = groupPrivilegesByGrantable(result.revokes);
224
- for (const [grantable, list] of revokeGroups) {
225
- void grantable;
226
- changes.push(new RevokeCompositeTypePrivileges({
227
- compositeType: mainCompositeType,
228
- grantee,
229
- privileges: list,
230
- version: ctx.version,
231
- }));
232
- }
233
- }
234
- // Generate revoke grant option changes
235
- if (result.revokeGrantOption.length > 0) {
236
- changes.push(new RevokeGrantOptionCompositeTypePrivileges({
237
- compositeType: mainCompositeType,
238
- grantee,
239
- privilegeNames: result.revokeGrantOption,
240
- version: ctx.version,
241
- }));
242
- }
243
- }
177
+ const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchCompositeType.owner);
178
+ changes.push(...emitObjectPrivilegeChanges(privilegeResults, branchCompositeType, mainCompositeType, "compositeType", {
179
+ Grant: GrantCompositeTypePrivileges,
180
+ Revoke: RevokeCompositeTypePrivileges,
181
+ RevokeGrantOption: RevokeGrantOptionCompositeTypePrivileges,
182
+ }, ctx.version));
244
183
  // Note: Composite type renaming would also use ALTER TYPE ... RENAME TO ...
245
184
  // But since our CompositeType model uses 'name' as the identity field,
246
185
  // a name change would be handled as drop + create by diffObjects()