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

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 (387) hide show
  1. package/dist/core/expand-replace-dependencies.js +23 -0
  2. package/dist/core/integrations/serialize/dsl.d.ts +1 -8
  3. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  4. package/dist/core/integrations/supabase.js +19 -0
  5. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  6. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  7. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  8. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  9. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  10. package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
  11. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  12. package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
  13. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  14. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  15. package/dist/core/objects/base.change.d.ts +2 -1
  16. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  17. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  18. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  19. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  20. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  21. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  22. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  23. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  24. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  25. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  26. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  27. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  28. package/dist/core/objects/domain/changes/domain.create.d.ts +2 -1
  29. package/dist/core/objects/domain/changes/domain.create.js +1 -1
  30. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  31. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  32. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  33. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  34. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  35. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  36. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  37. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  38. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  39. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  40. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  41. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  42. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  43. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  44. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  45. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  46. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  47. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  48. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  49. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  50. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  51. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  52. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  53. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  54. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  55. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  56. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  57. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  58. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  59. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  60. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  61. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  62. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  63. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  64. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  65. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  66. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  67. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  68. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  69. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  70. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  71. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  72. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  73. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  74. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  75. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  76. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  77. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  78. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  79. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  80. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  81. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  82. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  83. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  84. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  85. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  86. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  87. package/dist/core/objects/index/changes/index.alter.js +3 -3
  88. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  89. package/dist/core/objects/index/changes/index.comment.js +2 -2
  90. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  91. package/dist/core/objects/index/changes/index.create.js +1 -1
  92. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  93. package/dist/core/objects/index/changes/index.drop.js +1 -1
  94. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  95. package/dist/core/objects/language/changes/language.alter.js +1 -1
  96. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  97. package/dist/core/objects/language/changes/language.comment.js +2 -2
  98. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  99. package/dist/core/objects/language/changes/language.create.js +1 -1
  100. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  101. package/dist/core/objects/language/changes/language.drop.js +1 -1
  102. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  103. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  104. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  105. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  106. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  107. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  108. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  109. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  110. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  111. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  112. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  113. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  114. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  115. package/dist/core/objects/procedure/changes/procedure.alter.js +7 -7
  116. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  117. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  118. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  119. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  120. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  121. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  122. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  123. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  124. package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -7
  125. package/dist/core/objects/publication/changes/publication.alter.js +12 -7
  126. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  127. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  128. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  129. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  130. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  131. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  132. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  133. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
  134. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  135. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  136. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  137. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +1 -1
  138. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  139. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  140. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  141. package/dist/core/objects/role/changes/role.alter.js +2 -2
  142. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  143. package/dist/core/objects/role/changes/role.comment.js +2 -2
  144. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  145. package/dist/core/objects/role/changes/role.create.js +1 -1
  146. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  147. package/dist/core/objects/role/changes/role.drop.js +1 -1
  148. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  149. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  150. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  151. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  152. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  153. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  154. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  155. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  156. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  157. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  158. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  159. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  160. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  161. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  162. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  163. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  164. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  165. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  166. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  167. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  168. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  169. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  170. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  171. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  172. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  173. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  174. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  175. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  176. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  177. package/dist/core/objects/sequence/sequence.diff.d.ts +4 -1
  178. package/dist/core/objects/sequence/sequence.diff.js +12 -0
  179. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  180. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  181. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  182. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  183. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  184. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  185. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  186. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  187. package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
  188. package/dist/core/objects/table/changes/table.alter.js +107 -22
  189. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  190. package/dist/core/objects/table/changes/table.comment.js +6 -6
  191. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  192. package/dist/core/objects/table/changes/table.create.js +1 -1
  193. package/dist/core/objects/table/changes/table.drop.d.ts +4 -3
  194. package/dist/core/objects/table/changes/table.drop.js +7 -1
  195. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  196. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  197. package/dist/core/objects/table/table.diff.js +46 -1
  198. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  199. package/dist/core/objects/trigger/changes/trigger.alter.js +1 -1
  200. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  201. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  202. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  203. package/dist/core/objects/trigger/changes/trigger.create.js +1 -1
  204. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  205. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  206. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  207. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  208. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  209. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  210. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  211. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  212. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  213. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  214. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  215. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  216. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  217. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  218. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  219. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  220. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  221. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  222. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  223. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  224. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  225. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  226. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  227. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  228. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  229. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  230. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  231. package/dist/core/objects/type/range/changes/range.create.js +1 -1
  232. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  233. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  234. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  235. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  236. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  237. package/dist/core/objects/view/changes/view.alter.js +3 -3
  238. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  239. package/dist/core/objects/view/changes/view.comment.js +2 -2
  240. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  241. package/dist/core/objects/view/changes/view.create.js +1 -1
  242. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  243. package/dist/core/objects/view/changes/view.drop.js +1 -1
  244. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  245. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  246. package/dist/core/sort/custom-constraints.js +64 -0
  247. package/package.json +1 -1
  248. package/src/core/expand-replace-dependencies.test.ts +126 -1
  249. package/src/core/expand-replace-dependencies.ts +50 -0
  250. package/src/core/integrations/serialize/dsl.test.ts +20 -1
  251. package/src/core/integrations/serialize/dsl.ts +1 -10
  252. package/src/core/integrations/serialize/serialize.types.ts +37 -0
  253. package/src/core/integrations/supabase.ts +19 -0
  254. package/src/core/objects/aggregate/changes/aggregate.alter.ts +2 -1
  255. package/src/core/objects/aggregate/changes/aggregate.comment.ts +3 -2
  256. package/src/core/objects/aggregate/changes/aggregate.create.ts +2 -1
  257. package/src/core/objects/aggregate/changes/aggregate.drop.ts +2 -1
  258. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +4 -3
  259. package/src/core/objects/base.change.ts +3 -1
  260. package/src/core/objects/collation/changes/collation.alter.ts +3 -2
  261. package/src/core/objects/collation/changes/collation.comment.ts +3 -2
  262. package/src/core/objects/collation/changes/collation.create.ts +2 -1
  263. package/src/core/objects/collation/changes/collation.drop.ts +2 -1
  264. package/src/core/objects/domain/changes/domain.alter.ts +9 -8
  265. package/src/core/objects/domain/changes/domain.comment.ts +3 -2
  266. package/src/core/objects/domain/changes/domain.create.ts +2 -1
  267. package/src/core/objects/domain/changes/domain.drop.ts +2 -1
  268. package/src/core/objects/domain/changes/domain.privilege.ts +4 -3
  269. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +3 -2
  270. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +3 -2
  271. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +2 -1
  272. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +2 -1
  273. package/src/core/objects/extension/changes/extension.alter.ts +3 -2
  274. package/src/core/objects/extension/changes/extension.comment.ts +3 -2
  275. package/src/core/objects/extension/changes/extension.create.test.ts +22 -0
  276. package/src/core/objects/extension/changes/extension.create.ts +5 -2
  277. package/src/core/objects/extension/changes/extension.drop.ts +2 -1
  278. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +3 -2
  279. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +3 -2
  280. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +2 -1
  281. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +2 -1
  282. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +4 -3
  283. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +10 -9
  284. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +3 -2
  285. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +2 -1
  286. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +2 -1
  287. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +4 -3
  288. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +4 -3
  289. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +3 -2
  290. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +2 -1
  291. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +2 -1
  292. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +4 -3
  293. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +2 -1
  294. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +2 -1
  295. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +2 -1
  296. package/src/core/objects/index/changes/index.alter.ts +4 -3
  297. package/src/core/objects/index/changes/index.comment.ts +3 -2
  298. package/src/core/objects/index/changes/index.create.ts +2 -1
  299. package/src/core/objects/index/changes/index.drop.ts +2 -1
  300. package/src/core/objects/language/changes/language.alter.ts +2 -1
  301. package/src/core/objects/language/changes/language.comment.ts +3 -2
  302. package/src/core/objects/language/changes/language.create.ts +2 -1
  303. package/src/core/objects/language/changes/language.drop.ts +2 -1
  304. package/src/core/objects/language/changes/language.privilege.ts +4 -3
  305. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +3 -2
  306. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +5 -4
  307. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +2 -1
  308. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +2 -1
  309. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +4 -3
  310. package/src/core/objects/procedure/changes/procedure.alter.ts +8 -7
  311. package/src/core/objects/procedure/changes/procedure.comment.ts +3 -2
  312. package/src/core/objects/procedure/changes/procedure.create.ts +2 -1
  313. package/src/core/objects/procedure/changes/procedure.drop.ts +2 -1
  314. package/src/core/objects/procedure/changes/procedure.privilege.ts +4 -3
  315. package/src/core/objects/publication/changes/publication.alter.test.ts +4 -0
  316. package/src/core/objects/publication/changes/publication.alter.ts +14 -7
  317. package/src/core/objects/publication/changes/publication.comment.ts +3 -2
  318. package/src/core/objects/publication/changes/publication.create.ts +2 -1
  319. package/src/core/objects/publication/changes/publication.drop.ts +2 -1
  320. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +4 -3
  321. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +3 -2
  322. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +2 -1
  323. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +2 -1
  324. package/src/core/objects/role/changes/role.alter.ts +3 -2
  325. package/src/core/objects/role/changes/role.comment.ts +3 -2
  326. package/src/core/objects/role/changes/role.create.ts +2 -1
  327. package/src/core/objects/role/changes/role.drop.ts +2 -1
  328. package/src/core/objects/role/changes/role.privilege.ts +6 -5
  329. package/src/core/objects/rule/changes/rule.alter.ts +3 -2
  330. package/src/core/objects/rule/changes/rule.comment.ts +3 -2
  331. package/src/core/objects/rule/changes/rule.create.ts +2 -1
  332. package/src/core/objects/rule/changes/rule.drop.ts +2 -1
  333. package/src/core/objects/schema/changes/schema.alter.ts +2 -1
  334. package/src/core/objects/schema/changes/schema.comment.ts +3 -2
  335. package/src/core/objects/schema/changes/schema.create.ts +3 -3
  336. package/src/core/objects/schema/changes/schema.drop.ts +2 -1
  337. package/src/core/objects/schema/changes/schema.privilege.ts +4 -3
  338. package/src/core/objects/sequence/changes/sequence.alter.ts +3 -2
  339. package/src/core/objects/sequence/changes/sequence.comment.ts +3 -2
  340. package/src/core/objects/sequence/changes/sequence.create.ts +2 -1
  341. package/src/core/objects/sequence/changes/sequence.drop.ts +16 -3
  342. package/src/core/objects/sequence/changes/sequence.privilege.ts +4 -3
  343. package/src/core/objects/sequence/sequence.diff.test.ts +73 -1
  344. package/src/core/objects/sequence/sequence.diff.ts +24 -2
  345. package/src/core/objects/subscription/changes/subscription.alter.ts +7 -6
  346. package/src/core/objects/subscription/changes/subscription.comment.ts +3 -2
  347. package/src/core/objects/subscription/changes/subscription.create.ts +2 -1
  348. package/src/core/objects/subscription/changes/subscription.drop.ts +2 -1
  349. package/src/core/objects/table/changes/table.alter.test.ts +38 -0
  350. package/src/core/objects/table/changes/table.alter.ts +123 -22
  351. package/src/core/objects/table/changes/table.comment.ts +7 -6
  352. package/src/core/objects/table/changes/table.create.ts +2 -1
  353. package/src/core/objects/table/changes/table.drop.ts +20 -1
  354. package/src/core/objects/table/changes/table.privilege.ts +4 -3
  355. package/src/core/objects/table/table.diff.test.ts +121 -0
  356. package/src/core/objects/table/table.diff.ts +64 -1
  357. package/src/core/objects/trigger/changes/trigger.alter.ts +2 -1
  358. package/src/core/objects/trigger/changes/trigger.comment.ts +3 -2
  359. package/src/core/objects/trigger/changes/trigger.create.ts +2 -1
  360. package/src/core/objects/trigger/changes/trigger.drop.ts +2 -1
  361. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +5 -4
  362. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +5 -4
  363. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +2 -1
  364. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +2 -1
  365. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +4 -3
  366. package/src/core/objects/type/enum/changes/enum.alter.ts +3 -2
  367. package/src/core/objects/type/enum/changes/enum.comment.ts +3 -2
  368. package/src/core/objects/type/enum/changes/enum.create.ts +2 -1
  369. package/src/core/objects/type/enum/changes/enum.drop.ts +2 -1
  370. package/src/core/objects/type/enum/changes/enum.privilege.ts +4 -3
  371. package/src/core/objects/type/range/changes/range.alter.ts +2 -1
  372. package/src/core/objects/type/range/changes/range.comment.ts +3 -2
  373. package/src/core/objects/type/range/changes/range.create.ts +2 -1
  374. package/src/core/objects/type/range/changes/range.drop.ts +2 -1
  375. package/src/core/objects/type/range/changes/range.privilege.ts +4 -3
  376. package/src/core/objects/view/changes/view.alter.ts +4 -3
  377. package/src/core/objects/view/changes/view.comment.ts +3 -2
  378. package/src/core/objects/view/changes/view.create.ts +2 -1
  379. package/src/core/objects/view/changes/view.drop.ts +2 -1
  380. package/src/core/objects/view/changes/view.privilege.ts +4 -3
  381. package/src/core/plan/sql-format/format-off.test.ts +1 -1
  382. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1 -1
  383. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1 -1
  384. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1 -1
  385. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1 -1
  386. package/src/core/sort/custom-constraints.ts +74 -0
  387. package/src/typedoc.ts +5 -0
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { parseProcedureReference, stableId } from "../../utils.ts";
2
3
  import type { Language } from "../language.model.ts";
