heroku 9.0.0-alpha.0 → 9.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/README.md +9 -11
  2. package/lib/commands/access/add.d.ts +14 -0
  3. package/lib/commands/access/add.js +55 -0
  4. package/lib/commands/access/index.d.ts +11 -0
  5. package/lib/commands/access/index.js +86 -0
  6. package/lib/commands/access/remove.d.ts +12 -0
  7. package/lib/commands/access/remove.js +25 -0
  8. package/lib/commands/access/update.d.ts +14 -0
  9. package/lib/commands/access/update.js +39 -0
  10. package/lib/commands/addons/attach.d.ts +16 -0
  11. package/lib/commands/addons/attach.js +51 -0
  12. package/lib/commands/addons/create.d.ts +19 -0
  13. package/lib/commands/addons/create.js +84 -0
  14. package/lib/commands/addons/destroy.d.ts +19 -0
  15. package/lib/commands/addons/destroy.js +61 -0
  16. package/lib/commands/addons/detach.d.ts +13 -0
  17. package/lib/commands/addons/detach.js +31 -0
  18. package/lib/commands/addons/docs.d.ts +14 -0
  19. package/lib/commands/addons/docs.js +36 -0
  20. package/lib/commands/addons/index.d.ts +16 -0
  21. package/lib/commands/addons/index.js +246 -0
  22. package/lib/commands/addons/info.d.ts +14 -0
  23. package/lib/commands/addons/info.js +44 -0
  24. package/lib/commands/addons/open.d.ts +75 -0
  25. package/lib/commands/addons/open.js +87 -0
  26. package/lib/commands/addons/plans.d.ts +12 -0
  27. package/lib/commands/addons/plans.js +47 -0
  28. package/lib/commands/addons/rename.d.ts +10 -0
  29. package/lib/commands/addons/rename.js +20 -0
  30. package/lib/commands/addons/services.d.ts +9 -0
  31. package/lib/commands/addons/services.js +34 -0
  32. package/lib/commands/addons/upgrade.d.ts +28 -0
  33. package/lib/commands/addons/upgrade.js +145 -0
  34. package/lib/commands/addons/wait.d.ts +14 -0
  35. package/lib/commands/addons/wait.js +70 -0
  36. package/lib/commands/apps/create.d.ts +28 -0
  37. package/lib/commands/apps/create.js +201 -0
  38. package/lib/commands/apps/destroy.d.ts +15 -0
  39. package/lib/commands/apps/destroy.js +47 -0
  40. package/lib/commands/apps/errors.d.ts +13 -0
  41. package/lib/commands/apps/errors.js +120 -0
  42. package/lib/commands/apps/favorites/add.d.ts +10 -0
  43. package/lib/commands/apps/favorites/add.js +38 -0
  44. package/lib/commands/apps/favorites/index.d.ts +9 -0
  45. package/lib/commands/apps/favorites/index.js +25 -0
  46. package/lib/commands/apps/favorites/remove.d.ts +10 -0
  47. package/lib/commands/apps/favorites/remove.js +28 -0
  48. package/lib/commands/apps/index.d.ts +16 -0
  49. package/lib/commands/apps/index.js +119 -0
  50. package/lib/commands/apps/info.d.ts +19 -0
  51. package/lib/commands/apps/info.js +162 -0
  52. package/lib/commands/apps/join.d.ts +11 -0
  53. package/lib/commands/apps/join.js +25 -0
  54. package/lib/commands/apps/leave.d.ts +12 -0
  55. package/lib/commands/apps/leave.js +25 -0
  56. package/lib/commands/apps/lock.d.ts +11 -0
  57. package/lib/commands/apps/lock.js +30 -0
  58. package/lib/commands/apps/open.d.ts +15 -0
  59. package/lib/commands/apps/open.js +30 -0
  60. package/lib/commands/apps/rename.d.ts +16 -0
  61. package/lib/commands/apps/rename.js +51 -0
  62. package/lib/commands/apps/stacks/index.d.ts +11 -0
  63. package/lib/commands/apps/stacks/index.js +44 -0
  64. package/lib/commands/apps/stacks/set.d.ts +14 -0
  65. package/lib/commands/apps/stacks/set.js +41 -0
  66. package/lib/commands/apps/transfer.d.ts +17 -0
  67. package/lib/commands/apps/transfer.js +91 -0
  68. package/lib/commands/apps/unlock.d.ts +11 -0
  69. package/lib/commands/apps/unlock.js +30 -0
  70. package/lib/commands/auth/logout.js +1 -0
  71. package/lib/commands/auth/token.js +2 -1
  72. package/lib/commands/authorizations/create.js +5 -1
  73. package/lib/commands/authorizations/info.js +5 -1
  74. package/lib/commands/authorizations/revoke.js +5 -1
  75. package/lib/commands/authorizations/rotate.js +5 -1
  76. package/lib/commands/authorizations/update.js +5 -1
  77. package/lib/commands/autocomplete/doctor.js +2 -2
  78. package/lib/commands/autocomplete/options.js +2 -2
  79. package/lib/commands/certs/add.d.ts +16 -0
  80. package/lib/commands/certs/add.js +98 -0
  81. package/lib/commands/certs/auto/disable.d.ts +11 -0
  82. package/lib/commands/certs/auto/disable.js +34 -0
  83. package/lib/commands/certs/auto/enable.d.ts +11 -0
  84. package/lib/commands/certs/auto/enable.js +51 -0
  85. package/lib/commands/certs/auto/index.d.ts +12 -0
  86. package/lib/commands/certs/auto/index.js +94 -0
  87. package/lib/commands/certs/auto/refresh.d.ts +10 -0
  88. package/lib/commands/certs/auto/refresh.js +19 -0
  89. package/lib/commands/certs/generate.d.ts +26 -0
  90. package/lib/commands/certs/generate.js +111 -0
  91. package/lib/commands/certs/index.d.ts +10 -0
  92. package/lib/commands/certs/index.js +26 -0
  93. package/lib/commands/certs/info.d.ts +13 -0
  94. package/lib/commands/certs/info.js +43 -0
  95. package/lib/commands/certs/remove.d.ts +13 -0
  96. package/lib/commands/certs/remove.js +32 -0
  97. package/lib/commands/certs/update.d.ts +18 -0
  98. package/lib/commands/certs/update.js +54 -0
  99. package/lib/commands/ci/config/get.d.ts +1 -0
  100. package/lib/commands/ci/config/get.js +1 -0
  101. package/lib/commands/ci/config/index.d.ts +12 -0
  102. package/lib/commands/ci/config/index.js +43 -0
  103. package/lib/commands/ci/config/set.d.ts +3 -2
  104. package/lib/commands/ci/config/set.js +3 -6
  105. package/lib/commands/ci/config/unset.d.ts +14 -0
  106. package/lib/commands/ci/config/unset.js +36 -0
  107. package/lib/commands/ci/index.d.ts +1 -0
  108. package/lib/commands/ci/index.js +1 -0
  109. package/lib/commands/ci/info.d.ts +1 -0
  110. package/lib/commands/ci/info.js +1 -0
  111. package/lib/commands/ci/last.d.ts +1 -0
  112. package/lib/commands/ci/last.js +1 -0
  113. package/lib/commands/ci/migrate-manifest.d.ts +7 -0
  114. package/lib/commands/ci/migrate-manifest.js +74 -0
  115. package/lib/commands/ci/open.d.ts +1 -0
  116. package/lib/commands/ci/open.js +1 -0
  117. package/lib/commands/ci/rerun.d.ts +1 -0
  118. package/lib/commands/ci/rerun.js +1 -0
  119. package/lib/commands/config/set.d.ts +12 -0
  120. package/lib/commands/config/set.js +60 -0
  121. package/lib/commands/container/index.d.ts +6 -0
  122. package/lib/commands/container/index.js +13 -0
  123. package/lib/commands/container/login.d.ts +9 -0
  124. package/lib/commands/container/login.js +57 -0
  125. package/lib/commands/container/logout.d.ts +9 -0
  126. package/lib/commands/container/logout.js +37 -0
  127. package/lib/commands/container/pull.d.ts +14 -0
  128. package/lib/commands/container/pull.js +40 -0
  129. package/lib/commands/container/push.d.ts +16 -0
  130. package/lib/commands/container/push.js +101 -0
  131. package/lib/commands/container/release.d.ts +14 -0
  132. package/lib/commands/container/release.js +89 -0
  133. package/lib/commands/container/rm.d.ts +13 -0
  134. package/lib/commands/container/rm.js +36 -0
  135. package/lib/commands/container/run.d.ts +15 -0
  136. package/lib/commands/container/run.js +63 -0
  137. package/lib/commands/dashboard.d.ts +7 -0
  138. package/lib/commands/dashboard.js +164 -0
  139. package/lib/commands/domains/index.d.ts +3 -3
  140. package/lib/commands/drains/add.d.ts +12 -0
  141. package/lib/commands/drains/add.js +23 -0
  142. package/lib/commands/drains/index.d.ts +11 -0
  143. package/lib/commands/drains/index.js +50 -0
  144. package/lib/commands/drains/remove.d.ts +13 -0
  145. package/lib/commands/drains/remove.js +22 -0
  146. package/lib/commands/features/disable.d.ts +12 -0
  147. package/lib/commands/features/disable.js +30 -0
  148. package/lib/commands/features/enable.d.ts +12 -0
  149. package/lib/commands/features/enable.js +29 -0
  150. package/lib/commands/features/index.d.ts +10 -0
  151. package/lib/commands/features/index.js +37 -0
  152. package/lib/commands/features/info.d.ts +13 -0
  153. package/lib/commands/features/info.js +33 -0
  154. package/lib/commands/keys/add.d.ts +14 -0
  155. package/lib/commands/keys/add.js +101 -0
  156. package/lib/commands/keys/clear.d.ts +5 -0
  157. package/lib/commands/keys/clear.js +17 -0
  158. package/lib/commands/keys/index.d.ts +9 -0
  159. package/lib/commands/keys/index.js +36 -0
  160. package/lib/commands/keys/remove.d.ts +9 -0
  161. package/lib/commands/keys/remove.js +29 -0
  162. package/lib/commands/labs/enable.d.ts +13 -0
  163. package/lib/commands/labs/enable.js +47 -0
  164. package/lib/commands/labs/index.d.ts +11 -0
  165. package/lib/commands/labs/index.js +71 -0
  166. package/lib/commands/labs/info.d.ts +14 -0
  167. package/lib/commands/labs/info.js +49 -0
  168. package/lib/commands/local/index.d.ts +1 -1
  169. package/lib/commands/local/index.js +8 -3
  170. package/lib/commands/local/run.d.ts +1 -1
  171. package/lib/commands/local/run.js +8 -3
  172. package/lib/commands/maintenance/index.d.ts +10 -0
  173. package/lib/commands/maintenance/index.js +19 -0
  174. package/lib/commands/maintenance/off.d.ts +10 -0
  175. package/lib/commands/maintenance/off.js +20 -0
  176. package/lib/commands/maintenance/on.d.ts +10 -0
  177. package/lib/commands/maintenance/on.js +20 -0
  178. package/lib/commands/members/add.d.ts +13 -0
  179. package/lib/commands/members/add.js +33 -0
  180. package/lib/commands/members/index.d.ts +12 -0
  181. package/lib/commands/members/index.js +76 -0
  182. package/lib/commands/members/remove.d.ts +10 -0
  183. package/lib/commands/members/remove.js +58 -0
  184. package/lib/commands/members/set.d.ts +11 -0
  185. package/lib/commands/members/set.js +21 -0
  186. package/lib/commands/notifications/index.d.ts +13 -0
  187. package/lib/commands/notifications/index.js +62 -0
  188. package/lib/commands/orgs/index.d.ts +11 -0
  189. package/lib/commands/orgs/index.js +27 -0
  190. package/lib/commands/orgs/open.d.ts +10 -0
  191. package/lib/commands/orgs/open.js +24 -0
  192. package/lib/commands/pg/backups/cancel.d.ts +15 -0
  193. package/lib/commands/pg/backups/cancel.js +49 -0
  194. package/lib/commands/pg/backups/capture.d.ts +15 -0
  195. package/lib/commands/pg/backups/capture.js +65 -0
  196. package/lib/commands/pg/backups/delete.d.ts +15 -0
  197. package/lib/commands/pg/backups/delete.js +38 -0
  198. package/lib/commands/pg/backups/download.d.ts +14 -0
  199. package/lib/commands/pg/backups/download.js +58 -0
  200. package/lib/commands/pg/backups/index.d.ts +20 -0
  201. package/lib/commands/pg/backups/index.js +129 -0
  202. package/lib/commands/pg/backups/info.d.ts +17 -0
  203. package/lib/commands/pg/backups/info.js +92 -0
  204. package/lib/commands/pg/backups/restore.d.ts +19 -0
  205. package/lib/commands/pg/backups/restore.js +107 -0
  206. package/lib/commands/pg/backups/schedule.d.ts +21 -0
  207. package/lib/commands/pg/backups/schedule.js +82 -0
  208. package/lib/commands/pg/backups/schedules.d.ts +10 -0
  209. package/lib/commands/pg/backups/schedules.js +31 -0
  210. package/lib/commands/pg/backups/unschedule.d.ts +13 -0
  211. package/lib/commands/pg/backups/unschedule.js +44 -0
  212. package/lib/commands/pg/backups/url.d.ts +13 -0
  213. package/lib/commands/pg/backups/url.js +41 -0
  214. package/lib/commands/pg/bloat.d.ts +13 -0
  215. package/lib/commands/pg/bloat.js +87 -0
  216. package/lib/commands/pg/blocking.d.ts +13 -0
  217. package/lib/commands/pg/blocking.js +42 -0
  218. package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
  219. package/lib/commands/pg/connection-pooling/attach.js +41 -0
  220. package/lib/commands/pg/copy.d.ts +18 -0
  221. package/lib/commands/pg/copy.js +86 -0
  222. package/lib/commands/pg/credentials/create.d.ts +14 -0
  223. package/lib/commands/pg/credentials/create.js +40 -0
  224. package/lib/commands/pg/credentials/destroy.d.ts +16 -0
  225. package/lib/commands/pg/credentials/destroy.js +48 -0
  226. package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
  227. package/lib/commands/pg/credentials/repair-default.js +39 -0
  228. package/lib/commands/pg/credentials/rotate.d.ts +16 -0
  229. package/lib/commands/pg/credentials/rotate.js +82 -0
  230. package/lib/commands/pg/credentials/url.d.ts +14 -0
  231. package/lib/commands/pg/credentials/url.js +64 -0
  232. package/lib/commands/pg/credentials.d.ts +16 -0
  233. package/lib/commands/pg/credentials.js +61 -0
  234. package/lib/commands/pg/diagnose.d.ts +18 -0
  235. package/lib/commands/pg/diagnose.js +109 -0
  236. package/lib/commands/pg/info.d.ts +14 -0
  237. package/lib/commands/pg/info.js +92 -0
  238. package/lib/commands/pg/kill.d.ts +15 -0
  239. package/lib/commands/pg/kill.js +32 -0
  240. package/lib/commands/pg/killall.d.ts +13 -0
  241. package/lib/commands/pg/killall.js +26 -0
  242. package/lib/commands/pg/links/create.d.ts +15 -0
  243. package/lib/commands/pg/links/create.js +58 -0
  244. package/lib/commands/pg/links/destroy.d.ts +16 -0
  245. package/lib/commands/pg/links/destroy.js +42 -0
  246. package/lib/commands/pg/links/index.d.ts +13 -0
  247. package/lib/commands/pg/links/index.js +59 -0
  248. package/lib/commands/pg/locks.d.ts +15 -0
  249. package/lib/commands/pg/locks.js +53 -0
  250. package/lib/commands/pg/maintenance/index.d.ts +13 -0
  251. package/lib/commands/pg/maintenance/index.js +29 -0
  252. package/lib/commands/pg/maintenance/run.d.ts +14 -0
  253. package/lib/commands/pg/maintenance/run.js +37 -0
  254. package/lib/commands/pg/maintenance/window.d.ts +15 -0
  255. package/lib/commands/pg/maintenance/window.js +41 -0
  256. package/lib/commands/pg/outliers.d.ts +19 -0
  257. package/lib/commands/pg/outliers.js +97 -0
  258. package/lib/commands/pg/promote.d.ts +14 -0
  259. package/lib/commands/pg/promote.js +169 -0
  260. package/lib/commands/pg/ps.d.ts +14 -0
  261. package/lib/commands/pg/ps.js +52 -0
  262. package/lib/commands/pg/psql.d.ts +16 -0
  263. package/lib/commands/pg/psql.js +49 -0
  264. package/lib/commands/pg/pull.d.ts +18 -0
  265. package/lib/commands/pg/pull.js +87 -0
  266. package/lib/commands/pg/push.d.ts +18 -0
  267. package/lib/commands/pg/push.js +84 -0
  268. package/lib/commands/pg/reset.d.ts +15 -0
  269. package/lib/commands/pg/reset.js +44 -0
  270. package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
  271. package/lib/commands/pg/settings/auto-explain/log-analyze.js +32 -0
  272. package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
  273. package/lib/commands/pg/settings/auto-explain/log-buffers.js +30 -0
  274. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +16 -0
  275. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +33 -0
  276. package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
  277. package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +25 -0
  278. package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
  279. package/lib/commands/pg/settings/auto-explain/log-triggers.js +30 -0
  280. package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
  281. package/lib/commands/pg/settings/auto-explain/log-verbose.js +33 -0
  282. package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
  283. package/lib/commands/pg/settings/auto-explain.js +38 -0
  284. package/lib/commands/pg/settings/index.d.ts +13 -0
  285. package/lib/commands/pg/settings/index.js +34 -0
  286. package/lib/commands/pg/settings/log-connections.d.ts +17 -0
  287. package/lib/commands/pg/settings/log-connections.js +34 -0
  288. package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
  289. package/lib/commands/pg/settings/log-lock-waits.js +31 -0
  290. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +15 -0
  291. package/lib/commands/pg/settings/log-min-duration-statement.js +33 -0
  292. package/lib/commands/pg/settings/log-statement.d.ts +12 -0
  293. package/lib/commands/pg/settings/log-statement.js +30 -0
  294. package/lib/commands/pg/settings/track-functions.d.ts +12 -0
  295. package/lib/commands/pg/settings/track-functions.js +29 -0
  296. package/lib/commands/pg/unfollow.d.ts +14 -0
  297. package/lib/commands/pg/unfollow.js +40 -0
  298. package/lib/commands/pg/upgrade.d.ts +15 -0
  299. package/lib/commands/pg/upgrade.js +58 -0
  300. package/lib/commands/pg/vacuum-stats.d.ts +13 -0
  301. package/lib/commands/pg/vacuum-stats.js +65 -0
  302. package/lib/commands/pg/wait.d.ts +15 -0
  303. package/lib/commands/pg/wait.js +79 -0
  304. package/lib/commands/pipelines/connect.js +1 -1
  305. package/lib/commands/pipelines/diff.js +1 -1
  306. package/lib/commands/ps/index.d.ts +15 -0
  307. package/lib/commands/ps/index.js +195 -0
  308. package/lib/commands/ps/restart.d.ts +17 -0
  309. package/lib/commands/ps/restart.js +38 -0
  310. package/lib/commands/ps/scale.d.ts +13 -0
  311. package/lib/commands/ps/scale.js +108 -0
  312. package/lib/commands/ps/stop.d.ts +17 -0
  313. package/lib/commands/ps/stop.js +33 -0
  314. package/lib/commands/ps/type.d.ts +12 -0
  315. package/lib/commands/ps/type.js +163 -0
  316. package/lib/commands/redis/cli.d.ts +15 -0
  317. package/lib/commands/redis/cli.js +204 -0
  318. package/lib/commands/redis/credentials.d.ts +14 -0
  319. package/lib/commands/redis/credentials.js +32 -0
  320. package/lib/commands/redis/info.d.ts +15 -0
  321. package/lib/commands/redis/info.js +25 -0
  322. package/lib/commands/redis/keyspace-notifications.d.ts +14 -0
  323. package/lib/commands/redis/keyspace-notifications.js +47 -0
  324. package/lib/commands/redis/maintenance.d.ts +16 -0
  325. package/lib/commands/redis/maintenance.js +63 -0
  326. package/lib/commands/redis/maxmemory.d.ts +14 -0
  327. package/lib/commands/redis/maxmemory.js +40 -0
  328. package/lib/commands/redis/promote.d.ts +13 -0
  329. package/lib/commands/redis/promote.js +39 -0
  330. package/lib/commands/redis/stats-reset.d.ts +14 -0
  331. package/lib/commands/redis/stats-reset.js +36 -0
  332. package/lib/commands/redis/timeout.d.ts +14 -0
  333. package/lib/commands/redis/timeout.js +35 -0
  334. package/lib/commands/redis/upgrade.d.ts +15 -0
  335. package/lib/commands/redis/upgrade.js +37 -0
  336. package/lib/commands/redis/wait.d.ts +14 -0
  337. package/lib/commands/redis/wait.js +60 -0
  338. package/lib/commands/releases/index.d.ts +14 -0
  339. package/lib/commands/releases/index.js +124 -0
  340. package/lib/commands/releases/info.d.ts +15 -0
  341. package/lib/commands/releases/info.js +56 -0
  342. package/lib/commands/releases/output.d.ts +13 -0
  343. package/lib/commands/releases/output.js +37 -0
  344. package/lib/commands/releases/rollback.d.ts +14 -0
  345. package/lib/commands/releases/rollback.js +48 -0
  346. package/lib/commands/run/detached.d.ts +7 -8
  347. package/lib/commands/run/detached.js +16 -20
  348. package/lib/commands/run/index.d.ts +10 -11
  349. package/lib/commands/run/index.js +16 -17
  350. package/lib/commands/run/inside.d.ts +5 -7
  351. package/lib/commands/run/inside.js +10 -14
  352. package/lib/commands/spaces/create.d.ts +22 -0
  353. package/lib/commands/spaces/create.js +73 -0
  354. package/lib/commands/spaces/destroy.d.ts +14 -0
  355. package/lib/commands/spaces/destroy.js +49 -0
  356. package/lib/commands/spaces/drains/get.d.ts +12 -0
  357. package/lib/commands/spaces/drains/get.js +27 -0
  358. package/lib/commands/spaces/drains/set.d.ts +14 -0
  359. package/lib/commands/spaces/drains/set.js +29 -0
  360. package/lib/commands/spaces/hosts.d.ts +14 -0
  361. package/lib/commands/spaces/hosts.js +37 -0
  362. package/lib/commands/spaces/index.d.ts +16 -0
  363. package/lib/commands/spaces/index.js +55 -0
  364. package/lib/commands/spaces/info.d.ts +14 -0
  365. package/lib/commands/spaces/info.js +47 -0
  366. package/lib/commands/spaces/outbound-rules/add.d.ts +15 -0
  367. package/lib/commands/spaces/outbound-rules/add.js +81 -0
  368. package/lib/commands/spaces/outbound-rules/index.d.ts +15 -0
  369. package/lib/commands/spaces/outbound-rules/index.js +49 -0
  370. package/lib/commands/spaces/outbound-rules/remove.d.ts +17 -0
  371. package/lib/commands/spaces/outbound-rules/remove.js +53 -0
  372. package/lib/commands/spaces/peerings/accept.d.ts +15 -0
  373. package/lib/commands/spaces/peerings/accept.js +36 -0
  374. package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
  375. package/lib/commands/spaces/peerings/destroy.js +45 -0
  376. package/lib/commands/spaces/peerings/index.d.ts +13 -0
  377. package/lib/commands/spaces/peerings/index.js +33 -0
  378. package/lib/commands/spaces/peerings/info.d.ts +15 -0
  379. package/lib/commands/spaces/peerings/info.js +59 -0
  380. package/lib/commands/spaces/ps.d.ts +15 -0
  381. package/lib/commands/spaces/ps.js +82 -0
  382. package/lib/commands/spaces/rename.d.ts +11 -0
  383. package/lib/commands/spaces/rename.js +26 -0
  384. package/lib/commands/spaces/topology.d.ts +32 -0
  385. package/lib/commands/spaces/topology.js +89 -0
  386. package/lib/commands/spaces/transfer.d.ts +11 -0
  387. package/lib/commands/spaces/transfer.js +35 -0
  388. package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
  389. package/lib/commands/spaces/trusted-ips/add.js +43 -0
  390. package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
  391. package/lib/commands/spaces/trusted-ips/index.js +52 -0
  392. package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
  393. package/lib/commands/spaces/trusted-ips/remove.js +44 -0
  394. package/lib/commands/spaces/vpn/config.d.ts +14 -0
  395. package/lib/commands/spaces/vpn/config.js +54 -0
  396. package/lib/commands/spaces/vpn/connect.d.ts +15 -0
  397. package/lib/commands/spaces/vpn/connect.js +45 -0
  398. package/lib/commands/spaces/vpn/connections.d.ts +17 -0
  399. package/lib/commands/spaces/vpn/connections.js +57 -0
  400. package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
  401. package/lib/commands/spaces/vpn/destroy.js +35 -0
  402. package/lib/commands/spaces/vpn/info.d.ts +16 -0
  403. package/lib/commands/spaces/vpn/info.js +82 -0
  404. package/lib/commands/spaces/vpn/update.d.ts +14 -0
  405. package/lib/commands/spaces/vpn/update.js +36 -0
  406. package/lib/commands/spaces/vpn/wait.d.ts +13 -0
  407. package/lib/commands/spaces/vpn/wait.js +53 -0
  408. package/lib/commands/spaces/wait.d.ts +17 -0
  409. package/lib/commands/spaces/wait.js +89 -0
  410. package/lib/commands/status.js +4 -4
  411. package/lib/commands/teams/index.d.ts +9 -0
  412. package/lib/commands/teams/index.js +29 -0
  413. package/lib/global_telemetry.js +10 -4
  414. package/lib/hooks/postrun/performance_analytics.js +5 -4
  415. package/lib/hooks/prerun/analytics.js +3 -0
  416. package/lib/lib/addons/addons_wait.d.ts +78 -0
  417. package/lib/lib/addons/addons_wait.js +56 -0
  418. package/lib/lib/addons/create_addon.d.ts +7 -0
  419. package/lib/lib/addons/create_addon.js +59 -0
  420. package/lib/lib/addons/destroy_addon.d.ts +3 -0
  421. package/lib/lib/addons/destroy_addon.js +48 -0
  422. package/lib/lib/addons/resolve.d.ts +38 -0
  423. package/lib/lib/addons/resolve.js +179 -0
  424. package/lib/lib/addons/util.d.ts +9 -0
  425. package/lib/lib/addons/util.js +72 -0
  426. package/lib/lib/api.d.ts +1 -1
  427. package/lib/lib/apps/app-transfer.d.ts +10 -0
  428. package/lib/lib/apps/app-transfer.js +35 -0
  429. package/lib/lib/apps/error_info.d.ts +7 -0
  430. package/lib/lib/apps/error_info.js +185 -0
  431. package/lib/lib/autocomplete/completions.d.ts +4 -0
  432. package/lib/lib/autocomplete/completions.js +6 -1
  433. package/lib/lib/buildpacks/buildpacks.js +3 -4
  434. package/lib/lib/certs/certificate_details.d.ts +2 -0
  435. package/lib/lib/certs/certificate_details.js +37 -0
  436. package/lib/lib/certs/display_table.d.ts +2 -0
  437. package/lib/lib/certs/display_table.js +51 -0
  438. package/lib/lib/certs/domains.d.ts +3 -0
  439. package/lib/lib/certs/domains.js +45 -0
  440. package/lib/lib/certs/flags.d.ts +7 -0
  441. package/lib/lib/certs/flags.js +42 -0
  442. package/lib/lib/certs/format_date.d.ts +1 -0
  443. package/lib/lib/certs/format_date.js +11 -0
  444. package/lib/lib/certs/get_cert_and_key.d.ts +9 -0
  445. package/lib/lib/certs/get_cert_and_key.js +11 -0
  446. package/lib/lib/ci/git.d.ts +7 -1
  447. package/lib/lib/ci/git.js +44 -1
  448. package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
  449. package/lib/lib/ci/source.js +3 -3
  450. package/lib/lib/ci/test-run.js +2 -2
  451. package/lib/lib/ci/validate.d.ts +2 -0
  452. package/lib/lib/ci/validate.js +10 -0
  453. package/lib/lib/config/quote.js +1 -1
  454. package/lib/lib/confirmCommand.d.ts +1 -0
  455. package/lib/lib/confirmCommand.js +23 -0
  456. package/lib/lib/container/debug.d.ts +2 -0
  457. package/lib/lib/container/debug.js +5 -0
  458. package/lib/lib/container/docker_helper.d.ts +24 -0
  459. package/lib/lib/container/docker_helper.js +168 -0
  460. package/lib/lib/container/streamer.d.ts +1 -0
  461. package/lib/lib/container/streamer.js +31 -0
  462. package/lib/lib/domains/domains.d.ts +6 -0
  463. package/lib/lib/domains/domains.js +104 -0
  464. package/lib/lib/git/git.d.ts +3 -0
  465. package/lib/lib/git/git.js +19 -0
  466. package/lib/lib/git/push.d.ts +1 -0
  467. package/lib/lib/git/push.js +6 -0
  468. package/lib/lib/local/run-foreman.d.ts +1 -0
  469. package/lib/lib/local/run-foreman.js +229 -1
  470. package/lib/lib/members/util.d.ts +3 -0
  471. package/lib/lib/members/util.js +25 -0
  472. package/lib/lib/members/utils.d.ts +2 -0
  473. package/lib/lib/members/utils.js +14 -0
  474. package/lib/lib/notify.d.ts +1 -0
  475. package/lib/lib/notify.js +23 -0
  476. package/lib/lib/orgs/utils.d.ts +5 -0
  477. package/lib/lib/orgs/utils.js +24 -0
  478. package/lib/lib/pg/backups.d.ts +17 -0
  479. package/lib/lib/pg/backups.js +164 -0
  480. package/lib/lib/pg/bastion.d.ts +29 -0
  481. package/lib/lib/pg/bastion.js +121 -0
  482. package/lib/lib/pg/config.d.ts +2 -0
  483. package/lib/lib/pg/config.js +13 -0
  484. package/lib/lib/pg/download.d.ts +5 -0
  485. package/lib/lib/pg/download.js +34 -0
  486. package/lib/lib/pg/fetcher.d.ts +39 -0
  487. package/lib/lib/pg/fetcher.js +137 -0
  488. package/lib/lib/pg/host.d.ts +1 -0
  489. package/lib/lib/pg/host.js +7 -0
  490. package/lib/lib/pg/psql.d.ts +48 -0
  491. package/lib/lib/pg/psql.js +252 -0
  492. package/lib/lib/pg/push_pull.d.ts +13 -0
  493. package/lib/lib/pg/push_pull.js +118 -0
  494. package/lib/lib/pg/setter.d.ts +16 -0
  495. package/lib/lib/pg/setter.js +65 -0
  496. package/lib/lib/pg/types.d.ts +230 -0
  497. package/lib/lib/pg/types.js +2 -0
  498. package/lib/lib/pg/util.d.ts +36 -0
  499. package/lib/lib/pg/util.js +183 -0
  500. package/lib/lib/redis/api.d.ts +65 -0
  501. package/lib/lib/redis/api.js +122 -0
  502. package/lib/lib/releases/output.d.ts +1 -0
  503. package/lib/lib/releases/output.js +14 -0
  504. package/lib/lib/releases/releases.d.ts +6 -0
  505. package/lib/lib/releases/releases.js +32 -0
  506. package/lib/lib/releases/status_helper.d.ts +5 -0
  507. package/lib/lib/releases/status_helper.js +25 -0
  508. package/lib/lib/run/dyno.js +2 -2
  509. package/lib/lib/run/log-displayer.d.ts +1 -1
  510. package/lib/lib/spaces/format.d.ts +4 -0
  511. package/lib/lib/spaces/format.js +60 -0
  512. package/lib/lib/spaces/hosts.d.ts +9 -0
  513. package/lib/lib/spaces/hosts.js +34 -0
  514. package/lib/lib/spaces/outbound-rules.d.ts +4 -0
  515. package/lib/lib/spaces/outbound-rules.js +78 -0
  516. package/lib/lib/spaces/parsers.d.ts +8 -0
  517. package/lib/lib/spaces/parsers.js +17 -0
  518. package/lib/lib/spaces/peering.d.ts +4 -0
  519. package/lib/lib/spaces/peering.js +53 -0
  520. package/lib/lib/spaces/spaces.d.ts +4 -0
  521. package/lib/lib/spaces/spaces.js +37 -0
  522. package/lib/lib/spaces/vpn-connections.d.ts +2 -0
  523. package/lib/lib/spaces/vpn-connections.js +22 -0
  524. package/lib/lib/teamUtils.d.ts +3 -0
  525. package/lib/lib/teamUtils.js +18 -0
  526. package/lib/lib/time.d.ts +2 -0
  527. package/lib/lib/time.js +29 -0
  528. package/lib/lib/types/app_errors.d.ts +6 -0
  529. package/lib/lib/types/app_errors.js +2 -0
  530. package/lib/lib/types/domain.d.ts +61 -0
  531. package/lib/lib/types/domain.js +5 -0
  532. package/lib/lib/types/favorites.d.ts +7 -0
  533. package/lib/lib/types/favorites.js +2 -0
  534. package/lib/lib/types/notifications.d.ts +20 -0
  535. package/lib/lib/types/notifications.js +2 -0
  536. package/lib/lib/utils/multisort.d.ts +32 -0
  537. package/lib/lib/utils/multisort.js +66 -0
  538. package/lib/lib/utils/uuid-validate.d.ts +1 -0
  539. package/lib/lib/utils/uuid-validate.js +7 -0
  540. package/lib/user-config.js +2 -2
  541. package/oclif.manifest.json +12920 -2534
  542. package/package.json +111 -60
  543. package/lib/lib/buildpacks/push.d.ts +0 -0
  544. package/lib/lib/buildpacks/push.js +0 -4
