@supabase/pg-delta 1.0.0-alpha.11 → 1.0.0-alpha.13

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 (397) hide show
  1. package/dist/core/expand-replace-dependencies.js +23 -0
  2. package/dist/core/export/index.d.ts +2 -2
  3. package/dist/core/export/index.js +4 -1
  4. package/dist/core/integrations/integration.types.d.ts +26 -1
  5. package/dist/core/integrations/integration.types.js +31 -1
  6. package/dist/core/integrations/serialize/dsl.d.ts +1 -8
  7. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  8. package/dist/core/integrations/supabase.js +19 -0
  9. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  10. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  11. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  12. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  13. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  14. package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
  15. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  16. package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
  17. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  18. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  19. package/dist/core/objects/base.change.d.ts +2 -1
  20. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  21. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  22. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  23. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  24. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  25. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  26. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  27. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  28. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  29. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  30. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  31. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  32. package/dist/core/objects/domain/changes/domain.create.d.ts +2 -1
  33. package/dist/core/objects/domain/changes/domain.create.js +1 -1
  34. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  35. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  36. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  37. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  38. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  39. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  40. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  41. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  42. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  43. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  44. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  45. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  46. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  47. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  48. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  49. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  50. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  51. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  52. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  53. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  54. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  55. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  56. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  57. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  58. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  59. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  60. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  61. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  62. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  63. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  64. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  65. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  66. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  67. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  68. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  69. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  70. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  71. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  72. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  73. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  74. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  75. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  76. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  77. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  78. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  79. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  80. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  81. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  82. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  83. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  84. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  85. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  86. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  87. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  88. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  89. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  90. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  91. package/dist/core/objects/index/changes/index.alter.js +3 -3
  92. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  93. package/dist/core/objects/index/changes/index.comment.js +2 -2
  94. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  95. package/dist/core/objects/index/changes/index.create.js +1 -1
  96. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  97. package/dist/core/objects/index/changes/index.drop.js +1 -1
  98. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  99. package/dist/core/objects/language/changes/language.alter.js +1 -1
  100. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  101. package/dist/core/objects/language/changes/language.comment.js +2 -2
  102. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  103. package/dist/core/objects/language/changes/language.create.js +1 -1
  104. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  105. package/dist/core/objects/language/changes/language.drop.js +1 -1
  106. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  107. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  108. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  109. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  110. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  111. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  112. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  113. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  114. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  115. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  116. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  117. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  118. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  119. package/dist/core/objects/procedure/changes/procedure.alter.js +7 -7
  120. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  121. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  122. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  123. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  124. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  125. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  126. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  127. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  128. package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -7
  129. package/dist/core/objects/publication/changes/publication.alter.js +12 -7
  130. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  131. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  132. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  133. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  134. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  135. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  136. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  137. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
  138. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  139. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  140. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  141. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +1 -1
  142. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  143. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  144. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  145. package/dist/core/objects/role/changes/role.alter.js +2 -2
  146. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  147. package/dist/core/objects/role/changes/role.comment.js +2 -2
  148. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  149. package/dist/core/objects/role/changes/role.create.js +1 -1
  150. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  151. package/dist/core/objects/role/changes/role.drop.js +1 -1
  152. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  153. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  154. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  155. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  156. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  157. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  158. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  159. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  160. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  161. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  162. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  163. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  164. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  165. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  166. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  167. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  168. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  169. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  170. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  171. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  172. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  173. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  174. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  175. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  176. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  177. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  178. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  179. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  180. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  181. package/dist/core/objects/sequence/sequence.diff.d.ts +4 -1
  182. package/dist/core/objects/sequence/sequence.diff.js +12 -0
  183. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  184. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  185. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  186. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  187. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  188. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  189. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  190. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  191. package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
  192. package/dist/core/objects/table/changes/table.alter.js +107 -22
  193. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  194. package/dist/core/objects/table/changes/table.comment.js +6 -6
  195. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  196. package/dist/core/objects/table/changes/table.create.js +1 -1
  197. package/dist/core/objects/table/changes/table.drop.d.ts +4 -3
  198. package/dist/core/objects/table/changes/table.drop.js +7 -1
  199. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  200. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  201. package/dist/core/objects/table/table.diff.js +46 -1
  202. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  203. package/dist/core/objects/trigger/changes/trigger.alter.js +1 -1
  204. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  205. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  206. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  207. package/dist/core/objects/trigger/changes/trigger.create.js +1 -1
  208. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  209. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  210. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  211. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  212. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  213. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  214. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  215. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  216. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  217. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  218. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  219. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  220. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  221. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  222. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  223. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  224. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  225. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  226. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  227. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  228. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  229. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  230. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  231. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  232. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  233. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  234. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  235. package/dist/core/objects/type/range/changes/range.create.js +1 -1
  236. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  237. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  238. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  239. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  240. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  241. package/dist/core/objects/view/changes/view.alter.js +3 -3
  242. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  243. package/dist/core/objects/view/changes/view.comment.js +2 -2
  244. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  245. package/dist/core/objects/view/changes/view.create.js +1 -1
  246. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  247. package/dist/core/objects/view/changes/view.drop.js +1 -1
  248. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  249. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  250. package/dist/core/plan/create.js +5 -17
  251. package/dist/core/plan/types.d.ts +3 -6
  252. package/dist/core/sort/custom-constraints.js +64 -0
  253. package/package.json +1 -1
  254. package/src/core/expand-replace-dependencies.test.ts +126 -1
  255. package/src/core/expand-replace-dependencies.ts +50 -0
  256. package/src/core/export/index.ts +13 -4
  257. package/src/core/integrations/integration.types.ts +59 -1
  258. package/src/core/integrations/serialize/dsl.test.ts +20 -1
  259. package/src/core/integrations/serialize/dsl.ts +1 -10
  260. package/src/core/integrations/serialize/serialize.types.ts +37 -0
  261. package/src/core/integrations/supabase.ts +19 -0
  262. package/src/core/objects/aggregate/changes/aggregate.alter.ts +2 -1
  263. package/src/core/objects/aggregate/changes/aggregate.comment.ts +3 -2
  264. package/src/core/objects/aggregate/changes/aggregate.create.ts +2 -1
  265. package/src/core/objects/aggregate/changes/aggregate.drop.ts +2 -1
  266. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +4 -3
  267. package/src/core/objects/base.change.ts +3 -1
  268. package/src/core/objects/collation/changes/collation.alter.ts +3 -2
  269. package/src/core/objects/collation/changes/collation.comment.ts +3 -2
  270. package/src/core/objects/collation/changes/collation.create.ts +2 -1
  271. package/src/core/objects/collation/changes/collation.drop.ts +2 -1
  272. package/src/core/objects/domain/changes/domain.alter.ts +9 -8
  273. package/src/core/objects/domain/changes/domain.comment.ts +3 -2
  274. package/src/core/objects/domain/changes/domain.create.ts +2 -1
  275. package/src/core/objects/domain/changes/domain.drop.ts +2 -1
  276. package/src/core/objects/domain/changes/domain.privilege.ts +4 -3
  277. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +3 -2
  278. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +3 -2
  279. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +2 -1
  280. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +2 -1
  281. package/src/core/objects/extension/changes/extension.alter.ts +3 -2
  282. package/src/core/objects/extension/changes/extension.comment.ts +3 -2
  283. package/src/core/objects/extension/changes/extension.create.test.ts +22 -0
  284. package/src/core/objects/extension/changes/extension.create.ts +5 -2
  285. package/src/core/objects/extension/changes/extension.drop.ts +2 -1
  286. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +3 -2
  287. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +3 -2
  288. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +2 -1
  289. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +2 -1
  290. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +4 -3
  291. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +10 -9
  292. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +3 -2
  293. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +2 -1
  294. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +2 -1
  295. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +4 -3
  296. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +4 -3
  297. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +3 -2
  298. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +2 -1
  299. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +2 -1
  300. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +4 -3
  301. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +2 -1
  302. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +2 -1
  303. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +2 -1
  304. package/src/core/objects/index/changes/index.alter.ts +4 -3
  305. package/src/core/objects/index/changes/index.comment.ts +3 -2
  306. package/src/core/objects/index/changes/index.create.ts +2 -1
  307. package/src/core/objects/index/changes/index.drop.ts +2 -1
  308. package/src/core/objects/language/changes/language.alter.ts +2 -1
  309. package/src/core/objects/language/changes/language.comment.ts +3 -2
  310. package/src/core/objects/language/changes/language.create.ts +2 -1
  311. package/src/core/objects/language/changes/language.drop.ts +2 -1
  312. package/src/core/objects/language/changes/language.privilege.ts +4 -3
  313. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +3 -2
  314. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +5 -4
  315. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +2 -1
  316. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +2 -1
  317. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +4 -3
  318. package/src/core/objects/procedure/changes/procedure.alter.ts +8 -7
  319. package/src/core/objects/procedure/changes/procedure.comment.ts +3 -2
  320. package/src/core/objects/procedure/changes/procedure.create.ts +2 -1
  321. package/src/core/objects/procedure/changes/procedure.drop.ts +2 -1
  322. package/src/core/objects/procedure/changes/procedure.privilege.ts +4 -3
  323. package/src/core/objects/publication/changes/publication.alter.test.ts +4 -0
  324. package/src/core/objects/publication/changes/publication.alter.ts +14 -7
  325. package/src/core/objects/publication/changes/publication.comment.ts +3 -2
  326. package/src/core/objects/publication/changes/publication.create.ts +2 -1
  327. package/src/core/objects/publication/changes/publication.drop.ts +2 -1
  328. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +4 -3
  329. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +3 -2
  330. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +2 -1
  331. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +2 -1
  332. package/src/core/objects/role/changes/role.alter.ts +3 -2
  333. package/src/core/objects/role/changes/role.comment.ts +3 -2
  334. package/src/core/objects/role/changes/role.create.ts +2 -1
  335. package/src/core/objects/role/changes/role.drop.ts +2 -1
  336. package/src/core/objects/role/changes/role.privilege.ts +6 -5
  337. package/src/core/objects/rule/changes/rule.alter.ts +3 -2
  338. package/src/core/objects/rule/changes/rule.comment.ts +3 -2
  339. package/src/core/objects/rule/changes/rule.create.ts +2 -1
  340. package/src/core/objects/rule/changes/rule.drop.ts +2 -1
  341. package/src/core/objects/schema/changes/schema.alter.ts +2 -1
  342. package/src/core/objects/schema/changes/schema.comment.ts +3 -2
  343. package/src/core/objects/schema/changes/schema.create.ts +3 -3
  344. package/src/core/objects/schema/changes/schema.drop.ts +2 -1
  345. package/src/core/objects/schema/changes/schema.privilege.ts +4 -3
  346. package/src/core/objects/sequence/changes/sequence.alter.ts +3 -2
  347. package/src/core/objects/sequence/changes/sequence.comment.ts +3 -2
  348. package/src/core/objects/sequence/changes/sequence.create.ts +2 -1
  349. package/src/core/objects/sequence/changes/sequence.drop.ts +16 -3
  350. package/src/core/objects/sequence/changes/sequence.privilege.ts +4 -3
  351. package/src/core/objects/sequence/sequence.diff.test.ts +73 -1
  352. package/src/core/objects/sequence/sequence.diff.ts +24 -2
  353. package/src/core/objects/subscription/changes/subscription.alter.ts +7 -6
  354. package/src/core/objects/subscription/changes/subscription.comment.ts +3 -2
  355. package/src/core/objects/subscription/changes/subscription.create.ts +2 -1
  356. package/src/core/objects/subscription/changes/subscription.drop.ts +2 -1
  357. package/src/core/objects/table/changes/table.alter.test.ts +38 -0
  358. package/src/core/objects/table/changes/table.alter.ts +123 -22
  359. package/src/core/objects/table/changes/table.comment.ts +7 -6
  360. package/src/core/objects/table/changes/table.create.ts +2 -1
  361. package/src/core/objects/table/changes/table.drop.ts +20 -1
  362. package/src/core/objects/table/changes/table.privilege.ts +4 -3
  363. package/src/core/objects/table/table.diff.test.ts +121 -0
  364. package/src/core/objects/table/table.diff.ts +64 -1
  365. package/src/core/objects/trigger/changes/trigger.alter.ts +2 -1
  366. package/src/core/objects/trigger/changes/trigger.comment.ts +3 -2
  367. package/src/core/objects/trigger/changes/trigger.create.ts +2 -1
  368. package/src/core/objects/trigger/changes/trigger.drop.ts +2 -1
  369. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +5 -4
  370. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +5 -4
  371. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +2 -1
  372. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +2 -1
  373. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +4 -3
  374. package/src/core/objects/type/enum/changes/enum.alter.ts +3 -2
  375. package/src/core/objects/type/enum/changes/enum.comment.ts +3 -2
  376. package/src/core/objects/type/enum/changes/enum.create.ts +2 -1
  377. package/src/core/objects/type/enum/changes/enum.drop.ts +2 -1
  378. package/src/core/objects/type/enum/changes/enum.privilege.ts +4 -3
  379. package/src/core/objects/type/range/changes/range.alter.ts +2 -1
  380. package/src/core/objects/type/range/changes/range.comment.ts +3 -2
  381. package/src/core/objects/type/range/changes/range.create.ts +2 -1
  382. package/src/core/objects/type/range/changes/range.drop.ts +2 -1
  383. package/src/core/objects/type/range/changes/range.privilege.ts +4 -3
  384. package/src/core/objects/view/changes/view.alter.ts +4 -3
  385. package/src/core/objects/view/changes/view.comment.ts +3 -2
  386. package/src/core/objects/view/changes/view.create.ts +2 -1
  387. package/src/core/objects/view/changes/view.drop.ts +2 -1
  388. package/src/core/objects/view/changes/view.privilege.ts +4 -3
  389. package/src/core/plan/create.ts +11 -27
  390. package/src/core/plan/sql-format/format-off.test.ts +1 -1
  391. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1 -1
  392. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1 -1
  393. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1 -1
  394. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1 -1
  395. package/src/core/plan/types.ts +3 -6
  396. package/src/core/sort/custom-constraints.ts +74 -0
  397. package/src/typedoc.ts +5 -0
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -52,7 +53,7 @@ export class GrantEnumPrivileges extends AlterEnumChange {
52
53
  return [this.enum.stableId, stableId.role(this.grantee)];
53
54
  }
