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

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 (680) hide show
  1. package/README.md +41 -2
  2. package/dist/cli/app.js +26 -3
  3. package/dist/cli/bin/cli.js +5 -0
  4. package/dist/cli/commands/catalog-export.d.ts +5 -0
  5. package/dist/cli/commands/catalog-export.js +64 -0
  6. package/dist/cli/commands/declarative-apply.d.ts +6 -0
  7. package/dist/cli/commands/declarative-apply.js +288 -0
  8. package/dist/cli/commands/declarative-export.d.ts +5 -0
  9. package/dist/cli/commands/declarative-export.js +245 -0
  10. package/dist/cli/commands/plan.js +40 -6
  11. package/dist/cli/exit-code.d.ts +2 -0
  12. package/dist/cli/exit-code.js +7 -0
  13. package/dist/cli/formatters/tree/tree.js +3 -2
  14. package/dist/cli/utils/apply-display.d.ts +52 -0
  15. package/dist/cli/utils/apply-display.js +183 -0
  16. package/dist/cli/utils/export-display.d.ts +43 -0
  17. package/dist/cli/utils/export-display.js +202 -0
  18. package/dist/cli/utils/integrations.d.ts +4 -3
  19. package/dist/cli/utils/integrations.js +25 -16
  20. package/dist/cli/utils/resolve-input.d.ts +7 -0
  21. package/dist/cli/utils/resolve-input.js +13 -0
  22. package/dist/cli/utils.d.ts +2 -0
  23. package/dist/cli/utils.js +1 -1
  24. package/dist/core/catalog-export/index.d.ts +11 -0
  25. package/dist/core/catalog-export/index.js +10 -0
  26. package/dist/core/catalog.diff.d.ts +1 -0
  27. package/dist/core/catalog.diff.js +64 -48
  28. package/dist/core/catalog.model.d.ts +16 -3
  29. package/dist/core/catalog.model.js +132 -30
  30. package/dist/core/catalog.snapshot.d.ts +66 -0
  31. package/dist/core/catalog.snapshot.js +206 -0
  32. package/dist/core/context.d.ts +3 -3
  33. package/dist/core/context.js +7 -10
  34. package/dist/core/declarative-apply/discover-sql.d.ts +18 -0
  35. package/dist/core/declarative-apply/discover-sql.js +86 -0
  36. package/dist/core/declarative-apply/extract-catalog-providers.d.ts +23 -0
  37. package/dist/core/declarative-apply/extract-catalog-providers.js +159 -0
  38. package/dist/core/declarative-apply/index.d.ts +49 -0
  39. package/dist/core/declarative-apply/index.js +134 -0
  40. package/dist/core/declarative-apply/round-apply.d.ts +100 -0
  41. package/dist/core/declarative-apply/round-apply.js +378 -0
  42. package/dist/core/depend.d.ts +2 -2
  43. package/dist/core/depend.js +8 -7
  44. package/dist/core/export/file-mapper.d.ts +71 -0
  45. package/dist/core/export/file-mapper.js +474 -0
  46. package/dist/core/export/grouper.d.ts +13 -0
  47. package/dist/core/export/grouper.js +76 -0
  48. package/dist/core/export/index.d.ts +45 -0
  49. package/dist/core/export/index.js +63 -0
  50. package/dist/core/export/types.d.ts +84 -0
  51. package/dist/core/export/types.js +25 -0
  52. package/dist/core/fingerprint.d.ts +0 -8
  53. package/dist/core/fingerprint.js +2 -2
  54. package/dist/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
  55. package/dist/core/integrations/filter/dsl.d.ts +39 -2
  56. package/dist/core/integrations/filter/dsl.js +20 -2
  57. package/dist/core/integrations/filter/extractors.js +42 -0
  58. package/dist/core/integrations/filter/filter.types.d.ts +2 -0
  59. package/dist/core/integrations/filter/filter.types.js +1 -0
  60. package/dist/core/integrations/integration-dsl.d.ts +10 -0
  61. package/dist/core/integrations/integration.types.d.ts +2 -1
  62. package/dist/core/integrations/serialize/dsl.d.ts +1 -1
  63. package/dist/core/integrations/serialize/serialize.types.d.ts +2 -0
  64. package/dist/core/integrations/serialize/serialize.types.js +1 -0
  65. package/dist/core/integrations/supabase.d.ts +18 -0
  66. package/dist/core/integrations/supabase.js +125 -0
  67. package/dist/core/objects/aggregate/aggregate.diff.d.ts +2 -8
  68. package/dist/core/objects/aggregate/aggregate.diff.js +16 -70
  69. package/dist/core/objects/aggregate/aggregate.model.d.ts +2 -2
  70. package/dist/core/objects/aggregate/aggregate.model.js +8 -10
  71. package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
  72. package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
  73. package/dist/core/objects/base.privilege-diff.d.ts +38 -13
  74. package/dist/core/objects/base.privilege-diff.js +104 -22
  75. package/dist/core/objects/base.privilege.d.ts +1 -0
  76. package/dist/core/objects/base.privilege.js +9 -2
  77. package/dist/core/objects/collation/collation.diff.d.ts +2 -3
  78. package/dist/core/objects/collation/collation.model.d.ts +2 -2
  79. package/dist/core/objects/collation/collation.model.js +29 -28
  80. package/dist/core/objects/diff-context.d.ts +15 -0
  81. package/dist/core/objects/diff-context.js +1 -0
  82. package/dist/core/objects/domain/changes/domain.create.js +4 -2
  83. package/dist/core/objects/domain/domain.diff.d.ts +2 -8
  84. package/dist/core/objects/domain/domain.diff.js +16 -77
  85. package/dist/core/objects/domain/domain.model.d.ts +2 -2
  86. package/dist/core/objects/domain/domain.model.js +9 -11
  87. package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +2 -3
  88. package/dist/core/objects/event-trigger/event-trigger.model.d.ts +2 -2
  89. package/dist/core/objects/event-trigger/event-trigger.model.js +7 -9
  90. package/dist/core/objects/extension/extension.model.d.ts +2 -2
  91. package/dist/core/objects/extension/extension.model.js +8 -10
  92. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +2 -8
  93. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +13 -77
  94. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +2 -2
  95. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +22 -24
  96. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +2 -8
  97. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +16 -77
  98. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +2 -2
  99. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +21 -23
  100. package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +2 -8
  101. package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +13 -77
  102. package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +2 -2
  103. package/dist/core/objects/foreign-data-wrapper/server/server.model.js +20 -22
  104. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +2 -2
  105. package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +20 -22
  106. package/dist/core/objects/index/index.model.d.ts +4 -4
  107. package/dist/core/objects/index/index.model.js +9 -11
  108. package/dist/core/objects/language/language.diff.d.ts +2 -5
  109. package/dist/core/objects/language/language.diff.js +7 -39
  110. package/dist/core/objects/language/language.model.js +5 -7
  111. package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +2 -8
  112. package/dist/core/objects/materialized-view/materialized-view.diff.js +16 -158
  113. package/dist/core/objects/materialized-view/materialized-view.model.d.ts +2 -2
  114. package/dist/core/objects/materialized-view/materialized-view.model.js +9 -11
  115. package/dist/core/objects/procedure/changes/procedure.alter.js +12 -12
  116. package/dist/core/objects/procedure/procedure.diff.d.ts +2 -8
  117. package/dist/core/objects/procedure/procedure.diff.js +16 -77
  118. package/dist/core/objects/procedure/procedure.model.d.ts +2 -2
  119. package/dist/core/objects/procedure/procedure.model.js +9 -11
  120. package/dist/core/objects/publication/changes/publication.alter.d.ts +0 -9
  121. package/dist/core/objects/publication/changes/publication.alter.js +0 -14
  122. package/dist/core/objects/publication/changes/publication.types.d.ts +2 -2
  123. package/dist/core/objects/publication/publication.diff.d.ts +2 -3
  124. package/dist/core/objects/publication/publication.diff.js +8 -13
  125. package/dist/core/objects/publication/publication.model.d.ts +2 -2
  126. package/dist/core/objects/publication/publication.model.js +7 -9
  127. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
  128. package/dist/core/objects/rls-policy/rls-policy.model.d.ts +2 -2
  129. package/dist/core/objects/rls-policy/rls-policy.model.js +8 -10
  130. package/dist/core/objects/role/role.diff.js +22 -1
  131. package/dist/core/objects/role/role.model.d.ts +3 -2
  132. package/dist/core/objects/role/role.model.js +146 -40
  133. package/dist/core/objects/rule/rule.model.d.ts +2 -2
  134. package/dist/core/objects/rule/rule.model.js +7 -9
  135. package/dist/core/objects/schema/schema.diff.d.ts +2 -8
  136. package/dist/core/objects/schema/schema.diff.js +16 -77
  137. package/dist/core/objects/schema/schema.model.d.ts +2 -2
  138. package/dist/core/objects/schema/schema.model.js +9 -11
  139. package/dist/core/objects/sequence/sequence.diff.d.ts +2 -8
  140. package/dist/core/objects/sequence/sequence.diff.js +16 -79
  141. package/dist/core/objects/sequence/sequence.model.d.ts +2 -2
  142. package/dist/core/objects/sequence/sequence.model.js +9 -11
  143. package/dist/core/objects/subscription/subscription.diff.d.ts +2 -3
  144. package/dist/core/objects/subscription/subscription.model.d.ts +2 -2
  145. package/dist/core/objects/subscription/subscription.model.js +25 -20
  146. package/dist/core/objects/table/changes/table.create.js +3 -0
  147. package/dist/core/objects/table/table.diff.d.ts +2 -8
  148. package/dist/core/objects/table/table.diff.js +26 -157
  149. package/dist/core/objects/table/table.model.d.ts +7 -4
  150. package/dist/core/objects/table/table.model.js +12 -11
  151. package/dist/core/objects/trigger/changes/trigger.alter.js +23 -0
  152. package/dist/core/objects/trigger/changes/trigger.create.js +4 -5
  153. package/dist/core/objects/trigger/trigger.model.d.ts +11 -2
  154. package/dist/core/objects/trigger/trigger.model.js +22 -10
  155. package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +2 -8
  156. package/dist/core/objects/type/composite-type/composite-type.diff.js +16 -77
  157. package/dist/core/objects/type/composite-type/composite-type.model.d.ts +2 -2
  158. package/dist/core/objects/type/composite-type/composite-type.model.js +10 -11
  159. package/dist/core/objects/type/enum/enum.diff.d.ts +2 -8
  160. package/dist/core/objects/type/enum/enum.diff.js +25 -112
  161. package/dist/core/objects/type/enum/enum.model.d.ts +2 -2
  162. package/dist/core/objects/type/enum/enum.model.js +23 -25
  163. package/dist/core/objects/type/range/changes/range.create.js +6 -3
  164. package/dist/core/objects/type/range/range.diff.d.ts +2 -8
  165. package/dist/core/objects/type/range/range.diff.js +16 -77
  166. package/dist/core/objects/type/range/range.model.d.ts +2 -2
  167. package/dist/core/objects/type/range/range.model.js +8 -10
  168. package/dist/core/objects/view/view.diff.d.ts +2 -8
  169. package/dist/core/objects/view/view.diff.js +16 -158
  170. package/dist/core/objects/view/view.model.d.ts +17 -3
  171. package/dist/core/objects/view/view.model.js +11 -23
  172. package/dist/core/plan/apply.d.ts +2 -2
  173. package/dist/core/plan/apply.js +33 -16
  174. package/dist/core/plan/create.d.ts +20 -7
  175. package/dist/core/plan/create.js +153 -112
  176. package/dist/core/plan/index.d.ts +1 -2
  177. package/dist/core/plan/index.js +0 -1
  178. package/dist/core/plan/serialize.js +16 -4
  179. package/dist/core/plan/sql-format/constants.d.ts +2 -0
  180. package/dist/core/plan/sql-format/constants.js +11 -0
  181. package/dist/core/plan/sql-format/fixtures.d.ts +2 -0
  182. package/dist/core/plan/sql-format/fixtures.js +2447 -0
  183. package/dist/core/plan/sql-format/format-utils.d.ts +37 -0
  184. package/dist/core/plan/sql-format/format-utils.js +274 -0
  185. package/dist/core/plan/sql-format/formatters.d.ts +20 -0
  186. package/dist/core/plan/sql-format/formatters.js +737 -0
  187. package/dist/core/plan/sql-format/index.d.ts +2 -0
  188. package/dist/core/plan/sql-format/index.js +98 -0
  189. package/dist/core/plan/sql-format/keyword-case.d.ts +2 -0
  190. package/dist/core/plan/sql-format/keyword-case.js +893 -0
  191. package/dist/core/plan/sql-format/protect.d.ts +3 -0
  192. package/dist/core/plan/sql-format/protect.js +269 -0
  193. package/dist/core/plan/sql-format/sql-scanner.d.ts +59 -0
  194. package/dist/core/plan/sql-format/sql-scanner.js +202 -0
  195. package/dist/core/plan/sql-format/tokenizer.d.ts +22 -0
  196. package/dist/core/plan/sql-format/tokenizer.js +118 -0
  197. package/dist/core/plan/sql-format/types.d.ts +28 -0
  198. package/dist/core/plan/sql-format/types.js +1 -0
  199. package/dist/core/plan/sql-format/wrap.d.ts +2 -0
  200. package/dist/core/plan/sql-format/wrap.js +165 -0
  201. package/dist/core/plan/sql-format.d.ts +2 -0
  202. package/dist/core/plan/sql-format.js +1 -0
  203. package/dist/core/plan/ssl-config.d.ts +32 -0
  204. package/dist/core/plan/ssl-config.js +115 -0
  205. package/dist/core/plan/statements.d.ts +2 -1
  206. package/dist/core/plan/statements.js +6 -2
  207. package/dist/core/plan/types.d.ts +10 -15
  208. package/dist/core/postgres-config.d.ts +47 -3
  209. package/dist/core/postgres-config.js +225 -39
  210. package/dist/core/sort/graph-builder.js +10 -0
  211. package/dist/core/sort/logical-sort.js +31 -23
  212. package/dist/core/test-utils/assert-valid-sql.d.ts +10 -0
  213. package/dist/core/test-utils/assert-valid-sql.js +19 -0
  214. package/dist/index.d.ts +18 -1
  215. package/dist/index.js +16 -1
  216. package/package.json +58 -21
  217. package/src/cli/app.ts +52 -0
  218. package/src/cli/bin/cli.ts +15 -0
  219. package/src/cli/commands/apply.ts +101 -0
  220. package/src/cli/commands/catalog-export.ts +78 -0
  221. package/src/cli/commands/declarative-apply.diagnostics.test.ts +77 -0
  222. package/src/cli/commands/declarative-apply.ts +380 -0
  223. package/src/cli/commands/declarative-export.ts +330 -0
  224. package/src/cli/commands/plan.ts +216 -0
  225. package/src/cli/commands/sync.ts +185 -0
  226. package/src/cli/exit-code.test.ts +19 -0
  227. package/src/cli/exit-code.ts +7 -0
  228. package/src/cli/formatters/index.ts +5 -0
  229. package/src/cli/formatters/tree/tree-builder.ts +380 -0
  230. package/src/cli/formatters/tree/tree-renderer.ts +372 -0
  231. package/src/cli/formatters/tree/tree.ts +238 -0
  232. package/src/cli/utils/apply-display.test.ts +348 -0
  233. package/src/cli/utils/apply-display.ts +238 -0
  234. package/src/cli/utils/export-display.test.ts +103 -0
  235. package/src/cli/utils/export-display.ts +275 -0
  236. package/src/cli/utils/integrations.test.ts +44 -0
  237. package/src/cli/utils/integrations.ts +42 -0
  238. package/src/cli/utils/resolve-input.test.ts +38 -0
  239. package/src/cli/utils/resolve-input.ts +17 -0
  240. package/src/cli/utils.ts +231 -0
  241. package/src/core/catalog-export/index.ts +20 -0
  242. package/src/core/catalog.diff.ts +247 -0
  243. package/src/core/catalog.model.test.ts +122 -0
  244. package/src/core/catalog.model.ts +510 -0
  245. package/src/core/catalog.snapshot.test.ts +477 -0
  246. package/src/core/catalog.snapshot.ts +289 -0
  247. package/src/core/change.types.ts +44 -0
  248. package/src/core/context.ts +26 -0
  249. package/src/core/declarative-apply/discover-sql.test.ts +103 -0
  250. package/src/core/declarative-apply/discover-sql.ts +107 -0
  251. package/src/core/declarative-apply/extract-catalog-providers.ts +220 -0
  252. package/src/core/declarative-apply/index.test.ts +67 -0
  253. package/src/core/declarative-apply/index.ts +205 -0
  254. package/src/core/declarative-apply/round-apply.test.ts +504 -0
  255. package/src/core/declarative-apply/round-apply.ts +562 -0
  256. package/src/core/depend.ts +1870 -0
  257. package/src/core/expand-replace-dependencies.test.ts +70 -0
  258. package/src/core/expand-replace-dependencies.ts +380 -0
  259. package/src/core/export/file-mapper.test.ts +816 -0
  260. package/src/core/export/file-mapper.ts +574 -0
  261. package/src/core/export/grouper.ts +108 -0
  262. package/src/core/export/index.ts +129 -0
  263. package/src/core/export/types.ts +104 -0
  264. package/src/core/fingerprint.ts +204 -0
  265. package/src/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
  266. package/src/core/integrations/filter/dsl.test.ts +211 -0
  267. package/src/core/integrations/filter/dsl.ts +266 -0
  268. package/src/core/integrations/filter/extractors.test.ts +244 -0
  269. package/src/core/integrations/filter/extractors.ts +187 -0
  270. package/src/core/integrations/filter/filter.types.ts +3 -0
  271. package/src/core/integrations/integration-dsl.ts +34 -0
  272. package/src/core/integrations/integration.types.ts +7 -0
  273. package/src/core/integrations/serialize/dsl.test.ts +91 -0
  274. package/src/core/integrations/serialize/dsl.ts +77 -0
  275. package/src/core/integrations/serialize/serialize.types.ts +3 -0
  276. package/src/core/integrations/supabase.ts +130 -0
  277. package/src/core/objects/aggregate/aggregate.diff.test.ts +215 -0
  278. package/src/core/objects/aggregate/aggregate.diff.ts +222 -0
  279. package/src/core/objects/aggregate/aggregate.model.ts +317 -0
  280. package/src/core/objects/aggregate/changes/aggregate.alter.test.ts +66 -0
  281. package/src/core/objects/aggregate/changes/aggregate.alter.ts +32 -0
  282. package/src/core/objects/aggregate/changes/aggregate.base.ts +20 -0
  283. package/src/core/objects/aggregate/changes/aggregate.comment.test.ts +89 -0
  284. package/src/core/objects/aggregate/changes/aggregate.comment.ts +62 -0
  285. package/src/core/objects/aggregate/changes/aggregate.create.test.ts +104 -0
  286. package/src/core/objects/aggregate/changes/aggregate.create.ts +329 -0
  287. package/src/core/objects/aggregate/changes/aggregate.drop.test.ts +82 -0
  288. package/src/core/objects/aggregate/changes/aggregate.drop.ts +32 -0
  289. package/src/core/objects/aggregate/changes/aggregate.privilege.test.ts +136 -0
  290. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +146 -0
  291. package/src/core/objects/aggregate/changes/aggregate.types.ts +12 -0
  292. package/src/core/objects/base.change.ts +62 -0
  293. package/src/core/objects/base.default-privileges.ts +204 -0
  294. package/src/core/objects/base.diff.ts +20 -0
  295. package/src/core/objects/base.model.ts +82 -0
  296. package/src/core/objects/base.privilege-diff.ts +447 -0
  297. package/src/core/objects/base.privilege.ts +191 -0
  298. package/src/core/objects/collation/changes/collation.alter.test.ts +68 -0
  299. package/src/core/objects/collation/changes/collation.alter.ts +79 -0
  300. package/src/core/objects/collation/changes/collation.base.ts +20 -0
  301. package/src/core/objects/collation/changes/collation.comment.ts +68 -0
  302. package/src/core/objects/collation/changes/collation.create.test.ts +56 -0
  303. package/src/core/objects/collation/changes/collation.create.ts +106 -0
  304. package/src/core/objects/collation/changes/collation.drop.test.ts +31 -0
  305. package/src/core/objects/collation/changes/collation.drop.ts +37 -0
  306. package/src/core/objects/collation/changes/collation.types.ts +10 -0
  307. package/src/core/objects/collation/collation.diff.test.ts +97 -0
  308. package/src/core/objects/collation/collation.diff.ts +127 -0
  309. package/src/core/objects/collation/collation.model.ts +224 -0
  310. package/src/core/objects/diff-context.ts +16 -0
  311. package/src/core/objects/domain/changes/domain.alter.test.ts +335 -0
  312. package/src/core/objects/domain/changes/domain.alter.ts +286 -0
  313. package/src/core/objects/domain/changes/domain.base.ts +20 -0
  314. package/src/core/objects/domain/changes/domain.comment.ts +59 -0
  315. package/src/core/objects/domain/changes/domain.create.test.ts +95 -0
  316. package/src/core/objects/domain/changes/domain.create.ts +124 -0
  317. package/src/core/objects/domain/changes/domain.drop.test.ts +33 -0
  318. package/src/core/objects/domain/changes/domain.drop.ts +34 -0
  319. package/src/core/objects/domain/changes/domain.privilege.ts +171 -0
  320. package/src/core/objects/domain/changes/domain.types.ts +12 -0
  321. package/src/core/objects/domain/domain.diff.test.ts +284 -0
  322. package/src/core/objects/domain/domain.diff.ts +295 -0
  323. package/src/core/objects/domain/domain.model.ts +190 -0
  324. package/src/core/objects/event-trigger/changes/event-trigger.alter.test.ts +57 -0
  325. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +82 -0
  326. package/src/core/objects/event-trigger/changes/event-trigger.base.ts +20 -0
  327. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +66 -0
  328. package/src/core/objects/event-trigger/changes/event-trigger.create.test.ts +27 -0
  329. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +72 -0
  330. package/src/core/objects/event-trigger/changes/event-trigger.drop.test.ts +25 -0
  331. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +34 -0
  332. package/src/core/objects/event-trigger/changes/event-trigger.types.ts +10 -0
  333. package/src/core/objects/event-trigger/event-trigger.diff.test.ts +131 -0
  334. package/src/core/objects/event-trigger/event-trigger.diff.ts +127 -0
  335. package/src/core/objects/event-trigger/event-trigger.model.ts +106 -0
  336. package/src/core/objects/extension/changes/extension.alter.test.ts +63 -0
  337. package/src/core/objects/extension/changes/extension.alter.ts +78 -0
  338. package/src/core/objects/extension/changes/extension.base.ts +20 -0
  339. package/src/core/objects/extension/changes/extension.comment.ts +64 -0
  340. package/src/core/objects/extension/changes/extension.create.test.ts +28 -0
  341. package/src/core/objects/extension/changes/extension.create.ts +63 -0
  342. package/src/core/objects/extension/changes/extension.drop.test.ts +26 -0
  343. package/src/core/objects/extension/changes/extension.drop.ts +34 -0
  344. package/src/core/objects/extension/changes/extension.types.ts +10 -0
  345. package/src/core/objects/extension/extension.diff.test.ts +42 -0
  346. package/src/core/objects/extension/extension.diff.ts +90 -0
  347. package/src/core/objects/extension/extension.model.test.ts +98 -0
  348. package/src/core/objects/extension/extension.model.ts +280 -0
  349. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.test.ts +136 -0
  350. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +101 -0
  351. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.ts +20 -0
  352. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +72 -0
  353. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.test.ts +160 -0
  354. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +95 -0
  355. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.test.ts +26 -0
  356. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +36 -0
  357. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +172 -0
  358. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts +12 -0
  359. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.test.ts +286 -0
  360. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.ts +271 -0
  361. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.ts +149 -0
  362. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts +10 -0
  363. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.test.ts +340 -0
  364. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +341 -0
  365. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.ts +20 -0
  366. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +72 -0
  367. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.test.ts +210 -0
  368. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +81 -0
  369. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.test.ts +46 -0
  370. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +37 -0
  371. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +181 -0
  372. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts +12 -0
  373. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.test.ts +813 -0
  374. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.ts +343 -0
  375. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.ts +242 -0
  376. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.test.ts +183 -0
  377. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +126 -0
  378. package/src/core/objects/foreign-data-wrapper/server/changes/server.base.ts +20 -0
  379. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +60 -0
  380. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.test.ts +144 -0
  381. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +81 -0
  382. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.test.ts +27 -0
  383. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +34 -0
  384. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +164 -0
  385. package/src/core/objects/foreign-data-wrapper/server/changes/server.types.ts +12 -0
  386. package/src/core/objects/foreign-data-wrapper/server/server.diff.test.ts +262 -0
  387. package/src/core/objects/foreign-data-wrapper/server/server.diff.ts +247 -0
  388. package/src/core/objects/foreign-data-wrapper/server/server.model.ts +133 -0
  389. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.test.ts +91 -0
  390. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +69 -0
  391. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.ts +20 -0
  392. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.test.ts +96 -0
  393. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +66 -0
  394. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.test.ts +60 -0
  395. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +40 -0
  396. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts +8 -0
  397. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.test.ts +77 -0
  398. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.ts +107 -0
  399. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.ts +96 -0
  400. package/src/core/objects/index/changes/index.alter.test.ts +209 -0
  401. package/src/core/objects/index/changes/index.alter.ts +144 -0
  402. package/src/core/objects/index/changes/index.base.ts +20 -0
  403. package/src/core/objects/index/changes/index.comment.ts +63 -0
  404. package/src/core/objects/index/changes/index.create.test.ts +69 -0
  405. package/src/core/objects/index/changes/index.create.ts +68 -0
  406. package/src/core/objects/index/changes/index.drop.test.ts +47 -0
  407. package/src/core/objects/index/changes/index.drop.ts +34 -0
  408. package/src/core/objects/index/changes/index.types.ts +6 -0
  409. package/src/core/objects/index/changes/utils.ts +16 -0
  410. package/src/core/objects/index/index.diff.test.ts +153 -0
  411. package/src/core/objects/index/index.diff.ts +243 -0
  412. package/src/core/objects/index/index.model.ts +370 -0
  413. package/src/core/objects/language/changes/language.alter.test.ts +36 -0
  414. package/src/core/objects/language/changes/language.alter.ts +53 -0
  415. package/src/core/objects/language/changes/language.base.ts +20 -0
  416. package/src/core/objects/language/changes/language.comment.ts +58 -0
  417. package/src/core/objects/language/changes/language.create.test.ts +30 -0
  418. package/src/core/objects/language/changes/language.create.ts +104 -0
  419. package/src/core/objects/language/changes/language.drop.test.ts +28 -0
  420. package/src/core/objects/language/changes/language.drop.ts +39 -0
  421. package/src/core/objects/language/changes/language.privilege.ts +172 -0
  422. package/src/core/objects/language/changes/language.types.ts +12 -0
  423. package/src/core/objects/language/language.diff.test.ts +135 -0
  424. package/src/core/objects/language/language.diff.ts +144 -0
  425. package/src/core/objects/language/language.model.ts +150 -0
  426. package/src/core/objects/materialized-view/changes/materialized-view.alter.test.ts +130 -0
  427. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +113 -0
  428. package/src/core/objects/materialized-view/changes/materialized-view.base.ts +20 -0
  429. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +176 -0
  430. package/src/core/objects/materialized-view/changes/materialized-view.create.test.ts +69 -0
  431. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +93 -0
  432. package/src/core/objects/materialized-view/changes/materialized-view.drop.test.ts +37 -0
  433. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +60 -0
  434. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +212 -0
  435. package/src/core/objects/materialized-view/changes/materialized-view.types.ts +12 -0
  436. package/src/core/objects/materialized-view/materialized-view.diff.test.ts +264 -0
  437. package/src/core/objects/materialized-view/materialized-view.diff.ts +301 -0
  438. package/src/core/objects/materialized-view/materialized-view.model.ts +258 -0
  439. package/src/core/objects/procedure/changes/procedure.alter.test.ts +1077 -0
  440. package/src/core/objects/procedure/changes/procedure.alter.ts +290 -0
  441. package/src/core/objects/procedure/changes/procedure.base.ts +20 -0
  442. package/src/core/objects/procedure/changes/procedure.comment.ts +70 -0
  443. package/src/core/objects/procedure/changes/procedure.create.test.ts +51 -0
  444. package/src/core/objects/procedure/changes/procedure.create.ts +92 -0
  445. package/src/core/objects/procedure/changes/procedure.drop.test.ts +90 -0
  446. package/src/core/objects/procedure/changes/procedure.drop.ts +49 -0
  447. package/src/core/objects/procedure/changes/procedure.privilege.ts +188 -0
  448. package/src/core/objects/procedure/changes/procedure.types.ts +12 -0
  449. package/src/core/objects/procedure/procedure.diff.test.ts +161 -0
  450. package/src/core/objects/procedure/procedure.diff.ts +341 -0
  451. package/src/core/objects/procedure/procedure.model.ts +264 -0
  452. package/src/core/objects/procedure/utils.ts +58 -0
  453. package/src/core/objects/publication/changes/publication.alter.test.ts +217 -0
  454. package/src/core/objects/publication/changes/publication.alter.ts +225 -0
  455. package/src/core/objects/publication/changes/publication.base.ts +20 -0
  456. package/src/core/objects/publication/changes/publication.comment.test.ts +73 -0
  457. package/src/core/objects/publication/changes/publication.comment.ts +64 -0
  458. package/src/core/objects/publication/changes/publication.create.test.ts +90 -0
  459. package/src/core/objects/publication/changes/publication.create.ts +82 -0
  460. package/src/core/objects/publication/changes/publication.drop.test.ts +48 -0
  461. package/src/core/objects/publication/changes/publication.drop.ts +29 -0
  462. package/src/core/objects/publication/changes/publication.types.ts +24 -0
  463. package/src/core/objects/publication/publication.diff.test.ts +297 -0
  464. package/src/core/objects/publication/publication.diff.ts +247 -0
  465. package/src/core/objects/publication/publication.model.ts +206 -0
  466. package/src/core/objects/publication/utils.ts +55 -0
  467. package/src/core/objects/rls-policy/changes/rls-policy.alter.test.ts +267 -0
  468. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +128 -0
  469. package/src/core/objects/rls-policy/changes/rls-policy.base.ts +20 -0
  470. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +69 -0
  471. package/src/core/objects/rls-policy/changes/rls-policy.create.test.ts +81 -0
  472. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +100 -0
  473. package/src/core/objects/rls-policy/changes/rls-policy.drop.test.ts +31 -0
  474. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +39 -0
  475. package/src/core/objects/rls-policy/changes/rls-policy.types.ts +10 -0
  476. package/src/core/objects/rls-policy/rls-policy.diff.test.ts +79 -0
  477. package/src/core/objects/rls-policy/rls-policy.diff.ts +121 -0
  478. package/src/core/objects/rls-policy/rls-policy.model.ts +140 -0
  479. package/src/core/objects/role/changes/role.alter.test.ts +362 -0
  480. package/src/core/objects/role/changes/role.alter.ts +110 -0
  481. package/src/core/objects/role/changes/role.base.ts +24 -0
  482. package/src/core/objects/role/changes/role.comment.ts +55 -0
  483. package/src/core/objects/role/changes/role.create.test.ts +56 -0
  484. package/src/core/objects/role/changes/role.create.ts +102 -0
  485. package/src/core/objects/role/changes/role.drop.test.ts +32 -0
  486. package/src/core/objects/role/changes/role.drop.ts +34 -0
  487. package/src/core/objects/role/changes/role.privilege.ts +376 -0
  488. package/src/core/objects/role/changes/role.types.ts +12 -0
  489. package/src/core/objects/role/role.diff.test.ts +279 -0
  490. package/src/core/objects/role/role.diff.ts +499 -0
  491. package/src/core/objects/role/role.model.ts +452 -0
  492. package/src/core/objects/rule/changes/rule.alter.test.ts +82 -0
  493. package/src/core/objects/rule/changes/rule.alter.ts +72 -0
  494. package/src/core/objects/rule/changes/rule.base.ts +20 -0
  495. package/src/core/objects/rule/changes/rule.comment.test.ts +58 -0
  496. package/src/core/objects/rule/changes/rule.comment.ts +62 -0
  497. package/src/core/objects/rule/changes/rule.create.test.ts +63 -0
  498. package/src/core/objects/rule/changes/rule.create.ts +42 -0
  499. package/src/core/objects/rule/changes/rule.drop.test.ts +40 -0
  500. package/src/core/objects/rule/changes/rule.drop.ts +29 -0
  501. package/src/core/objects/rule/changes/rule.types.ts +12 -0
  502. package/src/core/objects/rule/rule.diff.test.ts +132 -0
  503. package/src/core/objects/rule/rule.diff.ts +79 -0
  504. package/src/core/objects/rule/rule.model.ts +173 -0
  505. package/src/core/objects/schema/changes/schema.alter.test.ts +31 -0
  506. package/src/core/objects/schema/changes/schema.alter.ts +45 -0
  507. package/src/core/objects/schema/changes/schema.base.ts +20 -0
  508. package/src/core/objects/schema/changes/schema.comment.ts +56 -0
  509. package/src/core/objects/schema/changes/schema.create.test.ts +25 -0
  510. package/src/core/objects/schema/changes/schema.create.ts +47 -0
  511. package/src/core/objects/schema/changes/schema.drop.test.ts +23 -0
  512. package/src/core/objects/schema/changes/schema.drop.ts +34 -0
  513. package/src/core/objects/schema/changes/schema.privilege.ts +175 -0
  514. package/src/core/objects/schema/changes/schema.types.ts +12 -0
  515. package/src/core/objects/schema/schema.diff.test.ts +42 -0
  516. package/src/core/objects/schema/schema.diff.ts +146 -0
  517. package/src/core/objects/schema/schema.model.ts +107 -0
  518. package/src/core/objects/sequence/changes/sequence.alter.test.ts +157 -0
  519. package/src/core/objects/sequence/changes/sequence.alter.ts +115 -0
  520. package/src/core/objects/sequence/changes/sequence.base.ts +20 -0
  521. package/src/core/objects/sequence/changes/sequence.comment.ts +60 -0
  522. package/src/core/objects/sequence/changes/sequence.create.test.ts +89 -0
  523. package/src/core/objects/sequence/changes/sequence.create.ts +111 -0
  524. package/src/core/objects/sequence/changes/sequence.drop.test.ts +35 -0
  525. package/src/core/objects/sequence/changes/sequence.drop.ts +37 -0
  526. package/src/core/objects/sequence/changes/sequence.privilege.ts +179 -0
  527. package/src/core/objects/sequence/changes/sequence.types.ts +12 -0
  528. package/src/core/objects/sequence/sequence.diff.test.ts +255 -0
  529. package/src/core/objects/sequence/sequence.diff.ts +294 -0
  530. package/src/core/objects/sequence/sequence.model.ts +185 -0
  531. package/src/core/objects/subscription/changes/subscription.alter.test.ts +134 -0
  532. package/src/core/objects/subscription/changes/subscription.alter.ts +110 -0
  533. package/src/core/objects/subscription/changes/subscription.base.ts +20 -0
  534. package/src/core/objects/subscription/changes/subscription.comment.test.ts +70 -0
  535. package/src/core/objects/subscription/changes/subscription.comment.ts +64 -0
  536. package/src/core/objects/subscription/changes/subscription.create.test.ts +80 -0
  537. package/src/core/objects/subscription/changes/subscription.create.ts +69 -0
  538. package/src/core/objects/subscription/changes/subscription.drop.test.ts +48 -0
  539. package/src/core/objects/subscription/changes/subscription.drop.ts +20 -0
  540. package/src/core/objects/subscription/changes/subscription.types.ts +22 -0
  541. package/src/core/objects/subscription/subscription.diff.test.ts +237 -0
  542. package/src/core/objects/subscription/subscription.diff.ts +242 -0
  543. package/src/core/objects/subscription/subscription.model.ts +190 -0
  544. package/src/core/objects/subscription/utils.ts +156 -0
  545. package/src/core/objects/table/changes/table.alter.test.ts +846 -0
  546. package/src/core/objects/table/changes/table.alter.ts +806 -0
  547. package/src/core/objects/table/changes/table.base.ts +20 -0
  548. package/src/core/objects/table/changes/table.comment.ts +266 -0
  549. package/src/core/objects/table/changes/table.create.test.ts +188 -0
  550. package/src/core/objects/table/changes/table.create.ts +192 -0
  551. package/src/core/objects/table/changes/table.drop.test.ts +36 -0
  552. package/src/core/objects/table/changes/table.drop.ts +45 -0
  553. package/src/core/objects/table/changes/table.privilege.ts +200 -0
  554. package/src/core/objects/table/changes/table.types.ts +12 -0
  555. package/src/core/objects/table/table.diff.test.ts +868 -0
  556. package/src/core/objects/table/table.diff.ts +817 -0
  557. package/src/core/objects/table/table.model.ts +460 -0
  558. package/src/core/objects/trigger/changes/trigger.alter.test.ts +50 -0
  559. package/src/core/objects/trigger/changes/trigger.alter.ts +76 -0
  560. package/src/core/objects/trigger/changes/trigger.base.ts +20 -0
  561. package/src/core/objects/trigger/changes/trigger.comment.ts +64 -0
  562. package/src/core/objects/trigger/changes/trigger.create.test.ts +47 -0
  563. package/src/core/objects/trigger/changes/trigger.create.ts +88 -0
  564. package/src/core/objects/trigger/changes/trigger.drop.test.ts +47 -0
  565. package/src/core/objects/trigger/changes/trigger.drop.ts +39 -0
  566. package/src/core/objects/trigger/changes/trigger.types.ts +10 -0
  567. package/src/core/objects/trigger/trigger.diff.test.ts +84 -0
  568. package/src/core/objects/trigger/trigger.diff.ts +116 -0
  569. package/src/core/objects/trigger/trigger.model.ts +264 -0
  570. package/src/core/objects/type/composite-type/changes/composite-type.alter.test.ts +208 -0
  571. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +174 -0
  572. package/src/core/objects/type/composite-type/changes/composite-type.base.ts +20 -0
  573. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +145 -0
  574. package/src/core/objects/type/composite-type/changes/composite-type.create.test.ts +106 -0
  575. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +95 -0
  576. package/src/core/objects/type/composite-type/changes/composite-type.drop.test.ts +36 -0
  577. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +37 -0
  578. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +175 -0
  579. package/src/core/objects/type/composite-type/changes/composite-type.types.ts +12 -0
  580. package/src/core/objects/type/composite-type/composite-type.diff.test.ts +269 -0
  581. package/src/core/objects/type/composite-type/composite-type.diff.ts +310 -0
  582. package/src/core/objects/type/composite-type/composite-type.model.ts +253 -0
  583. package/src/core/objects/type/enum/changes/enum.alter.test.ts +113 -0
  584. package/src/core/objects/type/enum/changes/enum.alter.ts +91 -0
  585. package/src/core/objects/type/enum/changes/enum.base.ts +20 -0
  586. package/src/core/objects/type/enum/changes/enum.comment.ts +64 -0
  587. package/src/core/objects/type/enum/changes/enum.create.test.ts +31 -0
  588. package/src/core/objects/type/enum/changes/enum.create.ts +56 -0
  589. package/src/core/objects/type/enum/changes/enum.drop.test.ts +28 -0
  590. package/src/core/objects/type/enum/changes/enum.drop.ts +34 -0
  591. package/src/core/objects/type/enum/changes/enum.privilege.ts +175 -0
  592. package/src/core/objects/type/enum/changes/enum.types.ts +12 -0
  593. package/src/core/objects/type/enum/enum.diff.test.ts +372 -0
  594. package/src/core/objects/type/enum/enum.diff.ts +308 -0
  595. package/src/core/objects/type/enum/enum.model.ts +194 -0
  596. package/src/core/objects/type/range/changes/range.alter.test.ts +29 -0
  597. package/src/core/objects/type/range/changes/range.alter.ts +51 -0
  598. package/src/core/objects/type/range/changes/range.base.ts +20 -0
  599. package/src/core/objects/type/range/changes/range.comment.ts +64 -0
  600. package/src/core/objects/type/range/changes/range.create.test.ts +54 -0
  601. package/src/core/objects/type/range/changes/range.create.ts +155 -0
  602. package/src/core/objects/type/range/changes/range.drop.test.ts +28 -0
  603. package/src/core/objects/type/range/changes/range.drop.ts +34 -0
  604. package/src/core/objects/type/range/changes/range.privilege.ts +175 -0
  605. package/src/core/objects/type/range/changes/range.types.ts +12 -0
  606. package/src/core/objects/type/range/range.diff.test.ts +147 -0
  607. package/src/core/objects/type/range/range.diff.ts +197 -0
  608. package/src/core/objects/type/range/range.model.ts +187 -0
  609. package/src/core/objects/type/type.types.ts +5 -0
  610. package/src/core/objects/utils.ts +171 -0
  611. package/src/core/objects/view/changes/view.alter.test.ts +115 -0
  612. package/src/core/objects/view/changes/view.alter.ts +112 -0
  613. package/src/core/objects/view/changes/view.base.ts +20 -0
  614. package/src/core/objects/view/changes/view.comment.ts +59 -0
  615. package/src/core/objects/view/changes/view.create.test.ts +70 -0
  616. package/src/core/objects/view/changes/view.create.ts +73 -0
  617. package/src/core/objects/view/changes/view.drop.test.ts +37 -0
  618. package/src/core/objects/view/changes/view.drop.ts +40 -0
  619. package/src/core/objects/view/changes/view.privilege.ts +200 -0
  620. package/src/core/objects/view/changes/view.types.ts +12 -0
  621. package/src/core/objects/view/view.diff.test.ts +173 -0
  622. package/src/core/objects/view/view.diff.ts +215 -0
  623. package/src/core/objects/view/view.model.ts +262 -0
  624. package/src/core/plan/apply.ts +172 -0
  625. package/src/core/plan/create.ts +384 -0
  626. package/src/core/plan/hierarchy.ts +574 -0
  627. package/src/core/plan/index.ts +29 -0
  628. package/src/core/plan/io.ts +20 -0
  629. package/src/core/plan/risk.ts +48 -0
  630. package/src/core/plan/serialize.test.ts +317 -0
  631. package/src/core/plan/serialize.ts +209 -0
  632. package/src/core/plan/sql-format/constants.ts +13 -0
  633. package/src/core/plan/sql-format/fixtures.ts +2803 -0
  634. package/src/core/plan/sql-format/format-comment-literals.test.ts +96 -0
  635. package/src/core/plan/sql-format/format-functions.test.ts +127 -0
  636. package/src/core/plan/sql-format/format-lowercase-coverage.test.ts +119 -0
  637. package/src/core/plan/sql-format/format-off.test.ts +806 -0
  638. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1061 -0
  639. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1279 -0
  640. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1057 -0
  641. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1048 -0
  642. package/src/core/plan/sql-format/format-stress.test.ts +616 -0
  643. package/src/core/plan/sql-format/format-utils.test.ts +91 -0
  644. package/src/core/plan/sql-format/format-utils.ts +391 -0
  645. package/src/core/plan/sql-format/formatters.ts +921 -0
  646. package/src/core/plan/sql-format/index.ts +149 -0
  647. package/src/core/plan/sql-format/keyword-case.test.ts +118 -0
  648. package/src/core/plan/sql-format/keyword-case.ts +1120 -0
  649. package/src/core/plan/sql-format/protect.test.ts +127 -0
  650. package/src/core/plan/sql-format/protect.ts +337 -0
  651. package/src/core/plan/sql-format/sql-scanner.test.ts +240 -0
  652. package/src/core/plan/sql-format/sql-scanner.ts +252 -0
  653. package/src/core/plan/sql-format/tokenizer.test.ts +68 -0
  654. package/src/core/plan/sql-format/tokenizer.ts +152 -0
  655. package/src/core/plan/sql-format/types.ts +31 -0
  656. package/src/core/plan/sql-format/wrap.test.ts +119 -0
  657. package/src/core/plan/sql-format/wrap.ts +196 -0
  658. package/src/core/plan/sql-format.ts +2 -0
  659. package/src/core/plan/ssl-config.ts +172 -0
  660. package/src/core/plan/statements.ts +22 -0
  661. package/src/core/plan/types.ts +171 -0
  662. package/src/core/postgres-config.ts +293 -0
  663. package/src/core/sort/custom-constraints.ts +161 -0
  664. package/src/core/sort/debug-visualization.ts +239 -0
  665. package/src/core/sort/dependency-filter.ts +224 -0
  666. package/src/core/sort/graph-builder.ts +235 -0
  667. package/src/core/sort/graph-utils.ts +51 -0
  668. package/src/core/sort/logical-sort.test.ts +371 -0
  669. package/src/core/sort/logical-sort.ts +597 -0
  670. package/src/core/sort/sort-changes.ts +234 -0
  671. package/src/core/sort/topological-sort.test.ts +275 -0
  672. package/src/core/sort/topological-sort.ts +184 -0
  673. package/src/core/sort/types.ts +112 -0
  674. package/src/core/sort/utils.ts +69 -0
  675. package/src/core/test-utils/assert-valid-sql.ts +20 -0
  676. package/src/index.ts +41 -0
  677. package/dist/core/index.d.ts +0 -15
  678. package/dist/core/index.js +0 -14
  679. package/dist/core/main.d.ts +0 -5
  680. package/dist/core/main.js +0 -44
