@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 type { Enum } from "../enum.model.ts";
2
3
  import { AlterEnumChange } from "./enum.base.ts";
3
4
  export type EnumPrivilege = GrantEnumPrivileges | RevokeEnumPrivileges | RevokeGrantOptionEnumPrivileges;
@@ -34,7 +35,7 @@ export declare class GrantEnumPrivileges extends AlterEnumChange {
34
35
  });
35
36
  get creates(): `acl:${string}::grantee:${string}`[];
36
37
  get requires(): (`role:${string}` | `type:${string}`)[];
37
- serialize(): string;
38
+ serialize(_options?: SerializeOptions): string;
38
39
  }
39
40
  /**
40
41
  * Revoke privileges on an enum type.
@@ -71,7 +72,7 @@ export declare class RevokeEnumPrivileges extends AlterEnumChange {
71
72
  });
72
73
  get drops(): `acl:${string}::grantee:${string}`[];
73
74
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
74
- serialize(): string;
75
+ serialize(_options?: SerializeOptions): string;
75
76
  }
76
77
  /**
77
78
  * Revoke grant option for privileges on an enum type.
@@ -93,5 +94,5 @@ export declare class RevokeGrantOptionEnumPrivileges extends AlterEnumChange {
93
94
  version?: number;
94
95
  });
95
96
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
96
- serialize(): string;
97
+ serialize(_options?: SerializeOptions): string;
97
98
  }
@@ -33,7 +33,7 @@ export class GrantEnumPrivileges extends AlterEnumChange {
33
33
  get requires() {
34
34
  return [this.enum.stableId, stableId.role(this.grantee)];
35
35
  }
36
- serialize() {
36
+ serialize(_options) {
37
37
  const hasGrantable = this.privileges.some((p) => p.grantable);
38
38
  const hasBase = this.privileges.some((p) => !p.grantable);
39
39
  if (hasGrantable && hasBase) {
@@ -87,7 +87,7 @@ export class RevokeEnumPrivileges extends AlterEnumChange {
87
87
  stableId.role(this.grantee),
88
88
  ];
89
89
  }
90
- serialize() {
90
+ serialize(_options) {
91
91
  const kindPrefix = getObjectKindPrefix("TYPE");
92
92
  const list = this.privileges.map((p) => p.privilege);
93
93
  const privSql = formatObjectPrivilegeList("TYPE", list, this.version);
@@ -122,7 +122,7 @@ export class RevokeGrantOptionEnumPrivileges extends AlterEnumChange {
122
122
  stableId.role(this.grantee),
123
123
  ];
124
124
  }
125
- serialize() {
125
+ serialize(_options) {
126
126
  const kindPrefix = getObjectKindPrefix("TYPE");
127
127
  const privSql = formatObjectPrivilegeList("TYPE", this.privilegeNames, this.version);
128
128
  const typeName = `${this.enum.schema}.${this.enum.name}`;
@@ -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
  /**
@@ -25,7 +26,7 @@ export declare class AlterRangeChangeOwner extends AlterRangeChange {
25
26
  owner: string;
26
27
  });
27
28
  get requires(): `type:${string}`[];
28
- serialize(): string;
29
+ serialize(_options?: SerializeOptions): string;
29
30
  }
30
31
  /**
31
32
  * Replace a range type by dropping and recreating it.
@@ -14,7 +14,7 @@ export class AlterRangeChangeOwner extends AlterRangeChange {
14
14
  get requires() {
15
15
  return [this.range.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "ALTER TYPE",
20
20
  `${this.range.schema}.${this.range.name}`,
@@ -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 { CreateRangeChange, DropRangeChange } from "./range.base.ts";
3
4
  /**
@@ -12,7 +13,7 @@ export declare class CreateCommentOnRange extends CreateRangeChange {
12
13
  });
13
14
  get creates(): `comment:${string}`[];
14
15
  get requires(): `type:${string}`[];
15
- serialize(): string;
16
+ serialize(_options?: SerializeOptions): string;
16
17
  }
17
18
  export declare class DropCommentOnRange extends DropRangeChange {
18
19
  readonly range: Range;
@@ -22,5 +23,5 @@ export declare class DropCommentOnRange extends DropRangeChange {
22
23
  });
23
24
  get drops(): `comment:${string}`[];
24
25
  get requires(): (`comment:${string}` | `type:${string}`)[];
25
- serialize(): string;
26
+ serialize(_options?: SerializeOptions): string;
26
27
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnRange extends CreateRangeChange {
14
14
  get requires() {
15
15
  return [this.range.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON TYPE",
20
20
  `${this.range.schema}.${this.range.name}`,
@@ -37,7 +37,7 @@ export class DropCommentOnRange extends DropRangeChange {
37
37
  get requires() {
38
38
  return [stableId.comment(this.range.stableId), this.range.stableId];
39
39
  }
40
- serialize() {
40
+ serialize(_options) {
41
41
  return [
42
42
  "COMMENT ON TYPE",
43
43
  `${this.range.schema}.${this.range.name}`,
@@ -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 { CreateRangeChange } from "./range.base.ts";
3
4
  /**
@@ -27,5 +28,5 @@ export declare class CreateRange extends CreateRangeChange {
27
28
  });
28
29
  get creates(): `type:${string}`[];
29
30
  get requires(): string[];
30
- serialize(): string;
31
+ serialize(_options?: SerializeOptions): string;
31
32
  }
@@ -70,7 +70,7 @@ export class CreateRange extends CreateRangeChange {
70
70
  }
71
71
  return Array.from(dependencies);
72
72
  }
73
- serialize() {
73
+ serialize(_options) {
74
74
  const name = `${this.range.schema}.${this.range.name}`;
75
75
  const prefix = ["CREATE TYPE", name, "AS RANGE"].join(" ");
76
76
  const opts = [];
@@ -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
  /**
@@ -18,5 +19,5 @@ export declare class DropRange extends DropRangeChange {
18
19
  });
19
20
  get drops(): `type:${string}`[];
20
21
  get requires(): `type:${string}`[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -22,7 +22,7 @@ export class DropRange extends DropRangeChange {
22
22
  get requires() {
23
23
  return [this.range.stableId];
24
24
  }
25
- serialize() {
25
+ serialize(_options) {
26
26
  return ["DROP TYPE", `${this.range.schema}.${this.range.name}`].join(" ");
27
27
  }
28
28
  }
@@ -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
  export type RangePrivilege = GrantRangePrivileges | RevokeRangePrivileges | RevokeGrantOptionRangePrivileges;
@@ -34,7 +35,7 @@ export declare class GrantRangePrivileges extends AlterRangeChange {
34
35
  });
35
36
  get creates(): `acl:${string}::grantee:${string}`[];
36
37
  get requires(): (`role:${string}` | `type:${string}`)[];
37
- serialize(): string;
38
+ serialize(_options?: SerializeOptions): string;
38
39
  }
39
40
  /**
40
41
  * Revoke privileges on a range type.
@@ -71,7 +72,7 @@ export declare class RevokeRangePrivileges extends AlterRangeChange {
71
72
  });
72
73
  get drops(): `acl:${string}::grantee:${string}`[];
73
74
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
74
- serialize(): string;
75
+ serialize(_options?: SerializeOptions): string;
75
76
  }
76
77
  /**
77
78
  * Revoke grant option for privileges on a range type.
@@ -93,5 +94,5 @@ export declare class RevokeGrantOptionRangePrivileges extends AlterRangeChange {
93
94
  version?: number;
94
95
  });
95
96
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
96
- serialize(): string;
97
+ serialize(_options?: SerializeOptions): string;
97
98
  }
@@ -33,7 +33,7 @@ export class GrantRangePrivileges extends AlterRangeChange {
33
33
  get requires() {
34
34
  return [this.range.stableId, stableId.role(this.grantee)];
35
35
  }
36
- serialize() {
36
+ serialize(_options) {
37
37
  const hasGrantable = this.privileges.some((p) => p.grantable);
38
38
  const hasBase = this.privileges.some((p) => !p.grantable);
39
39
  if (hasGrantable && hasBase) {
@@ -87,7 +87,7 @@ export class RevokeRangePrivileges extends AlterRangeChange {
87
87
  stableId.role(this.grantee),
88
88
  ];
89
89
  }
90
- serialize() {
90
+ serialize(_options) {
91
91
  const kindPrefix = getObjectKindPrefix("TYPE");
92
92
  const list = this.privileges.map((p) => p.privilege);
93
93
  const privSql = formatObjectPrivilegeList("TYPE", list, this.version);
@@ -122,7 +122,7 @@ export class RevokeGrantOptionRangePrivileges extends AlterRangeChange {
122
122
  stableId.role(this.grantee),
123
123
  ];
124
124
  }
125
- serialize() {
125
+ serialize(_options) {
126
126
  const kindPrefix = getObjectKindPrefix("TYPE");
127
127
  const privSql = formatObjectPrivilegeList("TYPE", this.privilegeNames, this.version);
128
128
  const typeName = `${this.range.schema}.${this.range.name}`;
@@ -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
  /**
@@ -30,7 +31,7 @@ export declare class AlterViewChangeOwner extends AlterViewChange {
30
31
  owner: string;
31
32
  });
32
33
  get requires(): `view:${string}`[];
33
- serialize(): string;
34
+ serialize(_options?: SerializeOptions): string;
34
35
  }
35
36
  /**
36
37
  * ALTER VIEW ... SET ( ... )
@@ -44,7 +45,7 @@ export declare class AlterViewSetOptions extends AlterViewChange {
44
45
  options: string[];
45
46
  });
46
47
  get requires(): `view:${string}`[];
47
- serialize(): string;
48
+ serialize(_options?: SerializeOptions): string;
48
49
  }
49
50
  /**
50
51
  * ALTER VIEW ... RESET ( ... )
@@ -58,5 +59,5 @@ export declare class AlterViewResetOptions extends AlterViewChange {
58
59
  params: string[];
59
60
  });
60
61
  get requires(): `view:${string}`[];
61
- serialize(): string;
62
+ serialize(_options?: SerializeOptions): string;
62
63
  }
@@ -14,7 +14,7 @@ export class AlterViewChangeOwner extends AlterViewChange {
14
14
  get requires() {
15
15
  return [this.view.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "ALTER VIEW",
20
20
  `${this.view.schema}.${this.view.name}`,
@@ -39,7 +39,7 @@ export class AlterViewSetOptions extends AlterViewChange {
39
39
  get requires() {
40
40
  return [this.view.stableId];
41
41
  }
42
- serialize() {
42
+ serialize(_options) {
43
43
  const opts = this.options.join(", ");
44
44
  return [
45
45
  "ALTER VIEW",
@@ -64,7 +64,7 @@ export class AlterViewResetOptions extends AlterViewChange {
64
64
  get requires() {
65
65
  return [this.view.stableId];
66
66
  }
67
- serialize() {
67
+ serialize(_options) {
68
68
  return [
69
69
  "ALTER VIEW",
70
70
  `${this.view.schema}.${this.view.name}`,
@@ -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 { CreateViewChange, DropViewChange } from "./view.base.ts";
3
4
  export type CommentView = CreateCommentOnView | DropCommentOnView;
@@ -9,7 +10,7 @@ export declare class CreateCommentOnView extends CreateViewChange {
9
10
  });
10
11
  get creates(): `comment:${string}`[];
11
12
  get requires(): `view:${string}`[];
12
- serialize(): string;
13
+ serialize(_options?: SerializeOptions): string;
13
14
  }
14
15
  export declare class DropCommentOnView extends DropViewChange {
15
16
  readonly view: View;
@@ -19,5 +20,5 @@ export declare class DropCommentOnView extends DropViewChange {
19
20
  });
20
21
  get drops(): `comment:${string}`[];
21
22
  get requires(): (`comment:${string}` | `view:${string}`)[];
22
- serialize(): string;
23
+ serialize(_options?: SerializeOptions): string;
23
24
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnView extends CreateViewChange {
14
14
  get requires() {
15
15
  return [this.view.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON VIEW",
20
20
  `${this.view.schema}.${this.view.name}`,
@@ -36,7 +36,7 @@ export class DropCommentOnView extends DropViewChange {
36
36
  get requires() {
37
37
  return [stableId.comment(this.view.stableId), this.view.stableId];
38
38
  }
39
- serialize() {
39
+ serialize(_options) {
40
40
  return [
41
41
  "COMMENT ON VIEW",
42
42
  `${this.view.schema}.${this.view.name}`,
@@ -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 { CreateViewChange } from "./view.base.ts";
3
4
  /**
@@ -23,5 +24,5 @@ export declare class CreateView extends CreateViewChange {
23
24
  });
24
25
  get creates(): (`column:${string}.${string}.${string}` | `view:${string}`)[];
25
26
  get requires(): string[];
26
- serialize(): string;
27
+ serialize(_options?: SerializeOptions): string;
27
28
  }
@@ -40,7 +40,7 @@ export class CreateView extends CreateViewChange {
40
40
  // for those dependencies.
41
41
  return Array.from(dependencies);
42
42
  }
43
- serialize() {
43
+ serialize(_options) {
44
44
  const parts = [
45
45
  `CREATE${this.orReplace ? " OR REPLACE" : ""} VIEW`,
46
46
  ];
@@ -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 { DropViewChange } from "./view.base.ts";
3
4
  /**
@@ -13,5 +14,5 @@ export declare class DropView extends DropViewChange {
13
14
  });
14
15
  get drops(): (`column:${string}.${string}.${string}` | `view:${string}`)[];
15
16
  get requires(): (`column:${string}.${string}.${string}` | `view:${string}`)[];
16
- serialize(): string;
17
+ serialize(_options?: SerializeOptions): string;
17
18
  }
@@ -24,7 +24,7 @@ export class DropView extends DropViewChange {
24
24
  ...this.view.columns.map((column) => stableId.column(this.view.schema, this.view.name, column.name)),
25
25
  ];
26
26
  }
27
- serialize() {
27
+ serialize(_options) {
28
28
  return ["DROP VIEW", `${this.view.schema}.${this.view.name}`].join(" ");
29
29
  }
30
30
  }
@@ -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
  export type ViewPrivilege = GrantViewPrivileges | RevokeViewPrivileges | RevokeGrantOptionViewPrivileges;
@@ -38,7 +39,7 @@ export declare class GrantViewPrivileges extends AlterViewChange {
38
39
  });
39
40
  get creates(): `acl:${string}::grantee:${string}`[];
40
41
  get requires(): (`role:${string}` | `view:${string}`)[];
41
- serialize(): string;
42
+ serialize(_options?: SerializeOptions): string;
42
43
  }
43
44
  /**
44
45
  * Revoke privileges on a view.
@@ -79,7 +80,7 @@ export declare class RevokeViewPrivileges extends AlterViewChange {
79
80
  });
80
81
  get drops(): `acl:${string}::grantee:${string}`[];
81
82
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `view:${string}`)[];
82
- serialize(): string;
83
+ serialize(_options?: SerializeOptions): string;
83
84
  }
84
85
  /**
85
86
  * Revoke grant option for privileges on a view.
@@ -103,5 +104,5 @@ export declare class RevokeGrantOptionViewPrivileges extends AlterViewChange {
103
104
  version?: number;
104
105
  });
105
106
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `view:${string}`)[];
106
- serialize(): string;
107
+ serialize(_options?: SerializeOptions): string;
107
108
  }
@@ -37,7 +37,7 @@ export class GrantViewPrivileges extends AlterViewChange {
37
37
  get requires() {
38
38
  return [this.view.stableId, stableId.role(this.grantee)];
39
39
  }
40
- serialize() {
40
+ serialize(_options) {
41
41
  const hasGrantable = this.privileges.some((p) => p.grantable);
42
42
  const hasBase = this.privileges.some((p) => !p.grantable);
43
43
  if (hasGrantable && hasBase) {
@@ -98,7 +98,7 @@ export class RevokeViewPrivileges extends AlterViewChange {
98
98
  stableId.role(this.grantee),
99
99
  ];
100
100
  }
101
- serialize() {
101
+ serialize(_options) {
102
102
  const kindPrefix = getObjectKindPrefix("VIEW");
103
103
  const list = this.privileges.map((p) => p.privilege);
104
104
  const privSql = formatObjectPrivilegeList("VIEW", list, this.version);
@@ -138,7 +138,7 @@ export class RevokeGrantOptionViewPrivileges extends AlterViewChange {
138
138
  stableId.role(this.grantee),
139
139
  ];
140
140
  }
141
- serialize() {
141
+ serialize(_options) {
142
142
  const kindPrefix = getObjectKindPrefix("VIEW");
143
143
  const privSql = formatObjectPrivilegeList("VIEW", this.privilegeNames, this.version);
144
144
  const viewName = `${this.view.schema}.${this.view.name}`;
@@ -1,5 +1,6 @@
1
1
  import { getSchema } from "../change-utils.js";
2
2
  import { GrantRoleDefaultPrivileges, RevokeRoleDefaultPrivileges, } from "../objects/role/changes/role.privilege.js";
3
+ import { AlterTableAlterColumnAddIdentity, AlterTableAlterColumnDropDefault, AlterTableAlterColumnDropIdentity, AlterTableAlterColumnSetDefault, } from "../objects/table/changes/table.alter.js";
3
4
  /**
4
5
  * Maps object type names to PostgreSQL default privilege objtype codes.
5
6
  * This mirrors the mapping in base.default-privileges.ts.
@@ -116,11 +117,74 @@ function generateDefaultPrivilegeConstraints(changes) {
116
117
  }
117
118
  return constraints;
118
119
  }
120
+ function generateIdentityTransitionConstraints(changes) {
121
+ const constraints = [];
122
+ const dropDefaultByColumn = new Map();
123
+ const dropIdentityByColumn = new Map();
124
+ const addIdentityByColumn = new Map();
125
+ const setDefaultByColumn = new Map();
126
+ for (let i = 0; i < changes.length; i++) {
127
+ const change = changes[i];
128
+ const columnKey = "table" in change && "column" in change
129
+ ? `${change.table.schema}.${change.table.name}.${change.column.name}`
130
+ : null;
131
+ if (!columnKey)
132
+ continue;
133
+ if (change instanceof AlterTableAlterColumnDropDefault) {
134
+ const entries = dropDefaultByColumn.get(columnKey) ?? [];
135
+ entries.push(i);
136
+ dropDefaultByColumn.set(columnKey, entries);
137
+ }
138
+ else if (change instanceof AlterTableAlterColumnAddIdentity) {
139
+ const entries = addIdentityByColumn.get(columnKey) ?? [];
140
+ entries.push(i);
141
+ addIdentityByColumn.set(columnKey, entries);
142
+ }
143
+ else if (change instanceof AlterTableAlterColumnDropIdentity) {
144
+ const entries = dropIdentityByColumn.get(columnKey) ?? [];
145
+ entries.push(i);
146
+ dropIdentityByColumn.set(columnKey, entries);
147
+ }
148
+ else if (change instanceof AlterTableAlterColumnSetDefault) {
149
+ const entries = setDefaultByColumn.get(columnKey) ?? [];
150
+ entries.push(i);
151
+ setDefaultByColumn.set(columnKey, entries);
152
+ }
153
+ }
154
+ // These rules only order same-column ALTERs inside the create/alter phase.
155
+ // Sequence drops are handled separately in the earlier drop phase.
156
+ for (const [columnKey, dropDefaultIndexes] of dropDefaultByColumn) {
157
+ const addIdentityIndexes = addIdentityByColumn.get(columnKey) ?? [];
158
+ for (const sourceIndex of dropDefaultIndexes) {
159
+ for (const targetIndex of addIdentityIndexes) {
160
+ constraints.push({
161
+ sourceChangeIndex: sourceIndex,
162
+ targetChangeIndex: targetIndex,
163
+ source: "custom",
164
+ });
165
+ }
166
+ }
167
+ }
168
+ for (const [columnKey, dropIdentityIndexes] of dropIdentityByColumn) {
169
+ const setDefaultIndexes = setDefaultByColumn.get(columnKey) ?? [];
170
+ for (const sourceIndex of dropIdentityIndexes) {
171
+ for (const targetIndex of setDefaultIndexes) {
172
+ constraints.push({
173
+ sourceChangeIndex: sourceIndex,
174
+ targetChangeIndex: targetIndex,
175
+ source: "custom",
176
+ });
177
+ }
178
+ }
179
+ }
180
+ return constraints;
181
+ }
119
182
  /**
120
183
  * All custom constraint generators.
121
184
  */