package/README.md CHANGED
@@ -36,15 +36,15 @@ For other issues, [submit a support ticket](https://help.heroku.com/).
36
36
  * [`heroku access`](docs/access.md) - manage user access to apps
37
37
  * [`heroku addons`](docs/addons.md) - tools and services for developing, extending, and operating your app
38
38
  * [`heroku apps`](docs/apps.md) - manage apps on Heroku
39
- * [`heroku auth`](docs/auth.md) - check 2fa status
39
+ * [`heroku auth`](docs/auth.md) - manage authentication for your Heroku account
40
40
  * [`heroku authorizations`](docs/authorizations.md) - OAuth authorizations
41
41
  * [`heroku autocomplete`](docs/autocomplete.md) - display autocomplete installation instructions
42
42
  * [`heroku buildpacks`](docs/buildpacks.md) - scripts used to compile apps
43
- * [`heroku certs`](docs/certs.md) - a topic for the ssl plugin
44
- * [`heroku ci`](docs/ci.md) - run an application test suite on Heroku
43
+ * [`heroku certs`](docs/certs.md) - SSL certificates
44
+ * [`heroku ci`](docs/ci.md) - test runner for Heroku Pipelines
45
45
  * [`heroku clients`](docs/clients.md) - OAuth clients on the platform
46
46
  * [`heroku config`](docs/config.md) - environment variables of apps
47
- * [`heroku container`](docs/container.md) - Use containers to build and deploy Heroku apps
47
+ * [`heroku container`](docs/container.md) - deploy your Docker-based app to Heroku
48
48
  * [`heroku domains`](docs/domains.md) - custom domains for apps
49
49
  * [`heroku drains`](docs/drains.md) - forward logs to syslog or HTTPS
50
50
  * [`heroku features`](docs/features.md) - add/remove app features
@@ -56,6 +56,7 @@ For other issues, [submit a support ticket](https://help.heroku.com/).
56
56
  * [`heroku logs`](docs/logs.md) - display recent log output
57
57
  * [`heroku maintenance`](docs/maintenance.md) - enable/disable access to app
58
58
  * [`heroku members`](docs/members.md) - manage organization members
59
+ * [`heroku notifications`](docs/notifications.md) - display notifications
59
60
  * [`heroku orgs`](docs/orgs.md) - manage organizations
60
61
  * [`heroku pg`](docs/pg.md) - manage postgresql databases
61
62
  * [`heroku pipelines`](docs/pipelines.md) - manage pipelines
@@ -63,10 +64,11 @@ For other issues, [submit a support ticket](https://help.heroku.com/).
63
64
  * [`heroku ps`](docs/ps.md) - Client tools for Heroku Exec
64
65
  * [`heroku redis`](docs/redis.md) - manage heroku redis instances
65
66
  * [`heroku regions`](docs/regions.md) - list available regions for deployment
67
+ * [`heroku releases`](docs/releases.md) - display the releases for an app
66
68
  * [`heroku reviewapps`](docs/reviewapps.md) - manage reviewapps in pipelines
67
69
  * [`heroku run`](docs/run.md) - run a one-off process inside a Heroku dyno
68
70
  * [`heroku sessions`](docs/sessions.md) - OAuth sessions
69
- * [`heroku spaces`](docs/spaces.md) - manage heroku private spaces
71
+ * [`heroku spaces`](docs/spaces.md) - list available spaces
70
72
  * [`heroku status`](docs/status.md) - display current status of the Heroku platform
71
73
  * [`heroku teams`](docs/teams.md) - manage teams
72
74
  * [`heroku update`](docs/update.md) - update the Heroku CLI
@@ -82,17 +84,14 @@ This project is built with [lerna](https://lerna.js.org/). The core plugins are
82
84
 
83
85
  After cloning the repo
84
86
  1. Run `yarn` to install dependencies
85
- 2. Run `yarn lerna bootstrap` set up Lerna and link the packages together
86
- - This repo currently uses an older version of Lerna. We recommend using the version specified in the package.json instead of a newer version that you may have installed globally.
87
+ 2. Run `yarn build` to build the CLI. This will need to be re-run any time you make changes and want to test them locally.
87
88
 
88
89
  To execute Heroku CLI commands locally, use `./bin/run <command>`. For example, to run the `heroku apps` command with your local code, run `./bin/run apps` from the root directory.
89
90
 
90
91
  Testing
91
92
  =======
92
93
 
93
- Run all tests with `yarn lerna run test`.
94
-
95
- Run one test, in this case plugin-certs-v5, with `yarn lerna run --scope @heroku-cli/plugin-certs-v5 test`.
94
+ Run all tests with `yarn test`.
96
95
 
97
96
  ## Debugging
98
97
 
@@ -100,7 +99,6 @@ Using WebStorm (from Jetbrains / IntelliJ), you can run/debug an individual test
100
99
 
101
100
  - Create a new run/debug configuration
102
101
  - Select the 'Mocha' type
103
- - Set the working directory to the directory of the package you are using. (i.e. ~/Heroku/Repos/cli/packages/certs-v5)
104
102
 
105
103
  Releasing
106
104
  =========
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class AccessAdd extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
6
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ permissions: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ };
9
+ static examples: string[];
10
+ static args: {
11
+ email: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ const teamUtils_1 = require("../../lib/teamUtils");
7
+ const _ = require("lodash");
8
+ class AccessAdd extends command_1.Command {
9
+ async run() {
10
+ var _a, _b;
11
+ const { flags, args } = await this.parse(AccessAdd);
12
+ const { email } = args;
13
+ const { app: appName, permissions } = flags;
14
+ const { body: appInfo } = await this.heroku.get(`/apps/${appName}`);
15
+ let output = `Adding ${color_1.default.cyan(email)} access to the app ${color_1.default.magenta(appName)}`;
16
+ let teamFeatures = [];
17
+ if ((0, teamUtils_1.isTeamApp)((_a = appInfo === null || appInfo === void 0 ? void 0 : appInfo.owner) === null || _a === void 0 ? void 0 : _a.email)) {
18
+ const teamName = (0, teamUtils_1.getOwner)((_b = appInfo === null || appInfo === void 0 ? void 0 : appInfo.owner) === null || _b === void 0 ? void 0 : _b.email);
19
+ const teamFeaturesRequest = await this.heroku.get(`/teams/${teamName}/features`);
20
+ teamFeatures = teamFeaturesRequest.body;
21
+ }
22
+ if (teamFeatures.some(feature => feature.name === 'org-access-controls')) {
23
+ if (!permissions)
24
+ this.error('Missing argument: permissions', { exit: 1 });
25
+ const permissionsArray = permissions ? permissions.split(',') : [];
26
+ permissionsArray.push('view');
27
+ const permissionsArraySorted = _.uniq(permissionsArray.sort());
28
+ output += ` with ${color_1.default.green(permissionsArraySorted.join(', '))} permissions`;
29
+ core_1.ux.action.start(output);
30
+ await this.heroku.post(`/teams/apps/${appName}/collaborators`, {
31
+ body: { user: email, permissions: permissionsArraySorted },
32
+ });
33
+ core_1.ux.action.stop();
34
+ }
35
+ else {
36
+ core_1.ux.action.start(output);
37
+ await this.heroku.post(`/apps/${appName}/collaborators`, { body: { user: email } });
38
+ core_1.ux.action.stop();
39
+ }
40
+ }
41
+ }
42
+ exports.default = AccessAdd;
43
+ AccessAdd.description = 'add new users to your app';
44
+ AccessAdd.flags = {
45
+ app: command_1.flags.app({ required: true }),
46
+ remote: command_1.flags.remote({ char: 'r' }),
47
+ permissions: command_1.flags.string({ char: 'p', description: 'list of permissions comma separated' }),
48
+ };
49
+ AccessAdd.examples = [
50
+ '$ heroku access:add user@email.com --app APP # add a collaborator to your app',
51
+ '$ heroku access:add user@email.com --app APP --permissions deploy,manage,operate # permissions must be comma separated',
52
+ ];
53
+ AccessAdd.args = {
54
+ email: core_1.Args.string({ required: true }),
55
+ };
@@ -0,0 +1,11 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class AccessIndex extends Command {
3
+ static description: string;
4
+ static topic: string;
5
+ static flags: {
6
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ const _ = require("lodash");
7
+ const teamUtils_1 = require("../../lib/teamUtils");
8
+ function printJSON(collaborators) {
9
+ core_1.ux.log(JSON.stringify(collaborators, null, 2));
10
+ }
11
+ function buildTableColumns(showPermissions) {
12
+ const baseColumns = {
13
+ email: {
14
+ get: ({ email }) => color_1.default.cyan(email),
15
+ },
16
+ role: {
17
+ get: ({ role }) => color_1.default.green(role),
18
+ },
19
+ };
20
+ if (showPermissions) {
21
+ return Object.assign(Object.assign({}, baseColumns), { permissions: {} });
22
+ }
23
+ return baseColumns;
24
+ }
25
+ function printAccess(app, collaborators) {
26
+ var _a;
27
+ const showPermissions = (0, teamUtils_1.isTeamApp)((_a = app.owner) === null || _a === void 0 ? void 0 : _a.email);
28
+ collaborators = _.chain(collaborators)
29
+ .sortBy(c => c.email || c.user.email)
30
+ .reject(c => /herokumanager\.com$/.test(c.user.email))
31
+ .map(collab => {
32
+ const email = collab.user.email;
33
+ const role = collab.role;
34
+ const data = { email: email, role: role || 'collaborator' };
35
+ if (showPermissions) {
36
+ data.permissions = _.map(_.sortBy(collab.permissions, 'name'), 'name').join(', ');
37
+ }
38
+ return data;
39
+ })
40
+ .value();
41
+ const tableColumns = buildTableColumns(showPermissions);
42
+ core_1.ux.table(collaborators, tableColumns);
43
+ }
44
+ function buildCollaboratorsArray(collaboratorsRaw, admins) {
45
+ const collaboratorsNoAdmins = _.reject(collaboratorsRaw, { role: 'admin' });
46
+ return _.union(collaboratorsNoAdmins, admins);
47
+ }
48
+ class AccessIndex extends command_1.Command {
49
+ async run() {
50
+ var _a, _b;
51
+ const { flags, argv, args } = await this.parse(AccessIndex);
52
+ const { app: appName, json } = flags;
53
+ const { body: app } = await this.heroku.get(`/apps/${appName}`);
54
+ let { body: collaborators } = await this.heroku.get(`/apps/${appName}/collaborators`);
55
+ if ((0, teamUtils_1.isTeamApp)((_a = app.owner) === null || _a === void 0 ? void 0 : _a.email)) {
56
+ const teamName = (0, teamUtils_1.getOwner)((_b = app.owner) === null || _b === void 0 ? void 0 : _b.email);
57
+ try {
58
+ const { body: members } = await this.heroku.get(`/teams/${teamName}/members`);
59
+ let admins = members.filter(member => member.role === 'admin');
60
+ const { body: adminPermissions } = await this.heroku.get('/teams/permissions');
61
+ admins = _.forEach(admins, function (admin) {
62
+ admin.user = { email: admin.email };
63
+ admin.permissions = adminPermissions;
64
+ return admin;
65
+ });
66
+ collaborators = buildCollaboratorsArray(collaborators, admins);
67
+ }
68
+ catch (error) {
69
+ if (error.statusCode !== 403)
70
+ throw error;
71
+ }
72
+ }
73
+ if (json)
74
+ printJSON(collaborators);
75
+ else
76
+ printAccess(app, collaborators);
77
+ }
78
+ }
79
+ exports.default = AccessIndex;
80
+ AccessIndex.description = 'list who has access to an app';
81
+ AccessIndex.topic = 'access';
82
+ AccessIndex.flags = {
83
+ app: command_1.flags.app({ required: true }),
84
+ remote: command_1.flags.remote({ char: 'r' }),
85
+ json: command_1.flags.boolean({ description: 'output in json format' }),
86
+ };
@@ -0,0 +1,12 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class AccessRemove extends Command {
3
+ static description: string;
4
+ static example: string;
5
+ static topic: string;
6
+ static flags: {
7
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ };
10
+ static strict: boolean;
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ class AccessRemove extends command_1.Command {
7
+ async run() {
8
+ const { flags, argv } = await this.parse(AccessRemove);
9
+ const { app } = flags;
10
+ const email = argv[0];
11
+ const appName = app;
12
+ core_1.ux.action.start(`Removing ${color_1.default.cyan(email)} access from the app ${color_1.default.magenta(appName)}`);
13
+ await this.heroku.delete(`/apps/${appName}/collaborators/${email}`);
14
+ core_1.ux.action.stop();
15
+ }
16
+ }
17
+ exports.default = AccessRemove;
18
+ AccessRemove.description = 'remove users from a team app';
19
+ AccessRemove.example = '$ heroku access:remove user@email.com --app APP';
20
+ AccessRemove.topic = 'access';
21
+ AccessRemove.flags = {
22
+ app: command_1.flags.app({ required: true }),
23
+ remote: command_1.flags.remote({ char: 'r' }),
24
+ };
25
+ AccessRemove.strict = false;
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Update extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ permissions: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ };
10
+ static args: {
11
+ email: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ const teamUtils_1 = require("../../lib/teamUtils");
7
+ class Update extends command_1.Command {
8
+ async run() {
9
+ var _a;
10
+ const { flags, args } = await this.parse(Update);
11
+ const appName = flags.app;
12
+ let permissions = flags.permissions.split(',');
13
+ const { body: appInfo } = await this.heroku.get(`/apps/${appName}`);
14
+ if (!(0, teamUtils_1.isTeamApp)((_a = appInfo === null || appInfo === void 0 ? void 0 : appInfo.owner) === null || _a === void 0 ? void 0 : _a.email))
15
+ this.error(`Error: cannot update permissions. The app ${color_1.default.cyan(appName)} is not owned by a team`);
16
+ permissions.push('view');
17
+ permissions = Array.from(new Set(permissions.sort()));
18
+ core_1.ux.action.start(`Updating ${args.email} in application ${color_1.default.cyan(appName)} with ${permissions} permissions`);
19
+ await this.heroku.patch(`/teams/apps/${appName}/collaborators/${args.email}`, {
20
+ body: { permissions: permissions },
21
+ });
22
+ core_1.ux.action.stop();
23
+ }
24
+ }
25
+ exports.default = Update;
26
+ Update.topic = 'access';
27
+ Update.description = 'update existing collaborators on an team app';
28
+ Update.flags = {
29
+ permissions: command_1.flags.string({
30
+ char: 'p',
31
+ description: 'comma-delimited list of permissions to update (deploy,manage,operate)',
32
+ required: true,
33
+ }),
34
+ app: command_1.flags.app({ required: true }),
35
+ remote: command_1.flags.remote(),
36
+ };
37
+ Update.args = {
38
+ email: core_1.Args.string({ required: true }),
39
+ };
@@ -0,0 +1,16 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Attach extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ as: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ credential: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ };
12
+ static args: {
13
+ addon_name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ const util_1 = require("../../lib/addons/util");
7
+ class Attach extends command_1.Command {
8
+ async run() {
9
+ const { flags, args } = await this.parse(Attach);
10
+ const { app, credential, as, confirm } = flags;
11
+ const { body: addon } = await this.heroku.get(`/addons/${encodeURIComponent(args.addon_name)}`);
12
+ const createAttachment = async (confirmed) => {
13
+ let namespace;
14
+ if (credential && credential !== 'default') {
15
+ namespace = 'credential:' + credential;
16
+ }
17
+ const body = {
18
+ name: as, app: { name: app }, addon: { name: addon.name }, confirm: confirmed, namespace,
19
+ };
20
+ core_1.ux.action.start(`Attaching ${credential ? color_1.default.yellow(credential) + ' of ' : ''}${color_1.default.yellow(addon.name || '')}${as ? ' as ' + color_1.default.cyan(as) : ''} to ${color_1.default.magenta(app)}`);
21
+ const { body: attachments } = await this.heroku.post('/addon-attachments', { body });
22
+ core_1.ux.action.stop();
23
+ return attachments;
24
+ };
25
+ if (credential && credential !== 'default') {
26
+ const { body: credentialConfig } = await this.heroku.get(`/addons/${addon.name}/config/credential:${encodeURIComponent(credential)}`);
27
+ if (credentialConfig.length === 0) {
28
+ throw new Error(`Could not find credential ${credential} for database ${addon.name}`);
29
+ }
30
+ }
31
+ const attachment = await (0, util_1.trapConfirmationRequired)(app, confirm, (confirmed) => createAttachment(confirmed));
32
+ core_1.ux.action.start(`Setting ${color_1.default.cyan(attachment.name || '')} config vars and restarting ${color_1.default.magenta(app)}`);
33
+ const { body: releases } = await this.heroku.get(`/apps/${app}/releases`, {
34
+ partial: true, headers: { Range: 'version ..; max=1, order=desc' },
35
+ });
36
+ core_1.ux.action.stop(`done, v${releases[0].version}`);
37
+ }
38
+ }
39
+ exports.default = Attach;
40
+ Attach.topic = 'addons';
41
+ Attach.description = 'attach an existing add-on resource to an app';
42
+ Attach.flags = {
43
+ as: command_1.flags.string({ description: 'name for add-on attachment' }),
44
+ credential: command_1.flags.string({ description: 'credential name for scoped access to Heroku Postgres' }),
45
+ confirm: command_1.flags.string({ description: 'overwrite existing add-on attachment with same name' }),
46
+ app: command_1.flags.app({ required: true }),
47
+ remote: command_1.flags.remote(),
48
+ };
49
+ Attach.args = {
50
+ addon_name: core_1.Args.string({ required: true }),
51
+ };
@@ -0,0 +1,19 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Create extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static strict: boolean;
6
+ static hiddenAliases: string[];
7
+ static flags: {
8
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ as: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ wait: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
13
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
14
+ };
15
+ static args: {
16
+ 'service:plan': import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const color_1 = require("@heroku-cli/color");
5
+ const command_1 = require("@heroku-cli/command");
6
+ const core_1 = require("@oclif/core");
7
+ const notify_1 = require("../../lib/notify");
8
+ const create_addon_1 = require("../../lib/addons/create_addon");
9
+ function parseConfig(args) {
10
+ const config = {};
11
+ while (args.length > 0) {
12
+ let key = args.shift();
13
+ if (!key.startsWith('--'))
14
+ throw new Error(`Unexpected argument ${key}`);
15
+ key = key.replace(/^--/, '');
16
+ let val;
17
+ if (key.includes('=')) {
18
+ [key, ...val] = key.split('=');
19
+ val = val.join('=');
20
+ if (val === 'true') {
21
+ val = true;
22
+ }
23
+ config[key] = val;
24
+ }
25
+ else {
26
+ val = args.shift();
27
+ if (!val) {
28
+ config[key] = true;
29
+ }
30
+ else if (val.startsWith('--')) {
31
+ config[key] = true;
32
+ args.unshift(val);
33
+ }
34
+ else {
35
+ config[key] = val;
36
+ }
37
+ }
38
+ }
39
+ return config;
40
+ }
41
+ class Create extends command_1.Command {
42
+ async run() {
43
+ var _a;
44
+ const _b = await this.parse(Create), { flags, args } = _b, restParse = tslib_1.__rest(_b, ["flags", "args"]);
45
+ const { app, name, as, wait, confirm } = flags;
46
+ const servicePlan = args['service:plan'];
47
+ const argv = restParse.argv
48
+ // oclif duplicates specified args in argv
49
+ .filter(arg => arg !== servicePlan);
50
+ const config = parseConfig(argv);
51
+ let addon;
52
+ try {
53
+ addon = await (0, create_addon_1.default)(this.heroku, app, servicePlan, confirm, wait, { config, name, as });
54
+ if (wait) {
55
+ (0, notify_1.default)(`heroku addons:create ${addon.name}`, 'Add-on successfully provisioned');
56
+ }
57
+ }
58
+ catch (error) {
59
+ if (wait) {
60
+ (0, notify_1.default)(`heroku addons:create ${servicePlan}`, 'Add-on failed to provision', false);
61
+ }
62
+ throw error;
63
+ }
64
+ await this.config.runHook('recache', { type: 'addon', app, addon });
65
+ // eslint-disable-next-line no-unsafe-optional-chaining
66
+ core_1.ux.log(`Use ${color_1.default.cyan.bold('heroku addons:docs ' + ((_a = addon === null || addon === void 0 ? void 0 : addon.addon_service) === null || _a === void 0 ? void 0 : _a.name) || '')} to view documentation`);
67
+ }
68
+ }
69
+ exports.default = Create;
70
+ Create.topic = 'addons';
71
+ Create.description = 'create a new add-on resource';
72
+ Create.strict = false;
73
+ Create.hiddenAliases = ['addons:add'];
74
+ Create.flags = {
75
+ name: command_1.flags.string({ description: 'name for the add-on resource' }),
76
+ as: command_1.flags.string({ description: 'name for the initial add-on attachment' }),
77
+ confirm: command_1.flags.string({ description: 'overwrite existing config vars or existing add-on attachments' }),
78
+ wait: command_1.flags.boolean({ description: 'watch add-on creation status and exit when complete' }),
79
+ app: command_1.flags.app({ required: true }),
80
+ remote: command_1.flags.remote(),
81
+ };
82
+ Create.args = {
83
+ 'service:plan': core_1.Args.string({ required: true }),
84
+ };
@@ -0,0 +1,19 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Destroy extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static strict: boolean;
6
+ static examples: string[];
7
+ static hiddenAliases: string[];
8
+ static flags: {
9
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ wait: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
13
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
14
+ };
15
+ static args: {
16
+ addonName: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ const notify_1 = require("../../lib/notify");
7
+ const confirmCommand_1 = require("../../lib/confirmCommand");
8
+ const destroy_addon_1 = require("../../lib/addons/destroy_addon");
9
+ const resolve_1 = require("../../lib/addons/resolve");
10
+ const lodash_1 = require("lodash");
11
+ class Destroy extends command_1.Command {
12
+ async run() {
13
+ var _a, _b;
14
+ const { flags, argv } = await this.parse(Destroy);
15
+ const { app, wait, confirm } = flags;
16
+ const force = flags.force || process.env.HEROKU_FORCE === '1';
17
+ const addons = await Promise.all(argv.map(name => (0, resolve_1.resolveAddon)(this.heroku, app, name)));
18
+ for (const addon of addons) {
19
+ // prevent deletion of add-on when context.app is set but the addon is attached to a different app
20
+ const addonApp = (_a = addon.app) === null || _a === void 0 ? void 0 : _a.name;
21
+ if (app && addonApp !== app) {
22
+ throw new Error(`${color_1.default.yellow((_b = addon.name) !== null && _b !== void 0 ? _b : '')} is on ${color_1.default.magenta(addonApp !== null && addonApp !== void 0 ? addonApp : '')} not ${color_1.default.magenta(app)}`);
23
+ }
24
+ }
25
+ for (const addonApps of Object.entries((0, lodash_1.groupBy)(addons, 'app.name'))) {
26
+ const currentAddons = addonApps[1];
27
+ const appName = addonApps[0];
28
+ await (0, confirmCommand_1.default)(appName, confirm);
29
+ for (const addon of currentAddons) {
30
+ try {
31
+ await (0, destroy_addon_1.default)(this.heroku, addon, force, wait);
32
+ if (wait) {
33
+ (0, notify_1.default)(`heroku addons:destroy ${addon.name}`, 'Add-on successfully deprovisioned');
34
+ }
35
+ }
36
+ catch (error) {
37
+ if (wait) {
38
+ (0, notify_1.default)(`heroku addons:destroy ${addon.name}`, 'Add-on failed to deprovision', false);
39
+ }
40
+ throw error;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ exports.default = Destroy;
47
+ Destroy.topic = 'addons';
48
+ Destroy.description = 'permanently destroy an add-on resource';
49
+ Destroy.strict = false;
50
+ Destroy.examples = ['addons:destroy [ADDON]... [flags]'];
51
+ Destroy.hiddenAliases = ['addons:remove'];
52
+ Destroy.flags = {
53
+ force: command_1.flags.boolean({ char: 'f', description: 'allow destruction even if connected to other apps' }),
54
+ confirm: command_1.flags.string({ char: 'c' }),
55
+ wait: command_1.flags.boolean({ description: 'watch add-on destruction status and exit when complete' }),
56
+ app: command_1.flags.app(),
57
+ remote: command_1.flags.remote(),
58
+ };
59
+ Destroy.args = {
60
+ addonName: core_1.Args.string({ required: true }),
61
+ };
@@ -0,0 +1,13 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Detach extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ };
9
+ static args: {
10
+ attachment_name: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ class Detach extends command_1.Command {
7
+ async run() {
8
+ var _a, _b;
9
+ const { flags, args } = await this.parse(Detach);
10
+ const app = flags.app;
11
+ const { body: attachment } = await this.heroku.get(`/apps/${app}/addon-attachments/${args.attachment_name}`);
12
+ core_1.ux.action.start(`Detaching ${color_1.default.cyan(attachment.name || '')} to ${color_1.default.yellow(((_a = attachment.addon) === null || _a === void 0 ? void 0 : _a.name) || '')} from ${color_1.default.magenta(app)}`);
13
+ await this.heroku.delete(`/addon-attachments/${attachment.id}`);
14
+ core_1.ux.action.stop();
15
+ core_1.ux.action.start(`Unsetting ${color_1.default.cyan(attachment.name || '')} config vars and restarting ${color_1.default.magenta(app)}`);
16
+ const { body: releases } = await this.heroku.get(`/apps/${app}/releases`, {
17
+ partial: true, headers: { Range: 'version ..; max=1, order=desc' },
18
+ });
19
+ core_1.ux.action.stop(`done, v${((_b = releases[0]) === null || _b === void 0 ? void 0 : _b.version) || ''}`);
20
+ }
21
+ }
22
+ exports.default = Detach;
23
+ Detach.topic = 'addons';
24
+ Detach.description = 'detach an existing add-on resource from an app';
25
+ Detach.flags = {
26
+ app: command_1.flags.app({ required: true }),
27
+ remote: command_1.flags.remote(),
28
+ };
29
+ Detach.args = {
30
+ attachment_name: core_1.Args.string({ required: true }),
31
+ };