@@ -0,0 +1,378 @@
1
+ /**
2
+ * Round-based declarative schema apply engine.
3
+ *
4
+ * Applies SQL statements to a database using iterative rounds:
5
+ * 1. Try each pending statement
6
+ * 2. On dependency errors, defer to next round
7
+ * 3. Repeat until all applied or no progress (stuck)
8
+ * 4. Optional final validation pass for function bodies
9
+ */
10
+ import debug from "debug";
11
+ const debugApply = debug("pg-delta:declarative-apply");
12
+ // ---------------------------------------------------------------------------
13
+ // Dependency error classification
14
+ // ---------------------------------------------------------------------------
15
+ /**
16
+ * SQLSTATE codes that indicate a missing dependency (object not yet created).
17
+ * Mirrors pg-topo's isDependencyErrorCode.
18
+ */
19
+ const DEPENDENCY_ERROR_CODES = new Set([
20
+ "42P01", // undefined_table
21
+ "42703", // undefined_column
22
+ "42704", // undefined_object
23
+ "42883", // undefined_function
24
+ "3F000", // invalid_schema_name
25
+ ]);
26
+ /**
27
+ * Detect errors caused by environment/capability limitations rather than
28
+ * schema bugs. These statements are skipped permanently (not retried).
29
+ *
30
+ * Strategy: SQLSTATE codes are the primary gate (fast, stable). For codes
31
+ * reused across unrelated error conditions (e.g. 42710 = "duplicate object"
32
+ * covers both roles and extensions), the error message is used as a secondary
33
+ * disambiguator. Messages are lowercased before matching to handle
34
+ * case-sensitivity differences across PG versions.
35
+ */
36
+ function isEnvironmentCapabilityError(code, message, statementClass) {
37
+ // Feature not supported
38
+ if (code === "0A000")
39
+ return true;
40
+ // Extension not available
41
+ if (code === "58P01" &&
42
+ message.includes("extension") &&
43
+ (message.includes("control file") || message.includes("is not available"))) {
44
+ return true;
45
+ }
46
+ // Subscription / logical replication not available
47
+ if (statementClass === "CREATE_SUBSCRIPTION" &&
48
+ (code === "58P01" ||
49
+ message.includes("walreceiver") ||
50
+ message.includes("logical replication"))) {
51
+ return true;
52
+ }
53
+ // Event trigger requires superuser
54
+ if (statementClass === "CREATE_EVENT_TRIGGER" &&
55
+ (code === "42501" || message.includes("must be superuser"))) {
56
+ return true;
57
+ }
58
+ // Language does not exist (e.g. plv8)
59
+ if ((statementClass === "CREATE_FUNCTION" ||
60
+ statementClass === "CREATE_PROCEDURE") &&
61
+ message.includes("language") &&
62
+ message.includes("does not exist")) {
63
+ return true;
64
+ }
65
+ // Role already exists
66
+ if (statementClass === "CREATE_ROLE" &&
67
+ (code === "42710" || code === "23505") &&
68
+ message.includes("role") &&
69
+ (message.includes("already exists") ||
70
+ message.includes("duplicate key") ||
71
+ message.includes("pg_authid_rolname_index"))) {
72
+ return true;
73
+ }
74
+ // Extension already exists
75
+ if (statementClass === "CREATE_EXTENSION" &&
76
+ code === "42710" &&
77
+ message.includes("extension") &&
78
+ message.includes("already exists")) {
79
+ return true;
80
+ }
81
+ // Sequence ownership constraint
82
+ if (code === "55000" &&
83
+ message.includes("sequence must have same owner as table it is linked to")) {
84
+ return true;
85
+ }
86
+ // Publication replica identity
87
+ if (code === "55000" &&
88
+ message.includes("does not have a replica identity") &&
89
+ message.includes("publishes updates")) {
90
+ return true;
91
+ }
92
+ return false;
93
+ }
94
+ function isDependencyError(code) {
95
+ return code !== undefined && DEPENDENCY_ERROR_CODES.has(code);
96
+ }
97
+ function parsePgPosition(pos) {
98
+ if (pos === undefined)
99
+ return undefined;
100
+ if (typeof pos === "number" && Number.isInteger(pos) && pos > 0)
101
+ return pos;
102
+ if (typeof pos === "string") {
103
+ const n = Number.parseInt(pos, 10);
104
+ if (Number.isInteger(n) && n > 0)
105
+ return n;
106
+ }
107
+ return undefined;
108
+ }
109
+ // ---------------------------------------------------------------------------
110
+ // Core round-based apply
111
+ // ---------------------------------------------------------------------------
112
+ /**
113
+ * Apply SQL statements to a database using iterative rounds.
114
+ *
115
+ * Algorithm:
116
+ * 1. Optionally set check_function_bodies = off
117
+ * 2. For each round, iterate over pending statements:
118
+ * - On success: mark as applied
119
+ * - On dependency error: defer to next round
120
+ * - On environment error: skip permanently with warning
121
+ * - On other error: mark as failed
122
+ * 3. If a round makes no progress (0 applied), stop (stuck)
123
+ * 4. If finalValidation is true, re-run CREATE FUNCTION/PROCEDURE
124
+ * with check_function_bodies = on
125
+ */
126
+ export async function roundApply(options) {
127
+ const { pool, statements, maxRounds = 100, disableCheckFunctionBodies = true, finalValidation = true, onRoundComplete, } = options;
128
+ const rounds = [];
129
+ const allErrors = [];
130
+ let totalApplied = 0;
131
+ let totalSkipped = 0;
132
+ // Track which statements still need to be applied
133
+ let pending = [...statements];
134
+ // Track statements that failed with non-dependency errors
135
+ const hardFailed = [];
136
+ // Track skipped (environment) statements
137
+ const skipped = [];
138
+ // Track applied function/procedure statements for final validation
139
+ const appliedFunctions = [];
140
+ const client = await pool.connect();
141
+ try {
142
+ // Disable function body checks to avoid false failures from
143
+ // functions referencing not-yet-created objects
144
+ if (disableCheckFunctionBodies) {
145
+ await client.query("SET check_function_bodies = off");
146
+ }
147
+ for (let round = 1; round <= maxRounds && pending.length > 0; round++) {
148
+ debugApply("round %d: %d pending", round, pending.length);
149
+ const roundErrors = [];
150
+ const deferred = [];
151
+ let appliedThisRound = 0;
152
+ let failedThisRound = 0;
153
+ for (const stmt of pending) {
154
+ try {
155
+ await client.query(stmt.sql);
156
+ appliedThisRound++;
157
+ totalApplied++;
158
+ // Track functions for final validation
159
+ if (stmt.statementClass === "CREATE_FUNCTION" ||
160
+ stmt.statementClass === "CREATE_PROCEDURE") {
161
+ appliedFunctions.push(stmt);
162
+ }
163
+ }
164
+ catch (err) {
165
+ const pgErr = err;
166
+ const code = pgErr.code ?? "";
167
+ const message = (pgErr.message ?? "").toLowerCase();
168
+ // Check if this is an environment/capability limitation
169
+ if (isEnvironmentCapabilityError(code, message, stmt.statementClass)) {
170
+ debugApply("skipped %s: %s", stmt.id, pgErr.message ?? code ?? "environment/capability");
171
+ skipped.push(stmt);
172
+ totalSkipped++;
173
+ continue;
174
+ }
175
+ // Check if this is a dependency error (retryable)
176
+ if (isDependencyError(code)) {
177
+ debugApply("deferred %s: %s - %s", stmt.id, code, pgErr.message ?? "Unknown error");
178
+ if (pgErr.detail)
179
+ debugApply(" detail: %s", pgErr.detail);
180
+ if (pgErr.hint)
181
+ debugApply(" hint: %s", pgErr.hint);
182
+ deferred.push(stmt);
183
+ roundErrors.push({
184
+ statement: stmt,
185
+ code,
186
+ message: pgErr.message ?? "Unknown error",
187
+ isDependencyError: true,
188
+ position: parsePgPosition(pgErr.position),
189
+ detail: pgErr.detail,
190
+ hint: pgErr.hint,
191
+ });
192
+ continue;
193
+ }
194
+ // Hard failure - non-dependency, non-environment error
195
+ failedThisRound++;
196
+ debugApply("failed %s: %s - %s", stmt.id, code, pgErr.message ?? "Unknown error");
197
+ if (pgErr.detail)
198
+ debugApply(" detail: %s", pgErr.detail);
199
+ if (pgErr.hint)
200
+ debugApply(" hint: %s", pgErr.hint);
201
+ const stmtError = {
202
+ statement: stmt,
203
+ code,
204
+ message: pgErr.message ?? "Unknown error",
205
+ isDependencyError: false,
206
+ position: parsePgPosition(pgErr.position),
207
+ detail: pgErr.detail,
208
+ hint: pgErr.hint,
209
+ };
210
+ roundErrors.push(stmtError);
211
+ hardFailed.push(stmtError);
212
+ allErrors.push(stmtError);
213
+ }
214
+ }
215
+ if (debugApply.enabled && deferred.length > 0) {
216
+ debugApply("Round %d complete: %d applied, %d deferred, %d failed", round, appliedThisRound, deferred.length, failedThisRound);
217
+ for (const e of roundErrors.filter((er) => er.isDependencyError)) {
218
+ debugApply(" deferred %s: %s - %s", e.statement.id, e.code, e.message);
219
+ if (e.detail)
220
+ debugApply(" detail: %s", e.detail);
221
+ if (e.hint)
222
+ debugApply(" hint: %s", e.hint);
223
+ }
224
+ }
225
+ const roundResult = {
226
+ round,
227
+ applied: appliedThisRound,
228
+ deferred: deferred.length,
229
+ failed: failedThisRound,
230
+ errors: roundErrors,
231
+ };
232
+ rounds.push(roundResult);
233
+ onRoundComplete?.(roundResult);
234
+ // No progress this round - we're stuck
235
+ if (appliedThisRound === 0 && deferred.length > 0) {
236
+ // Collect the latest error for each stuck statement
237
+ const stuckStatements = deferred.map((stmt) => {
238
+ const lastError = roundErrors.find((e) => e.statement.id === stmt.id);
239
+ return (lastError ?? {
240
+ statement: stmt,
241
+ code: "UNKNOWN",
242
+ message: "Deferred without a recorded error",
243
+ isDependencyError: true,
244
+ });
245
+ });
246
+ return {
247
+ status: "stuck",
248
+ totalRounds: round,
249
+ totalApplied,
250
+ totalSkipped,
251
+ stuckStatements,
252
+ errors: hardFailed.length > 0 ? hardFailed : undefined,
253
+ rounds,
254
+ };
255
+ }
256
+ pending = deferred;
257
+ }
258
+ // If we exhausted maxRounds but still have pending, report stuck
259
+ if (pending.length > 0) {
260
+ return {
261
+ status: "stuck",
262
+ totalRounds: maxRounds,
263
+ totalApplied,
264
+ totalSkipped,
265
+ stuckStatements: pending.map((stmt) => ({
266
+ statement: stmt,
267
+ code: "MAX_ROUNDS",
268
+ message: `Exceeded maximum rounds (${maxRounds})`,
269
+ isDependencyError: true,
270
+ })),
271
+ errors: hardFailed.length > 0 ? hardFailed : undefined,
272
+ rounds,
273
+ };
274
+ }
275
+ // Final validation pass: re-run functions with check_function_bodies = on
276
+ let validationErrors;
277
+ if (finalValidation && appliedFunctions.length > 0) {
278
+ validationErrors = await validateFunctionBodies(client, appliedFunctions);
279
+ }
280
+ return {
281
+ status: hardFailed.length > 0
282
+ ? "error"
283
+ : validationErrors && validationErrors.length > 0
284
+ ? "error"
285
+ : "success",
286
+ totalRounds: rounds.length,
287
+ totalApplied,
288
+ totalSkipped,
289
+ errors: hardFailed.length > 0 ? hardFailed : undefined,
290
+ validationErrors: validationErrors && validationErrors.length > 0
291
+ ? validationErrors
292
+ : undefined,
293
+ rounds,
294
+ };
295
+ }
296
+ finally {
297
+ if (disableCheckFunctionBodies) {
298
+ try {
299
+ // Restore check_function_bodies for the connection being returned to the pool.
300
+ // validateFunctionBodies uses SET LOCAL inside a rolled-back transaction so it
301
+ // never changes the session-level value, but the SET at the start of rounds still
302
+ // needs to be undone here.
303
+ await client.query("SET check_function_bodies = on");
304
+ }
305
+ catch {
306
+ // Best-effort restore; connection is being released anyway
307
+ }
308
+ }
309
+ client.release();
310
+ }
311
+ }
312
+ /**
313
+ * Rewrite a CREATE FUNCTION/PROCEDURE statement to use OR REPLACE for
314
+ * idempotent re-execution during validation. Handles leading line-comments,
315
+ * block comments (pg-topo annotations), and avoids double-adding OR REPLACE.
316
+ */
317
+ export function rewriteAsOrReplace(sql) {
318
+ return sql.replace(/^((?:(?:\s*--[^\n]*\n)|(?:\s*\/\*[\s\S]*?\*\/\s*))*\s*CREATE\s+)(?!OR\s+REPLACE\b)(FUNCTION|PROCEDURE)/i, "$1OR REPLACE $2");
319
+ }
320
+ /**
321
+ * Re-run CREATE FUNCTION/PROCEDURE statements with check_function_bodies = on
322
+ * using CREATE OR REPLACE to validate function bodies after all objects exist.
323
+ *
324
+ * Runs entirely inside a transaction that is always rolled back, so:
325
+ * - SET LOCAL search_path and check_function_bodies are transaction-scoped and
326
+ * never leak to the caller's session.
327
+ * - The CREATE OR REPLACE changes are undone, leaving the DB exactly as it was
328
+ * after the main apply rounds.
329
+ * - SAVEPOINTs around each statement prevent an aborted-transaction error from
330
+ * blocking validation of the remaining functions.
331
+ */
332
+ async function validateFunctionBodies(client, functions) {
333
+ const errors = [];
334
+ await client.query("BEGIN");
335
+ try {
336
+ // Auto-detect all user schemas so unqualified names in function bodies
337
+ // resolve correctly, regardless of the session's default search_path.
338
+ const { rows } = await client.query(`
339
+ SELECT string_agg(quote_ident(nspname), ', ' ORDER BY nspname) AS schemas
340
+ FROM pg_namespace
341
+ WHERE nspname NOT LIKE 'pg_%'
342
+ AND nspname <> 'information_schema'
343
+ `);
344
+ const detectedSchemas = rows[0]?.schemas;
345
+ if (detectedSchemas) {
346
+ debugApply("validation search_path: %s, pg_catalog", detectedSchemas);
347
+ await client.query(`SET LOCAL search_path = ${detectedSchemas}, pg_catalog`);
348
+ }
349
+ await client.query("SET LOCAL check_function_bodies = on");
350
+ for (const stmt of functions) {
351
+ const replaceSql = rewriteAsOrReplace(stmt.sql);
352
+ await client.query("SAVEPOINT validate_fn");
353
+ try {
354
+ await client.query(replaceSql);
355
+ await client.query("RELEASE SAVEPOINT validate_fn");
356
+ }
357
+ catch (err) {
358
+ await client.query("ROLLBACK TO SAVEPOINT validate_fn");
359
+ const pgErr = err;
360
+ errors.push({
361
+ statement: stmt,
362
+ code: pgErr.code ?? "",
363
+ message: pgErr.message ?? "Unknown validation error",
364
+ isDependencyError: false,
365
+ position: parsePgPosition(pgErr.position),
366
+ detail: pgErr.detail,
367
+ hint: pgErr.hint,
368
+ });
369
+ }
370
+ }
371
+ }
372
+ finally {
373
+ // Always roll back: undoes all CREATE OR REPLACE changes and reverts the
374
+ // SET LOCAL search_path / check_function_bodies so nothing leaks.
375
+ await client.query("ROLLBACK");
376
+ }
377
+ return errors;
378
+ }
@@ -1,4 +1,4 @@
1
- import type { Sql } from "postgres";
1
+ import type { Pool } from "pg";
2
2
  /**
3
3
  * Dependency type as defined in PostgreSQL's pg_depend.deptype.
4
4
  * n: normal
@@ -27,5 +27,5 @@ export interface PgDepend {
27
27
  * @param params - Object containing arrays of OIDs for filtering (user_oids, user_namespace_oids, etc.)
28
28
  * @returns Array of dependency objects with class names.
29
29
  */
