@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,209 @@
1
+ import { diffObjects } from "../../base.diff.js";
2
+ import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../../base.privilege-diff.js";
3
+ import { AlterServerChangeOwner, AlterServerSetOptions, AlterServerSetVersion, } from "./changes/server.alter.js";
4
+ import { CreateCommentOnServer, DropCommentOnServer, } from "./changes/server.comment.js";
5
+ import { CreateServer } from "./changes/server.create.js";
6
+ import { DropServer } from "./changes/server.drop.js";
7
+ import { GrantServerPrivileges, RevokeGrantOptionServerPrivileges, RevokeServerPrivileges, } from "./changes/server.privilege.js";
8
+ /**
9
+ * Diff two sets of servers from main and branch catalogs.
10
+ *
11
+ * @param ctx - Context containing version, currentUser, and defaultPrivilegeState
12
+ * @param main - The servers in the main catalog.
13
+ * @param branch - The servers in the branch catalog.
14
+ * @returns A list of changes to apply to main to make it match branch.
15
+ */
16
+ export function diffServers(ctx, main, branch) {
17
+ const { created, dropped, altered } = diffObjects(main, branch);
18
+ const changes = [];
19
+ for (const serverId of created) {
20
+ const createdServer = branch[serverId];
21
+ changes.push(new CreateServer({ server: createdServer }));
22
+ // OWNER: If the server should be owned by someone other than the current user,
23
+ // emit ALTER SERVER ... OWNER TO after creation
24
+ if (createdServer.owner !== ctx.currentUser) {
25
+ changes.push(new AlterServerChangeOwner({
26
+ server: createdServer,
27
+ owner: createdServer.owner,
28
+ }));
29
+ }
30
+ if (createdServer.comment !== null) {
31
+ changes.push(new CreateCommentOnServer({ server: createdServer }));
32
+ }
33
+ // PRIVILEGES: Servers don't have default privileges
34
+ const effectiveDefaults = [];
35
+ const desiredPrivileges = filterPublicBuiltInDefaults("server", createdServer.privileges);
36
+ const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, createdServer.owner, ctx.mainRoles);
37
+ // Generate grant changes
38
+ for (const [grantee, result] of privilegeResults) {
39
+ if (result.grants.length > 0) {
40
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
41
+ for (const [grantable, list] of grantGroups) {
42
+ void grantable;
43
+ changes.push(new GrantServerPrivileges({
44
+ server: createdServer,
45
+ grantee,
46
+ privileges: list,
47
+ version: ctx.version,
48
+ }));
49
+ }
50
+ }
51
+ // Generate revoke changes
52
+ if (result.revokes.length > 0) {
53
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
54
+ for (const [grantable, list] of revokeGroups) {
55
+ void grantable;
56
+ changes.push(new RevokeServerPrivileges({
57
+ server: createdServer,
58
+ grantee,
59
+ privileges: list,
60
+ version: ctx.version,
61
+ }));
62
+ }
63
+ }
64
+ // Generate revoke grant option changes
65
+ if (result.revokeGrantOption.length > 0) {
66
+ changes.push(new RevokeGrantOptionServerPrivileges({
67
+ server: createdServer,
68
+ grantee,
69
+ privilegeNames: result.revokeGrantOption,
70
+ version: ctx.version,
71
+ }));
72
+ }
73
+ }
74
+ }
75
+ for (const serverId of dropped) {
76
+ changes.push(new DropServer({ server: main[serverId] }));
77
+ }
78
+ for (const serverId of altered) {
79
+ const mainServer = main[serverId];
80
+ const branchServer = branch[serverId];
81
+ // OWNER
82
+ if (mainServer.owner !== branchServer.owner) {
83
+ changes.push(new AlterServerChangeOwner({
84
+ server: mainServer,
85
+ owner: branchServer.owner,
86
+ }));
87
+ }
88
+ // TYPE - if changed, need to recreate (not directly alterable)
89
+ if (mainServer.type !== branchServer.type) {
90
+ changes.push(new DropServer({ server: mainServer }));
91
+ changes.push(new CreateServer({ server: branchServer }));
92
+ if (branchServer.comment !== null) {
93
+ changes.push(new CreateCommentOnServer({ server: branchServer }));
94
+ }
95
+ continue;
96
+ }
97
+ // VERSION
98
+ if (mainServer.version !== branchServer.version) {
99
+ changes.push(new AlterServerSetVersion({
100
+ server: mainServer,
101
+ version: branchServer.version,
102
+ }));
103
+ }
104
+ // OPTIONS
105
+ const optionsChanged = diffOptions(mainServer.options, branchServer.options);
106
+ if (optionsChanged.length > 0) {
107
+ changes.push(new AlterServerSetOptions({
108
+ server: mainServer,
109
+ options: optionsChanged,
110
+ }));
111
+ }
112
+ // COMMENT
113
+ if (mainServer.comment !== branchServer.comment) {
114
+ if (branchServer.comment === null) {
115
+ changes.push(new DropCommentOnServer({ server: mainServer }));
116
+ }
117
+ else {
118
+ changes.push(new CreateCommentOnServer({ server: branchServer }));
119
+ }
120
+ }
121
+ // PRIVILEGES
122
+ const mainPrivilegesFiltered = filterPublicBuiltInDefaults("server", mainServer.privileges);
123
+ const branchPrivilegesFiltered = filterPublicBuiltInDefaults("server", branchServer.privileges);
124
+ const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchServer.owner, ctx.mainRoles);
125
+ for (const [grantee, result] of privilegeResults) {
126
+ // Generate grant changes
127
+ if (result.grants.length > 0) {
128
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
129
+ for (const [grantable, list] of grantGroups) {
130
+ void grantable;
131
+ changes.push(new GrantServerPrivileges({
132
+ server: branchServer,
133
+ grantee,
134
+ privileges: list,
135
+ version: ctx.version,
136
+ }));
137
+ }
138
+ }
139
+ // Generate revoke changes
140
+ if (result.revokes.length > 0) {
141
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
142
+ for (const [grantable, list] of revokeGroups) {
143
+ void grantable;
144
+ changes.push(new RevokeServerPrivileges({
145
+ server: mainServer,
146
+ grantee,
147
+ privileges: list,
148
+ version: ctx.version,
149
+ }));
150
+ }
151
+ }
152
+ // Generate revoke grant option changes
153
+ if (result.revokeGrantOption.length > 0) {
154
+ changes.push(new RevokeGrantOptionServerPrivileges({
155
+ server: mainServer,
156
+ grantee,
157
+ privilegeNames: result.revokeGrantOption,
158
+ version: ctx.version,
159
+ }));
160
+ }
161
+ }
162
+ // Note: Server renaming would also use ALTER SERVER ... RENAME TO ...
163
+ // But since our Server model uses 'name' as the identity field,
164
+ // a name change would be handled as drop + create by diffObjects()
165
+ }
166
+ return changes;
167
+ }
168
+ /**
169
+ * Diff options arrays to determine ADD/SET/DROP operations.
170
+ * Options are stored as [key1, value1, key2, value2, ...]
171
+ */
172
+ function diffOptions(mainOptions, branchOptions) {
173
+ const mainMap = new Map();
174
+ const branchMap = new Map();
175
+ // Parse main options
176
+ if (mainOptions) {
177
+ for (let i = 0; i < mainOptions.length; i += 2) {
178
+ if (i + 1 < mainOptions.length) {
179
+ mainMap.set(mainOptions[i], mainOptions[i + 1]);
180
+ }
181
+ }
182
+ }
183
+ // Parse branch options
184
+ if (branchOptions) {
185
+ for (let i = 0; i < branchOptions.length; i += 2) {
186
+ if (i + 1 < branchOptions.length) {
187
+ branchMap.set(branchOptions[i], branchOptions[i + 1]);
188
+ }
189
+ }
190
+ }
191
+ const changes = [];
192
+ // Find options to ADD or SET
193
+ for (const [key, value] of branchMap) {
194
+ const mainValue = mainMap.get(key);
195
+ if (mainValue === undefined) {
196
+ changes.push({ action: "ADD", option: key, value });
197
+ }
198
+ else if (mainValue !== value) {
199
+ changes.push({ action: "SET", option: key, value });
200
+ }
201
+ }
202
+ // Find options to DROP
203
+ for (const [key] of mainMap) {
204
+ if (!branchMap.has(key)) {
205
+ changes.push({ action: "DROP", option: key });
206
+ }
207
+ }
208
+ return changes;
209
+ }
@@ -0,0 +1,62 @@
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
+ /**
6
+ * All properties exposed by CREATE SERVER statement are included in diff output.
7
+ * https://www.postgresql.org/docs/17/sql-createserver.html
8
+ *
9
+ * ALTER SERVER statement can be generated for changes to the following properties:
10
+ * - owner, type, version, options
11
+ * https://www.postgresql.org/docs/17/sql-alterserver.html
12
+ *
13
+ * Servers are not schema-qualified (no schema property).
14
+ */
15
+ declare const serverPropsSchema: z.ZodObject<{
16
+ name: z.ZodString;
17
+ owner: z.ZodString;
18
+ foreign_data_wrapper: z.ZodString;
19
+ type: z.ZodNullable<z.ZodString>;
20
+ version: z.ZodNullable<z.ZodString>;
21
+ options: z.ZodNullable<z.ZodArray<z.ZodString>>;
22
+ comment: z.ZodNullable<z.ZodString>;
23
+ privileges: z.ZodArray<z.ZodObject<{
24
+ grantee: z.ZodString;
25
+ privilege: z.ZodString;
26
+ grantable: z.ZodBoolean;
27
+ columns: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
28
+ }, z.z.core.$strip>>;
29
+ }, z.z.core.$strip>;
30
+ type ServerPrivilegeProps = PrivilegeProps;
31
+ export type ServerProps = z.infer<typeof serverPropsSchema>;
32
+ export declare class Server extends BasePgModel {
33
+ readonly name: ServerProps["name"];
34
+ readonly owner: ServerProps["owner"];
35
+ readonly foreign_data_wrapper: ServerProps["foreign_data_wrapper"];
36
+ readonly type: ServerProps["type"];
37
+ readonly version: ServerProps["version"];
38
+ readonly options: ServerProps["options"];
39
+ readonly comment: ServerProps["comment"];
40
+ readonly privileges: ServerPrivilegeProps[];
41
+ constructor(props: ServerProps);
42
+ get stableId(): `server:${string}`;
43
+ get identityFields(): {
44
+ name: string;
45
+ };
46
+ get dataFields(): {
47
+ owner: string;
48
+ foreign_data_wrapper: string;
49
+ type: string | null;
50
+ version: string | null;
51
+ options: string[] | null;
52
+ comment: string | null;
53
+ privileges: {
54
+ grantee: string;
55
+ privilege: string;
56
+ grantable: boolean;
57
+ columns?: string[] | null | undefined;
58
+ }[];
59
+ };
60
+ }
61
+ export declare function extractServers(sql: Sql): Promise<Server[]>;
62
+ export {};
@@ -0,0 +1,118 @@
1
+ import z from "zod";
2
+ import { BasePgModel } from "../../base.model.js";
3
+ import { privilegePropsSchema, } from "../../base.privilege-diff.js";
4
+ /**
5
+ * All properties exposed by CREATE SERVER statement are included in diff output.
6
+ * https://www.postgresql.org/docs/17/sql-createserver.html
7
+ *
8
+ * ALTER SERVER statement can be generated for changes to the following properties:
9
+ * - owner, type, version, options
10
+ * https://www.postgresql.org/docs/17/sql-alterserver.html
11
+ *
12
+ * Servers are not schema-qualified (no schema property).
13
+ */
14
+ const serverPropsSchema = z.object({
15
+ name: z.string(),
16
+ owner: z.string(),
17
+ foreign_data_wrapper: z.string(),
18
+ type: z.string().nullable(),
19
+ version: z.string().nullable(),
20
+ options: z.array(z.string()).nullable(),
21
+ comment: z.string().nullable(),
22
+ privileges: z.array(privilegePropsSchema),
23
+ });
24
+ export class Server extends BasePgModel {
25
+ name;
26
+ owner;
27
+ foreign_data_wrapper;
28
+ type;
29
+ version;
30
+ options;
31
+ comment;
32
+ privileges;
33
+ constructor(props) {
34
+ super();
35
+ // Identity fields
36
+ this.name = props.name;
37
+ // Data fields
38
+ this.owner = props.owner;
39
+ this.foreign_data_wrapper = props.foreign_data_wrapper;
40
+ this.type = props.type;
41
+ this.version = props.version;
42
+ this.options = props.options;
43
+ this.comment = props.comment;
44
+ this.privileges = props.privileges;
45
+ }
46
+ get stableId() {
47
+ return `server:${this.name}`;
48
+ }
49
+ get identityFields() {
50
+ return {
51
+ name: this.name,
52
+ };
53
+ }
54
+ get dataFields() {
55
+ return {
56
+ owner: this.owner,
57
+ foreign_data_wrapper: this.foreign_data_wrapper,
58
+ type: this.type,
59
+ version: this.version,
60
+ options: this.options,
61
+ comment: this.comment,
62
+ privileges: this.privileges,
63
+ };
64
+ }
65
+ }
66
+ export async function extractServers(sql) {
67
+ return sql.begin(async (sql) => {
68
+ await sql `set search_path = ''`;
69
+ const serverRows = await sql `
70
+ select
71
+ quote_ident(srv.srvname) as name,
72
+ srv.srvowner::regrole::text as owner,
73
+ quote_ident(fdw.fdwname) as foreign_data_wrapper,
74
+ srv.srvtype as type,
75
+ srv.srvversion as version,
76
+ coalesce(srv.srvoptions, array[]::text[]) as options,
77
+ obj_description(srv.oid, 'pg_foreign_server') as comment,
78
+ coalesce(
79
+ (
80
+ select json_agg(
81
+ json_build_object(
82
+ 'grantee', case when x.grantee = 0 then 'PUBLIC' else x.grantee::regrole::text end,
83
+ 'privilege', x.privilege_type,
84
+ 'grantable', x.is_grantable
85
+ )
86
+ order by x.grantee, x.privilege_type
87
+ )
88
+ from lateral aclexplode(srv.srvacl) as x(grantor, grantee, privilege_type, is_grantable)
89
+ ), '[]'
90
+ ) as privileges
91
+ from
92
+ pg_catalog.pg_foreign_server srv
93
+ inner join pg_catalog.pg_foreign_data_wrapper fdw on fdw.oid = srv.srvfdw
94
+ where
95
+ not fdw.fdwname like any(array['pg\\_%'])
96
+ order by
97
+ srv.srvname;
98
+ `;
99
+ // Validate and parse each row using the Zod schema
100
+ const validatedRows = serverRows.map((row) => {
101
+ const parsed = serverPropsSchema.parse(row);
102
+ // Parse options from PostgreSQL format ['key=value'] to ['key', 'value']
103
+ if (parsed.options && parsed.options.length > 0) {
104
+ const parsedOptions = [];
105
+ for (const opt of parsed.options) {
106
+ const eqIndex = opt.indexOf("=");
107
+ if (eqIndex > 0) {
108
+ parsedOptions.push(opt.substring(0, eqIndex));
109
+ parsedOptions.push(opt.substring(eqIndex + 1));
110
+ }
111
+ }
112
+ parsed.options = parsedOptions.length > 0 ? parsedOptions : null;
113
+ }
114
+ return parsed;
115
+ });
116
+ return validatedRows.map((row) => new Server(row));
117
+ });
118
+ }
@@ -0,0 +1,37 @@
1
+ import type { UserMapping } from "../user-mapping.model.ts";
2
+ import { AlterUserMappingChange } from "./user-mapping.base.ts";
3
+ /**
4
+ * Alter a user mapping.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-alterusermapping.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * ALTER USER MAPPING FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC | SESSION_USER }
11
+ * SERVER server_name
12
+ * OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )
13
+ * ```
14
+ */
15
+ export type AlterUserMapping = AlterUserMappingSetOptions;
16
+ /**
17
+ * ALTER USER MAPPING ... OPTIONS ( ADD | SET | DROP ... )
18
+ */
19
+ export declare class AlterUserMappingSetOptions extends AlterUserMappingChange {
20
+ readonly userMapping: UserMapping;
21
+ readonly options: Array<{
22
+ action: "ADD" | "SET" | "DROP";
23
+ option: string;
24
+ value?: string;
25
+ }>;
26
+ readonly scope: "object";
27
+ constructor(props: {
28
+ userMapping: UserMapping;
29
+ options: Array<{
30
+ action: "ADD" | "SET" | "DROP";
31
+ option: string;
32
+ value?: string;
33
+ }>;
34
+ });
35
+ get requires(): `userMapping:${string}:${string}`[];
36
+ serialize(): string;
37
+ }
@@ -0,0 +1,38 @@
1
+ import { quoteLiteral } from "../../../base.change.js";
2
+ import { AlterUserMappingChange } from "./user-mapping.base.js";
3
+ /**
4
+ * ALTER USER MAPPING ... OPTIONS ( ADD | SET | DROP ... )
5
+ */
6
+ export class AlterUserMappingSetOptions extends AlterUserMappingChange {
7
+ userMapping;
8
+ options;
9
+ scope = "object";
10
+ constructor(props) {
11
+ super();
12
+ this.userMapping = props.userMapping;
13
+ this.options = props.options;
14
+ }
15
+ get requires() {
16
+ return [this.userMapping.stableId];
17
+ }
18
+ serialize() {
19
+ const optionParts = [];
20
+ for (const opt of this.options) {
21
+ if (opt.action === "DROP") {
22
+ optionParts.push(`DROP ${opt.option}`);
23
+ }
24
+ else {
25
+ const value = opt.value !== undefined ? quoteLiteral(opt.value) : "''";
26
+ optionParts.push(`${opt.action} ${opt.option} ${value}`);
27
+ }
28
+ }
29
+ return [
30
+ "ALTER USER MAPPING FOR",
31
+ this.userMapping.user,
32
+ "SERVER",
33
+ this.userMapping.server,
34
+ "OPTIONS",
35
+ `(${optionParts.join(", ")})`,
36
+ ].join(" ");
37
+ }
38
+ }
@@ -0,0 +1,17 @@
1
+ import { BaseChange } from "../../../base.change.ts";
2
+ import type { UserMapping } from "../user-mapping.model.ts";
3
+ declare abstract class BaseUserMappingChange extends BaseChange {
4
+ abstract readonly userMapping: UserMapping;
5
+ abstract readonly scope: "object";
6
+ readonly objectType: "user_mapping";
7
+ }
8
+ export declare abstract class CreateUserMappingChange extends BaseUserMappingChange {
9
+ readonly operation: "create";
10
+ }
11
+ export declare abstract class AlterUserMappingChange extends BaseUserMappingChange {
12
+ readonly operation: "alter";
13
+ }
14
+ export declare abstract class DropUserMappingChange extends BaseUserMappingChange {
15
+ readonly operation: "drop";
16
+ }
17
+ export {};
@@ -0,0 +1,13 @@
1
+ import { BaseChange } from "../../../base.change.js";
2
+ class BaseUserMappingChange extends BaseChange {
3
+ objectType = "user_mapping";
4
+ }
5
+ export class CreateUserMappingChange extends BaseUserMappingChange {
6
+ operation = "create";
7
+ }
8
+ export class AlterUserMappingChange extends BaseUserMappingChange {
9
+ operation = "alter";
10
+ }
11
+ export class DropUserMappingChange extends BaseUserMappingChange {
12
+ operation = "drop";
13
+ }
@@ -0,0 +1,24 @@
1
+ import type { UserMapping } from "../user-mapping.model.ts";
2
+ import { CreateUserMappingChange } from "./user-mapping.base.ts";
3
+ /**
4
+ * Create a user mapping.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-createusermapping.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * CREATE USER MAPPING [ IF NOT EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC | SESSION_USER }
11
+ * SERVER server_name
12
+ * [ OPTIONS ( option 'value' [, ... ] ) ]
13
+ * ```
14
+ */
15
+ export declare class CreateUserMapping extends CreateUserMappingChange {
16
+ readonly userMapping: UserMapping;
17
+ readonly scope: "object";
18
+ constructor(props: {
19
+ userMapping: UserMapping;
20
+ });
21
+ get creates(): `userMapping:${string}:${string}`[];
22
+ get requires(): string[];
23
+ serialize(): string;
24
+ }
@@ -0,0 +1,52 @@
1
+ import { quoteLiteral } from "../../../base.change.js";
2
+ import { stableId } from "../../../utils.js";
3
+ import { CreateUserMappingChange } from "./user-mapping.base.js";
4
+ /**
5
+ * Create a user mapping.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-createusermapping.html
8
+ *
9
+ * Synopsis
10
+ * ```sql
11
+ * CREATE USER MAPPING [ IF NOT EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC | SESSION_USER }
12
+ * SERVER server_name
13
+ * [ OPTIONS ( option 'value' [, ... ] ) ]
14
+ * ```
15
+ */
16
+ export class CreateUserMapping extends CreateUserMappingChange {
17
+ userMapping;
18
+ scope = "object";
19
+ constructor(props) {
20
+ super();
21
+ this.userMapping = props.userMapping;
22
+ }
23
+ get creates() {
24
+ return [this.userMapping.stableId];
25
+ }
26
+ get requires() {
27
+ const dependencies = new Set();
28
+ // Server dependency
29
+ dependencies.add(stableId.server(this.userMapping.server));
30
+ return Array.from(dependencies);
31
+ }
32
+ serialize() {
33
+ const parts = ["CREATE USER MAPPING FOR"];
34
+ // Add user (can be CURRENT_USER, PUBLIC, etc.)
35
+ parts.push(this.userMapping.user);
36
+ // Add SERVER clause
37
+ parts.push("SERVER", this.userMapping.server);
38
+ // Add OPTIONS clause
39
+ if (this.userMapping.options && this.userMapping.options.length > 0) {
40
+ const optionPairs = [];
41
+ for (let i = 0; i < this.userMapping.options.length; i += 2) {
42
+ if (i + 1 < this.userMapping.options.length) {
43
+ optionPairs.push(`${this.userMapping.options[i]} ${quoteLiteral(this.userMapping.options[i + 1])}`);
44
+ }
45
+ }
46
+ if (optionPairs.length > 0) {
47
+ parts.push(`OPTIONS (${optionPairs.join(", ")})`);
48
+ }
49
+ }
50
+ return parts.join(" ");
51
+ }
52
+ }
@@ -0,0 +1,23 @@
1
+ import type { UserMapping } from "../user-mapping.model.ts";
2
+ import { DropUserMappingChange } from "./user-mapping.base.ts";
3
+ /**
4
+ * Drop a user mapping.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-dropusermapping.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC | SESSION_USER }
11
+ * SERVER server_name
12
+ * ```
13
+ */
14
+ export declare class DropUserMapping extends DropUserMappingChange {
15
+ readonly userMapping: UserMapping;
16
+ readonly scope: "object";
17
+ constructor(props: {
18
+ userMapping: UserMapping;
19
+ });
20
+ get drops(): `userMapping:${string}:${string}`[];
21
+ get requires(): `userMapping:${string}:${string}`[];
22
+ serialize(): string;
23
+ }
@@ -0,0 +1,34 @@
1
+ import { DropUserMappingChange } from "./user-mapping.base.js";
2
+ /**
3
+ * Drop a user mapping.
4
+ *
5
+ * @see https://www.postgresql.org/docs/17/sql-dropusermapping.html
6
+ *
7
+ * Synopsis
8
+ * ```sql
9
+ * DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC | SESSION_USER }
10
+ * SERVER server_name
11
+ * ```
12
+ */
13
+ export class DropUserMapping extends DropUserMappingChange {
14
+ userMapping;
15
+ scope = "object";
16
+ constructor(props) {
17
+ super();
18
+ this.userMapping = props.userMapping;
19
+ }
20
+ get drops() {
21
+ return [this.userMapping.stableId];
22
+ }
23
+ get requires() {
24
+ return [this.userMapping.stableId];
25
+ }
26
+ serialize() {
27
+ return [
28
+ "DROP USER MAPPING FOR",
29
+ this.userMapping.user,
30
+ "SERVER",
31
+ this.userMapping.server,
32
+ ].join(" ");
33
+ }
34
+ }
@@ -0,0 +1,4 @@
1
+ import type { AlterUserMapping } from "./user-mapping.alter.ts";
2
+ import type { CreateUserMapping } from "./user-mapping.create.ts";
3
+ import type { DropUserMapping } from "./user-mapping.drop.ts";
4
+ export type UserMappingChange = AlterUserMapping | CreateUserMapping | DropUserMapping;
@@ -0,0 +1,10 @@
1
+ import type { UserMappingChange } from "./changes/user-mapping.types.ts";
2
+ import type { UserMapping } from "./user-mapping.model.ts";
3
+ /**
4
+ * Diff two sets of user mappings from main and branch catalogs.
5
+ *
6
+ * @param main - The user mappings in the main catalog.
7
+ * @param branch - The user mappings in the branch catalog.
8
+ * @returns A list of changes to apply to main to make it match branch.
9
+ */
10
+ export declare function diffUserMappings(main: Record<string, UserMapping>, branch: Record<string, UserMapping>): UserMappingChange[];