@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,77 @@
1
+ import { diffObjects } from "../../base.diff.js";
2
+ import { AlterUserMappingSetOptions } from "./changes/user-mapping.alter.js";
3
+ import { CreateUserMapping } from "./changes/user-mapping.create.js";
4
+ import { DropUserMapping } from "./changes/user-mapping.drop.js";
5
+ /**
6
+ * Diff two sets of user mappings from main and branch catalogs.
7
+ *
8
+ * @param main - The user mappings in the main catalog.
9
+ * @param branch - The user mappings in the branch catalog.
10
+ * @returns A list of changes to apply to main to make it match branch.
11
+ */
12
+ export function diffUserMappings(main, branch) {
13
+ const { created, dropped, altered } = diffObjects(main, branch);
14
+ const changes = [];
15
+ for (const mappingId of created) {
16
+ const createdMapping = branch[mappingId];
17
+ changes.push(new CreateUserMapping({ userMapping: createdMapping }));
18
+ }
19
+ for (const mappingId of dropped) {
20
+ changes.push(new DropUserMapping({ userMapping: main[mappingId] }));
21
+ }
22
+ for (const mappingId of altered) {
23
+ const mainMapping = main[mappingId];
24
+ const branchMapping = branch[mappingId];
25
+ // OPTIONS
26
+ const optionsChanged = diffOptions(mainMapping.options, branchMapping.options);
27
+ if (optionsChanged.length > 0) {
28
+ changes.push(new AlterUserMappingSetOptions({
29
+ userMapping: mainMapping,
30
+ options: optionsChanged,
31
+ }));
32
+ }
33
+ }
34
+ return changes;
35
+ }
36
+ /**
37
+ * Diff options arrays to determine ADD/SET/DROP operations.
38
+ * Options are stored as [key1, value1, key2, value2, ...]
39
+ */
40
+ function diffOptions(mainOptions, branchOptions) {
41
+ const mainMap = new Map();
42
+ const branchMap = new Map();
43
+ // Parse main options
44
+ if (mainOptions) {
45
+ for (let i = 0; i < mainOptions.length; i += 2) {
46
+ if (i + 1 < mainOptions.length) {
47
+ mainMap.set(mainOptions[i], mainOptions[i + 1]);
48
+ }
49
+ }
50
+ }
51
+ // Parse branch options
52
+ if (branchOptions) {
53
+ for (let i = 0; i < branchOptions.length; i += 2) {
54
+ if (i + 1 < branchOptions.length) {
55
+ branchMap.set(branchOptions[i], branchOptions[i + 1]);
56
+ }
57
+ }
58
+ }
59
+ const changes = [];
60
+ // Find options to ADD or SET
61
+ for (const [key, value] of branchMap) {
62
+ const mainValue = mainMap.get(key);
63
+ if (mainValue === undefined) {
64
+ changes.push({ action: "ADD", option: key, value });
65
+ }
66
+ else if (mainValue !== value) {
67
+ changes.push({ action: "SET", option: key, value });
68
+ }
69
+ }
70
+ // Find options to DROP
71
+ for (const [key] of mainMap) {
72
+ if (!branchMap.has(key)) {
73
+ changes.push({ action: "DROP", option: key });
74
+ }
75
+ }
76
+ return changes;
77
+ }
@@ -0,0 +1,36 @@
1
+ import type { Sql } from "postgres";
2
+ import z from "zod";
3
+ import { BasePgModel } from "../../base.model.ts";
4
+ /**
5
+ * All properties exposed by CREATE USER MAPPING statement are included in diff output.
6
+ * https://www.postgresql.org/docs/17/sql-createusermapping.html
7
+ *
8
+ * ALTER USER MAPPING statement can be generated for changes to the following properties:
9
+ * - options
10
+ * https://www.postgresql.org/docs/17/sql-alterusermapping.html
11
+ *
12
+ * User mappings are not schema-qualified (no schema property).
13
+ * User can be a role name, CURRENT_USER, PUBLIC, etc.
14
+ */
15
+ declare const userMappingPropsSchema: z.ZodObject<{
16
+ user: z.ZodString;
17
+ server: z.ZodString;
18
+ options: z.ZodNullable<z.ZodArray<z.ZodString>>;
19
+ }, z.z.core.$strip>;
20
+ export type UserMappingProps = z.infer<typeof userMappingPropsSchema>;
21
+ export declare class UserMapping extends BasePgModel {
22
+ readonly user: UserMappingProps["user"];
23
+ readonly server: UserMappingProps["server"];
24
+ readonly options: UserMappingProps["options"];
25
+ constructor(props: UserMappingProps);
26
+ get stableId(): `userMapping:${string}:${string}`;
27
+ get identityFields(): {
28
+ user: string;
29
+ server: string;
30
+ };
31
+ get dataFields(): {
32
+ options: string[] | null;
33
+ };
34
+ }
35
+ export declare function extractUserMappings(sql: Sql): Promise<UserMapping[]>;
36
+ export {};
@@ -0,0 +1,85 @@
1
+ import z from "zod";
2
+ import { BasePgModel } from "../../base.model.js";
3
+ /**
4
+ * All properties exposed by CREATE USER MAPPING statement are included in diff output.
5
+ * https://www.postgresql.org/docs/17/sql-createusermapping.html
6
+ *
7
+ * ALTER USER MAPPING statement can be generated for changes to the following properties:
8
+ * - options
9
+ * https://www.postgresql.org/docs/17/sql-alterusermapping.html
10
+ *
11
+ * User mappings are not schema-qualified (no schema property).
12
+ * User can be a role name, CURRENT_USER, PUBLIC, etc.
13
+ */
14
+ const userMappingPropsSchema = z.object({
15
+ user: z.string(),
16
+ server: z.string(),
17
+ options: z.array(z.string()).nullable(),
18
+ });
19
+ export class UserMapping extends BasePgModel {
20
+ user;
21
+ server;
22
+ options;
23
+ constructor(props) {
24
+ super();
25
+ // Identity fields
26
+ this.user = props.user;
27
+ this.server = props.server;
28
+ // Data fields
29
+ this.options = props.options;
30
+ }
31
+ get stableId() {
32
+ return `userMapping:${this.server}:${this.user}`;
33
+ }
34
+ get identityFields() {
35
+ return {
36
+ user: this.user,
37
+ server: this.server,
38
+ };
39
+ }
40
+ get dataFields() {
41
+ return {
42
+ options: this.options,
43
+ };
44
+ }
45
+ }
46
+ export async function extractUserMappings(sql) {
47
+ return sql.begin(async (sql) => {
48
+ await sql `set search_path = ''`;
49
+ const mappingRows = await sql `
50
+ select
51
+ case
52
+ when um.umuser = 0 then 'PUBLIC'
53
+ else um.umuser::regrole::text
54
+ end as user,
55
+ quote_ident(srv.srvname) as server,
56
+ coalesce(um.umoptions, array[]::text[]) as options
57
+ from
58
+ pg_catalog.pg_user_mapping um
59
+ inner join pg_catalog.pg_foreign_server srv on srv.oid = um.umserver
60
+ inner join pg_catalog.pg_foreign_data_wrapper fdw on fdw.oid = srv.srvfdw
61
+ where
62
+ not fdw.fdwname like any(array['pg\\_%'])
63
+ order by
64
+ srv.srvname, um.umuser;
65
+ `;
66
+ // Validate and parse each row using the Zod schema
67
+ const validatedRows = mappingRows.map((row) => {
68
+ const parsed = userMappingPropsSchema.parse(row);
69
+ // Parse options from PostgreSQL format ['key=value'] to ['key', 'value']
70
+ if (parsed.options && parsed.options.length > 0) {
71
+ const parsedOptions = [];
72
+ for (const opt of parsed.options) {
73
+ const eqIndex = opt.indexOf("=");
74
+ if (eqIndex > 0) {
75
+ parsedOptions.push(opt.substring(0, eqIndex));
76
+ parsedOptions.push(opt.substring(eqIndex + 1));
77
+ }
78
+ }
79
+ parsed.options = parsedOptions.length > 0 ? parsedOptions : null;
80
+ }
81
+ return parsed;
82
+ });
83
+ return validatedRows.map((row) => new UserMapping(row));
84
+ });
85
+ }
@@ -0,0 +1,76 @@
1
+ import { BaseChange } from "../../base.change.ts";
2
+ import type { Index } from "../index.model.ts";
3
+ import { AlterIndexChange } from "./index.base.ts";
4
+ /**
5
+ * Alter an index.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-alterindex.html
8
+ *
9
+ * Synopsis
10
+ * ```sql
11
+ * ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name SET TABLESPACE tablespace_name
12
+ * ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name SET ( storage_parameter = value [, ... ] )
13
+ * ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
14
+ * ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name SET STATISTICS integer
15
+ * ALTER INDEX [ CONCURRENTLY ] [ IF EXISTS ] name ALTER [ COLUMN ] column_number SET STATISTICS integer
16
+ * ```
17
+ */
18
+ export type AlterIndex = AlterIndexSetStatistics | AlterIndexSetStorageParams | AlterIndexSetTablespace;
19
+ /**
20
+ * ALTER INDEX ... SET ( storage_parameter = value [, ... ] )
21
+ */
22
+ export declare class AlterIndexSetStorageParams extends AlterIndexChange {
23
+ readonly index: Index;
24
+ readonly paramsToSet: string[];
25
+ readonly keysToReset: string[];
26
+ readonly scope: "object";
27
+ constructor(props: {
28
+ index: Index;
29
+ paramsToSet: string[];
30
+ keysToReset: string[];
31
+ });
32
+ get requires(): `index:${string}`[];
33
+ serialize(): string;
34
+ }
35
+ /**
36
+ * ALTER INDEX ... SET STATISTICS ...
37
+ */
38
+ export declare class AlterIndexSetStatistics extends BaseChange {
39
+ readonly index: Index;
40
+ readonly columnTargets: Array<{
41
+ columnNumber: number;
42
+ statistics: number;
43
+ }>;
44
+ readonly operation: "alter";
45
+ readonly scope: "object";
46
+ readonly objectType: "index";
47
+ constructor(props: {
48
+ index: Index;
49
+ columnTargets: Array<{
50
+ columnNumber: number;
51
+ statistics: number;
52
+ }>;
53
+ });
54
+ get requires(): `index:${string}`[];
55
+ serialize(): string;
56
+ }
57
+ /**
58
+ * ALTER INDEX ... SET TABLESPACE ...
59
+ */
60
+ export declare class AlterIndexSetTablespace extends BaseChange {
61
+ readonly index: Index;
62
+ readonly tablespace: string;
63
+ readonly operation: "alter";
64
+ readonly scope: "object";
65
+ readonly objectType: "index";
66
+ constructor(props: {
67
+ index: Index;
68
+ tablespace: string;
69
+ });
70
+ get requires(): `index:${string}`[];
71
+ serialize(): string;
72
+ }
73
+ /**
74
+ * Replace an index by dropping and recreating it.
75
+ * This is used when properties that cannot be altered via ALTER INDEX change.
76
+ */
@@ -0,0 +1,94 @@
1
+ import { BaseChange } from "../../base.change.js";
2
+ import { AlterIndexChange } from "./index.base.js";
3
+ /**
4
+ * ALTER INDEX ... SET ( storage_parameter = value [, ... ] )
5
+ */
6
+ export class AlterIndexSetStorageParams extends AlterIndexChange {
7
+ index;
8
+ paramsToSet;
9
+ keysToReset;
10
+ scope = "object";
11
+ constructor(props) {
12
+ super();
13
+ this.index = props.index;
14
+ this.paramsToSet = props.paramsToSet;
15
+ this.keysToReset = props.keysToReset;
16
+ }
17
+ get requires() {
18
+ return [this.index.stableId];
19
+ }
20
+ serialize() {
21
+ const head = [
22
+ "ALTER INDEX",
23
+ `${this.index.schema}.${this.index.name}`,
24
+ ].join(" ");
25
+ const statements = [];
26
+ if (this.keysToReset.length > 0) {
27
+ statements.push(`${head} RESET (${this.keysToReset.join(", ")})`);
28
+ }
29
+ if (this.paramsToSet.length > 0) {
30
+ statements.push(`${head} SET (${this.paramsToSet.join(", ")})`);
31
+ }
32
+ return statements.join(";\n");
33
+ }
34
+ }
35
+ /**
36
+ * ALTER INDEX ... SET STATISTICS ...
37
+ */
38
+ export class AlterIndexSetStatistics extends BaseChange {
39
+ index;
40
+ columnTargets;
41
+ operation = "alter";
42
+ scope = "object";
43
+ objectType = "index";
44
+ constructor(props) {
45
+ super();
46
+ this.index = props.index;
47
+ this.columnTargets = props.columnTargets;
48
+ }
49
+ get requires() {
50
+ return [this.index.stableId];
51
+ }
52
+ serialize() {
53
+ const statements = [];
54
+ const head = [
55
+ "ALTER INDEX",
56
+ `${this.index.schema}.${this.index.name}`,
57
+ ].join(" ");
58
+ for (const { columnNumber, statistics } of this.columnTargets) {
59
+ statements.push(`${head} ALTER COLUMN ${columnNumber} SET STATISTICS ${statistics.toString()}`);
60
+ }
61
+ return statements.join(";\n");
62
+ }
63
+ }
64
+ /**
65
+ * ALTER INDEX ... SET TABLESPACE ...
66
+ */
67
+ export class AlterIndexSetTablespace extends BaseChange {
68
+ index;
69
+ tablespace;
70
+ operation = "alter";
71
+ scope = "object";
72
+ objectType = "index";
73
+ constructor(props) {
74
+ super();
75
+ this.index = props.index;
76
+ this.tablespace = props.tablespace;
77
+ }
78
+ get requires() {
79
+ return [this.index.stableId];
80
+ }
81
+ serialize() {
82
+ return [
83
+ "ALTER INDEX",
84
+ `${this.index.schema}.${this.index.name}`,
85
+ "SET TABLESPACE",
86
+ this.tablespace,
87
+ ].join(" ");
88
+ }
89
+ }
90
+ /**
91
+ * Replace an index by dropping and recreating it.
92
+ * This is used when properties that cannot be altered via ALTER INDEX change.
93
+ */
94
+ // NOTE: ReplaceIndex removed. Non-alterable changes are emitted as DropIndex + CreateIndex in index.diff.ts.
@@ -0,0 +1,17 @@
1
+ import { BaseChange } from "../../base.change.ts";
2
+ import type { Index } from "../index.model.ts";
3
+ declare abstract class BaseIndexChange extends BaseChange {
4
+ abstract readonly index: Index;
5
+ abstract readonly scope: "object" | "comment";
6
+ readonly objectType: "index";
7
+ }
8
+ export declare abstract class CreateIndexChange extends BaseIndexChange {
9
+ readonly operation: "create";
10
+ }
11
+ export declare abstract class AlterIndexChange extends BaseIndexChange {
12
+ readonly operation: "alter";
13
+ }
14
+ export declare abstract class DropIndexChange extends BaseIndexChange {
15
+ readonly operation: "drop";
16
+ }
17
+ export {};
@@ -0,0 +1,13 @@
1
+ import { BaseChange } from "../../base.change.js";
2
+ class BaseIndexChange extends BaseChange {
3
+ objectType = "index";
4
+ }
5
+ export class CreateIndexChange extends BaseIndexChange {
6
+ operation = "create";
7
+ }
8
+ export class AlterIndexChange extends BaseIndexChange {
9
+ operation = "alter";
10
+ }
11
+ export class DropIndexChange extends BaseIndexChange {
12
+ operation = "drop";
13
+ }
@@ -0,0 +1,26 @@
1
+ import type { Index } from "../index.model.ts";
2
+ import { CreateIndexChange, DropIndexChange } from "./index.base.ts";
3
+ export type CommentIndex = CreateCommentOnIndex | DropCommentOnIndex;
4
+ /**
5
+ * Create/drop comments on indexes.
6
+ */
7
+ export declare class CreateCommentOnIndex extends CreateIndexChange {
8
+ readonly index: Index;
9
+ readonly scope: "comment";
10
+ constructor(props: {
11
+ index: Index;
12
+ });
13
+ get creates(): `comment:${string}`[];
14
+ get requires(): `index:${string}`[];
15
+ serialize(): string;
16
+ }
17
+ export declare class DropCommentOnIndex extends DropIndexChange {
18
+ readonly index: Index;
19
+ readonly scope: "comment";
20
+ constructor(props: {
21
+ index: Index;
22
+ });
23
+ get drops(): `comment:${string}`[];
24
+ get requires(): (`comment:${string}` | `index:${string}`)[];
25
+ serialize(): string;
26
+ }
@@ -0,0 +1,50 @@
1
+ import { quoteLiteral } from "../../base.change.js";
2
+ import { stableId } from "../../utils.js";
3
+ import { CreateIndexChange, DropIndexChange } from "./index.base.js";
4
+ /**
5
+ * Create/drop comments on indexes.
6
+ */
7
+ export class CreateCommentOnIndex extends CreateIndexChange {
8
+ index;
9
+ scope = "comment";
10
+ constructor(props) {
11
+ super();
12
+ this.index = props.index;
13
+ }
14
+ get creates() {
15
+ return [stableId.comment(this.index.stableId)];
16
+ }
17
+ get requires() {
18
+ return [this.index.stableId];
19
+ }
20
+ serialize() {
21
+ return [
22
+ "COMMENT ON INDEX",
23
+ `${this.index.schema}.${this.index.name}`,
24
+ "IS",
25
+ // biome-ignore lint/style/noNonNullAssertion: index comment is not nullable here
26
+ quoteLiteral(this.index.comment),
27
+ ].join(" ");
28
+ }
29
+ }
30
+ export class DropCommentOnIndex extends DropIndexChange {
31
+ index;
32
+ scope = "comment";
33
+ constructor(props) {
34
+ super();
35
+ this.index = props.index;
36
+ }
37
+ get drops() {
38
+ return [stableId.comment(this.index.stableId)];
39
+ }
40
+ get requires() {
41
+ return [stableId.comment(this.index.stableId), this.index.stableId];
42
+ }
43
+ serialize() {
44
+ return [
45
+ "COMMENT ON INDEX",
46
+ `${this.index.schema}.${this.index.name}`,
47
+ "IS NULL",
48
+ ].join(" ");
49
+ }
50
+ }
@@ -0,0 +1,30 @@
1
+ import type { TableLikeObject } from "../../base.model.ts";
2
+ import type { Index } from "../index.model.ts";
3
+ import { CreateIndexChange } from "./index.base.ts";
4
+ /**
5
+ * Create an index.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-createindex.html
8
+ *
9
+ * Synopsis
10
+ * ```sql
11
+ * CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
12
+ * ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
13
+ * [ INCLUDE ( column_name [, ...] ) ]
14
+ * [ WITH ( storage_parameter [= value] [, ... ] ) ]
15
+ * [ TABLESPACE tablespace_name ]
16
+ * [ WHERE predicate ]
17
+ * ```
18
+ */
19
+ export declare class CreateIndex extends CreateIndexChange {
20
+ readonly index: Index;
21
+ readonly indexableObject?: TableLikeObject;
22
+ readonly scope: "object";
23
+ constructor(props: {
24
+ index: Index;
25
+ indexableObject?: TableLikeObject;
26
+ });
27
+ get creates(): `index:${string}`[];
28
+ get requires(): string[];
29
+ serialize(): string;
30
+ }
@@ -0,0 +1,53 @@
1
+ import { stableId } from "../../utils.js";
2
+ import { CreateIndexChange } from "./index.base.js";
3
+ import { checkIsSerializable } from "./utils.js";
4
+ /**
5
+ * Create an index.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-createindex.html
8
+ *
9
+ * Synopsis
10
+ * ```sql
11
+ * CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
12
+ * ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
13
+ * [ INCLUDE ( column_name [, ...] ) ]
14
+ * [ WITH ( storage_parameter [= value] [, ... ] ) ]
15
+ * [ TABLESPACE tablespace_name ]
16
+ * [ WHERE predicate ]
17
+ * ```
18
+ */
19
+ export class CreateIndex extends CreateIndexChange {
20
+ index;
21
+ indexableObject;
22
+ scope = "object";
23
+ constructor(props) {
24
+ super();
25
+ checkIsSerializable(props.index, props.indexableObject);
26
+ this.index = props.index;
27
+ this.indexableObject = props.indexableObject;
28
+ }
29
+ get creates() {
30
+ return [this.index.stableId];
31
+ }
32
+ get requires() {
33
+ const dependencies = new Set();
34
+ // Schema dependency
35
+ dependencies.add(stableId.schema(this.index.schema));
36
+ // Table dependency
37
+ dependencies.add(stableId.table(this.index.schema, this.index.table_name));
38
+ // Owner dependency
39
+ dependencies.add(stableId.role(this.index.owner));
40
+ return Array.from(dependencies);
41
+ }
42
+ serialize() {
43
+ let definition = this.index.definition;
44
+ // btree being the default, we can omit it
45
+ definition = definition.replace(" USING btree", "");
46
+ // Remove "ON ONLY" for partitioned indexes to allow automatic propagation to partitions.
47
+ // Preserve "ON ONLY" for non-partitioned indexes on partitioned tables (explicit user intent).
48
+ if (this.index.is_partitioned_index) {
49
+ definition = definition.replace(/\s+ON\s+ONLY\s+/i, " ON ");
50
+ }
51
+ return definition;
52
+ }
53
+ }
@@ -0,0 +1,22 @@
1
+ import type { Index } from "../index.model.ts";
2
+ import { DropIndexChange } from "./index.base.ts";
3
+ /**
4
+ * Drop an index.
5
+ *
6
+ * @see https://www.postgresql.org/docs/17/sql-dropindex.html
7
+ *
8
+ * Synopsis
9
+ * ```sql
10
+ * DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
11
+ * ```
12
+ */
13
+ export declare class DropIndex extends DropIndexChange {
14
+ readonly index: Index;
15
+ readonly scope: "object";
16
+ constructor(props: {
17
+ index: Index;
18
+ });
19
+ get drops(): `index:${string}`[];
20
+ get requires(): `index:${string}`[];
21
+ serialize(): string;
22
+ }
@@ -0,0 +1,28 @@
1
+ import { DropIndexChange } from "./index.base.js";
2
+ /**
3
+ * Drop an index.
4
+ *
5
+ * @see https://www.postgresql.org/docs/17/sql-dropindex.html
6
+ *
7
+ * Synopsis
8
+ * ```sql
9
+ * DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
10
+ * ```
11
+ */
12
+ export class DropIndex extends DropIndexChange {
13
+ index;
14
+ scope = "object";
15
+ constructor(props) {
16
+ super();
17
+ this.index = props.index;
18
+ }
19
+ get drops() {
20
+ return [this.index.stableId];
21
+ }
22
+ get requires() {
23
+ return [this.index.stableId];
24
+ }
25
+ serialize() {
26
+ return ["DROP INDEX", `${this.index.schema}.${this.index.name}`].join(" ");
27
+ }
28
+ }
@@ -0,0 +1,5 @@
1
+ import type { AlterIndex } from "./index.alter.ts";
2
+ import type { CommentIndex } from "./index.comment.ts";
3
+ import type { CreateIndex } from "./index.create.ts";
4
+ import type { DropIndex } from "./index.drop.ts";
5
+ export type IndexChange = AlterIndex | CommentIndex | CreateIndex | DropIndex;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { TableLikeObject } from "../../base.model.ts";
2
+ import type { Index } from "../index.model.ts";
3
+ export declare function checkIsSerializable(index: Index, indexableObject?: TableLikeObject): void;
@@ -0,0 +1,6 @@
1
+ export function checkIsSerializable(index, indexableObject) {
2
+ if (index.index_expressions === null &&
3
+ (indexableObject === undefined || indexableObject.columns.length === 0)) {
4
+ throw new Error("Index requires an indexableObject with columns when key_columns are used");
5
+ }
6
+ }
@@ -0,0 +1,12 @@
1
+ import type { TableLikeObject } from "../base.model.ts";
2
+ import type { IndexChange } from "./changes/index.types.ts";
3
+ import type { Index } from "./index.model.ts";
4
+ /**
5
+ * Diff two sets of indexes from main and branch catalogs.
6
+ *
7
+ * @param main - The indexes in the main catalog.
8
+ * @param branch - The indexes in the branch catalog.
9
+ * @param branchIndexableObjects - Table-like objects (tables, materialized views) in branch.
10
+ * @returns A list of changes to apply to main to make it match branch.
11
+ */
12
+ export declare function diffIndexes(main: Record<string, Index>, branch: Record<string, Index>, branchIndexableObjects: Record<string, TableLikeObject>): IndexChange[];