@supabase/pg-delta 0.0.0 → 1.0.0-alpha.1
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.
- package/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/cli/app.d.ts +1 -0
- package/dist/cli/app.js +26 -0
- package/dist/cli/bin/cli.d.ts +2 -0
- package/dist/cli/bin/cli.js +7 -0
- package/dist/cli/commands/apply.d.ts +5 -0
- package/dist/cli/commands/apply.js +85 -0
- package/dist/cli/commands/plan.d.ts +5 -0
- package/dist/cli/commands/plan.js +137 -0
- package/dist/cli/commands/sync.d.ts +5 -0
- package/dist/cli/commands/sync.js +141 -0
- package/dist/cli/formatters/index.d.ts +4 -0
- package/dist/cli/formatters/index.js +4 -0
- package/dist/cli/formatters/tree/tree-builder.d.ts +10 -0
- package/dist/cli/formatters/tree/tree-builder.js +333 -0
- package/dist/cli/formatters/tree/tree-renderer.d.ts +45 -0
- package/dist/cli/formatters/tree/tree-renderer.js +303 -0
- package/dist/cli/formatters/tree/tree.d.ts +8 -0
- package/dist/cli/formatters/tree/tree.js +161 -0
- package/dist/cli/utils/integrations.d.ts +14 -0
- package/dist/cli/utils/integrations.js +44 -0
- package/dist/cli/utils.d.ts +64 -0
- package/dist/cli/utils.js +160 -0
- package/dist/core/catalog.diff.d.ts +5 -0
- package/dist/core/catalog.diff.js +147 -0
- package/dist/core/catalog.model.d.ts +93 -0
- package/dist/core/catalog.model.js +254 -0
- package/dist/core/change.types.d.ts +22 -0
- package/dist/core/change.types.js +1 -0
- package/dist/core/context.d.ts +11 -0
- package/dist/core/context.js +12 -0
- package/dist/core/depend.d.ts +31 -0
- package/dist/core/depend.js +1833 -0
- package/dist/core/expand-replace-dependencies.d.ts +14 -0
- package/dist/core/expand-replace-dependencies.js +280 -0
- package/dist/core/fingerprint.d.ts +15 -0
- package/dist/core/fingerprint.js +174 -0
- package/dist/core/integrations/filter/dsl.d.ts +97 -0
- package/dist/core/integrations/filter/dsl.js +107 -0
- package/dist/core/integrations/filter/extractors.d.ts +12 -0
- package/dist/core/integrations/filter/extractors.js +136 -0
- package/dist/core/integrations/filter/filter.types.d.ts +2 -0
- package/dist/core/integrations/filter/filter.types.js +1 -0
- package/dist/core/integrations/integration-dsl.d.ts +22 -0
- package/dist/core/integrations/integration-dsl.js +6 -0
- package/dist/core/integrations/integration.types.d.ts +6 -0
- package/dist/core/integrations/integration.types.js +1 -0
- package/dist/core/integrations/serialize/dsl.d.ts +58 -0
- package/dist/core/integrations/serialize/dsl.js +42 -0
- package/dist/core/integrations/serialize/serialize.types.d.ts +2 -0
- package/dist/core/integrations/serialize/serialize.types.js +1 -0
- package/dist/core/integrations/supabase.d.ts +10 -0
- package/dist/core/integrations/supabase.js +114 -0
- package/dist/core/objects/aggregate/aggregate.diff.d.ts +10 -0
- package/dist/core/objects/aggregate/aggregate.diff.js +186 -0
- package/dist/core/objects/aggregate/aggregate.model.d.ts +174 -0
- package/dist/core/objects/aggregate/aggregate.model.js +297 -0
- package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +19 -0
- package/dist/core/objects/aggregate/changes/aggregate.alter.js +25 -0
- package/dist/core/objects/aggregate/changes/aggregate.base.d.ts +17 -0
- package/dist/core/objects/aggregate/changes/aggregate.base.js +13 -0
- package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +23 -0
- package/dist/core/objects/aggregate/changes/aggregate.comment.js +44 -0
- package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +19 -0
- package/dist/core/objects/aggregate/changes/aggregate.create.js +228 -0
- package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +17 -0
- package/dist/core/objects/aggregate/changes/aggregate.drop.js +26 -0
- package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +62 -0
- package/dist/core/objects/aggregate/changes/aggregate.privilege.js +102 -0
- package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +6 -0
- package/dist/core/objects/aggregate/changes/aggregate.types.js +1 -0
- package/dist/core/objects/base.change.d.ts +46 -0
- package/dist/core/objects/base.change.js +38 -0
- package/dist/core/objects/base.default-privileges.d.ts +29 -0
- package/dist/core/objects/base.default-privileges.js +167 -0
- package/dist/core/objects/base.diff.d.ts +6 -0
- package/dist/core/objects/base.diff.js +12 -0
- package/dist/core/objects/base.model.d.ts +74 -0
- package/dist/core/objects/base.model.js +47 -0
- package/dist/core/objects/base.privilege-diff.d.ts +54 -0
- package/dist/core/objects/base.privilege-diff.js +216 -0
- package/dist/core/objects/base.privilege.d.ts +27 -0
- package/dist/core/objects/base.privilege.js +169 -0
- package/dist/core/objects/collation/changes/collation.alter.d.ts +45 -0
- package/dist/core/objects/collation/changes/collation.alter.js +52 -0
- package/dist/core/objects/collation/changes/collation.base.d.ts +17 -0
- package/dist/core/objects/collation/changes/collation.base.js +13 -0
- package/dist/core/objects/collation/changes/collation.comment.d.ts +26 -0
- package/dist/core/objects/collation/changes/collation.comment.js +50 -0
- package/dist/core/objects/collation/changes/collation.create.d.ts +32 -0
- package/dist/core/objects/collation/changes/collation.create.js +86 -0
- package/dist/core/objects/collation/changes/collation.drop.d.ts +22 -0
- package/dist/core/objects/collation/changes/collation.drop.js +31 -0
- package/dist/core/objects/collation/changes/collation.types.d.ts +5 -0
- package/dist/core/objects/collation/changes/collation.types.js +1 -0
- package/dist/core/objects/collation/collation.diff.d.ts +13 -0
- package/dist/core/objects/collation/collation.diff.js +85 -0
- package/dist/core/objects/collation/collation.model.d.ts +67 -0
- package/dist/core/objects/collation/collation.model.js +207 -0
- package/dist/core/objects/domain/changes/domain.alter.d.ts +143 -0
- package/dist/core/objects/domain/changes/domain.alter.js +191 -0
- package/dist/core/objects/domain/changes/domain.base.d.ts +17 -0
- package/dist/core/objects/domain/changes/domain.base.js +13 -0
- package/dist/core/objects/domain/changes/domain.comment.d.ts +25 -0
- package/dist/core/objects/domain/changes/domain.comment.js +47 -0
- package/dist/core/objects/domain/changes/domain.create.d.ts +30 -0
- package/dist/core/objects/domain/changes/domain.create.js +92 -0
- package/dist/core/objects/domain/changes/domain.drop.d.ts +22 -0
- package/dist/core/objects/domain/changes/domain.drop.js +28 -0
- package/dist/core/objects/domain/changes/domain.privilege.d.ts +97 -0
- package/dist/core/objects/domain/changes/domain.privilege.js +127 -0
- package/dist/core/objects/domain/changes/domain.types.d.ts +6 -0
- package/dist/core/objects/domain/changes/domain.types.js +1 -0
- package/dist/core/objects/domain/domain.diff.d.ts +18 -0
- package/dist/core/objects/domain/domain.diff.js +244 -0
- package/dist/core/objects/domain/domain.model.d.ts +103 -0
- package/dist/core/objects/domain/domain.model.js +172 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +44 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +51 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.base.d.ts +17 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.base.js +13 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +23 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +46 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +25 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.create.js +55 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +22 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +28 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +5 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.types.js +1 -0
- package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +13 -0
- package/dist/core/objects/event-trigger/event-trigger.diff.js +81 -0
- package/dist/core/objects/event-trigger/event-trigger.model.d.ts +45 -0
- package/dist/core/objects/event-trigger/event-trigger.model.js +89 -0
- package/dist/core/objects/extension/changes/extension.alter.d.ts +44 -0
- package/dist/core/objects/extension/changes/extension.alter.js +51 -0
- package/dist/core/objects/extension/changes/extension.base.d.ts +17 -0
- package/dist/core/objects/extension/changes/extension.base.js +13 -0
- package/dist/core/objects/extension/changes/extension.comment.d.ts +26 -0
- package/dist/core/objects/extension/changes/extension.comment.js +46 -0
- package/dist/core/objects/extension/changes/extension.create.d.ts +25 -0
- package/dist/core/objects/extension/changes/extension.create.js +49 -0
- package/dist/core/objects/extension/changes/extension.drop.d.ts +22 -0
- package/dist/core/objects/extension/changes/extension.drop.js +28 -0
- package/dist/core/objects/extension/changes/extension.types.d.ts +5 -0
- package/dist/core/objects/extension/changes/extension.types.js +1 -0
- package/dist/core/objects/extension/extension.diff.d.ts +10 -0
- package/dist/core/objects/extension/extension.diff.js +65 -0
- package/dist/core/objects/extension/extension.model.d.ts +52 -0
- package/dist/core/objects/extension/extension.model.js +268 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +51 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +61 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +26 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +50 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +25 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +78 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +22 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +28 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +97 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +123 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +6 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +18 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +221 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +59 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +128 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +5 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +163 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +248 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +26 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +50 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +25 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +64 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +22 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +31 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +97 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +129 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +6 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +18 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +268 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +117 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +215 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +65 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +84 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +26 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +43 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +24 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +62 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +22 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +28 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +97 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +123 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +6 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +18 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +209 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +62 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.model.js +118 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +37 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +38 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.d.ts +17 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.js +13 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +24 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +52 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +23 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +34 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +4 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.js +1 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.d.ts +10 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.js +77 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +36 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +85 -0
- package/dist/core/objects/index/changes/index.alter.d.ts +76 -0
- package/dist/core/objects/index/changes/index.alter.js +94 -0
- package/dist/core/objects/index/changes/index.base.d.ts +17 -0
- package/dist/core/objects/index/changes/index.base.js +13 -0
- package/dist/core/objects/index/changes/index.comment.d.ts +26 -0
- package/dist/core/objects/index/changes/index.comment.js +50 -0
- package/dist/core/objects/index/changes/index.create.d.ts +30 -0
- package/dist/core/objects/index/changes/index.create.js +53 -0
- package/dist/core/objects/index/changes/index.drop.d.ts +22 -0
- package/dist/core/objects/index/changes/index.drop.js +28 -0
- package/dist/core/objects/index/changes/index.types.d.ts +5 -0
- package/dist/core/objects/index/changes/index.types.js +1 -0
- package/dist/core/objects/index/changes/utils.d.ts +3 -0
- package/dist/core/objects/index/changes/utils.js +6 -0
- package/dist/core/objects/index/index.diff.d.ts +12 -0
- package/dist/core/objects/index/index.diff.js +182 -0
- package/dist/core/objects/index/index.model.d.ts +150 -0
- package/dist/core/objects/index/index.model.js +340 -0
- package/dist/core/objects/language/changes/language.alter.d.ts +32 -0
- package/dist/core/objects/language/changes/language.alter.js +30 -0
- package/dist/core/objects/language/changes/language.base.d.ts +17 -0
- package/dist/core/objects/language/changes/language.base.js +13 -0
- package/dist/core/objects/language/changes/language.comment.d.ts +26 -0
- package/dist/core/objects/language/changes/language.comment.js +45 -0
- package/dist/core/objects/language/changes/language.create.d.ts +25 -0
- package/dist/core/objects/language/changes/language.create.js +76 -0
- package/dist/core/objects/language/changes/language.drop.d.ts +22 -0
- package/dist/core/objects/language/changes/language.drop.js +31 -0
- package/dist/core/objects/language/changes/language.privilege.d.ts +97 -0
- package/dist/core/objects/language/changes/language.privilege.js +128 -0
- package/dist/core/objects/language/changes/language.types.d.ts +6 -0
- package/dist/core/objects/language/changes/language.types.js +1 -0
- package/dist/core/objects/language/language.diff.d.ts +15 -0
- package/dist/core/objects/language/language.diff.js +117 -0
- package/dist/core/objects/language/language.model.d.ts +62 -0
- package/dist/core/objects/language/language.model.js +128 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +67 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +63 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.base.d.ts +17 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.base.js +13 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +53 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +112 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +35 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.create.js +71 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +26 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +42 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +105 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +151 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +6 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.types.js +1 -0
- package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +18 -0
- package/dist/core/objects/materialized-view/materialized-view.diff.js +335 -0
- package/dist/core/objects/materialized-view/materialized-view.model.d.ts +152 -0
- package/dist/core/objects/materialized-view/materialized-view.model.js +228 -0
- package/dist/core/objects/procedure/changes/procedure.alter.d.ts +143 -0
- package/dist/core/objects/procedure/changes/procedure.alter.js +207 -0
- package/dist/core/objects/procedure/changes/procedure.base.d.ts +17 -0
- package/dist/core/objects/procedure/changes/procedure.base.js +13 -0
- package/dist/core/objects/procedure/changes/procedure.comment.d.ts +26 -0
- package/dist/core/objects/procedure/changes/procedure.comment.js +52 -0
- package/dist/core/objects/procedure/changes/procedure.create.d.ts +42 -0
- package/dist/core/objects/procedure/changes/procedure.create.js +77 -0
- package/dist/core/objects/procedure/changes/procedure.drop.d.ts +23 -0
- package/dist/core/objects/procedure/changes/procedure.drop.js +37 -0
- package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +98 -0
- package/dist/core/objects/procedure/changes/procedure.privilege.js +144 -0
- package/dist/core/objects/procedure/changes/procedure.types.d.ts +6 -0
- package/dist/core/objects/procedure/changes/procedure.types.js +1 -0
- package/dist/core/objects/procedure/procedure.diff.d.ts +18 -0
- package/dist/core/objects/procedure/procedure.diff.js +282 -0
- package/dist/core/objects/procedure/procedure.model.d.ts +132 -0
- package/dist/core/objects/procedure/procedure.model.js +244 -0
- package/dist/core/objects/procedure/utils.d.ts +14 -0
- package/dist/core/objects/procedure/utils.js +55 -0
- package/dist/core/objects/publication/changes/publication.alter.d.ts +88 -0
- package/dist/core/objects/publication/changes/publication.alter.js +176 -0
- package/dist/core/objects/publication/changes/publication.base.d.ts +17 -0
- package/dist/core/objects/publication/changes/publication.base.js +13 -0
- package/dist/core/objects/publication/changes/publication.comment.d.ts +23 -0
- package/dist/core/objects/publication/changes/publication.comment.js +46 -0
- package/dist/core/objects/publication/changes/publication.create.d.ts +17 -0
- package/dist/core/objects/publication/changes/publication.create.js +61 -0
- package/dist/core/objects/publication/changes/publication.drop.d.ts +17 -0
- package/dist/core/objects/publication/changes/publication.drop.js +23 -0
- package/dist/core/objects/publication/changes/publication.types.d.ts +5 -0
- package/dist/core/objects/publication/changes/publication.types.js +1 -0
- package/dist/core/objects/publication/publication.diff.d.ts +5 -0
- package/dist/core/objects/publication/publication.diff.js +161 -0
- package/dist/core/objects/publication/publication.model.d.ts +96 -0
- package/dist/core/objects/publication/publication.model.js +186 -0
- package/dist/core/objects/publication/utils.d.ts +5 -0
- package/dist/core/objects/publication/utils.js +45 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +62 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +90 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.base.d.ts +17 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.base.js +13 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +23 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +51 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +27 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.create.js +79 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +22 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +33 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +5 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.types.js +1 -0
- package/dist/core/objects/rls-policy/rls-policy.diff.d.ts +10 -0
- package/dist/core/objects/rls-policy/rls-policy.diff.js +80 -0
- package/dist/core/objects/rls-policy/rls-policy.model.d.ts +52 -0
- package/dist/core/objects/rls-policy/rls-policy.model.js +127 -0
- package/dist/core/objects/role/changes/role.alter.d.ts +78 -0
- package/dist/core/objects/role/changes/role.alter.js +55 -0
- package/dist/core/objects/role/changes/role.base.d.ts +17 -0
- package/dist/core/objects/role/changes/role.base.js +13 -0
- package/dist/core/objects/role/changes/role.comment.d.ts +23 -0
- package/dist/core/objects/role/changes/role.comment.js +42 -0
- package/dist/core/objects/role/changes/role.create.d.ts +38 -0
- package/dist/core/objects/role/changes/role.create.js +83 -0
- package/dist/core/objects/role/changes/role.drop.d.ts +22 -0
- package/dist/core/objects/role/changes/role.drop.js +28 -0
- package/dist/core/objects/role/changes/role.privilege.d.ts +148 -0
- package/dist/core/objects/role/changes/role.privilege.js +283 -0
- package/dist/core/objects/role/changes/role.types.d.ts +6 -0
- package/dist/core/objects/role/changes/role.types.js +1 -0
- package/dist/core/objects/role/role.diff.d.ts +13 -0
- package/dist/core/objects/role/role.diff.js +386 -0
- package/dist/core/objects/role/role.model.d.ts +89 -0
- package/dist/core/objects/role/role.model.js +312 -0
- package/dist/core/objects/rule/changes/rule.alter.d.ts +22 -0
- package/dist/core/objects/rule/changes/rule.alter.js +58 -0
- package/dist/core/objects/rule/changes/rule.base.d.ts +17 -0
- package/dist/core/objects/rule/changes/rule.base.js +13 -0
- package/dist/core/objects/rule/changes/rule.comment.d.ts +22 -0
- package/dist/core/objects/rule/changes/rule.comment.js +51 -0
- package/dist/core/objects/rule/changes/rule.create.d.ts +14 -0
- package/dist/core/objects/rule/changes/rule.create.js +28 -0
- package/dist/core/objects/rule/changes/rule.drop.d.ts +12 -0
- package/dist/core/objects/rule/changes/rule.drop.js +23 -0
- package/dist/core/objects/rule/changes/rule.types.d.ts +5 -0
- package/dist/core/objects/rule/changes/rule.types.js +1 -0
- package/dist/core/objects/rule/rule.diff.d.ts +3 -0
- package/dist/core/objects/rule/rule.diff.js +53 -0
- package/dist/core/objects/rule/rule.model.d.ts +72 -0
- package/dist/core/objects/rule/rule.model.js +156 -0
- package/dist/core/objects/schema/changes/schema.alter.d.ts +32 -0
- package/dist/core/objects/schema/changes/schema.alter.js +25 -0
- package/dist/core/objects/schema/changes/schema.base.d.ts +17 -0
- package/dist/core/objects/schema/changes/schema.base.js +13 -0
- package/dist/core/objects/schema/changes/schema.comment.d.ts +23 -0
- package/dist/core/objects/schema/changes/schema.comment.js +43 -0
- package/dist/core/objects/schema/changes/schema.create.d.ts +27 -0
- package/dist/core/objects/schema/changes/schema.create.js +38 -0
- package/dist/core/objects/schema/changes/schema.drop.d.ts +22 -0
- package/dist/core/objects/schema/changes/schema.drop.js +28 -0
- package/dist/core/objects/schema/changes/schema.privilege.d.ts +97 -0
- package/dist/core/objects/schema/changes/schema.privilege.js +131 -0
- package/dist/core/objects/schema/changes/schema.types.d.ts +6 -0
- package/dist/core/objects/schema/changes/schema.types.js +1 -0
- package/dist/core/objects/schema/schema.diff.d.ts +18 -0
- package/dist/core/objects/schema/schema.diff.js +142 -0
- package/dist/core/objects/schema/schema.model.d.ts +47 -0
- package/dist/core/objects/schema/schema.model.js +91 -0
- package/dist/core/objects/sequence/changes/sequence.alter.d.ts +59 -0
- package/dist/core/objects/sequence/changes/sequence.alter.js +75 -0
- package/dist/core/objects/sequence/changes/sequence.base.d.ts +17 -0
- package/dist/core/objects/sequence/changes/sequence.base.js +13 -0
- package/dist/core/objects/sequence/changes/sequence.comment.d.ts +23 -0
- package/dist/core/objects/sequence/changes/sequence.comment.js +47 -0
- package/dist/core/objects/sequence/changes/sequence.create.d.ts +25 -0
- package/dist/core/objects/sequence/changes/sequence.create.js +78 -0
- package/dist/core/objects/sequence/changes/sequence.drop.d.ts +22 -0
- package/dist/core/objects/sequence/changes/sequence.drop.js +31 -0
- package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +101 -0
- package/dist/core/objects/sequence/changes/sequence.privilege.js +135 -0
- package/dist/core/objects/sequence/changes/sequence.types.d.ts +6 -0
- package/dist/core/objects/sequence/changes/sequence.types.js +1 -0
- package/dist/core/objects/sequence/sequence.diff.d.ts +20 -0
- package/dist/core/objects/sequence/sequence.diff.js +258 -0
- package/dist/core/objects/sequence/sequence.model.d.ts +76 -0
- package/dist/core/objects/sequence/sequence.model.js +169 -0
- package/dist/core/objects/subscription/changes/subscription.alter.d.ts +56 -0
- package/dist/core/objects/subscription/changes/subscription.alter.js +82 -0
- package/dist/core/objects/subscription/changes/subscription.base.d.ts +17 -0
- package/dist/core/objects/subscription/changes/subscription.base.js +13 -0
- package/dist/core/objects/subscription/changes/subscription.comment.d.ts +23 -0
- package/dist/core/objects/subscription/changes/subscription.comment.js +46 -0
- package/dist/core/objects/subscription/changes/subscription.create.d.ts +12 -0
- package/dist/core/objects/subscription/changes/subscription.create.js +52 -0
- package/dist/core/objects/subscription/changes/subscription.drop.d.ts +11 -0
- package/dist/core/objects/subscription/changes/subscription.drop.js +15 -0
- package/dist/core/objects/subscription/changes/subscription.types.d.ts +5 -0
- package/dist/core/objects/subscription/changes/subscription.types.js +1 -0
- package/dist/core/objects/subscription/subscription.diff.d.ts +5 -0
- package/dist/core/objects/subscription/subscription.diff.js +167 -0
- package/dist/core/objects/subscription/subscription.model.d.ts +80 -0
- package/dist/core/objects/subscription/subscription.model.js +166 -0
- package/dist/core/objects/subscription/utils.d.ts +37 -0
- package/dist/core/objects/subscription/utils.js +112 -0
- package/dist/core/objects/table/changes/table.alter.d.ts +357 -0
- package/dist/core/objects/table/changes/table.alter.js +607 -0
- package/dist/core/objects/table/changes/table.base.d.ts +17 -0
- package/dist/core/objects/table/changes/table.base.js +13 -0
- package/dist/core/objects/table/changes/table.comment.d.ts +106 -0
- package/dist/core/objects/table/changes/table.comment.js +175 -0
- package/dist/core/objects/table/changes/table.create.d.ts +33 -0
- package/dist/core/objects/table/changes/table.create.js +145 -0
- package/dist/core/objects/table/changes/table.drop.d.ts +22 -0
- package/dist/core/objects/table/changes/table.drop.js +35 -0
- package/dist/core/objects/table/changes/table.privilege.d.ts +107 -0
- package/dist/core/objects/table/changes/table.privilege.js +150 -0
- package/dist/core/objects/table/changes/table.types.d.ts +6 -0
- package/dist/core/objects/table/changes/table.types.js +1 -0
- package/dist/core/objects/table/table.diff.d.ts +18 -0
- package/dist/core/objects/table/table.diff.js +668 -0
- package/dist/core/objects/table/table.model.d.ts +341 -0
- package/dist/core/objects/table/table.model.js +426 -0
- package/dist/core/objects/trigger/changes/trigger.alter.d.ts +29 -0
- package/dist/core/objects/trigger/changes/trigger.alter.js +27 -0
- package/dist/core/objects/trigger/changes/trigger.base.d.ts +17 -0
- package/dist/core/objects/trigger/changes/trigger.base.js +13 -0
- package/dist/core/objects/trigger/changes/trigger.comment.d.ts +23 -0
- package/dist/core/objects/trigger/changes/trigger.comment.js +51 -0
- package/dist/core/objects/trigger/changes/trigger.create.d.ts +41 -0
- package/dist/core/objects/trigger/changes/trigger.create.js +61 -0
- package/dist/core/objects/trigger/changes/trigger.drop.d.ts +22 -0
- package/dist/core/objects/trigger/changes/trigger.drop.js +33 -0
- package/dist/core/objects/trigger/changes/trigger.types.d.ts +5 -0
- package/dist/core/objects/trigger/changes/trigger.types.js +1 -0
- package/dist/core/objects/trigger/trigger.diff.d.ts +11 -0
- package/dist/core/objects/trigger/trigger.diff.js +84 -0
- package/dist/core/objects/trigger/trigger.model.d.ts +92 -0
- package/dist/core/objects/trigger/trigger.model.js +235 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +81 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +123 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.base.d.ts +17 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.base.js +13 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +53 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +108 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +23 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.create.js +72 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +22 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +31 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +97 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +131 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +6 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.types.js +1 -0
- package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +18 -0
- package/dist/core/objects/type/composite-type/composite-type.diff.js +250 -0
- package/dist/core/objects/type/composite-type/composite-type.model.d.ts +148 -0
- package/dist/core/objects/type/composite-type/composite-type.model.js +223 -0
- package/dist/core/objects/type/enum/changes/enum.alter.d.ts +52 -0
- package/dist/core/objects/type/enum/changes/enum.alter.js +60 -0
- package/dist/core/objects/type/enum/changes/enum.base.d.ts +17 -0
- package/dist/core/objects/type/enum/changes/enum.base.js +13 -0
- package/dist/core/objects/type/enum/changes/enum.comment.d.ts +26 -0
- package/dist/core/objects/type/enum/changes/enum.comment.js +47 -0
- package/dist/core/objects/type/enum/changes/enum.create.d.ts +22 -0
- package/dist/core/objects/type/enum/changes/enum.create.js +43 -0
- package/dist/core/objects/type/enum/changes/enum.drop.d.ts +22 -0
- package/dist/core/objects/type/enum/changes/enum.drop.js +28 -0
- package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +97 -0
- package/dist/core/objects/type/enum/changes/enum.privilege.js +131 -0
- package/dist/core/objects/type/enum/changes/enum.types.d.ts +6 -0
- package/dist/core/objects/type/enum/changes/enum.types.js +1 -0
- package/dist/core/objects/type/enum/enum.diff.d.ts +18 -0
- package/dist/core/objects/type/enum/enum.diff.js +268 -0
- package/dist/core/objects/type/enum/enum.model.d.ts +66 -0
- package/dist/core/objects/type/enum/enum.model.js +154 -0
- package/dist/core/objects/type/range/changes/range.alter.d.ts +33 -0
- package/dist/core/objects/type/range/changes/range.alter.js +30 -0
- package/dist/core/objects/type/range/changes/range.base.d.ts +17 -0
- package/dist/core/objects/type/range/changes/range.base.js +13 -0
- package/dist/core/objects/type/range/changes/range.comment.d.ts +26 -0
- package/dist/core/objects/type/range/changes/range.comment.js +47 -0
- package/dist/core/objects/type/range/changes/range.create.d.ts +31 -0
- package/dist/core/objects/type/range/changes/range.create.js +113 -0
- package/dist/core/objects/type/range/changes/range.drop.d.ts +22 -0
- package/dist/core/objects/type/range/changes/range.drop.js +28 -0
- package/dist/core/objects/type/range/changes/range.privilege.d.ts +97 -0
- package/dist/core/objects/type/range/changes/range.privilege.js +131 -0
- package/dist/core/objects/type/range/changes/range.types.d.ts +6 -0
- package/dist/core/objects/type/range/changes/range.types.js +1 -0
- package/dist/core/objects/type/range/range.diff.d.ts +18 -0
- package/dist/core/objects/type/range/range.diff.js +172 -0
- package/dist/core/objects/type/range/range.model.d.ts +81 -0
- package/dist/core/objects/type/range/range.model.js +165 -0
- package/dist/core/objects/type/type.types.d.ts +4 -0
- package/dist/core/objects/type/type.types.js +1 -0
- package/dist/core/objects/utils.d.ts +57 -0
- package/dist/core/objects/utils.js +137 -0
- package/dist/core/objects/view/changes/view.alter.d.ts +62 -0
- package/dist/core/objects/view/changes/view.alter.js +75 -0
- package/dist/core/objects/view/changes/view.base.d.ts +17 -0
- package/dist/core/objects/view/changes/view.base.js +13 -0
- package/dist/core/objects/view/changes/view.comment.d.ts +23 -0
- package/dist/core/objects/view/changes/view.comment.js +46 -0
- package/dist/core/objects/view/changes/view.create.d.ts +27 -0
- package/dist/core/objects/view/changes/view.create.js +57 -0
- package/dist/core/objects/view/changes/view.drop.d.ts +17 -0
- package/dist/core/objects/view/changes/view.drop.js +30 -0
- package/dist/core/objects/view/changes/view.privilege.d.ts +107 -0
- package/dist/core/objects/view/changes/view.privilege.js +150 -0
- package/dist/core/objects/view/changes/view.types.d.ts +6 -0
- package/dist/core/objects/view/changes/view.types.js +1 -0
- package/dist/core/objects/view/view.diff.d.ts +18 -0
- package/dist/core/objects/view/view.diff.js +270 -0
- package/dist/core/objects/view/view.model.d.ts +152 -0
- package/dist/core/objects/view/view.model.js +250 -0
- package/dist/core/plan/apply.d.ts +33 -0
- package/dist/core/plan/apply.js +112 -0
- package/dist/core/plan/create.d.ts +22 -0
- package/dist/core/plan/create.js +228 -0
- package/dist/core/plan/hierarchy.d.ts +19 -0
- package/dist/core/plan/hierarchy.js +488 -0
- package/dist/core/plan/index.d.ts +18 -0
- package/dist/core/plan/index.js +20 -0
- package/dist/core/plan/io.d.ts +12 -0
- package/dist/core/plan/io.js +17 -0
- package/dist/core/plan/risk.d.ts +10 -0
- package/dist/core/plan/risk.js +38 -0
- package/dist/core/plan/serialize.d.ts +26 -0
- package/dist/core/plan/serialize.js +176 -0
- package/dist/core/plan/statements.d.ts +8 -0
- package/dist/core/plan/statements.js +13 -0
- package/dist/core/plan/types.d.ts +142 -0
- package/dist/core/plan/types.js +32 -0
- package/dist/core/postgres-config.d.ts +8 -0
- package/dist/core/postgres-config.js +46 -0
- package/dist/core/sort/custom-constraints.d.ts +9 -0
- package/dist/core/sort/custom-constraints.js +133 -0
- package/dist/core/sort/debug-visualization.d.ts +8 -0
- package/dist/core/sort/debug-visualization.js +145 -0
- package/dist/core/sort/dependency-filter.d.ts +19 -0
- package/dist/core/sort/dependency-filter.js +152 -0
- package/dist/core/sort/graph-builder.d.ts +37 -0
- package/dist/core/sort/graph-builder.js +172 -0
- package/dist/core/sort/graph-utils.d.ts +14 -0
- package/dist/core/sort/graph-utils.js +41 -0
- package/dist/core/sort/logical-sort.d.ts +26 -0
- package/dist/core/sort/logical-sort.js +532 -0
- package/dist/core/sort/sort-changes.d.ts +28 -0
- package/dist/core/sort/sort-changes.js +147 -0
- package/dist/core/sort/topological-sort.d.ts +20 -0
- package/dist/core/sort/topological-sort.js +138 -0
- package/dist/core/sort/types.d.ts +102 -0
- package/dist/core/sort/types.js +1 -0
- package/dist/core/sort/utils.d.ts +23 -0
- package/dist/core/sort/utils.js +51 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +8 -0
- package/package.json +61 -12
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Supabase
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# pg-delta
|
|
2
|
+
|
|
3
|
+
PostgreSQL migrations made easy.
|
|
4
|
+
|
|
5
|
+
Generate migration scripts by comparing two PostgreSQL databases. Automatically detects schema differences and creates safe, ordered migration scripts.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 🔍 Compare databases and generate migration scripts automatically
|
|
10
|
+
- 🔒 Safety-first: detects data-loss operations and requires explicit confirmation
|
|
11
|
+
- 📋 Plan-based workflow: preview changes before applying, store plans for version control
|
|
12
|
+
- 🎯 Integration DSL: filter and customize serialization with JSON-based rules
|
|
13
|
+
- 🛠️ Developer-friendly: interactive CLI with tree-formatted change previews
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @supabase/pg-delta
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Or use with `npx`:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx @supabase/pg-delta --source <source> --target <target>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
### CLI Usage
|
|
30
|
+
|
|
31
|
+
The CLI provides three main commands:
|
|
32
|
+
|
|
33
|
+
**Sync (default)** - Plan and apply changes in one go:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pg-delta sync \
|
|
37
|
+
--source postgresql://user:pass@localhost:5432/source_db \
|
|
38
|
+
--target postgresql://user:pass@localhost:5432/target_db
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Plan** - Preview changes before applying:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pg-delta plan \
|
|
45
|
+
--source postgresql://user:pass@localhost:5432/source_db \
|
|
46
|
+
--target postgresql://user:pass@localhost:5432/target_db \
|
|
47
|
+
--output plan.json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Apply** - Apply a previously created plan:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pg-delta apply \
|
|
54
|
+
--plan plan.json \
|
|
55
|
+
--source postgresql://user:pass@localhost:5432/source_db \
|
|
56
|
+
--target postgresql://user:pass@localhost:5432/target_db
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Using Integrations
|
|
60
|
+
|
|
61
|
+
Use built-in integrations or custom JSON files:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Built-in Supabase integration
|
|
65
|
+
pg-delta sync --source <source> --target <target> --integration supabase
|
|
66
|
+
|
|
67
|
+
# Custom integration file
|
|
68
|
+
pg-delta sync --source <source> --target <target> --integration ./my-integration.json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Programmatic Usage
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
import { main } from "@supabase/pg-delta";
|
|
75
|
+
|
|
76
|
+
const result = await main(
|
|
77
|
+
"postgresql://source",
|
|
78
|
+
"postgresql://target"
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
if (result) {
|
|
82
|
+
console.log(result.migrationScript);
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
For plan-based workflow:
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import { createPlan, applyPlan } from "@supabase/pg-delta";
|
|
90
|
+
|
|
91
|
+
// Create a plan
|
|
92
|
+
const planResult = await createPlan(sourceUrl, targetUrl, {
|
|
93
|
+
filter: { schema: "public" },
|
|
94
|
+
serialize: [{ when: { type: "schema" }, options: { skipAuthorization: true } }]
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
if (planResult) {
|
|
98
|
+
// Apply the plan
|
|
99
|
+
const result = await applyPlan(
|
|
100
|
+
planResult.plan,
|
|
101
|
+
sourceUrl,
|
|
102
|
+
targetUrl
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Documentation
|
|
108
|
+
|
|
109
|
+
- [CLI Reference](./docs/cli.md) - Complete CLI documentation with all commands and options
|
|
110
|
+
- [API Reference](./docs/api.md) - Programmatic API documentation
|
|
111
|
+
- [Integrations](./docs/integrations.md) - Using and creating integrations with the DSL system
|
|
112
|
+
- [Sorting & Safety](./docs/sorting.md) - How migrations are ordered for safety
|
|
113
|
+
|
|
114
|
+
## Key Concepts
|
|
115
|
+
|
|
116
|
+
### Plan-Based Workflow
|
|
117
|
+
|
|
118
|
+
`pg-delta` uses a plan-based workflow that provides:
|
|
119
|
+
|
|
120
|
+
- **Preview before apply**: Review changes before executing them
|
|
121
|
+
- **Self-contained plans**: Plans store filtering and serialization rules
|
|
122
|
+
- **Reproducibility**: Plans can be version-controlled and shared
|
|
123
|
+
- **Safety checks**: Automatic detection of data-loss operations
|
|
124
|
+
|
|
125
|
+
### Integration DSL
|
|
126
|
+
|
|
127
|
+
Integrations use a JSON-based DSL for filtering and serialization:
|
|
128
|
+
|
|
129
|
+
- **Filter DSL**: Pattern matching to include/exclude changes
|
|
130
|
+
- **Serialization DSL**: Rules to customize SQL generation
|
|
131
|
+
- **Serializable**: Can be stored in plans and passed as CLI flags
|
|
132
|
+
|
|
133
|
+
See [Integrations Documentation](./docs/integrations.md) for complete details.
|
|
134
|
+
|
|
135
|
+
## Use Cases
|
|
136
|
+
|
|
137
|
+
- Generate migrations between environments (dev → staging → production)
|
|
138
|
+
- Compare database states and review differences
|
|
139
|
+
- Automate migration creation in CI/CD pipelines
|
|
140
|
+
- Maintain schema version control with plan files
|
|
141
|
+
- Filter platform-specific changes (e.g., Supabase system schemas)
|
|
142
|
+
|
|
143
|
+
## Contributing
|
|
144
|
+
|
|
145
|
+
Contributions welcome! Feel free to submit issues and pull requests.
|
|
146
|
+
|
|
147
|
+
## License
|
|
148
|
+
|
|
149
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const app: import("@stricli/core").Application<import("@stricli/core").CommandContext>;
|
package/dist/cli/app.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { buildApplication, buildRouteMap } from "@stricli/core";
|
|
2
|
+
import { applyCommand } from "./commands/apply.js";
|
|
3
|
+
import { planCommand } from "./commands/plan.js";
|
|
4
|
+
import { syncCommand } from "./commands/sync.js";
|
|
5
|
+
const root = buildRouteMap({
|
|
6
|
+
routes: {
|
|
7
|
+
plan: planCommand,
|
|
8
|
+
apply: applyCommand,
|
|
9
|
+
sync: syncCommand,
|
|
10
|
+
},
|
|
11
|
+
defaultCommand: "sync",
|
|
12
|
+
docs: {
|
|
13
|
+
brief: "PostgreSQL migrations made easy",
|
|
14
|
+
fullDescription: `
|
|
15
|
+
pgdelta generates migration scripts by comparing two PostgreSQL databases.
|
|
16
|
+
|
|
17
|
+
Commands:
|
|
18
|
+
plan - Compute schema diff and preview changes
|
|
19
|
+
apply - Apply a plan's migration script to a database
|
|
20
|
+
sync - Plan and apply changes in one go
|
|
21
|
+
`.trim(),
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
export const app = buildApplication(root, {
|
|
25
|
+
name: "pgdelta",
|
|
26
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply command - apply a plan's migration script to a target database.
|
|
3
|
+
*/
|
|
4
|
+
import { readFile } from "node:fs/promises";
|
|
5
|
+
import { buildCommand } from "@stricli/core";
|
|
6
|
+
import { applyPlan } from "../../core/plan/apply.js";
|
|
7
|
+
import { deserializePlan } from "../../core/plan/index.js";
|
|
8
|
+
import { handleApplyResult, validatePlanRisk } from "../utils.js";
|
|
9
|
+
export const applyCommand = buildCommand({
|
|
10
|
+
parameters: {
|
|
11
|
+
flags: {
|
|
12
|
+
plan: {
|
|
13
|
+
kind: "parsed",
|
|
14
|
+
brief: "Path to plan file (JSON format)",
|
|
15
|
+
parse: String,
|
|
16
|
+
},
|
|
17
|
+
source: {
|
|
18
|
+
kind: "parsed",
|
|
19
|
+
brief: "Source database connection URL (current state)",
|
|
20
|
+
parse: String,
|
|
21
|
+
},
|
|
22
|
+
target: {
|
|
23
|
+
kind: "parsed",
|
|
24
|
+
brief: "Target database connection URL (desired state)",
|
|
25
|
+
parse: String,
|
|
26
|
+
},
|
|
27
|
+
unsafe: {
|
|
28
|
+
kind: "boolean",
|
|
29
|
+
brief: "Allow data-loss operations (unsafe mode)",
|
|
30
|
+
optional: true,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
aliases: {
|
|
34
|
+
p: "plan",
|
|
35
|
+
s: "source",
|
|
36
|
+
t: "target",
|
|
37
|
+
u: "unsafe",
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
docs: {
|
|
41
|
+
brief: "Apply a plan's migration script to a database",
|
|
42
|
+
fullDescription: `
|
|
43
|
+
Apply changes from a plan file to a target database.
|
|
44
|
+
|
|
45
|
+
The plan file should be a JSON file created with "pgdelta plan --output <file>.plan.json" (or any .plan/.json path).
|
|
46
|
+
|
|
47
|
+
Safe by default: will refuse plans containing data-loss unless --unsafe is set.
|
|
48
|
+
|
|
49
|
+
Exit codes:
|
|
50
|
+
0 - Success (changes applied)
|
|
51
|
+
1 - Error occurred
|
|
52
|
+
`.trim(),
|
|
53
|
+
},
|
|
54
|
+
async func(flags) {
|
|
55
|
+
// Read and parse plan file
|
|
56
|
+
let planJson;
|
|
57
|
+
try {
|
|
58
|
+
planJson = await readFile(flags.plan, "utf-8");
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
this.process.stderr.write(`Error reading plan file: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
62
|
+
process.exitCode = 1;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
let plan;
|
|
66
|
+
try {
|
|
67
|
+
plan = deserializePlan(planJson);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.process.stderr.write(`Error parsing plan file: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
71
|
+
process.exitCode = 1;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const validation = validatePlanRisk(plan, !!flags.unsafe, this);
|
|
75
|
+
if (!validation.valid) {
|
|
76
|
+
process.exitCode = validation.exitCode ?? 1;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const result = await applyPlan(plan, flags.source, flags.target, {
|
|
80
|
+
verifyPostApply: true,
|
|
81
|
+
});
|
|
82
|
+
const { exitCode } = handleApplyResult(result, this);
|
|
83
|
+
process.exitCode = exitCode;
|
|
84
|
+
},
|
|
85
|
+
});
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan command - compute schema diff and preview changes.
|
|
3
|
+
*/
|
|
4
|
+
import { writeFile } from "node:fs/promises";
|
|
5
|
+
import { buildCommand } from "@stricli/core";
|
|
6
|
+
import { createPlan } from "../../core/plan/index.js";
|
|
7
|
+
import { loadIntegrationDSL } from "../utils/integrations.js";
|
|
8
|
+
import { formatPlanForDisplay } from "../utils.js";
|
|
9
|
+
export const planCommand = buildCommand({
|
|
10
|
+
parameters: {
|
|
11
|
+
flags: {
|
|
12
|
+
source: {
|
|
13
|
+
kind: "parsed",
|
|
14
|
+
brief: "Source database connection URL (current state)",
|
|
15
|
+
parse: String,
|
|
16
|
+
},
|
|
17
|
+
target: {
|
|
18
|
+
kind: "parsed",
|
|
19
|
+
brief: "Target database connection URL (desired state)",
|
|
20
|
+
parse: String,
|
|
21
|
+
},
|
|
22
|
+
format: {
|
|
23
|
+
kind: "enum",
|
|
24
|
+
brief: "Output format override: json (plan) or sql (script).",
|
|
25
|
+
values: ["json", "sql"],
|
|
26
|
+
optional: true,
|
|
27
|
+
},
|
|
28
|
+
output: {
|
|
29
|
+
kind: "parsed",
|
|
30
|
+
brief: "Write output to file (stdout by default). If format is not set: .sql infers sql, .json infers json, otherwise uses human output.",
|
|
31
|
+
parse: String,
|
|
32
|
+
optional: true,
|
|
33
|
+
},
|
|
34
|
+
role: {
|
|
35
|
+
kind: "parsed",
|
|
36
|
+
brief: "Role to use when executing the migration (SET ROLE will be added to statements).",
|
|
37
|
+
parse: String,
|
|
38
|
+
optional: true,
|
|
39
|
+
},
|
|
40
|
+
filter: {
|
|
41
|
+
kind: "parsed",
|
|
42
|
+
brief: 'Filter DSL as inline JSON to filter changes (e.g., \'{"schema":"public"}\').',
|
|
43
|
+
parse: (value) => {
|
|
44
|
+
try {
|
|
45
|
+
return JSON.parse(value);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Error(`Invalid filter JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
optional: true,
|
|
52
|
+
},
|
|
53
|
+
serialize: {
|
|
54
|
+
kind: "parsed",
|
|
55
|
+
brief: 'Serialize DSL as inline JSON array (e.g., \'[{"when":{"type":"schema"},"options":{"skipAuthorization":true}}]\').',
|
|
56
|
+
parse: (value) => {
|
|
57
|
+
try {
|
|
58
|
+
return JSON.parse(value);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
throw new Error(`Invalid serialize JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
optional: true,
|
|
65
|
+
},
|
|
66
|
+
integration: {
|
|
67
|
+
kind: "parsed",
|
|
68
|
+
brief: "Integration name (e.g., 'supabase') or path to integration JSON file (must end with .json). Loads from core/integrations/ or file path.",
|
|
69
|
+
parse: String,
|
|
70
|
+
optional: true,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
aliases: {
|
|
74
|
+
s: "source",
|
|
75
|
+
t: "target",
|
|
76
|
+
o: "output",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
docs: {
|
|
80
|
+
brief: "Compute schema diff and preview changes",
|
|
81
|
+
fullDescription: `
|
|
82
|
+
Compute the schema diff between two PostgreSQL databases (source → target),
|
|
83
|
+
and preview it for review or scripting. Defaults to tree display;
|
|
84
|
+
json/sql outputs are available for artifacts or piping.
|
|
85
|
+
`.trim(),
|
|
86
|
+
},
|
|
87
|
+
async func(flags) {
|
|
88
|
+
// Load integration if provided and extract filter/serialize DSL
|
|
89
|
+
let filterOption = flags.filter;
|
|
90
|
+
let serializeOption = flags.serialize;
|
|
91
|
+
if (flags.integration) {
|
|
92
|
+
const integrationDSL = await loadIntegrationDSL(flags.integration);
|
|
93
|
+
// Use integration DSL if explicit flags not provided
|
|
94
|
+
filterOption = filterOption ?? integrationDSL.filter;
|
|
95
|
+
serializeOption = serializeOption ?? integrationDSL.serialize;
|
|
96
|
+
}
|
|
97
|
+
const planResult = await createPlan(flags.source, flags.target, {
|
|
98
|
+
role: flags.role,
|
|
99
|
+
filter: filterOption,
|
|
100
|
+
serialize: serializeOption,
|
|
101
|
+
});
|
|
102
|
+
if (!planResult) {
|
|
103
|
+
this.process.stdout.write("No changes detected.\n");
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const outputPath = flags.output;
|
|
107
|
+
let effectiveFormat;
|
|
108
|
+
if (flags.format) {
|
|
109
|
+
effectiveFormat = flags.format;
|
|
110
|
+
}
|
|
111
|
+
else if (outputPath?.endsWith(".sql")) {
|
|
112
|
+
effectiveFormat = "sql";
|
|
113
|
+
}
|
|
114
|
+
else if (outputPath?.endsWith(".json")) {
|
|
115
|
+
effectiveFormat = "json";
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
effectiveFormat = "tree";
|
|
119
|
+
}
|
|
120
|
+
const { content, label } = formatPlanForDisplay(planResult, effectiveFormat, {
|
|
121
|
+
disableColors: !!outputPath,
|
|
122
|
+
showUnsafeFlagSuggestion: false,
|
|
123
|
+
});
|
|
124
|
+
if (outputPath) {
|
|
125
|
+
await writeFile(outputPath, content, "utf-8");
|
|
126
|
+
this.process.stdout.write(`${label} written to ${outputPath}\n`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.process.stdout.write(content);
|
|
130
|
+
if (!content.endsWith("\n")) {
|
|
131
|
+
this.process.stdout.write("\n");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Exit code 2 indicates changes were detected
|
|
135
|
+
process.exitCode = 2;
|
|
136
|
+
},
|
|
137
|
+
});
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync command - plan and apply changes in one go with confirmation prompt.
|
|
3
|
+
*/
|
|
4
|
+
import { buildCommand } from "@stricli/core";
|
|
5
|
+
import { applyPlan } from "../../core/plan/apply.js";
|
|
6
|
+
import { createPlan } from "../../core/plan/index.js";
|
|
7
|
+
import { loadIntegrationDSL } from "../utils/integrations.js";
|
|
8
|
+
import { formatPlanForDisplay, handleApplyResult, promptConfirmation, validatePlanRisk, } from "../utils.js";
|
|
9
|
+
export const syncCommand = buildCommand({
|
|
10
|
+
parameters: {
|
|
11
|
+
flags: {
|
|
12
|
+
source: {
|
|
13
|
+
kind: "parsed",
|
|
14
|
+
brief: "Source database connection URL (current state)",
|
|
15
|
+
parse: String,
|
|
16
|
+
},
|
|
17
|
+
target: {
|
|
18
|
+
kind: "parsed",
|
|
19
|
+
brief: "Target database connection URL (desired state)",
|
|
20
|
+
parse: String,
|
|
21
|
+
},
|
|
22
|
+
yes: {
|
|
23
|
+
kind: "boolean",
|
|
24
|
+
brief: "Skip confirmation prompt and apply changes automatically",
|
|
25
|
+
optional: true,
|
|
26
|
+
},
|
|
27
|
+
unsafe: {
|
|
28
|
+
kind: "boolean",
|
|
29
|
+
brief: "Allow data-loss operations (unsafe mode)",
|
|
30
|
+
optional: true,
|
|
31
|
+
},
|
|
32
|
+
role: {
|
|
33
|
+
kind: "parsed",
|
|
34
|
+
brief: "Role to use when executing the migration (SET ROLE will be added to statements).",
|
|
35
|
+
parse: String,
|
|
36
|
+
optional: true,
|
|
37
|
+
},
|
|
38
|
+
filter: {
|
|
39
|
+
kind: "parsed",
|
|
40
|
+
brief: 'Filter DSL as inline JSON to filter changes (e.g., \'{"schema":"public"}\').',
|
|
41
|
+
parse: (value) => {
|
|
42
|
+
try {
|
|
43
|
+
return JSON.parse(value);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw new Error(`Invalid filter JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
optional: true,
|
|
50
|
+
},
|
|
51
|
+
serialize: {
|
|
52
|
+
kind: "parsed",
|
|
53
|
+
brief: 'Serialize DSL as inline JSON array (e.g., \'[{"when":{"type":"schema"},"options":{"skipAuthorization":true}}]\').',
|
|
54
|
+
parse: (value) => {
|
|
55
|
+
try {
|
|
56
|
+
return JSON.parse(value);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw new Error(`Invalid serialize JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
optional: true,
|
|
63
|
+
},
|
|
64
|
+
integration: {
|
|
65
|
+
kind: "parsed",
|
|
66
|
+
brief: "Integration name (e.g., 'supabase') or path to integration JSON file (must end with .json). Loads from core/integrations/ or file path.",
|
|
67
|
+
parse: String,
|
|
68
|
+
optional: true,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
aliases: {
|
|
72
|
+
s: "source",
|
|
73
|
+
t: "target",
|
|
74
|
+
y: "yes",
|
|
75
|
+
u: "unsafe",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
docs: {
|
|
79
|
+
brief: "Plan and apply schema changes in one go",
|
|
80
|
+
fullDescription: `
|
|
81
|
+
Compute the schema diff between two PostgreSQL databases (source → target),
|
|
82
|
+
display the plan, prompt for confirmation, and apply changes if confirmed.
|
|
83
|
+
|
|
84
|
+
Use --yes to skip the confirmation prompt and apply changes automatically.
|
|
85
|
+
Safe by default: refuses data-loss changes unless --unsafe is set.
|
|
86
|
+
|
|
87
|
+
Exit codes:
|
|
88
|
+
0 - Success (changes applied or no changes detected)
|
|
89
|
+
1 - Error occurred
|
|
90
|
+
2 - User cancelled or changes detected but not applied
|
|
91
|
+
`.trim(),
|
|
92
|
+
},
|
|
93
|
+
async func(flags) {
|
|
94
|
+
// Load integration if provided and extract filter/serialize DSL
|
|
95
|
+
let filterOption = flags.filter;
|
|
96
|
+
let serializeOption = flags.serialize;
|
|
97
|
+
if (flags.integration) {
|
|
98
|
+
const integrationDSL = await loadIntegrationDSL(flags.integration);
|
|
99
|
+
// Use integration DSL if explicit flags not provided
|
|
100
|
+
filterOption = filterOption ?? integrationDSL.filter;
|
|
101
|
+
serializeOption = serializeOption ?? integrationDSL.serialize;
|
|
102
|
+
}
|
|
103
|
+
// 1. Create the plan
|
|
104
|
+
const planResult = await createPlan(flags.source, flags.target, {
|
|
105
|
+
role: flags.role,
|
|
106
|
+
filter: filterOption,
|
|
107
|
+
serialize: serializeOption,
|
|
108
|
+
});
|
|
109
|
+
if (!planResult) {
|
|
110
|
+
this.process.stdout.write("No changes detected.\n");
|
|
111
|
+
process.exitCode = 0;
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// 2. Display the plan
|
|
115
|
+
const { content } = formatPlanForDisplay(planResult, "tree");
|
|
116
|
+
this.process.stdout.write(content);
|
|
117
|
+
// 3. Validate risk (suppress warning since it's already shown in the plan)
|
|
118
|
+
const validation = validatePlanRisk(planResult.plan, !!flags.unsafe, this, {
|
|
119
|
+
suppressWarning: true,
|
|
120
|
+
});
|
|
121
|
+
if (!validation.valid) {
|
|
122
|
+
process.exitCode = validation.exitCode ?? 1;
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// 4. Prompt for confirmation (unless --yes)
|
|
126
|
+
if (!flags.yes) {
|
|
127
|
+
const confirmed = await promptConfirmation("Apply these changes? (y/N) ", this);
|
|
128
|
+
if (!confirmed) {
|
|
129
|
+
process.exitCode = 2;
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// 5. Apply the plan
|
|
134
|
+
const result = await applyPlan(planResult.plan, flags.source, flags.target, {
|
|
135
|
+
verifyPostApply: true,
|
|
136
|
+
});
|
|
137
|
+
// 6. Handle apply result
|
|
138
|
+
const { exitCode } = handleApplyResult(result, this);
|
|
139
|
+
process.exitCode = exitCode;
|
|
140
|
+
},
|
|
141
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a generic tree structure from a HierarchicalPlan.
|
|
3
|
+
* Shows only structural changes (scope === "object"), grouped for readability.
|
|
4
|
+
*/
|
|
5
|
+
import type { HierarchicalPlan } from "../../../core/plan/index.ts";
|
|
6
|
+
import type { TreeGroup } from "./tree-renderer.ts";
|
|
7
|
+
/**
|
|
8
|
+
* Build a generic tree structure from a HierarchicalPlan.
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildPlanTree(plan: HierarchicalPlan): TreeGroup;
|