@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,426 @@
1
+ import z from "zod";
2
+ import { BasePgModel, columnPropsSchema, normalizeColumns, } from "../base.model.js";
3
+ import { normalizePrivileges } from "../base.privilege.js";
4
+ import { privilegePropsSchema, } from "../base.privilege-diff.js";
5
+ const RelationPersistenceSchema = z.enum([
6
+ "p", // permanent
7
+ "u", // unlogged
8
+ "t", // temporary
9
+ ]);
10
+ export const ReplicaIdentitySchema = z.enum([
11
+ "d", // DEFAULT (use default key)
12
+ "n", // NOTHING (no replica identity)
13
+ "f", // FULL (all columns)
14
+ "i", // INDEX (specific index)
15
+ ]);
16
+ const ForeignKeyActionSchema = z.enum([
17
+ "a", // NO ACTION
18
+ "r", // RESTRICT
19
+ "c", // CASCADE
20
+ "n", // SET NULL
21
+ "d", // SET DEFAULT
22
+ ]);
23
+ const ForeignKeyMatchTypeSchema = z.enum([
24
+ "f", // FULL
25
+ "p", // PARTIAL
26
+ "s", // SIMPLE
27
+ "u", // UNSPECIFIED (default)
28
+ ]);
29
+ const tableConstraintPropsSchema = z.object({
30
+ name: z.string(),
31
+ constraint_type: z.enum([
32
+ "c", // CHECK constraint
33
+ "f", // FOREIGN KEY constraint
34
+ "p", // PRIMARY KEY constraint
35
+ "u", // UNIQUE constraint
36
+ "x", // EXCLUDE constraint
37
+ ]),
38
+ deferrable: z.boolean(),
39
+ initially_deferred: z.boolean(),
40
+ validated: z.boolean(),
41
+ is_local: z.boolean(),
42
+ no_inherit: z.boolean(),
43
+ is_partition_clone: z.boolean(),
44
+ parent_constraint_schema: z.string().nullable(),
45
+ parent_constraint_name: z.string().nullable(),
46
+ parent_table_schema: z.string().nullable(),
47
+ parent_table_name: z.string().nullable(),
48
+ key_columns: z.array(z.string()),
49
+ foreign_key_columns: z.array(z.string()).nullable(),
50
+ foreign_key_table: z.string().nullable(),
51
+ foreign_key_schema: z.string().nullable(),
52
+ foreign_key_table_is_partition: z.boolean().nullable(),
53
+ foreign_key_parent_schema: z.string().nullable(),
54
+ foreign_key_parent_table: z.string().nullable(),
55
+ foreign_key_effective_schema: z.string().nullable(),
56
+ foreign_key_effective_table: z.string().nullable(),
57
+ on_update: ForeignKeyActionSchema.nullable(),
58
+ on_delete: ForeignKeyActionSchema.nullable(),
59
+ match_type: ForeignKeyMatchTypeSchema.nullable(),
60
+ check_expression: z.string().nullable(),
61
+ owner: z.string(),
62
+ definition: z.string(),
63
+ comment: z.string().nullable().optional(),
64
+ });
65
+ const tablePropsSchema = z.object({
66
+ schema: z.string(),
67
+ name: z.string(),
68
+ persistence: RelationPersistenceSchema,
69
+ row_security: z.boolean(),
70
+ force_row_security: z.boolean(),
71
+ has_indexes: z.boolean(),
72
+ has_rules: z.boolean(),
73
+ has_triggers: z.boolean(),
74
+ has_subclasses: z.boolean(),
75
+ is_populated: z.boolean(),
76
+ replica_identity: ReplicaIdentitySchema,
77
+ is_partition: z.boolean(),
78
+ options: z.array(z.string()).nullable(),
79
+ partition_bound: z.string().nullable(),
80
+ partition_by: z.string().nullable(),
81
+ owner: z.string(),
82
+ comment: z.string().nullable().optional(),
83
+ parent_schema: z.string().nullable(),
84
+ parent_name: z.string().nullable(),
85
+ columns: z.array(columnPropsSchema),
86
+ constraints: z.array(tableConstraintPropsSchema).optional(),
87
+ privileges: z.array(privilegePropsSchema),
88
+ });
89
+ export class Table extends BasePgModel {
90
+ schema;
91
+ name;
92
+ persistence;
93
+ row_security;
94
+ force_row_security;
95
+ has_indexes;
96
+ has_rules;
97
+ has_triggers;
98
+ has_subclasses;
99
+ is_populated;
100
+ replica_identity;
101
+ is_partition;
102
+ options;
103
+ partition_bound;
104
+ partition_by;
105
+ owner;
106
+ comment;
107
+ parent_schema;
108
+ parent_name;
109
+ columns;
110
+ constraints;
111
+ privileges;
112
+ constructor(props) {
113
+ super();
114
+ // Identity fields
115
+ this.schema = props.schema;
116
+ this.name = props.name;
117
+ // Data fields
118
+ this.persistence = props.persistence;
119
+ this.row_security = props.row_security;
120
+ this.force_row_security = props.force_row_security;
121
+ this.has_indexes = props.has_indexes;
122
+ this.has_rules = props.has_rules;
123
+ this.has_triggers = props.has_triggers;
124
+ this.has_subclasses = props.has_subclasses;
125
+ this.is_populated = props.is_populated;
126
+ this.replica_identity = props.replica_identity;
127
+ this.is_partition = props.is_partition;
128
+ this.options = props.options;
129
+ this.partition_bound = props.partition_bound;
130
+ this.partition_by = props.partition_by;
131
+ this.owner = props.owner;
132
+ this.comment = props.comment;
133
+ this.parent_schema = props.parent_schema;
134
+ this.parent_name = props.parent_name;
135
+ this.columns = props.columns;
136
+ this.constraints = props.constraints ?? [];
137
+ this.privileges = props.privileges;
138
+ }
139
+ get stableId() {
140
+ return `table:${this.schema}.${this.name}`;
141
+ }
142
+ get identityFields() {
143
+ return {
144
+ schema: this.schema,
145
+ name: this.name,
146
+ };
147
+ }
148
+ get dataFields() {
149
+ return {
150
+ // Only include fields that can be managed via ALTER safely
151
+ persistence: this.persistence,
152
+ row_security: this.row_security,
153
+ force_row_security: this.force_row_security,
154
+ replica_identity: this.replica_identity,
155
+ options: this.options,
156
+ // Partition membership can be altered via ATTACH/DETACH
157
+ parent_schema: this.parent_schema,
158
+ parent_name: this.parent_name,
159
+ partition_bound: this.partition_bound,
160
+ owner: this.owner,
161
+ comment: this.comment,
162
+ columns: this.columns,
163
+ constraints: this.constraints,
164
+ privileges: this.privileges,
165
+ };
166
+ }
167
+ stableSnapshot() {
168
+ const normalizeConstraints = () => [...this.constraints].sort((a, b) => {
169
+ const nameA = a.name ?? "";
170
+ const nameB = b.name ?? "";
171
+ return nameA.localeCompare(nameB);
172
+ });
173
+ return {
174
+ identity: this.identityFields,
175
+ data: {
176
+ ...this.dataFields,
177
+ columns: normalizeColumns(this.columns),
178
+ options: this.options ? [...this.options].sort() : this.options,
179
+ constraints: normalizeConstraints(),
180
+ privileges: normalizePrivileges(this.privileges),
181
+ },
182
+ };
183
+ }
184
+ }
185
+ export async function extractTables(sql) {
186
+ return sql.begin(async (sql) => {
187
+ await sql `set search_path = ''`;
188
+ const tableRows = await sql `
189
+ with extension_oids as (
190
+ select objid
191
+ from pg_depend d
192
+ where d.refclassid = 'pg_extension'::regclass
193
+ and d.classid = 'pg_class'::regclass
194
+ ), tables as (
195
+ select
196
+ c.relnamespace::regnamespace::text as schema,
197
+ quote_ident(c.relname) as name,
198
+ c.relpersistence as persistence,
199
+ c.relrowsecurity as row_security,
200
+ c.relforcerowsecurity as force_row_security,
201
+ c.relhasindex as has_indexes,
202
+ c.relhasrules as has_rules,
203
+ c.relhastriggers as has_triggers,
204
+ c.relhassubclass as has_subclasses,
205
+ c.relispopulated as is_populated,
206
+ c.relreplident as replica_identity,
207
+ c.relispartition as is_partition,
208
+ c.reloptions as options,
209
+ pg_get_expr(c.relpartbound, c.oid) as partition_bound,
210
+ pg_get_partkeydef(c.oid) as partition_by,
211
+ c.relowner::regrole::text as owner,
212
+ c_parent.relnamespace::regnamespace as parent_schema,
213
+ quote_ident(c_parent.relname) as parent_name,
214
+ c.oid as oid
215
+ from
216
+ pg_class c
217
+ left join extension_oids e1 on c.oid = e1.objid
218
+ left join pg_inherits i on i.inhrelid = c.oid
219
+ left join pg_class c_parent on i.inhparent = c_parent.oid
220
+ where
221
+ c.relkind in ('r', 'p')
222
+ and not c.relnamespace::regnamespace::text like any(array['pg\\_%', 'information\\_schema'])
223
+ and e1.objid is null
224
+ )
225
+ select
226
+ t.schema,
227
+ t.name,
228
+ t.persistence,
229
+ t.row_security,
230
+ t.force_row_security,
231
+ t.has_indexes,
232
+ t.has_rules,
233
+ t.has_triggers,
234
+ t.has_subclasses,
235
+ t.is_populated,
236
+ t.replica_identity,
237
+ t.is_partition,
238
+ t.options,
239
+ t.partition_bound,
240
+ t.partition_by,
241
+ t.owner,
242
+ obj_description(t.oid, 'pg_class') as comment,
243
+ t.parent_schema,
244
+ t.parent_name,
245
+ coalesce(
246
+ (
247
+ select json_agg(
248
+ json_build_object(
249
+ 'name', quote_ident(c.conname),
250
+ 'constraint_type', c.contype,
251
+ 'deferrable', c.condeferrable,
252
+ 'initially_deferred', c.condeferred,
253
+ 'validated', c.convalidated,
254
+ 'is_local', c.conislocal,
255
+ 'no_inherit', c.connoinherit,
256
+
257
+ -- NEW: propagated-to-partition tagging (PG15+)
258
+ 'is_partition_clone', (c.conparentid <> 0::oid),
259
+ 'parent_constraint_schema', case when c.conparentid <> 0::oid then pc.connamespace::regnamespace::text end,
260
+ 'parent_constraint_name', case when c.conparentid <> 0::oid then quote_ident(pc.conname) end,
261
+ 'parent_table_schema', case when c.conparentid <> 0::oid then pc_rel.relnamespace::regnamespace::text end,
262
+ 'parent_table_name', case when c.conparentid <> 0::oid then quote_ident(pc_rel.relname) end,
263
+
264
+ 'key_columns',
265
+ case
266
+ when c.conkey is not null then (
267
+ select json_agg(quote_ident(att.attname) order by pk.ordinality)
268
+ from unnest(c.conkey) with ordinality as pk(attnum, ordinality)
269
+ join pg_attribute att
270
+ on att.attrelid = c.conrelid
271
+ and att.attnum = pk.attnum
272
+ and att.attisdropped = false
273
+ )
274
+ else '[]'::json
275
+ end,
276
+
277
+ 'foreign_key_columns',
278
+ case
279
+ when c.contype = 'f' then (
280
+ select json_agg(quote_ident(att.attname) order by fk.ordinality)
281
+ from unnest(c.confkey) with ordinality as fk(attnum, ordinality)
282
+ join pg_attribute att
283
+ on att.attrelid = c.confrelid
284
+ and att.attnum = fk.attnum
285
+ and att.attisdropped = false
286
+ )
287
+ else null
288
+ end,
289
+
290
+ -- existing FK target
291
+ 'foreign_key_table', quote_ident(ftc.relname),
292
+ 'foreign_key_schema', ftc.relnamespace::regnamespace::text,
293
+
294
+ -- NEW: if FK points at a *partition*, expose its parent + an "effective" target
295
+ 'foreign_key_table_is_partition',
296
+ case when c.contype = 'f' then coalesce(ftc.relispartition, false) else null end,
297
+ 'foreign_key_parent_schema',
298
+ case when c.contype = 'f' and ftc.relispartition then ftc_parent.relnamespace::regnamespace::text else null end,
299
+ 'foreign_key_parent_table',
300
+ case when c.contype = 'f' and ftc.relispartition then quote_ident(ftc_parent.relname) else null end,
301
+ 'foreign_key_effective_schema',
302
+ case
303
+ when c.contype <> 'f' then null
304
+ when ftc.relispartition then ftc_parent.relnamespace::regnamespace::text
305
+ else ftc.relnamespace::regnamespace::text
306
+ end,
307
+ 'foreign_key_effective_table',
308
+ case
309
+ when c.contype <> 'f' then null
310
+ when ftc.relispartition then quote_ident(ftc_parent.relname)
311
+ else quote_ident(ftc.relname)
312
+ end,
313
+
314
+ 'on_update', case when c.contype = 'f' then c.confupdtype else null end,
315
+ 'on_delete', case when c.contype = 'f' then c.confdeltype else null end,
316
+ 'match_type', case when c.contype = 'f' then c.confmatchtype else null end,
317
+
318
+ 'check_expression', pg_get_expr(c.conbin, c.conrelid),
319
+ 'owner', t.owner,
320
+ 'definition', pg_get_constraintdef(c.oid, true),
321
+ 'comment', obj_description(c.oid, 'pg_constraint')
322
+ )
323
+ order by c.conname
324
+ )
325
+ from pg_catalog.pg_constraint c
326
+
327
+ -- NEW: parent constraint/table lookup (for propagated constraints)
328
+ left join pg_catalog.pg_constraint pc on pc.oid = c.conparentid
329
+ left join pg_catalog.pg_class pc_rel on pc_rel.oid = pc.conrelid
330
+
331
+ -- FK referenced table + parent table if it’s a partition
332
+ left join pg_catalog.pg_class ftc on ftc.oid = c.confrelid
333
+ left join pg_catalog.pg_inherits fi on fi.inhrelid = ftc.oid
334
+ left join pg_catalog.pg_class ftc_parent on ftc_parent.oid = fi.inhparent
335
+
336
+ left join pg_depend de
337
+ on de.classid = 'pg_constraint'::regclass
338
+ and de.objid = c.oid
339
+ and de.refclassid = 'pg_extension'::regclass
340
+
341
+ where c.conrelid = t.oid
342
+ and not c.connamespace::regnamespace::text like any(array['pg\\_%', 'information\\_schema'])
343
+ and de.objid is null
344
+ ),
345
+ '[]'
346
+ ) as constraints,
347
+ coalesce(json_agg(
348
+ case when a.attname is not null then
349
+ json_build_object(
350
+ 'name', quote_ident(a.attname),
351
+ 'position', a.attnum,
352
+ 'data_type', a.atttypid::regtype::text,
353
+ 'data_type_str', format_type(a.atttypid, a.atttypmod),
354
+ 'is_custom_type', ty.typnamespace::regnamespace::text not in ('pg_catalog', 'information_schema'),
355
+ 'custom_type_type', case when ty.typnamespace::regnamespace::text not in ('pg_catalog', 'information_schema') then ty.typtype else null end,
356
+ 'custom_type_category', case when ty.typnamespace::regnamespace::text not in ('pg_catalog', 'information_schema') then ty.typcategory else null end,
357
+ 'custom_type_schema', case when ty.typnamespace::regnamespace::text not in ('pg_catalog', 'information_schema') then ty.typnamespace::regnamespace else null end,
358
+ 'custom_type_name', case when ty.typnamespace::regnamespace::text not in ('pg_catalog', 'information_schema') then quote_ident(ty.typname) else null end,
359
+ 'not_null', a.attnotnull,
360
+ 'is_identity', a.attidentity != '',
361
+ 'is_identity_always', a.attidentity = 'a',
362
+ 'is_generated', a.attgenerated != '',
363
+ 'collation', (
364
+ select quote_ident(c2.collname)
365
+ from pg_collation c2, pg_type t2
366
+ where c2.oid = a.attcollation
367
+ and t2.oid = a.atttypid
368
+ and a.attcollation <> t2.typcollation
369
+ ),
370
+ 'default', pg_get_expr(ad.adbin, ad.adrelid),
371
+ 'comment', col_description(a.attrelid, a.attnum)
372
+ )
373
+ end
374
+ order by a.attnum
375
+ ) filter (where a.attname is not null), '[]') as columns,
376
+ coalesce((
377
+ select json_agg(
378
+ json_build_object(
379
+ 'grantee', case when grp.grantee = 0 then 'PUBLIC' else grp.grantee::regrole::text end,
380
+ 'privilege', grp.privilege_type,
381
+ 'grantable', grp.is_grantable,
382
+ 'columns', case when grp.cols is not null and array_length(grp.cols,1) > 0
383
+ then grp.cols
384
+ else null end
385
+ )
386
+ order by grp.grantee, grp.privilege_type
387
+ )
388
+ from (
389
+ select
390
+ x.grantee,
391
+ x.privilege_type,
392
+ bool_or(x.is_grantable) as is_grantable,
393
+ array_agg(quote_ident(src.attname) order by src.attname)
394
+ filter (where src.attname is not null) as cols
395
+ from (
396
+ -- one row for object ACL + one row per column ACL
397
+ select null::name as attname, t.oid as relacl_oid, (
398
+ select c_rel.relacl from pg_class c_rel where c_rel.oid = t.oid
399
+ ) as acl
400
+ union all
401
+ select a2.attname, t.oid as relacl_oid, a2.attacl
402
+ from pg_attribute a2
403
+ where a2.attrelid = t.oid
404
+ and a2.attnum > 0
405
+ and not a2.attisdropped
406
+ and a2.attacl is not null
407
+ ) as src
408
+ join lateral aclexplode(src.acl) as x(grantor, grantee, privilege_type, is_grantable) on true
409
+ group by x.grantee, x.privilege_type
410
+ ) as grp
411
+ ), '[]') as privileges
412
+ from
413
+ tables t
414
+ left join pg_attribute a on a.attrelid = t.oid and a.attnum > 0 and not a.attisdropped
415
+ left join pg_attrdef ad on a.attrelid = ad.adrelid and a.attnum = ad.adnum
416
+ left join pg_type ty on ty.oid = a.atttypid
417
+ group by
418
+ t.oid, t.schema, t.name, t.persistence, t.row_security, t.force_row_security, t.has_indexes, t.has_rules, t.has_triggers, t.has_subclasses, t.is_populated, t.replica_identity, t.is_partition, t.options, t.partition_bound, t.partition_by, t.owner, t.parent_schema, t.parent_name
419
+ order by
420
+ t.schema, t.name;
421
+ `;
422
+ // Validate and parse each row using the Zod schema
423
+ const validatedRows = tableRows.map((row) => tablePropsSchema.parse(row));
424
+ return validatedRows.map((row) => new Table(row));
425
+ });
426
+ }
@@ -0,0 +1,29 @@
1
+ import type { TableLikeObject } from "../../base.model.ts";
2
+ import type { Trigger } from "../trigger.model.ts";
3
+ import { AlterTriggerChange } from "./trigger.base.ts";
4
+ /**
5
+ * Alter a trigger.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-altertrigger.html
8
+ *
9
+ * Synopsis
10
+ * ```sql
11
+ * ALTER TRIGGER name ON table_name RENAME TO new_name
12
+ * ```
13
+ */
14
+ export type AlterTrigger = ReplaceTrigger;
15
+ /**
16
+ * Replace a trigger by dropping and recreating it.
17
+ * This is used when properties that cannot be altered via ALTER TRIGGER change.
18
+ */
19
+ export declare class ReplaceTrigger extends AlterTriggerChange {
20
+ readonly trigger: Trigger;
21
+ readonly indexableObject?: TableLikeObject;
22
+ readonly scope: "object";
23
+ constructor(props: {
24
+ trigger: Trigger;
25
+ indexableObject?: TableLikeObject;
26
+ });
27
+ get requires(): `trigger:${string}`[];
28
+ serialize(): string;
29
+ }
@@ -0,0 +1,27 @@
1
+ import { AlterTriggerChange } from "./trigger.base.js";
2
+ import { CreateTrigger } from "./trigger.create.js";
3
+ /**
4
+ * Replace a trigger by dropping and recreating it.
5
+ * This is used when properties that cannot be altered via ALTER TRIGGER change.
6
+ */
7
+ export class ReplaceTrigger extends AlterTriggerChange {
8
+ trigger;
9
+ indexableObject;
10
+ scope = "object";
11
+ constructor(props) {
12
+ super();
13
+ this.trigger = props.trigger;
14
+ this.indexableObject = props.indexableObject;
15
+ }
16
+ get requires() {
17
+ return [this.trigger.stableId];
18
+ }
19
+ serialize() {
20
+ const createChange = new CreateTrigger({
21
+ trigger: this.trigger,
22
+ indexableObject: this.indexableObject,
23
+ orReplace: true,
24
+ });
25
+ return createChange.serialize();
26
+ }
27
+ }
@@ -0,0 +1,17 @@
1
+ import { BaseChange } from "../../base.change.ts";
2
+ import type { Trigger } from "../trigger.model.ts";
3
+ declare abstract class BaseTriggerChange extends BaseChange {
4
+ abstract readonly trigger: Trigger;
5
+ abstract readonly scope: "object" | "comment";
6
+ readonly objectType: "trigger";
7
+ }
8
+ export declare abstract class CreateTriggerChange extends BaseTriggerChange {
9
+ readonly operation: "create";
10
+ }
11
+ export declare abstract class AlterTriggerChange extends BaseTriggerChange {
12
+ readonly operation: "alter";
13
+ }
14
+ export declare abstract class DropTriggerChange extends BaseTriggerChange {
15
+ readonly operation: "drop";
16
+ }
17
+ export {};
@@ -0,0 +1,13 @@
1
+ import { BaseChange } from "../../base.change.js";
2
+ class BaseTriggerChange extends BaseChange {
3
+ objectType = "trigger";
4
+ }
5
+ export class CreateTriggerChange extends BaseTriggerChange {
6
+ operation = "create";
7
+ }
8
+ export class AlterTriggerChange extends BaseTriggerChange {
9
+ operation = "alter";
10
+ }
11
+ export class DropTriggerChange extends BaseTriggerChange {
12
+ operation = "drop";
13
+ }
@@ -0,0 +1,23 @@
1
+ import type { Trigger } from "../trigger.model.ts";
2
+ import { CreateTriggerChange, DropTriggerChange } from "./trigger.base.ts";
3
+ export type CommentTrigger = CreateCommentOnTrigger | DropCommentOnTrigger;
4
+ export declare class CreateCommentOnTrigger extends CreateTriggerChange {
5
+ readonly trigger: Trigger;
6
+ readonly scope: "comment";
7
+ constructor(props: {
8
+ trigger: Trigger;
9
+ });
10
+ get creates(): `comment:${string}`[];
11
+ get requires(): `trigger:${string}`[];
12
+ serialize(): string;
13
+ }
14
+ export declare class DropCommentOnTrigger extends DropTriggerChange {
15
+ readonly trigger: Trigger;
16
+ readonly scope: "comment";
17
+ constructor(props: {
18
+ trigger: Trigger;
19
+ });
20
+ get drops(): `comment:${string}`[];
21
+ get requires(): (`comment:${string}` | `trigger:${string}`)[];
22
+ serialize(): string;
23
+ }
@@ -0,0 +1,51 @@
1
+ import { quoteLiteral } from "../../base.change.js";
2
+ import { stableId } from "../../utils.js";
3
+ import { CreateTriggerChange, DropTriggerChange } from "./trigger.base.js";
4
+ export class CreateCommentOnTrigger extends CreateTriggerChange {
5
+ trigger;
6
+ scope = "comment";
7
+ constructor(props) {
8
+ super();
9
+ this.trigger = props.trigger;
10
+ }
11
+ get creates() {
12
+ return [stableId.comment(this.trigger.stableId)];
13
+ }
14
+ get requires() {
15
+ return [this.trigger.stableId];
16
+ }
17
+ serialize() {
18
+ return [
19
+ "COMMENT ON TRIGGER",
20
+ this.trigger.name,
21
+ "ON",
22
+ `${this.trigger.schema}.${this.trigger.table_name}`,
23
+ "IS",
24
+ // biome-ignore lint/style/noNonNullAssertion: trigger comment is not nullable in this case
25
+ quoteLiteral(this.trigger.comment),
26
+ ].join(" ");
27
+ }
28
+ }
29
+ export class DropCommentOnTrigger extends DropTriggerChange {
30
+ trigger;
31
+ scope = "comment";
32
+ constructor(props) {
33
+ super();
34
+ this.trigger = props.trigger;
35
+ }
36
+ get drops() {
37
+ return [stableId.comment(this.trigger.stableId)];
38
+ }
39
+ get requires() {
40
+ return [stableId.comment(this.trigger.stableId), this.trigger.stableId];
41
+ }
42
+ serialize() {
43
+ return [
44
+ "COMMENT ON TRIGGER",
45
+ this.trigger.name,
46
+ "ON",
47
+ `${this.trigger.schema}.${this.trigger.table_name}`,
48
+ "IS NULL",
49
+ ].join(" ");
50
+ }
51
+ }
@@ -0,0 +1,41 @@
1
+ import type { TableLikeObject } from "../../base.model.ts";
2
+ import type { Trigger } from "../trigger.model.ts";
3
+ import { CreateTriggerChange } from "./trigger.base.ts";
4
+ /**
5
+ * Create a trigger.
6
+ *
7
+ * @see https://www.postgresql.org/docs/17/sql-createtrigger.html
8
+ *
9
+ * Synopsis
10
+ * ```sql
11
+ * CREATE [ OR REPLACE ] [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
12
+ * ON table_name
13
+ * [ FROM referenced_table_name ]
14
+ * [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]
15
+ * [ REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name } [ ... ] ]
16
+ * [ FOR [ EACH ] { ROW | STATEMENT } ]
17
+ * [ WHEN ( condition ) ]
18
+ * EXECUTE { FUNCTION | PROCEDURE } function_name ( arguments )
19
+ *
20
+ * where event can be one of:
21
+ *
22
+ * INSERT
23
+ * UPDATE [ OF column_name [, ... ] ]
24
+ * DELETE
25
+ * TRUNCATE
26
+ * ```
27
+ */
28
+ export declare class CreateTrigger extends CreateTriggerChange {
29
+ readonly trigger: Trigger;
30
+ readonly indexableObject?: TableLikeObject;
31
+ readonly orReplace?: boolean;
32
+ readonly scope: "object";
33
+ constructor(props: {
34
+ trigger: Trigger;
35
+ indexableObject?: TableLikeObject;
36
+ orReplace?: boolean;
37
+ });
38
+ get creates(): `trigger:${string}`[];
39
+ get requires(): string[];
40
+ serialize(): string;
41
+ }