heroku 9.0.0-alpha.1 → 9.0.0-alpha.2
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/README.md +6 -11
- package/lib/commands/access/add.d.ts +14 -0
- package/lib/commands/access/add.js +55 -0
- package/lib/commands/access/index.d.ts +11 -0
- package/lib/commands/access/index.js +86 -0
- package/lib/commands/access/remove.d.ts +12 -0
- package/lib/commands/access/remove.js +25 -0
- package/lib/commands/access/update.d.ts +14 -0
- package/lib/commands/access/update.js +39 -0
- package/lib/commands/addons/attach.d.ts +16 -0
- package/lib/commands/addons/attach.js +51 -0
- package/lib/commands/addons/create.d.ts +19 -0
- package/lib/commands/addons/create.js +84 -0
- package/lib/commands/addons/destroy.d.ts +19 -0
- package/lib/commands/addons/destroy.js +61 -0
- package/lib/commands/addons/detach.d.ts +13 -0
- package/lib/commands/addons/detach.js +31 -0
- package/lib/commands/addons/docs.d.ts +14 -0
- package/lib/commands/addons/docs.js +36 -0
- package/lib/commands/addons/index.d.ts +16 -0
- package/lib/commands/addons/index.js +246 -0
- package/lib/commands/addons/info.d.ts +14 -0
- package/lib/commands/addons/info.js +44 -0
- package/lib/commands/addons/open.d.ts +75 -0
- package/lib/commands/addons/open.js +87 -0
- package/lib/commands/addons/plans.d.ts +12 -0
- package/lib/commands/addons/plans.js +47 -0
- package/lib/commands/addons/rename.d.ts +10 -0
- package/lib/commands/addons/rename.js +20 -0
- package/lib/commands/addons/services.d.ts +9 -0
- package/lib/commands/addons/services.js +34 -0
- package/lib/commands/addons/upgrade.d.ts +28 -0
- package/lib/commands/addons/upgrade.js +145 -0
- package/lib/commands/addons/wait.d.ts +14 -0
- package/lib/commands/addons/wait.js +70 -0
- package/lib/commands/apps/create.d.ts +2 -2
- package/lib/commands/apps/create.js +13 -6
- package/lib/commands/apps/destroy.d.ts +2 -1
- package/lib/commands/apps/destroy.js +4 -3
- package/lib/commands/apps/errors.d.ts +1 -0
- package/lib/commands/apps/errors.js +1 -0
- package/lib/commands/apps/favorites/add.d.ts +1 -0
- package/lib/commands/apps/favorites/add.js +1 -0
- package/lib/commands/apps/favorites/remove.d.ts +1 -0
- package/lib/commands/apps/favorites/remove.js +1 -0
- package/lib/commands/apps/index.d.ts +1 -1
- package/lib/commands/apps/index.js +1 -1
- package/lib/commands/apps/info.d.ts +2 -1
- package/lib/commands/apps/info.js +3 -4
- package/lib/commands/apps/join.d.ts +11 -0
- package/lib/commands/apps/join.js +25 -0
- package/lib/commands/apps/leave.d.ts +12 -0
- package/lib/commands/apps/leave.js +25 -0
- package/lib/commands/apps/lock.d.ts +11 -0
- package/lib/commands/apps/lock.js +30 -0
- package/lib/commands/apps/open.d.ts +2 -1
- package/lib/commands/apps/open.js +2 -1
- package/lib/commands/apps/rename.d.ts +2 -1
- package/lib/commands/apps/rename.js +2 -1
- package/lib/commands/apps/stacks/index.d.ts +2 -1
- package/lib/commands/apps/stacks/index.js +2 -1
- package/lib/commands/apps/stacks/set.d.ts +1 -1
- package/lib/commands/apps/stacks/set.js +1 -1
- package/lib/commands/apps/transfer.d.ts +17 -0
- package/lib/commands/apps/transfer.js +91 -0
- package/lib/commands/apps/unlock.d.ts +11 -0
- package/lib/commands/apps/unlock.js +30 -0
- package/lib/commands/auth/token.js +2 -1
- package/lib/commands/authorizations/create.js +5 -1
- package/lib/commands/authorizations/info.js +5 -1
- package/lib/commands/authorizations/revoke.js +5 -1
- package/lib/commands/authorizations/rotate.js +5 -1
- package/lib/commands/authorizations/update.js +5 -1
- package/lib/commands/autocomplete/doctor.js +2 -2
- package/lib/commands/autocomplete/options.js +2 -2
- package/lib/commands/certs/add.d.ts +16 -0
- package/lib/commands/certs/add.js +98 -0
- package/lib/commands/certs/auto/disable.d.ts +11 -0
- package/lib/commands/certs/auto/disable.js +34 -0
- package/lib/commands/certs/auto/enable.d.ts +11 -0
- package/lib/commands/certs/auto/enable.js +51 -0
- package/lib/commands/certs/auto/index.d.ts +12 -0
- package/lib/commands/certs/auto/index.js +94 -0
- package/lib/commands/certs/auto/refresh.d.ts +10 -0
- package/lib/commands/certs/auto/refresh.js +19 -0
- package/lib/commands/certs/generate.d.ts +26 -0
- package/lib/commands/certs/generate.js +111 -0
- package/lib/commands/certs/index.d.ts +10 -0
- package/lib/commands/certs/index.js +26 -0
- package/lib/commands/certs/info.d.ts +13 -0
- package/lib/commands/certs/info.js +43 -0
- package/lib/commands/certs/remove.d.ts +13 -0
- package/lib/commands/certs/remove.js +32 -0
- package/lib/commands/certs/update.d.ts +18 -0
- package/lib/commands/certs/update.js +54 -0
- package/lib/commands/ci/config/get.d.ts +1 -0
- package/lib/commands/ci/config/get.js +1 -0
- package/lib/commands/ci/config/set.d.ts +1 -0
- package/lib/commands/ci/config/set.js +1 -0
- package/lib/commands/ci/config/unset.d.ts +1 -0
- package/lib/commands/ci/config/unset.js +1 -0
- package/lib/commands/ci/index.d.ts +1 -0
- package/lib/commands/ci/index.js +1 -0
- package/lib/commands/ci/info.d.ts +1 -0
- package/lib/commands/ci/info.js +1 -0
- package/lib/commands/ci/last.d.ts +1 -0
- package/lib/commands/ci/last.js +1 -0
- package/lib/commands/ci/open.d.ts +1 -0
- package/lib/commands/ci/open.js +1 -0
- package/lib/commands/ci/rerun.d.ts +1 -0
- package/lib/commands/ci/rerun.js +1 -0
- package/lib/commands/config/set.d.ts +2 -1
- package/lib/commands/config/set.js +2 -1
- package/lib/commands/container/index.d.ts +6 -0
- package/lib/commands/container/index.js +13 -0
- package/lib/commands/container/login.d.ts +9 -0
- package/lib/commands/container/login.js +57 -0
- package/lib/commands/container/logout.d.ts +9 -0
- package/lib/commands/container/logout.js +37 -0
- package/lib/commands/container/pull.d.ts +14 -0
- package/lib/commands/container/pull.js +40 -0
- package/lib/commands/container/push.d.ts +16 -0
- package/lib/commands/container/push.js +101 -0
- package/lib/commands/container/release.d.ts +14 -0
- package/lib/commands/container/release.js +89 -0
- package/lib/commands/container/rm.d.ts +13 -0
- package/lib/commands/container/rm.js +36 -0
- package/lib/commands/container/run.d.ts +15 -0
- package/lib/commands/container/run.js +63 -0
- package/lib/commands/dashboard.d.ts +7 -0
- package/lib/commands/dashboard.js +164 -0
- package/lib/commands/domains/index.d.ts +2 -2
- package/lib/commands/drains/add.d.ts +1 -0
- package/lib/commands/drains/add.js +1 -0
- package/lib/commands/drains/index.d.ts +1 -0
- package/lib/commands/drains/index.js +1 -0
- package/lib/commands/drains/remove.d.ts +1 -0
- package/lib/commands/drains/remove.js +1 -0
- package/lib/commands/features/disable.d.ts +12 -0
- package/lib/commands/features/disable.js +30 -0
- package/lib/commands/features/enable.d.ts +12 -0
- package/lib/commands/features/enable.js +29 -0
- package/lib/commands/features/index.d.ts +10 -0
- package/lib/commands/features/index.js +37 -0
- package/lib/commands/features/info.d.ts +13 -0
- package/lib/commands/features/info.js +33 -0
- package/lib/commands/keys/add.d.ts +14 -0
- package/lib/commands/keys/add.js +101 -0
- package/lib/commands/keys/clear.d.ts +5 -0
- package/lib/commands/keys/clear.js +17 -0
- package/lib/commands/keys/index.d.ts +9 -0
- package/lib/commands/keys/index.js +36 -0
- package/lib/commands/keys/remove.d.ts +9 -0
- package/lib/commands/keys/remove.js +29 -0
- package/lib/commands/labs/enable.d.ts +13 -0
- package/lib/commands/labs/enable.js +47 -0
- package/lib/commands/labs/index.d.ts +11 -0
- package/lib/commands/labs/index.js +71 -0
- package/lib/commands/labs/info.d.ts +14 -0
- package/lib/commands/labs/info.js +49 -0
- package/lib/commands/local/index.d.ts +1 -1
- package/lib/commands/local/index.js +8 -3
- package/lib/commands/local/run.d.ts +1 -1
- package/lib/commands/local/run.js +8 -3
- package/lib/commands/maintenance/index.d.ts +10 -0
- package/lib/commands/maintenance/index.js +19 -0
- package/lib/commands/maintenance/off.d.ts +10 -0
- package/lib/commands/maintenance/off.js +20 -0
- package/lib/commands/maintenance/on.d.ts +10 -0
- package/lib/commands/maintenance/on.js +20 -0
- package/lib/commands/members/add.d.ts +13 -0
- package/lib/commands/members/add.js +33 -0
- package/lib/commands/members/index.d.ts +12 -0
- package/lib/commands/members/index.js +76 -0
- package/lib/commands/members/remove.d.ts +10 -0
- package/lib/commands/members/remove.js +58 -0
- package/lib/commands/members/set.d.ts +11 -0
- package/lib/commands/members/set.js +21 -0
- package/lib/commands/notifications/index.d.ts +13 -0
- package/lib/commands/notifications/index.js +62 -0
- package/lib/commands/orgs/index.d.ts +11 -0
- package/lib/commands/orgs/index.js +27 -0
- package/lib/commands/orgs/open.d.ts +10 -0
- package/lib/commands/orgs/open.js +24 -0
- package/lib/commands/pg/backups/cancel.d.ts +15 -0
- package/lib/commands/pg/backups/cancel.js +49 -0
- package/lib/commands/pg/backups/capture.d.ts +15 -0
- package/lib/commands/pg/backups/capture.js +65 -0
- package/lib/commands/pg/backups/delete.d.ts +15 -0
- package/lib/commands/pg/backups/delete.js +38 -0
- package/lib/commands/pg/backups/download.d.ts +14 -0
- package/lib/commands/pg/backups/download.js +58 -0
- package/lib/commands/pg/backups/index.d.ts +20 -0
- package/lib/commands/pg/backups/index.js +129 -0
- package/lib/commands/pg/backups/info.d.ts +17 -0
- package/lib/commands/pg/backups/info.js +92 -0
- package/lib/commands/pg/backups/restore.d.ts +19 -0
- package/lib/commands/pg/backups/restore.js +107 -0
- package/lib/commands/pg/backups/schedule.d.ts +21 -0
- package/lib/commands/pg/backups/schedule.js +82 -0
- package/lib/commands/pg/backups/schedules.d.ts +10 -0
- package/lib/commands/pg/backups/schedules.js +31 -0
- package/lib/commands/pg/backups/unschedule.d.ts +13 -0
- package/lib/commands/pg/backups/unschedule.js +44 -0
- package/lib/commands/pg/backups/url.d.ts +13 -0
- package/lib/commands/pg/backups/url.js +41 -0
- package/lib/commands/pg/bloat.d.ts +13 -0
- package/lib/commands/pg/bloat.js +87 -0
- package/lib/commands/pg/blocking.d.ts +13 -0
- package/lib/commands/pg/blocking.js +42 -0
- package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
- package/lib/commands/pg/connection-pooling/attach.js +41 -0
- package/lib/commands/pg/copy.d.ts +18 -0
- package/lib/commands/pg/copy.js +86 -0
- package/lib/commands/pg/credentials/create.d.ts +14 -0
- package/lib/commands/pg/credentials/create.js +40 -0
- package/lib/commands/pg/credentials/destroy.d.ts +16 -0
- package/lib/commands/pg/credentials/destroy.js +48 -0
- package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
- package/lib/commands/pg/credentials/repair-default.js +39 -0
- package/lib/commands/pg/credentials/rotate.d.ts +16 -0
- package/lib/commands/pg/credentials/rotate.js +82 -0
- package/lib/commands/pg/credentials/url.d.ts +14 -0
- package/lib/commands/pg/credentials/url.js +64 -0
- package/lib/commands/pg/credentials.d.ts +16 -0
- package/lib/commands/pg/credentials.js +61 -0
- package/lib/commands/pg/diagnose.d.ts +18 -0
- package/lib/commands/pg/diagnose.js +109 -0
- package/lib/commands/pg/info.d.ts +14 -0
- package/lib/commands/pg/info.js +92 -0
- package/lib/commands/pg/kill.d.ts +15 -0
- package/lib/commands/pg/kill.js +32 -0
- package/lib/commands/pg/killall.d.ts +13 -0
- package/lib/commands/pg/killall.js +26 -0
- package/lib/commands/pg/links/create.d.ts +15 -0
- package/lib/commands/pg/links/create.js +58 -0
- package/lib/commands/pg/links/destroy.d.ts +16 -0
- package/lib/commands/pg/links/destroy.js +42 -0
- package/lib/commands/pg/links/index.d.ts +13 -0
- package/lib/commands/pg/links/index.js +59 -0
- package/lib/commands/pg/locks.d.ts +15 -0
- package/lib/commands/pg/locks.js +53 -0
- package/lib/commands/pg/maintenance/index.d.ts +13 -0
- package/lib/commands/pg/maintenance/index.js +29 -0
- package/lib/commands/pg/maintenance/run.d.ts +14 -0
- package/lib/commands/pg/maintenance/run.js +37 -0
- package/lib/commands/pg/maintenance/window.d.ts +15 -0
- package/lib/commands/pg/maintenance/window.js +41 -0
- package/lib/commands/pg/outliers.d.ts +19 -0
- package/lib/commands/pg/outliers.js +97 -0
- package/lib/commands/pg/promote.d.ts +14 -0
- package/lib/commands/pg/promote.js +169 -0
- package/lib/commands/pg/ps.d.ts +14 -0
- package/lib/commands/pg/ps.js +52 -0
- package/lib/commands/pg/psql.d.ts +16 -0
- package/lib/commands/pg/psql.js +49 -0
- package/lib/commands/pg/pull.d.ts +18 -0
- package/lib/commands/pg/pull.js +87 -0
- package/lib/commands/pg/push.d.ts +18 -0
- package/lib/commands/pg/push.js +84 -0
- package/lib/commands/pg/reset.d.ts +15 -0
- package/lib/commands/pg/reset.js +44 -0
- package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-analyze.js +32 -0
- package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-buffers.js +30 -0
- package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +16 -0
- package/lib/commands/pg/settings/auto-explain/log-min-duration.js +33 -0
- package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
- package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +25 -0
- package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
- package/lib/commands/pg/settings/auto-explain/log-triggers.js +30 -0
- package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
- package/lib/commands/pg/settings/auto-explain/log-verbose.js +33 -0
- package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
- package/lib/commands/pg/settings/auto-explain.js +38 -0
- package/lib/commands/pg/settings/index.d.ts +13 -0
- package/lib/commands/pg/settings/index.js +34 -0
- package/lib/commands/pg/settings/log-connections.d.ts +17 -0
- package/lib/commands/pg/settings/log-connections.js +34 -0
- package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
- package/lib/commands/pg/settings/log-lock-waits.js +31 -0
- package/lib/commands/pg/settings/log-min-duration-statement.d.ts +15 -0
- package/lib/commands/pg/settings/log-min-duration-statement.js +33 -0
- package/lib/commands/pg/settings/log-statement.d.ts +12 -0
- package/lib/commands/pg/settings/log-statement.js +30 -0
- package/lib/commands/pg/settings/track-functions.d.ts +12 -0
- package/lib/commands/pg/settings/track-functions.js +29 -0
- package/lib/commands/pg/unfollow.d.ts +14 -0
- package/lib/commands/pg/unfollow.js +40 -0
- package/lib/commands/pg/upgrade.d.ts +15 -0
- package/lib/commands/pg/upgrade.js +58 -0
- package/lib/commands/pg/vacuum-stats.d.ts +13 -0
- package/lib/commands/pg/vacuum-stats.js +65 -0
- package/lib/commands/pg/wait.d.ts +15 -0
- package/lib/commands/pg/wait.js +79 -0
- package/lib/commands/pipelines/connect.js +1 -1
- package/lib/commands/pipelines/diff.js +1 -1
- package/lib/commands/ps/index.d.ts +15 -0
- package/lib/commands/ps/index.js +195 -0
- package/lib/commands/ps/restart.d.ts +17 -0
- package/lib/commands/ps/restart.js +38 -0
- package/lib/commands/ps/scale.d.ts +13 -0
- package/lib/commands/ps/scale.js +108 -0
- package/lib/commands/ps/stop.d.ts +17 -0
- package/lib/commands/ps/stop.js +33 -0
- package/lib/commands/ps/type.d.ts +12 -0
- package/lib/commands/ps/type.js +163 -0
- package/lib/commands/redis/cli.d.ts +15 -0
- package/lib/commands/redis/cli.js +204 -0
- package/lib/commands/redis/credentials.d.ts +14 -0
- package/lib/commands/redis/credentials.js +32 -0
- package/lib/commands/redis/info.d.ts +15 -0
- package/lib/commands/redis/info.js +25 -0
- package/lib/commands/redis/keyspace-notifications.d.ts +14 -0
- package/lib/commands/redis/keyspace-notifications.js +47 -0
- package/lib/commands/redis/maintenance.d.ts +16 -0
- package/lib/commands/redis/maintenance.js +63 -0
- package/lib/commands/redis/maxmemory.d.ts +14 -0
- package/lib/commands/redis/maxmemory.js +40 -0
- package/lib/commands/redis/promote.d.ts +13 -0
- package/lib/commands/redis/promote.js +39 -0
- package/lib/commands/redis/stats-reset.d.ts +14 -0
- package/lib/commands/redis/stats-reset.js +36 -0
- package/lib/commands/redis/timeout.d.ts +14 -0
- package/lib/commands/redis/timeout.js +35 -0
- package/lib/commands/redis/upgrade.d.ts +15 -0
- package/lib/commands/redis/upgrade.js +37 -0
- package/lib/commands/redis/wait.d.ts +14 -0
- package/lib/commands/redis/wait.js +60 -0
- package/lib/commands/releases/index.d.ts +14 -0
- package/lib/commands/releases/index.js +124 -0
- package/lib/commands/releases/info.d.ts +15 -0
- package/lib/commands/releases/info.js +56 -0
- package/lib/commands/releases/output.d.ts +13 -0
- package/lib/commands/releases/output.js +37 -0
- package/lib/commands/releases/rollback.d.ts +14 -0
- package/lib/commands/releases/rollback.js +48 -0
- package/lib/commands/run/detached.d.ts +7 -8
- package/lib/commands/run/detached.js +16 -20
- package/lib/commands/run/index.d.ts +10 -11
- package/lib/commands/run/index.js +16 -17
- package/lib/commands/run/inside.d.ts +5 -7
- package/lib/commands/run/inside.js +10 -14
- package/lib/commands/spaces/create.d.ts +22 -0
- package/lib/commands/spaces/create.js +73 -0
- package/lib/commands/spaces/destroy.d.ts +14 -0
- package/lib/commands/spaces/destroy.js +49 -0
- package/lib/commands/spaces/drains/get.d.ts +12 -0
- package/lib/commands/spaces/drains/get.js +27 -0
- package/lib/commands/spaces/drains/set.d.ts +14 -0
- package/lib/commands/spaces/drains/set.js +29 -0
- package/lib/commands/spaces/hosts.d.ts +14 -0
- package/lib/commands/spaces/hosts.js +37 -0
- package/lib/commands/spaces/index.d.ts +16 -0
- package/lib/commands/spaces/index.js +55 -0
- package/lib/commands/spaces/info.d.ts +14 -0
- package/lib/commands/spaces/info.js +47 -0
- package/lib/commands/spaces/outbound-rules/add.d.ts +15 -0
- package/lib/commands/spaces/outbound-rules/add.js +81 -0
- package/lib/commands/spaces/outbound-rules/index.d.ts +15 -0
- package/lib/commands/spaces/outbound-rules/index.js +49 -0
- package/lib/commands/spaces/outbound-rules/remove.d.ts +17 -0
- package/lib/commands/spaces/outbound-rules/remove.js +53 -0
- package/lib/commands/spaces/peerings/accept.d.ts +15 -0
- package/lib/commands/spaces/peerings/accept.js +36 -0
- package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
- package/lib/commands/spaces/peerings/destroy.js +45 -0
- package/lib/commands/spaces/peerings/index.d.ts +13 -0
- package/lib/commands/spaces/peerings/index.js +33 -0
- package/lib/commands/spaces/peerings/info.d.ts +15 -0
- package/lib/commands/spaces/peerings/info.js +59 -0
- package/lib/commands/spaces/ps.d.ts +15 -0
- package/lib/commands/spaces/ps.js +82 -0
- package/lib/commands/spaces/rename.d.ts +11 -0
- package/lib/commands/spaces/rename.js +26 -0
- package/lib/commands/spaces/topology.d.ts +32 -0
- package/lib/commands/spaces/topology.js +89 -0
- package/lib/commands/spaces/transfer.d.ts +11 -0
- package/lib/commands/spaces/transfer.js +35 -0
- package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
- package/lib/commands/spaces/trusted-ips/add.js +43 -0
- package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
- package/lib/commands/spaces/trusted-ips/index.js +52 -0
- package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
- package/lib/commands/spaces/trusted-ips/remove.js +44 -0
- package/lib/commands/spaces/vpn/config.d.ts +14 -0
- package/lib/commands/spaces/vpn/config.js +54 -0
- package/lib/commands/spaces/vpn/connect.d.ts +15 -0
- package/lib/commands/spaces/vpn/connect.js +45 -0
- package/lib/commands/spaces/vpn/connections.d.ts +17 -0
- package/lib/commands/spaces/vpn/connections.js +57 -0
- package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
- package/lib/commands/spaces/vpn/destroy.js +35 -0
- package/lib/commands/spaces/vpn/info.d.ts +16 -0
- package/lib/commands/spaces/vpn/info.js +82 -0
- package/lib/commands/spaces/vpn/update.d.ts +14 -0
- package/lib/commands/spaces/vpn/update.js +36 -0
- package/lib/commands/spaces/vpn/wait.d.ts +13 -0
- package/lib/commands/spaces/vpn/wait.js +53 -0
- package/lib/commands/spaces/wait.d.ts +17 -0
- package/lib/commands/spaces/wait.js +89 -0
- package/lib/commands/status.js +4 -4
- package/lib/commands/teams/index.d.ts +9 -0
- package/lib/commands/teams/index.js +29 -0
- package/lib/global_telemetry.js +10 -4
- package/lib/hooks/postrun/performance_analytics.js +5 -4
- package/lib/hooks/prerun/analytics.js +3 -0
- package/lib/lib/addons/addons_wait.d.ts +78 -0
- package/lib/lib/addons/addons_wait.js +56 -0
- package/lib/lib/addons/create_addon.d.ts +7 -0
- package/lib/lib/addons/create_addon.js +59 -0
- package/lib/lib/addons/destroy_addon.d.ts +3 -0
- package/lib/lib/addons/destroy_addon.js +48 -0
- package/lib/lib/addons/resolve.d.ts +38 -0
- package/lib/lib/addons/resolve.js +179 -0
- package/lib/lib/addons/util.d.ts +9 -0
- package/lib/lib/addons/util.js +72 -0
- package/lib/lib/apps/app-transfer.d.ts +10 -0
- package/lib/lib/apps/app-transfer.js +35 -0
- package/lib/lib/autocomplete/completions.d.ts +4 -0
- package/lib/lib/autocomplete/completions.js +6 -1
- package/lib/lib/certs/certificate_details.d.ts +2 -0
- package/lib/lib/certs/certificate_details.js +37 -0
- package/lib/lib/certs/display_table.d.ts +2 -0
- package/lib/lib/certs/display_table.js +51 -0
- package/lib/lib/certs/domains.d.ts +3 -0
- package/lib/lib/certs/domains.js +45 -0
- package/lib/lib/certs/flags.d.ts +7 -0
- package/lib/lib/certs/flags.js +42 -0
- package/lib/lib/certs/format_date.d.ts +1 -0
- package/lib/lib/certs/format_date.js +11 -0
- package/lib/lib/certs/get_cert_and_key.d.ts +9 -0
- package/lib/lib/certs/get_cert_and_key.js +11 -0
- package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
- package/lib/lib/ci/source.js +3 -3
- package/lib/lib/ci/test-run.js +2 -2
- package/lib/lib/config/quote.js +1 -1
- package/lib/lib/confirmCommand.d.ts +1 -0
- package/lib/lib/{apps/confirm-app.js → confirmCommand.js} +2 -2
- package/lib/lib/container/debug.d.ts +2 -0
- package/lib/lib/container/debug.js +5 -0
- package/lib/lib/container/docker_helper.d.ts +24 -0
- package/lib/lib/container/docker_helper.js +168 -0
- package/lib/lib/container/streamer.d.ts +1 -0
- package/lib/lib/container/streamer.js +31 -0
- package/lib/lib/domains/domains.d.ts +6 -0
- package/lib/lib/domains/domains.js +104 -0
- package/lib/lib/local/run-foreman.d.ts +1 -0
- package/lib/lib/local/run-foreman.js +229 -1
- package/lib/lib/members/util.d.ts +3 -0
- package/lib/lib/members/util.js +25 -0
- package/lib/lib/members/utils.d.ts +2 -0
- package/lib/lib/members/utils.js +14 -0
- package/lib/lib/notify.d.ts +1 -0
- package/lib/lib/notify.js +23 -0
- package/lib/lib/orgs/utils.d.ts +5 -0
- package/lib/lib/orgs/utils.js +24 -0
- package/lib/lib/pg/backups.d.ts +17 -0
- package/lib/lib/pg/backups.js +164 -0
- package/lib/lib/pg/bastion.d.ts +29 -0
- package/lib/lib/pg/bastion.js +121 -0
- package/lib/lib/pg/config.d.ts +2 -0
- package/lib/lib/pg/config.js +13 -0
- package/lib/lib/pg/download.d.ts +5 -0
- package/lib/lib/pg/download.js +34 -0
- package/lib/lib/pg/fetcher.d.ts +39 -0
- package/lib/lib/pg/fetcher.js +137 -0
- package/lib/lib/pg/host.d.ts +1 -0
- package/lib/lib/pg/host.js +7 -0
- package/lib/lib/pg/psql.d.ts +48 -0
- package/lib/lib/pg/psql.js +252 -0
- package/lib/lib/pg/push_pull.d.ts +13 -0
- package/lib/lib/pg/push_pull.js +118 -0
- package/lib/lib/pg/setter.d.ts +16 -0
- package/lib/lib/pg/setter.js +65 -0
- package/lib/lib/pg/types.d.ts +230 -0
- package/lib/lib/pg/types.js +2 -0
- package/lib/lib/pg/util.d.ts +36 -0
- package/lib/lib/pg/util.js +183 -0
- package/lib/lib/redis/api.d.ts +65 -0
- package/lib/lib/redis/api.js +122 -0
- package/lib/lib/releases/output.d.ts +1 -0
- package/lib/lib/releases/output.js +14 -0
- package/lib/lib/releases/releases.d.ts +6 -0
- package/lib/lib/releases/releases.js +32 -0
- package/lib/lib/releases/status_helper.d.ts +5 -0
- package/lib/lib/releases/status_helper.js +25 -0
- package/lib/lib/run/dyno.js +2 -2
- package/lib/lib/run/log-displayer.d.ts +1 -1
- package/lib/lib/spaces/format.d.ts +4 -0
- package/lib/lib/spaces/format.js +60 -0
- package/lib/lib/spaces/hosts.d.ts +9 -0
- package/lib/lib/spaces/hosts.js +34 -0
- package/lib/lib/spaces/outbound-rules.d.ts +4 -0
- package/lib/lib/spaces/outbound-rules.js +78 -0
- package/lib/lib/spaces/parsers.d.ts +8 -0
- package/lib/lib/spaces/parsers.js +17 -0
- package/lib/lib/spaces/peering.d.ts +4 -0
- package/lib/lib/spaces/peering.js +53 -0
- package/lib/lib/spaces/spaces.d.ts +4 -0
- package/lib/lib/spaces/spaces.js +37 -0
- package/lib/lib/spaces/vpn-connections.d.ts +2 -0
- package/lib/lib/spaces/vpn-connections.js +22 -0
- package/lib/lib/teamUtils.d.ts +3 -0
- package/lib/lib/teamUtils.js +18 -0
- package/lib/lib/time.d.ts +2 -0
- package/lib/lib/time.js +29 -0
- package/lib/lib/types/app_errors.d.ts +6 -0
- package/lib/lib/types/app_errors.js +2 -0
- package/lib/lib/types/domain.d.ts +61 -0
- package/lib/lib/types/domain.js +5 -0
- package/lib/lib/types/notifications.d.ts +20 -0
- package/lib/lib/types/notifications.js +2 -0
- package/lib/lib/utils/multisort.d.ts +32 -0
- package/lib/lib/utils/multisort.js +66 -0
- package/lib/lib/utils/uuid-validate.d.ts +1 -0
- package/lib/lib/utils/uuid-validate.js +7 -0
- package/lib/user-config.js +2 -2
- package/oclif.manifest.json +12776 -3097
- package/package.json +108 -61
- package/lib/lib/apps/confirm-app.d.ts +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
5
|
+
const setter_1 = require("../../../lib/pg/setter");
|
|
6
|
+
class LogLockWaits extends setter_1.PGSettingsCommand {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.settingKey = 'log_lock_waits';
|
|
10
|
+
}
|
|
11
|
+
convertValue(val) {
|
|
12
|
+
return (0, setter_1.booleanConverter)(val);
|
|
13
|
+
}
|
|
14
|
+
explain(setting) {
|
|
15
|
+
if (setting.value) {
|
|
16
|
+
return "When a deadlock is detected, a log message will be emitted in your application's logs.";
|
|
17
|
+
}
|
|
18
|
+
return "When a deadlock is detected, no log message will be emitted in your application's logs.";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = LogLockWaits;
|
|
22
|
+
LogLockWaits.topic = 'pg';
|
|
23
|
+
LogLockWaits.description = (0, tsheredoc_1.default)(`
|
|
24
|
+
Controls whether a log message is produced when a session waits longer than the deadlock_timeout to acquire a lock. deadlock_timeout is set to 1 second
|
|
25
|
+
Delays due to lock contention occur when multiple transactions are trying to access the same resource at the same time.
|
|
26
|
+
Applications and their query patterns should try to avoid changes to many different tables within the same transaction.
|
|
27
|
+
`);
|
|
28
|
+
LogLockWaits.args = {
|
|
29
|
+
database: core_1.Args.string(),
|
|
30
|
+
value: core_1.Args.string(),
|
|
31
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PGSettingsCommand } from '../../../lib/pg/setter';
|
|
2
|
+
import type { Setting, SettingKey } from '../../../lib/pg/types';
|
|
3
|
+
export default class LogMinDurationStatement extends PGSettingsCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
value: import("@oclif/core/lib/interfaces/parser").Arg<number | undefined, {
|
|
8
|
+
min?: number | undefined;
|
|
9
|
+
max?: number | undefined;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
protected settingKey: SettingKey;
|
|
13
|
+
protected convertValue(val: unknown): number;
|
|
14
|
+
protected explain(setting: Setting<unknown>): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
5
|
+
const setter_1 = require("../../../lib/pg/setter");
|
|
6
|
+
class LogMinDurationStatement extends setter_1.PGSettingsCommand {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.settingKey = 'log_min_duration_statement';
|
|
10
|
+
}
|
|
11
|
+
convertValue(val) {
|
|
12
|
+
return val;
|
|
13
|
+
}
|
|
14
|
+
explain(setting) {
|
|
15
|
+
if (setting.value === -1) {
|
|
16
|
+
return 'The duration of each completed statement will not be logged.';
|
|
17
|
+
}
|
|
18
|
+
if (setting.value === 0) {
|
|
19
|
+
return 'The duration of each completed statement will be logged.';
|
|
20
|
+
}
|
|
21
|
+
return `The duration of each completed statement will be logged if the statement ran for at least ${setting.value} milliseconds.`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.default = LogMinDurationStatement;
|
|
25
|
+
LogMinDurationStatement.description = (0, tsheredoc_1.default)(`
|
|
26
|
+
The duration of each completed statement will be logged if the statement completes after the time specified by VALUE.
|
|
27
|
+
VALUE needs to specified as a whole number, in milliseconds.
|
|
28
|
+
Setting log_min_duration_statement to zero prints all statement durations and -1 will disable logging statement durations.
|
|
29
|
+
`);
|
|
30
|
+
LogMinDurationStatement.args = {
|
|
31
|
+
database: core_1.Args.string(),
|
|
32
|
+
value: core_1.Args.integer(),
|
|
33
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Setting, type SettingKey } from '../../../lib/pg/types';
|
|
2
|
+
import { PGSettingsCommand } from '../../../lib/pg/setter';
|
|
3
|
+
export default class LogStatement extends PGSettingsCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
value: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
protected settingKey: SettingKey;
|
|
10
|
+
protected convertValue(val: string): string;
|
|
11
|
+
protected explain(setting: Setting<string>): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
5
|
+
const setter_1 = require("../../../lib/pg/setter");
|
|
6
|
+
class LogStatement extends setter_1.PGSettingsCommand {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.settingKey = 'log_statement';
|
|
10
|
+
}
|
|
11
|
+
convertValue(val) {
|
|
12
|
+
return val;
|
|
13
|
+
}
|
|
14
|
+
explain(setting) {
|
|
15
|
+
return setting.values[setting.value];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = LogStatement;
|
|
19
|
+
LogStatement.description = (0, tsheredoc_1.default)(`
|
|
20
|
+
log_statement controls which SQL statements are logged.
|
|
21
|
+
Valid values for VALUE:
|
|
22
|
+
none - No statements are logged
|
|
23
|
+
ddl - All data definition statements, such as CREATE, ALTER and DROP will be logged
|
|
24
|
+
mod - Includes all statements from ddl as well as data-modifying statements such as INSERT, UPDATE, DELETE, TRUNCATE, COPY
|
|
25
|
+
all - All statements are logged
|
|
26
|
+
`);
|
|
27
|
+
LogStatement.args = {
|
|
28
|
+
database: core_1.Args.string(),
|
|
29
|
+
value: core_1.Args.string({ options: ['none', 'ddl', 'mod', 'all'] }),
|
|
30
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PGSettingsCommand } from '../../../lib/pg/setter';
|
|
2
|
+
import type { Setting, SettingKey } from '../../../lib/pg/types';
|
|
3
|
+
export default class TrackFunctions extends PGSettingsCommand {
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
7
|
+
value: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
protected settingKey: SettingKey;
|
|
10
|
+
protected convertValue(val: unknown): unknown;
|
|
11
|
+
protected explain(setting: Setting<keyof Setting<unknown>['value']>): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
5
|
+
const setter_1 = require("../../../lib/pg/setter");
|
|
6
|
+
// ref: https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-FUNCTIONS
|
|
7
|
+
class TrackFunctions extends setter_1.PGSettingsCommand {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.settingKey = 'track_functions';
|
|
11
|
+
}
|
|
12
|
+
convertValue(val) {
|
|
13
|
+
return val;
|
|
14
|
+
}
|
|
15
|
+
explain(setting) {
|
|
16
|
+
return setting.values[setting.value];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.default = TrackFunctions;
|
|
20
|
+
TrackFunctions.description = (0, tsheredoc_1.default)(`
|
|
21
|
+
track_functions controls tracking of function call counts and time used. Default is none.
|
|
22
|
+
Valid values for VALUE:
|
|
23
|
+
none - No functions are tracked (default)
|
|
24
|
+
pl - Only procedural language functions are tracked
|
|
25
|
+
all - All functions, including SQL and C language functions, are tracked. Simple SQL-language that are inlined are not tracked`);
|
|
26
|
+
TrackFunctions.args = {
|
|
27
|
+
database: core_1.Args.string(),
|
|
28
|
+
value: core_1.Args.string({ options: ['none', 'pl', 'all'] }),
|
|
29
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Unfollow extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const fetcher_1 = require("../../lib/pg/fetcher");
|
|
7
|
+
const host_1 = require("../../lib/pg/host");
|
|
8
|
+
const util_1 = require("../../lib/pg/util");
|
|
9
|
+
const confirmCommand_1 = require("../../lib/confirmCommand");
|
|
10
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
11
|
+
class Unfollow extends command_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
const { flags, args } = await this.parse(Unfollow);
|
|
14
|
+
const { app, confirm } = flags;
|
|
15
|
+
const db = await (0, fetcher_1.getAddon)(this.heroku, app, args.database);
|
|
16
|
+
const { body: replica } = await this.heroku.get(`/client/v11/databases/${db.id}`, { hostname: (0, host_1.default)() });
|
|
17
|
+
if (!replica.following)
|
|
18
|
+
core_1.ux.error(`${color_1.default.addon(db.name)} is not a follower`);
|
|
19
|
+
const { body: configVars } = await this.heroku.get(`/apps/${app}/config-vars`);
|
|
20
|
+
const origin = (0, util_1.databaseNameFromUrl)(replica.following, configVars);
|
|
21
|
+
await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
|
|
22
|
+
Destructive action
|
|
23
|
+
${color_1.default.addon(db.name)} will become writeable and no longer follow ${origin}. This cannot be undone.
|
|
24
|
+
`));
|
|
25
|
+
core_1.ux.action.start(`${color_1.default.addon(db.name)} unfollowing`);
|
|
26
|
+
await this.heroku.put(`/client/v11/databases/${db.id}/unfollow`, { hostname: (0, host_1.default)() });
|
|
27
|
+
core_1.ux.action.stop();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.default = Unfollow;
|
|
31
|
+
Unfollow.topic = 'pg';
|
|
32
|
+
Unfollow.description = 'stop a replica from following and make it a writeable database';
|
|
33
|
+
Unfollow.flags = {
|
|
34
|
+
confirm: command_1.flags.string({ char: 'c' }),
|
|
35
|
+
app: command_1.flags.app({ required: true }),
|
|
36
|
+
remote: command_1.flags.remote(),
|
|
37
|
+
};
|
|
38
|
+
Unfollow.args = {
|
|
39
|
+
database: core_1.Args.string({ required: true }),
|
|
40
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Upgrade extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
version: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
7
|
+
const fetcher_1 = require("../../lib/pg/fetcher");
|
|
8
|
+
const host_1 = require("../../lib/pg/host");
|
|
9
|
+
const util_1 = require("../../lib/pg/util");
|
|
10
|
+
const confirmCommand_1 = require("../../lib/confirmCommand");
|
|
11
|
+
class Upgrade extends command_1.Command {
|
|
12
|
+
async run() {
|
|
13
|
+
const { flags, args } = await this.parse(Upgrade);
|
|
14
|
+
const { app, version, confirm } = flags;
|
|
15
|
+
const { database } = args;
|
|
16
|
+
const db = await (0, fetcher_1.getAddon)(this.heroku, app, database);
|
|
17
|
+
if ((0, util_1.legacyEssentialPlan)(db))
|
|
18
|
+
core_1.ux.error('pg:upgrade is only available for Essential-* databases and follower databases on Standard-tier and higher plans.');
|
|
19
|
+
const { body: replica } = await this.heroku.get(`/client/v11/databases/${db.id}`, { hostname: (0, host_1.default)() });
|
|
20
|
+
if (replica.following) {
|
|
21
|
+
const { body: configVars } = await this.heroku.get(`/apps/${app}/config-vars`);
|
|
22
|
+
const origin = (0, util_1.databaseNameFromUrl)(replica.following, configVars);
|
|
23
|
+
await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
|
|
24
|
+
Destructive action
|
|
25
|
+
${color_1.default.addon(db.name)} will be upgraded to a newer PostgreSQL version, stop following ${origin}, and become writable.
|
|
26
|
+
|
|
27
|
+
This cannot be undone.
|
|
28
|
+
`));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
|
|
32
|
+
Destructive action
|
|
33
|
+
${color_1.default.addon(db.name)} will be upgraded to a newer PostgreSQL version.
|
|
34
|
+
|
|
35
|
+
This cannot be undone.
|
|
36
|
+
`));
|
|
37
|
+
}
|
|
38
|
+
const data = { version };
|
|
39
|
+
core_1.ux.action.start(`Starting upgrade of ${color_1.default.addon(db.name)}`);
|
|
40
|
+
await this.heroku.post(`/client/v11/databases/${db.id}/upgrade`, { hostname: (0, host_1.default)(), body: data });
|
|
41
|
+
core_1.ux.action.stop(`Use ${color_1.default.cmd('heroku pg:wait')} to track status`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = Upgrade;
|
|
45
|
+
Upgrade.topic = 'pg';
|
|
46
|
+
Upgrade.description = (0, tsheredoc_1.default)(`
|
|
47
|
+
For an Essential-* plan, this command upgrades the database's PostgreSQL version. For a Standard-tier and higher plan, this command unfollows the leader database before upgrading the PostgreSQL version.
|
|
48
|
+
To upgrade to another PostgreSQL version, use pg:copy instead
|
|
49
|
+
`);
|
|
50
|
+
Upgrade.flags = {
|
|
51
|
+
confirm: command_1.flags.string({ char: 'c' }),
|
|
52
|
+
version: command_1.flags.string({ char: 'v', description: 'PostgreSQL version to upgrade to' }),
|
|
53
|
+
app: command_1.flags.app({ required: true }),
|
|
54
|
+
remote: command_1.flags.remote(),
|
|
55
|
+
};
|
|
56
|
+
Upgrade.args = {
|
|
57
|
+
database: core_1.Args.string(),
|
|
58
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class VacuumStats extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
static args: {
|
|
10
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const command_1 = require("@heroku-cli/command");
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const fetcher_1 = require("../../lib/pg/fetcher");
|
|
6
|
+
const psql_1 = require("../../lib/pg/psql");
|
|
7
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
8
|
+
class VacuumStats extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(VacuumStats);
|
|
11
|
+
const db = await (0, fetcher_1.database)(this.heroku, flags.app, args.database);
|
|
12
|
+
const query = (0, tsheredoc_1.default)(`
|
|
13
|
+
WITH table_opts AS (
|
|
14
|
+
SELECT
|
|
15
|
+
pg_class.oid, relname, nspname, array_to_string(reloptions, '') AS relopts
|
|
16
|
+
FROM
|
|
17
|
+
pg_class INNER JOIN pg_namespace ns ON relnamespace = ns.oid
|
|
18
|
+
), vacuum_settings AS (
|
|
19
|
+
SELECT
|
|
20
|
+
oid, relname, nspname,
|
|
21
|
+
CASE
|
|
22
|
+
WHEN relopts LIKE '%autovacuum_vacuum_threshold%'
|
|
23
|
+
THEN substring(relopts, '.*autovacuum_vacuum_threshold=([0-9.]+).*')::integer
|
|
24
|
+
ELSE current_setting('autovacuum_vacuum_threshold')::integer
|
|
25
|
+
END AS autovacuum_vacuum_threshold,
|
|
26
|
+
CASE
|
|
27
|
+
WHEN relopts LIKE '%autovacuum_vacuum_scale_factor%'
|
|
28
|
+
THEN substring(relopts, '.*autovacuum_vacuum_scale_factor=([0-9.]+).*')::real
|
|
29
|
+
ELSE current_setting('autovacuum_vacuum_scale_factor')::real
|
|
30
|
+
END AS autovacuum_vacuum_scale_factor
|
|
31
|
+
FROM
|
|
32
|
+
table_opts
|
|
33
|
+
)
|
|
34
|
+
SELECT
|
|
35
|
+
vacuum_settings.nspname AS schema,
|
|
36
|
+
vacuum_settings.relname AS table,
|
|
37
|
+
to_char(psut.last_vacuum, 'YYYY-MM-DD HH24:MI') AS last_vacuum,
|
|
38
|
+
to_char(psut.last_autovacuum, 'YYYY-MM-DD HH24:MI') AS last_autovacuum,
|
|
39
|
+
to_char(pg_class.reltuples, '9G999G999G999') AS rowcount,
|
|
40
|
+
to_char(psut.n_dead_tup, '9G999G999G999') AS dead_rowcount,
|
|
41
|
+
to_char(autovacuum_vacuum_threshold
|
|
42
|
+
+ (autovacuum_vacuum_scale_factor::numeric * pg_class.reltuples), '9G999G999G999') AS autovacuum_threshold,
|
|
43
|
+
CASE
|
|
44
|
+
WHEN autovacuum_vacuum_threshold + (autovacuum_vacuum_scale_factor::numeric * pg_class.reltuples) < psut.n_dead_tup
|
|
45
|
+
THEN 'yes'
|
|
46
|
+
END AS expect_autovacuum
|
|
47
|
+
FROM
|
|
48
|
+
pg_stat_user_tables psut INNER JOIN pg_class ON psut.relid = pg_class.oid
|
|
49
|
+
INNER JOIN vacuum_settings ON pg_class.oid = vacuum_settings.oid
|
|
50
|
+
ORDER BY 1
|
|
51
|
+
`);
|
|
52
|
+
const output = await (0, psql_1.exec)(db, query);
|
|
53
|
+
core_1.ux.log(output);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = VacuumStats;
|
|
57
|
+
VacuumStats.topic = 'pg';
|
|
58
|
+
VacuumStats.description = 'show dead rows and whether an automatic vacuum is expected to be triggered';
|
|
59
|
+
VacuumStats.flags = {
|
|
60
|
+
app: command_1.flags.app({ required: true }),
|
|
61
|
+
remote: command_1.flags.remote(),
|
|
62
|
+
};
|
|
63
|
+
VacuumStats.args = {
|
|
64
|
+
database: core_1.Args.string(),
|
|
65
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Wait extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
'wait-interval': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
'no-notify': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const color_1 = require("@heroku-cli/color");
|
|
4
|
+
const command_1 = require("@heroku-cli/command");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const debug_1 = require("debug");
|
|
7
|
+
const fetcher_1 = require("../../lib/pg/fetcher");
|
|
8
|
+
const host_1 = require("../../lib/pg/host");
|
|
9
|
+
const notify_1 = require("../../lib/notify");
|
|
10
|
+
const wait = (ms) => new Promise(resolve => {
|
|
11
|
+
setTimeout(resolve, ms);
|
|
12
|
+
});
|
|
13
|
+
class Wait extends command_1.Command {
|
|
14
|
+
async run() {
|
|
15
|
+
const { flags, args } = await this.parse(Wait);
|
|
16
|
+
const { app, 'wait-interval': waitInterval } = flags;
|
|
17
|
+
const dbName = args.database;
|
|
18
|
+
const pgDebug = (0, debug_1.default)('pg');
|
|
19
|
+
const waitFor = async (db) => {
|
|
20
|
+
let interval = waitInterval && Number.parseInt(waitInterval, 10);
|
|
21
|
+
if (!interval || interval < 0)
|
|
22
|
+
interval = 5;
|
|
23
|
+
let status;
|
|
24
|
+
let waiting = false;
|
|
25
|
+
let retries = 20;
|
|
26
|
+
while (true) {
|
|
27
|
+
try {
|
|
28
|
+
({ body: status } = await this.heroku.get(`/client/v11/databases/${db.id}/wait_status`, { hostname: (0, host_1.default)() }));
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const httpError = error;
|
|
32
|
+
pgDebug(httpError);
|
|
33
|
+
if (!retries || httpError.statusCode !== 404)
|
|
34
|
+
throw httpError;
|
|
35
|
+
retries--;
|
|
36
|
+
status = { 'waiting?': true };
|
|
37
|
+
}
|
|
38
|
+
if (status['error?']) {
|
|
39
|
+
(0, notify_1.default)('error', `${db.name} ${status.message}`, false);
|
|
40
|
+
core_1.ux.error(status.message || '', { exit: 1 });
|
|
41
|
+
}
|
|
42
|
+
if (!status['waiting?']) {
|
|
43
|
+
if (waiting) {
|
|
44
|
+
core_1.ux.action.stop(status.message);
|
|
45
|
+
}
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (!waiting) {
|
|
49
|
+
waiting = true;
|
|
50
|
+
core_1.ux.action.start(`Waiting for database ${color_1.default.yellow(db.name)}`, status.message);
|
|
51
|
+
}
|
|
52
|
+
core_1.ux.action.status = status.message;
|
|
53
|
+
await wait(interval * 1000);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
let dbs = [];
|
|
57
|
+
if (dbName) {
|
|
58
|
+
dbs = [await (0, fetcher_1.getAddon)(this.heroku, app, dbName)];
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
dbs = await (0, fetcher_1.all)(this.heroku, app);
|
|
62
|
+
}
|
|
63
|
+
for (const db of dbs) {
|
|
64
|
+
await waitFor(db);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.default = Wait;
|
|
69
|
+
Wait.topic = 'pg';
|
|
70
|
+
Wait.description = 'blocks until database is available';
|
|
71
|
+
Wait.flags = {
|
|
72
|
+
'wait-interval': command_1.flags.string({ description: 'how frequently to poll in seconds (to avoid rate limiting)' }),
|
|
73
|
+
'no-notify': command_1.flags.boolean({ description: 'do not show OS notification' }),
|
|
74
|
+
app: command_1.flags.app({ required: true }),
|
|
75
|
+
remote: command_1.flags.remote(),
|
|
76
|
+
};
|
|
77
|
+
Wait.args = {
|
|
78
|
+
database: core_1.Args.string(),
|
|
79
|
+
};
|
|
@@ -32,7 +32,7 @@ class Connect extends command_1.Command {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
exports.default = Connect;
|
|
35
|
-
Connect.description = 'connect a
|
|
35
|
+
Connect.description = 'connect a GitHub repo to an existing pipeline';
|
|
36
36
|
Connect.examples = [
|
|
37
37
|
'$ heroku pipelines:connect my-pipeline -r githuborg/reponame',
|
|
38
38
|
];
|
|
@@ -20,7 +20,7 @@ async function diff(targetApp, downstreamApp, githubToken, herokuUserAgent) {
|
|
|
20
20
|
if (downstreamApp.hash === targetApp.hash) {
|
|
21
21
|
return core_1.ux.log(`\n${color_1.default.app(targetApp.name)} is up to date with ${color_1.default.app(downstreamApp.name)}`);
|
|
22
22
|
}
|
|
23
|
-
// Do the actual
|
|
23
|
+
// Do the actual GitHub diff
|
|
24
24
|
try {
|
|
25
25
|
const path = `${targetApp.repo}/compare/${downstreamApp.hash}...${targetApp.hash}`;
|
|
26
26
|
const headers = { authorization: 'token ' + githubToken };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Index extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static strict: boolean;
|
|
6
|
+
static usage: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
extended: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|