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

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 (567) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/cli/app.d.ts +1 -0
  4. package/dist/cli/app.js +26 -0
  5. package/dist/cli/bin/cli.d.ts +2 -0
  6. package/dist/cli/bin/cli.js +7 -0
  7. package/dist/cli/commands/apply.d.ts +5 -0
  8. package/dist/cli/commands/apply.js +85 -0
  9. package/dist/cli/commands/plan.d.ts +5 -0
  10. package/dist/cli/commands/plan.js +137 -0
  11. package/dist/cli/commands/sync.d.ts +5 -0
  12. package/dist/cli/commands/sync.js +141 -0
  13. package/dist/cli/formatters/index.d.ts +4 -0
  14. package/dist/cli/formatters/index.js +4 -0
  15. package/dist/cli/formatters/tree/tree-builder.d.ts +10 -0
  16. package/dist/cli/formatters/tree/tree-builder.js +333 -0
  17. package/dist/cli/formatters/tree/tree-renderer.d.ts +45 -0
  18. package/dist/cli/formatters/tree/tree-renderer.js +303 -0
  19. package/dist/cli/formatters/tree/tree.d.ts +8 -0
  20. package/dist/cli/formatters/tree/tree.js +161 -0
  21. package/dist/cli/utils/integrations.d.ts +13 -0
  22. package/dist/cli/utils/integrations.js +35 -0
  23. package/dist/cli/utils.d.ts +64 -0
  24. package/dist/cli/utils.js +160 -0
  25. package/dist/core/catalog.diff.d.ts +5 -0
  26. package/dist/core/catalog.diff.js +147 -0
  27. package/dist/core/catalog.model.d.ts +93 -0
  28. package/dist/core/catalog.model.js +254 -0
  29. package/dist/core/change.types.d.ts +22 -0
  30. package/dist/core/change.types.js +1 -0
  31. package/dist/core/context.d.ts +11 -0
  32. package/dist/core/context.js +12 -0
  33. package/dist/core/depend.d.ts +31 -0
  34. package/dist/core/depend.js +1833 -0
  35. package/dist/core/expand-replace-dependencies.d.ts +14 -0
  36. package/dist/core/expand-replace-dependencies.js +280 -0
  37. package/dist/core/fingerprint.d.ts +23 -0
  38. package/dist/core/fingerprint.js +174 -0
  39. package/dist/core/index.d.ts +15 -0
  40. package/dist/core/index.js +14 -0
  41. package/dist/core/integrations/filter/dsl.d.ts +97 -0
  42. package/dist/core/integrations/filter/dsl.js +107 -0
  43. package/dist/core/integrations/filter/extractors.d.ts +12 -0
  44. package/dist/core/integrations/filter/extractors.js +136 -0
  45. package/dist/core/integrations/integration-dsl.d.ts +22 -0
  46. package/dist/core/integrations/integration-dsl.js +6 -0
  47. package/dist/core/integrations/integration.types.d.ts +5 -0
  48. package/dist/core/integrations/integration.types.js +1 -0
  49. package/dist/core/integrations/serialize/dsl.d.ts +58 -0
  50. package/dist/core/integrations/serialize/dsl.js +42 -0
  51. package/dist/core/main.d.ts +5 -0
  52. package/dist/core/main.js +44 -0
  53. package/dist/core/objects/aggregate/aggregate.diff.d.ts +10 -0
  54. package/dist/core/objects/aggregate/aggregate.diff.js +186 -0
  55. package/dist/core/objects/aggregate/aggregate.model.d.ts +174 -0
  56. package/dist/core/objects/aggregate/aggregate.model.js +297 -0
  57. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +19 -0
  58. package/dist/core/objects/aggregate/changes/aggregate.alter.js +25 -0
  59. package/dist/core/objects/aggregate/changes/aggregate.base.d.ts +17 -0
  60. package/dist/core/objects/aggregate/changes/aggregate.base.js +13 -0
  61. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +23 -0
  62. package/dist/core/objects/aggregate/changes/aggregate.comment.js +44 -0
  63. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +19 -0
  64. package/dist/core/objects/aggregate/changes/aggregate.create.js +228 -0
  65. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +17 -0
  66. package/dist/core/objects/aggregate/changes/aggregate.drop.js +26 -0
  67. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +62 -0
  68. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +102 -0
  69. package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +6 -0
  70. package/dist/core/objects/aggregate/changes/aggregate.types.js +1 -0
  71. package/dist/core/objects/base.change.d.ts +46 -0
  72. package/dist/core/objects/base.change.js +38 -0
  73. package/dist/core/objects/base.default-privileges.d.ts +29 -0
  74. package/dist/core/objects/base.default-privileges.js +167 -0
  75. package/dist/core/objects/base.diff.d.ts +6 -0
  76. package/dist/core/objects/base.diff.js +12 -0
  77. package/dist/core/objects/base.model.d.ts +74 -0
  78. package/dist/core/objects/base.model.js +47 -0
  79. package/dist/core/objects/base.privilege-diff.d.ts +54 -0
  80. package/dist/core/objects/base.privilege-diff.js +216 -0
  81. package/dist/core/objects/base.privilege.d.ts +27 -0
  82. package/dist/core/objects/base.privilege.js +169 -0
  83. package/dist/core/objects/collation/changes/collation.alter.d.ts +45 -0
  84. package/dist/core/objects/collation/changes/collation.alter.js +52 -0
  85. package/dist/core/objects/collation/changes/collation.base.d.ts +17 -0
  86. package/dist/core/objects/collation/changes/collation.base.js +13 -0
  87. package/dist/core/objects/collation/changes/collation.comment.d.ts +26 -0
  88. package/dist/core/objects/collation/changes/collation.comment.js +50 -0
  89. package/dist/core/objects/collation/changes/collation.create.d.ts +32 -0
  90. package/dist/core/objects/collation/changes/collation.create.js +86 -0
  91. package/dist/core/objects/collation/changes/collation.drop.d.ts +22 -0
  92. package/dist/core/objects/collation/changes/collation.drop.js +31 -0
  93. package/dist/core/objects/collation/changes/collation.types.d.ts +5 -0
  94. package/dist/core/objects/collation/changes/collation.types.js +1 -0
  95. package/dist/core/objects/collation/collation.diff.d.ts +13 -0
  96. package/dist/core/objects/collation/collation.diff.js +85 -0
  97. package/dist/core/objects/collation/collation.model.d.ts +67 -0
  98. package/dist/core/objects/collation/collation.model.js +207 -0
  99. package/dist/core/objects/domain/changes/domain.alter.d.ts +143 -0
  100. package/dist/core/objects/domain/changes/domain.alter.js +191 -0
  101. package/dist/core/objects/domain/changes/domain.base.d.ts +17 -0
  102. package/dist/core/objects/domain/changes/domain.base.js +13 -0
  103. package/dist/core/objects/domain/changes/domain.comment.d.ts +25 -0
  104. package/dist/core/objects/domain/changes/domain.comment.js +47 -0
  105. package/dist/core/objects/domain/changes/domain.create.d.ts +30 -0
  106. package/dist/core/objects/domain/changes/domain.create.js +92 -0
  107. package/dist/core/objects/domain/changes/domain.drop.d.ts +22 -0
  108. package/dist/core/objects/domain/changes/domain.drop.js +28 -0
  109. package/dist/core/objects/domain/changes/domain.privilege.d.ts +97 -0
  110. package/dist/core/objects/domain/changes/domain.privilege.js +127 -0
  111. package/dist/core/objects/domain/changes/domain.types.d.ts +6 -0
  112. package/dist/core/objects/domain/changes/domain.types.js +1 -0
  113. package/dist/core/objects/domain/domain.diff.d.ts +18 -0
  114. package/dist/core/objects/domain/domain.diff.js +244 -0
  115. package/dist/core/objects/domain/domain.model.d.ts +103 -0
  116. package/dist/core/objects/domain/domain.model.js +172 -0
  117. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +44 -0
  118. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +51 -0
  119. package/dist/core/objects/event-trigger/changes/event-trigger.base.d.ts +17 -0
  120. package/dist/core/objects/event-trigger/changes/event-trigger.base.js +13 -0
  121. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +23 -0
  122. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +46 -0
  123. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +25 -0
  124. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +55 -0
  125. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +22 -0
  126. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +28 -0
  127. package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +5 -0
  128. package/dist/core/objects/event-trigger/changes/event-trigger.types.js +1 -0
  129. package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +13 -0
  130. package/dist/core/objects/event-trigger/event-trigger.diff.js +81 -0
  131. package/dist/core/objects/event-trigger/event-trigger.model.d.ts +45 -0
  132. package/dist/core/objects/event-trigger/event-trigger.model.js +89 -0
  133. package/dist/core/objects/extension/changes/extension.alter.d.ts +44 -0
  134. package/dist/core/objects/extension/changes/extension.alter.js +51 -0
  135. package/dist/core/objects/extension/changes/extension.base.d.ts +17 -0
  136. package/dist/core/objects/extension/changes/extension.base.js +13 -0
  137. package/dist/core/objects/extension/changes/extension.comment.d.ts +26 -0
  138. package/dist/core/objects/extension/changes/extension.comment.js +46 -0
  139. package/dist/core/objects/extension/changes/extension.create.d.ts +25 -0
  140. package/dist/core/objects/extension/changes/extension.create.js +49 -0
  141. package/dist/core/objects/extension/changes/extension.drop.d.ts +22 -0
  142. package/dist/core/objects/extension/changes/extension.drop.js +28 -0
  143. package/dist/core/objects/extension/changes/extension.types.d.ts +5 -0
  144. package/dist/core/objects/extension/changes/extension.types.js +1 -0
  145. package/dist/core/objects/extension/extension.diff.d.ts +10 -0
  146. package/dist/core/objects/extension/extension.diff.js +65 -0
  147. package/dist/core/objects/extension/extension.model.d.ts +52 -0
  148. package/dist/core/objects/extension/extension.model.js +268 -0
  149. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +51 -0
  150. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +61 -0
  151. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.d.ts +17 -0
  152. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.js +13 -0
  153. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +26 -0
  154. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +50 -0
  155. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +25 -0
  156. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +78 -0
  157. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +22 -0
  158. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +28 -0
  159. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +97 -0
  160. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +123 -0
  161. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +6 -0
  162. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.js +1 -0
  163. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +18 -0
  164. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +221 -0
  165. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +59 -0
  166. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +128 -0
  167. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +5 -0
  168. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.js +1 -0
  169. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +163 -0
  170. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +248 -0
  171. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.d.ts +17 -0
  172. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.js +13 -0
  173. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +26 -0
  174. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +50 -0
  175. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +25 -0
  176. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +64 -0
  177. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +22 -0
  178. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +31 -0
  179. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +97 -0
  180. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +129 -0
  181. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +6 -0
  182. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.js +1 -0
  183. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +18 -0
  184. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +268 -0
  185. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +117 -0
  186. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +215 -0
  187. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +65 -0
  188. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +84 -0
  189. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.d.ts +17 -0
  190. package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.js +13 -0
  191. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +26 -0
  192. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +43 -0
  193. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +24 -0
  194. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +62 -0
  195. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +22 -0
  196. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +28 -0
  197. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +97 -0
  198. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +123 -0
  199. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +6 -0
  200. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.js +1 -0
  201. package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +18 -0
  202. package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +209 -0
  203. package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +62 -0
  204. package/dist/core/objects/foreign-data-wrapper/server/server.model.js +118 -0
  205. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +37 -0
  206. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +38 -0
  207. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.d.ts +17 -0
  208. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.js +13 -0
  209. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +24 -0
  210. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +52 -0
  211. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +23 -0
  212. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +34 -0
  213. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +4 -0
  214. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.js +1 -0
  215. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.d.ts +10 -0
  216. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.js +77 -0
  217. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +36 -0
  218. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +85 -0
  219. package/dist/core/objects/index/changes/index.alter.d.ts +76 -0
  220. package/dist/core/objects/index/changes/index.alter.js +94 -0
  221. package/dist/core/objects/index/changes/index.base.d.ts +17 -0
  222. package/dist/core/objects/index/changes/index.base.js +13 -0
  223. package/dist/core/objects/index/changes/index.comment.d.ts +26 -0
  224. package/dist/core/objects/index/changes/index.comment.js +50 -0
  225. package/dist/core/objects/index/changes/index.create.d.ts +30 -0
  226. package/dist/core/objects/index/changes/index.create.js +53 -0
  227. package/dist/core/objects/index/changes/index.drop.d.ts +22 -0
  228. package/dist/core/objects/index/changes/index.drop.js +28 -0
  229. package/dist/core/objects/index/changes/index.types.d.ts +5 -0
  230. package/dist/core/objects/index/changes/index.types.js +1 -0
  231. package/dist/core/objects/index/changes/utils.d.ts +3 -0
  232. package/dist/core/objects/index/changes/utils.js +6 -0
  233. package/dist/core/objects/index/index.diff.d.ts +12 -0
  234. package/dist/core/objects/index/index.diff.js +182 -0
  235. package/dist/core/objects/index/index.model.d.ts +150 -0
  236. package/dist/core/objects/index/index.model.js +340 -0
  237. package/dist/core/objects/language/changes/language.alter.d.ts +32 -0
  238. package/dist/core/objects/language/changes/language.alter.js +30 -0
  239. package/dist/core/objects/language/changes/language.base.d.ts +17 -0
  240. package/dist/core/objects/language/changes/language.base.js +13 -0
  241. package/dist/core/objects/language/changes/language.comment.d.ts +26 -0
  242. package/dist/core/objects/language/changes/language.comment.js +45 -0
  243. package/dist/core/objects/language/changes/language.create.d.ts +25 -0
  244. package/dist/core/objects/language/changes/language.create.js +76 -0
  245. package/dist/core/objects/language/changes/language.drop.d.ts +22 -0
  246. package/dist/core/objects/language/changes/language.drop.js +31 -0
  247. package/dist/core/objects/language/changes/language.privilege.d.ts +97 -0
  248. package/dist/core/objects/language/changes/language.privilege.js +128 -0
  249. package/dist/core/objects/language/changes/language.types.d.ts +6 -0
  250. package/dist/core/objects/language/changes/language.types.js +1 -0
  251. package/dist/core/objects/language/language.diff.d.ts +15 -0
  252. package/dist/core/objects/language/language.diff.js +117 -0
  253. package/dist/core/objects/language/language.model.d.ts +62 -0
  254. package/dist/core/objects/language/language.model.js +128 -0
  255. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +67 -0
  256. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +63 -0
  257. package/dist/core/objects/materialized-view/changes/materialized-view.base.d.ts +17 -0
  258. package/dist/core/objects/materialized-view/changes/materialized-view.base.js +13 -0
  259. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +53 -0
  260. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +112 -0
  261. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +35 -0
  262. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +71 -0
  263. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +26 -0
  264. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +42 -0
  265. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +105 -0
  266. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +151 -0
  267. package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +6 -0
  268. package/dist/core/objects/materialized-view/changes/materialized-view.types.js +1 -0
  269. package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +18 -0
  270. package/dist/core/objects/materialized-view/materialized-view.diff.js +335 -0
  271. package/dist/core/objects/materialized-view/materialized-view.model.d.ts +152 -0
  272. package/dist/core/objects/materialized-view/materialized-view.model.js +228 -0
  273. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +143 -0
  274. package/dist/core/objects/procedure/changes/procedure.alter.js +207 -0
  275. package/dist/core/objects/procedure/changes/procedure.base.d.ts +17 -0
  276. package/dist/core/objects/procedure/changes/procedure.base.js +13 -0
  277. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +26 -0
  278. package/dist/core/objects/procedure/changes/procedure.comment.js +52 -0
  279. package/dist/core/objects/procedure/changes/procedure.create.d.ts +42 -0
  280. package/dist/core/objects/procedure/changes/procedure.create.js +77 -0
  281. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +23 -0
  282. package/dist/core/objects/procedure/changes/procedure.drop.js +37 -0
  283. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +98 -0
  284. package/dist/core/objects/procedure/changes/procedure.privilege.js +144 -0
  285. package/dist/core/objects/procedure/changes/procedure.types.d.ts +6 -0
  286. package/dist/core/objects/procedure/changes/procedure.types.js +1 -0
  287. package/dist/core/objects/procedure/procedure.diff.d.ts +18 -0
  288. package/dist/core/objects/procedure/procedure.diff.js +282 -0
  289. package/dist/core/objects/procedure/procedure.model.d.ts +132 -0
  290. package/dist/core/objects/procedure/procedure.model.js +244 -0
  291. package/dist/core/objects/procedure/utils.d.ts +14 -0
  292. package/dist/core/objects/procedure/utils.js +55 -0
  293. package/dist/core/objects/publication/changes/publication.alter.d.ts +88 -0
  294. package/dist/core/objects/publication/changes/publication.alter.js +176 -0
  295. package/dist/core/objects/publication/changes/publication.base.d.ts +17 -0
  296. package/dist/core/objects/publication/changes/publication.base.js +13 -0
  297. package/dist/core/objects/publication/changes/publication.comment.d.ts +23 -0
  298. package/dist/core/objects/publication/changes/publication.comment.js +46 -0
  299. package/dist/core/objects/publication/changes/publication.create.d.ts +17 -0
  300. package/dist/core/objects/publication/changes/publication.create.js +61 -0
  301. package/dist/core/objects/publication/changes/publication.drop.d.ts +17 -0
  302. package/dist/core/objects/publication/changes/publication.drop.js +23 -0
  303. package/dist/core/objects/publication/changes/publication.types.d.ts +5 -0
  304. package/dist/core/objects/publication/changes/publication.types.js +1 -0
  305. package/dist/core/objects/publication/publication.diff.d.ts +5 -0
  306. package/dist/core/objects/publication/publication.diff.js +161 -0
  307. package/dist/core/objects/publication/publication.model.d.ts +96 -0
  308. package/dist/core/objects/publication/publication.model.js +186 -0
  309. package/dist/core/objects/publication/utils.d.ts +5 -0
  310. package/dist/core/objects/publication/utils.js +45 -0
  311. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +62 -0
  312. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +90 -0
  313. package/dist/core/objects/rls-policy/changes/rls-policy.base.d.ts +17 -0
  314. package/dist/core/objects/rls-policy/changes/rls-policy.base.js +13 -0
  315. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +23 -0
  316. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +51 -0
  317. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +27 -0
  318. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +79 -0
  319. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +22 -0
  320. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +33 -0
  321. package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +5 -0
  322. package/dist/core/objects/rls-policy/changes/rls-policy.types.js +1 -0
  323. package/dist/core/objects/rls-policy/rls-policy.diff.d.ts +10 -0
  324. package/dist/core/objects/rls-policy/rls-policy.diff.js +80 -0
  325. package/dist/core/objects/rls-policy/rls-policy.model.d.ts +52 -0
  326. package/dist/core/objects/rls-policy/rls-policy.model.js +127 -0
  327. package/dist/core/objects/role/changes/role.alter.d.ts +78 -0
  328. package/dist/core/objects/role/changes/role.alter.js +55 -0
  329. package/dist/core/objects/role/changes/role.base.d.ts +17 -0
  330. package/dist/core/objects/role/changes/role.base.js +13 -0
  331. package/dist/core/objects/role/changes/role.comment.d.ts +23 -0
  332. package/dist/core/objects/role/changes/role.comment.js +42 -0
  333. package/dist/core/objects/role/changes/role.create.d.ts +38 -0
  334. package/dist/core/objects/role/changes/role.create.js +83 -0
  335. package/dist/core/objects/role/changes/role.drop.d.ts +22 -0
  336. package/dist/core/objects/role/changes/role.drop.js +28 -0
  337. package/dist/core/objects/role/changes/role.privilege.d.ts +148 -0
  338. package/dist/core/objects/role/changes/role.privilege.js +283 -0
  339. package/dist/core/objects/role/changes/role.types.d.ts +6 -0
  340. package/dist/core/objects/role/changes/role.types.js +1 -0
  341. package/dist/core/objects/role/role.diff.d.ts +13 -0
  342. package/dist/core/objects/role/role.diff.js +386 -0
  343. package/dist/core/objects/role/role.model.d.ts +89 -0
  344. package/dist/core/objects/role/role.model.js +312 -0
  345. package/dist/core/objects/rule/changes/rule.alter.d.ts +22 -0
  346. package/dist/core/objects/rule/changes/rule.alter.js +58 -0
  347. package/dist/core/objects/rule/changes/rule.base.d.ts +17 -0
  348. package/dist/core/objects/rule/changes/rule.base.js +13 -0
  349. package/dist/core/objects/rule/changes/rule.comment.d.ts +22 -0
  350. package/dist/core/objects/rule/changes/rule.comment.js +51 -0
  351. package/dist/core/objects/rule/changes/rule.create.d.ts +14 -0
  352. package/dist/core/objects/rule/changes/rule.create.js +28 -0
  353. package/dist/core/objects/rule/changes/rule.drop.d.ts +12 -0
  354. package/dist/core/objects/rule/changes/rule.drop.js +23 -0
  355. package/dist/core/objects/rule/changes/rule.types.d.ts +5 -0
  356. package/dist/core/objects/rule/changes/rule.types.js +1 -0
  357. package/dist/core/objects/rule/rule.diff.d.ts +3 -0
  358. package/dist/core/objects/rule/rule.diff.js +53 -0
  359. package/dist/core/objects/rule/rule.model.d.ts +72 -0
  360. package/dist/core/objects/rule/rule.model.js +156 -0
  361. package/dist/core/objects/schema/changes/schema.alter.d.ts +32 -0
  362. package/dist/core/objects/schema/changes/schema.alter.js +25 -0
  363. package/dist/core/objects/schema/changes/schema.base.d.ts +17 -0
  364. package/dist/core/objects/schema/changes/schema.base.js +13 -0
  365. package/dist/core/objects/schema/changes/schema.comment.d.ts +23 -0
  366. package/dist/core/objects/schema/changes/schema.comment.js +43 -0
  367. package/dist/core/objects/schema/changes/schema.create.d.ts +27 -0
  368. package/dist/core/objects/schema/changes/schema.create.js +38 -0
  369. package/dist/core/objects/schema/changes/schema.drop.d.ts +22 -0
  370. package/dist/core/objects/schema/changes/schema.drop.js +28 -0
  371. package/dist/core/objects/schema/changes/schema.privilege.d.ts +97 -0
  372. package/dist/core/objects/schema/changes/schema.privilege.js +131 -0
  373. package/dist/core/objects/schema/changes/schema.types.d.ts +6 -0
  374. package/dist/core/objects/schema/changes/schema.types.js +1 -0
  375. package/dist/core/objects/schema/schema.diff.d.ts +18 -0
  376. package/dist/core/objects/schema/schema.diff.js +142 -0
  377. package/dist/core/objects/schema/schema.model.d.ts +47 -0
  378. package/dist/core/objects/schema/schema.model.js +91 -0
  379. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +59 -0
  380. package/dist/core/objects/sequence/changes/sequence.alter.js +75 -0
  381. package/dist/core/objects/sequence/changes/sequence.base.d.ts +17 -0
  382. package/dist/core/objects/sequence/changes/sequence.base.js +13 -0
  383. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +23 -0
  384. package/dist/core/objects/sequence/changes/sequence.comment.js +47 -0
  385. package/dist/core/objects/sequence/changes/sequence.create.d.ts +25 -0
  386. package/dist/core/objects/sequence/changes/sequence.create.js +78 -0
  387. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +22 -0
  388. package/dist/core/objects/sequence/changes/sequence.drop.js +31 -0
  389. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +101 -0
  390. package/dist/core/objects/sequence/changes/sequence.privilege.js +135 -0
  391. package/dist/core/objects/sequence/changes/sequence.types.d.ts +6 -0
  392. package/dist/core/objects/sequence/changes/sequence.types.js +1 -0
  393. package/dist/core/objects/sequence/sequence.diff.d.ts +20 -0
  394. package/dist/core/objects/sequence/sequence.diff.js +258 -0
  395. package/dist/core/objects/sequence/sequence.model.d.ts +76 -0
  396. package/dist/core/objects/sequence/sequence.model.js +169 -0
  397. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +56 -0
  398. package/dist/core/objects/subscription/changes/subscription.alter.js +82 -0
  399. package/dist/core/objects/subscription/changes/subscription.base.d.ts +17 -0
  400. package/dist/core/objects/subscription/changes/subscription.base.js +13 -0
  401. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +23 -0
  402. package/dist/core/objects/subscription/changes/subscription.comment.js +46 -0
  403. package/dist/core/objects/subscription/changes/subscription.create.d.ts +12 -0
  404. package/dist/core/objects/subscription/changes/subscription.create.js +52 -0
  405. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +11 -0
  406. package/dist/core/objects/subscription/changes/subscription.drop.js +15 -0
  407. package/dist/core/objects/subscription/changes/subscription.types.d.ts +5 -0
  408. package/dist/core/objects/subscription/changes/subscription.types.js +1 -0
  409. package/dist/core/objects/subscription/subscription.diff.d.ts +5 -0
  410. package/dist/core/objects/subscription/subscription.diff.js +167 -0
  411. package/dist/core/objects/subscription/subscription.model.d.ts +80 -0
  412. package/dist/core/objects/subscription/subscription.model.js +166 -0
  413. package/dist/core/objects/subscription/utils.d.ts +37 -0
  414. package/dist/core/objects/subscription/utils.js +112 -0
  415. package/dist/core/objects/table/changes/table.alter.d.ts +357 -0
  416. package/dist/core/objects/table/changes/table.alter.js +607 -0
  417. package/dist/core/objects/table/changes/table.base.d.ts +17 -0
  418. package/dist/core/objects/table/changes/table.base.js +13 -0
  419. package/dist/core/objects/table/changes/table.comment.d.ts +106 -0
  420. package/dist/core/objects/table/changes/table.comment.js +175 -0
  421. package/dist/core/objects/table/changes/table.create.d.ts +33 -0
  422. package/dist/core/objects/table/changes/table.create.js +145 -0
  423. package/dist/core/objects/table/changes/table.drop.d.ts +22 -0
  424. package/dist/core/objects/table/changes/table.drop.js +35 -0
  425. package/dist/core/objects/table/changes/table.privilege.d.ts +107 -0
  426. package/dist/core/objects/table/changes/table.privilege.js +150 -0
  427. package/dist/core/objects/table/changes/table.types.d.ts +6 -0
  428. package/dist/core/objects/table/changes/table.types.js +1 -0
  429. package/dist/core/objects/table/table.diff.d.ts +18 -0
  430. package/dist/core/objects/table/table.diff.js +668 -0
  431. package/dist/core/objects/table/table.model.d.ts +341 -0
  432. package/dist/core/objects/table/table.model.js +426 -0
  433. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +29 -0
  434. package/dist/core/objects/trigger/changes/trigger.alter.js +27 -0
  435. package/dist/core/objects/trigger/changes/trigger.base.d.ts +17 -0
  436. package/dist/core/objects/trigger/changes/trigger.base.js +13 -0
  437. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +23 -0
  438. package/dist/core/objects/trigger/changes/trigger.comment.js +51 -0
  439. package/dist/core/objects/trigger/changes/trigger.create.d.ts +41 -0
  440. package/dist/core/objects/trigger/changes/trigger.create.js +61 -0
  441. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +22 -0
  442. package/dist/core/objects/trigger/changes/trigger.drop.js +33 -0
  443. package/dist/core/objects/trigger/changes/trigger.types.d.ts +5 -0
  444. package/dist/core/objects/trigger/changes/trigger.types.js +1 -0
  445. package/dist/core/objects/trigger/trigger.diff.d.ts +11 -0
  446. package/dist/core/objects/trigger/trigger.diff.js +84 -0
  447. package/dist/core/objects/trigger/trigger.model.d.ts +92 -0
  448. package/dist/core/objects/trigger/trigger.model.js +235 -0
  449. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +81 -0
  450. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +123 -0
  451. package/dist/core/objects/type/composite-type/changes/composite-type.base.d.ts +17 -0
  452. package/dist/core/objects/type/composite-type/changes/composite-type.base.js +13 -0
  453. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +53 -0
  454. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +108 -0
  455. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +23 -0
  456. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +72 -0
  457. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +22 -0
  458. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +31 -0
  459. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +97 -0
  460. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +131 -0
  461. package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +6 -0
  462. package/dist/core/objects/type/composite-type/changes/composite-type.types.js +1 -0
  463. package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +18 -0
  464. package/dist/core/objects/type/composite-type/composite-type.diff.js +250 -0
  465. package/dist/core/objects/type/composite-type/composite-type.model.d.ts +148 -0
  466. package/dist/core/objects/type/composite-type/composite-type.model.js +223 -0
  467. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +52 -0
  468. package/dist/core/objects/type/enum/changes/enum.alter.js +60 -0
  469. package/dist/core/objects/type/enum/changes/enum.base.d.ts +17 -0
  470. package/dist/core/objects/type/enum/changes/enum.base.js +13 -0
  471. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +26 -0
  472. package/dist/core/objects/type/enum/changes/enum.comment.js +47 -0
  473. package/dist/core/objects/type/enum/changes/enum.create.d.ts +22 -0
  474. package/dist/core/objects/type/enum/changes/enum.create.js +43 -0
  475. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +22 -0
  476. package/dist/core/objects/type/enum/changes/enum.drop.js +28 -0
  477. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +97 -0
  478. package/dist/core/objects/type/enum/changes/enum.privilege.js +131 -0
  479. package/dist/core/objects/type/enum/changes/enum.types.d.ts +6 -0
  480. package/dist/core/objects/type/enum/changes/enum.types.js +1 -0
  481. package/dist/core/objects/type/enum/enum.diff.d.ts +18 -0
  482. package/dist/core/objects/type/enum/enum.diff.js +268 -0
  483. package/dist/core/objects/type/enum/enum.model.d.ts +66 -0
  484. package/dist/core/objects/type/enum/enum.model.js +154 -0
  485. package/dist/core/objects/type/range/changes/range.alter.d.ts +33 -0
  486. package/dist/core/objects/type/range/changes/range.alter.js +30 -0
  487. package/dist/core/objects/type/range/changes/range.base.d.ts +17 -0
  488. package/dist/core/objects/type/range/changes/range.base.js +13 -0
  489. package/dist/core/objects/type/range/changes/range.comment.d.ts +26 -0
  490. package/dist/core/objects/type/range/changes/range.comment.js +47 -0
  491. package/dist/core/objects/type/range/changes/range.create.d.ts +31 -0
  492. package/dist/core/objects/type/range/changes/range.create.js +113 -0
  493. package/dist/core/objects/type/range/changes/range.drop.d.ts +22 -0
  494. package/dist/core/objects/type/range/changes/range.drop.js +28 -0
  495. package/dist/core/objects/type/range/changes/range.privilege.d.ts +97 -0
  496. package/dist/core/objects/type/range/changes/range.privilege.js +131 -0
  497. package/dist/core/objects/type/range/changes/range.types.d.ts +6 -0
  498. package/dist/core/objects/type/range/changes/range.types.js +1 -0
  499. package/dist/core/objects/type/range/range.diff.d.ts +18 -0
  500. package/dist/core/objects/type/range/range.diff.js +172 -0
  501. package/dist/core/objects/type/range/range.model.d.ts +81 -0
  502. package/dist/core/objects/type/range/range.model.js +165 -0
  503. package/dist/core/objects/type/type.types.d.ts +4 -0
  504. package/dist/core/objects/type/type.types.js +1 -0
  505. package/dist/core/objects/utils.d.ts +57 -0
  506. package/dist/core/objects/utils.js +137 -0
  507. package/dist/core/objects/view/changes/view.alter.d.ts +62 -0
  508. package/dist/core/objects/view/changes/view.alter.js +75 -0
  509. package/dist/core/objects/view/changes/view.base.d.ts +17 -0
  510. package/dist/core/objects/view/changes/view.base.js +13 -0
  511. package/dist/core/objects/view/changes/view.comment.d.ts +23 -0
  512. package/dist/core/objects/view/changes/view.comment.js +46 -0
  513. package/dist/core/objects/view/changes/view.create.d.ts +27 -0
  514. package/dist/core/objects/view/changes/view.create.js +57 -0
  515. package/dist/core/objects/view/changes/view.drop.d.ts +17 -0
  516. package/dist/core/objects/view/changes/view.drop.js +30 -0
  517. package/dist/core/objects/view/changes/view.privilege.d.ts +107 -0
  518. package/dist/core/objects/view/changes/view.privilege.js +150 -0
  519. package/dist/core/objects/view/changes/view.types.d.ts +6 -0
  520. package/dist/core/objects/view/changes/view.types.js +1 -0
  521. package/dist/core/objects/view/view.diff.d.ts +18 -0
  522. package/dist/core/objects/view/view.diff.js +270 -0
  523. package/dist/core/objects/view/view.model.d.ts +152 -0
  524. package/dist/core/objects/view/view.model.js +250 -0
  525. package/dist/core/plan/apply.d.ts +33 -0
  526. package/dist/core/plan/apply.js +112 -0
  527. package/dist/core/plan/create.d.ts +22 -0
  528. package/dist/core/plan/create.js +228 -0
  529. package/dist/core/plan/hierarchy.d.ts +19 -0
  530. package/dist/core/plan/hierarchy.js +488 -0
  531. package/dist/core/plan/index.d.ts +19 -0
  532. package/dist/core/plan/index.js +21 -0
  533. package/dist/core/plan/io.d.ts +12 -0
  534. package/dist/core/plan/io.js +17 -0
  535. package/dist/core/plan/risk.d.ts +10 -0
  536. package/dist/core/plan/risk.js +38 -0
  537. package/dist/core/plan/serialize.d.ts +26 -0
  538. package/dist/core/plan/serialize.js +176 -0
  539. package/dist/core/plan/statements.d.ts +8 -0
  540. package/dist/core/plan/statements.js +13 -0
  541. package/dist/core/plan/types.d.ts +153 -0
  542. package/dist/core/plan/types.js +32 -0
  543. package/dist/core/postgres-config.d.ts +8 -0
  544. package/dist/core/postgres-config.js +46 -0
  545. package/dist/core/sort/custom-constraints.d.ts +9 -0
  546. package/dist/core/sort/custom-constraints.js +133 -0
  547. package/dist/core/sort/debug-visualization.d.ts +8 -0
  548. package/dist/core/sort/debug-visualization.js +145 -0
  549. package/dist/core/sort/dependency-filter.d.ts +19 -0
  550. package/dist/core/sort/dependency-filter.js +152 -0
  551. package/dist/core/sort/graph-builder.d.ts +37 -0
  552. package/dist/core/sort/graph-builder.js +172 -0
  553. package/dist/core/sort/graph-utils.d.ts +14 -0
  554. package/dist/core/sort/graph-utils.js +41 -0
  555. package/dist/core/sort/logical-sort.d.ts +26 -0
  556. package/dist/core/sort/logical-sort.js +532 -0
  557. package/dist/core/sort/sort-changes.d.ts +28 -0
  558. package/dist/core/sort/sort-changes.js +147 -0
  559. package/dist/core/sort/topological-sort.d.ts +20 -0
  560. package/dist/core/sort/topological-sort.js +138 -0
  561. package/dist/core/sort/types.d.ts +102 -0
  562. package/dist/core/sort/types.js +1 -0
  563. package/dist/core/sort/utils.d.ts +23 -0
  564. package/dist/core/sort/utils.js +51 -0
  565. package/dist/index.d.ts +1 -0
  566. package/dist/index.js +1 -0
  567. package/package.json +58 -12
