heroku 11.5.0-alpha.4 → 11.5.0-alpha.6

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 (452) hide show
  1. package/CHANGELOG.md +38 -103
  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/addons/create.js +1 -1
  8. package/dist/commands/addons/destroy.js +3 -3
  9. package/dist/commands/addons/docs.js +1 -1
  10. package/dist/commands/addons/index.js +4 -4
  11. package/dist/commands/addons/info.js +1 -1
  12. package/dist/commands/addons/plans.d.ts +5 -5
  13. package/dist/commands/addons/plans.js +12 -10
  14. package/dist/commands/addons/wait.js +1 -1
  15. package/dist/commands/apps/create.js +1 -1
  16. package/dist/commands/apps/destroy.js +9 -7
  17. package/dist/commands/apps/diff.js +14 -14
  18. package/dist/commands/apps/errors.js +8 -8
  19. package/dist/commands/apps/info.js +3 -3
  20. package/dist/commands/apps/transfer.js +2 -2
  21. package/dist/commands/authorizations/info.d.ts +3 -3
  22. package/dist/commands/authorizations/info.js +4 -4
  23. package/dist/commands/authorizations/rotate.d.ts +1 -1
  24. package/dist/commands/authorizations/rotate.js +2 -2
  25. package/dist/commands/authorizations/update.d.ts +4 -4
  26. package/dist/commands/authorizations/update.js +6 -6
  27. package/dist/commands/autocomplete/create.d.ts +17 -17
  28. package/dist/commands/autocomplete/create.js +108 -107
  29. package/dist/commands/autocomplete/doctor.d.ts +2 -2
  30. package/dist/commands/autocomplete/doctor.js +10 -9
  31. package/dist/commands/autocomplete/index.js +1 -1
  32. package/dist/commands/autocomplete/options.d.ts +7 -7
  33. package/dist/commands/autocomplete/options.js +99 -99
  34. package/dist/commands/autocomplete/script.d.ts +3 -3
  35. package/dist/commands/autocomplete/script.js +6 -6
  36. package/dist/commands/buildpacks/add.d.ts +4 -4
  37. package/dist/commands/buildpacks/add.js +8 -8
  38. package/dist/commands/buildpacks/index.js +4 -7
  39. package/dist/commands/buildpacks/info.d.ts +1 -1
  40. package/dist/commands/buildpacks/info.js +8 -8
  41. package/dist/commands/buildpacks/search.d.ts +5 -5
  42. package/dist/commands/buildpacks/search.js +8 -8
  43. package/dist/commands/buildpacks/set.d.ts +4 -4
  44. package/dist/commands/buildpacks/set.js +8 -8
  45. package/dist/commands/buildpacks/versions.d.ts +1 -1
  46. package/dist/commands/buildpacks/versions.js +14 -12
  47. package/dist/commands/certs/add.d.ts +1 -1
  48. package/dist/commands/certs/add.js +7 -7
  49. package/dist/commands/certs/auto/disable.js +1 -1
  50. package/dist/commands/certs/auto/index.js +9 -7
  51. package/dist/commands/certs/generate.d.ts +13 -13
  52. package/dist/commands/certs/generate.js +57 -55
  53. package/dist/commands/certs/index.js +1 -1
  54. package/dist/commands/certs/info.js +1 -1
  55. package/dist/commands/certs/remove.js +1 -1
  56. package/dist/commands/certs/update.js +3 -3
  57. package/dist/commands/ci/config/index.js +4 -4
  58. package/dist/commands/ci/debug.d.ts +1 -1
  59. package/dist/commands/ci/debug.js +15 -15
  60. package/dist/commands/ci/open.js +1 -1
  61. package/dist/commands/clients/info.js +2 -2
  62. package/dist/commands/clients/rotate.js +1 -1
  63. package/dist/commands/config/get.js +2 -2
  64. package/dist/commands/config/index.js +2 -2
  65. package/dist/commands/console.d.ts +2 -2
  66. package/dist/commands/console.js +6 -7
  67. package/dist/commands/container/login.d.ts +4 -4
  68. package/dist/commands/container/login.js +26 -27
  69. package/dist/commands/container/logout.d.ts +3 -3
  70. package/dist/commands/container/logout.js +11 -12
  71. package/dist/commands/container/pull.d.ts +1 -1
  72. package/dist/commands/container/pull.js +3 -4
  73. package/dist/commands/container/push.d.ts +1 -1
  74. package/dist/commands/container/push.js +8 -12
  75. package/dist/commands/container/release.js +2 -3
  76. package/dist/commands/container/run.d.ts +1 -1
  77. package/dist/commands/container/run.js +3 -4
  78. package/dist/commands/dashboard.js +8 -10
  79. package/dist/commands/data/maintenances/history.d.ts +1 -1
  80. package/dist/commands/data/maintenances/history.js +5 -3
  81. package/dist/commands/data/maintenances/index.d.ts +1 -1
  82. package/dist/commands/data/maintenances/index.js +2 -2
  83. package/dist/commands/data/maintenances/info.d.ts +1 -1
  84. package/dist/commands/data/maintenances/info.js +4 -4
  85. package/dist/commands/data/maintenances/run.d.ts +1 -1
  86. package/dist/commands/data/maintenances/run.js +1 -1
  87. package/dist/commands/data/maintenances/schedule.d.ts +1 -1
  88. package/dist/commands/data/maintenances/schedule.js +2 -2
  89. package/dist/commands/data/maintenances/wait.d.ts +1 -1
  90. package/dist/commands/data/maintenances/wait.js +2 -2
  91. package/dist/commands/data/maintenances/window/index.d.ts +1 -1
  92. package/dist/commands/data/maintenances/window/index.js +2 -2
  93. package/dist/commands/data/maintenances/window/update.d.ts +1 -1
  94. package/dist/commands/data/maintenances/window/update.js +2 -2
  95. package/dist/commands/data/pg/attachments/create.d.ts +9 -1
  96. package/dist/commands/data/pg/attachments/create.js +135 -41
  97. package/dist/commands/data/pg/attachments/destroy.d.ts +1 -1
  98. package/dist/commands/data/pg/attachments/destroy.js +2 -2
  99. package/dist/commands/data/pg/attachments/index.d.ts +1 -1
  100. package/dist/commands/data/pg/attachments/index.js +8 -7
  101. package/dist/commands/data/pg/create.d.ts +1 -4
  102. package/dist/commands/data/pg/create.js +15 -114
  103. package/dist/commands/data/pg/credentials/create.d.ts +1 -1
  104. package/dist/commands/data/pg/credentials/create.js +1 -1
  105. package/dist/commands/data/pg/credentials/destroy.d.ts +1 -1
  106. package/dist/commands/data/pg/credentials/destroy.js +4 -8
  107. package/dist/commands/data/pg/credentials/index.d.ts +1 -1
  108. package/dist/commands/data/pg/credentials/index.js +14 -10
  109. package/dist/commands/data/pg/credentials/rotate.d.ts +1 -1
  110. package/dist/commands/data/pg/credentials/rotate.js +17 -12
  111. package/dist/commands/data/pg/credentials/url.d.ts +1 -1
  112. package/dist/commands/data/pg/credentials/url.js +3 -3
  113. package/dist/commands/data/pg/destroy.d.ts +1 -1
  114. package/dist/commands/data/pg/destroy.js +3 -3
  115. package/dist/commands/data/pg/docs.d.ts +1 -1
  116. package/dist/commands/data/pg/docs.js +2 -2
  117. package/dist/commands/data/pg/fork.d.ts +1 -1
  118. package/dist/commands/data/pg/fork.js +4 -4
  119. package/dist/commands/data/pg/info.d.ts +1 -1
  120. package/dist/commands/data/pg/info.js +14 -18
  121. package/dist/commands/data/pg/levels.d.ts +1 -1
  122. package/dist/commands/data/pg/levels.js +1 -1
  123. package/dist/commands/data/pg/migrate.d.ts +28 -0
  124. package/dist/commands/data/pg/migrate.js +451 -0
  125. package/dist/commands/data/pg/psql.d.ts +0 -1
  126. package/dist/commands/data/pg/psql.js +4 -19
  127. package/dist/commands/data/pg/quotas/index.d.ts +1 -1
  128. package/dist/commands/data/pg/quotas/index.js +5 -5
  129. package/dist/commands/data/pg/quotas/update.d.ts +1 -1
  130. package/dist/commands/data/pg/quotas/update.js +3 -3
  131. package/dist/commands/data/pg/settings.d.ts +1 -1
  132. package/dist/commands/data/pg/settings.js +1 -1
  133. package/dist/commands/data/pg/update.d.ts +1 -23
  134. package/dist/commands/data/pg/update.js +55 -109
  135. package/dist/commands/data/pg/upgrade/run.d.ts +1 -1
  136. package/dist/commands/data/pg/upgrade/run.js +1 -1
  137. package/dist/commands/data/pg/wait.d.ts +1 -1
  138. package/dist/commands/data/pg/wait.js +1 -1
  139. package/dist/commands/domains/add.js +2 -2
  140. package/dist/commands/domains/index.js +4 -4
  141. package/dist/commands/domains/wait.d.ts +3 -3
  142. package/dist/commands/domains/wait.js +3 -3
  143. package/dist/commands/drains/index.js +2 -2
  144. package/dist/commands/features/index.d.ts +1 -1
  145. package/dist/commands/features/index.js +2 -2
  146. package/dist/commands/features/info.js +1 -1
  147. package/dist/commands/git/clone.js +4 -2
  148. package/dist/commands/git/credentials.d.ts +3 -3
  149. package/dist/commands/git/credentials.js +32 -31
  150. package/dist/commands/git/remote.js +4 -7
  151. package/dist/commands/keys/add.js +1 -1
  152. package/dist/commands/keys/index.js +2 -1
  153. package/dist/commands/labs/disable.js +6 -8
  154. package/dist/commands/labs/index.js +1 -1
  155. package/dist/commands/labs/info.js +1 -1
  156. package/dist/commands/local/index.js +1 -1
  157. package/dist/commands/mcp/start.js +1 -1
  158. package/dist/commands/members/add.d.ts +4 -4
  159. package/dist/commands/members/add.js +13 -11
  160. package/dist/commands/members/remove.js +1 -6
  161. package/dist/commands/members/set.d.ts +2 -2
  162. package/dist/commands/members/set.js +6 -6
  163. package/dist/commands/orgs/index.d.ts +2 -2
  164. package/dist/commands/orgs/index.js +2 -2
  165. package/dist/commands/pg/backups/cancel.d.ts +4 -4
  166. package/dist/commands/pg/backups/cancel.js +6 -6
  167. package/dist/commands/pg/backups/capture.js +1 -1
  168. package/dist/commands/pg/backups/delete.js +2 -2
  169. package/dist/commands/pg/backups/info.js +1 -1
  170. package/dist/commands/pg/backups/restore.js +4 -4
  171. package/dist/commands/pg/backups/unschedule.js +1 -1
  172. package/dist/commands/pg/bloat.d.ts +2 -2
  173. package/dist/commands/pg/bloat.js +4 -4
  174. package/dist/commands/pg/blocking.d.ts +2 -2
  175. package/dist/commands/pg/blocking.js +4 -4
  176. package/dist/commands/pg/connection-pooling/attach.js +1 -1
  177. package/dist/commands/pg/copy.js +3 -3
  178. package/dist/commands/pg/credentials/destroy.js +2 -2
  179. package/dist/commands/pg/credentials/repair-default.js +2 -2
  180. package/dist/commands/pg/credentials/rotate.js +1 -1
  181. package/dist/commands/pg/credentials/url.js +2 -2
  182. package/dist/commands/pg/credentials.js +3 -8
  183. package/dist/commands/pg/diagnose.d.ts +6 -6
  184. package/dist/commands/pg/diagnose.js +21 -21
  185. package/dist/commands/pg/info.d.ts +5 -5
  186. package/dist/commands/pg/info.js +37 -40
  187. package/dist/commands/pg/kill.d.ts +6 -6
  188. package/dist/commands/pg/kill.js +11 -9
  189. package/dist/commands/pg/killall.d.ts +4 -4
  190. package/dist/commands/pg/killall.js +6 -6
  191. package/dist/commands/pg/links/create.js +2 -2
  192. package/dist/commands/pg/links/destroy.js +2 -2
  193. package/dist/commands/pg/links/index.js +8 -6
  194. package/dist/commands/pg/locks.d.ts +5 -5
  195. package/dist/commands/pg/locks.js +7 -7
  196. package/dist/commands/pg/outliers.d.ts +8 -8
  197. package/dist/commands/pg/outliers.js +39 -42
  198. package/dist/commands/pg/promote.d.ts +5 -5
  199. package/dist/commands/pg/promote.js +24 -31
  200. package/dist/commands/pg/ps.d.ts +4 -4
  201. package/dist/commands/pg/ps.js +7 -7
  202. package/dist/commands/pg/psql.d.ts +6 -6
  203. package/dist/commands/pg/psql.js +8 -8
  204. package/dist/commands/pg/pull.js +5 -5
  205. package/dist/commands/pg/push.js +3 -3
  206. package/dist/commands/pg/reset.js +2 -2
  207. package/dist/commands/pg/settings/auto-explain/log-analyze.d.ts +4 -4
  208. package/dist/commands/pg/settings/auto-explain/log-analyze.js +6 -6
  209. package/dist/commands/pg/settings/auto-explain/log-buffers.d.ts +2 -2
  210. package/dist/commands/pg/settings/auto-explain/log-buffers.js +6 -6
  211. package/dist/commands/pg/settings/auto-explain/log-format.d.ts +2 -2
  212. package/dist/commands/pg/settings/auto-explain/log-format.js +8 -8
  213. package/dist/commands/pg/settings/auto-explain/log-min-duration.d.ts +2 -2
  214. package/dist/commands/pg/settings/auto-explain/log-min-duration.js +6 -6
  215. package/dist/commands/pg/settings/auto-explain/log-nested-statements.d.ts +2 -2
  216. package/dist/commands/pg/settings/auto-explain/log-nested-statements.js +1 -1
  217. package/dist/commands/pg/settings/auto-explain/log-triggers.d.ts +4 -4
  218. package/dist/commands/pg/settings/auto-explain/log-triggers.js +6 -6
  219. package/dist/commands/pg/settings/auto-explain/log-verbose.d.ts +7 -7
  220. package/dist/commands/pg/settings/auto-explain/log-verbose.js +8 -8
  221. package/dist/commands/pg/settings/auto-explain.d.ts +6 -6
  222. package/dist/commands/pg/settings/auto-explain.js +5 -5
  223. package/dist/commands/pg/settings/data-connector-details-logs.d.ts +5 -5
  224. package/dist/commands/pg/settings/data-connector-details-logs.js +4 -4
  225. package/dist/commands/pg/settings/index.d.ts +4 -4
  226. package/dist/commands/pg/settings/index.js +9 -9
  227. package/dist/commands/pg/settings/log-connections.d.ts +6 -6
  228. package/dist/commands/pg/settings/log-connections.js +5 -5
  229. package/dist/commands/pg/settings/log-lock-waits.d.ts +3 -3
  230. package/dist/commands/pg/settings/log-lock-waits.js +5 -5
  231. package/dist/commands/pg/settings/log-min-duration-statement.d.ts +2 -2
  232. package/dist/commands/pg/settings/log-min-duration-statement.js +4 -4
  233. package/dist/commands/pg/settings/log-min-error-statement.d.ts +2 -2
  234. package/dist/commands/pg/settings/log-min-error-statement.js +4 -4
  235. package/dist/commands/pg/settings/log-statement.d.ts +2 -2
  236. package/dist/commands/pg/settings/log-statement.js +4 -4
  237. package/dist/commands/pg/settings/track-functions.d.ts +2 -2
  238. package/dist/commands/pg/settings/track-functions.js +4 -4
  239. package/dist/commands/pg/unfollow.d.ts +5 -5
  240. package/dist/commands/pg/unfollow.js +9 -9
  241. package/dist/commands/pg/upgrade/cancel.js +2 -2
  242. package/dist/commands/pg/upgrade/dryrun.js +2 -2
  243. package/dist/commands/pg/upgrade/prepare.js +3 -3
  244. package/dist/commands/pg/upgrade/run.js +3 -3
  245. package/dist/commands/pg/upgrade/wait.js +1 -1
  246. package/dist/commands/pg/vacuum-stats.d.ts +4 -4
  247. package/dist/commands/pg/vacuum-stats.js +6 -6
  248. package/dist/commands/pg/wait.d.ts +6 -6
  249. package/dist/commands/pg/wait.js +9 -9
  250. package/dist/commands/pipelines/diff.js +2 -2
  251. package/dist/commands/pipelines/info.js +1 -1
  252. package/dist/commands/pipelines/promote.js +4 -4
  253. package/dist/commands/pipelines/setup.js +2 -2
  254. package/dist/commands/pipelines/transfer.js +1 -1
  255. package/dist/commands/ps/copy.js +1 -1
  256. package/dist/commands/ps/exec.js +4 -6
  257. package/dist/commands/ps/index.js +9 -8
  258. package/dist/commands/ps/scale.js +4 -4
  259. package/dist/commands/ps/type.js +6 -6
  260. package/dist/commands/redis/cli.d.ts +3 -3
  261. package/dist/commands/redis/cli.js +22 -22
  262. package/dist/commands/redis/maxmemory.js +1 -1
  263. package/dist/commands/redis/stats-reset.js +1 -1
  264. package/dist/commands/redis/upgrade.js +1 -1
  265. package/dist/commands/regions.js +1 -1
  266. package/dist/commands/releases/index.js +6 -12
  267. package/dist/commands/releases/info.js +8 -8
  268. package/dist/commands/releases/output.d.ts +5 -5
  269. package/dist/commands/releases/output.js +6 -6
  270. package/dist/commands/reviewapps/disable.js +1 -0
  271. package/dist/commands/reviewapps/enable.js +1 -0
  272. package/dist/commands/run/inside.js +3 -1
  273. package/dist/commands/spaces/create.js +12 -3
  274. package/dist/commands/spaces/destroy.js +1 -1
  275. package/dist/commands/spaces/hosts.d.ts +6 -6
  276. package/dist/commands/spaces/hosts.js +8 -8
  277. package/dist/commands/spaces/peerings/destroy.js +2 -2
  278. package/dist/commands/spaces/peerings/index.d.ts +5 -5
  279. package/dist/commands/spaces/peerings/index.js +7 -7
  280. package/dist/commands/spaces/ps.js +8 -7
  281. package/dist/commands/spaces/topology.js +7 -7
  282. package/dist/commands/spaces/trusted-ips/index.d.ts +6 -6
  283. package/dist/commands/spaces/trusted-ips/index.js +8 -8
  284. package/dist/commands/spaces/vpn/config.js +1 -1
  285. package/dist/commands/spaces/vpn/connections.js +1 -1
  286. package/dist/commands/spaces/vpn/destroy.js +1 -1
  287. package/dist/commands/spaces/vpn/info.js +3 -3
  288. package/dist/commands/spaces/vpn/update.js +1 -1
  289. package/dist/commands/status.js +8 -8
  290. package/dist/commands/teams/index.js +1 -1
  291. package/dist/commands/telemetry/add.js +1 -3
  292. package/dist/commands/telemetry/remove.d.ts +3 -3
  293. package/dist/commands/telemetry/remove.js +11 -11
  294. package/dist/commands/usage/addons.js +3 -3
  295. package/dist/commands/webhooks/deliveries/index.d.ts +1 -1
  296. package/dist/commands/webhooks/deliveries/index.js +3 -1
  297. package/dist/commands/webhooks/deliveries/info.d.ts +4 -4
  298. package/dist/commands/webhooks/deliveries/info.js +8 -6
  299. package/dist/commands/webhooks/events/info.js +1 -1
  300. package/dist/commands/webhooks/info.d.ts +4 -4
  301. package/dist/commands/webhooks/info.js +8 -8
  302. package/dist/hooks/command_not_found/setup-otel-telemetry.js +2 -2
  303. package/dist/hooks/finally/send-otel-and-sentry-errors.js +1 -1
  304. package/dist/hooks/init/setup-otel-telemetry.js +2 -2
  305. package/dist/hooks/postrun/send-otel-telemetry.js +2 -2
  306. package/dist/hooks/prerun/collect-and-send-herokulytics.js +8 -6
  307. package/dist/hooks/preupdate/check-npm-auth.js +0 -1
  308. package/dist/hooks/update/brew.js +2 -2
  309. package/dist/hooks/update/tidy.js +1 -1
  310. package/dist/lib/accounts/accounts.d.ts +12 -12
  311. package/dist/lib/accounts/accounts.js +54 -52
  312. package/dist/lib/addons/{create_addon.d.ts → create-addon.d.ts} +1 -1
  313. package/dist/lib/addons/{create_addon.js → create-addon.js} +2 -2
  314. package/dist/lib/addons/destroy-addon.d.ts +3 -0
  315. package/dist/lib/addons/{destroy_addon.js → destroy-addon.js} +10 -14
  316. package/dist/lib/addons/resolve.d.ts +1 -1
  317. package/dist/lib/addons/resolve.js +2 -1
  318. package/dist/lib/addons/util.js +9 -9
  319. package/dist/lib/analytics-telemetry/backboard-otel-client.js +1 -1
  320. package/dist/lib/analytics-telemetry/telemetry-worker.js +2 -2
  321. package/dist/lib/analytics-telemetry/worker-client.js +8 -9
  322. package/dist/lib/apps/app-transfer.js +7 -6
  323. package/dist/lib/apps/generation.d.ts +5 -5
  324. package/dist/lib/authorizations/authorizations.js +3 -2
  325. package/dist/lib/autocomplete/base.js +1 -1
  326. package/dist/lib/autocomplete/cache.js +1 -1
  327. package/dist/lib/autocomplete/completions.d.ts +1 -1
  328. package/dist/lib/autocomplete/completions.js +6 -6
  329. package/dist/lib/buildpacks/buildpacks.js +2 -2
  330. package/dist/lib/certs/{certificate_details.d.ts → certificate-details.d.ts} +1 -1
  331. package/dist/lib/certs/{certificate_details.js → certificate-details.js} +1 -1
  332. package/dist/lib/certs/display-table.d.ts +2 -0
  333. package/dist/lib/certs/{display_table.js → display-table.js} +6 -4
  334. package/dist/lib/certs/flags.d.ts +2 -2
  335. package/dist/lib/certs/flags.js +5 -4
  336. package/dist/lib/certs/format-date.d.ts +1 -0
  337. package/dist/lib/certs/{format_date.js → format-date.js} +1 -1
  338. package/dist/lib/changelog-parser.d.ts +1 -1
  339. package/dist/lib/changelog-parser.js +4 -4
  340. package/dist/lib/ci/git.d.ts +9 -1
  341. package/dist/lib/ci/git.js +18 -4
  342. package/dist/lib/ci/interfaces/kolkrabbi.d.ts +75 -75
  343. package/dist/lib/ci/source.js +1 -1
  344. package/dist/lib/ci/test-run.js +16 -15
  345. package/dist/lib/clients/clients.js +2 -3
  346. package/dist/lib/config/quote.js +5 -5
  347. package/dist/lib/config/util.js +1 -1
  348. package/dist/lib/container/{docker_helper.js → docker-helper.js} +7 -12
  349. package/dist/lib/data/{baseCommand.d.ts → base-command.d.ts} +1 -1
  350. package/dist/lib/data/{baseCommand.js → base-command.js} +2 -2
  351. package/dist/lib/data/credential-utils.d.ts +5 -0
  352. package/dist/lib/data/credential-utils.js +20 -0
  353. package/dist/lib/data/{displayQuota.js → display-quota.js} +3 -3
  354. package/dist/lib/data/parse-attachment-factors.d.ts +28 -0
  355. package/dist/lib/data/parse-attachment-factors.js +40 -0
  356. package/dist/lib/data/{poolConfig.d.ts → pool-config.d.ts} +9 -0
  357. package/dist/lib/data/{poolConfig.js → pool-config.js} +127 -22
  358. package/dist/lib/data/types.d.ts +80 -27
  359. package/dist/lib/data/types.js +34 -0
  360. package/dist/lib/data/utils.js +3 -4
  361. package/dist/lib/data-scrubber/scrubber.d.ts +4 -4
  362. package/dist/lib/data-scrubber/scrubber.js +47 -47
  363. package/dist/lib/data-scrubber/types.d.ts +14 -14
  364. package/dist/lib/git/git.d.ts +18 -18
  365. package/dist/lib/git/git.js +77 -77
  366. package/dist/lib/local/env-file-validator.js +1 -1
  367. package/dist/lib/local/fork-foreman.js +4 -4
  368. package/dist/lib/local/load-foreman-procfile.js +6 -8
  369. package/dist/lib/local/run-foreman.cjs +58 -52
  370. package/dist/lib/notify.d.ts +1 -1
  371. package/dist/lib/notify.js +6 -8
  372. package/dist/lib/npm-auth.js +1 -2
  373. package/dist/lib/pg/backups.js +17 -24
  374. package/dist/lib/pg/download.js +2 -2
  375. package/dist/lib/pg/psql.d.ts +1 -1
  376. package/dist/lib/pg/psql.js +5 -5
  377. package/dist/lib/pg/setter.d.ts +6 -6
  378. package/dist/lib/pg/setter.js +16 -15
  379. package/dist/lib/pg/types.d.ts +81 -81
  380. package/dist/lib/pg/util.d.ts +19 -0
  381. package/dist/lib/pg/util.js +56 -5
  382. package/dist/lib/pipelines/github-api.d.ts +2 -2
  383. package/dist/lib/pipelines/github-api.js +4 -4
  384. package/dist/lib/pipelines/kolkrabbi-api.d.ts +8 -8
  385. package/dist/lib/pipelines/kolkrabbi-api.js +33 -33
  386. package/dist/lib/pipelines/setup/get-name-and-repo.js +2 -2
  387. package/dist/lib/pipelines/setup/get-settings.d.ts +2 -2
  388. package/dist/lib/pipelines/setup/get-settings.js +4 -4
  389. package/dist/lib/pipelines/setup/validate.js +1 -1
  390. package/dist/lib/ps-exec/exec.js +4 -7
  391. package/dist/lib/ps-exec/ssh.js +9 -9
  392. package/dist/lib/redis/api.d.ts +2 -2
  393. package/dist/lib/redis/api.js +2 -1
  394. package/dist/lib/releases/releases.js +2 -2
  395. package/dist/lib/releases/{status_helper.d.ts → status-helper.d.ts} +1 -1
  396. package/dist/lib/repl.d.ts +8 -8
  397. package/dist/lib/repl.js +17 -16
  398. package/dist/lib/run/colorize.js +30 -29
  399. package/dist/lib/run/dyno.d.ts +4 -4
  400. package/dist/lib/run/dyno.js +16 -19
  401. package/dist/lib/run/helpers.js +3 -3
  402. package/dist/lib/run/log-displayer.js +3 -1
  403. package/dist/lib/spaces/format.js +19 -17
  404. package/dist/lib/spaces/hosts.d.ts +3 -3
  405. package/dist/lib/spaces/hosts.js +3 -1
  406. package/dist/lib/spaces/peering.js +5 -1
  407. package/dist/lib/spaces/vpn-connections.js +4 -2
  408. package/dist/lib/telemetry/util.js +2 -2
  409. package/dist/lib/types/completion.d.ts +3 -4
  410. package/dist/lib/types/domain.d.ts +1 -1
  411. package/dist/lib/types/notifications.d.ts +7 -7
  412. package/dist/lib/utils/{tableUtils.js → table-utils.js} +5 -5
  413. package/dist/lib/webhooks/base.d.ts +1 -1
  414. package/dist/lib/webhooks/base.js +2 -2
  415. package/dist/nls-data.d.ts +2 -2
  416. package/dist/nls-data.js +2 -2
  417. package/dist/nls.d.ts +1 -1
  418. package/dist/nls.js +1 -1
  419. package/npm-shrinkwrap.json +10805 -13544
  420. package/oclif.manifest.json +286 -241
  421. package/package.json +21 -27
  422. package/dist/lib/addons/destroy_addon.d.ts +0 -3
  423. package/dist/lib/certs/display_table.d.ts +0 -2
  424. package/dist/lib/certs/format_date.d.ts +0 -1
  425. package/dist/lib/data/credentialUtils.d.ts +0 -3
  426. package/dist/lib/data/credentialUtils.js +0 -23
  427. package/dist/lib/addons/{addons_wait.d.ts → addons-wait.d.ts} +0 -0
  428. package/dist/lib/addons/{addons_wait.js → addons-wait.js} +0 -0
  429. package/dist/lib/apps/{error_info.d.ts → error-info.d.ts} +1 -1
  430. package/dist/lib/apps/{error_info.js → error-info.js} +36 -36
  431. package/dist/lib/certs/{get_cert_and_key.d.ts → get-cert-and-key.d.ts} +0 -0
  432. package/dist/lib/certs/{get_cert_and_key.js → get-cert-and-key.js} +0 -0
  433. package/dist/lib/{confirmCommand.d.ts → confirm-command.d.ts} +0 -0
  434. package/dist/lib/{confirmCommand.js → confirm-command.js} +0 -0
  435. package/dist/lib/container/{docker_helper.d.ts → docker-helper.d.ts} +0 -0
  436. package/dist/lib/data/{createPool.d.ts → create-pool.d.ts} +0 -0
  437. package/dist/lib/data/{createPool.js → create-pool.js} +0 -0
  438. package/dist/lib/data/{displayQuota.d.ts → display-quota.d.ts} +0 -0
  439. package/dist/lib/data/{parseProvisionOpts.d.ts → parse-provision-opts.d.ts} +0 -0
  440. package/dist/lib/data/{parseProvisionOpts.js → parse-provision-opts.js} +0 -0
  441. package/dist/lib/pg/{push_pull.d.ts → push-pull.d.ts} +0 -0
  442. package/dist/lib/pg/{push_pull.js → push-pull.js} +0 -0
  443. package/dist/lib/releases/{status_helper.js → status-helper.js} +8 -8
  444. package/dist/lib/{teamUtils.d.ts → team-utils.d.ts} +0 -0
  445. package/dist/lib/{teamUtils.js → team-utils.js} +0 -0
  446. package/dist/lib/types/{app_errors.d.ts → app-errors.d.ts} +2 -2
  447. /package/dist/lib/types/{app_errors.js → app-errors.js} +0 -0
  448. /package/dist/lib/types/{app_process_tier.d.ts → app-process-tier.d.ts} +0 -0
  449. /package/dist/lib/types/{app_process_tier.js → app-process-tier.js} +0 -0
  450. /package/dist/lib/utils/{keyValueParser.d.ts → key-value-parser.d.ts} +0 -0
  451. /package/dist/lib/utils/{keyValueParser.js → key-value-parser.js} +0 -0
  452. /package/dist/lib/utils/{tableUtils.d.ts → table-utils.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -4,47 +4,12 @@ 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.5.0-alpha.4](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.4) (2026-05-21)
