heroku 11.4.0 → 11.5.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/CHANGELOG.md +130 -24
  2. package/bin/bats-test-runner.js +3 -3
  3. package/bin/run.js +1 -1
  4. package/dist/commands/access/add.js +1 -1
  5. package/dist/commands/access/index.js +1 -1
  6. package/dist/commands/access/update.js +2 -2
  7. package/dist/commands/accounts/add.js +4 -10
  8. package/dist/commands/accounts/current.js +1 -1
  9. package/dist/commands/accounts/index.js +5 -4
  10. package/dist/commands/accounts/remove.js +4 -4
  11. package/dist/commands/accounts/set.js +9 -5
  12. package/dist/commands/addons/create.js +1 -1
  13. package/dist/commands/addons/destroy.js +3 -3
  14. package/dist/commands/addons/docs.js +1 -1
  15. package/dist/commands/addons/index.js +4 -4
  16. package/dist/commands/addons/info.js +1 -1
  17. package/dist/commands/addons/plans.d.ts +5 -5
  18. package/dist/commands/addons/plans.js +10 -12
  19. package/dist/commands/addons/wait.js +1 -1
  20. package/dist/commands/apps/create.js +2 -1
  21. package/dist/commands/apps/destroy.js +7 -9
  22. package/dist/commands/apps/diff.js +14 -14
  23. package/dist/commands/apps/errors.js +8 -8
  24. package/dist/commands/apps/info.js +3 -3
  25. package/dist/commands/apps/transfer.js +2 -2
  26. package/dist/commands/auth/login.js +9 -0
  27. package/dist/commands/auth/logout.js +15 -1
  28. package/dist/commands/auth/whoami.js +1 -1
  29. package/dist/commands/authorizations/info.d.ts +3 -3
  30. package/dist/commands/authorizations/info.js +4 -4
  31. package/dist/commands/authorizations/rotate.d.ts +1 -1
  32. package/dist/commands/authorizations/rotate.js +2 -2
  33. package/dist/commands/authorizations/update.d.ts +4 -4
  34. package/dist/commands/authorizations/update.js +6 -6
  35. package/dist/commands/autocomplete/create.d.ts +17 -17
  36. package/dist/commands/autocomplete/create.js +107 -108
  37. package/dist/commands/autocomplete/doctor.d.ts +2 -2
  38. package/dist/commands/autocomplete/doctor.js +9 -10
  39. package/dist/commands/autocomplete/index.js +1 -1
  40. package/dist/commands/autocomplete/options.d.ts +7 -7
  41. package/dist/commands/autocomplete/options.js +99 -99
  42. package/dist/commands/autocomplete/script.d.ts +3 -3
  43. package/dist/commands/autocomplete/script.js +6 -6
  44. package/dist/commands/buildpacks/add.d.ts +4 -4
  45. package/dist/commands/buildpacks/add.js +8 -8
  46. package/dist/commands/buildpacks/index.js +7 -4
  47. package/dist/commands/buildpacks/info.d.ts +1 -1
  48. package/dist/commands/buildpacks/info.js +8 -8
  49. package/dist/commands/buildpacks/search.d.ts +5 -5
  50. package/dist/commands/buildpacks/search.js +8 -8
  51. package/dist/commands/buildpacks/set.d.ts +4 -4
  52. package/dist/commands/buildpacks/set.js +8 -8
  53. package/dist/commands/buildpacks/versions.d.ts +1 -1
  54. package/dist/commands/buildpacks/versions.js +12 -14
  55. package/dist/commands/certs/add.d.ts +1 -1
  56. package/dist/commands/certs/add.js +7 -7
  57. package/dist/commands/certs/auto/disable.js +1 -1
  58. package/dist/commands/certs/auto/index.js +7 -9
  59. package/dist/commands/certs/generate.d.ts +13 -13
  60. package/dist/commands/certs/generate.js +55 -57
  61. package/dist/commands/certs/index.js +1 -1
  62. package/dist/commands/certs/info.js +1 -1
  63. package/dist/commands/certs/remove.js +1 -1
  64. package/dist/commands/certs/update.js +3 -3
  65. package/dist/commands/ci/config/index.js +4 -4
  66. package/dist/commands/ci/config/unset.js +1 -1
  67. package/dist/commands/ci/debug.d.ts +1 -1
  68. package/dist/commands/ci/debug.js +15 -15
  69. package/dist/commands/ci/open.js +1 -1
  70. package/dist/commands/clients/info.js +2 -2
  71. package/dist/commands/clients/rotate.js +1 -1
  72. package/dist/commands/config/get.js +2 -2
  73. package/dist/commands/config/index.js +2 -2
  74. package/dist/commands/console.d.ts +2 -2
  75. package/dist/commands/console.js +7 -6
  76. package/dist/commands/container/login.d.ts +4 -4
  77. package/dist/commands/container/login.js +27 -26
  78. package/dist/commands/container/logout.d.ts +3 -3
  79. package/dist/commands/container/logout.js +12 -11
  80. package/dist/commands/container/pull.d.ts +1 -1
  81. package/dist/commands/container/pull.js +4 -3
  82. package/dist/commands/container/push.d.ts +1 -1
  83. package/dist/commands/container/push.js +12 -8
  84. package/dist/commands/container/release.js +3 -2
  85. package/dist/commands/container/run.d.ts +1 -1
  86. package/dist/commands/container/run.js +4 -3
  87. package/dist/commands/dashboard.js +10 -8
  88. package/dist/commands/data/maintenances/history.d.ts +1 -1
  89. package/dist/commands/data/maintenances/history.js +3 -5
  90. package/dist/commands/data/maintenances/index.d.ts +1 -1
  91. package/dist/commands/data/maintenances/index.js +2 -2
  92. package/dist/commands/data/maintenances/info.d.ts +1 -1
  93. package/dist/commands/data/maintenances/info.js +4 -4
  94. package/dist/commands/data/maintenances/run.d.ts +1 -1
  95. package/dist/commands/data/maintenances/run.js +1 -1
  96. package/dist/commands/data/maintenances/schedule.d.ts +1 -1
  97. package/dist/commands/data/maintenances/schedule.js +2 -2
  98. package/dist/commands/data/maintenances/wait.d.ts +1 -1
  99. package/dist/commands/data/maintenances/wait.js +2 -2
  100. package/dist/commands/data/maintenances/window/index.d.ts +1 -1
  101. package/dist/commands/data/maintenances/window/index.js +2 -2
  102. package/dist/commands/data/maintenances/window/update.d.ts +1 -1
  103. package/dist/commands/data/maintenances/window/update.js +2 -2
  104. package/dist/commands/data/pg/attachments/create.d.ts +1 -9
  105. package/dist/commands/data/pg/attachments/create.js +41 -135
  106. package/dist/commands/data/pg/attachments/destroy.d.ts +1 -1
  107. package/dist/commands/data/pg/attachments/destroy.js +2 -2
  108. package/dist/commands/data/pg/attachments/index.d.ts +1 -1
  109. package/dist/commands/data/pg/attachments/index.js +7 -8
  110. package/dist/commands/data/pg/create.d.ts +4 -1
  111. package/dist/commands/data/pg/create.js +114 -15
  112. package/dist/commands/data/pg/credentials/create.d.ts +1 -1
  113. package/dist/commands/data/pg/credentials/create.js +1 -1
  114. package/dist/commands/data/pg/credentials/destroy.d.ts +1 -1
  115. package/dist/commands/data/pg/credentials/destroy.js +8 -4
  116. package/dist/commands/data/pg/credentials/index.d.ts +1 -1
  117. package/dist/commands/data/pg/credentials/index.js +10 -14
  118. package/dist/commands/data/pg/credentials/rotate.d.ts +1 -1
  119. package/dist/commands/data/pg/credentials/rotate.js +12 -17
  120. package/dist/commands/data/pg/credentials/url.d.ts +1 -1
  121. package/dist/commands/data/pg/credentials/url.js +3 -3
  122. package/dist/commands/data/pg/destroy.d.ts +1 -1
  123. package/dist/commands/data/pg/destroy.js +3 -3
  124. package/dist/commands/data/pg/docs.d.ts +1 -1
  125. package/dist/commands/data/pg/docs.js +2 -2
  126. package/dist/commands/data/pg/fork.d.ts +1 -1
  127. package/dist/commands/data/pg/fork.js +4 -4
  128. package/dist/commands/data/pg/info.d.ts +1 -1
  129. package/dist/commands/data/pg/info.js +18 -14
  130. package/dist/commands/data/pg/levels.d.ts +1 -1
  131. package/dist/commands/data/pg/levels.js +1 -1
  132. package/dist/commands/data/pg/psql.d.ts +1 -0
  133. package/dist/commands/data/pg/psql.js +19 -4
  134. package/dist/commands/data/pg/quotas/index.d.ts +1 -1
  135. package/dist/commands/data/pg/quotas/index.js +5 -5
  136. package/dist/commands/data/pg/quotas/update.d.ts +1 -1
  137. package/dist/commands/data/pg/quotas/update.js +3 -3
  138. package/dist/commands/data/pg/settings.d.ts +1 -1
  139. package/dist/commands/data/pg/settings.js +1 -1
  140. package/dist/commands/data/pg/update.d.ts +23 -1
  141. package/dist/commands/data/pg/update.js +109 -55
  142. package/dist/commands/data/pg/upgrade/run.d.ts +1 -1
  143. package/dist/commands/data/pg/upgrade/run.js +1 -1
  144. package/dist/commands/data/pg/wait.d.ts +1 -1
  145. package/dist/commands/data/pg/wait.js +1 -1
  146. package/dist/commands/domains/add.js +2 -2
  147. package/dist/commands/domains/index.js +4 -4
  148. package/dist/commands/domains/wait.d.ts +3 -3
  149. package/dist/commands/domains/wait.js +3 -3
  150. package/dist/commands/drains/index.js +2 -2
  151. package/dist/commands/features/index.d.ts +1 -1
  152. package/dist/commands/features/index.js +2 -2
  153. package/dist/commands/features/info.js +1 -1
  154. package/dist/commands/git/clone.js +3 -4
  155. package/dist/commands/git/credentials.d.ts +8 -2
  156. package/dist/commands/git/credentials.js +46 -12
  157. package/dist/commands/git/remote.js +8 -4
  158. package/dist/commands/keys/add.js +1 -1
  159. package/dist/commands/keys/index.js +1 -2
  160. package/dist/commands/labs/disable.js +8 -6
  161. package/dist/commands/labs/index.js +1 -1
  162. package/dist/commands/labs/info.js +1 -1
  163. package/dist/commands/local/index.js +1 -1
  164. package/dist/commands/mcp/start.js +1 -1
  165. package/dist/commands/members/add.d.ts +4 -4
  166. package/dist/commands/members/add.js +11 -13
  167. package/dist/commands/members/remove.js +6 -1
  168. package/dist/commands/members/set.d.ts +2 -2
  169. package/dist/commands/members/set.js +6 -6
  170. package/dist/commands/orgs/index.d.ts +2 -2
  171. package/dist/commands/orgs/index.js +2 -2
  172. package/dist/commands/pg/backups/cancel.d.ts +4 -4
  173. package/dist/commands/pg/backups/cancel.js +6 -6
  174. package/dist/commands/pg/backups/capture.js +1 -1
  175. package/dist/commands/pg/backups/delete.js +2 -2
  176. package/dist/commands/pg/backups/info.js +1 -1
  177. package/dist/commands/pg/backups/restore.js +4 -4
  178. package/dist/commands/pg/backups/unschedule.js +1 -1
  179. package/dist/commands/pg/bloat.d.ts +2 -2
  180. package/dist/commands/pg/bloat.js +4 -4
  181. package/dist/commands/pg/blocking.d.ts +2 -2
  182. package/dist/commands/pg/blocking.js +4 -4
  183. package/dist/commands/pg/connection-pooling/attach.js +1 -1
  184. package/dist/commands/pg/copy.js +3 -3
  185. package/dist/commands/pg/credentials/destroy.js +2 -2
  186. package/dist/commands/pg/credentials/repair-default.js +2 -2
  187. package/dist/commands/pg/credentials/rotate.js +1 -1
  188. package/dist/commands/pg/credentials/url.js +2 -2
  189. package/dist/commands/pg/credentials.js +8 -3
  190. package/dist/commands/pg/diagnose.d.ts +6 -6
  191. package/dist/commands/pg/diagnose.js +21 -21
  192. package/dist/commands/pg/info.d.ts +5 -5
  193. package/dist/commands/pg/info.js +40 -37
  194. package/dist/commands/pg/kill.d.ts +6 -6
  195. package/dist/commands/pg/kill.js +9 -11
  196. package/dist/commands/pg/killall.d.ts +4 -4
  197. package/dist/commands/pg/killall.js +6 -6
  198. package/dist/commands/pg/links/create.js +2 -2
  199. package/dist/commands/pg/links/destroy.js +2 -2
  200. package/dist/commands/pg/links/index.js +6 -8
  201. package/dist/commands/pg/locks.d.ts +5 -5
  202. package/dist/commands/pg/locks.js +7 -7
  203. package/dist/commands/pg/outliers.d.ts +8 -8
  204. package/dist/commands/pg/outliers.js +42 -39
  205. package/dist/commands/pg/promote.d.ts +5 -5
  206. package/dist/commands/pg/promote.js +31 -24
  207. package/dist/commands/pg/ps.d.ts +4 -4
  208. package/dist/commands/pg/ps.js +7 -7
  209. package/dist/commands/pg/psql.d.ts +6 -6
  210. package/dist/commands/pg/psql.js +8 -8
  211. package/dist/commands/pg/pull.js +5 -5
  212. package/dist/commands/pg/push.js +3 -3
  213. package/dist/commands/pg/reset.js +2 -2
  214. package/dist/commands/pg/settings/auto-explain/log-analyze.d.ts +4 -4
  215. package/dist/commands/pg/settings/auto-explain/log-analyze.js +6 -6
  216. package/dist/commands/pg/settings/auto-explain/log-buffers.d.ts +2 -2
  217. package/dist/commands/pg/settings/auto-explain/log-buffers.js +6 -6
  218. package/dist/commands/pg/settings/auto-explain/log-format.d.ts +2 -2
  219. package/dist/commands/pg/settings/auto-explain/log-format.js +8 -8
  220. package/dist/commands/pg/settings/auto-explain/log-min-duration.d.ts +2 -2
  221. package/dist/commands/pg/settings/auto-explain/log-min-duration.js +6 -6
  222. package/dist/commands/pg/settings/auto-explain/log-nested-statements.d.ts +2 -2
  223. package/dist/commands/pg/settings/auto-explain/log-nested-statements.js +1 -1
  224. package/dist/commands/pg/settings/auto-explain/log-triggers.d.ts +4 -4
  225. package/dist/commands/pg/settings/auto-explain/log-triggers.js +6 -6
  226. package/dist/commands/pg/settings/auto-explain/log-verbose.d.ts +7 -7
  227. package/dist/commands/pg/settings/auto-explain/log-verbose.js +8 -8
  228. package/dist/commands/pg/settings/auto-explain.d.ts +6 -6
  229. package/dist/commands/pg/settings/auto-explain.js +5 -5
  230. package/dist/commands/pg/settings/data-connector-details-logs.d.ts +5 -5
  231. package/dist/commands/pg/settings/data-connector-details-logs.js +4 -4
  232. package/dist/commands/pg/settings/index.d.ts +4 -4
  233. package/dist/commands/pg/settings/index.js +9 -9
  234. package/dist/commands/pg/settings/log-connections.d.ts +6 -6
  235. package/dist/commands/pg/settings/log-connections.js +5 -5
  236. package/dist/commands/pg/settings/log-lock-waits.d.ts +3 -3
  237. package/dist/commands/pg/settings/log-lock-waits.js +5 -5
  238. package/dist/commands/pg/settings/log-min-duration-statement.d.ts +2 -2
  239. package/dist/commands/pg/settings/log-min-duration-statement.js +4 -4
  240. package/dist/commands/pg/settings/log-min-error-statement.d.ts +2 -2
  241. package/dist/commands/pg/settings/log-min-error-statement.js +4 -4
  242. package/dist/commands/pg/settings/log-statement.d.ts +2 -2
  243. package/dist/commands/pg/settings/log-statement.js +4 -4
  244. package/dist/commands/pg/settings/track-functions.d.ts +2 -2
  245. package/dist/commands/pg/settings/track-functions.js +4 -4
  246. package/dist/commands/pg/unfollow.d.ts +5 -5
  247. package/dist/commands/pg/unfollow.js +9 -9
  248. package/dist/commands/pg/upgrade/cancel.js +2 -2
  249. package/dist/commands/pg/upgrade/dryrun.js +2 -2
  250. package/dist/commands/pg/upgrade/prepare.js +3 -3
  251. package/dist/commands/pg/upgrade/run.js +3 -3
  252. package/dist/commands/pg/upgrade/wait.js +1 -1
  253. package/dist/commands/pg/vacuum-stats.d.ts +4 -4
  254. package/dist/commands/pg/vacuum-stats.js +6 -6
  255. package/dist/commands/pg/wait.d.ts +6 -6
  256. package/dist/commands/pg/wait.js +9 -9
  257. package/dist/commands/pipelines/diff.js +2 -2
  258. package/dist/commands/pipelines/info.js +1 -1
  259. package/dist/commands/pipelines/promote.js +4 -4
  260. package/dist/commands/pipelines/setup.js +2 -2
  261. package/dist/commands/pipelines/transfer.js +1 -1
  262. package/dist/commands/ps/copy.js +1 -1
  263. package/dist/commands/ps/exec.js +6 -4
  264. package/dist/commands/ps/index.js +8 -9
  265. package/dist/commands/ps/scale.js +4 -4
  266. package/dist/commands/ps/type.js +6 -6
  267. package/dist/commands/redis/cli.d.ts +3 -3
  268. package/dist/commands/redis/cli.js +22 -22
  269. package/dist/commands/redis/maxmemory.js +1 -1
  270. package/dist/commands/redis/stats-reset.js +1 -1
  271. package/dist/commands/redis/upgrade.js +1 -1
  272. package/dist/commands/regions.js +1 -1
  273. package/dist/commands/releases/index.js +12 -6
  274. package/dist/commands/releases/info.js +8 -8
  275. package/dist/commands/releases/output.d.ts +5 -5
  276. package/dist/commands/releases/output.js +6 -6
  277. package/dist/commands/reviewapps/disable.js +0 -1
  278. package/dist/commands/reviewapps/enable.js +0 -1
  279. package/dist/commands/run/inside.d.ts +1 -1
  280. package/dist/commands/run/inside.js +5 -5
  281. package/dist/commands/spaces/create.js +3 -12
  282. package/dist/commands/spaces/destroy.js +1 -1
  283. package/dist/commands/spaces/hosts.d.ts +6 -6
  284. package/dist/commands/spaces/hosts.js +8 -8
  285. package/dist/commands/spaces/peerings/destroy.js +2 -2
  286. package/dist/commands/spaces/peerings/index.d.ts +5 -5
  287. package/dist/commands/spaces/peerings/index.js +7 -7
  288. package/dist/commands/spaces/ps.js +7 -8
  289. package/dist/commands/spaces/topology.js +7 -7
  290. package/dist/commands/spaces/trusted-ips/index.d.ts +6 -6
  291. package/dist/commands/spaces/trusted-ips/index.js +8 -8
  292. package/dist/commands/spaces/vpn/config.js +1 -1
  293. package/dist/commands/spaces/vpn/connections.js +1 -1
  294. package/dist/commands/spaces/vpn/destroy.js +1 -1
  295. package/dist/commands/spaces/vpn/info.js +3 -3
  296. package/dist/commands/spaces/vpn/update.js +1 -1
  297. package/dist/commands/status.js +8 -8
  298. package/dist/commands/teams/index.js +1 -1
  299. package/dist/commands/telemetry/add.js +3 -1
  300. package/dist/commands/telemetry/remove.d.ts +3 -3
  301. package/dist/commands/telemetry/remove.js +11 -11
  302. package/dist/commands/usage/addons.js +3 -3
  303. package/dist/commands/webhooks/deliveries/index.d.ts +1 -1
  304. package/dist/commands/webhooks/deliveries/index.js +1 -3
  305. package/dist/commands/webhooks/deliveries/info.d.ts +4 -4
  306. package/dist/commands/webhooks/deliveries/info.js +6 -8
  307. package/dist/commands/webhooks/events/info.js +1 -1
  308. package/dist/commands/webhooks/info.d.ts +4 -4
  309. package/dist/commands/webhooks/info.js +8 -8
  310. package/dist/hooks/command_not_found/setup-otel-telemetry.js +2 -2
  311. package/dist/hooks/finally/send-otel-and-sentry-errors.js +1 -1
  312. package/dist/hooks/init/setup-otel-telemetry.js +2 -2
  313. package/dist/hooks/postrun/send-otel-telemetry.js +2 -2
  314. package/dist/hooks/prerun/collect-and-send-herokulytics.js +6 -8
  315. package/dist/hooks/preupdate/check-npm-auth.js +1 -0
  316. package/dist/hooks/update/brew.js +2 -2
  317. package/dist/hooks/update/tidy.js +1 -1
  318. package/dist/lib/accounts/accounts.d.ts +25 -11
  319. package/dist/lib/accounts/accounts.js +90 -45
  320. package/dist/lib/addons/{create-addon.d.ts → create_addon.d.ts} +1 -1
  321. package/dist/lib/addons/{create-addon.js → create_addon.js} +2 -2
  322. package/dist/lib/addons/destroy_addon.d.ts +3 -0
  323. package/dist/lib/addons/{destroy-addon.js → destroy_addon.js} +14 -10
  324. package/dist/lib/addons/resolve.d.ts +1 -1
  325. package/dist/lib/addons/resolve.js +1 -2
  326. package/dist/lib/addons/util.js +9 -9
  327. package/dist/lib/analytics-telemetry/backboard-herokulytics-client.d.ts +1 -5
  328. package/dist/lib/analytics-telemetry/backboard-herokulytics-client.js +5 -22
  329. package/dist/lib/analytics-telemetry/backboard-otel-client.js +1 -1
  330. package/dist/lib/analytics-telemetry/telemetry-worker.js +2 -2
  331. package/dist/lib/analytics-telemetry/worker-client.js +9 -8
  332. package/dist/lib/apps/app-transfer.js +6 -7
  333. package/dist/lib/apps/generation.d.ts +5 -5
  334. package/dist/lib/authorizations/authorizations.js +2 -3
  335. package/dist/lib/autocomplete/base.js +1 -1
  336. package/dist/lib/autocomplete/cache.js +1 -1
  337. package/dist/lib/autocomplete/completions.d.ts +1 -1
  338. package/dist/lib/autocomplete/completions.js +6 -6
  339. package/dist/lib/buildpacks/buildpacks.js +2 -2
  340. package/dist/lib/certs/{certificate-details.d.ts → certificate_details.d.ts} +1 -1
  341. package/dist/lib/certs/{certificate-details.js → certificate_details.js} +1 -1
  342. package/dist/lib/certs/display_table.d.ts +2 -0
  343. package/dist/lib/certs/{display-table.js → display_table.js} +4 -6
  344. package/dist/lib/certs/flags.d.ts +2 -2
  345. package/dist/lib/certs/flags.js +4 -5
  346. package/dist/lib/certs/format_date.d.ts +1 -0
  347. package/dist/lib/certs/{format-date.js → format_date.js} +1 -1
  348. package/dist/lib/changelog-parser.d.ts +1 -1
  349. package/dist/lib/changelog-parser.js +4 -4
  350. package/dist/lib/ci/git.d.ts +1 -9
  351. package/dist/lib/ci/git.js +4 -18
  352. package/dist/lib/ci/interfaces/kolkrabbi.d.ts +75 -75
  353. package/dist/lib/ci/source.js +1 -1
  354. package/dist/lib/ci/test-run.js +15 -16
  355. package/dist/lib/clients/clients.js +3 -2
  356. package/dist/lib/config/quote.js +5 -5
  357. package/dist/lib/config/util.js +1 -1
  358. package/dist/lib/container/{docker-helper.js → docker_helper.js} +12 -7
  359. package/dist/lib/data/{base-command.d.ts → baseCommand.d.ts} +1 -1
  360. package/dist/lib/data/{base-command.js → baseCommand.js} +2 -2
  361. package/dist/lib/data/credentialUtils.d.ts +3 -0
  362. package/dist/lib/data/credentialUtils.js +23 -0
  363. package/dist/lib/data/{display-quota.js → displayQuota.js} +3 -3
  364. package/dist/lib/data/{pool-config.d.ts → poolConfig.d.ts} +0 -9
  365. package/dist/lib/data/{pool-config.js → poolConfig.js} +22 -127
  366. package/dist/lib/data/types.d.ts +27 -80
  367. package/dist/lib/data/types.js +0 -34
  368. package/dist/lib/data/utils.js +4 -3
  369. package/dist/lib/data-scrubber/scrubber.d.ts +4 -4
  370. package/dist/lib/data-scrubber/scrubber.js +47 -47
  371. package/dist/lib/data-scrubber/types.d.ts +14 -14
  372. package/dist/lib/git/git.d.ts +22 -9
  373. package/dist/lib/git/git.js +85 -49
  374. package/dist/lib/local/env-file-validator.js +1 -1
  375. package/dist/lib/local/fork-foreman.js +4 -4
  376. package/dist/lib/local/load-foreman-procfile.js +8 -6
  377. package/dist/lib/local/run-foreman.cjs +52 -58
  378. package/dist/lib/notify.d.ts +1 -1
  379. package/dist/lib/notify.js +8 -6
  380. package/dist/lib/npm-auth.js +2 -1
  381. package/dist/lib/pg/backups.js +24 -17
  382. package/dist/lib/pg/download.js +2 -2
  383. package/dist/lib/pg/psql.d.ts +1 -1
  384. package/dist/lib/pg/psql.js +5 -5
  385. package/dist/lib/pg/setter.d.ts +6 -6
  386. package/dist/lib/pg/setter.js +15 -16
  387. package/dist/lib/pg/types.d.ts +81 -81
  388. package/dist/lib/pg/util.d.ts +0 -19
  389. package/dist/lib/pg/util.js +5 -56
  390. package/dist/lib/pipelines/github-api.d.ts +2 -2
  391. package/dist/lib/pipelines/github-api.js +4 -4
  392. package/dist/lib/pipelines/kolkrabbi-api.d.ts +8 -8
  393. package/dist/lib/pipelines/kolkrabbi-api.js +33 -33
  394. package/dist/lib/pipelines/setup/get-name-and-repo.js +2 -2
  395. package/dist/lib/pipelines/setup/get-settings.d.ts +2 -2
  396. package/dist/lib/pipelines/setup/get-settings.js +4 -4
  397. package/dist/lib/pipelines/setup/validate.js +1 -1
  398. package/dist/lib/ps-exec/exec.js +7 -4
  399. package/dist/lib/ps-exec/ssh.js +9 -9
  400. package/dist/lib/redis/api.d.ts +2 -2
  401. package/dist/lib/redis/api.js +1 -2
  402. package/dist/lib/releases/releases.js +2 -2
  403. package/dist/lib/releases/{status-helper.d.ts → status_helper.d.ts} +1 -1
  404. package/dist/lib/repl.d.ts +8 -8
  405. package/dist/lib/repl.js +15 -16
  406. package/dist/lib/run/colorize.js +29 -30
  407. package/dist/lib/run/dyno.d.ts +4 -4
  408. package/dist/lib/run/dyno.js +19 -16
  409. package/dist/lib/run/helpers.js +3 -3
  410. package/dist/lib/run/log-displayer.js +1 -3
  411. package/dist/lib/spaces/format.js +17 -19
  412. package/dist/lib/spaces/hosts.d.ts +3 -3
  413. package/dist/lib/spaces/hosts.js +1 -3
  414. package/dist/lib/spaces/peering.js +1 -5
  415. package/dist/lib/spaces/vpn-connections.js +2 -4
  416. package/dist/lib/telemetry/util.js +2 -2
  417. package/dist/lib/types/completion.d.ts +4 -3
  418. package/dist/lib/types/domain.d.ts +1 -1
  419. package/dist/lib/types/notifications.d.ts +7 -7
  420. package/dist/lib/utils/{table-utils.js → tableUtils.js} +5 -5
  421. package/dist/lib/webhooks/base.d.ts +1 -1
  422. package/dist/lib/webhooks/base.js +2 -2
  423. package/dist/nls-data.d.ts +2 -2
  424. package/dist/nls-data.js +2 -2
  425. package/dist/nls.d.ts +1 -1
  426. package/dist/nls.js +1 -1
  427. package/npm-shrinkwrap.json +3786 -2859
  428. package/oclif.manifest.json +250 -283
  429. package/package.json +27 -21
  430. package/dist/commands/data/pg/migrate.d.ts +0 -26
  431. package/dist/commands/data/pg/migrate.js +0 -440
  432. package/dist/lib/addons/destroy-addon.d.ts +0 -3
  433. package/dist/lib/certs/display-table.d.ts +0 -2
  434. package/dist/lib/certs/format-date.d.ts +0 -1
  435. package/dist/lib/data/credential-utils.d.ts +0 -5
  436. package/dist/lib/data/credential-utils.js +0 -20
  437. package/dist/lib/data/parse-attachment-factors.d.ts +0 -28
  438. package/dist/lib/data/parse-attachment-factors.js +0 -40
  439. package/dist/lib/addons/{addons-wait.d.ts → addons_wait.d.ts} +0 -0
  440. package/dist/lib/addons/{addons-wait.js → addons_wait.js} +0 -0
  441. package/dist/lib/apps/{error-info.d.ts → error_info.d.ts} +1 -1
  442. package/dist/lib/apps/{error-info.js → error_info.js} +36 -36
  443. package/dist/lib/certs/{get-cert-and-key.d.ts → get_cert_and_key.d.ts} +0 -0
  444. package/dist/lib/certs/{get-cert-and-key.js → get_cert_and_key.js} +0 -0
  445. package/dist/lib/{confirm-command.d.ts → confirmCommand.d.ts} +0 -0
  446. package/dist/lib/{confirm-command.js → confirmCommand.js} +0 -0
  447. package/dist/lib/container/{docker-helper.d.ts → docker_helper.d.ts} +0 -0
  448. package/dist/lib/data/{create-pool.d.ts → createPool.d.ts} +0 -0
  449. package/dist/lib/data/{create-pool.js → createPool.js} +0 -0
  450. package/dist/lib/data/{display-quota.d.ts → displayQuota.d.ts} +0 -0
  451. package/dist/lib/data/{parse-provision-opts.d.ts → parseProvisionOpts.d.ts} +0 -0
  452. package/dist/lib/data/{parse-provision-opts.js → parseProvisionOpts.js} +0 -0
  453. package/dist/lib/pg/{push-pull.d.ts → push_pull.d.ts} +0 -0
  454. package/dist/lib/pg/{push-pull.js → push_pull.js} +0 -0
  455. package/dist/lib/releases/{status-helper.js → status_helper.js} +8 -8
  456. package/dist/lib/{team-utils.d.ts → teamUtils.d.ts} +0 -0
  457. package/dist/lib/{team-utils.js → teamUtils.js} +0 -0
  458. package/dist/lib/types/{app-errors.d.ts → app_errors.d.ts} +2 -2
  459. /package/dist/lib/types/{app-errors.js → app_errors.js} +0 -0
  460. /package/dist/lib/types/{app-process-tier.d.ts → app_process_tier.d.ts} +0 -0
  461. /package/dist/lib/types/{app-process-tier.js → app_process_tier.js} +0 -0
  462. /package/dist/lib/utils/{key-value-parser.d.ts → keyValueParser.d.ts} +0 -0
  463. /package/dist/lib/utils/{key-value-parser.js → keyValueParser.js} +0 -0
  464. /package/dist/lib/utils/{table-utils.d.ts → tableUtils.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -4,62 +4,168 @@ All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
6
 
7
- ## [11.4.0](https://github.com/heroku/cli/compare/v11.3.0...v11.4.0) (2026-05-13)
7
+ ## [11.5.0-alpha.4](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.4) (2026-05-21)
8
8
 
9
9
 
10
10
  ### Features
11
11
 
12
- * 'data:pg:migrate' command implementation (W-21303011) ([#3546](https://github.com/heroku/cli/issues/3546)) ([127e682](https://github.com/heroku/cli/commit/127e682e23c2798346372528f55397563ad3e505))
13
- * multi-factor attachment support for Advanced dbs (W-21632630) ([#3655](https://github.com/heroku/cli/issues/3655)) ([87785e8](https://github.com/heroku/cli/commit/87785e809fae29cc23a9c29b44b3a6f285961861))
12
+ * adds 'data:pg:upgrade:run/wait' commands (W-21304392) ([#3551](https://github.com/heroku/cli/issues/3551)) ([3297c5e](https://github.com/heroku/cli/commit/3297c5e218fe9105cd106000cba030e784d17a82))
13
+ * implement heroku git:credentials as a git credential helper ([#3683](https://github.com/heroku/cli/issues/3683)) ([781e99e](https://github.com/heroku/cli/commit/781e99e1b9c56339b1245e30087aa9b312c10e69))
14
+ * remove cached netrc account on logout ([#3710](https://github.com/heroku/cli/issues/3710)) ([b07137b](https://github.com/heroku/cli/commit/b07137bed5282a1618ae7e2b1e7f603eeb9a70be))
15
+ * update accounts and accounts:current commands to use the credential manager ([#3689](https://github.com/heroku/cli/issues/3689)) ([e753d06](https://github.com/heroku/cli/commit/e753d06407fe8ebf6f87b25131d6198d78e824e8))
16
+ * update accounts:add to use the credential manager ([#3699](https://github.com/heroku/cli/issues/3699)) ([49e3938](https://github.com/heroku/cli/commit/49e3938f44ec52451870cf24c692d440a7a69701))
17
+ * update accounts:remove to work with credential manager ([#3701](https://github.com/heroku/cli/issues/3701)) ([89d7b14](https://github.com/heroku/cli/commit/89d7b148df950429f902691c8348afc5bba07454))
18
+ * update accounts:set to work with keychain managers ([#3696](https://github.com/heroku/cli/issues/3696)) ([1f896aa](https://github.com/heroku/cli/commit/1f896aab4b23fb312d444420a06ed9d839ec8cf4))
14
19
 
15
20
 
16
21
  ### Bug Fixes
17
22
 
18
- * align ps:type with customer-facing private/shield dyno names ([#3705](https://github.com/heroku/cli/issues/3705)) ([0b36a1f](https://github.com/heroku/cli/commit/0b36a1f3c0c5ab21b3a3887787f290f62135957f))
19
- * migrate release scripts from qqjs to script-exec helpers ([#3707](https://github.com/heroku/cli/issues/3707)) ([dcbaa1b](https://github.com/heroku/cli/commit/dcbaa1b153cab52b009811df30cac80aa93c98d9))
20
- * prevent unhandled promise rejection in apps:destroy ([#3679](https://github.com/heroku/cli/issues/3679)) ([3e4c838](https://github.com/heroku/cli/commit/3e4c838ec28276ed3b3e01dd76d5f6cb78c58f19)), closes [#3677](https://github.com/heroku/cli/issues/3677) [#3677](https://github.com/heroku/cli/issues/3677) [#3677](https://github.com/heroku/cli/issues/3677)
21
- * updates @heroku-cli/command to address 2FA token prompting bug ([#3690](https://github.com/heroku/cli/issues/3690)) ([eda4459](https://github.com/heroku/cli/commit/eda4459fb8b98442d0650c1612d215c74eb2250b))
22
- * validate HEROKU_HOST for container registry commands ([#3704](https://github.com/heroku/cli/issues/3704)) ([04df827](https://github.com/heroku/cli/commit/04df8275f933c2f055a384d7deaccd524bfa5220))
23
+ * fix whoami and update heroku-cli-command and heroku-cli-util ([#3719](https://github.com/heroku/cli/issues/3719)) ([7db768f](https://github.com/heroku/cli/commit/7db768f21f0dbe04d8d422f93919bc4f6f9156c5))
24
+ * restore beforeExit handler for version commands and add comprehensive telemetry debug logging ([#3657](https://github.com/heroku/cli/issues/3657)) ([6da79cd](https://github.com/heroku/cli/commit/6da79cd4686133e1ee1f92b59127d8e012739b99))
25
+ * restore git configuration on logout ([#3697](https://github.com/heroku/cli/issues/3697)) ([5479fa5](https://github.com/heroku/cli/commit/5479fa53c75b152aece718999deee50b94b1f5ce))
23
26
 
24
27
 
25
- ### Documentation
28
+ ### Miscellaneous Chores
26
29
 
27
- * add AGENTS.md with CLI design patterns for AI agents ([#3676](https://github.com/heroku/cli/issues/3676)) ([d547ed5](https://github.com/heroku/cli/commit/d547ed5fe25e49180c41fba51b761815af6d5b3f))
30
+ * add registry-url to publish-npm ([3cab9db](https://github.com/heroku/cli/commit/3cab9db8b4caab0e59a712d51fa293d86ca67d0e))
31
+ * ensure latest version of npm CLI is installed for publish-npm ([b3d7c6d](https://github.com/heroku/cli/commit/b3d7c6dd12b6adcb5abc4896e7a7f283bb338f9e))
32
+ * go back to old release method ([13b31e1](https://github.com/heroku/cli/commit/13b31e1d855f58c9fc247efa3d21526f0378c2f5))
33
+ * update CLI analytics to use heroku credential manager ([#3685](https://github.com/heroku/cli/issues/3685)) ([5f86e4c](https://github.com/heroku/cli/commit/5f86e4cf9a6b8ca74d6ef0650abbae1f940fab7d))
34
+ * use corepack to update npm in publish-npm ([bb8903e](https://github.com/heroku/cli/commit/bb8903e8a65822b4d89411b6e9dc69a2c432b9be))
35
+ * v11.5.0-alpha.0 ([b86653b](https://github.com/heroku/cli/commit/b86653bfbf40fef5cb7f26dfe234d9a42015bc10))
28
36
 
29
37
 
30
- ### Code Refactoring
38
+ ### Tests
31
39
 
32
- * apply lint fixes to lib files ([#3668](https://github.com/heroku/cli/issues/3668)) ([eb9b040](https://github.com/heroku/cli/commit/eb9b04021ac902c196a0c216f442c7ce756179bc))
33
- * apply lint formatting to auth through features commands ([#3665](https://github.com/heroku/cli/issues/3665)) ([7e84cbf](https://github.com/heroku/cli/commit/7e84cbf2706f8edcbc0566255b71b22be64b5c32))
34
- * apply lint formatting to git through pg commands ([#3666](https://github.com/heroku/cli/issues/3666)) ([fd4c8c0](https://github.com/heroku/cli/commit/fd4c8c0eb178b76479e6ded1e8e99bc14b633af5))
35
- * apply lint formatting to remaining commands ([#3667](https://github.com/heroku/cli/issues/3667)) ([b3f11bd](https://github.com/heroku/cli/commit/b3f11bd34e8256da3b6a1198ec4845d5e03253c9))
36
- * apply lint formatting to scripts and hooks folders ([#3669](https://github.com/heroku/cli/issues/3669)) ([8a56a67](https://github.com/heroku/cli/commit/8a56a67f96e6e81603d76955ea78dbc2e1ed4433))
37
- * apply linting fixes to test helpers, fixtures, and integration tests ([#3671](https://github.com/heroku/cli/issues/3671)) ([6b96cb9](https://github.com/heroku/cli/commit/6b96cb9ed43604db8b21ff4d191dee9fed4dddb8))
38
- * migrate from qqjs to execa with custom wrapper ([#3678](https://github.com/heroku/cli/issues/3678)) ([ad81615](https://github.com/heroku/cli/commit/ad81615b2d4e6bd470be5ef10b3d35f94d8bed40))
39
- * migrate to shared eslint config and testing functions ([#3661](https://github.com/heroku/cli/issues/3661)) ([d5ad9ac](https://github.com/heroku/cli/commit/d5ad9acf0f22028475c47fb1e189022cf0374989))
40
+ * update analytics tests to use the credential manager ([#3688](https://github.com/heroku/cli/issues/3688)) ([4fde394](https://github.com/heroku/cli/commit/4fde394ac2351504a727829fd86fd647136afbc8))
40
41
 
41
- ## [11.3.0](https://github.com/heroku/cli/compare/v11.2.0...v11.3.0) (2026-04-15)
42
+ ## [11.5.0-alpha.3](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.3) (2026-05-21)
42
43
 
43
44
 
44
45
  ### Features
45
46
 
46
47
  * adds 'data:pg:upgrade:run/wait' commands (W-21304392) ([#3551](https://github.com/heroku/cli/issues/3551)) ([3297c5e](https://github.com/heroku/cli/commit/3297c5e218fe9105cd106000cba030e784d17a82))
48
+ * implement heroku git:credentials as a git credential helper ([#3683](https://github.com/heroku/cli/issues/3683)) ([781e99e](https://github.com/heroku/cli/commit/781e99e1b9c56339b1245e30087aa9b312c10e69))
49
+ * remove cached netrc account on logout ([#3710](https://github.com/heroku/cli/issues/3710)) ([b07137b](https://github.com/heroku/cli/commit/b07137bed5282a1618ae7e2b1e7f603eeb9a70be))
50
+ * update accounts and accounts:current commands to use the credential manager ([#3689](https://github.com/heroku/cli/issues/3689)) ([e753d06](https://github.com/heroku/cli/commit/e753d06407fe8ebf6f87b25131d6198d78e824e8))
51
+ * update accounts:add to use the credential manager ([#3699](https://github.com/heroku/cli/issues/3699)) ([49e3938](https://github.com/heroku/cli/commit/49e3938f44ec52451870cf24c692d440a7a69701))
52
+ * update accounts:remove to work with credential manager ([#3701](https://github.com/heroku/cli/issues/3701)) ([89d7b14](https://github.com/heroku/cli/commit/89d7b148df950429f902691c8348afc5bba07454))
53
+ * update accounts:set to work with keychain managers ([#3696](https://github.com/heroku/cli/issues/3696)) ([1f896aa](https://github.com/heroku/cli/commit/1f896aab4b23fb312d444420a06ed9d839ec8cf4))
47
54
 
48
55
 
49
56
  ### Bug Fixes
50
57
 
58
+ * fix whoami and update heroku-cli-command and heroku-cli-util ([#3719](https://github.com/heroku/cli/issues/3719)) ([7db768f](https://github.com/heroku/cli/commit/7db768f21f0dbe04d8d422f93919bc4f6f9156c5))
51
59
  * restore beforeExit handler for version commands and add comprehensive telemetry debug logging ([#3657](https://github.com/heroku/cli/issues/3657)) ([6da79cd](https://github.com/heroku/cli/commit/6da79cd4686133e1ee1f92b59127d8e012739b99))
60
+ * restore git configuration on logout ([#3697](https://github.com/heroku/cli/issues/3697)) ([5479fa5](https://github.com/heroku/cli/commit/5479fa53c75b152aece718999deee50b94b1f5ce))
52
61
 
53
62
 
54
63
  ### Miscellaneous Chores
55
64
 
56
- * remove @oclif/plugin-legacy dependency ([#3659](https://github.com/heroku/cli/issues/3659)) ([2523d48](https://github.com/heroku/cli/commit/2523d481a79f0d26ab8b6897c6b49d3e5713a218))
65
+ * add registry-url to publish-npm ([3cab9db](https://github.com/heroku/cli/commit/3cab9db8b4caab0e59a712d51fa293d86ca67d0e))
66
+ * ensure latest version of npm CLI is installed for publish-npm ([b3d7c6d](https://github.com/heroku/cli/commit/b3d7c6dd12b6adcb5abc4896e7a7f283bb338f9e))
67
+ * update CLI analytics to use heroku credential manager ([#3685](https://github.com/heroku/cli/issues/3685)) ([5f86e4c](https://github.com/heroku/cli/commit/5f86e4cf9a6b8ca74d6ef0650abbae1f940fab7d))
68
+ * use corepack to update npm in publish-npm ([bb8903e](https://github.com/heroku/cli/commit/bb8903e8a65822b4d89411b6e9dc69a2c432b9be))
69
+ * v11.5.0-alpha.0 ([b86653b](https://github.com/heroku/cli/commit/b86653bfbf40fef5cb7f26dfe234d9a42015bc10))
57
70
 
58
71
 
59
- ### Code Refactoring
72
+ ### Tests
73
+
74
+ * update analytics tests to use the credential manager ([#3688](https://github.com/heroku/cli/issues/3688)) ([4fde394](https://github.com/heroku/cli/commit/4fde394ac2351504a727829fd86fd647136afbc8))
75
+
76
+ ## [11.5.0-alpha.2](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.2) (2026-05-21)
77
+
78
+
79
+ ### Features
80
+
81
+ * adds 'data:pg:upgrade:run/wait' commands (W-21304392) ([#3551](https://github.com/heroku/cli/issues/3551)) ([3297c5e](https://github.com/heroku/cli/commit/3297c5e218fe9105cd106000cba030e784d17a82))
82
+ * implement heroku git:credentials as a git credential helper ([#3683](https://github.com/heroku/cli/issues/3683)) ([781e99e](https://github.com/heroku/cli/commit/781e99e1b9c56339b1245e30087aa9b312c10e69))
83
+ * remove cached netrc account on logout ([#3710](https://github.com/heroku/cli/issues/3710)) ([b07137b](https://github.com/heroku/cli/commit/b07137bed5282a1618ae7e2b1e7f603eeb9a70be))
84
+ * update accounts and accounts:current commands to use the credential manager ([#3689](https://github.com/heroku/cli/issues/3689)) ([e753d06](https://github.com/heroku/cli/commit/e753d06407fe8ebf6f87b25131d6198d78e824e8))
85
+ * update accounts:add to use the credential manager ([#3699](https://github.com/heroku/cli/issues/3699)) ([49e3938](https://github.com/heroku/cli/commit/49e3938f44ec52451870cf24c692d440a7a69701))
86
+ * update accounts:remove to work with credential manager ([#3701](https://github.com/heroku/cli/issues/3701)) ([89d7b14](https://github.com/heroku/cli/commit/89d7b148df950429f902691c8348afc5bba07454))
87
+ * update accounts:set to work with keychain managers ([#3696](https://github.com/heroku/cli/issues/3696)) ([1f896aa](https://github.com/heroku/cli/commit/1f896aab4b23fb312d444420a06ed9d839ec8cf4))
88
+
89
+
90
+ ### Bug Fixes
91
+
92
+ * fix whoami and update heroku-cli-command and heroku-cli-util ([#3719](https://github.com/heroku/cli/issues/3719)) ([7db768f](https://github.com/heroku/cli/commit/7db768f21f0dbe04d8d422f93919bc4f6f9156c5))
93
+ * restore beforeExit handler for version commands and add comprehensive telemetry debug logging ([#3657](https://github.com/heroku/cli/issues/3657)) ([6da79cd](https://github.com/heroku/cli/commit/6da79cd4686133e1ee1f92b59127d8e012739b99))
94
+ * restore git configuration on logout ([#3697](https://github.com/heroku/cli/issues/3697)) ([5479fa5](https://github.com/heroku/cli/commit/5479fa53c75b152aece718999deee50b94b1f5ce))
95
+
96
+
97
+ ### Miscellaneous Chores
98
+
99
+ * add registry-url to publish-npm ([3cab9db](https://github.com/heroku/cli/commit/3cab9db8b4caab0e59a712d51fa293d86ca67d0e))
100
+ * ensure latest version of npm CLI is installed for publish-npm ([b3d7c6d](https://github.com/heroku/cli/commit/b3d7c6dd12b6adcb5abc4896e7a7f283bb338f9e))
101
+ * update CLI analytics to use heroku credential manager ([#3685](https://github.com/heroku/cli/issues/3685)) ([5f86e4c](https://github.com/heroku/cli/commit/5f86e4cf9a6b8ca74d6ef0650abbae1f940fab7d))
102
+ * v11.5.0-alpha.0 ([b86653b](https://github.com/heroku/cli/commit/b86653bfbf40fef5cb7f26dfe234d9a42015bc10))
103
+
104
+
105
+ ### Tests
106
+
107
+ * update analytics tests to use the credential manager ([#3688](https://github.com/heroku/cli/issues/3688)) ([4fde394](https://github.com/heroku/cli/commit/4fde394ac2351504a727829fd86fd647136afbc8))
108
+
109
+ ## [11.5.0-alpha.1](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.1) (2026-05-21)
110
+
111
+
112
+ ### Features
113
+
114
+ * adds 'data:pg:upgrade:run/wait' commands (W-21304392) ([#3551](https://github.com/heroku/cli/issues/3551)) ([3297c5e](https://github.com/heroku/cli/commit/3297c5e218fe9105cd106000cba030e784d17a82))
115
+ * implement heroku git:credentials as a git credential helper ([#3683](https://github.com/heroku/cli/issues/3683)) ([781e99e](https://github.com/heroku/cli/commit/781e99e1b9c56339b1245e30087aa9b312c10e69))
116
+ * remove cached netrc account on logout ([#3710](https://github.com/heroku/cli/issues/3710)) ([b07137b](https://github.com/heroku/cli/commit/b07137bed5282a1618ae7e2b1e7f603eeb9a70be))
117
+ * update accounts and accounts:current commands to use the credential manager ([#3689](https://github.com/heroku/cli/issues/3689)) ([e753d06](https://github.com/heroku/cli/commit/e753d06407fe8ebf6f87b25131d6198d78e824e8))
118
+ * update accounts:add to use the credential manager ([#3699](https://github.com/heroku/cli/issues/3699)) ([49e3938](https://github.com/heroku/cli/commit/49e3938f44ec52451870cf24c692d440a7a69701))
119
+ * update accounts:remove to work with credential manager ([#3701](https://github.com/heroku/cli/issues/3701)) ([89d7b14](https://github.com/heroku/cli/commit/89d7b148df950429f902691c8348afc5bba07454))
120
+ * update accounts:set to work with keychain managers ([#3696](https://github.com/heroku/cli/issues/3696)) ([1f896aa](https://github.com/heroku/cli/commit/1f896aab4b23fb312d444420a06ed9d839ec8cf4))
121
+
122
+
123
+ ### Bug Fixes
124
+
125
+ * fix whoami and update heroku-cli-command and heroku-cli-util ([#3719](https://github.com/heroku/cli/issues/3719)) ([7db768f](https://github.com/heroku/cli/commit/7db768f21f0dbe04d8d422f93919bc4f6f9156c5))
126
+ * restore beforeExit handler for version commands and add comprehensive telemetry debug logging ([#3657](https://github.com/heroku/cli/issues/3657)) ([6da79cd](https://github.com/heroku/cli/commit/6da79cd4686133e1ee1f92b59127d8e012739b99))
127
+ * restore git configuration on logout ([#3697](https://github.com/heroku/cli/issues/3697)) ([5479fa5](https://github.com/heroku/cli/commit/5479fa53c75b152aece718999deee50b94b1f5ce))
128
+
129
+
130
+ ### Miscellaneous Chores
131
+
132
+ * update CLI analytics to use heroku credential manager ([#3685](https://github.com/heroku/cli/issues/3685)) ([5f86e4c](https://github.com/heroku/cli/commit/5f86e4cf9a6b8ca74d6ef0650abbae1f940fab7d))
133
+ * v11.5.0-alpha.0 ([b86653b](https://github.com/heroku/cli/commit/b86653bfbf40fef5cb7f26dfe234d9a42015bc10))
134
+
135
+
136
+ ### Tests
137
+
138
+ * update analytics tests to use the credential manager ([#3688](https://github.com/heroku/cli/issues/3688)) ([4fde394](https://github.com/heroku/cli/commit/4fde394ac2351504a727829fd86fd647136afbc8))
139
+
140
+ ## [11.5.0-alpha.0](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.0) (2026-05-21)
141
+
142
+
143
+ ### Features
144
+
145
+ * adds 'data:pg:upgrade:run/wait' commands (W-21304392) ([#3551](https://github.com/heroku/cli/issues/3551)) ([3297c5e](https://github.com/heroku/cli/commit/3297c5e218fe9105cd106000cba030e784d17a82))
146
+ * implement heroku git:credentials as a git credential helper ([#3683](https://github.com/heroku/cli/issues/3683)) ([781e99e](https://github.com/heroku/cli/commit/781e99e1b9c56339b1245e30087aa9b312c10e69))
147
+ * remove cached netrc account on logout ([#3710](https://github.com/heroku/cli/issues/3710)) ([b07137b](https://github.com/heroku/cli/commit/b07137bed5282a1618ae7e2b1e7f603eeb9a70be))
148
+ * update accounts and accounts:current commands to use the credential manager ([#3689](https://github.com/heroku/cli/issues/3689)) ([e753d06](https://github.com/heroku/cli/commit/e753d06407fe8ebf6f87b25131d6198d78e824e8))
149
+ * update accounts:add to use the credential manager ([#3699](https://github.com/heroku/cli/issues/3699)) ([49e3938](https://github.com/heroku/cli/commit/49e3938f44ec52451870cf24c692d440a7a69701))
150
+ * update accounts:remove to work with credential manager ([#3701](https://github.com/heroku/cli/issues/3701)) ([89d7b14](https://github.com/heroku/cli/commit/89d7b148df950429f902691c8348afc5bba07454))
151
+ * update accounts:set to work with keychain managers ([#3696](https://github.com/heroku/cli/issues/3696)) ([1f896aa](https://github.com/heroku/cli/commit/1f896aab4b23fb312d444420a06ed9d839ec8cf4))
152
+
153
+
154
+ ### Bug Fixes
155
+
156
+ * fix whoami and update heroku-cli-command and heroku-cli-util ([#3719](https://github.com/heroku/cli/issues/3719)) ([7db768f](https://github.com/heroku/cli/commit/7db768f21f0dbe04d8d422f93919bc4f6f9156c5))
157
+ * restore beforeExit handler for version commands and add comprehensive telemetry debug logging ([#3657](https://github.com/heroku/cli/issues/3657)) ([6da79cd](https://github.com/heroku/cli/commit/6da79cd4686133e1ee1f92b59127d8e012739b99))
158
+ * restore git configuration on logout ([#3697](https://github.com/heroku/cli/issues/3697)) ([5479fa5](https://github.com/heroku/cli/commit/5479fa53c75b152aece718999deee50b94b1f5ce))
159
+
160
+
161
+ ### Miscellaneous Chores
162
+
163
+ * update CLI analytics to use heroku credential manager ([#3685](https://github.com/heroku/cli/issues/3685)) ([5f86e4c](https://github.com/heroku/cli/commit/5f86e4cf9a6b8ca74d6ef0650abbae1f940fab7d))
164
+
165
+
166
+ ### Tests
60
167
 
61
- * apply lint formatting to access, accounts, addons, and apps commands ([#3664](https://github.com/heroku/cli/issues/3664)) ([5568483](https://github.com/heroku/cli/commit/5568483130be2eb90bae4096b89c164dcd1d8742))
62
- * rename lib and script files to kebab-case ([#3663](https://github.com/heroku/cli/issues/3663)) ([c6a101f](https://github.com/heroku/cli/commit/c6a101f4295425ccd362d315f8d2733d88bc6278))
168
+ * update analytics tests to use the credential manager ([#3688](https://github.com/heroku/cli/issues/3688)) ([4fde394](https://github.com/heroku/cli/commit/4fde394ac2351504a727829fd86fd647136afbc8))
63
169
 
64
170
  ## [11.2.0](https://github.com/heroku/cli/compare/v11.1.1...v11.2.0) (2026-04-08)
65
171
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import {spawn} from 'node:child_process'
4
- import os from 'node:os'
3
+ import os from 'os'
4
+ import { spawn } from 'child_process'
5
5
 
6
6
  if (os.platform() === 'win32' || os.platform() === 'windows') console.log('skipping on windows')
7
- else spawn('npx bats test/acceptance/*.bats', {shell: true, stdio: 'inherit'})
7
+ else spawn('npx bats test/acceptance/*.bats', {stdio: 'inherit', shell: true})
package/bin/run.js CHANGED
@@ -12,7 +12,7 @@ process.env.HEROKU_UPDATE_INSTRUCTIONS = process.env.HEROKU_UPDATE_INSTRUCTIONS
12
12
  const now = new Date()
13
13
  const cliStartTime = now.getTime()
14
14
 
15
- const {getTelemetryDisabledReason, isTelemetryEnabled, telemetryDebug} = await import('../dist/lib/analytics-telemetry/telemetry-utils.js')
15
+ const {isTelemetryEnabled, getTelemetryDisabledReason, telemetryDebug} = await import('../dist/lib/analytics-telemetry/telemetry-utils.js')
16
16
  const enableTelemetry = isTelemetryEnabled()
17
17
 
18
18
  if (enableTelemetry) {
@@ -1,7 +1,7 @@
1
1
  import { Command, flags } from '@heroku-cli/command';
2
2
  import * as color from '@heroku/heroku-cli-util/color';
3
3
  import { Args, ux } from '@oclif/core';
4
- import { getOwner, isTeamApp } from '../../lib/team-utils.js';
4
+ import { getOwner, isTeamApp } from '../../lib/teamUtils.js';
5
5
  export default class AccessAdd extends Command {
6
6
  static args = {
7
7
  email: Args.string({ description: 'email address of the team member', required: true }),
@@ -3,7 +3,7 @@ import { HerokuAPIError } from '@heroku-cli/command/lib/api-client.js';
3
3
  import { color, hux } from '@heroku/heroku-cli-util';
4
4
  import { ux } from '@oclif/core/ux';
5
5
  import { lazyModuleLoader } from '../../lib/lazy-module-loader.js';
6
- import { getOwner, isTeamApp } from '../../lib/team-utils.js';
6
+ import { getOwner, isTeamApp } from '../../lib/teamUtils.js';
7
7
  export default class AccessIndex extends Command {
8
8
  static description = 'list who has access to an app';
9
9
  static flags = {
@@ -1,7 +1,7 @@
1
1
  import { Command, flags } from '@heroku-cli/command';
2
2
  import * as color from '@heroku/heroku-cli-util/color';
3
3
  import { Args, ux } from '@oclif/core';
4
- import { isTeamApp } from '../../lib/team-utils.js';
4
+ import { isTeamApp } from '../../lib/teamUtils.js';
5
5
  export default class Update extends Command {
6
6
  static args = {
7
7
  email: Args.string({ description: 'email address of the team member', required: true }),
@@ -25,7 +25,7 @@ export default class Update extends Command {
25
25
  if (!isTeamApp(appInfo?.owner?.email))
26
26
  this.error(`Error: cannot update permissions. The app ${color.app(appName)} is not owned by a team`);
27
27
  permissions.push('view');
28
- permissions = [...new Set(permissions.sort())];
28
+ permissions = Array.from(new Set(permissions.sort()));
29
29
  ux.action.start(`Updating ${color.user(args.email)} in application ${color.app(appName)} with ${permissions} permissions`);
30
30
  await this.heroku.patch(`/teams/apps/${appName}/collaborators/${args.email}`, {
31
31
  body: { permissions },
@@ -11,19 +11,13 @@ export default class Add extends Command {
11
11
  async run() {
12
12
  const { args } = await this.parse(Add);
13
13
  const { name } = args;
14
- const logInMessage = 'You must be logged in to run this command.';
15
- if (AccountsModule.list().some(a => a.name === name)) {
14
+ const accounts = await AccountsModule.list();
15
+ if (accounts.some(account => account.name === name)) {
16
16
  ux.error(`${name} already exists`);
17
17
  }
18
18
  const { body: account } = await this.heroku.get('/account');
19
- const email = account.email || '';
20
- const token = this.heroku.auth || '';
21
- if (token === '') {
22
- ux.error(logInMessage);
23
- }
24
- if (email === '') {
25
- ux.error(logInMessage);
26
- }
19
+ const email = account.email;
20
+ const token = this.heroku.auth;
27
21
  AccountsModule.add(name, email, token);
28
22
  }
29
23
  }
@@ -8,7 +8,7 @@ export default class Current extends Command {
8
8
  static example = `${color.command('heroku accounts:current')}`;
9
9
  static promptFlagActive = false;
10
10
  async run() {
11
- const accountName = await AccountsModule.current();
11
+ const accountName = await AccountsModule.current(this.heroku);
12
12
  if (accountName) {
13
13
  hux.styledHeader(`Current account is ${color.user(accountName)}`);
14
14
  }
@@ -8,16 +8,17 @@ export default class AccountsIndex extends Command {
8
8
  static example = `${color.command('heroku accounts')}`;
9
9
  static promptFlagActive = false;
10
10
  async run() {
11
- const accounts = accountsModule.list();
11
+ const accounts = await accountsModule.list();
12
12
  if (accounts.length === 0) {
13
13
  ux.error('You don\'t have any accounts in your cache.');
14
14
  }
15
+ const current = await accountsModule.current(this.heroku);
15
16
  for (const account of accounts) {
16
- if (account.name === await accountsModule.current()) {
17
- ux.stdout(`* ${account.name}`);
17
+ if (account.name === current || account.username === current) {
18
+ ux.stdout(`* ${account.name ?? account.username}`);
18
19
  }
19
20
  else {
20
- ux.stdout(` ${account.name}`);
21
+ ux.stdout(` ${account.name ?? account.username}`);
21
22
  }
22
23
  }
23
24
  }
@@ -11,12 +11,12 @@ export default class Remove extends Command {
11
11
  async run() {
12
12
  const { args } = await this.parse(Remove);
13
13
  const { name } = args;
14
- if (!AccountsModule.list().some(a => a.name === name)) {
14
+ if (!(await AccountsModule.list()).some(account => account.name === name || account.username === name)) {
15
15
  ux.error(`${name} doesn't exist in your accounts cache.`);
16
16
  }
17
- if (await AccountsModule.current() === name) {
18
- ux.error(`${name} is the current account.`);
17
+ if (await AccountsModule.current(this.heroku) === name) {
18
+ ux.error(`${name} is the current account. To log out, run ${color.command('heroku logout')}.`);
19
19
  }
20
- AccountsModule.remove(name);
20
+ await AccountsModule.remove(name);
21
21
  }
22
22
  }
@@ -4,16 +4,20 @@ import { Args, ux } from '@oclif/core';
4
4
  import AccountsModule from '../../lib/accounts/accounts.js';
5
5
  export default class Set extends Command {
6
6
  static args = {
7
- name: Args.string({ description: 'name of account to set', required: true }),
7
+ name: Args.string({ description: 'name or username of account to set', required: true }),
8
8
  };
9
- static description = 'set the current Heroku account from your cache';
9
+ static description = 'set the current Heroku account from your accounts cache or system keychain';
10
10
  static example = `${color.command('heroku accounts:set my-account')}`;
11
11
  async run() {
12
12
  const { args } = await this.parse(Set);
13
13
  const { name } = args;
14
- if (!AccountsModule.list().some(a => a.name === name)) {
15
- ux.error(`${name} does not exist in your accounts cache.`);
14
+ const accounts = await AccountsModule.list();
15
+ const netrcAccount = accounts.find(account => account.name === name);
16
+ const keychainAccount = accounts.find(account => !account.name && account.username === name);
17
+ if (!netrcAccount && !keychainAccount) {
18
+ ux.error(`${name} does not exist in your accounts cache or system keychain.`);
16
19
  }
17
- AccountsModule.set(name);
20
+ const account = netrcAccount ?? keychainAccount;
21
+ await AccountsModule.set(account, this.config.dataDir);
18
22
  }
19
23
  }
@@ -2,7 +2,7 @@ import { Command, flags } from '@heroku-cli/command';
2
2
  import * as color from '@heroku/heroku-cli-util/color';
3
3
  import { Args, ux } from '@oclif/core';
4
4
  import tsheredoc from 'tsheredoc';
5
- import createAddon from '../../lib/addons/create-addon.js';
5
+ import createAddon from '../../lib/addons/create_addon.js';
6
6
  import notify from '../../lib/notify.js';
7
7
  const heredoc = tsheredoc.default;
8
8
  export default class Create extends Command {
@@ -1,9 +1,9 @@
1
- import { Command, flags } from '@heroku-cli/command';
2
1
  import { color, utils } from '@heroku/heroku-cli-util';
2
+ import { Command, flags } from '@heroku-cli/command';
3
3
  import { Args } from '@oclif/core';
4
4
  import _ from 'lodash';
5
- import destroyAddon from '../../lib/addons/destroy-addon.js';
6
- import ConfirmCommand from '../../lib/confirm-command.js';
5
+ import destroyAddon from '../../lib/addons/destroy_addon.js';
6
+ import ConfirmCommand from '../../lib/confirmCommand.js';
7
7
  import notify from '../../lib/notify.js';
8
8
  export default class Destroy extends Command {
9
9
  static args = {
@@ -1,5 +1,5 @@
1
- import { Command, flags } from '@heroku-cli/command';
2
1
  import * as color from '@heroku/heroku-cli-util/color';
2
+ import { Command, flags } from '@heroku-cli/command';
3
3
  import { Args, ux } from '@oclif/core';
4
4
  import open from 'open';
5
5
  import { resolveAddon } from '../../lib/addons/resolve.js';
@@ -3,7 +3,7 @@ import { color, hux } from '@heroku/heroku-cli-util';
3
3
  import { ux } from '@oclif/core/ux';
4
4
  import _ from 'lodash';
5
5
  import { formatPrice, formatState, grandfatheredPrice } from '../../lib/addons/util.js';
6
- import { huxTableNoWrapOptions } from '../../lib/utils/table-utils.js';
6
+ import { huxTableNoWrapOptions } from '../../lib/utils/tableUtils.js';
7
7
  const topic = 'addons';
8
8
  export default class Addons extends Command {
9
9
  static description = `Lists your add-ons and attachments.
@@ -61,7 +61,6 @@ async function addonGetter(api, app) {
61
61
  },
62
62
  });
63
63
  const sudoHeaders = JSON.parse(process.env.HEROKU_HEADERS || '{}');
64
- // eslint-disable-next-line unicorn/prefer-ternary
65
64
  if (sudoHeaders['X-Heroku-Sudo'] && !sudoHeaders['X-Heroku-Sudo-User']) {
66
65
  // because the root /addon-attachments endpoint won't include relevant
67
66
  // attachments when sudo-ing for another app, we will use the more
@@ -103,14 +102,15 @@ async function addonGetter(api, app) {
103
102
  // This is probably normal (because we are asking API for all attachments)
104
103
  // but it could also be due to certain types of permissions issues, so check
105
104
  // if the attachment looks relevant to the app, and then render whatever
106
- for (const atts of _.values(groupedAttachments)) {
105
+ _.values(groupedAttachments)
106
+ .forEach(atts => {
107
107
  const inaccessibleAddon = {
108
108
  addon_service: {}, app: atts[0].addon.app, attachments: atts, name: atts[0].addon.name, plan: {},
109
109
  };
110
110
  if (isRelevantToApp(inaccessibleAddon)) {
111
111
  addons.push(inaccessibleAddon);
112
112
  }
113
- }
113
+ });
114
114
  return addons;
115
115
  }
116
116
  function displayAll(addons, noWrap = false) {
@@ -1,5 +1,5 @@
1
- import { Command, flags } from '@heroku-cli/command';
2
1
  import { color, hux } from '@heroku/heroku-cli-util';
2
+ import { Command, flags } from '@heroku-cli/command';
3
3
  import { Args } from '@oclif/core';
4
4
  import { resolveAddon } from '../../lib/addons/resolve.js';
5
5
  import { formatPrice, formatState, grandfatheredPrice } from '../../lib/addons/util.js';
@@ -1,13 +1,13 @@
1
1
  import { Command } from '@heroku-cli/command';
2
2
  export default class Plans extends Command {
3
- static args: {
4
- service: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
- };
3
+ static topic: string;
6
4
  static description: string;
7
5
  static flags: {
8
6
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
7
  };
10
- static topic: string;
11
- run(): Promise<void>;
8
+ static args: {
9
+ service: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ };
12
11
  private printMeteredPricingURL;
12
+ run(): Promise<void>;
13
13
  }
@@ -1,20 +1,23 @@
1
1
  import { Command, flags } from '@heroku-cli/command';
2
- import { hux } from '@heroku/heroku-cli-util';
3
2
  import { Args } from '@oclif/core';
3
+ import { hux } from '@heroku/heroku-cli-util';
4
+ import { formatPrice } from '../../lib/addons/util.js';
4
5
  import _ from 'lodash';
5
6
  import printf from 'printf';
6
- import { formatPrice } from '../../lib/addons/util.js';
7
7
  export default class Plans extends Command {
8
- static args = {
9
- service: Args.string({ description: 'unique identifier or globally unique name of the add-on', required: true }),
10
- };
8
+ static topic = 'addons';
11
9
  static description = 'list all available plans for an add-on service';
12
10
  static flags = {
13
11
  json: flags.boolean({ description: 'output in json format' }),
14
12
  };
15
- static topic = 'addons';
13
+ static args = {
14
+ service: Args.string({ required: true, description: 'unique identifier or globally unique name of the add-on' }),
15
+ };
16
+ printMeteredPricingURL(service) {
17
+ return printf(`https://elements.heroku.com/addons/${service}#pricing`);
18
+ }
16
19
  async run() {
17
- const { args, flags } = await this.parse(Plans);
20
+ const { flags, args } = await this.parse(Plans);
18
21
  const { service } = args;
19
22
  let { body: plans } = await this.heroku.get(`/addon-services/${service}/plans`, {
20
23
  headers: {
@@ -26,7 +29,6 @@ export default class Plans extends Command {
26
29
  hux.styledJSON(plans);
27
30
  }
28
31
  else {
29
- /* eslint-disable perfectionist/sort-objects */
30
32
  hux.table(plans, {
31
33
  default: {
32
34
  header: ' ', // <- This space is necessary to prevent the table header from rendering as "default"
@@ -47,10 +49,6 @@ export default class Plans extends Command {
47
49
  get: (plan) => plan.price.metered ? this.printMeteredPricingURL(service) : formatPrice({ price: plan.price, hourly: false }),
48
50
  },
49
51
  });
50
- /* eslint-enable perfectionist/sort-objects */
51
52
  }
52
53
  }
53
- printMeteredPricingURL(service) {
54
- return printf(`https://elements.heroku.com/addons/${service}#pricing`);
55
- }
56
54
  }
@@ -1,7 +1,7 @@
1
1
  import { Command, flags } from '@heroku-cli/command';
2
2
  import * as color from '@heroku/heroku-cli-util/color';
3
3
  import { Args, ux } from '@oclif/core';
4
- import { waitForAddonDeprovisioning, waitForAddonProvisioning } from '../../lib/addons/addons-wait.js';
4
+ import { waitForAddonDeprovisioning, waitForAddonProvisioning } from '../../lib/addons/addons_wait.js';
5
5
  import { resolveAddon } from '../../lib/addons/resolve.js';
6
6
  import notify from '../../lib/notify.js';
7
7
  export default class Wait extends Command {
@@ -1,6 +1,6 @@
1
+ import { color, hux } from '@heroku/heroku-cli-util';
1
2
  import { Command, flags } from '@heroku-cli/command';
2
3
  import { BuildpackCompletion, RegionCompletion, SpaceCompletion, StackCompletion, } from '@heroku-cli/command/lib/completions.js';
3
- import { color, hux } from '@heroku/heroku-cli-util';
4
4
  import { Args, ux } from '@oclif/core';
5
5
  import fs from 'fs-extra';
6
6
  import Git from '../../lib/git/git.js';
@@ -69,6 +69,7 @@ async function configureGitRemote(context, app) {
69
69
  const remoteUrl = git.httpGitUrl(app.name || '');
70
70
  if (!context.flags['no-remote'] && git.inGitRepo()) {
71
71
  await git.createRemote(context.flags.remote || 'heroku', remoteUrl);
72
+ await git.configureCredentialHelper();
72
73
  }
73
74
  return remoteUrl;
74
75
  }
@@ -1,8 +1,8 @@
1
1
  import { Command, flags } from '@heroku-cli/command';
2
2
  import * as color from '@heroku/heroku-cli-util/color';
3
3
  import { Args, ux } from '@oclif/core';
4
- import { gitService } from '../../lib/ci/git.js';
5
- import ConfirmCommand from '../../lib/confirm-command.js';
4
+ import * as git from '../../lib/ci/git.js';
5
+ import ConfirmCommand from '../../lib/confirmCommand.js';
6
6
  export default class Destroy extends Command {
7
7
  static args = {
8
8
  app: Args.string({ hidden: true }),
@@ -30,15 +30,13 @@ export default class Destroy extends Command {
30
30
  * you want, and they can all point to the same url.
31
31
  * The only requirement is that the "name" is unique.
32
32
  */
33
- if (gitService.inGitRepo()) {
33
+ if (git.inGitRepo()) {
34
34
  // delete git remotes pointing to this app
35
- const remotes = await gitService.listRemotes();
36
- // Deduplicate remote names (same name appears for fetch and push)
37
- const names = new Set([
38
- ...(remotes.get(gitService.gitUrl(app))?.map(({ name }) => name) ?? []),
39
- ...(remotes.get(gitService.sshGitUrl(app))?.map(({ name }) => name) ?? []),
35
+ const remotes = await git.listRemotes();
36
+ await Promise.all([
37
+ remotes.get(git.gitUrl(app))?.map(({ name }) => git.rmRemote(name)),
38
+ remotes.get(git.sshGitUrl(app))?.map(({ name }) => git.rmRemote(name)),
40
39
  ]);
41
- await Promise.all([...names].map(name => gitService.rmRemote(name)));
42
40
  }
43
41
  ux.action.stop();
44
42
  }