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,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AmbiguousError = exports.NotFound = exports.resolveAddon = exports.attachmentResolver = exports.appAttachment = exports.addonResolver = exports.appAddon = void 0;
|
|
4
|
+
const http_call_1 = require("http-call");
|
|
5
|
+
const api_client_1 = require("@heroku-cli/command/lib/api-client");
|
|
6
|
+
const addonHeaders = {
|
|
7
|
+
Accept: 'application/vnd.heroku+json; version=3.actions',
|
|
8
|
+
'Accept-Expansion': 'addon_service,plan',
|
|
9
|
+
};
|
|
10
|
+
const appAddon = async function (heroku, app, id, options = {}) {
|
|
11
|
+
const response = await heroku.post('/actions/addons/resolve', {
|
|
12
|
+
headers: addonHeaders,
|
|
13
|
+
body: { app: app, addon: id, addon_service: options.addon_service },
|
|
14
|
+
});
|
|
15
|
+
return singularize('addon', options.namespace)(response === null || response === void 0 ? void 0 : response.body);
|
|
16
|
+
};
|
|
17
|
+
exports.appAddon = appAddon;
|
|
18
|
+
const handleNotFound = function (err, resource) {
|
|
19
|
+
if (err.statusCode === 404 && err.body && err.body.resource === resource) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
throw err;
|
|
23
|
+
};
|
|
24
|
+
const addonResolver = async (heroku, app, id, options) => {
|
|
25
|
+
const getAddon = async (addonId) => {
|
|
26
|
+
const response = await heroku.post('/actions/addons/resolve', {
|
|
27
|
+
headers: addonHeaders,
|
|
28
|
+
body: { app: null, addon: addonId, addon_service: options === null || options === void 0 ? void 0 : options.addon_service },
|
|
29
|
+
});
|
|
30
|
+
return singularize('addon', (options === null || options === void 0 ? void 0 : options.namespace) || '')(response === null || response === void 0 ? void 0 : response.body);
|
|
31
|
+
};
|
|
32
|
+
if (!app || id.includes('::')) {
|
|
33
|
+
return getAddon(id);
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return await (0, exports.appAddon)(heroku, app, id, options);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof http_call_1.HTTPError && handleNotFound(error, 'add_on')) {
|
|
40
|
+
return getAddon(id);
|
|
41
|
+
}
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.addonResolver = addonResolver;
|
|
46
|
+
// -----------------------------------------------------
|
|
47
|
+
// Attachment resolver functions
|
|
48
|
+
// originating from `packages/addons-v5/lib/resolve.js`
|
|
49
|
+
// -----------------------------------------------------
|
|
50
|
+
const filter = function (app, addonService) {
|
|
51
|
+
return (attachments) => {
|
|
52
|
+
return attachments.filter(attachment => {
|
|
53
|
+
var _a, _b;
|
|
54
|
+
if (((_a = attachment === null || attachment === void 0 ? void 0 : attachment.app) === null || _a === void 0 ? void 0 : _a.name) !== app) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return !(addonService && ((_b = attachment === null || attachment === void 0 ? void 0 : attachment.addon_service) === null || _b === void 0 ? void 0 : _b.name) !== addonService);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
const attachmentHeaders = {
|
|
62
|
+
Accept: 'application/vnd.heroku+json; version=3.actions',
|
|
63
|
+
'Accept-Inclusion': 'addon:plan,config_vars',
|
|
64
|
+
};
|
|
65
|
+
const appAttachment = async (heroku, app, id, options = {}) => {
|
|
66
|
+
const result = await heroku.post('/actions/addon-attachments/resolve', {
|
|
67
|
+
headers: attachmentHeaders, body: { app, addon_attachment: id, addon_service: options.addon_service },
|
|
68
|
+
});
|
|
69
|
+
return singularize('addon_attachment', options.namespace)(result.body);
|
|
70
|
+
};
|
|
71
|
+
exports.appAttachment = appAttachment;
|
|
72
|
+
const attachmentResolver = async (heroku, app, id, options = {}) => {
|
|
73
|
+
async function getAttachment(id) {
|
|
74
|
+
try {
|
|
75
|
+
const result = await heroku.post('/actions/addon-attachments/resolve', {
|
|
76
|
+
headers: attachmentHeaders, body: { app: null, addon_attachment: id, addon_service: options.addon_service },
|
|
77
|
+
});
|
|
78
|
+
return singularize('addon_attachment', options.namespace || '')(result.body);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error instanceof api_client_1.HerokuAPIError) {
|
|
82
|
+
handleNotFound(error.http, 'add_on attachment');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async function getAppAddonAttachment(addon, app) {
|
|
87
|
+
var _a;
|
|
88
|
+
try {
|
|
89
|
+
const result = await heroku.get(`/addons/${encodeURIComponent((_a = addon.id) !== null && _a !== void 0 ? _a : '')}/addon-attachments`, { headers: attachmentHeaders });
|
|
90
|
+
const matches = filter(app, options.addon_service)(result.body);
|
|
91
|
+
return singularize('addon_attachment', options.namespace)(matches);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const err = error instanceof api_client_1.HerokuAPIError ? error.http : error;
|
|
95
|
+
handleNotFound(err, 'add_on attachment');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// first check to see if there is an attachment matching this app/id combo
|
|
99
|
+
try {
|
|
100
|
+
const attachment = await (!app || id.includes('::') ? getAttachment(id) : (0, exports.appAttachment)(heroku, app, id, options));
|
|
101
|
+
if (attachment) {
|
|
102
|
+
return attachment;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (_a) { }
|
|
106
|
+
// if no attachment, look up an add-on that matches the id
|
|
107
|
+
// If we were passed an add-on slug, there still could be an attachment
|
|
108
|
+
// to the context app. Try to find and use it so `context_app` is set
|
|
109
|
+
// correctly in the SSO payload.
|
|
110
|
+
if (app) {
|
|
111
|
+
try {
|
|
112
|
+
const addon = await resolveAddon(heroku, app, id, options);
|
|
113
|
+
return await getAppAddonAttachment(addon, app);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
const err = error instanceof api_client_1.HerokuAPIError ? error.http : error;
|
|
117
|
+
handleNotFound(err, 'add_on attachment');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
exports.attachmentResolver = attachmentResolver;
|
|
122
|
+
// -----------------------------------------------------
|
|
123
|
+
// END
|
|
124
|
+
// -----------------------------------------------------
|
|
125
|
+
const addonResolverMap = new Map();
|
|
126
|
+
async function resolveAddon(...args) {
|
|
127
|
+
var _a;
|
|
128
|
+
const [, app, id, options] = args;
|
|
129
|
+
const key = `${app}|${id}|${(_a = options === null || options === void 0 ? void 0 : options.addon_service) !== null && _a !== void 0 ? _a : ''}`;
|
|
130
|
+
const promise = addonResolverMap.get(key) || (0, exports.addonResolver)(...args);
|
|
131
|
+
try {
|
|
132
|
+
await promise;
|
|
133
|
+
addonResolverMap.has(key) || addonResolverMap.set(key, promise);
|
|
134
|
+
}
|
|
135
|
+
catch (_b) {
|
|
136
|
+
addonResolverMap.delete(key);
|
|
137
|
+
}
|
|
138
|
+
return promise;
|
|
139
|
+
}
|
|
140
|
+
exports.resolveAddon = resolveAddon;
|
|
141
|
+
resolveAddon.cache = addonResolverMap;
|
|
142
|
+
class NotFound extends Error {
|
|
143
|
+
constructor() {
|
|
144
|
+
super(...arguments);
|
|
145
|
+
this.statusCode = 404;
|
|
146
|
+
this.message = 'Couldn\'t find that addon.';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.NotFound = NotFound;
|
|
150
|
+
class AmbiguousError extends Error {
|
|
151
|
+
constructor(matches, type) {
|
|
152
|
+
super();
|
|
153
|
+
this.matches = matches;
|
|
154
|
+
this.type = type;
|
|
155
|
+
this.statusCode = 422;
|
|
156
|
+
this.body = { id: 'multiple_matches', message: this.message };
|
|
157
|
+
this.message = `Ambiguous identifier; multiple matching add-ons found: ${matches.map(match => match.name).join(', ')}.`;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.AmbiguousError = AmbiguousError;
|
|
161
|
+
function singularize(type, namespace) {
|
|
162
|
+
return (matches) => {
|
|
163
|
+
if (namespace) {
|
|
164
|
+
matches = matches.filter(m => m.namespace === namespace);
|
|
165
|
+
}
|
|
166
|
+
else if (matches.length > 1) {
|
|
167
|
+
// In cases that aren't specific enough, filter by namespace
|
|
168
|
+
matches = matches.filter(m => !Reflect.has(m, 'namespace') || m.namespace === null);
|
|
169
|
+
}
|
|
170
|
+
switch (matches.length) {
|
|
171
|
+
case 0:
|
|
172
|
+
throw new NotFound();
|
|
173
|
+
case 1:
|
|
174
|
+
return matches[0];
|
|
175
|
+
default:
|
|
176
|
+
throw new AmbiguousError(matches, type !== null && type !== void 0 ? type : '');
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Heroku from '@heroku-cli/schema';
|
|
2
|
+
export declare const trapConfirmationRequired: <T>(app: string, confirm: string | undefined, fn: (confirmed?: string) => Promise<T>) => Promise<T>;
|
|
3
|
+
export declare const formatPrice: ({ price, hourly }: {
|
|
4
|
+
price: Heroku.AddOn['price'] | number;
|
|
5
|
+
hourly?: boolean | undefined;
|
|
6
|
+
}) => any;
|
|
7
|
+
export declare const formatPriceText: (price: Heroku.AddOn['price']) => string;
|
|
8
|
+
export declare const grandfatheredPrice: (addon: Heroku.AddOn) => any;
|
|
9
|
+
export declare const formatState: (state: string) => string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatState = exports.grandfatheredPrice = exports.formatPriceText = exports.formatPrice = exports.trapConfirmationRequired = void 0;
|
|
4
|
+
const confirmCommand_1 = require("../confirmCommand");
|
|
5
|
+
const color_1 = require("@heroku-cli/color");
|
|
6
|
+
const printf = require('printf');
|
|
7
|
+
const trapConfirmationRequired = async function (app, confirm, fn) {
|
|
8
|
+
return await fn(confirm)
|
|
9
|
+
.catch((error) => {
|
|
10
|
+
if (!error.body || error.body.id !== 'confirmation_required')
|
|
11
|
+
throw error;
|
|
12
|
+
return (0, confirmCommand_1.default)(app, confirm, error.body.message)
|
|
13
|
+
.then(() => fn(app));
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
exports.trapConfirmationRequired = trapConfirmationRequired;
|
|
17
|
+
// This function assumes that price.cents will reflect price per month.
|
|
18
|
+
// If the API returns any unit other than month
|
|
19
|
+
// this function will need to be updated.
|
|
20
|
+
const formatPrice = function ({ price, hourly }) {
|
|
21
|
+
if (!price)
|
|
22
|
+
return;
|
|
23
|
+
if (price.contract)
|
|
24
|
+
return 'contract';
|
|
25
|
+
if (price.cents === 0)
|
|
26
|
+
return 'free';
|
|
27
|
+
// we are using a standardized 720 hours/month
|
|
28
|
+
if (hourly)
|
|
29
|
+
return `~$${((price.cents / 100) / 720).toFixed(3)}/hour`;
|
|
30
|
+
const fmt = price.cents % 100 === 0 ? '$%.0f/%s' : '$%.02f/%s';
|
|
31
|
+
return printf(fmt, price.cents / 100, price.unit);
|
|
32
|
+
};
|
|
33
|
+
exports.formatPrice = formatPrice;
|
|
34
|
+
const formatPriceText = function (price) {
|
|
35
|
+
const priceHourly = (0, exports.formatPrice)({ price, hourly: true });
|
|
36
|
+
const priceMonthly = (0, exports.formatPrice)({ price, hourly: false });
|
|
37
|
+
if (!priceHourly)
|
|
38
|
+
return '';
|
|
39
|
+
if (priceHourly === 'free' || priceHourly === 'contract')
|
|
40
|
+
return `${color_1.default.green(priceHourly)}`;
|
|
41
|
+
return `${color_1.default.green(priceHourly)} (max ${priceMonthly})`;
|
|
42
|
+
};
|
|
43
|
+
exports.formatPriceText = formatPriceText;
|
|
44
|
+
const grandfatheredPrice = function (addon) {
|
|
45
|
+
var _a, _b, _c;
|
|
46
|
+
const price = (_a = addon.plan) === null || _a === void 0 ? void 0 : _a.price;
|
|
47
|
+
return Object.assign({}, price, {
|
|
48
|
+
cents: (_b = addon.billed_price) === null || _b === void 0 ? void 0 : _b.cents,
|
|
49
|
+
contract: (_c = addon.billed_price) === null || _c === void 0 ? void 0 : _c.contract,
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
exports.grandfatheredPrice = grandfatheredPrice;
|
|
53
|
+
const formatState = function (state) {
|
|
54
|
+
switch (state) {
|
|
55
|
+
case 'provisioned':
|
|
56
|
+
state = 'created';
|
|
57
|
+
break;
|
|
58
|
+
case 'provisioning':
|
|
59
|
+
state = 'creating';
|
|
60
|
+
break;
|
|
61
|
+
case 'deprovisioning':
|
|
62
|
+
state = 'destroying';
|
|
63
|
+
break;
|
|
64
|
+
case 'deprovisioned':
|
|
65
|
+
state = 'errored';
|
|
66
|
+
break;
|
|
67
|
+
default:
|
|
68
|
+
state = '';
|
|
69
|
+
}
|
|
70
|
+
return state;
|
|
71
|
+
};
|
|
72
|
+
exports.formatState = formatState;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { APIClient } from '@heroku-cli/command';
|
|
2
|
+
declare type Options = {
|
|
3
|
+
heroku: APIClient;
|
|
4
|
+
appName: string;
|
|
5
|
+
recipient: string;
|
|
6
|
+
personalToPersonal: boolean;
|
|
7
|
+
bulk: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const appTransfer: (options: Options) => Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appTransfer = void 0;
|
|
4
|
+
const color_1 = require("@heroku-cli/color");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const getRequestOpts = (options) => {
|
|
7
|
+
const { appName, bulk, recipient, personalToPersonal } = options;
|
|
8
|
+
const isPersonalToPersonal = personalToPersonal || personalToPersonal === undefined;
|
|
9
|
+
const requestOpts = isPersonalToPersonal ?
|
|
10
|
+
{
|
|
11
|
+
body: { app: appName, recipient },
|
|
12
|
+
transferMsg: `Initiating transfer of ${color_1.color.app(appName)}`,
|
|
13
|
+
path: '/account/app-transfers',
|
|
14
|
+
method: 'POST',
|
|
15
|
+
} : {
|
|
16
|
+
body: { owner: recipient },
|
|
17
|
+
transferMsg: `Transferring ${color_1.color.app(appName)}`,
|
|
18
|
+
path: `/teams/apps/${appName}`,
|
|
19
|
+
method: 'PATCH',
|
|
20
|
+
};
|
|
21
|
+
if (!bulk)
|
|
22
|
+
requestOpts.transferMsg += ` to ${color_1.color.magenta(recipient)}`;
|
|
23
|
+
return requestOpts;
|
|
24
|
+
};
|
|
25
|
+
const appTransfer = async (options) => {
|
|
26
|
+
const { body, transferMsg, path, method } = getRequestOpts(options);
|
|
27
|
+
core_1.ux.action.start(transferMsg);
|
|
28
|
+
const { body: request } = await options.heroku.request(path, {
|
|
29
|
+
method,
|
|
30
|
+
body,
|
|
31
|
+
});
|
|
32
|
+
const message = request.state === 'pending' ? 'email sent' : undefined;
|
|
33
|
+
core_1.ux.action.stop(message);
|
|
34
|
+
};
|
|
35
|
+
exports.appTransfer = appTransfer;
|
|
@@ -9,6 +9,10 @@ export declare const DynoSizeCompletion: Completion;
|
|
|
9
9
|
export declare const FileCompletion: Completion;
|
|
10
10
|
export declare const PipelineCompletion: Completion;
|
|
11
11
|
export declare const ProcessTypeCompletion: Completion;
|
|
12
|
+
export declare const ProtocolCompletion: {
|
|
13
|
+
cacheDuration: number;
|
|
14
|
+
options: () => Promise<string[]>;
|
|
15
|
+
};
|
|
12
16
|
export declare const RegionCompletion: Completion;
|
|
13
17
|
export declare const RemoteCompletion: Completion;
|
|
14
18
|
export declare const RoleCompletion: Completion;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CompletionLookup = exports.CompletionMapping = exports.TeamCompletion = exports.StageCompletion = exports.StackCompletion = exports.SpaceCompletion = exports.ScopeCompletion = exports.RoleCompletion = exports.RemoteCompletion = exports.RegionCompletion = exports.ProcessTypeCompletion = exports.PipelineCompletion = exports.FileCompletion = exports.DynoSizeCompletion = exports.BuildpackCompletion = exports.AppDynoCompletion = exports.AppAddonCompletion = exports.AppCompletion = exports.herokuGet = exports.oneDay = void 0;
|
|
3
|
+
exports.CompletionLookup = exports.CompletionMapping = exports.TeamCompletion = exports.StageCompletion = exports.StackCompletion = exports.SpaceCompletion = exports.ScopeCompletion = exports.RoleCompletion = exports.RemoteCompletion = exports.RegionCompletion = exports.ProtocolCompletion = exports.ProcessTypeCompletion = exports.PipelineCompletion = exports.FileCompletion = exports.DynoSizeCompletion = exports.BuildpackCompletion = exports.AppDynoCompletion = exports.AppAddonCompletion = exports.AppCompletion = exports.herokuGet = exports.oneDay = void 0;
|
|
4
4
|
const command_1 = require("@heroku-cli/command");
|
|
5
5
|
const deps_1 = require("@heroku-cli/command/lib/deps");
|
|
6
6
|
const git_1 = require("@heroku-cli/command/lib/git");
|
|
@@ -138,6 +138,11 @@ exports.ProcessTypeCompletion = {
|
|
|
138
138
|
return types;
|
|
139
139
|
},
|
|
140
140
|
};
|
|
141
|
+
exports.ProtocolCompletion = {
|
|
142
|
+
cacheDuration: 60 * 60 * 24 * 365, options: async () => {
|
|
143
|
+
return ['tcp', 'udp', 'icmp', '0-255', 'any'];
|
|
144
|
+
},
|
|
145
|
+
};
|
|
141
146
|
exports.RegionCompletion = {
|
|
142
147
|
cacheDuration: exports.oneDay * 7,
|
|
143
148
|
options: async (ctx) => {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.displayCertificateDetails = void 0;
|
|
4
|
+
const format_date_1 = require("./format_date");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const color_1 = require("@heroku-cli/color");
|
|
7
|
+
const displayCertificateDetails = function (sniEndpoint, message = 'Certificate details:') {
|
|
8
|
+
const now = new Date();
|
|
9
|
+
const autoRenewsAt = new Date(sniEndpoint.ssl_cert.expires_at);
|
|
10
|
+
autoRenewsAt.setMonth(autoRenewsAt.getMonth() - 1);
|
|
11
|
+
if (sniEndpoint.app && sniEndpoint.ssl_cert.acm && autoRenewsAt > now) {
|
|
12
|
+
core_1.ux.log(`Renewal scheduled for ${color_1.color.green((0, format_date_1.default)(autoRenewsAt.toString()))}.\n`);
|
|
13
|
+
}
|
|
14
|
+
core_1.ux.log(message);
|
|
15
|
+
const tableObject = {
|
|
16
|
+
'Common Name(s)': sniEndpoint.ssl_cert.cert_domains,
|
|
17
|
+
'Expires At': (0, format_date_1.default)(sniEndpoint.ssl_cert.expires_at),
|
|
18
|
+
Issuer: sniEndpoint.ssl_cert.issuer,
|
|
19
|
+
'Starts At': (0, format_date_1.default)(sniEndpoint.ssl_cert.starts_at),
|
|
20
|
+
Subject: sniEndpoint.ssl_cert.subject,
|
|
21
|
+
};
|
|
22
|
+
// Only displays domains when the list of ids was replaced by the list of hostnames
|
|
23
|
+
if (sniEndpoint.domains.length > 0 && !sniEndpoint.domains.some(domain => domain.match('^[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}'))) {
|
|
24
|
+
tableObject['Domain(s)'] = sniEndpoint.domains;
|
|
25
|
+
}
|
|
26
|
+
core_1.ux.styledObject(tableObject);
|
|
27
|
+
if (sniEndpoint.ssl_cert['ca_signed?']) {
|
|
28
|
+
core_1.ux.log('SSL certificate is verified by a root authority.');
|
|
29
|
+
}
|
|
30
|
+
else if (sniEndpoint.ssl_cert.issuer === sniEndpoint.ssl_cert.subject) {
|
|
31
|
+
core_1.ux.log('SSL certificate is self signed.');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
core_1.ux.log('SSL certificate is not trusted.');
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.displayCertificateDetails = displayCertificateDetails;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const format_date_1 = require("./format_date");
|
|
5
|
+
function type(endpoint) {
|
|
6
|
+
if (endpoint.ssl_cert && endpoint.ssl_cert.acm) {
|
|
7
|
+
return 'ACM';
|
|
8
|
+
}
|
|
9
|
+
return 'SNI';
|
|
10
|
+
}
|
|
11
|
+
function default_1(endpoints) {
|
|
12
|
+
const mapped = endpoints
|
|
13
|
+
.filter(endpoint => endpoint.ssl_cert)
|
|
14
|
+
.map(endpoint => {
|
|
15
|
+
const tableContents = {
|
|
16
|
+
name: endpoint.name,
|
|
17
|
+
expires_at: endpoint.ssl_cert.expires_at,
|
|
18
|
+
ca_signed: endpoint.ssl_cert['ca_signed?'],
|
|
19
|
+
type: type(endpoint),
|
|
20
|
+
common_names: endpoint.ssl_cert.cert_domains.join(', '),
|
|
21
|
+
display_name: endpoint.display_name,
|
|
22
|
+
};
|
|
23
|
+
// If they're using ACM it's not really worth showing the number of associated domains since
|
|
24
|
+
// it'll always be 1 and is entirely outside the user's control
|
|
25
|
+
if (!endpoint.ssl_cert.acm) {
|
|
26
|
+
tableContents.associated_domains = endpoint.domains.length > 0 ? endpoint.domains.length : '0';
|
|
27
|
+
}
|
|
28
|
+
return tableContents;
|
|
29
|
+
});
|
|
30
|
+
const columns = {
|
|
31
|
+
name: { header: 'Name' },
|
|
32
|
+
};
|
|
33
|
+
if (endpoints.some(endpoint => endpoint.display_name)) {
|
|
34
|
+
columns.display_name = { header: 'Display Name' };
|
|
35
|
+
}
|
|
36
|
+
columns.common_names = { header: 'Common Name(s)' };
|
|
37
|
+
columns.expires_at = {
|
|
38
|
+
header: 'Expires',
|
|
39
|
+
get: ({ expires_at }) => expires_at === undefined ? '' : (0, format_date_1.default)(expires_at),
|
|
40
|
+
};
|
|
41
|
+
columns.ca_signed = {
|
|
42
|
+
header: 'Trusted',
|
|
43
|
+
get: ({ ca_signed }) => ca_signed ? 'True' : 'False',
|
|
44
|
+
};
|
|
45
|
+
columns.type = { header: 'Type' };
|
|
46
|
+
if (endpoints.some(endpoint => !endpoint.ssl_cert.acm)) {
|
|
47
|
+
columns.associated_domains = { header: 'Domains' };
|
|
48
|
+
}
|
|
49
|
+
core_1.ux.table(mapped, columns);
|
|
50
|
+
}
|
|
51
|
+
exports.default = default_1;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitForDomains = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
function customDomainCreationComplete(app, heroku) {
|
|
7
|
+
return tslib_1.__asyncGenerator(this, arguments, function* customDomainCreationComplete_1() {
|
|
8
|
+
let retries = 30;
|
|
9
|
+
while (retries--) {
|
|
10
|
+
const { body: apiDomains } = yield tslib_1.__await(heroku.get(`/apps/${app}/domains`));
|
|
11
|
+
const someNull = apiDomains.some((domain) => domain.kind === 'custom' && !domain.cname);
|
|
12
|
+
if (!someNull) {
|
|
13
|
+
yield yield tslib_1.__await(apiDomains);
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
yield tslib_1.__await(new Promise(resolve => {
|
|
17
|
+
setTimeout(resolve, 1000);
|
|
18
|
+
}));
|
|
19
|
+
yield yield tslib_1.__await(null);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async function waitForDomains(app, heroku) {
|
|
24
|
+
var e_1, _a;
|
|
25
|
+
core_1.ux.action.start('Waiting for stable domains to be created');
|
|
26
|
+
try {
|
|
27
|
+
for (var _b = tslib_1.__asyncValues(customDomainCreationComplete(app, heroku)), _c; _c = await _b.next(), !_c.done;) {
|
|
28
|
+
const apiDomains = _c.value;
|
|
29
|
+
if (apiDomains) {
|
|
30
|
+
core_1.ux.action.stop();
|
|
31
|
+
return apiDomains;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
36
|
+
finally {
|
|
37
|
+
try {
|
|
38
|
+
if (_c && !_c.done && (_a = _b.return)) await _a.call(_b);
|
|
39
|
+
}
|
|
40
|
+
finally { if (e_1) throw e_1.error; }
|
|
41
|
+
}
|
|
42
|
+
core_1.ux.action.stop('!');
|
|
43
|
+
throw new Error('Timed out while waiting for stable domains to be created');
|
|
44
|
+
}
|
|
45
|
+
exports.waitForDomains = waitForDomains;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
async function default_1(flags, heroku) {
|
|
4
|
+
if (flags.endpoint && flags.name) {
|
|
5
|
+
throw new Error('Specified both --name and --endpoint, please use just one');
|
|
6
|
+
}
|
|
7
|
+
let { body: sniEndpoints } = await heroku.get(`/apps/${flags.app}/sni-endpoints`);
|
|
8
|
+
if (sniEndpoints.length === 0) {
|
|
9
|
+
throw new Error(`${flags.app} has no SSL certificates`);
|
|
10
|
+
}
|
|
11
|
+
if (flags.endpoint) {
|
|
12
|
+
const promises = [];
|
|
13
|
+
sniEndpoints.forEach(endpoint => {
|
|
14
|
+
endpoint.domains.forEach(domain => promises.push(heroku.get(`/apps/${flags.app}/domains/${domain}`)));
|
|
15
|
+
});
|
|
16
|
+
const domains = (await Promise.all(promises)).map(({ body: domain }) => domain);
|
|
17
|
+
sniEndpoints = sniEndpoints.filter(endpoint => {
|
|
18
|
+
// This was modified from `endpoint.cname === flags.endpoint` because `cname` doesn't exist anymore in the SniEndpoint serialization.
|
|
19
|
+
// We're making the assumption that the `--endpoint` flag was being used to search by hostname (internationalized domain name).
|
|
20
|
+
return domains.some(domain => { var _a; return domain.hostname === flags.endpoint && ((_a = domain.sni_endpoint) === null || _a === void 0 ? void 0 : _a.name) === endpoint.name; });
|
|
21
|
+
});
|
|
22
|
+
if (sniEndpoints.length > 1) {
|
|
23
|
+
throw new Error('Must pass --name when more than one endpoint matches --endpoint');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (flags.name) {
|
|
27
|
+
sniEndpoints = sniEndpoints.filter(endpoint => {
|
|
28
|
+
return endpoint.name === flags.name;
|
|
29
|
+
});
|
|
30
|
+
if (sniEndpoints.length > 1) {
|
|
31
|
+
throw new Error(`More than one endpoint matches ${flags.name}, please file a support ticket`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (sniEndpoints.length > 1) {
|
|
35
|
+
throw new Error('Must pass --name when more than one endpoint');
|
|
36
|
+
}
|
|
37
|
+
if (sniEndpoints.length === 0) {
|
|
38
|
+
throw new Error('Record not found.');
|
|
39
|
+
}
|
|
40
|
+
return sniEndpoints[0];
|
|
41
|
+
}
|
|
42
|
+
exports.default = default_1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function (date: string): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const date_fns_1 = require("date-fns");
|
|
4
|
+
function getUTCDate(dateString = Date.now()) {
|
|
5
|
+
const date = new Date(dateString);
|
|
6
|
+
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
|
|
7
|
+
}
|
|
8
|
+
function default_1(date) {
|
|
9
|
+
return `${(0, date_fns_1.format)(getUTCDate(date), 'yyyy-MM-dd HH:mm')} UTC`;
|
|
10
|
+
}
|
|
11
|
+
exports.default = default_1;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCertAndKey = void 0;
|
|
4
|
+
const fs = require("node:fs/promises");
|
|
5
|
+
async function getCertAndKey(args) {
|
|
6
|
+
return {
|
|
7
|
+
crt: await fs.readFile(args.CRT, { encoding: 'utf-8' }),
|
|
8
|
+
key: await fs.readFile(args.KEY, { encoding: 'utf-8' }),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.getCertAndKey = getCertAndKey;
|
|
@@ -186,7 +186,7 @@ export interface HerokuPlatformApiOrganization {
|
|
|
186
186
|
[k: string]: any;
|
|
187
187
|
}
|
|
188
188
|
/**
|
|
189
|
-
* Pipeline repositories link a pipeline to a
|
|
189
|
+
* Pipeline repositories link a pipeline to a GitHub repository.
|
|
190
190
|
*/
|
|
191
191
|
export interface KolkrabbiApiPipelineRepositories {
|
|
192
192
|
/**
|
package/lib/lib/ci/source.js
CHANGED
|
@@ -4,11 +4,11 @@ exports.createSourceBlob = void 0;
|
|
|
4
4
|
const fs = require("async-file");
|
|
5
5
|
const core_1 = require("@oclif/core");
|
|
6
6
|
const git = require("./git");
|
|
7
|
-
const
|
|
7
|
+
const got_1 = require("got");
|
|
8
8
|
async function uploadArchive(url, filePath) {
|
|
9
|
-
const request =
|
|
9
|
+
const request = got_1.default.stream.put(url, {
|
|
10
10
|
headers: {
|
|
11
|
-
'content-length': (await fs.stat(filePath)).size,
|
|
11
|
+
'content-length': (await fs.stat(filePath)).size.toString(),
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
14
|
fs.createReadStream(filePath).pipe(request);
|
package/lib/lib/ci/test-run.js
CHANGED
|
@@ -4,9 +4,9 @@ exports.displayTestRunInfo = exports.displayAndExit = exports.waitForStates = ex
|
|
|
4
4
|
const color_1 = require("@heroku-cli/color");
|
|
5
5
|
const core_1 = require("@oclif/core");
|
|
6
6
|
const https_1 = require("https");
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
8
|
const phoenix_1 = require("phoenix");
|
|
8
9
|
const util_1 = require("util");
|
|
9
|
-
const uuid_1 = require("uuid");
|
|
10
10
|
const WebSocket = require("ws");
|
|
11
11
|
const debug = require('debug')('ci');
|
|
12
12
|
const ansiEscapes = require('ansi-escapes');
|
|
@@ -132,7 +132,7 @@ async function renderList(command, testRuns, pipeline, watchOption, jsonOption)
|
|
|
132
132
|
transport: WebSocket,
|
|
133
133
|
params: {
|
|
134
134
|
token: command.heroku.auth,
|
|
135
|
-
tab_id: `heroku-cli-${(0,
|
|
135
|
+
tab_id: `heroku-cli-${(0, node_crypto_1.randomUUID)()}`,
|
|
136
136
|
},
|
|
137
137
|
logger: (kind, msg, data) => debug(`${kind}: ${msg}\n${(0, util_1.inspect)(data)}`),
|
|
138
138
|
});
|
package/lib/lib/config/quote.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parse = exports.quote = void 0;
|
|
4
4
|
const shell = require('shell-quote');
|
|
5
|
-
// slightly
|
|
5
|
+
// slightly modified form of shell-quote to default to using single-quotes over backslashes
|
|
6
6
|
function quote(s) {
|
|
7
7
|
// eslint-disable-next-line no-useless-escape
|
|
8
8
|
if (/["\s#!$&'()*,:;<=>?@\[\\\]^`{|}]/.test(s)) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function confirmCommand(app: string, confirm?: string, message?: string): Promise<void>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const color_1 = require("@heroku-cli/color");
|
|
4
4
|
const core_1 = require("@oclif/core");
|
|
5
|
-
async function
|
|
5
|
+
async function confirmCommand(app, confirm, message) {
|
|
6
6
|
if (confirm) {
|
|
7
7
|
if (confirm === app)
|
|
8
8
|
return;
|
|
@@ -20,4 +20,4 @@ This command will affect the app ${color_1.default.bold.red(app)}`;
|
|
|
20
20
|
}
|
|
21
21
|
throw new Error(`Confirmation did not match ${color_1.default.bold.red(app)}. Aborted.`);
|
|
22
22
|
}
|
|
23
|
-
exports.default =
|
|
23
|
+
exports.default = confirmCommand;
|