7
+ ## [11.5.0-alpha.6](https://github.com/heroku/cli/compare/v11.4.0...v11.5.0-alpha.6) (2026-06-04)
8
8
 
9
9
 
10
10
  ### Features
11
11
 
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))
19
-
20
-
21
- ### Bug Fixes
22
-
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))
26
-
27
-
28
- ### Miscellaneous Chores
29
-
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))
36
-
37
-
38
- ### Tests
39
-
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))
41
-
42
- ## [11.5.0-alpha.3](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.3) (2026-05-21)
43
-
44
-
45
- ### Features
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))
12
+ * add hidden --method flag to data:pg:migrate ([#3743](https://github.com/heroku/cli/issues/3743)) ([665b189](https://github.com/heroku/cli/commit/665b1896d50f399cc20cfe39500b603665bc814a))
48
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))
49
14
  * remove cached netrc account on logout ([#3710](https://github.com/heroku/cli/issues/3710)) ([b07137b](https://github.com/heroku/cli/commit/b07137bed5282a1618ae7e2b1e7f603eeb9a70be))
50
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))
@@ -55,117 +20,87 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
55
20
 
56
21
  ### Bug Fixes
57
22
 
23
+ * 'run:inside' args ordering (W-22693654) ([#3727](https://github.com/heroku/cli/issues/3727)) ([355113e](https://github.com/heroku/cli/commit/355113e8253b8547ea86be4ef540287ea263af80))
24
+ * add missing warning to 'data:pg:migrate' (W-22544849) ([#3716](https://github.com/heroku/cli/issues/3716)) ([400fc6e](https://github.com/heroku/cli/commit/400fc6e26eb7b7fdd634e0e4465fc5c19762303a))
58
25
  * 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))
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))
26
+ * inherit secrets in reusable workflow ([#3711](https://github.com/heroku/cli/issues/3711)) ([5dd58af](https://github.com/heroku/cli/commit/5dd58af6c14f55ab85fe8584598718ebee03ae4b))
27
+ * pass empty string to rl.write in repl finally block (W-22295448) ([#3721](https://github.com/heroku/cli/issues/3721)) ([ebdf082](https://github.com/heroku/cli/commit/ebdf082ed317cb74a59945c60dc274615b735b81))
60
28
  * restore git configuration on logout ([#3697](https://github.com/heroku/cli/issues/3697)) ([5479fa5](https://github.com/heroku/cli/commit/5479fa53c75b152aece718999deee50b94b1f5ce))
61
29
 
62
30
 
63
31
  ### Miscellaneous Chores
64
32
 
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))
33
+ * add CLAUDE.md and Copilot instructions pointing to AGENTS.md ([#3724](https://github.com/heroku/cli/issues/3724)) ([8abed2f](https://github.com/heroku/cli/commit/8abed2faad739a1897734fe414cc2e1b70ea245a))
34
+ * consolidate release for trusted publishing ([#3744](https://github.com/heroku/cli/issues/3744)) ([0e81dd8](https://github.com/heroku/cli/commit/0e81dd8429cecba42ea31c64cbbaac9db2bd2f87))
35
+ * fix linting errors ([7df4bf0](https://github.com/heroku/cli/commit/7df4bf076497d70c4c0ab3ae672598853f761247))
36
+ * merge in main to feature branch ([#3747](https://github.com/heroku/cli/issues/3747)) ([8c100fd](https://github.com/heroku/cli/commit/8c100fd4667a88e414a4c9379ff896792ef07498))
37
+ * merge main ([#3737](https://github.com/heroku/cli/issues/3737)) ([cb751e6](https://github.com/heroku/cli/commit/cb751e6a23d11baf44cd6111f7a1741e8477c06d))
38
+ * remove unused workflow file ([#3712](https://github.com/heroku/cli/issues/3712)) ([8860aa4](https://github.com/heroku/cli/commit/8860aa412261f05fae3df19438cfd50a5f4ae67f))
67
39
  * 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))
40
+ * upload arm64 win installer to Stampy unsigned bucket (W-22733412) ([#3734](https://github.com/heroku/cli/issues/3734)) ([e171ad5](https://github.com/heroku/cli/commit/e171ad5f670bb4d7aae80d625ae5bf65d77cd1ff))
70
41
 
71
42
 
72
43
  ### Tests
73
44
 
45
+ * fix accounts, apps, auth, buildpacks, container, git, and ps-exec tests ([391b6a6](https://github.com/heroku/cli/commit/391b6a6cff1cb754697db642f1c11464a8de6de3))
74
46
  * 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
47
 
76
- ## [11.5.0-alpha.2](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.2) (2026-05-21)
48
+ ## [11.4.0](https://github.com/heroku/cli/compare/v11.3.0...v11.4.0) (2026-05-13)
77
49
 
78
50
 
79
51
  ### Features
80
52
 
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))
53
+ * 'data:pg:migrate' command implementation (W-21303011) ([#3546](https://github.com/heroku/cli/issues/3546)) ([127e682](https://github.com/heroku/cli/commit/127e682e23c2798346372528f55397563ad3e505))
54
+ * 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))
88
55
 
89
56
 
90
57
  ### Bug Fixes
91
58
 
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))
59
+ * 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))
60
+ * 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))
61
+ * 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)
62
+ * 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))
63
+ * validate HEROKU_HOST for container registry commands ([#3704](https://github.com/heroku/cli/issues/3704)) ([04df827](https://github.com/heroku/cli/commit/04df8275f933c2f055a384d7deaccd524bfa5220))
95
64
 
96
65
 
97
- ### Miscellaneous Chores
66
+ ### Documentation
98
67
 
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))
68
+ * 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))
103
69
 
104
70
 
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
71
+ ### Code Refactoring
137
72
 
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))
73
+ * apply lint fixes to lib files ([#3668](https://github.com/heroku/cli/issues/3668)) ([eb9b040](https://github.com/heroku/cli/commit/eb9b04021ac902c196a0c216f442c7ce756179bc))
74
+ * apply lint formatting to auth through features commands ([#3665](https://github.com/heroku/cli/issues/3665)) ([7e84cbf](https://github.com/heroku/cli/commit/7e84cbf2706f8edcbc0566255b71b22be64b5c32))
75
+ * apply lint formatting to git through pg commands ([#3666](https://github.com/heroku/cli/issues/3666)) ([fd4c8c0](https://github.com/heroku/cli/commit/fd4c8c0eb178b76479e6ded1e8e99bc14b633af5))
76
+ * apply lint formatting to remaining commands ([#3667](https://github.com/heroku/cli/issues/3667)) ([b3f11bd](https://github.com/heroku/cli/commit/b3f11bd34e8256da3b6a1198ec4845d5e03253c9))
77
+ * apply lint formatting to scripts and hooks folders ([#3669](https://github.com/heroku/cli/issues/3669)) ([8a56a67](https://github.com/heroku/cli/commit/8a56a67f96e6e81603d76955ea78dbc2e1ed4433))
78
+ * 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))
79
+ * migrate from qqjs to execa with custom wrapper ([#3678](https://github.com/heroku/cli/issues/3678)) ([ad81615](https://github.com/heroku/cli/commit/ad81615b2d4e6bd470be5ef10b3d35f94d8bed40))
80
+ * migrate to shared eslint config and testing functions ([#3661](https://github.com/heroku/cli/issues/3661)) ([d5ad9ac](https://github.com/heroku/cli/commit/d5ad9acf0f22028475c47fb1e189022cf0374989))
139
81
 
140
- ## [11.5.0-alpha.0](https://github.com/heroku/cli/compare/v11.2.0...v11.5.0-alpha.0) (2026-05-21)
82
+ ## [11.3.0](https://github.com/heroku/cli/compare/v11.2.0...v11.3.0) (2026-04-15)
141
83
 
142
84
 
143
85
  ### Features
144
86
 
145
87
  * 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
88
 
153
89
 
154
90
  ### Bug Fixes
155
91
 
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
92
  * 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
93
 
160
94
 
161
95
  ### Miscellaneous Chores
162
96
 
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))
97
+ * remove @oclif/plugin-legacy dependency ([#3659](https://github.com/heroku/cli/issues/3659)) ([2523d48](https://github.com/heroku/cli/commit/2523d481a79f0d26ab8b6897c6b49d3e5713a218))
164
98
 
165
99
 
166
- ### Tests
100
+ ### Code Refactoring
167
101
 
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))
102
+ * 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))
103
+ * rename lib and script files to kebab-case ([#3663](https://github.com/heroku/cli/issues/3663)) ([c6a101f](https://github.com/heroku/cli/commit/c6a101f4295425ccd362d315f8d2733d88bc6278))
169
104
 
170
105
  ## [11.2.0](https://github.com/heroku/cli/compare/v11.1.1...v11.2.0) (2026-04-08)
171
106
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import os from 'os'
4
- import { spawn } from 'child_process'
3
+ import {spawn} from 'node:child_process'
4
+ import os from 'node:os'
5
5
 
6
6
  if (os.platform() === 'win32' || os.platform() === 'windows') console.log('skipping on windows')
7
- else spawn('npx bats test/acceptance/*.bats', {stdio: 'inherit', shell: true})
7
+ else spawn('npx bats test/acceptance/*.bats', {shell: true, stdio: 'inherit'})
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 {isTelemetryEnabled, getTelemetryDisabledReason, telemetryDebug} = await import('../dist/lib/analytics-telemetry/telemetry-utils.js')
15
+ const {getTelemetryDisabledReason, isTelemetryEnabled, 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/teamUtils.js';
4
+ import { getOwner, isTeamApp } from '../../lib/team-utils.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/teamUtils.js';
6
+ import { getOwner, isTeamApp } from '../../lib/team-utils.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/teamUtils.js';
4
+ import { isTeamApp } from '../../lib/team-utils.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 = Array.from(new Set(permissions.sort()));
28
+ permissions = [...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 },
@@ -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 { color, utils } from '@heroku/heroku-cli-util';
2
1
  import { Command, flags } from '@heroku-cli/command';
2
+ import { color, utils } from '@heroku/heroku-cli-util';
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/confirmCommand.js';
5
+ import destroyAddon from '../../lib/addons/destroy-addon.js';
6
+ import ConfirmCommand from '../../lib/confirm-command.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 * as color from '@heroku/heroku-cli-util/color';
2
1
  import { Command, flags } from '@heroku-cli/command';
2
+ import * as color from '@heroku/heroku-cli-util/color';
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/tableUtils.js';
6
+ import { huxTableNoWrapOptions } from '../../lib/utils/table-utils.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,6 +61,7 @@ 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
64
65
  if (sudoHeaders['X-Heroku-Sudo'] && !sudoHeaders['X-Heroku-Sudo-User']) {
65
66
  // because the root /addon-attachments endpoint won't include relevant
66
67
  // attachments when sudo-ing for another app, we will use the more
@@ -102,15 +103,14 @@ async function addonGetter(api, app) {
102
103
  // This is probably normal (because we are asking API for all attachments)
103
104
  // but it could also be due to certain types of permissions issues, so check
104
105
  // if the attachment looks relevant to the app, and then render whatever
105
- _.values(groupedAttachments)
106
- .forEach(atts => {
106
+ for (const atts of _.values(groupedAttachments)) {
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 { color, hux } from '@heroku/heroku-cli-util';
2
1
  import { Command, flags } from '@heroku-cli/command';
2
+ import { color, hux } from '@heroku/heroku-cli-util';
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 topic: string;
3
+ static args: {
4
+ service: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
+ };
4
6
  static description: string;
5
7
  static flags: {
6
8
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
9
  };
8
- static args: {
9
- service: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
- };
11
- private printMeteredPricingURL;
10
+ static topic: string;
12
11
  run(): Promise<void>;
12
+ private printMeteredPricingURL;
13
13
  }
@@ -1,23 +1,20 @@
1
1
  import { Command, flags } from '@heroku-cli/command';
2
- import { Args } from '@oclif/core';
3
2
  import { hux } from '@heroku/heroku-cli-util';
4
- import { formatPrice } from '../../lib/addons/util.js';
3
+ import { Args } from '@oclif/core';
5
4
  import _ from 'lodash';
6
5
  import printf from 'printf';
6
+ import { formatPrice } from '../../lib/addons/util.js';
7
7
  export default class Plans extends Command {
8
- static topic = 'addons';
8
+ static args = {
9
+ service: Args.string({ description: 'unique identifier or globally unique name of the add-on', required: true }),
10
+ };
9
11
  static description = 'list all available plans for an add-on service';
10
12
  static flags = {
11
13
  json: flags.boolean({ description: 'output in json format' }),
12
14
  };
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
- }
15
+ static topic = 'addons';
19
16
  async run() {
20
- const { flags, args } = await this.parse(Plans);
17
+ const { args, flags } = await this.parse(Plans);
21
18
  const { service } = args;
22
19
  let { body: plans } = await this.heroku.get(`/addon-services/${service}/plans`, {
23
20
  headers: {
@@ -29,6 +26,7 @@ export default class Plans extends Command {
29
26
  hux.styledJSON(plans);
30
27
  }
31
28
  else {
29
+ /* eslint-disable perfectionist/sort-objects */
32
30
  hux.table(plans, {
33
31
  default: {
34
32
  header: ' ', // <- This space is necessary to prevent the table header from rendering as "default"
@@ -49,6 +47,10 @@ export default class Plans extends Command {
49
47
  get: (plan) => plan.price.metered ? this.printMeteredPricingURL(service) : formatPrice({ price: plan.price, hourly: false }),
50
48
  },
51
49
  });
50
+ /* eslint-enable perfectionist/sort-objects */
52
51
  }
53
52
  }
53
+ printMeteredPricingURL(service) {
54
+ return printf(`https://elements.heroku.com/addons/${service}#pricing`);
55
+ }
54
56
  }
@@ -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';
2
1
  import { Command, flags } from '@heroku-cli/command';
3
2
  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';
@@ -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 * as git from '../../lib/ci/git.js';
5
- import ConfirmCommand from '../../lib/confirmCommand.js';
4
+ import { gitService } from '../../lib/ci/git.js';
5
+ import ConfirmCommand from '../../lib/confirm-command.js';
6
6
  export default class Destroy extends Command {
7
7
  static args = {
8
8
  app: Args.string({ hidden: true }),
@@ -30,13 +30,15 @@ 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 (git.inGitRepo()) {
33
+ if (gitService.inGitRepo()) {
34
34
  // delete git remotes pointing to this app
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)),
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) ?? []),
39
40
  ]);
41
+ await Promise.all([...names].map(name => gitService.rmRemote(name)));
40
42
  }
41
43
  ux.action.stop();
42
44
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from '@heroku-cli/command';
2
- import { Args, ux } from '@oclif/core';
3
2
  import { hux } from '@heroku/heroku-cli-util';
3
+ import { Args, ux } from '@oclif/core';
4
4
  function trunc(val) {
5
5
  const v = (val ?? '').toString();
6
6
  return v.length > 56 ? v.slice(0, 56) + '...' : v;
@@ -8,8 +8,8 @@ function trunc(val) {
8
8
  async function checksum(heroku, app) {
9
9
  try {
10
10
  const { body: releases } = await heroku.request(`/apps/${app}/releases`, {
11
- partial: true,
12
11
  headers: { Range: 'version ..; max=1, order=desc' },
12
+ partial: true,
13
13
  });
14
14
  if (releases?.[0]?.slug) {
15
15
  const slugId = releases[0].slug.id;
@@ -29,7 +29,7 @@ async function checksum(heroku, app) {
29
29
  }
30
30
  async function diffFiles(heroku, app1, app2) {
31
31
  const sums = await Promise.all([checksum(heroku, app1), checksum(heroku, app2)]);
32
- return sums[0] === sums[1] ? [] : [{ prop: 'slug (checksum)', app1: sums[0] ?? undefined, app2: sums[1] ?? undefined }];
32
+ return sums[0] === sums[1] ? [] : [{ app1: sums[0] ?? undefined, app2: sums[1] ?? undefined, prop: 'slug (checksum)' }];
33
33
  }
34
34
  async function diffEnv(heroku, app1, app2) {
35
35
  const [res1, res2] = await Promise.all([
@@ -41,7 +41,7 @@ async function diffEnv(heroku, app1, app2) {
41
41
  const keys = new Set([...Object.keys(vars1), ...Object.keys(vars2)]);
42
42
  return [...keys]
43
43
  .filter(k => vars1[k] !== vars2[k])
44
- .map(k => ({ prop: `config (${k})`, app1: vars1[k], app2: vars2[k] }));
44
+ .map(k => ({ app1: vars1[k], app2: vars2[k], prop: `config (${k})` }));
45
45
  }
46
46
  async function diffStack(heroku, app1, app2) {
47
47
  const [res1, res2] = await Promise.all([
@@ -50,7 +50,7 @@ async function diffStack(heroku, app1, app2) {
50
50
  ]);
51
51
  const a = res1.body?.stack?.name;
52
52
  const b = res2.body?.stack?.name;
53
- return a === b ? [] : [{ prop: 'stack', app1: a, app2: b }];
53
+ return a === b ? [] : [{ app1: a, app2: b, prop: 'stack' }];
54
54
  }
55
55
  async function diffBuildpacks(heroku, app1, app2) {
56
56
  const [res1, res2] = await Promise.all([
@@ -63,9 +63,9 @@ async function diffBuildpacks(heroku, app1, app2) {
63
63
  const urls2 = bps2.map(obj => obj.buildpack?.url ?? '');
64
64
  const longest = urls1.length >= urls2.length ? urls1 : urls2;
65
65
  const pairs = longest.map((_, k) => ({
66
- prop: `buildpack (${k})`,
67
66
  app1: urls1[k],
68
67
  app2: urls2[k],
68
+ prop: `buildpack (${k})`,
69
69
  }));
70
70
  return pairs.filter(pair => pair.app1 !== pair.app2);
71
71
  }
@@ -78,8 +78,8 @@ async function diffAddons(heroku, app1, app2) {
78
78
  const addons2 = res2.body ?? [];
79
79
  const names1 = new Set(addons1.map(addon => addon.addon_service?.name ?? '').filter(Boolean));
80
80
  const names2 = new Set(addons2.map(addon => addon.addon_service?.name ?? '').filter(Boolean));
81
- const only1 = [...names1].filter(name => !names2.has(name)).map(name => ({ prop: `add-on (${name})`, app1: 'true', app2: 'false' }));
82
- const only2 = [...names2].filter(name => !names1.has(name)).map(name => ({ prop: `add-on (${name})`, app1: 'false', app2: 'true' }));
81
+ const only1 = [...names1].filter(name => !names2.has(name)).map(name => ({ app1: 'true', app2: 'false', prop: `add-on (${name})` }));
82
+ const only2 = [...names2].filter(name => !names1.has(name)).map(name => ({ app1: 'false', app2: 'true', prop: `add-on (${name})` }));
83
83
  return [...only1, ...only2];
84
84
  }
85
85
  async function diffFeatures(heroku, app1, app2) {
@@ -91,8 +91,8 @@ async function diffFeatures(heroku, app1, app2) {
91
91
  const features2 = res2.body ?? [];
92
92
  const names1 = new Set(features1.map(f => (f.enabled ? f.name : null)).filter(Boolean));
93
93
  const names2 = new Set(features2.map(f => (f.enabled ? f.name : null)).filter(Boolean));
94
- const only1 = [...names1].filter(name => !names2.has(name)).map(name => ({ prop: `feature (${name})`, app1: 'enabled', app2: 'disabled' }));
95
- const only2 = [...names2].filter(name => !names1.has(name)).map(name => ({ prop: `feature (${name})`, app1: 'disabled', app2: 'enabled' }));
94
+ const only1 = [...names1].filter(name => !names2.has(name)).map(name => ({ app1: 'enabled', app2: 'disabled', prop: `feature (${name})` }));
95
+ const only2 = [...names2].filter(name => !names1.has(name)).map(name => ({ app1: 'disabled', app2: 'enabled', prop: `feature (${name})` }));
96
96
  return [...only1, ...only2];
97
97
  }
98
98
  export default class AppsDiff extends Command {
@@ -116,15 +116,15 @@ export default class AppsDiff extends Command {
116
116
  ]);
117
117
  const list = [...files, ...env, ...stack, ...bp, ...addons, ...features];
118
118
  const truncated = list.map(entry => ({
119
- prop: entry.prop,
120
119
  app1: trunc(entry.app1),
121
120
  app2: trunc(entry.app2),
121
+ prop: entry.prop,
122
122
  }));
123
123
  ux.stdout('\n');
124
124
  hux.table(truncated, {
125
- property: { header: 'property', get: (row) => row.prop },
126
- firstApp: { header: app1, get: (row) => row.app1 },
127
- secondApp: { header: app2, get: (row) => row.app2 },
125
+ firstApp: { get: (row) => row.app1, header: app1 },
126
+ property: { get: (row) => row.prop, header: 'property' },
127
+ secondApp: { get: (row) => row.app2, header: app2 },
128
128
  });
129
129
  ux.stdout('\n');
130
130
  }