30
- export declare function extractDepends(sql: Sql): Promise<PgDepend[]>;
30
+ export declare function extractDepends(pool: Pool): Promise<PgDepend[]>;
31
31
  export {};
@@ -1,3 +1,4 @@
1
+ import { sql } from "@ts-safeql/sql-tag";
1
2
  /**
2
3
  * Extract dependencies for privileges and memberships so that GRANT/REVOKE
3
4
  * operations are properly ordered with respect to their target objects/roles.
@@ -13,8 +14,8 @@
13
14
  * - membership:<role>-><member> -> role:<role>
14
15
  * - membership:<role>-><member> -> role:<member>
15
16
  */
16
- async function extractPrivilegeAndMembershipDepends(sql) {
17
- const rows = await sql `
17
+ async function extractPrivilegeAndMembershipDepends(pool) {
18
+ const { rows } = await pool.query(sql `
18
19
  with
19
20
  -- OBJECT PRIVILEGES (relations)
20
21
  extension_rel_oids as (
@@ -468,7 +469,7 @@ where dependent_stable_id <> referenced_stable_id
468
469
  and NOT (
469
470
  COALESCE(dep_schema, '') LIKE ANY (ARRAY['pg\\_%','information\\_schema'])
470
471
  )
471
- `;
472
+ `);
472
473
  return rows;
473
474
  }