3
4
  import { CreateLanguageChange } from "./language.base.ts";
@@ -71,7 +72,7 @@ export class CreateLanguage extends CreateLanguageChange {
71
72
  return Array.from(dependencies);
72
73
  }
73
74
 
74
- serialize(): string {
75
+ serialize(_options?: SerializeOptions): string {
75
76
  const parts: string[] = [`CREATE${this.orReplace ? " OR REPLACE" : ""}`];
76
77
 
77
78
  // Only include non-default flags. We never print the optional
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Language } from "../language.model.ts";
2
3
  import { DropLanguageChange } from "./language.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropLanguage extends DropLanguageChange {
28
29
  return [this.language.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  const parts: string[] = ["DROP"];
33
34
 
34
35
  // Do not print optional keywords (e.g., PROCEDURAL). Keep the statement minimal.
@@ -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 GrantLanguagePrivileges extends AlterLanguageChange {
52
53
  return [this.language.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) {
@@ -117,7 +118,7 @@ export class RevokeLanguagePrivileges extends AlterLanguageChange {
117
118
  ];
118
119
  }
119
120
 
120
- serialize(): string {
121
+ serialize(_options?: SerializeOptions): string {
121
122
  const kindPrefix = getObjectKindPrefix("LANGUAGE");
122
123
  const list = this.privileges.map((p) => p.privilege);
123
124
  const privSql = formatObjectPrivilegeList("LANGUAGE", list, this.version);
@@ -160,7 +161,7 @@ export class RevokeGrantOptionLanguagePrivileges extends AlterLanguageChange {
160
161
  ];
161
162
  }
162
163
 
163
- serialize(): string {
164
+ serialize(_options?: SerializeOptions): string {
164
165
  const kindPrefix = getObjectKindPrefix("LANGUAGE");
165
166
  const privSql = formatObjectPrivilegeList(
166
167
  "LANGUAGE",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { MaterializedView } from "../materialized-view.model.ts";
2
3
  import { AlterMaterializedViewChange } from "./materialized-view.base.ts";
3
4
 
@@ -53,7 +54,7 @@ export class AlterMaterializedViewChangeOwner extends AlterMaterializedViewChang
53
54
  return [this.materializedView.stableId];
54
55
  }
55
56
 
56
- serialize(): string {
57
+ serialize(_options?: SerializeOptions): string {
57
58
  return [
58
59
  "ALTER MATERIALIZED VIEW",
59
60
  `${this.materializedView.schema}.${this.materializedView.name}`,
@@ -88,7 +89,7 @@ export class AlterMaterializedViewSetStorageParams extends AlterMaterializedView
88
89
  return [this.materializedView.stableId];
89
90
  }
90
91
 
91
- serialize(): string {
92
+ serialize(_options?: SerializeOptions): string {
92
93
  const head = [
93
94
  "ALTER MATERIALIZED VIEW",
94
95
  `${this.materializedView.schema}.${this.materializedView.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 type { ColumnProps } from "../../base.model.ts";
3
4
  import { stableId } from "../../utils.ts";
@@ -36,7 +37,7 @@ export class CreateCommentOnMaterializedView extends CreateMaterializedViewChang
36
37
  return [this.materializedView.stableId];
37
38
  }
38
39
 
39
- serialize(): string {
40
+ serialize(_options?: SerializeOptions): string {
40
41
  return [
41
42
  "COMMENT ON MATERIALIZED VIEW",
42
43
  `${this.materializedView.schema}.${this.materializedView.name}`,
@@ -67,7 +68,7 @@ export class DropCommentOnMaterializedView extends DropMaterializedViewChange {
67
68
  ];
68
69
  }
69
70
 
70
- serialize(): string {
71
+ serialize(_options?: SerializeOptions): string {
71
72
  return [
72
73
  "COMMENT ON MATERIALIZED VIEW",
73
74
  `${this.materializedView.schema}.${this.materializedView.name}`,
@@ -112,7 +113,7 @@ export class CreateCommentOnMaterializedViewColumn extends CreateMaterializedVie
112
113
  ];
113
114
  }
114
115
 
115
- serialize(): string {
116
+ serialize(_options?: SerializeOptions): string {
116
117
  return [
117
118
  "COMMENT ON COLUMN",
118
119
  `${this.materializedView.schema}.${this.materializedView.name}.${this.column.name}`,
@@ -166,7 +167,7 @@ export class DropCommentOnMaterializedViewColumn extends DropMaterializedViewCha
166
167
  ];
167
168
  }
168
169
 
169
- serialize(): string {
170
+ serialize(_options?: SerializeOptions): string {
170
171
  return [
171
172
  "COMMENT ON COLUMN",
172
173
  `${this.materializedView.schema}.${this.materializedView.name}.${this.column.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 { MaterializedView } from "../materialized-view.model.ts";
3
4
  import { CreateMaterializedViewChange } from "./materialized-view.base.ts";
@@ -62,7 +63,7 @@ export class CreateMaterializedView extends CreateMaterializedViewChange {
62
63
  return Array.from(dependencies);
63
64
  }
64
65
 
65
- serialize(): string {
66
+ serialize(_options?: SerializeOptions): string {
66
67
  const parts: string[] = ["CREATE MATERIALIZED VIEW"];
67
68
 
68
69
  // Add schema and 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 { MaterializedView } from "../materialized-view.model.ts";
3
4
  import { DropMaterializedViewChange } from "./materialized-view.base.ts";
@@ -51,7 +52,7 @@ export class DropMaterializedView extends DropMaterializedViewChange {
51
52
  ];
52
53
  }
53
54
 
54
- serialize(): string {
55
+ serialize(_options?: SerializeOptions): string {
55
56
  return [
56
57
  "DROP MATERIALIZED VIEW",
57
58
  `${this.materializedView.schema}.${this.materializedView.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -58,7 +59,7 @@ export class GrantMaterializedViewPrivileges extends AlterMaterializedViewChange
58
59
  return [this.materializedView.stableId, stableId.role(this.grantee)];
59
60
  }
60
61
 
61
- serialize(): string {
62
+ serialize(_options?: SerializeOptions): string {
62
63
  const hasGrantable = this.privileges.some((p) => p.grantable);
63
64
  const hasBase = this.privileges.some((p) => !p.grantable);
64
65
  if (hasGrantable && hasBase) {
@@ -138,7 +139,7 @@ export class RevokeMaterializedViewPrivileges extends AlterMaterializedViewChang
138
139
  ];
139
140
  }
140
141
 
141
- serialize(): string {
142
+ serialize(_options?: SerializeOptions): string {
142
143
  const kindPrefix = getObjectKindPrefix("MATERIALIZED VIEW");
143
144
  const list = this.privileges.map((p) => p.privilege);
144
145
  const privSql = formatObjectPrivilegeList(
@@ -195,7 +196,7 @@ export class RevokeGrantOptionMaterializedViewPrivileges extends AlterMaterializ
195
196
  ];
196
197
  }
197
198
 
198
- serialize(): string {
199
+ serialize(_options?: SerializeOptions): string {
199
200
  const kindPrefix = getObjectKindPrefix("MATERIALIZED VIEW");
200
201
  const privSql = formatObjectPrivilegeList(
201
202
  "MATERIALIZED VIEW",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Procedure } from "../procedure.model.ts";
2
3
  import { formatConfigValue } from "../utils.ts";
3
4
  import { AlterProcedureChange } from "./procedure.base.ts";
@@ -60,7 +61,7 @@ export class AlterProcedureChangeOwner extends AlterProcedureChange {
60
61
  return [this.procedure.stableId];
61
62
  }
62
63
 
63
- serialize(): string {
64
+ serialize(_options?: SerializeOptions): string {
64
65
  const objectType = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
65
66
 
66
67
  return [
@@ -91,7 +92,7 @@ export class AlterProcedureSetSecurity extends AlterProcedureChange {
91
92
  return [this.procedure.stableId];
92
93
  }
93
94
 
94
- serialize(): string {
95
+ serialize(_options?: SerializeOptions): string {
95
96
  const objectType = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
96
97
  const security = this.securityDefiner
97
98
  ? "SECURITY DEFINER"
@@ -142,7 +143,7 @@ export class AlterProcedureSetConfig extends AlterProcedureChange {
142
143
  return [this.procedure.stableId];
143
144
  }
144
145
 
145
- serialize(): string {
146
+ serialize(_options?: SerializeOptions): string {
146
147
  const head = [
147
148
  "ALTER",
148
149
  this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION",
@@ -176,7 +177,7 @@ export class AlterProcedureSetVolatility extends AlterProcedureChange {
176
177
  return [this.procedure.stableId];
177
178
  }
178
179
 
179
- serialize(): string {
180
+ serialize(_options?: SerializeOptions): string {
180
181
  const objectType = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
181
182
  const volMap: Record<string, string> = {
182
183
  i: "IMMUTABLE",
@@ -210,7 +211,7 @@ export class AlterProcedureSetStrictness extends AlterProcedureChange {
210
211
  return [this.procedure.stableId];
211
212
  }
212
213
 
213
- serialize(): string {
214
+ serialize(_options?: SerializeOptions): string {
214
215
  const objectType = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
215
216
  const strictness = this.isStrict ? "STRICT" : "CALLED ON NULL INPUT";
216
217
  return [
@@ -240,7 +241,7 @@ export class AlterProcedureSetLeakproof extends AlterProcedureChange {
240
241
  return [this.procedure.stableId];
241
242
  }
242
243
 
243
- serialize(): string {
244
+ serialize(_options?: SerializeOptions): string {
244
245
  const objectType = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
245
246
  const leak = this.leakproof ? "LEAKPROOF" : "NOT LEAKPROOF";
246
247
  return ["ALTER", objectType, procedureSignature(this.procedure), leak].join(
@@ -267,7 +268,7 @@ export class AlterProcedureSetParallel extends AlterProcedureChange {
267
268
  return [this.procedure.stableId];
268
269
  }
269
270
 
270
- serialize(): string {
271
+ serialize(_options?: SerializeOptions): string {
271
272
  const objectType = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
272
273
  const parallelMap: Record<string, string> = {
273
274
  u: "PARALLEL UNSAFE",
@@ -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 { Procedure } from "../procedure.model.ts";
@@ -30,7 +31,7 @@ export class CreateCommentOnProcedure extends CreateProcedureChange {
30
31
  return [this.procedure.stableId];
31
32
  }
32
33
 
33
- serialize(): string {
34
+ serialize(_options?: SerializeOptions): string {
34
35
  return [
35
36
  "COMMENT ON",
36
37
  this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION",
@@ -59,7 +60,7 @@ export class DropCommentOnProcedure extends DropProcedureChange {
59
60
  return [stableId.comment(this.procedure.stableId), this.procedure.stableId];
60
61
  }
61
62
 
62
- serialize(): string {
63
+ serialize(_options?: SerializeOptions): string {
63
64
  return [
64
65
  "COMMENT ON",
65
66
  this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { parseTypeString, stableId } from "../../utils.ts";
2
3
  import type { Procedure } from "../procedure.model.ts";
3
4
  import { CreateProcedureChange } from "./procedure.base.ts";
@@ -78,7 +79,7 @@ export class CreateProcedure extends CreateProcedureChange {
78
79
  return Array.from(dependencies);
79
80
  }
80
81
 
81
- serialize(): string {
82
+ serialize(_options?: SerializeOptions): string {
82
83
  // Use the server-generated CREATE statement for functions/procedures
83
84
  // Normalize trailing semicolon and OR REPLACE clause according to flag
84
85
  let definition = this.procedure.definition.trim();
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Procedure } from "../procedure.model.ts";
2
3
  import { formatFunctionArguments } from "../utils.ts";
3
4
  import { DropProcedureChange } from "./procedure.base.ts";
@@ -30,7 +31,7 @@ export class DropProcedure extends DropProcedureChange {
30
31
  return [this.procedure.stableId];
31
32
  }
32
33
 
33
- serialize(): string {
34
+ serialize(_options?: SerializeOptions): string {
34
35
  const objectType = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
35
36
 
36
37
  // Build argument list
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -53,7 +54,7 @@ export class GrantProcedurePrivileges extends AlterProcedureChange {
53
54
  return [this.procedure.stableId, stableId.role(this.grantee)];
54
55
  }
55
56
 
56
- serialize(): string {
57
+ serialize(_options?: SerializeOptions): string {
57
58
  const hasGrantable = this.privileges.some((p) => p.grantable);
58
59
  const hasBase = this.privileges.some((p) => !p.grantable);
59
60
  if (hasGrantable && hasBase) {
@@ -123,7 +124,7 @@ export class RevokeProcedurePrivileges extends AlterProcedureChange {
123
124
  ];
124
125
  }
125
126
 
126
- serialize(): string {
127
+ serialize(_options?: SerializeOptions): string {
127
128
  const objectKind = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
128
129
  const kindPrefix = getObjectKindPrefix(objectKind);
129
130
  const list = this.privileges.map((p) => p.privilege);
@@ -171,7 +172,7 @@ export class RevokeGrantOptionProcedurePrivileges extends AlterProcedureChange {
171
172
  ];
172
173
  }
173
174
 
174
- serialize(): string {
175
+ serialize(_options?: SerializeOptions): string {
175
176
  const objectKind = this.procedure.kind === "p" ? "PROCEDURE" : "FUNCTION";
176
177
  const kindPrefix = getObjectKindPrefix(objectKind);
177
178
  const privSql = formatObjectPrivilegeList(
@@ -156,6 +156,10 @@ describe("publication.alter", () => {
156
156
  stableId.table("public", "logs"),
157
157
  stableId.table("audit", "events"),
158
158
  ]);
159
+ expect(change.drops).toEqual([
160
+ stableId.table("public", "logs"),
161
+ stableId.table("audit", "events"),
162
+ ]);
159
163
  await assertValidSql(change.serialize());
160
164
  expect(change.serialize()).toBe(
161
165
  "ALTER PUBLICATION pub_drop_tables DROP TABLE public.logs, audit.events",
@@ -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 {
3
4
  Publication,
@@ -31,7 +32,7 @@ export class AlterPublicationSetOptions extends AlterPublicationChange {
31
32
  return [this.publication.stableId];
32
33
  }
33
34
 
34
- serialize(): string {
35
+ serialize(_options?: SerializeOptions): string {
35
36
  const assignments: string[] = [];
36
37
 
37
38
  if (this.setPublish) {
@@ -79,7 +80,7 @@ export class AlterPublicationSetList extends AlterPublicationChange {
79
80
  return Array.from(dependencies);
80
81
  }
81
82
 
82
- serialize(): string {
83
+ serialize(_options?: SerializeOptions): string {
83
84
  const clauses = formatPublicationObjects(
84
85
  this.publication.tables,
85
86
  this.publication.schemas,
@@ -118,7 +119,7 @@ export class AlterPublicationAddTables extends AlterPublicationChange {
118
119
  return Array.from(dependencies);
119
120
  }
120
121
 
121
- serialize(): string {
122
+ serialize(_options?: SerializeOptions): string {
122
123
  const clauses = this.tables.map((table) => formatPublicationTable(table));
123
124
  return `ALTER PUBLICATION ${this.publication.name} ADD ${clauses.join(", ")}`;
124
125
  }
@@ -150,7 +151,13 @@ export class AlterPublicationDropTables extends AlterPublicationChange {
150
151
  return Array.from(dependencies);
151
152
  }
152
153
 
153
- serialize(): string {
154
+ get drops() {
155
+ // Treat ALTER PUBLICATION ... DROP TABLE as a destructive change so it runs
156
+ // in the drop phase before DROP TABLE removes the referenced relation.
157
+ return this.tables.map((table) => stableId.table(table.schema, table.name));
158
+ }
159
+
160
+ serialize(_options?: SerializeOptions): string {
154
161
  const targets = this.tables.map((table) => `${table.schema}.${table.name}`);
155
162
  return `ALTER PUBLICATION ${this.publication.name} DROP TABLE ${targets.join(", ")}`;
156
163
  }
@@ -174,7 +181,7 @@ export class AlterPublicationAddSchemas extends AlterPublicationChange {
174
181
  ];
175
182
  }
176
183
 
177
- serialize(): string {
184
+ serialize(_options?: SerializeOptions): string {
178
185
  const clauses = this.schemas.map((schema) => `TABLES IN SCHEMA ${schema}`);
179
186
  return `ALTER PUBLICATION ${this.publication.name} ADD ${clauses.join(", ")}`;
180
187
  }
@@ -198,7 +205,7 @@ export class AlterPublicationDropSchemas extends AlterPublicationChange {
198
205
  ];
199
206
  }
200
207
 
201
- serialize(): string {
208
+ serialize(_options?: SerializeOptions): string {
202
209
  const clauses = this.schemas.map((schema) => `TABLES IN SCHEMA ${schema}`);
203
210
  return `ALTER PUBLICATION ${this.publication.name} DROP ${clauses.join(", ")}`;
204
211
  }
@@ -219,7 +226,7 @@ export class AlterPublicationSetOwner extends AlterPublicationChange {
219
226
  return [this.publication.stableId, stableId.role(this.owner)];
220
227
  }
221
228
 
222
- serialize(): string {
229
+ serialize(_options?: SerializeOptions): string {
223
230
  return `ALTER PUBLICATION ${this.publication.name} OWNER TO ${this.owner}`;
224
231
  }
225
232
  }
@@ -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 { Publication } from "../publication.model.ts";
@@ -27,7 +28,7 @@ export class CreateCommentOnPublication extends CreatePublicationChange {
27
28
  return [this.publication.stableId];
28
29
  }
29
30
 
30
- serialize(): string {
31
+ serialize(_options?: SerializeOptions): string {
31
32
  return [
32
33
  "COMMENT ON PUBLICATION",
33
34
  this.publication.name,
@@ -58,7 +59,7 @@ export class DropCommentOnPublication extends DropPublicationChange {
58
59
  ];
59
60
  }
60
61
 
61
- serialize(): string {
62
+ serialize(_options?: SerializeOptions): string {
62
63
  return `COMMENT ON PUBLICATION ${this.publication.name} IS NULL`;
63
64
  }
64
65
  }
@@ -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 { Publication } from "../publication.model.ts";
3
4
  import {
@@ -48,7 +49,7 @@ export class CreatePublication extends CreatePublicationChange {
48
49
  return Array.from(dependencies);
49
50
  }
50
51
 
51
- serialize(): string {
52
+ serialize(_options?: SerializeOptions): string {
52
53
  const parts: string[] = ["CREATE PUBLICATION", this.publication.name];
53
54
 
54
55
  if (this.publication.all_tables) {
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Publication } from "../publication.model.ts";
2
3
  import { DropPublicationChange } from "./publication.base.ts";
3
4
 
@@ -23,7 +24,7 @@ export class DropPublication extends DropPublicationChange {
23
24
  return [this.publication.stableId];
24
25
  }
25
26
 
26
- serialize(): string {
27
+ serialize(_options?: SerializeOptions): string {
27
28
  return `DROP PUBLICATION ${this.publication.name}`;
28
29
  }
29
30
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { RlsPolicy } from "../rls-policy.model.ts";
2
3
  import { AlterRlsPolicyChange } from "./rls-policy.base.ts";
3
4
 
@@ -38,7 +39,7 @@ export class AlterRlsPolicySetRoles extends AlterRlsPolicyChange {
38
39
  return [this.policy.stableId];
39
40
  }
40
41
 
41
- serialize(): string {
42
+ serialize(_options?: SerializeOptions): string {
42
43
  const targetRoles = this.roles;
43
44
  const toPublic =
44
45
  targetRoles.length === 0 ||
@@ -74,7 +75,7 @@ export class AlterRlsPolicySetUsingExpression extends AlterRlsPolicyChange {
74
75
  return [this.policy.stableId];
75
76
  }
76
77
 
77
- serialize(): string {
78
+ serialize(_options?: SerializeOptions): string {
78
79
  const expr = this.usingExpression ?? "true";
79
80
  return [
80
81
  "ALTER POLICY",
@@ -108,7 +109,7 @@ export class AlterRlsPolicySetWithCheckExpression extends AlterRlsPolicyChange {
108
109
  return [this.policy.stableId];
109
110
  }
110
111
 
111
- serialize(): string {
112
+ serialize(_options?: SerializeOptions): string {
112
113
  const expr = this.withCheckExpression ?? "true";
113
114
  return [
114
115
  "ALTER POLICY",
@@ -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 { RlsPolicy } from "../rls-policy.model.ts";
@@ -27,7 +28,7 @@ export class CreateCommentOnRlsPolicy extends CreateRlsPolicyChange {
27
28
  return [this.policy.stableId];
28
29
  }
29
30
 
30
- serialize(): string {
31
+ serialize(_options?: SerializeOptions): string {
31
32
  return [
32
33
  "COMMENT ON POLICY",
33
34
  this.policy.name,
@@ -57,7 +58,7 @@ export class DropCommentOnRlsPolicy extends DropRlsPolicyChange {
57
58
  return [stableId.comment(this.policy.stableId), this.policy.stableId];
58
59
  }
59
60
 
60
- serialize(): string {
61
+ serialize(_options?: SerializeOptions): string {
61
62
  return [
62
63
  "COMMENT ON POLICY",
63
64
  this.policy.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 { RlsPolicy } from "../rls-policy.model.ts";
3
4
  import { CreateRlsPolicyChange } from "./rls-policy.base.ts";
@@ -47,7 +48,7 @@ export class CreateRlsPolicy extends CreateRlsPolicyChange {
47
48
  return Array.from(dependencies);
48
49
  }
49
50
 
50
- serialize(): string {
51
+ serialize(_options?: SerializeOptions): string {
51
52
  const parts: string[] = ["CREATE POLICY"];
52
53
 
53
54
  // Add policy name
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { RlsPolicy } from "../rls-policy.model.ts";
2
3
  import { DropRlsPolicyChange } from "./rls-policy.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropRlsPolicy extends DropRlsPolicyChange {
28
29
  return [this.policy.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return [
33
34
  "DROP POLICY",
34
35
  this.policy.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { formatConfigValue } from "../../procedure/utils.ts";
2
3
  import type { Role } from "../role.model.ts";
3
4
  import { AlterRoleChange } from "./role.base.ts";
@@ -56,7 +57,7 @@ export class AlterRoleSetOptions extends AlterRoleChange {
56
57
  return [this.role.stableId];
57
58
  }
58
59
 
59
- serialize(): string {
60
+ serialize(_options?: SerializeOptions): string {
60
61
  const parts: string[] = ["ALTER ROLE", this.role.name];
61
62
  return [...parts, "WITH", this.options.join(" ")].join(" ");
62
63
  }
@@ -93,7 +94,7 @@ export class AlterRoleSetConfig extends AlterRoleChange {
93
94
  return [this.role.stableId];
94
95
  }
95
96
 
96
- serialize(): string {
97
+ serialize(_options?: SerializeOptions): string {
97
98
  const head = ["ALTER ROLE", this.role.name].join(" ");
98
99
  if (this.action === "reset_all") {
99
100
  return `${head} RESET ALL`;
@@ -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 { Role } from "../role.model.ts";
@@ -22,7 +23,7 @@ export class CreateCommentOnRole extends CreateRoleChange {
22
23
  return [this.role.stableId];
23
24
  }
24
25
 
25
- serialize(): string {
26
+ serialize(_options?: SerializeOptions): string {
26
27
  return [
27
28
  "COMMENT ON ROLE",
28
29
  this.role.name,
@@ -49,7 +50,7 @@ export class DropCommentOnRole extends DropRoleChange {
49
50
  return [stableId.comment(this.role.stableId), this.role.stableId];
50
51
  }
51
52
 
52
- serialize(): string {
53
+ serialize(_options?: SerializeOptions): string {
53
54
  return ["COMMENT ON ROLE", this.role.name, "IS NULL"].join(" ");
54
55
  }
55
56
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Role } from "../role.model.ts";
2
3
  import { CreateRoleChange } from "./role.base.ts";
3
4
 
@@ -41,7 +42,7 @@ export class CreateRole extends CreateRoleChange {
41
42
  return [this.role.stableId];
42
43
  }
43
44
 
44
- serialize(): string {
45
+ serialize(_options?: SerializeOptions): string {
45
46
  const parts: string[] = ["CREATE ROLE"];
46
47
 
47
48
  // Add role name
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Role } from "../role.model.ts";
2
3
  import { DropRoleChange } from "./role.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropRole extends DropRoleChange {
28
29
  return [this.role.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return ["DROP ROLE", this.role.name].join(" ");
33
34
  }
34
35
  }