@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,107 @@
1
+ /**
2
+ * Filter DSL - A serializable domain-specific language for change filtering.
3
+ */
4
+ import { PROPERTY_EXTRACTORS } from "./extractors.js";
5
+ /**
6
+ * Evaluate a pattern against a change.
7
+ *
8
+ * @param pattern - The pattern to evaluate
9
+ * @param change - The change to match against
10
+ * @returns true if the pattern matches, false otherwise
11
+ */
12
+ export function evaluatePattern(pattern, change) {
13
+ // Handle composition operators first (they take precedence)
14
+ // NOT operator - negate the result
15
+ if (pattern.not) {
16
+ return !evaluatePattern(pattern.not, change);
17
+ }
18
+ // AND operator - all patterns must match
19
+ if (pattern.and) {
20
+ return pattern.and.every((p) => evaluatePattern(p, change));
21
+ }
22
+ // OR operator - any pattern must match
23
+ if (pattern.or) {
24
+ return pattern.or.some((p) => evaluatePattern(p, change));
25
+ }
26
+ // Evaluate basic pattern matching
27
+ // Multiple properties in a pattern are combined with AND (all must match)
28
+ // Match objectType
29
+ if (pattern.type) {
30
+ if (change.objectType !== pattern.type) {
31
+ return false;
32
+ }
33
+ }
34
+ // Match operation
35
+ if (pattern.operation) {
36
+ if (change.operation !== pattern.operation) {
37
+ return false;
38
+ }
39
+ }
40
+ // Match scope
41
+ if (pattern.scope) {
42
+ if (change.scope !== pattern.scope) {
43
+ return false;
44
+ }
45
+ }
46
+ // Match extracted properties
47
+ for (const [key, value] of Object.entries(pattern)) {
48
+ // Skip composition operators and core properties
49
+ if (["and", "or", "not", "type", "operation", "scope"].includes(key)) {
50
+ continue;
51
+ }
52
+ // Check if this is a registered property extractor
53
+ const extractor = PROPERTY_EXTRACTORS[key];
54
+ if (!extractor) {
55
+ // Unknown property - ignore
56
+ continue;
57
+ }
58
+ // Extract the actual value from the change
59
+ const actualValue = extractor(change);
60
+ // Property matching rules:
61
+ // - String value: exact match
62
+ // - Array value: value must be in array
63
+ // - Missing properties (null) don't match
64
+ if (actualValue === null) {
65
+ return false;
66
+ }
67
+ if (typeof value === "string") {
68
+ // Exact match
69
+ if (actualValue !== value) {
70
+ return false;
71
+ }
72
+ }
73
+ else if (Array.isArray(value)) {
74
+ // Value must be in array
75
+ if (!value.includes(actualValue)) {
76
+ return false;
77
+ }
78
+ }
79
+ else {
80
+ // Invalid value type - don't match
81
+ return false;
82
+ }
83
+ }
84
+ // All checks passed
85
+ return true;
86
+ }
87
+ /**
88
+ * Compile a Filter DSL to a ChangeFilter function.
89
+ *
90
+ * @param dsl - The filter DSL pattern
91
+ * @returns A ChangeFilter function that evaluates the pattern
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * const filter = compileFilterDSL({
96
+ * or: [
97
+ * { type: "schema", operation: "create" },
98
+ * { schema: "public" }
99
+ * ]
100
+ * });
101
+ * ```
102
+ */
103
+ export function compileFilterDSL(dsl) {
104
+ return (change) => {
105
+ return evaluatePattern(dsl, change);
106
+ };
107
+ }
@@ -0,0 +1,12 @@
1
+ import type { Change } from "../../change.types.ts";
2
+ /**
3
+ * Property extractor function that extracts a value from a change.
4
+ */
5
+ type PropertyExtractor = (change: Change) => string | null;
6
+ /**
7
+ * Registry of property extractors.
8
+ * Maps property names to extractor functions.
9
+ */
10
+ export declare const PROPERTY_EXTRACTORS: Record<string, PropertyExtractor>;
11
+ export declare function getSchema(change: Change): string | null;
12
+ export {};
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Registry of property extractors.
3
+ * Maps property names to extractor functions.
4
+ */
5
+ export const PROPERTY_EXTRACTORS = {
6
+ schema: getSchema,
7
+ owner: getOwner,
8
+ member: (change) => {
9
+ if (change.scope === "membership") {
10
+ return change.member;
11
+ }
12
+ return null;
13
+ },
14
+ };
15
+ export function getSchema(change) {
16
+ switch (change.objectType) {
17
+ case "aggregate":
18
+ return change.aggregate.schema;
19
+ case "collation":
20
+ return change.collation.schema;
21
+ case "composite_type":
22
+ return change.compositeType.schema;
23
+ case "domain":
24
+ return change.domain.schema;
25
+ case "enum":
26
+ return change.enum.schema;
27
+ case "event_trigger":
28
+ return null;
29
+ case "extension":
30
+ return change.extension.schema;
31
+ case "index":
32
+ return change.index.schema;
33
+ case "language":
34
+ return null;
35
+ case "materialized_view":
36
+ return change.materializedView.schema;
37
+ case "procedure":
38
+ return change.procedure.schema;
39
+ case "publication":
40
+ return null;
41
+ case "range":
42
+ return change.range.schema;
43
+ case "rls_policy":
44
+ return change.policy.schema;
45
+ case "role":
46
+ return null;
47
+ case "rule":
48
+ return change.rule.schema;
49
+ case "schema":
50
+ return change.schema.name;
51
+ case "sequence":
52
+ return change.sequence.schema;
53
+ case "subscription":
54
+ return null;
55
+ case "table":
56
+ return change.table.schema;
57
+ case "trigger":
58
+ return change.trigger.schema;
59
+ case "view":
60
+ return change.view.schema;
61
+ case "foreign_data_wrapper":
62
+ return null;
63
+ case "server":
64
+ return null;
65
+ case "user_mapping":
66
+ return null;
67
+ case "foreign_table":
68
+ return change.foreignTable.schema;
69
+ default: {
70
+ // exhaustiveness check
71
+ const _exhaustive = change;
72
+ return _exhaustive;
73
+ }
74
+ }
75
+ }
76
+ function getOwner(change) {
77
+ switch (change.objectType) {
78
+ case "aggregate":
79
+ return change.aggregate.owner;
80
+ case "collation":
81
+ return change.collation.owner;
82
+ case "composite_type":
83
+ return change.compositeType.owner;
84
+ case "domain":
85
+ return change.domain.owner;
86
+ case "enum":
87
+ return change.enum.owner;
88
+ case "event_trigger":
89
+ return change.eventTrigger.owner;
90
+ case "extension":
91
+ return change.extension.owner;
92
+ case "index":
93
+ return change.index.owner;
94
+ case "language":
95
+ return change.language.owner;
96
+ case "materialized_view":
97
+ return change.materializedView.owner;
98
+ case "procedure":
99
+ return change.procedure.owner;
100
+ case "publication":
101
+ return change.publication.owner;
102
+ case "range":
103
+ return change.range.owner;
104
+ case "rls_policy":
105
+ return change.policy.owner;
106
+ case "role":
107
+ return change.role.name;
108
+ case "rule":
109
+ return change.rule.owner;
110
+ case "schema":
111
+ return change.schema.owner;
112
+ case "sequence":
113
+ return change.sequence.owner;
114
+ case "subscription":
115
+ return change.subscription.owner;
116
+ case "table":
117
+ return change.table.owner;
118
+ case "trigger":
119
+ return change.trigger.owner;
120
+ case "view":
121
+ return change.view.owner;
122
+ case "foreign_data_wrapper":
123
+ return change.foreignDataWrapper.owner;
124
+ case "server":
125
+ return change.server.owner;
126
+ case "user_mapping":
127
+ return null;
128
+ case "foreign_table":
129
+ return change.foreignTable.owner;
130
+ default: {
131
+ // exhaustiveness check
132
+ const _exhaustive = change;
133
+ return _exhaustive;
134
+ }
135
+ }
136
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Integration DSL - A serializable domain-specific language for integrations.
3
+ *
4
+ * Combines filter and serialization DSLs into a single serializable structure.
5
+ */
6
+ import type { FilterDSL } from "./filter/dsl.ts";
7
+ import type { SerializeDSL } from "./serialize/dsl.ts";
8
+ /**
9
+ * Integration DSL - serializable representation of an integration.
10
+ */
11
+ export type IntegrationDSL = {
12
+ /**
13
+ * Filter DSL - determines which changes to include/exclude.
14
+ * If not provided, all changes are included.
15
+ */
16
+ filter?: FilterDSL;
17
+ /**
18
+ * Serialization DSL - customizes how changes are serialized.
19
+ * If not provided, changes are serialized with default options.
20
+ */
21
+ serialize?: SerializeDSL;
22
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Integration DSL - A serializable domain-specific language for integrations.
3
+ *
4
+ * Combines filter and serialization DSLs into a single serializable structure.
5
+ */
6
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { ChangeFilter, ChangeSerializer } from "../main.ts";
2
+ export type Integration = {
3
+ filter?: ChangeFilter;
4
+ serialize?: ChangeSerializer;
5
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Serialization DSL - A serializable domain-specific language for customizing change serialization.
3
+ *
4
+ * Reuses the filter pattern matching logic to determine when to apply serialization options.
5
+ */
6
+ import type { ChangeSerializer } from "../../main.ts";
7
+ import { type FilterPattern } from "../filter/dsl.ts";
8
+ /**
9
+ * Serialization options that can be passed to change.serialize().
10
+ */
11
+ type SerializeOptions = {
12
+ skipAuthorization?: boolean;
13
+ [key: string]: unknown;
14
+ };
15
+ /**
16
+ * A serialization rule that applies options when a pattern matches.
17
+ */
18
+ type SerializeRule = {
19
+ /**
20
+ * Pattern to match against changes.
21
+ * Uses the same pattern matching logic as filters.
22
+ */
23
+ when: FilterPattern;
24
+ /**
25
+ * Serialization options to apply when the pattern matches.
26
+ */
27
+ options: SerializeOptions;
28
+ };
29
+ /**
30
+ * Serialization DSL - array of rules evaluated in order.
31
+ * First matching rule's options are applied.
32
+ */
33
+ export type SerializeDSL = SerializeRule[];
34
+ /**
35
+ * Compile a Serialization DSL to a ChangeSerializer function.
36
+ *
37
+ * Rules are evaluated in order, and the first matching rule's options are applied.
38
+ * If no rule matches, the change is serialized with default options.
39
+ *
40
+ * @param dsl - The serialization DSL
41
+ * @returns A ChangeSerializer function that applies the rules
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const serializer = compileSerializeDSL([
46
+ * {
47
+ * when: {
48
+ * type: "schema",
49
+ * operation: "create",
50
+ * owner: ["service_role"]
51
+ * },
52
+ * options: { skipAuthorization: true }
53
+ * }
54
+ * ]);
55
+ * ```
56
+ */
57
+ export declare function compileSerializeDSL(dsl: SerializeDSL): ChangeSerializer;
58
+ export {};
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Serialization DSL - A serializable domain-specific language for customizing change serialization.
3
+ *
4
+ * Reuses the filter pattern matching logic to determine when to apply serialization options.
5
+ */
6
+ import { evaluatePattern } from "../filter/dsl.js";
7
+ /**
8
+ * Compile a Serialization DSL to a ChangeSerializer function.
9
+ *
10
+ * Rules are evaluated in order, and the first matching rule's options are applied.
11
+ * If no rule matches, the change is serialized with default options.
12
+ *
13
+ * @param dsl - The serialization DSL
14
+ * @returns A ChangeSerializer function that applies the rules
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const serializer = compileSerializeDSL([
19
+ * {
20
+ * when: {
21
+ * type: "schema",
22
+ * operation: "create",
23
+ * owner: ["service_role"]
24
+ * },
25
+ * options: { skipAuthorization: true }
26
+ * }
27
+ * ]);
28
+ * ```
29
+ */
30
+ export function compileSerializeDSL(dsl) {
31
+ return (change) => {
32
+ // Find first matching rule
33
+ for (const rule of dsl) {
34
+ if (evaluatePattern(rule.when, change)) {
35
+ // Apply this rule's options
36
+ return change.serialize(rule.options);
37
+ }
38
+ }
39
+ // No rule matched - use default serialization
40
+ return change.serialize();
41
+ };
42
+ }
@@ -0,0 +1,5 @@
1
+ import type { Change } from "./change.types.ts";
2
+ import type { Integration } from "./integrations/integration.types.ts";
3
+ export type ChangeFilter = (change: Change) => boolean;
4
+ export type ChangeSerializer = (change: Change) => string | undefined;
5
+ export type MainOptions = Integration;
@@ -0,0 +1,44 @@
1
+ import postgres from "postgres";
2
+ import { diffCatalogs } from "./catalog.diff.js";
3
+ import { extractCatalog } from "./catalog.model.js";
4
+ import { postgresConfig } from "./postgres-config.js";
5
+ import { sortChanges } from "./sort/sort-changes.js";
6
+ async function _main(mainDatabaseUrl, branchDatabaseUrl, options = {}) {
7
+ const mainSql = postgres(mainDatabaseUrl, postgresConfig);
8
+ const branchSql = postgres(branchDatabaseUrl, postgresConfig);
9
+ const [mainCatalog, branchCatalog] = await Promise.all([
10
+ extractCatalog(mainSql),
11
+ extractCatalog(branchSql),
12
+ ]);
13
+ await Promise.all([mainSql.end(), branchSql.end()]);
14
+ const changes = diffCatalogs(mainCatalog, branchCatalog);
15
+ // Use provided options as integration (optional)
16
+ const integration = options ?? {};
17
+ // Apply filter if provided
18
+ const ctx = { mainCatalog, branchCatalog };
19
+ let filteredChanges = changes;
20
+ const integrationFilter = integration.filter;
21
+ if (integrationFilter) {
22
+ filteredChanges = filteredChanges.filter((change) => integrationFilter(change));
23
+ }
24
+ if (filteredChanges.length === 0) {
25
+ return null;
26
+ }
27
+ const sortedChanges = sortChanges(ctx, filteredChanges);
28
+ const hasRoutineChanges = sortedChanges.some((change) => change.objectType === "procedure" || change.objectType === "aggregate");
29
+ const sessionConfig = hasRoutineChanges
30
+ ? ["SET check_function_bodies = false"]
31
+ : [];
32
+ // Build migration script
33
+ const scriptParts = [];
34
+ scriptParts.push(...sessionConfig);
35
+ // Serialize changes using integration serialize hook (applies masking) or fallback
36
+ const changeStatements = sortedChanges.map((change) => {
37
+ return integration.serialize?.(change) ?? change.serialize();
38
+ });
39
+ scriptParts.push(...changeStatements);
40
+ const migrationScript = `${scriptParts.join(";\n\n")};`;
41
+ return {
42
+ migrationScript,
43
+ };
44
+ }
@@ -0,0 +1,10 @@
1
+ import type { DefaultPrivilegeState } from "../base.default-privileges.ts";
2
+ import type { Role } from "../role/role.model.ts";
3
+ import type { Aggregate } from "./aggregate.model.ts";
4
+ import type { AggregateChange } from "./changes/aggregate.types.ts";
5
+ export declare function diffAggregates(ctx: {
6
+ version: number;
7
+ currentUser: string;
8
+ defaultPrivilegeState: DefaultPrivilegeState;
9
+ mainRoles: Record<string, Role>;
10
+ }, main: Record<string, Aggregate>, branch: Record<string, Aggregate>): AggregateChange[];
@@ -0,0 +1,186 @@
1
+ import { diffObjects } from "../base.diff.js";
2
+ import { diffPrivileges, filterPublicBuiltInDefaults, groupPrivilegesByGrantable, } from "../base.privilege-diff.js";
3
+ import { deepEqual, hasNonAlterableChanges } from "../utils.js";
4
+ import { AlterAggregateChangeOwner } from "./changes/aggregate.alter.js";
5
+ import { CreateCommentOnAggregate, DropCommentOnAggregate, } from "./changes/aggregate.comment.js";
6
+ import { CreateAggregate } from "./changes/aggregate.create.js";
7
+ import { DropAggregate } from "./changes/aggregate.drop.js";
8
+ import { GrantAggregatePrivileges, RevokeAggregatePrivileges, RevokeGrantOptionAggregatePrivileges, } from "./changes/aggregate.privilege.js";
9
+ export function diffAggregates(ctx, main, branch) {
10
+ const { created, dropped, altered } = diffObjects(main, branch);
11
+ const changes = [];
12
+ for (const aggregateId of created) {
13
+ const aggregate = branch[aggregateId];
14
+ changes.push(new CreateAggregate({ aggregate }));
15
+ // OWNER: If the aggregate should be owned by someone other than the current user,
16
+ // emit ALTER AGGREGATE ... OWNER TO after creation
17
+ if (aggregate.owner !== ctx.currentUser) {
18
+ changes.push(new AlterAggregateChangeOwner({
19
+ aggregate,
20
+ owner: aggregate.owner,
21
+ }));
22
+ }
23
+ if (aggregate.comment !== null) {
24
+ changes.push(new CreateCommentOnAggregate({ aggregate }));
25
+ }
26
+ // PRIVILEGES: For created objects, compare against default privileges state
27
+ // The migration script will run ALTER DEFAULT PRIVILEGES before CREATE (via constraint spec),
28
+ // so objects are created with the default privileges state in effect.
29
+ // We compare default privileges against desired privileges to generate REVOKE/GRANT statements
30
+ // needed to reach the final desired state.
31
+ const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(ctx.currentUser, "aggregate", aggregate.schema ?? "");
32
+ // Filter out PUBLIC's built-in default EXECUTE privilege (PostgreSQL grants it automatically)
33
+ // Reference: https://www.postgresql.org/docs/17/ddl-priv.html Table 5.2
34
+ // This prevents generating unnecessary "GRANT EXECUTE TO PUBLIC" statements
35
+ const desiredPrivileges = filterPublicBuiltInDefaults("aggregate", aggregate.privileges);
36
+ // Filter out owner privileges - owner always has ALL privileges implicitly
37
+ // and shouldn't be compared. Use the aggregate owner as the reference.
38
+ const privilegeResults = diffPrivileges(effectiveDefaults, desiredPrivileges, aggregate.owner, ctx.mainRoles);
39
+ // Generate grant changes
40
+ for (const [grantee, result] of privilegeResults) {
41
+ if (result.grants.length > 0) {
42
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
43
+ for (const [, list] of grantGroups) {
44
+ changes.push(new GrantAggregatePrivileges({
45
+ aggregate,
46
+ grantee,
47
+ privileges: list,
48
+ version: ctx.version,
49
+ }));
50
+ }
51
+ }
52
+ // Generate revoke changes
53
+ if (result.revokes.length > 0) {
54
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
55
+ for (const [, list] of revokeGroups) {
56
+ changes.push(new RevokeAggregatePrivileges({
57
+ aggregate,
58
+ grantee,
59
+ privileges: list,
60
+ version: ctx.version,
61
+ }));
62
+ }
63
+ }
64
+ // Generate revoke grant option changes
65
+ if (result.revokeGrantOption.length > 0) {
66
+ changes.push(new RevokeGrantOptionAggregatePrivileges({
67
+ aggregate,
68
+ grantee,
69
+ privilegeNames: result.revokeGrantOption,
70
+ version: ctx.version,
71
+ }));
72
+ }
73
+ }
74
+ }
75
+ for (const aggregateId of dropped) {
76
+ changes.push(new DropAggregate({ aggregate: main[aggregateId] }));
77
+ }
78
+ for (const aggregateId of altered) {
79
+ const mainAggregate = main[aggregateId];
80
+ const branchAggregate = branch[aggregateId];
81
+ const NON_ALTERABLE_FIELDS = [
82
+ "kind",
83
+ "aggkind",
84
+ "num_direct_args",
85
+ "return_type",
86
+ "return_type_schema",
87
+ "parallel_safety",
88
+ "is_strict",
89
+ "transition_function",
90
+ "state_data_type",
91
+ "state_data_type_schema",
92
+ "state_data_space",
93
+ "final_function",
94
+ "final_function_extra_args",
95
+ "final_function_modify",
96
+ "combine_function",
97
+ "serial_function",
98
+ "deserial_function",
99
+ "initial_condition",
100
+ "moving_transition_function",
101
+ "moving_inverse_function",
102
+ "moving_state_data_type",
103
+ "moving_state_data_type_schema",
104
+ "moving_state_data_space",
105
+ "moving_final_function",
106
+ "moving_final_function_extra_args",
107
+ "moving_final_function_modify",
108
+ "moving_initial_condition",
109
+ "sort_operator",
110
+ "argument_count",
111
+ "argument_default_count",
112
+ "argument_names",
113
+ "argument_types",
114
+ "all_argument_types",
115
+ "argument_modes",
116
+ "argument_defaults",
117
+ "identityArguments",
118
+ ];
119
+ const nonAlterableChanged = hasNonAlterableChanges(mainAggregate, branchAggregate, NON_ALTERABLE_FIELDS, {
120
+ argument_names: deepEqual,
121
+ argument_types: deepEqual,
122
+ all_argument_types: deepEqual,
123
+ argument_modes: deepEqual,
124
+ });
125
+ if (nonAlterableChanged) {
126
+ changes.push(new CreateAggregate({ aggregate: branchAggregate, orReplace: true }));
127
+ continue;
128
+ }
129
+ if (mainAggregate.owner !== branchAggregate.owner) {
130
+ changes.push(new AlterAggregateChangeOwner({
131
+ aggregate: mainAggregate,
132
+ owner: branchAggregate.owner,
133
+ }));
134
+ }
135
+ if (mainAggregate.comment !== branchAggregate.comment) {
136
+ if (branchAggregate.comment === null) {
137
+ changes.push(new DropCommentOnAggregate({ aggregate: mainAggregate }));
138
+ }
139
+ else {
140
+ changes.push(new CreateCommentOnAggregate({ aggregate: branchAggregate }));
141
+ }
142
+ }
143
+ // PRIVILEGES
144
+ // Filter out PUBLIC's built-in default EXECUTE privilege from main catalog
145
+ // (PostgreSQL grants it automatically, so we shouldn't compare it)
146
+ const mainPrivilegesFiltered = filterPublicBuiltInDefaults("aggregate", mainAggregate.privileges);
147
+ // Filter out PUBLIC's built-in default EXECUTE privilege from branch catalog
148
+ const branchPrivilegesFiltered = filterPublicBuiltInDefaults("aggregate", branchAggregate.privileges);
149
+ // Filter out owner privileges - owner always has ALL privileges implicitly
150
+ // and shouldn't be compared. Use branch owner as the reference.
151
+ const privilegeResults = diffPrivileges(mainPrivilegesFiltered, branchPrivilegesFiltered, branchAggregate.owner, ctx.mainRoles);
152
+ for (const [grantee, result] of privilegeResults) {
153
+ if (result.grants.length > 0) {
154
+ const grantGroups = groupPrivilegesByGrantable(result.grants);
155
+ for (const [, list] of grantGroups) {
156
+ changes.push(new GrantAggregatePrivileges({
157
+ aggregate: branchAggregate,
158
+ grantee,
159
+ privileges: list,
160
+ version: ctx.version,
161
+ }));
162
+ }
163
+ }
164
+ if (result.revokes.length > 0) {
165
+ const revokeGroups = groupPrivilegesByGrantable(result.revokes);
166
+ for (const [, list] of revokeGroups) {
167
+ changes.push(new RevokeAggregatePrivileges({
168
+ aggregate: mainAggregate,
169
+ grantee,
170
+ privileges: list,
171
+ version: ctx.version,
172
+ }));
173
+ }
174
+ }
175
+ if (result.revokeGrantOption.length > 0) {
176
+ changes.push(new RevokeGrantOptionAggregatePrivileges({
177
+ aggregate: mainAggregate,
178
+ grantee,
179
+ privilegeNames: result.revokeGrantOption,
180
+ version: ctx.version,
181
+ }));
182
+ }
183
+ }
184
+ }
185
+ return changes;
186
+ }