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,35 @@
|
|
|
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
|
+
class Transfer extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags } = await this.parse(Transfer);
|
|
10
|
+
const space = flags.space;
|
|
11
|
+
const team = flags.team;
|
|
12
|
+
try {
|
|
13
|
+
core_1.ux.action.start(`Transferring space ${color_1.default.yellow(space)} to team ${color_1.default.green(team)}`);
|
|
14
|
+
await this.heroku.post(`/spaces/${space}/transfer`, { body: { new_owner: team } });
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const { body: { message } } = error;
|
|
18
|
+
core_1.ux.error(message);
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
core_1.ux.action.stop();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.default = Transfer;
|
|
26
|
+
Transfer.topic = 'spaces';
|
|
27
|
+
Transfer.description = 'transfer a space to another team';
|
|
28
|
+
Transfer.examples = [(0, tsheredoc_1.default)(`
|
|
29
|
+
$ heroku spaces:transfer --space=space-name --team=team-name
|
|
30
|
+
Transferring space-name to team-name... done
|
|
31
|
+
`)];
|
|
32
|
+
Transfer.flags = {
|
|
33
|
+
space: command_1.flags.string({ required: true, description: 'name of space' }),
|
|
34
|
+
team: command_1.flags.string({ required: true, description: 'desired owner of space' }),
|
|
35
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Add extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static hiddenAliases: string[];
|
|
5
|
+
static description: string;
|
|
6
|
+
static examples: string[];
|
|
7
|
+
static flags: {
|
|
8
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
source: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
private isUniqueRule;
|
|
16
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
class Add extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags, args } = await this.parse(Add);
|
|
10
|
+
const { space } = flags;
|
|
11
|
+
const url = `/spaces/${space}/inbound-ruleset`;
|
|
12
|
+
const options = {
|
|
13
|
+
headers: { Accept: 'application/vnd.heroku+json; version=3.dogwood' },
|
|
14
|
+
};
|
|
15
|
+
const { body: ruleset } = await this.heroku.get(url, options);
|
|
16
|
+
if (!this.isUniqueRule(ruleset, args.source)) {
|
|
17
|
+
throw new Error(`A rule already exists for ${args.source}.`);
|
|
18
|
+
}
|
|
19
|
+
ruleset.rules.push({ action: 'allow', source: args.source });
|
|
20
|
+
await this.heroku.put(url, Object.assign(Object.assign({}, options), { body: ruleset }));
|
|
21
|
+
core_1.ux.log(`Added ${color_1.default.cyan.bold(args.source)} to trusted IP ranges on ${color_1.default.cyan.bold(space)}`);
|
|
22
|
+
core_1.ux.warn('It may take a few moments for the changes to take effect.');
|
|
23
|
+
}
|
|
24
|
+
isUniqueRule(ruleset, source) {
|
|
25
|
+
return Array.isArray(ruleset.rules) && !ruleset.rules.some(rs => rs.source === source);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = Add;
|
|
29
|
+
Add.topic = 'spaces';
|
|
30
|
+
Add.hiddenAliases = ['trusted-ips:add'];
|
|
31
|
+
Add.description = (0, tsheredoc_1.default)(`
|
|
32
|
+
Add one range to the list of trusted IP ranges
|
|
33
|
+
Uses CIDR notation.`);
|
|
34
|
+
Add.examples = [(0, tsheredoc_1.default)(`
|
|
35
|
+
$ heroku trusted-ips:add --space my-space 192.168.2.0/24
|
|
36
|
+
Added 192.168.0.1/24 to trusted IP ranges on my-space`)];
|
|
37
|
+
Add.flags = {
|
|
38
|
+
space: command_1.flags.string({ char: 's', description: 'space to add rule to', required: true }),
|
|
39
|
+
confirm: command_1.flags.string({ description: 'set to space name to bypass confirm prompt' }),
|
|
40
|
+
};
|
|
41
|
+
Add.args = {
|
|
42
|
+
source: core_1.Args.string({ required: true }),
|
|
43
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Index extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static hiddenAliases: string[];
|
|
5
|
+
static description: string;
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
space: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
private displayRules;
|
|
15
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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 tsheredoc_1 = require("tsheredoc");
|
|
6
|
+
class Index extends command_1.Command {
|
|
7
|
+
async run() {
|
|
8
|
+
const { flags, args } = await this.parse(Index);
|
|
9
|
+
const space = flags.space || args.space;
|
|
10
|
+
if (!space) {
|
|
11
|
+
throw new Error('Space name required.\nUSAGE: heroku trusted-ips my-space');
|
|
12
|
+
}
|
|
13
|
+
const { body: rules } = await this.heroku.get(`/spaces/${space}/inbound-ruleset`, {
|
|
14
|
+
headers: { Accept: 'application/vnd.heroku+json; version=3.dogwood' },
|
|
15
|
+
});
|
|
16
|
+
if (flags.json) {
|
|
17
|
+
core_1.ux.log(JSON.stringify(rules, null, 2));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.displayRules(space, rules);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
displayRules(space, ruleset) {
|
|
24
|
+
if (ruleset.rules.length > 0) {
|
|
25
|
+
core_1.ux.styledHeader('Trusted IP Ranges');
|
|
26
|
+
for (const rule of ruleset.rules) {
|
|
27
|
+
core_1.ux.log(rule.source);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
core_1.ux.styledHeader(`${space} has no trusted IP ranges. All inbound web requests to dynos are blocked.`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.default = Index;
|
|
36
|
+
Index.topic = 'spaces';
|
|
37
|
+
Index.hiddenAliases = ['trusted-ips'];
|
|
38
|
+
Index.description = (0, tsheredoc_1.default)(`
|
|
39
|
+
list trusted IP ranges for a space
|
|
40
|
+
Trusted IP ranges are only available on Private Spaces.
|
|
41
|
+
|
|
42
|
+
The space name is a required parameter. Newly created spaces will have 0.0.0.0/0 set by default
|
|
43
|
+
allowing all traffic to applications in the space. More than one CIDR block can be provided at
|
|
44
|
+
a time to the commands listed below. For example 1.2.3.4/20 and 5.6.7.8/20 can be added with:
|
|
45
|
+
`);
|
|
46
|
+
Index.flags = {
|
|
47
|
+
space: command_1.flags.string({ char: 's', description: 'space to get inbound rules from' }),
|
|
48
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
49
|
+
};
|
|
50
|
+
Index.args = {
|
|
51
|
+
space: core_1.Args.string({ hidden: true }),
|
|
52
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Remove extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static hiddenAliases: string[];
|
|
5
|
+
static description: string;
|
|
6
|
+
static examples: string[];
|
|
7
|
+
static flags: {
|
|
8
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
source: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
class Remove extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
var _a, _b, _c, _d;
|
|
10
|
+
const { flags, args } = await this.parse(Remove);
|
|
11
|
+
const space = flags.space;
|
|
12
|
+
const url = `/spaces/${space}/inbound-ruleset`;
|
|
13
|
+
const opts = { headers: { Accept: 'application/vnd.heroku+json; version=3.dogwood' } };
|
|
14
|
+
const { body: rules } = await this.heroku.get(url, opts);
|
|
15
|
+
if (((_a = rules.rules) === null || _a === void 0 ? void 0 : _a.length) === 0) {
|
|
16
|
+
throw new Error('No IP ranges are configured. Nothing to do.');
|
|
17
|
+
}
|
|
18
|
+
const originalLength = (_b = rules.rules) === null || _b === void 0 ? void 0 : _b.length;
|
|
19
|
+
rules.rules = (_c = rules.rules) === null || _c === void 0 ? void 0 : _c.filter(r => r.source !== args.source);
|
|
20
|
+
if (((_d = rules.rules) === null || _d === void 0 ? void 0 : _d.length) === originalLength) {
|
|
21
|
+
throw new Error(`No IP range matching ${args.source} was found.`);
|
|
22
|
+
}
|
|
23
|
+
await this.heroku.put(url, Object.assign(Object.assign({}, opts), { body: rules }));
|
|
24
|
+
core_1.ux.log(`Removed ${color_1.default.cyan.bold(args.source)} from trusted IP ranges on ${color_1.default.cyan.bold(space)}`);
|
|
25
|
+
core_1.ux.warn('It may take a few moments for the changes to take effect.');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = Remove;
|
|
29
|
+
Remove.topic = 'spaces';
|
|
30
|
+
Remove.hiddenAliases = ['trusted-ips:remove'];
|
|
31
|
+
Remove.description = (0, tsheredoc_1.default)(`
|
|
32
|
+
Remove a range from the list of trusted IP ranges
|
|
33
|
+
Uses CIDR notation.`);
|
|
34
|
+
Remove.examples = [(0, tsheredoc_1.default)(`
|
|
35
|
+
$ heroku trusted-ips:remove --space my-space 192.168.2.0/24
|
|
36
|
+
Removed 192.168.2.0/24 from trusted IP ranges on my-space
|
|
37
|
+
`)];
|
|
38
|
+
Remove.flags = {
|
|
39
|
+
space: command_1.flags.string({ optional: false, description: 'space to remove rule from' }),
|
|
40
|
+
confirm: command_1.flags.string({ description: 'set to space name to bypass confirm prompt' }),
|
|
41
|
+
};
|
|
42
|
+
Remove.args = {
|
|
43
|
+
source: core_1.Args.string({ required: true }),
|
|
44
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Config extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static example: string;
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
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 vpn_connections_1 = require("../../../lib/spaces/vpn-connections");
|
|
6
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
7
|
+
class Config extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags, args } = await this.parse(Config);
|
|
10
|
+
const { space, json } = flags;
|
|
11
|
+
const { name } = args;
|
|
12
|
+
const { body: vpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
|
|
13
|
+
if (json) {
|
|
14
|
+
core_1.ux.styledJSON(vpnConnection);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
(0, vpn_connections_1.displayVPNConfigInfo)(space, name, vpnConnection);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = Config;
|
|
22
|
+
Config.topic = 'spaces';
|
|
23
|
+
Config.description = (0, tsheredoc_1.default)(`
|
|
24
|
+
display the configuration information for VPN
|
|
25
|
+
|
|
26
|
+
You will use the information provided by this command to establish a Private Space VPN Connection.
|
|
27
|
+
|
|
28
|
+
- You must configure your VPN Gateway to use both Tunnels provided by Heroku
|
|
29
|
+
- The VPN Gateway values are the IP addresses of the Private Space Tunnels
|
|
30
|
+
- The Customer Gateway value is the Public IP of your VPN Gateway
|
|
31
|
+
- The VPN Gateway must use the IKE Version shown and the Pre-shared Keys as the authentication method
|
|
32
|
+
`);
|
|
33
|
+
Config.example = (0, tsheredoc_1.default)(`
|
|
34
|
+
$ heroku spaces:vpn:config --space my-space vpn-connection-name
|
|
35
|
+
=== vpn-connection-name VPN Tunnels
|
|
36
|
+
VPN Tunnel Customer Gateway VPN Gateway Pre-shared Key Routable Subnets IKE Version
|
|
37
|
+
────────── ──────────────── ────────────── ────────────── ──────────────── ───────────
|
|
38
|
+
Tunnel 1 104.196.121.200 35.171.237.136 abcdef12345 10.0.0.0/16 1
|
|
39
|
+
Tunnel 2 104.196.121.200 52.44.7.216 fedcba54321 10.0.0.0/16 1
|
|
40
|
+
`);
|
|
41
|
+
Config.flags = {
|
|
42
|
+
space: command_1.flags.string({
|
|
43
|
+
required: true,
|
|
44
|
+
char: 's',
|
|
45
|
+
description: 'space the VPN connection belongs to',
|
|
46
|
+
}),
|
|
47
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
48
|
+
};
|
|
49
|
+
Config.args = {
|
|
50
|
+
name: core_1.Args.string({
|
|
51
|
+
required: true,
|
|
52
|
+
description: 'name or id of the VPN connection to retrieve config from',
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Connect extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
ip: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
cidrs: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static args: {
|
|
12
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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 parsers_1 = require("../../../lib/spaces/parsers");
|
|
8
|
+
class Connect extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(Connect);
|
|
11
|
+
const { space, cidrs, ip } = flags;
|
|
12
|
+
const { name } = args;
|
|
13
|
+
const parsed_cidrs = (0, parsers_1.splitCsv)(cidrs);
|
|
14
|
+
core_1.ux.action.start(`Creating VPN Connection in space ${color_1.default.green(space)}`);
|
|
15
|
+
await this.heroku.post(`/spaces/${space}/vpn-connections`, {
|
|
16
|
+
body: {
|
|
17
|
+
name,
|
|
18
|
+
public_ip: ip,
|
|
19
|
+
routable_cidrs: parsed_cidrs,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
core_1.ux.action.stop();
|
|
23
|
+
core_1.ux.warn(`Use ${color_1.default.cmd('heroku spaces:vpn:wait')} to track allocation.`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.default = Connect;
|
|
27
|
+
Connect.topic = 'spaces';
|
|
28
|
+
Connect.description = (0, tsheredoc_1.default) `
|
|
29
|
+
create VPN
|
|
30
|
+
Private Spaces can be connected to another private network via an IPSec VPN connection allowing dynos to connect to hosts on your private networks and vice versa.
|
|
31
|
+
The connection is established over the public Internet but all traffic is encrypted using IPSec.
|
|
32
|
+
`;
|
|
33
|
+
Connect.examples = [(0, tsheredoc_1.default) `
|
|
34
|
+
$ heroku spaces:vpn:connect --name office --ip 35.161.69.30 --cidrs 172.16.0.0/16,10.0.0.0/24 --space my-space
|
|
35
|
+
Creating VPN Connection in space my-space... done
|
|
36
|
+
▸ Use spaces:vpn:wait to track allocation.
|
|
37
|
+
`];
|
|
38
|
+
Connect.flags = {
|
|
39
|
+
ip: command_1.flags.string({ char: 'i', description: 'public IP of customer gateway', required: true }),
|
|
40
|
+
cidrs: command_1.flags.string({ char: 'c', description: 'a list of routable CIDRs separated by commas', required: true }),
|
|
41
|
+
space: command_1.flags.string({ char: 's', description: 'space name', required: true }),
|
|
42
|
+
};
|
|
43
|
+
Connect.args = {
|
|
44
|
+
name: core_1.Args.string({ required: true }),
|
|
45
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
import * as Heroku from '@heroku-cli/schema';
|
|
3
|
+
declare type VpnConnectionTunnels = Required<Heroku.PrivateSpacesVpn>['tunnels'];
|
|
4
|
+
export default class Connections extends Command {
|
|
5
|
+
static topic: string;
|
|
6
|
+
static description: string;
|
|
7
|
+
static example: string;
|
|
8
|
+
static flags: {
|
|
9
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
protected render(space: string, connections: Required<Heroku.PrivateSpacesVpn>[], json: boolean): void;
|
|
14
|
+
protected displayVPNConnections(space: string, connections: Required<Heroku.PrivateSpacesVpn>[]): void;
|
|
15
|
+
protected tunnelFormat(t: VpnConnectionTunnels): string;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
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 tsheredoc_1 = require("tsheredoc");
|
|
6
|
+
const format_1 = require("../../../lib/spaces/format");
|
|
7
|
+
class Connections extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags } = await this.parse(Connections);
|
|
10
|
+
const { space, json } = flags;
|
|
11
|
+
const { body: connections } = await this.heroku.get(`/spaces/${space}/vpn-connections`);
|
|
12
|
+
this.render(space, connections, json);
|
|
13
|
+
}
|
|
14
|
+
render(space, connections, json) {
|
|
15
|
+
if (json) {
|
|
16
|
+
core_1.ux.styledJSON(connections);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.displayVPNConnections(space, connections);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
displayVPNConnections(space, connections) {
|
|
23
|
+
if (connections.length === 0) {
|
|
24
|
+
core_1.ux.log('No VPN Connections have been created yet');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
core_1.ux.styledHeader(`${space} VPN Connections`);
|
|
28
|
+
core_1.ux.table(connections, {
|
|
29
|
+
Name: {
|
|
30
|
+
get: c => c.name || c.id,
|
|
31
|
+
},
|
|
32
|
+
Status: {
|
|
33
|
+
get: c => (0, format_1.displayVPNStatus)(c.status),
|
|
34
|
+
},
|
|
35
|
+
Tunnels: {
|
|
36
|
+
get: c => this.tunnelFormat(c.tunnels),
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
tunnelFormat(t) {
|
|
41
|
+
return t.map(tunnel => (0, format_1.displayVPNStatus)(tunnel.status)).join('/');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = Connections;
|
|
45
|
+
Connections.topic = 'spaces';
|
|
46
|
+
Connections.description = 'list the VPN Connections for a space';
|
|
47
|
+
Connections.example = (0, tsheredoc_1.default) `
|
|
48
|
+
$ heroku spaces:vpn:connections --space my-space
|
|
49
|
+
=== my-space VPN Connections
|
|
50
|
+
Name Status Tunnels
|
|
51
|
+
────── ────── ───────
|
|
52
|
+
office active UP/UP
|
|
53
|
+
`;
|
|
54
|
+
Connections.flags = {
|
|
55
|
+
space: command_1.flags.string({ char: 's', description: 'space to get VPN connections from', required: true }),
|
|
56
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
57
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Destroy extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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 confirmCommand_1 = require("../../../lib/confirmCommand");
|
|
7
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
8
|
+
class Destroy extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(Destroy);
|
|
11
|
+
const { space, confirm } = flags;
|
|
12
|
+
const { name } = args;
|
|
13
|
+
await (0, confirmCommand_1.default)(name, confirm, (0, tsheredoc_1.default) `
|
|
14
|
+
Destructive Action
|
|
15
|
+
This command will attempt to destroy the specified VPN Connection in space ${color_1.default.green(space)}
|
|
16
|
+
`);
|
|
17
|
+
core_1.ux.action.start(`Tearing down VPN Connection ${color_1.default.cyan(name)} in space ${color_1.default.cyan(space)}`);
|
|
18
|
+
await this.heroku.delete(`/spaces/${space}/vpn-connections/${name}`);
|
|
19
|
+
core_1.ux.action.stop();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.default = Destroy;
|
|
23
|
+
Destroy.topic = 'spaces';
|
|
24
|
+
Destroy.description = 'destroys VPN in a private space';
|
|
25
|
+
Destroy.examples = [(0, tsheredoc_1.default) `
|
|
26
|
+
$ heroku spaces:vpn:destroy vpn-connection-name --space example-space --confirm vpn-connection-name
|
|
27
|
+
Tearing down VPN Connection vpn-connection-name in space example-space
|
|
28
|
+
`];
|
|
29
|
+
Destroy.flags = {
|
|
30
|
+
space: command_1.flags.string({ char: 's', description: 'space name', required: true }),
|
|
31
|
+
confirm: command_1.flags.string({ description: 'set to VPN connection name to bypass confirm prompt', hidden: true }),
|
|
32
|
+
};
|
|
33
|
+
Destroy.args = {
|
|
34
|
+
name: core_1.Args.string({ description: 'name of the VPN connection to destroy', required: true }),
|
|
35
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Info extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static example: string;
|
|
6
|
+
static flags: {
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
private displayVPNInfo;
|
|
15
|
+
private render;
|
|
16
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
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 tsheredoc_1 = require("tsheredoc");
|
|
6
|
+
const format_1 = require("../../../lib/spaces/format");
|
|
7
|
+
class Info extends command_1.Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { flags, args } = await this.parse(Info);
|
|
10
|
+
const { space, json } = flags;
|
|
11
|
+
const { name } = args;
|
|
12
|
+
const { body: vpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
|
|
13
|
+
const connectionName = vpnConnection.name || name;
|
|
14
|
+
this.render(connectionName, vpnConnection, json);
|
|
15
|
+
}
|
|
16
|
+
displayVPNInfo(name, vpnConnection) {
|
|
17
|
+
core_1.ux.styledHeader(`${name} VPN Info`);
|
|
18
|
+
core_1.ux.styledObject({
|
|
19
|
+
Name: name,
|
|
20
|
+
ID: vpnConnection.id,
|
|
21
|
+
'Public IP': vpnConnection.public_ip,
|
|
22
|
+
'Routable CIDRs': (0, format_1.displayCIDR)(vpnConnection.routable_cidrs),
|
|
23
|
+
Status: `${(0, format_1.displayVPNStatus)(vpnConnection.status)}`,
|
|
24
|
+
'Status Message': vpnConnection.status_message,
|
|
25
|
+
}, ['Name', 'ID', 'Public IP', 'Routable CIDRs', 'State', 'Status', 'Status Message']);
|
|
26
|
+
const vpnConnectionTunnels = vpnConnection.tunnels || [];
|
|
27
|
+
vpnConnectionTunnels.forEach((val, i) => {
|
|
28
|
+
val.tunnel_id = 'Tunnel ' + (i + 1);
|
|
29
|
+
});
|
|
30
|
+
core_1.ux.styledHeader(`${name} VPN Tunnel Info`);
|
|
31
|
+
core_1.ux.table(vpnConnectionTunnels, {
|
|
32
|
+
tunnel_id: { header: 'VPN Tunnel' },
|
|
33
|
+
ip: { header: 'IP Address' },
|
|
34
|
+
status: {
|
|
35
|
+
header: 'Status',
|
|
36
|
+
get: row => (0, format_1.displayVPNStatus)(row.status),
|
|
37
|
+
},
|
|
38
|
+
last_status_change: { header: 'Status Last Changed' },
|
|
39
|
+
status_message: { header: 'Details' },
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
render(name, vpnConnection, json) {
|
|
43
|
+
if (json) {
|
|
44
|
+
core_1.ux.styledJSON(vpnConnection);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.displayVPNInfo(name, vpnConnection);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.default = Info;
|
|
52
|
+
Info.topic = 'spaces';
|
|
53
|
+
Info.description = 'display the information for VPN';
|
|
54
|
+
Info.example = (0, tsheredoc_1.default)(`
|
|
55
|
+
$ heroku spaces:vpn:info --space my-space vpn-connection-name
|
|
56
|
+
=== vpn-connection-name VPN Tunnel Info
|
|
57
|
+
Name: vpn-connection-name
|
|
58
|
+
ID: 123456789012
|
|
59
|
+
Public IP: 35.161.69.30
|
|
60
|
+
Routable CIDRs: 172.16.0.0/16
|
|
61
|
+
Status: failed
|
|
62
|
+
Status Message: supplied CIDR block already in use
|
|
63
|
+
=== my-space Tunnel Info
|
|
64
|
+
VPN Tunnel IP Address Status Last Changed Details
|
|
65
|
+
────────── ───────────── ────── ──────────────────── ─────────────
|
|
66
|
+
Tunnel 1 52.44.146.197 UP 2016-10-25T22:09:05Z status message
|
|
67
|
+
Tunnel 2 52.44.146.197 UP 2016-10-25T22:09:05Z status message
|
|
68
|
+
`);
|
|
69
|
+
Info.flags = {
|
|
70
|
+
space: command_1.flags.string({
|
|
71
|
+
char: 's',
|
|
72
|
+
description: 'space the vpn connection belongs to',
|
|
73
|
+
required: true,
|
|
74
|
+
}),
|
|
75
|
+
json: command_1.flags.boolean({ description: 'output in json format' }),
|
|
76
|
+
};
|
|
77
|
+
Info.args = {
|
|
78
|
+
name: core_1.Args.string({
|
|
79
|
+
description: 'name or id of the VPN connection to get info from',
|
|
80
|
+
required: true,
|
|
81
|
+
}),
|
|
82
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Command } from '@heroku-cli/command';
|
|
2
|
+
export default class Update extends Command {
|
|
3
|
+
static topic: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static flags: {
|
|
6
|
+
cidrs: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
static example: string;
|
|
10
|
+
static args: {
|
|
11
|
+
name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 parsers_1 = require("../../../lib/spaces/parsers");
|
|
7
|
+
const tsheredoc_1 = require("tsheredoc");
|
|
8
|
+
class Update extends command_1.Command {
|
|
9
|
+
async run() {
|
|
10
|
+
const { flags, args } = await this.parse(Update);
|
|
11
|
+
const { space, cidrs } = flags;
|
|
12
|
+
const { name } = args;
|
|
13
|
+
const parsedCidrs = (0, parsers_1.splitCsv)(cidrs);
|
|
14
|
+
core_1.ux.action.start(`Updating VPN Connection in space ${color_1.default.green(space)}`);
|
|
15
|
+
await this.heroku.patch(`/spaces/${space}/vpn-connections/${name}`, { body: { routable_cidrs: parsedCidrs } });
|
|
16
|
+
core_1.ux.action.stop();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.default = Update;
|
|
20
|
+
Update.topic = 'spaces';
|
|
21
|
+
Update.description = (0, tsheredoc_1.default) `
|
|
22
|
+
update VPN
|
|
23
|
+
Private Spaces can be connected to another private network via an IPSec VPN connection allowing dynos to connect to hosts on your private networks and vice versa.
|
|
24
|
+
The connection is established over the public Internet but all traffic is encrypted using IPSec.
|
|
25
|
+
`;
|
|
26
|
+
Update.flags = {
|
|
27
|
+
cidrs: command_1.flags.string({ char: 'c', description: 'a list of routable CIDRs separated by commas', required: true }),
|
|
28
|
+
space: command_1.flags.string({ char: 's', description: 'space name', required: true }),
|
|
29
|
+
};
|
|
30
|
+
Update.example = (0, tsheredoc_1.default) `
|
|
31
|
+
$ heroku spaces:vpn:update office --space my-space --cidrs 172.16.0.0/16,10.0.0.0/24
|
|
32
|
+
Updating VPN Connection in space my-space... done
|
|
33
|
+
`;
|
|
34
|
+
Update.args = {
|
|
35
|
+
name: core_1.Args.string({ required: true }),
|
|
36
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
space: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
7
|
+
name: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
interval: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
10
|
+
timeout: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|