474
475
  /**
@@ -477,8 +478,8 @@ where dependent_stable_id <> referenced_stable_id
477
478
  * @param params - Object containing arrays of OIDs for filtering (user_oids, user_namespace_oids, etc.)
478
479
  * @returns Array of dependency objects with class names.
479
480
  */
480
- export async function extractDepends(sql) {
481
- const dependsRows = await sql `
481
+ export async function extractDepends(pool) {
482
+ const { rows: dependsRows } = await pool.query(sql `
482
483
  WITH ids AS (
483
484
  -- only the objects that actually show up in dependencies (both sides)
484
485
  SELECT DISTINCT classid, objid, objsubid FROM pg_depend WHERE deptype IN ('n','a')
@@ -1823,9 +1824,9 @@ export async function extractDepends(sql) {
1823
1824
  COALESCE(dep_schema, '') LIKE ANY (ARRAY['pg\\_%','information\\_schema'])
1824
1825
  )
1825
1826
  ORDER BY dependent_stable_id, referenced_stable_id;
1826
- `;
1827
+ `);
1827
1828
  // Extract privilege and membership dependencies
1828
- const privilegeDepends = await extractPrivilegeAndMembershipDepends(sql);
1829
+ const privilegeDepends = await extractPrivilegeAndMembershipDepends(pool);
1829
1830
  // Combine all dependency sources and remove duplicates
1830
1831
  const allDepends = new Set([...dependsRows, ...privilegeDepends]);
1831
1832
  return Array.from(allDepends).sort((a, b) => a.dependent_stable_id.localeCompare(b.dependent_stable_id) ||
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Map changes to declarative schema file paths.
3
+ */
4
+ import type { Change } from "../change.types.ts";
5
+ import type { FilePath, Grouping } from "./types.ts";
6
+ export declare function getFilePath(change: Change): FilePath;
7
+ /** A compiled grouping pattern: pre-built RegExp + group name. */
8
+ export interface CompiledPattern {
9
+ regex: RegExp;
10
+ name: string;
11
+ }
12
+ /** Result of compilePatterns: valid compiled patterns plus warnings for skipped/invalid regexes. */
13
+ interface CompilePatternsResult {
14
+ compiled: CompiledPattern[];
15
+ warnings: string[];
16
+ }
17
+ /**
18
+ * Compile user-facing `GroupingPattern[]` into `CompiledPattern[]`.
19
+ * Strings are turned into `new RegExp(str)`. Invalid regex strings are skipped
20
+ * (no throw), so the returned `compiled` array may be shorter than the input.
21
+ * Any skipped patterns are reported in `warnings`.
22
+ */
23
+ export declare function compilePatterns(patterns: import("./types.ts").GroupingPattern[]): CompilePatternsResult;
24
+ /**
25
+ * Create a file mapper that applies regex-based grouping on top of the
26
+ * default `getFilePath` mapping.
27
+ *
28
+ * When no grouping config is provided (or it is undefined), the plain
29
+ * `getFilePath` function is returned unchanged.
30
+ */
31
+ export declare function createFileMapper(grouping?: Grouping, onWarning?: (message: string) => void): (change: Change) => FilePath;
32
+ /**
33
+ * Flatten a schema-scoped file path into one file per category.
34
+ *
35
+ * e.g. `schemas/partman/tables/template_public_events.sql`
36
+ * → `schemas/partman/tables.sql`
37
+ *
38
+ * `schema.sql` is left unchanged (it is already flat).
39
+ */
40
+ export declare function flattenSchema(filePath: FilePath): FilePath;
41
+ /**
42
+ * Determine the group name for a change, or `null` if it should not be
43
+ * grouped.
44
+ *
45
+ * Resolution order:
46
+ * 1. Automatic partition detection -- resolve the parent table name.
47
+ * 2. Regex patterns -- first match wins (user controls priority by ordering).
48
+ *
49
+ * The resolved name from step 1 is fed through step 2 so that a partition
50
+ * parent name can itself be matched by a broader pattern (e.g. parent
51
+ * "kubernetes_resource_events" matches `/^kubernetes/`).
52
+ *
53
+ * If auto-detect resolved a parent but no pattern matched, the parent name
54
+ * is used as-is.
55
+ */
56
+ export declare function resolveGroupName(change: Change, filePath: FilePath, patterns: CompiledPattern[], autoPartitions: boolean): string | null;
57
+ /**
58
+ * Rewrite a `FilePath` according to the chosen grouping mode.
59
+ *
60
+ * - **single-file**: the filename becomes `{prefix}.sql` inside the original
61
+ * category directory.
62
+ * e.g. `schemas/public/tables/wal_verification_results_p20260107.sql`
63
+ * → `schemas/public/tables/wal_verification_results.sql`
64
+ *
65
+ * - **subdirectory**: the file is moved to a prefix-named directory under the
66
+ * schema root, with the category as the filename.
67
+ * e.g. `schemas/public/tables/wal_verification_results_p20260107.sql`
68
+ * → `schemas/public/wal_verification_results/tables.sql`
69
+ */
70
+ export declare function applyGrouping(filePath: FilePath, prefix: string, mode: Grouping["mode"]): FilePath;
71
+ export {};