@@ -0,0 +1,172 @@
1
+ import { diffObjects } from "../../base.diff.js";
2
+ import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../../base.privilege-diff.js";
3
+ import { hasNonAlterableChanges } from "../../utils.js";
4
+ import { AlterRangeChangeOwner } from "./changes/range.alter.js";
5
+ import { CreateCommentOnRange, DropCommentOnRange, } from "./changes/range.comment.js";
6
+ import { CreateRange } from "./changes/range.create.js";
7
+ import { DropRange } from "./changes/range.drop.js";
8
+ import { GrantRangePrivileges, RevokeGrantOptionRangePrivileges, RevokeRangePrivileges, } from "./changes/range.privilege.js";
9
+ /**
10
+ * Diff two sets of range types from main and branch catalogs.
11
+ *
12
+ * @param ctx - Context containing version, currentUser, and defaultPrivilegeState
13
+ * @param main - The ranges in the main catalog.
14
+ * @param branch - The ranges in the branch catalog.
15
+ * @returns A list of changes to apply to main to make it match branch.
16
+ */
17
+ export function diffRanges(ctx, main, branch) {
18
+ const { created, dropped, altered } = diffObjects(main, branch);
19
+ const changes = [];
20
+ for (const id of created) {
21
+ const createdRange = branch[id];
22
+ changes.push(new CreateRange({ range: createdRange }));
23
+ // OWNER: If the range type should be owned by someone other than the current user,
24
+ // emit ALTER TYPE ... OWNER TO after creation
25
+ if (createdRange.owner !== ctx.currentUser) {
26
+ changes.push(new AlterRangeChangeOwner({
27
+ range: createdRange,
28
+ owner: createdRange.owner,
29
+ }));
30
+ }
31
+ if (createdRange.comment !== null) {
32
+ changes.push(new CreateCommentOnRange({ range: createdRange }));
33
+ }
34
+ // PRIVILEGES: For created objects, compare against default privileges state
35
+ // The migration script will run ALTER DEFAULT PRIVILEGES before CREATE (via constraint spec),
36
+ // so objects are created with the default privileges state in effect.
37
+ // We compare default privileges against desired privileges to generate REVOKE/GRANT statements
38
+ // needed to reach the final desired state.
39
+ const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "range", createdRange.schema ?? "");
40
+ // Filter out PUBLIC's built-in default USAGE privilege (PostgreSQL grants it automatically)
41
+ // Reference: https://www.postgresql.org/docs/17/ddl-priv.html Table 5.2
42
+ // This prevents generating unnecessary "GRANT USAGE TO PUBLIC" statements
43
+ const desiredPrivileges = filterPublicBuiltInDefaults("range", createdRange.privileges);
44
+ // Filter out owner privileges - owner always has ALL privileges implicitly
45
+ // and shouldn't be compared. Use the range owner as the reference.
46
+ const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, createdRange.owner);
47
+ // Generate grant changes
48
+ for (const [grantee, result] of privilegeResults) {
49
+ if (result.grants.length > 0) {
50
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
51
+ for (const [grantable, list] of grantGroups) {
52
+ void grantable;
53
+ changes.push(new GrantRangePrivileges({
54
+ range: createdRange,
55
+ grantee,
56
+ privileges: list,
57
+ version: ctx.version,
58
+ }));
59
+ }
60
+ }
61
+ // Generate revoke changes
62
+ if (result.revokes.length > 0) {
63
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
64
+ for (const [grantable, list] of revokeGroups) {
65
+ void grantable;
66
+ changes.push(new RevokeRangePrivileges({
67
+ range: createdRange,
68
+ grantee,
69
+ privileges: list,
70
+ version: ctx.version,
71
+ }));
72
+ }
73
+ }
74
+ // Generate revoke grant option changes
75
+ if (result.revokeGrantOption.length > 0) {
76
+ changes.push(new RevokeGrantOptionRangePrivileges({
77
+ range: createdRange,
78
+ grantee,
79
+ privilegeNames: result.revokeGrantOption,
80
+ version: ctx.version,
81
+ }));
82
+ }
83
+ }
84
+ }
85
+ for (const id of dropped) {
86
+ changes.push(new DropRange({ range: main[id] }));
87
+ }
88
+ for (const id of altered) {
89
+ const mainRange = main[id];
90
+ const branchRange = branch[id];
91
+ const NON_ALTERABLE_FIELDS = [
92
+ // Changes to these require DROP + CREATE
93
+ "subtype_schema",
94
+ "subtype_str",
95
+ "collation",
96
+ "canonical_function_schema",
97
+ "canonical_function_name",
98
+ "subtype_diff_schema",
99
+ "subtype_diff_name",
100
+ "subtype_opclass_schema",
101
+ "subtype_opclass_name",
102
+ ];
103
+ const nonAlterablePropsChanged = hasNonAlterableChanges(mainRange, branchRange, NON_ALTERABLE_FIELDS);
104
+ if (nonAlterablePropsChanged) {
105
+ changes.push(new DropRange({ range: mainRange }), new CreateRange({ range: branchRange }));
106
+ }
107
+ else {
108
+ if (mainRange.owner !== branchRange.owner) {
109
+ changes.push(new AlterRangeChangeOwner({
110
+ range: mainRange,
111
+ owner: branchRange.owner,
112
+ }));
113
+ }
114
+ // COMMENT
115
+ if (mainRange.comment !== branchRange.comment) {
116
+ if (branchRange.comment === null) {
117
+ changes.push(new DropCommentOnRange({ range: mainRange }));
118
+ }
119
+ else {
120
+ changes.push(new CreateCommentOnRange({ range: branchRange }));
121
+ }
122
+ }
123
+ // PRIVILEGES
124
+ // Filter out PUBLIC's built-in default USAGE privilege from main catalog
125
+ // (PostgreSQL grants it automatically, so we shouldn't compare it)
126
+ const mainPrivilegesFiltered = filterPublicBuiltInDefaults("range", mainRange.privileges);
127
+ // Filter out PUBLIC's built-in default USAGE privilege from branch catalog
128
+ const branchPrivilegesFiltered = filterPublicBuiltInDefaults("range", branchRange.privileges);
129
+ // Filter out owner privileges - owner always has ALL privileges implicitly
130
+ // and shouldn't be compared. Use branch owner as the reference.
131
+ const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchRange.owner, ctx.mainRoles);
132
+ for (const [grantee, result] of privilegeResults) {
133
+ // Generate grant changes
134
+ if (result.grants.length > 0) {
135
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
136
+ for (const [grantable, list] of grantGroups) {
137
+ void grantable;
138
+ changes.push(new GrantRangePrivileges({
139
+ range: branchRange,
140
+ grantee,
141
+ privileges: list,
142
+ version: ctx.version,
143
+ }));
144
+ }
145
+ }
146
+ // Generate revoke changes
147
+ if (result.revokes.length > 0) {
148
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
149
+ for (const [grantable, list] of revokeGroups) {
150
+ void grantable;
151
+ changes.push(new RevokeRangePrivileges({
152
+ range: mainRange,
153
+ grantee,
154
+ privileges: list,
155
+ version: ctx.version,
156
+ }));
157
+ }
158
+ }
159
+ // Generate revoke grant option changes
160
+ if (result.revokeGrantOption.length > 0) {
161
+ changes.push(new RevokeGrantOptionRangePrivileges({
162
+ range: mainRange,
163
+ grantee,
164
+ privilegeNames: result.revokeGrantOption,
165
+ version: ctx.version,
166
+ }));
167
+ }
168
+ }
169
+ }
170
+ }
171
+ return changes;
172
+ }
@@ -0,0 +1,81 @@
1
+ import type { Sql } from "postgres";
2
+ import z from "zod";
3
+ import { BasePgModel } from "../../base.model.ts";
4
+ import { type PrivilegeProps } from "../../base.privilege-diff.ts";
5
+ declare const rangePropsSchema: z.ZodObject<{
6
+ schema: z.ZodString;
7
+ name: z.ZodString;
8
+ owner: z.ZodString;
9
+ comment: z.ZodNullable<z.ZodString>;
10
+ subtype_schema: z.ZodString;
11
+ subtype_str: z.ZodString;
12
+ collation: z.ZodNullable<z.ZodString>;
13
+ canonical_function_schema: z.ZodNullable<z.ZodString>;
14
+ canonical_function_name: z.ZodNullable<z.ZodString>;
15
+ subtype_diff_schema: z.ZodNullable<z.ZodString>;
16
+ subtype_diff_name: z.ZodNullable<z.ZodString>;
17
+ subtype_opclass_schema: z.ZodNullable<z.ZodString>;
18
+ subtype_opclass_name: z.ZodNullable<z.ZodString>;
19
+ privileges: z.ZodArray<z.ZodObject<{
20
+ grantee: z.ZodString;
21
+ privilege: z.ZodString;
22
+ grantable: z.ZodBoolean;
23
+ columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
24
+ }, z.z.core.$strip>>;
25
+ }, z.z.core.$strip>;
26
+ type RangePrivilegeProps = PrivilegeProps;
27
+ export type RangeProps = z.infer<typeof rangePropsSchema>;
28
+ export declare class Range extends BasePgModel {
29
+ readonly schema: RangeProps["schema"];
30
+ readonly name: RangeProps["name"];
31
+ readonly owner: RangeProps["owner"];
32
+ readonly comment: RangeProps["comment"];
33
+ readonly subtype_schema: RangeProps["subtype_schema"];
34
+ readonly subtype_str: RangeProps["subtype_str"];
35
+ readonly collation: RangeProps["collation"];
36
+ readonly canonical_function_schema: RangeProps["canonical_function_schema"];
37
+ readonly canonical_function_name: RangeProps["canonical_function_name"];
38
+ readonly subtype_diff_schema: RangeProps["subtype_diff_schema"];
39
+ readonly subtype_diff_name: RangeProps["subtype_diff_name"];
40
+ readonly subtype_opclass_schema: RangeProps["subtype_opclass_schema"];
41
+ readonly subtype_opclass_name: RangeProps["subtype_opclass_name"];
42
+ readonly privileges: RangePrivilegeProps[];
43
+ constructor(props: RangeProps);
44
+ get stableId(): `type:${string}`;
45
+ get identityFields(): {
46
+ schema: string;
47
+ name: string;
48
+ };
49
+ get dataFields(): {
50
+ owner: string;
51
+ subtype_schema: string;
52
+ subtype_str: string;
53
+ collation: string | null;
54
+ canonical_function_schema: string | null;
55
+ canonical_function_name: string | null;
56
+ subtype_diff_schema: string | null;
57
+ subtype_diff_name: string | null;
58
+ subtype_opclass_schema: string | null;
59
+ subtype_opclass_name: string | null;
60
+ comment: string | null;
61
+ privileges: {
62
+ grantee: string;
63
+ privilege: string;
64
+ grantable: boolean;
65
+ columns?: string[] | null | undefined;
66
+ }[];
67
+ };
68
+ }
69
+ /**
70
+ * Extract all range types from the database.
71
+ *
72
+ * We intentionally capture only non-default options for CREATE TYPE AS RANGE:
73
+ * - SUBTYPE is required and always present
74
+ * - SUBTYPE_OPCLASS is included only when it differs from the default btree opclass
75
+ * - COLLATION is included only when it differs from the subtype's typcollation
76
+ * - CANONICAL and SUBTYPE_DIFF are included only when set
77
+ * - MULTIRANGE_TYPE_NAME is not included (we currently do not attempt to infer
78
+ * whether it differs from the default auto-generated name)
79
+ */
80
+ export declare function extractRanges(sql: Sql): Promise<Range[]>;
81
+ export {};
@@ -0,0 +1,165 @@
1
+ import z from "zod";
2
+ import { BasePgModel } from "../../base.model.js";
3
+ import { privilegePropsSchema, } from "../../base.privilege-diff.js";
4
+ const rangePropsSchema = z.object({
5
+ schema: z.string(),
6
+ name: z.string(),
7
+ owner: z.string(),
8
+ comment: z.string().nullable(),
9
+ // Subtype information
10
+ subtype_schema: z.string(),
11
+ subtype_str: z.string(),
12
+ // Optional, only present when non-default relative to subtype
13
+ collation: z.string().nullable(),
14
+ // Canonical and diff functions when present (non-default)
15
+ canonical_function_schema: z.string().nullable(),
16
+ canonical_function_name: z.string().nullable(),
17
+ subtype_diff_schema: z.string().nullable(),
18
+ subtype_diff_name: z.string().nullable(),
19
+ // Optional: print only when non-default (see extractor logic)
20
+ subtype_opclass_schema: z.string().nullable(),
21
+ subtype_opclass_name: z.string().nullable(),
22
+ privileges: z.array(privilegePropsSchema),
23
+ });
24
+ export class Range extends BasePgModel {
25
+ schema;
26
+ name;
27
+ owner;
28
+ comment;
29
+ subtype_schema;
30
+ subtype_str;
31
+ collation;
32
+ canonical_function_schema;
33
+ canonical_function_name;
34
+ subtype_diff_schema;
35
+ subtype_diff_name;
36
+ subtype_opclass_schema;
37
+ subtype_opclass_name;
38
+ privileges;
39
+ constructor(props) {
40
+ super();
41
+ // Identity fields
42
+ this.schema = props.schema;
43
+ this.name = props.name;
44
+ // Data fields
45
+ this.owner = props.owner;
46
+ this.comment = props.comment;
47
+ this.subtype_schema = props.subtype_schema;
48
+ this.subtype_str = props.subtype_str;
49
+ this.collation = props.collation;
50
+ this.canonical_function_schema = props.canonical_function_schema;
51
+ this.canonical_function_name = props.canonical_function_name;
52
+ this.subtype_diff_schema = props.subtype_diff_schema;
53
+ this.subtype_diff_name = props.subtype_diff_name;
54
+ this.subtype_opclass_schema = props.subtype_opclass_schema;
55
+ this.subtype_opclass_name = props.subtype_opclass_name;
56
+ this.privileges = props.privileges;
57
+ }
58
+ get stableId() {
59
+ return `type:${this.schema}.${this.name}`;
60
+ }
61
+ get identityFields() {
62
+ return {
63
+ schema: this.schema,
64
+ name: this.name,
65
+ };
66
+ }
67
+ get dataFields() {
68
+ return {
69
+ owner: this.owner,
70
+ subtype_schema: this.subtype_schema,
71
+ subtype_str: this.subtype_str,
72
+ collation: this.collation,
73
+ canonical_function_schema: this.canonical_function_schema,
74
+ canonical_function_name: this.canonical_function_name,
75
+ subtype_diff_schema: this.subtype_diff_schema,
76
+ subtype_diff_name: this.subtype_diff_name,
77
+ subtype_opclass_schema: this.subtype_opclass_schema,
78
+ subtype_opclass_name: this.subtype_opclass_name,
79
+ comment: this.comment,
80
+ privileges: this.privileges,
81
+ };
82
+ }
83
+ }
84
+ /**
85
+ * Extract all range types from the database.
86
+ *
87
+ * We intentionally capture only non-default options for CREATE TYPE AS RANGE:
88
+ * - SUBTYPE is required and always present
89
+ * - SUBTYPE_OPCLASS is included only when it differs from the default btree opclass
90
+ * - COLLATION is included only when it differs from the subtype's typcollation
91
+ * - CANONICAL and SUBTYPE_DIFF are included only when set
92
+ * - MULTIRANGE_TYPE_NAME is not included (we currently do not attempt to infer
93
+ * whether it differs from the default auto-generated name)
94
+ */
95
+ export async function extractRanges(sql) {
96
+ return sql.begin(async (sql) => {
97
+ await sql `set search_path = ''`;
98
+ const rows = await sql `
99
+ with extension_oids as (
100
+ select objid from pg_depend d
101
+ where d.refclassid = 'pg_extension'::regclass and d.classid = 'pg_type'::regclass
102
+ ), default_btree_opclass as (
103
+ -- For each input type, find its default btree operator class
104
+ select oc2.opcintype as type_oid, oc2.oid as opclass_oid
105
+ from pg_opclass oc2
106
+ join pg_am am on am.oid = oc2.opcmethod and am.amname = 'btree'
107
+ where oc2.opcdefault
108
+ )
109
+ select
110
+ -- range type identity
111
+ t.typnamespace::regnamespace::text as schema,
112
+ quote_ident(t.typname) as name,
113
+ t.typowner::regrole::text as owner,
114
+ obj_description(t.oid, 'pg_type') as comment,
115
+
116
+ -- subtype info
117
+ subt.typnamespace::regnamespace::text as subtype_schema,
118
+ format_type(r.rngsubtype, 0) as subtype_str,
119
+
120
+ -- include collation only if not default
121
+ case when r.rngcollation is not null and r.rngcollation <> 0 and r.rngcollation <> subt.typcollation then quote_ident(c.collname) else null end as collation,
122
+
123
+ -- include canonical/subtype_diff when set
124
+ case when r.rngcanonical <> 0 then pn_subcanon.nspname::regnamespace::text else null end as canonical_function_schema,
125
+ case when r.rngcanonical <> 0 then quote_ident(p_subcanon.proname) else null end as canonical_function_name,
126
+ case when r.rngsubdiff <> 0 then pn_subdiff.nspname::regnamespace::text else null end as subtype_diff_schema,
127
+ case when r.rngsubdiff <> 0 then quote_ident(p_subdiff.proname) else null end as subtype_diff_name,
128
+
129
+ -- include opclass only when not default for btree
130
+ case when r.rngsubopc is not null and r.rngsubopc <> 0 and r.rngsubopc <> dbo.opclass_oid then opc.opcnamespace::regnamespace::text else null end as subtype_opclass_schema,
131
+ case when r.rngsubopc is not null and r.rngsubopc <> 0 and r.rngsubopc <> dbo.opclass_oid then quote_ident(opc.opcname) else null end as subtype_opclass_name,
132
+
133
+ -- privileges
134
+ coalesce(
135
+ (
136
+ select json_agg(
137
+ json_build_object(
138
+ 'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
139
+ 'privilege', x.privilege_type,
140
+ 'grantable', x.is_grantable
141
+ )
142
+ order by x.grantee, x.privilege_type
143
+ )
144
+ from lateral aclexplode(t.typacl) as x(grantor, grantee, privilege_type, is_grantable)
145
+ ), '[]'
146
+ ) as privileges
147
+ from pg_catalog.pg_range r
148
+ join pg_catalog.pg_type t on t.oid = r.rngtypid
149
+ join pg_catalog.pg_type subt on subt.oid = r.rngsubtype
150
+ left join default_btree_opclass dbo on dbo.type_oid = r.rngsubtype
151
+ left join pg_catalog.pg_opclass opc on opc.oid = r.rngsubopc
152
+ left join pg_catalog.pg_collation c on c.oid = r.rngcollation
153
+ left join pg_catalog.pg_proc p_subcanon on p_subcanon.oid = r.rngcanonical
154
+ left join pg_catalog.pg_namespace pn_subcanon on pn_subcanon.oid = p_subcanon.pronamespace
155
+ left join pg_catalog.pg_proc p_subdiff on p_subdiff.oid = r.rngsubdiff
156
+ left join pg_catalog.pg_namespace pn_subdiff on pn_subdiff.oid = p_subdiff.pronamespace
157
+ left outer join extension_oids e on t.oid = e.objid
158
+ where not t.typnamespace::regnamespace::text like any(array['pg\_%', 'information\_schema'])
159
+ and e.objid is null
160
+ order by 1, 2;
161
+ `;
162
+ const validated = rows.map((row) => rangePropsSchema.parse(row));
163
+ return validated.map((row) => new Range(row));
164
+ });
165
+ }
@@ -0,0 +1,4 @@
1
+ import type { CompositeTypeChange } from "./composite-type/changes/composite-type.types.ts";
2
+ import type { EnumChange } from "./enum/changes/enum.types.ts";
3
+ import type { RangeChange } from "./range/changes/range.types.ts";
4
+ export type TypeChange = CompositeTypeChange | EnumChange | RangeChange;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,57 @@
1
+ type Comparator<T> = (a: T, b: T) => boolean;
2
+ /**
3
+ * JSON.stringify replacement that safely serializes BigInt values by converting
4
+ * them to strings. This ensures stable serialization for deep equality checks
5
+ * without throwing on BigInt instances.
6
+ */
7
+ export declare function stringifyWithBigInt(value: unknown, space?: number): string;
8
+ export declare function hasNonAlterableChanges<T, K extends keyof T>(main: T, branch: T, keys: ReadonlyArray<K>, comparators?: Partial<Record<K, Comparator<unknown>>>): boolean;
9
+ export declare const deepEqual: Comparator<unknown>;
10
+ export declare const stableId: {
11
+ schema(schema: string): `schema:${string}`;
12
+ table(schema: string, table: string): `table:${string}.${string}`;
13
+ view(schema: string, view: string): `view:${string}.${string}`;
14
+ materializedView(schema: string, view: string): `materializedView:${string}.${string}`;
15
+ acl(objectStableId: string, grantee: string): `acl:${string}::grantee:${string}`;
16
+ /**
17
+ *
18
+ * 'defacl:' || grantor || ':' || objtype || ':' || coalesce('schema:' || in_schema, 'global') || ':grantee:' || grantee as dependent_stable_id,
19
+ */
20
+ defacl(grantor: string, objtype: string, schema: string | null, grantee: string): `defacl:${string}:${string}:${string}:grantee:${string}`;
21
+ column(schema: string, table: string, column: string): `column:${string}.${string}.${string}`;
22
+ constraint(schema: string, table: string, constraint: string): `constraint:${string}.${string}.${string}`;
23
+ comment(objectStableId: string): `comment:${string}`;
24
+ role(role: string): `role:${string}`;
25
+ type(schema: string, name: string): `type:${string}.${string}`;
26
+ collation(schema: string, name: string): `collation:${string}.${string}`;
27
+ procedure(schema: string, name: string, args?: string): `procedure:${string}.${string}(${string})`;
28
+ membership(role: string, member: string): `membership:${string}->${string}`;
29
+ foreignDataWrapper(name: string): `foreignDataWrapper:${string}`;
30
+ server(name: string): `server:${string}`;
31
+ userMapping(server: string, user: string): `userMapping:${string}:${string}`;
32
+ foreignTable(schema: string, name: string): `foreignTable:${string}.${string}`;
33
+ };
34
+ /**
35
+ * Check if a schema name represents a user-defined type (not pg_catalog or information_schema).
36
+ * Used to filter out system types when building dependency lists.
37
+ */
38
+ export declare function isUserDefinedTypeSchema(schema: string | null | undefined): boolean;
39
+ /**
40
+ * Parse a procedure reference string (from regprocedure::text) to extract schema and function name.
41
+ * Format: "schema.function_name(argtypes)" or "function_name(argtypes)"
42
+ * Returns null if parsing fails or if it's a system procedure.
43
+ */
44
+ export declare function parseProcedureReference(procRef: string | null | undefined): {
45
+ schema: string;
46
+ name: string;
47
+ } | null;
48
+ /**
49
+ * Parse a type string (from format_type) to extract schema and type name if it's schema-qualified.
50
+ * Format: "type_name" or "schema.type_name" or "schema.type_name[]"
51
+ * Returns null if it's not schema-qualified or if it's a system type.
52
+ */
53
+ export declare function parseTypeString(typeStr: string | null | undefined): {
54
+ schema: string;
55
+ name: string;
56
+ } | null;
57
+ export {};
@@ -0,0 +1,137 @@
1
+ /**
2
+ * JSON.stringify replacement that safely serializes BigInt values by converting
3
+ * them to strings. This ensures stable serialization for deep equality checks
4
+ * without throwing on BigInt instances.
5
+ */
6
+ export function stringifyWithBigInt(value, space = 2) {
7
+ return JSON.stringify(value, (_key, v) => (typeof v === "bigint" ? v.toString() : v), space);
8
+ }
9
+ export function hasNonAlterableChanges(main, branch, keys, comparators) {
10
+ const mainIndexable = main;
11
+ const branchIndexable = branch;
12
+ for (const key of keys) {
13
+ // Prefer custom comparator when provided; fallback to strict equality
14
+ const equals = comparators?.[key] ??
15
+ ((a, b) => a === b);
16
+ if (!equals(mainIndexable[key], branchIndexable[key]))
17
+ return true;
18
+ }
19
+ return false;
20
+ }
21
+ export const deepEqual = (a, b) => stringifyWithBigInt(a) === stringifyWithBigInt(b);
22
+ // Helpers for stableId that aren't encoded in a class, mostly for sub-entities or meta entities.
23
+ export const stableId = {
24
+ schema(schema) {
25
+ return `schema:${schema}`;
26
+ },
27
+ table(schema, table) {
28
+ return `table:${schema}.${table}`;
29
+ },
30
+ view(schema, view) {
31
+ return `view:${schema}.${view}`;
32
+ },
33
+ materializedView(schema, view) {
34
+ return `materializedView:${schema}.${view}`;
35
+ },
36
+ acl(objectStableId, grantee) {
37
+ return `acl:${objectStableId}::grantee:${grantee}`;
38
+ },
39
+ /**
40
+ *
41
+ * 'defacl:' || grantor || ':' || objtype || ':' || coalesce('schema:' || in_schema, 'global') || ':grantee:' || grantee as dependent_stable_id,
42
+ */
43
+ defacl(grantor, objtype, schema, grantee) {
44
+ return `defacl:${grantor}:${objtype}:${schema ? `schema:${schema}` : "global"}:grantee:${grantee}`;
45
+ },
46
+ column(schema, table, column) {
47
+ return `column:${schema}.${table}.${column}`;
48
+ },
49
+ constraint(schema, table, constraint) {
50
+ return `constraint:${schema}.${table}.${constraint}`;
51
+ },
52
+ comment(objectStableId) {
53
+ return `comment:${objectStableId}`;
54
+ },
55
+ role(role) {
56
+ return `role:${role}`;
57
+ },
58
+ type(schema, name) {
59
+ return `type:${schema}.${name}`;
60
+ },
61
+ collation(schema, name) {
62
+ return `collation:${schema}.${name}`;
63
+ },
64
+ procedure(schema, name, args = "") {
65
+ return `procedure:${schema}.${name}(${args})`;
66
+ },
67
+ membership(role, member) {
68
+ return `membership:${role}->${member}`;
69
+ },
70
+ foreignDataWrapper(name) {
71
+ return `foreignDataWrapper:${name}`;
72
+ },
73
+ server(name) {
74
+ return `server:${name}`;
75
+ },
76
+ userMapping(server, user) {
77
+ return `userMapping:${server}:${user}`;
78
+ },
79
+ foreignTable(schema, name) {
80
+ return `foreignTable:${schema}.${name}`;
81
+ },
82
+ };
83
+ /**
84
+ * Check if a schema name represents a user-defined type (not pg_catalog or information_schema).
85
+ * Used to filter out system types when building dependency lists.
86
+ */
87
+ export function isUserDefinedTypeSchema(schema) {
88
+ return (schema != null && schema !== "pg_catalog" && schema !== "information_schema");
89
+ }
90
+ /**
91
+ * Parse a procedure reference string (from regprocedure::text) to extract schema and function name.
92
+ * Format: "schema.function_name(argtypes)" or "function_name(argtypes)"
93
+ * Returns null if parsing fails or if it's a system procedure.
94
+ */
95
+ export function parseProcedureReference(procRef) {
96
+ if (!procRef)
97
+ return null;
98
+ // Format is "schema.function_name(argtypes)" or "function_name(argtypes)"
99
+ // Extract everything before the opening parenthesis
100
+ const match = procRef.match(/^([^(]+)\(/);
101
+ if (!match)
102
+ return null;
103
+ const qualifiedName = match[1];
104
+ const parts = qualifiedName.split(".");
105
+ if (parts.length === 1) {
106
+ // No schema prefix - assume current schema (we can't determine it here)
107
+ // For now, skip these as we need schema info
108
+ return null;
109
+ }
110
+ if (parts.length === 2) {
111
+ const [schema, name] = parts;
112
+ if (isUserDefinedTypeSchema(schema)) {
113
+ return { schema, name };
114
+ }
115
+ }
116
+ return null;
117
+ }
118
+ /**
119
+ * Parse a type string (from format_type) to extract schema and type name if it's schema-qualified.
120
+ * Format: "type_name" or "schema.type_name" or "schema.type_name[]"
121
+ * Returns null if it's not schema-qualified or if it's a system type.
122
+ */
123
+ export function parseTypeString(typeStr) {
124
+ if (!typeStr)
125
+ return null;
126
+ // Remove array brackets for parsing
127
+ const baseType = typeStr.replace(/\[\]+$/, "");
128
+ // Check if it's schema-qualified (contains a dot)
129
+ const parts = baseType.split(".");
130
+ if (parts.length === 2) {
131
+ const [schema, name] = parts;
132
+ if (isUserDefinedTypeSchema(schema)) {
133
+ return { schema, name };
134
+ }
135
+ }
136
+ return null;
137
+ }
@@ -0,0 +1,62 @@
1
+ import type { View } from "../view.model.ts";
2
+ import { AlterViewChange } from "./view.base.ts";
3
+ /**
4
+ * Alter a view.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-alterview.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
11
+ * ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
12
+ * ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
13
+ * ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name
14
+ * ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
15
+ * ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
16
+ * ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
17
+ * ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )
18
+ * ```
19
+ */
20
+ export type AlterView = AlterViewChangeOwner | AlterViewResetOptions | AlterViewSetOptions;
21
+ /**
22
+ * ALTER VIEW ... OWNER TO ...
23
+ */
24
+ export declare class AlterViewChangeOwner extends AlterViewChange {
25
+ readonly view: View;
26
+ readonly owner: string;
27
+ readonly scope: "object";
28
+ constructor(props: {
29
+ view: View;
30
+ owner: string;
31
+ });
32
+ get requires(): `view:${string}`[];
33
+ serialize(): string;
34
+ }
35
+ /**
36
+ * ALTER VIEW ... SET ( ... )
37
+ */
38
+ export declare class AlterViewSetOptions extends AlterViewChange {
39
+ readonly view: View;
40
+ readonly options: string[];
41
+ readonly scope: "object";
42
+ constructor(props: {
43
+ view: View;
44
+ options: string[];
45
+ });
46
+ get requires(): `view:${string}`[];
47
+ serialize(): string;
48
+ }
49
+ /**
50
+ * ALTER VIEW ... RESET ( ... )
51
+ */
52
+ export declare class AlterViewResetOptions extends AlterViewChange {
53
+ readonly view: View;
54
+ readonly params: string[];
55
+ readonly scope: "object";
56
+ constructor(props: {
57
+ view: View;
58
+ params: string[];
59
+ });
60
+ get requires(): `view:${string}`[];
61
+ serialize(): string;
62
+ }