54
55
 
55
- serialize(): string {
56
+ serialize(_options?: SerializeOptions): string {
56
57
  const hasGrantable = this.privileges.some((p) => p.grantable);
57
58
  const hasBase = this.privileges.some((p) => !p.grantable);
58
59
  if (hasGrantable && hasBase) {
@@ -118,7 +119,7 @@ export class RevokeEnumPrivileges extends AlterEnumChange {
118
119
  ];
119
120
  }
120
121
 
121
- serialize(): string {
122
+ serialize(_options?: SerializeOptions): string {
122
123
  const kindPrefix = getObjectKindPrefix("TYPE");
123
124
  const list = this.privileges.map((p) => p.privilege);
124
125
  const privSql = formatObjectPrivilegeList("TYPE", list, this.version);
@@ -162,7 +163,7 @@ export class RevokeGrantOptionEnumPrivileges extends AlterEnumChange {
162
163
  ];
163
164
  }
164
165
 
165
- serialize(): string {
166
+ serialize(_options?: SerializeOptions): string {
166
167
  const kindPrefix = getObjectKindPrefix("TYPE");
167
168
  const privSql = formatObjectPrivilegeList(
168
169
  "TYPE",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Range } from "../range.model.ts";
2
3
  import { AlterRangeChange } from "./range.base.ts";
3
4
 
@@ -34,7 +35,7 @@ export class AlterRangeChangeOwner extends AlterRangeChange {
34
35
  return [this.range.stableId];
35
36
  }
36
37
 
37
- serialize(): string {
38
+ serialize(_options?: SerializeOptions): string {
38
39
  return [
39
40
  "ALTER TYPE",
40
41
  `${this.range.schema}.${this.range.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../../base.change.ts";
2
3
  import { stableId } from "../../../utils.ts";
3
4
  import type { Range } from "../range.model.ts";
@@ -26,7 +27,7 @@ export class CreateCommentOnRange extends CreateRangeChange {
26
27
  return [this.range.stableId];
27
28
  }
28
29
 
29
- serialize(): string {
30
+ serialize(_options?: SerializeOptions): string {
30
31
  return [
31
32
  "COMMENT ON TYPE",
32
33
  `${this.range.schema}.${this.range.name}`,
@@ -54,7 +55,7 @@ export class DropCommentOnRange extends DropRangeChange {
54
55
  return [stableId.comment(this.range.stableId), this.range.stableId];
55
56
  }
56
57
 
57
- serialize(): string {
58
+ serialize(_options?: SerializeOptions): string {
58
59
  return [
59
60
  "COMMENT ON TYPE",
60
61
  `${this.range.schema}.${this.range.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  isUserDefinedTypeSchema,
3
4
  parseProcedureReference,
@@ -98,7 +99,7 @@ export class CreateRange extends CreateRangeChange {
98
99
  return Array.from(dependencies);
99
100
  }
100
101
 
101
- serialize(): string {
102
+ serialize(_options?: SerializeOptions): string {
102
103
  const name = `${this.range.schema}.${this.range.name}`;
103
104
  const prefix: string = ["CREATE TYPE", name, "AS RANGE"].join(" ");
104
105
 
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Range } from "../range.model.ts";
2
3
  import { DropRangeChange } from "./range.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropRange extends DropRangeChange {
28
29
  return [this.range.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return ["DROP TYPE", `${this.range.schema}.${this.range.name}`].join(" ");
33
34
  }
34
35
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -52,7 +53,7 @@ export class GrantRangePrivileges extends AlterRangeChange {
52
53
  return [this.range.stableId, stableId.role(this.grantee)];
53
54
  }
54
55
 
55
- serialize(): string {
56
+ serialize(_options?: SerializeOptions): string {
56
57
  const hasGrantable = this.privileges.some((p) => p.grantable);
57
58
  const hasBase = this.privileges.some((p) => !p.grantable);
58
59
  if (hasGrantable && hasBase) {
@@ -118,7 +119,7 @@ export class RevokeRangePrivileges extends AlterRangeChange {
118
119
  ];
119
120
  }
120
121
 
121
- serialize(): string {
122
+ serialize(_options?: SerializeOptions): string {
122
123
  const kindPrefix = getObjectKindPrefix("TYPE");
123
124
  const list = this.privileges.map((p) => p.privilege);
124
125
  const privSql = formatObjectPrivilegeList("TYPE", list, this.version);
@@ -162,7 +163,7 @@ export class RevokeGrantOptionRangePrivileges extends AlterRangeChange {
162
163
  ];
163
164
  }
164
165
 
165
- serialize(): string {
166
+ serialize(_options?: SerializeOptions): string {
166
167
  const kindPrefix = getObjectKindPrefix("TYPE");
167
168
  const privSql = formatObjectPrivilegeList(
168
169
  "TYPE",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { View } from "../view.model.ts";
2
3
  import { AlterViewChange } from "./view.base.ts";
3
4
 
@@ -42,7 +43,7 @@ export class AlterViewChangeOwner extends AlterViewChange {
42
43
  return [this.view.stableId];
43
44
  }
44
45
 
45
- serialize(): string {
46
+ serialize(_options?: SerializeOptions): string {
46
47
  return [
47
48
  "ALTER VIEW",
48
49
  `${this.view.schema}.${this.view.name}`,
@@ -72,7 +73,7 @@ export class AlterViewSetOptions extends AlterViewChange {
72
73
  return [this.view.stableId];
73
74
  }
74
75
 
75
- serialize(): string {
76
+ serialize(_options?: SerializeOptions): string {
76
77
  const opts = this.options.join(", ");
77
78
  return [
78
79
  "ALTER VIEW",
@@ -101,7 +102,7 @@ export class AlterViewResetOptions extends AlterViewChange {
101
102
  return [this.view.stableId];
102
103
  }
103
104
 
104
- serialize(): string {
105
+ serialize(_options?: SerializeOptions): string {
105
106
  return [
106
107
  "ALTER VIEW",
107
108
  `${this.view.schema}.${this.view.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { View } from "../view.model.ts";
@@ -22,7 +23,7 @@ export class CreateCommentOnView extends CreateViewChange {
22
23
  return [this.view.stableId];
23
24
  }
24
25
 
25
- serialize(): string {
26
+ serialize(_options?: SerializeOptions): string {
26
27
  return [
27
28
  "COMMENT ON VIEW",
28
29
  `${this.view.schema}.${this.view.name}`,
@@ -49,7 +50,7 @@ export class DropCommentOnView extends DropViewChange {
49
50
  return [stableId.comment(this.view.stableId), this.view.stableId];
50
51
  }
51
52
 
52
- serialize(): string {
53
+ serialize(_options?: SerializeOptions): string {
53
54
  return [
54
55
  "COMMENT ON VIEW",
55
56
  `${this.view.schema}.${this.view.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { View } from "../view.model.ts";
3
4
  import { CreateViewChange } from "./view.base.ts";
@@ -52,7 +53,7 @@ export class CreateView extends CreateViewChange {
52
53
  return Array.from(dependencies);
53
54
  }
54
55
 
55
- serialize(): string {
56
+ serialize(_options?: SerializeOptions): string {
56
57
  const parts: string[] = [
57
58
  `CREATE${this.orReplace ? " OR REPLACE" : ""} VIEW`,
58
59
  ];
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { View } from "../view.model.ts";
3
4
  import { DropViewChange } from "./view.base.ts";
@@ -34,7 +35,7 @@ export class DropView extends DropViewChange {
34
35
  ];
35
36
  }
36
37
 
37
- serialize(): string {
38
+ serialize(_options?: SerializeOptions): string {
38
39
  return ["DROP VIEW", `${this.view.schema}.${this.view.name}`].join(" ");
39
40
  }
40
41
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -57,7 +58,7 @@ export class GrantViewPrivileges extends AlterViewChange {
57
58
  return [this.view.stableId, stableId.role(this.grantee)];
58
59
  }
59
60
 
60
- serialize(): string {
61
+ serialize(_options?: SerializeOptions): string {
61
62
  const hasGrantable = this.privileges.some((p) => p.grantable);
62
63
  const hasBase = this.privileges.some((p) => !p.grantable);
63
64
  if (hasGrantable && hasBase) {
@@ -132,7 +133,7 @@ export class RevokeViewPrivileges extends AlterViewChange {
132
133
  ];
133
134
  }
134
135
 
135
- serialize(): string {
136
+ serialize(_options?: SerializeOptions): string {
136
137
  const kindPrefix = getObjectKindPrefix("VIEW");
137
138
  const list = this.privileges.map((p) => p.privilege);
138
139
  const privSql = formatObjectPrivilegeList("VIEW", list, this.version);
@@ -183,7 +184,7 @@ export class RevokeGrantOptionViewPrivileges extends AlterViewChange {
183
184
  ];
184
185
  }
185
186
 
186
- serialize(): string {
187
+ serialize(_options?: SerializeOptions): string {
187
188
  const kindPrefix = getObjectKindPrefix("VIEW");
188
189
  const privSql = formatObjectPrivilegeList(
189
190
  "VIEW",
@@ -10,15 +10,12 @@ import { createEmptyCatalog, extractCatalog } from "../catalog.model.ts";
10
10
  import type { Change } from "../change.types.ts";
11
11
  import type { DiffContext } from "../context.ts";
12
12
  import { buildPlanScopeFingerprint, hashStableIds } from "../fingerprint.ts";
13
+ import type { FilterDSL } from "../integrations/filter/dsl.ts";
13
14
  import {
14
- compileFilterDSL,
15
- type FilterDSL,
16
- } from "../integrations/filter/dsl.ts";
17
- import type { Integration } from "../integrations/integration.types.ts";
18
- import {
19
- compileSerializeDSL,
20
- type SerializeDSL,
21
- } from "../integrations/serialize/dsl.ts";
15
+ type ResolvedIntegration,
16
+ resolveIntegration,
17
+ } from "../integrations/integration.types.ts";
18
+ import type { SerializeDSL } from "../integrations/serialize/dsl.ts";
22
19
  import { createManagedPool, endPool } from "../postgres-config.ts";
23
20
  import { sortChanges } from "../sort/sort-changes.ts";
24
21
  import type { PgDependRow } from "../sort/types.ts";
@@ -155,23 +152,10 @@ function buildPlanForCatalogs(
155
152
  : undefined;
156
153
 
157
154
  // Build final integration: compile DSL if needed, use functions directly otherwise
158
- let finalIntegration: Integration | undefined;
159
- if (filterOption || serializeOption) {
160
- finalIntegration = {
161
- filter:
162
- typeof filterOption === "function"
163
- ? filterOption
164
- : filterDSL
165
- ? compileFilterDSL(filterDSL)
166
- : undefined,
167
- serialize:
168
- typeof serializeOption === "function"
169
- ? serializeOption
170
- : serializeDSL
171
- ? compileSerializeDSL(serializeDSL)
172
- : undefined,
173
- };
174
- }
155
+ const finalIntegration = resolveIntegration({
156
+ filter: filterOption,
157
+ serialize: serializeOption,
158
+ });
175
159
 
176
160
  // Use filter from final integration
177
161
  const filterFn = finalIntegration?.filter;
@@ -317,7 +301,7 @@ function buildPlan(
317
301
  options?: CreatePlanOptions,
318
302
  filterDSL?: FilterDSL,
319
303
  serializeDSL?: SerializeDSL,
320
- integration?: Integration,
304
+ integration?: ResolvedIntegration,
321
305
  ): Plan {
322
306
  const role = options?.role;
323
307
  const statements = generateStatements(changes, {
@@ -350,7 +334,7 @@ function buildPlan(
350
334
  function generateStatements(
351
335
  changes: Change[],
352
336
  options?: {
353
- integration?: Integration;
337
+ integration?: ResolvedIntegration;
354
338
  role?: string;
355
339
  },
356
340
  ): string[] {
@@ -439,7 +439,7 @@ describe("sql formatting snapshots", () => {
439
439
  CREATE SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
440
440
 
441
441
  -- sequence.drop
442
- DROP SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
442
+ DROP SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq CASCADE;
443
443
 
444
444
  -- sequence.alter.set_owned_by
445
445
  ALTER SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq OWNED BY public.table_with_very_long_name_for_formatting_and_wrapping_test.id;
@@ -579,7 +579,7 @@ describe("sql formatting snapshots", () => {
579
579
  create sequence public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
580
580
 
581
581
  -- sequence.drop
582
- drop sequence public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
582
+ drop sequence public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq cascade;
583
583
 
584
584
  -- sequence.alter.set_owned_by
585
585
  alter sequence public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq owned by
@@ -684,7 +684,7 @@ describe("sql formatting snapshots", () => {
684
684
 
685
685
  -- sequence.drop
686
686
  DROP SEQUENCE
687
- public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
687
+ public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq CASCADE;
688
688
 
689
689
  -- sequence.alter.set_owned_by
690
690
  ALTER SEQUENCE
@@ -577,7 +577,7 @@ describe("sql formatting snapshots", () => {
577
577
  CREATE SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
578
578
 
579
579
  -- sequence.drop
580
- DROP SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
580
+ DROP SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq CASCADE;
581
581
 
582
582
  -- sequence.alter.set_owned_by
583
583
  ALTER SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq OWNED BY
@@ -570,7 +570,7 @@ describe("sql formatting snapshots", () => {
570
570
  CREATE SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
571
571
 
572
572
  -- sequence.drop
573
- DROP SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
573
+ DROP SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq CASCADE;
574
574
 
575
575
  -- sequence.alter.set_owned_by
576
576
  ALTER SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq OWNED BY
@@ -4,10 +4,7 @@
4
4
 
5
5
  import z from "zod";
6
6
  import type { Change } from "../change.types.ts";
7
- import type { FilterDSL } from "../integrations/filter/dsl.ts";
8
- import type { ChangeFilter } from "../integrations/filter/filter.types.ts";
9
- import type { SerializeDSL } from "../integrations/serialize/dsl.ts";
10
- import type { ChangeSerializer } from "../integrations/serialize/serialize.types.ts";
7
+ import type { Integration } from "../integrations/integration.types.ts";
11
8
 
12
9
  // ============================================================================
13
10
  // Core Types
@@ -157,9 +154,9 @@ export type Plan = z.infer<typeof PlanSchema>;
157
154
  */
158
155
  export interface CreatePlanOptions {
159
156
  /** Filter - either FilterDSL (stored in plan) or ChangeFilter function (not stored) */
160
- filter?: FilterDSL | ChangeFilter;
157
+ filter?: Integration["filter"];
161
158
  /** Serialize - either SerializeDSL (stored in plan) or ChangeSerializer function (not stored) */
162
- serialize?: SerializeDSL | ChangeSerializer;
159
+ serialize?: Integration["serialize"];
163
160
  /** Role to use when executing the migration (SET ROLE will be added to statements) */
164
161
  role?: string;
165
162
  /**
@@ -4,6 +4,12 @@ import {
4
4
  GrantRoleDefaultPrivileges,
5
5
  RevokeRoleDefaultPrivileges,
6
6
  } from "../objects/role/changes/role.privilege.ts";
7
+ import {
8
+ AlterTableAlterColumnAddIdentity,
9
+ AlterTableAlterColumnDropDefault,
10
+ AlterTableAlterColumnDropIdentity,
11
+ AlterTableAlterColumnSetDefault,
12
+ } from "../objects/table/changes/table.alter.ts";
7
13
  import type { Constraint } from "./types.ts";
8
14
 
9
15
  /**
@@ -143,11 +149,79 @@ function generateDefaultPrivilegeConstraints(changes: Change[]): Constraint[] {
143
149
  return constraints;
144
150
  }
145
151
 
152
+ function generateIdentityTransitionConstraints(
153
+ changes: Change[],
154
+ ): Constraint[] {
155
+ const constraints: Constraint[] = [];
156
+ const dropDefaultByColumn = new Map<string, number[]>();
157
+ const dropIdentityByColumn = new Map<string, number[]>();
158
+ const addIdentityByColumn = new Map<string, number[]>();
159
+ const setDefaultByColumn = new Map<string, number[]>();
160
+
161
+ for (let i = 0; i < changes.length; i++) {
162
+ const change = changes[i];
163
+ const columnKey =
164
+ "table" in change && "column" in change
165
+ ? `${change.table.schema}.${change.table.name}.${change.column.name}`
166
+ : null;
167
+ if (!columnKey) continue;
168
+
169
+ if (change instanceof AlterTableAlterColumnDropDefault) {
170
+ const entries = dropDefaultByColumn.get(columnKey) ?? [];
171
+ entries.push(i);
172
+ dropDefaultByColumn.set(columnKey, entries);
173
+ } else if (change instanceof AlterTableAlterColumnAddIdentity) {
174
+ const entries = addIdentityByColumn.get(columnKey) ?? [];
175
+ entries.push(i);
176
+ addIdentityByColumn.set(columnKey, entries);
177
+ } else if (change instanceof AlterTableAlterColumnDropIdentity) {
178
+ const entries = dropIdentityByColumn.get(columnKey) ?? [];
179
+ entries.push(i);
180
+ dropIdentityByColumn.set(columnKey, entries);
181
+ } else if (change instanceof AlterTableAlterColumnSetDefault) {
182
+ const entries = setDefaultByColumn.get(columnKey) ?? [];
183
+ entries.push(i);
184
+ setDefaultByColumn.set(columnKey, entries);
185
+ }
186
+ }
187
+
188
+ // These rules only order same-column ALTERs inside the create/alter phase.
189
+ // Sequence drops are handled separately in the earlier drop phase.
190
+ for (const [columnKey, dropDefaultIndexes] of dropDefaultByColumn) {
191
+ const addIdentityIndexes = addIdentityByColumn.get(columnKey) ?? [];
192
+ for (const sourceIndex of dropDefaultIndexes) {
193
+ for (const targetIndex of addIdentityIndexes) {
194
+ constraints.push({
195
+ sourceChangeIndex: sourceIndex,
196
+ targetChangeIndex: targetIndex,
197
+ source: "custom",
198
+ });
199
+ }
200
+ }
201
+ }
202
+
203
+ for (const [columnKey, dropIdentityIndexes] of dropIdentityByColumn) {
204
+ const setDefaultIndexes = setDefaultByColumn.get(columnKey) ?? [];
205
+ for (const sourceIndex of dropIdentityIndexes) {
206
+ for (const targetIndex of setDefaultIndexes) {
207
+ constraints.push({
208
+ sourceChangeIndex: sourceIndex,
209
+ targetChangeIndex: targetIndex,
210
+ source: "custom",
211
+ });
212
+ }
213
+ }
214
+ }
215
+
216
+ return constraints;
217
+ }
218
+
146
219
  /**
147
220
  * All custom constraint generators.
148
221
  */
149
222
  const customConstraintGenerators: ConstraintGenerator[] = [
150
223
  generateDefaultPrivilegeConstraints,
224
+ generateIdentityTransitionConstraints,
151
225
  ];
152
226
 
153
227
  /**
package/src/typedoc.ts CHANGED
@@ -25,6 +25,11 @@ export type { FlatValue } from "./core/integrations/filter/flatten.ts";
25
25
 
26
26
  export type { IntegrationDSL } from "./core/integrations/integration-dsl.ts";
27
27
  export type { SerializeDSL } from "./core/integrations/serialize/dsl.ts";
28
+ export type {
29
+ ExtensionSerializeOptions,
30
+ SchemaSerializeOptions,
31
+ SerializeOptions,
32
+ } from "./core/integrations/serialize/serialize.types.ts";
28
33
 
29
34
  // ---------------------------------------------------------------------------
30
35
  // Change Types — Base & Top-Level Unions