122
185
  const customConstraintGenerators = [
123
186
  generateDefaultPrivilegeConstraints,
187
+ generateIdentityTransitionConstraints,
124
188
  ];
125
189
  /**
126
190
  * Generate Constraints from custom constraint generators.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supabase/pg-delta",
3
- "version": "1.0.0-alpha.11",
3
+ "version": "1.0.0-alpha.12",
4
4
  "description": "PostgreSQL migrations made easy",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -1,7 +1,16 @@
1
1
  import { describe, expect, test } from "bun:test";
2
- import { createEmptyCatalog } from "./catalog.model.ts";
2
+ import { Catalog, createEmptyCatalog } from "./catalog.model.ts";
3
3
  import type { Change } from "./change.types.ts";
4
4
  import { expandReplaceDependencies } from "./expand-replace-dependencies.ts";
5
+ import { DefaultPrivilegeState } from "./objects/base.default-privileges.ts";
6
+ import { CreateSequence } from "./objects/sequence/changes/sequence.create.ts";
7
+ import { DropSequence } from "./objects/sequence/changes/sequence.drop.ts";
8
+ import { diffSequences } from "./objects/sequence/sequence.diff.ts";
9
+ import { Sequence } from "./objects/sequence/sequence.model.ts";
10
+ import { AlterTableAlterColumnSetDefault } from "./objects/table/changes/table.alter.ts";
11
+ import { CreateTable } from "./objects/table/changes/table.create.ts";
12
+ import { DropTable } from "./objects/table/changes/table.drop.ts";
13
+ import { Table } from "./objects/table/table.model.ts";
5
14
 
6
15
  function mockChange(overrides: {
7
16
  creates?: string[];
@@ -67,4 +76,120 @@ describe("expandReplaceDependencies", () => {
67
76
  });
68
77
  expect(result).toBe(changes);
69
78
  });
79
+
80
+ test("does not replace the owning table for an owned sequence recreation", async () => {
81
+ const baseline = await createEmptyCatalog(170000, "postgres");
82
+ const mainSequence = new Sequence({
83
+ schema: "public",
84
+ name: "user_id_seq",
85
+ data_type: "integer",
86
+ start_value: 1,
87
+ minimum_value: 1n,
88
+ maximum_value: 2147483647n,
89
+ increment: 1,
90
+ cycle_option: false,
91
+ cache_size: 1,
92
+ persistence: "p",
93
+ owned_by_schema: "public",
94
+ owned_by_table: "users",
95
+ owned_by_column: "id",
96
+ comment: null,
97
+ privileges: [],
98
+ owner: "postgres",
99
+ });
100
+ const branchSequence = new Sequence({
101
+ ...mainSequence,
102
+ data_type: "bigint",
103
+ maximum_value: 9223372036854775807n,
104
+ });
105
+ const usersTable = new Table({
106
+ schema: "public",
107
+ name: "users",
108
+ persistence: "p",
109
+ row_security: false,
110
+ force_row_security: false,
111
+ has_indexes: false,
112
+ has_rules: false,
113
+ has_triggers: false,
114
+ has_subclasses: false,
115
+ is_populated: true,
116
+ replica_identity: "d",
117
+ is_partition: false,
118
+ options: null,
119
+ partition_bound: null,
120
+ partition_by: null,
121
+ owner: "postgres",
122
+ comment: null,
123
+ parent_schema: null,
124
+ parent_name: null,
125
+ columns: [
126
+ {
127
+ name: "id",
128
+ position: 1,
129
+ data_type: "bigint",
130
+ data_type_str: "bigint",
131
+ is_custom_type: false,
132
+ custom_type_type: null,
133
+ custom_type_category: null,
134
+ custom_type_schema: null,
135
+ custom_type_name: null,
136
+ not_null: true,
137
+ is_identity: false,
138
+ is_identity_always: false,
139
+ is_generated: false,
140
+ collation: null,
141
+ default: "nextval('public.user_id_seq'::regclass)",
142
+ comment: null,
143
+ },
144
+ ],
145
+ privileges: [],
146
+ });
147
+ const changes = diffSequences(
148
+ {
149
+ version: 170000,
150
+ currentUser: "postgres",
151
+ defaultPrivilegeState: new DefaultPrivilegeState({}),
152
+ },
153
+ { [mainSequence.stableId]: mainSequence },
154
+ { [branchSequence.stableId]: branchSequence },
155
+ { [usersTable.stableId]: usersTable },
156
+ );
157
+ const mainCatalog = new Catalog({
158
+ ...baseline,
159
+ sequences: { [mainSequence.stableId]: mainSequence },
160
+ tables: { [usersTable.stableId]: usersTable },
161
+ depends: [
162
+ {
163
+ dependent_stable_id: mainSequence.stableId,
164
+ referenced_stable_id: "column:public.users.id",
165
+ deptype: "a",
166
+ },
167
+ {
168
+ dependent_stable_id: "column:public.users.id",
169
+ referenced_stable_id: mainSequence.stableId,
170
+ deptype: "n",
171
+ },
172
+ ],
173
+ });
174
+ const branchCatalog = new Catalog({
175
+ ...baseline,
176
+ sequences: { [branchSequence.stableId]: branchSequence },
177
+ tables: { [usersTable.stableId]: usersTable },
178
+ depends: [],
179
+ });
180
+
181
+ const expanded = expandReplaceDependencies({
182
+ changes,
183
+ mainCatalog,
184
+ branchCatalog,
185
+ });
186
+
187
+ expect(changes[0]).toBeInstanceOf(DropSequence);
188
+ expect(changes[1]).toBeInstanceOf(CreateSequence);
189
+ expect(changes[3]).toBeInstanceOf(AlterTableAlterColumnSetDefault);
190
+ expect(expanded.some((change) => change instanceof DropTable)).toBe(false);
191
+ expect(expanded.some((change) => change instanceof CreateTable)).toBe(
192
+ false,
193
+ );
194
+ });
70
195
  });