heroku 9.0.0-dev.0 → 9.1.0-beta.0

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 (597) hide show
  1. package/README.md +6 -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 +20 -0
  13. package/lib/commands/addons/create.js +96 -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 +2 -1
  43. package/lib/commands/apps/favorites/add.js +1 -0
  44. package/lib/commands/apps/favorites/remove.d.ts +2 -1
  45. package/lib/commands/apps/favorites/remove.js +1 -0
  46. package/lib/commands/apps/index.d.ts +16 -0
  47. package/lib/commands/apps/index.js +119 -0
  48. package/lib/commands/apps/info.d.ts +19 -0
  49. package/lib/commands/apps/info.js +162 -0
  50. package/lib/commands/apps/join.d.ts +11 -0
  51. package/lib/commands/apps/join.js +25 -0
  52. package/lib/commands/apps/leave.d.ts +12 -0
  53. package/lib/commands/apps/leave.js +25 -0
  54. package/lib/commands/apps/lock.d.ts +11 -0
  55. package/lib/commands/apps/lock.js +30 -0
  56. package/lib/commands/apps/open.d.ts +15 -0
  57. package/lib/commands/apps/open.js +30 -0
  58. package/lib/commands/apps/rename.d.ts +16 -0
  59. package/lib/commands/apps/rename.js +51 -0
  60. package/lib/commands/apps/stacks/index.d.ts +3 -2
  61. package/lib/commands/apps/stacks/index.js +2 -1
  62. package/lib/commands/apps/stacks/set.d.ts +4 -4
  63. package/lib/commands/apps/stacks/set.js +1 -1
  64. package/lib/commands/apps/transfer.d.ts +17 -0
  65. package/lib/commands/apps/transfer.js +91 -0
  66. package/lib/commands/apps/unlock.d.ts +11 -0
  67. package/lib/commands/apps/unlock.js +30 -0
  68. package/lib/commands/auth/token.js +2 -1
  69. package/lib/commands/authorizations/create.d.ts +3 -3
  70. package/lib/commands/authorizations/create.js +5 -1
  71. package/lib/commands/authorizations/info.d.ts +1 -1
  72. package/lib/commands/authorizations/info.js +5 -1
  73. package/lib/commands/authorizations/revoke.d.ts +1 -1
  74. package/lib/commands/authorizations/revoke.js +5 -1
  75. package/lib/commands/authorizations/rotate.d.ts +1 -1
  76. package/lib/commands/authorizations/rotate.js +5 -1
  77. package/lib/commands/authorizations/update.d.ts +4 -4
  78. package/lib/commands/authorizations/update.js +5 -1
  79. package/lib/commands/autocomplete/doctor.js +2 -2
  80. package/lib/commands/autocomplete/options.d.ts +2 -2
  81. package/lib/commands/autocomplete/options.js +2 -2
  82. package/lib/commands/autocomplete/script.d.ts +1 -1
  83. package/lib/commands/buildpacks/add.d.ts +4 -4
  84. package/lib/commands/buildpacks/clear.d.ts +2 -2
  85. package/lib/commands/buildpacks/index.d.ts +2 -2
  86. package/lib/commands/buildpacks/info.d.ts +1 -1
  87. package/lib/commands/buildpacks/remove.d.ts +4 -4
  88. package/lib/commands/buildpacks/search.d.ts +4 -4
  89. package/lib/commands/buildpacks/set.d.ts +4 -4
  90. package/lib/commands/buildpacks/versions.d.ts +1 -1
  91. package/lib/commands/certs/add.d.ts +16 -0
  92. package/lib/commands/certs/add.js +98 -0
  93. package/lib/commands/certs/auto/disable.d.ts +11 -0
  94. package/lib/commands/certs/auto/disable.js +34 -0
  95. package/lib/commands/certs/auto/enable.d.ts +11 -0
  96. package/lib/commands/certs/auto/enable.js +51 -0
  97. package/lib/commands/certs/auto/index.d.ts +12 -0
  98. package/lib/commands/certs/auto/index.js +94 -0
  99. package/lib/commands/certs/auto/refresh.d.ts +10 -0
  100. package/lib/commands/certs/auto/refresh.js +19 -0
  101. package/lib/commands/certs/generate.d.ts +26 -0
  102. package/lib/commands/certs/generate.js +111 -0
  103. package/lib/commands/certs/index.d.ts +10 -0
  104. package/lib/commands/certs/index.js +26 -0
  105. package/lib/commands/certs/info.d.ts +13 -0
  106. package/lib/commands/certs/info.js +43 -0
  107. package/lib/commands/certs/remove.d.ts +13 -0
  108. package/lib/commands/certs/remove.js +32 -0
  109. package/lib/commands/certs/update.d.ts +18 -0
  110. package/lib/commands/certs/update.js +54 -0
  111. package/lib/commands/ci/config/get.d.ts +4 -3
  112. package/lib/commands/ci/config/get.js +3 -2
  113. package/lib/commands/ci/config/index.d.ts +3 -2
  114. package/lib/commands/ci/config/index.js +3 -2
  115. package/lib/commands/ci/config/set.d.ts +3 -2
  116. package/lib/commands/ci/config/set.js +2 -1
  117. package/lib/commands/ci/config/unset.d.ts +3 -3
  118. package/lib/commands/ci/config/unset.js +3 -3
  119. package/lib/commands/ci/debug.d.ts +2 -2
  120. package/lib/commands/ci/index.d.ts +3 -2
  121. package/lib/commands/ci/index.js +1 -0
  122. package/lib/commands/ci/info.d.ts +5 -4
  123. package/lib/commands/ci/info.js +1 -0
  124. package/lib/commands/ci/last.d.ts +4 -3
  125. package/lib/commands/ci/last.js +1 -0
  126. package/lib/commands/ci/open.d.ts +3 -2
  127. package/lib/commands/ci/open.js +1 -0
  128. package/lib/commands/ci/rerun.d.ts +4 -3
  129. package/lib/commands/ci/rerun.js +1 -0
  130. package/lib/commands/ci/run.d.ts +2 -2
  131. package/lib/commands/clients/create.d.ts +2 -2
  132. package/lib/commands/clients/destroy.d.ts +1 -1
  133. package/lib/commands/clients/info.d.ts +1 -1
  134. package/lib/commands/clients/rotate.d.ts +1 -1
  135. package/lib/commands/clients/update.d.ts +3 -3
  136. package/lib/commands/config/edit.d.ts +3 -3
  137. package/lib/commands/config/get.d.ts +3 -3
  138. package/lib/commands/config/index.d.ts +2 -2
  139. package/lib/commands/config/set.d.ts +12 -0
  140. package/lib/commands/config/set.js +60 -0
  141. package/lib/commands/config/unset.d.ts +2 -2
  142. package/lib/commands/console.d.ts +4 -4
  143. package/lib/commands/container/index.d.ts +6 -0
  144. package/lib/commands/container/index.js +13 -0
  145. package/lib/commands/container/login.d.ts +9 -0
  146. package/lib/commands/container/login.js +57 -0
  147. package/lib/commands/container/logout.d.ts +9 -0
  148. package/lib/commands/container/logout.js +37 -0
  149. package/lib/commands/container/pull.d.ts +14 -0
  150. package/lib/commands/container/pull.js +43 -0
  151. package/lib/commands/container/push.d.ts +16 -0
  152. package/lib/commands/container/push.js +103 -0
  153. package/lib/commands/container/release.d.ts +14 -0
  154. package/lib/commands/container/release.js +91 -0
  155. package/lib/commands/container/rm.d.ts +13 -0
  156. package/lib/commands/container/rm.js +39 -0
  157. package/lib/commands/container/run.d.ts +15 -0
  158. package/lib/commands/container/run.js +66 -0
  159. package/lib/commands/dashboard.d.ts +7 -0
  160. package/lib/commands/dashboard.js +164 -0
  161. package/lib/commands/domains/add.d.ts +4 -4
  162. package/lib/commands/domains/clear.d.ts +2 -2
  163. package/lib/commands/domains/index.d.ts +14 -10
  164. package/lib/commands/domains/index.js +47 -3
  165. package/lib/commands/domains/info.d.ts +3 -3
  166. package/lib/commands/domains/remove.d.ts +3 -3
  167. package/lib/commands/domains/update.d.ts +4 -4
  168. package/lib/commands/domains/wait.d.ts +3 -3
  169. package/lib/commands/drains/add.d.ts +12 -0
  170. package/lib/commands/drains/add.js +23 -0
  171. package/lib/commands/drains/index.d.ts +11 -0
  172. package/lib/commands/drains/index.js +50 -0
  173. package/lib/commands/drains/remove.d.ts +13 -0
  174. package/lib/commands/drains/remove.js +22 -0
  175. package/lib/commands/features/disable.d.ts +12 -0
  176. package/lib/commands/features/disable.js +30 -0
  177. package/lib/commands/features/enable.d.ts +12 -0
  178. package/lib/commands/features/enable.js +29 -0
  179. package/lib/commands/features/index.d.ts +10 -0
  180. package/lib/commands/features/index.js +37 -0
  181. package/lib/commands/features/info.d.ts +13 -0
  182. package/lib/commands/features/info.js +33 -0
  183. package/lib/commands/git/clone.d.ts +3 -3
  184. package/lib/commands/git/credentials.d.ts +1 -1
  185. package/lib/commands/git/remote.d.ts +2 -2
  186. package/lib/commands/keys/add.d.ts +14 -0
  187. package/lib/commands/keys/add.js +101 -0
  188. package/lib/commands/keys/clear.d.ts +5 -0
  189. package/lib/commands/keys/clear.js +17 -0
  190. package/lib/commands/keys/index.d.ts +9 -0
  191. package/lib/commands/keys/index.js +36 -0
  192. package/lib/commands/keys/remove.d.ts +9 -0
  193. package/lib/commands/keys/remove.js +29 -0
  194. package/lib/commands/labs/enable.d.ts +13 -0
  195. package/lib/commands/labs/enable.js +47 -0
  196. package/lib/commands/labs/index.d.ts +11 -0
  197. package/lib/commands/labs/index.js +71 -0
  198. package/lib/commands/labs/info.d.ts +14 -0
  199. package/lib/commands/labs/info.js +49 -0
  200. package/lib/commands/local/index.d.ts +5 -5
  201. package/lib/commands/local/index.js +8 -3
  202. package/lib/commands/local/run.d.ts +2 -2
  203. package/lib/commands/local/run.js +8 -3
  204. package/lib/commands/logs.d.ts +6 -6
  205. package/lib/commands/maintenance/index.d.ts +10 -0
  206. package/lib/commands/maintenance/index.js +19 -0
  207. package/lib/commands/maintenance/off.d.ts +10 -0
  208. package/lib/commands/maintenance/off.js +20 -0
  209. package/lib/commands/maintenance/on.d.ts +10 -0
  210. package/lib/commands/maintenance/on.js +20 -0
  211. package/lib/commands/members/add.d.ts +13 -0
  212. package/lib/commands/members/add.js +33 -0
  213. package/lib/commands/members/index.d.ts +12 -0
  214. package/lib/commands/members/index.js +76 -0
  215. package/lib/commands/members/remove.d.ts +10 -0
  216. package/lib/commands/members/remove.js +58 -0
  217. package/lib/commands/members/set.d.ts +11 -0
  218. package/lib/commands/members/set.js +21 -0
  219. package/lib/commands/notifications/index.d.ts +13 -0
  220. package/lib/commands/notifications/index.js +62 -0
  221. package/lib/commands/orgs/index.d.ts +11 -0
  222. package/lib/commands/orgs/index.js +27 -0
  223. package/lib/commands/orgs/open.d.ts +10 -0
  224. package/lib/commands/orgs/open.js +24 -0
  225. package/lib/commands/pg/backups/cancel.d.ts +15 -0
  226. package/lib/commands/pg/backups/cancel.js +49 -0
  227. package/lib/commands/pg/backups/capture.d.ts +15 -0
  228. package/lib/commands/pg/backups/capture.js +65 -0
  229. package/lib/commands/pg/backups/delete.d.ts +15 -0
  230. package/lib/commands/pg/backups/delete.js +38 -0
  231. package/lib/commands/pg/backups/download.d.ts +14 -0
  232. package/lib/commands/pg/backups/download.js +58 -0
  233. package/lib/commands/pg/backups/index.d.ts +20 -0
  234. package/lib/commands/pg/backups/index.js +129 -0
  235. package/lib/commands/pg/backups/info.d.ts +17 -0
  236. package/lib/commands/pg/backups/info.js +92 -0
  237. package/lib/commands/pg/backups/restore.d.ts +19 -0
  238. package/lib/commands/pg/backups/restore.js +107 -0
  239. package/lib/commands/pg/backups/schedule.d.ts +21 -0
  240. package/lib/commands/pg/backups/schedule.js +82 -0
  241. package/lib/commands/pg/backups/schedules.d.ts +10 -0
  242. package/lib/commands/pg/backups/schedules.js +31 -0
  243. package/lib/commands/pg/backups/unschedule.d.ts +13 -0
  244. package/lib/commands/pg/backups/unschedule.js +44 -0
  245. package/lib/commands/pg/backups/url.d.ts +13 -0
  246. package/lib/commands/pg/backups/url.js +41 -0
  247. package/lib/commands/pg/bloat.d.ts +13 -0
  248. package/lib/commands/pg/bloat.js +87 -0
  249. package/lib/commands/pg/blocking.d.ts +13 -0
  250. package/lib/commands/pg/blocking.js +42 -0
  251. package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
  252. package/lib/commands/pg/connection-pooling/attach.js +41 -0
  253. package/lib/commands/pg/copy.d.ts +18 -0
  254. package/lib/commands/pg/copy.js +86 -0
  255. package/lib/commands/pg/credentials/create.d.ts +14 -0
  256. package/lib/commands/pg/credentials/create.js +40 -0
  257. package/lib/commands/pg/credentials/destroy.d.ts +16 -0
  258. package/lib/commands/pg/credentials/destroy.js +48 -0
  259. package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
  260. package/lib/commands/pg/credentials/repair-default.js +39 -0
  261. package/lib/commands/pg/credentials/rotate.d.ts +16 -0
  262. package/lib/commands/pg/credentials/rotate.js +82 -0
  263. package/lib/commands/pg/credentials/url.d.ts +14 -0
  264. package/lib/commands/pg/credentials/url.js +64 -0
  265. package/lib/commands/pg/credentials.d.ts +16 -0
  266. package/lib/commands/pg/credentials.js +61 -0
  267. package/lib/commands/pg/diagnose.d.ts +18 -0
  268. package/lib/commands/pg/diagnose.js +109 -0
  269. package/lib/commands/pg/info.d.ts +14 -0
  270. package/lib/commands/pg/info.js +92 -0
  271. package/lib/commands/pg/kill.d.ts +15 -0
  272. package/lib/commands/pg/kill.js +32 -0
  273. package/lib/commands/pg/killall.d.ts +13 -0
  274. package/lib/commands/pg/killall.js +26 -0
  275. package/lib/commands/pg/links/create.d.ts +15 -0
  276. package/lib/commands/pg/links/create.js +58 -0
  277. package/lib/commands/pg/links/destroy.d.ts +16 -0
  278. package/lib/commands/pg/links/destroy.js +42 -0
  279. package/lib/commands/pg/links/index.d.ts +13 -0
  280. package/lib/commands/pg/links/index.js +59 -0
  281. package/lib/commands/pg/locks.d.ts +15 -0
  282. package/lib/commands/pg/locks.js +53 -0
  283. package/lib/commands/pg/maintenance/index.d.ts +13 -0
  284. package/lib/commands/pg/maintenance/index.js +29 -0
  285. package/lib/commands/pg/maintenance/run.d.ts +14 -0
  286. package/lib/commands/pg/maintenance/run.js +37 -0
  287. package/lib/commands/pg/maintenance/window.d.ts +15 -0
  288. package/lib/commands/pg/maintenance/window.js +41 -0
  289. package/lib/commands/pg/outliers.d.ts +19 -0
  290. package/lib/commands/pg/outliers.js +97 -0
  291. package/lib/commands/pg/promote.d.ts +14 -0
  292. package/lib/commands/pg/promote.js +169 -0
  293. package/lib/commands/pg/ps.d.ts +14 -0
  294. package/lib/commands/pg/ps.js +52 -0
  295. package/lib/commands/pg/psql.d.ts +16 -0
  296. package/lib/commands/pg/psql.js +49 -0
  297. package/lib/commands/pg/pull.d.ts +18 -0
  298. package/lib/commands/pg/pull.js +87 -0
  299. package/lib/commands/pg/push.d.ts +18 -0
  300. package/lib/commands/pg/push.js +84 -0
  301. package/lib/commands/pg/reset.d.ts +15 -0
  302. package/lib/commands/pg/reset.js +44 -0
  303. package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
  304. package/lib/commands/pg/settings/auto-explain/log-analyze.js +32 -0
  305. package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
  306. package/lib/commands/pg/settings/auto-explain/log-buffers.js +30 -0
  307. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +16 -0
  308. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +33 -0
  309. package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
  310. package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +25 -0
  311. package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
  312. package/lib/commands/pg/settings/auto-explain/log-triggers.js +30 -0
  313. package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
  314. package/lib/commands/pg/settings/auto-explain/log-verbose.js +33 -0
  315. package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
  316. package/lib/commands/pg/settings/auto-explain.js +38 -0
  317. package/lib/commands/pg/settings/index.d.ts +13 -0
  318. package/lib/commands/pg/settings/index.js +34 -0
  319. package/lib/commands/pg/settings/log-connections.d.ts +17 -0
  320. package/lib/commands/pg/settings/log-connections.js +34 -0
  321. package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
  322. package/lib/commands/pg/settings/log-lock-waits.js +31 -0
  323. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +15 -0
  324. package/lib/commands/pg/settings/log-min-duration-statement.js +33 -0
  325. package/lib/commands/pg/settings/log-statement.d.ts +12 -0
  326. package/lib/commands/pg/settings/log-statement.js +30 -0
  327. package/lib/commands/pg/settings/track-functions.d.ts +12 -0
  328. package/lib/commands/pg/settings/track-functions.js +29 -0
  329. package/lib/commands/pg/unfollow.d.ts +14 -0
  330. package/lib/commands/pg/unfollow.js +40 -0
  331. package/lib/commands/pg/upgrade.d.ts +15 -0
  332. package/lib/commands/pg/upgrade.js +58 -0
  333. package/lib/commands/pg/vacuum-stats.d.ts +13 -0
  334. package/lib/commands/pg/vacuum-stats.js +65 -0
  335. package/lib/commands/pg/wait.d.ts +15 -0
  336. package/lib/commands/pg/wait.js +79 -0
  337. package/lib/commands/pipelines/add.d.ts +4 -4
  338. package/lib/commands/pipelines/connect.d.ts +2 -2
  339. package/lib/commands/pipelines/connect.js +1 -1
  340. package/lib/commands/pipelines/create.d.ts +5 -5
  341. package/lib/commands/pipelines/destroy.d.ts +1 -1
  342. package/lib/commands/pipelines/diff.d.ts +2 -2
  343. package/lib/commands/pipelines/diff.js +1 -1
  344. package/lib/commands/pipelines/info.d.ts +1 -1
  345. package/lib/commands/pipelines/open.d.ts +1 -1
  346. package/lib/commands/pipelines/promote.d.ts +3 -3
  347. package/lib/commands/pipelines/remove.d.ts +2 -2
  348. package/lib/commands/pipelines/rename.d.ts +2 -2
  349. package/lib/commands/pipelines/setup.d.ts +3 -3
  350. package/lib/commands/pipelines/transfer.d.ts +3 -3
  351. package/lib/commands/pipelines/update.d.ts +3 -3
  352. package/lib/commands/ps/autoscale/disable.d.ts +2 -2
  353. package/lib/commands/ps/autoscale/enable.d.ts +5 -5
  354. package/lib/commands/ps/index.d.ts +15 -0
  355. package/lib/commands/ps/index.js +195 -0
  356. package/lib/commands/ps/restart.d.ts +17 -0
  357. package/lib/commands/ps/restart.js +38 -0
  358. package/lib/commands/ps/scale.d.ts +13 -0
  359. package/lib/commands/ps/scale.js +108 -0
  360. package/lib/commands/ps/stop.d.ts +17 -0
  361. package/lib/commands/ps/stop.js +33 -0
  362. package/lib/commands/ps/type.d.ts +12 -0
  363. package/lib/commands/ps/type.js +163 -0
  364. package/lib/commands/ps/wait.d.ts +4 -4
  365. package/lib/commands/rake.d.ts +4 -4
  366. package/lib/commands/redis/cli.d.ts +15 -0
  367. package/lib/commands/redis/cli.js +204 -0
  368. package/lib/commands/redis/credentials.d.ts +14 -0
  369. package/lib/commands/redis/credentials.js +32 -0
  370. package/lib/commands/redis/info.d.ts +15 -0
  371. package/lib/commands/redis/info.js +25 -0
  372. package/lib/commands/redis/keyspace-notifications.d.ts +14 -0
  373. package/lib/commands/redis/keyspace-notifications.js +47 -0
  374. package/lib/commands/redis/maintenance.d.ts +16 -0
  375. package/lib/commands/redis/maintenance.js +63 -0
  376. package/lib/commands/redis/maxmemory.d.ts +14 -0
  377. package/lib/commands/redis/maxmemory.js +40 -0
  378. package/lib/commands/redis/promote.d.ts +13 -0
  379. package/lib/commands/redis/promote.js +39 -0
  380. package/lib/commands/redis/stats-reset.d.ts +14 -0
  381. package/lib/commands/redis/stats-reset.js +36 -0
  382. package/lib/commands/redis/timeout.d.ts +14 -0
  383. package/lib/commands/redis/timeout.js +35 -0
  384. package/lib/commands/redis/upgrade.d.ts +15 -0
  385. package/lib/commands/redis/upgrade.js +37 -0
  386. package/lib/commands/redis/wait.d.ts +14 -0
  387. package/lib/commands/redis/wait.js +60 -0
  388. package/lib/commands/releases/index.d.ts +14 -0
  389. package/lib/commands/releases/index.js +124 -0
  390. package/lib/commands/releases/info.d.ts +15 -0
  391. package/lib/commands/releases/info.js +56 -0
  392. package/lib/commands/releases/output.d.ts +13 -0
  393. package/lib/commands/releases/output.js +37 -0
  394. package/lib/commands/releases/rollback.d.ts +14 -0
  395. package/lib/commands/releases/rollback.js +48 -0
  396. package/lib/commands/reviewapps/disable.d.ts +3 -3
  397. package/lib/commands/reviewapps/enable.d.ts +3 -3
  398. package/lib/commands/run/detached.d.ts +7 -8
  399. package/lib/commands/run/detached.js +16 -20
  400. package/lib/commands/run/index.d.ts +10 -11
  401. package/lib/commands/run/index.js +16 -17
  402. package/lib/commands/run/inside.d.ts +5 -7
  403. package/lib/commands/run/inside.js +10 -14
  404. package/lib/commands/sessions/destroy.d.ts +1 -1
  405. package/lib/commands/spaces/create.d.ts +22 -0
  406. package/lib/commands/spaces/create.js +73 -0
  407. package/lib/commands/spaces/destroy.d.ts +14 -0
  408. package/lib/commands/spaces/destroy.js +49 -0
  409. package/lib/commands/spaces/drains/get.d.ts +12 -0
  410. package/lib/commands/spaces/drains/get.js +27 -0
  411. package/lib/commands/spaces/drains/set.d.ts +14 -0
  412. package/lib/commands/spaces/drains/set.js +29 -0
  413. package/lib/commands/spaces/hosts.d.ts +14 -0
  414. package/lib/commands/spaces/hosts.js +37 -0
  415. package/lib/commands/spaces/index.d.ts +16 -0
  416. package/lib/commands/spaces/index.js +55 -0
  417. package/lib/commands/spaces/info.d.ts +14 -0
  418. package/lib/commands/spaces/info.js +47 -0
  419. package/lib/commands/spaces/peerings/accept.d.ts +15 -0
  420. package/lib/commands/spaces/peerings/accept.js +36 -0
  421. package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
  422. package/lib/commands/spaces/peerings/destroy.js +45 -0
  423. package/lib/commands/spaces/peerings/index.d.ts +13 -0
  424. package/lib/commands/spaces/peerings/index.js +33 -0
  425. package/lib/commands/spaces/peerings/info.d.ts +15 -0
  426. package/lib/commands/spaces/peerings/info.js +59 -0
  427. package/lib/commands/spaces/ps.d.ts +15 -0
  428. package/lib/commands/spaces/ps.js +82 -0
  429. package/lib/commands/spaces/rename.d.ts +11 -0
  430. package/lib/commands/spaces/rename.js +26 -0
  431. package/lib/commands/spaces/topology.d.ts +32 -0
  432. package/lib/commands/spaces/topology.js +89 -0
  433. package/lib/commands/spaces/transfer.d.ts +11 -0
  434. package/lib/commands/spaces/transfer.js +35 -0
  435. package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
  436. package/lib/commands/spaces/trusted-ips/add.js +43 -0
  437. package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
  438. package/lib/commands/spaces/trusted-ips/index.js +52 -0
  439. package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
  440. package/lib/commands/spaces/trusted-ips/remove.js +44 -0
  441. package/lib/commands/spaces/vpn/config.d.ts +14 -0
  442. package/lib/commands/spaces/vpn/config.js +54 -0
  443. package/lib/commands/spaces/vpn/connect.d.ts +15 -0
  444. package/lib/commands/spaces/vpn/connect.js +48 -0
  445. package/lib/commands/spaces/vpn/connections.d.ts +17 -0
  446. package/lib/commands/spaces/vpn/connections.js +57 -0
  447. package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
  448. package/lib/commands/spaces/vpn/destroy.js +38 -0
  449. package/lib/commands/spaces/vpn/info.d.ts +16 -0
  450. package/lib/commands/spaces/vpn/info.js +82 -0
  451. package/lib/commands/spaces/vpn/update.d.ts +14 -0
  452. package/lib/commands/spaces/vpn/update.js +39 -0
  453. package/lib/commands/spaces/vpn/wait.d.ts +16 -0
  454. package/lib/commands/spaces/vpn/wait.js +70 -0
  455. package/lib/commands/spaces/wait.d.ts +17 -0
  456. package/lib/commands/spaces/wait.js +89 -0
  457. package/lib/commands/status.js +4 -4
  458. package/lib/commands/teams/index.d.ts +9 -0
  459. package/lib/commands/teams/index.js +29 -0
  460. package/lib/commands/webhooks/add.d.ts +8 -8
  461. package/lib/commands/webhooks/deliveries/index.d.ts +4 -4
  462. package/lib/commands/webhooks/deliveries/info.d.ts +4 -4
  463. package/lib/commands/webhooks/events/index.d.ts +3 -3
  464. package/lib/commands/webhooks/events/info.d.ts +4 -4
  465. package/lib/commands/webhooks/index.d.ts +3 -3
  466. package/lib/commands/webhooks/info.d.ts +4 -4
  467. package/lib/commands/webhooks/remove.d.ts +4 -4
  468. package/lib/commands/webhooks/update.d.ts +9 -9
  469. package/lib/global_telemetry.js +10 -4
  470. package/lib/hooks/postrun/performance_analytics.js +5 -4
  471. package/lib/hooks/prerun/analytics.js +3 -0
  472. package/lib/lib/addons/addons_wait.d.ts +78 -0
  473. package/lib/lib/addons/addons_wait.js +56 -0
  474. package/lib/lib/addons/create_addon.d.ts +7 -0
  475. package/lib/lib/addons/create_addon.js +59 -0
  476. package/lib/lib/addons/destroy_addon.d.ts +3 -0
  477. package/lib/lib/addons/destroy_addon.js +48 -0
  478. package/lib/lib/addons/resolve.d.ts +39 -0
  479. package/lib/lib/addons/resolve.js +180 -0
  480. package/lib/lib/addons/util.d.ts +9 -0
  481. package/lib/lib/addons/util.js +72 -0
  482. package/lib/lib/apps/app-transfer.d.ts +10 -0
  483. package/lib/lib/apps/app-transfer.js +35 -0
  484. package/lib/lib/apps/error_info.d.ts +7 -0
  485. package/lib/lib/apps/error_info.js +185 -0
  486. package/lib/lib/autocomplete/base.d.ts +1 -1
  487. package/lib/lib/autocomplete/completions.d.ts +5 -1
  488. package/lib/lib/autocomplete/completions.js +6 -1
  489. package/lib/lib/certs/certificate_details.d.ts +2 -0
  490. package/lib/lib/certs/certificate_details.js +37 -0
  491. package/lib/lib/certs/display_table.d.ts +2 -0
  492. package/lib/lib/certs/display_table.js +51 -0
  493. package/lib/lib/certs/domains.d.ts +3 -0
  494. package/lib/lib/certs/domains.js +45 -0
  495. package/lib/lib/certs/flags.d.ts +7 -0
  496. package/lib/lib/certs/flags.js +42 -0
  497. package/lib/lib/certs/format_date.d.ts +1 -0
  498. package/lib/lib/certs/format_date.js +11 -0
  499. package/lib/lib/certs/get_cert_and_key.d.ts +9 -0
  500. package/lib/lib/certs/get_cert_and_key.js +11 -0
  501. package/lib/lib/ci/git.d.ts +7 -1
  502. package/lib/lib/ci/git.js +44 -1
  503. package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
  504. package/lib/lib/ci/source.js +3 -3
  505. package/lib/lib/ci/test-run.js +2 -2
  506. package/lib/lib/config/quote.js +1 -1
  507. package/lib/lib/confirmCommand.d.ts +1 -0
  508. package/lib/lib/confirmCommand.js +23 -0
  509. package/lib/lib/container/debug.d.ts +2 -0
  510. package/lib/lib/container/debug.js +5 -0
  511. package/lib/lib/container/docker_helper.d.ts +24 -0
  512. package/lib/lib/container/docker_helper.js +168 -0
  513. package/lib/lib/container/helpers.d.ts +8 -0
  514. package/lib/lib/container/helpers.js +29 -0
  515. package/lib/lib/container/streamer.d.ts +1 -0
  516. package/lib/lib/container/streamer.js +31 -0
  517. package/lib/lib/domains/domains.d.ts +6 -0
  518. package/lib/lib/domains/domains.js +104 -0
  519. package/lib/lib/git/git.d.ts +3 -0
  520. package/lib/lib/git/git.js +22 -3
  521. package/lib/lib/local/run-foreman.d.ts +1 -0
  522. package/lib/lib/local/run-foreman.js +229 -1
  523. package/lib/lib/members/util.d.ts +3 -0
  524. package/lib/lib/members/util.js +25 -0
  525. package/lib/lib/members/utils.d.ts +2 -0
  526. package/lib/lib/members/utils.js +14 -0
  527. package/lib/lib/notify.d.ts +1 -0
  528. package/lib/lib/notify.js +23 -0
  529. package/lib/lib/orgs/utils.d.ts +5 -0
  530. package/lib/lib/orgs/utils.js +24 -0
  531. package/lib/lib/pg/backups.d.ts +17 -0
  532. package/lib/lib/pg/backups.js +164 -0
  533. package/lib/lib/pg/bastion.d.ts +29 -0
  534. package/lib/lib/pg/bastion.js +121 -0
  535. package/lib/lib/pg/config.d.ts +2 -0
  536. package/lib/lib/pg/config.js +13 -0
  537. package/lib/lib/pg/download.d.ts +5 -0
  538. package/lib/lib/pg/download.js +34 -0
  539. package/lib/lib/pg/fetcher.d.ts +39 -0
  540. package/lib/lib/pg/fetcher.js +137 -0
  541. package/lib/lib/pg/host.d.ts +1 -0
  542. package/lib/lib/pg/host.js +7 -0
  543. package/lib/lib/pg/psql.d.ts +48 -0
  544. package/lib/lib/pg/psql.js +252 -0
  545. package/lib/lib/pg/push_pull.d.ts +13 -0
  546. package/lib/lib/pg/push_pull.js +118 -0
  547. package/lib/lib/pg/setter.d.ts +16 -0
  548. package/lib/lib/pg/setter.js +65 -0
  549. package/lib/lib/pg/types.d.ts +230 -0
  550. package/lib/lib/pg/types.js +2 -0
  551. package/lib/lib/pg/util.d.ts +36 -0
  552. package/lib/lib/pg/util.js +183 -0
  553. package/lib/lib/redis/api.d.ts +65 -0
  554. package/lib/lib/redis/api.js +122 -0
  555. package/lib/lib/releases/output.d.ts +1 -0
  556. package/lib/lib/releases/output.js +14 -0
  557. package/lib/lib/releases/releases.d.ts +6 -0
  558. package/lib/lib/releases/releases.js +32 -0
  559. package/lib/lib/releases/status_helper.d.ts +5 -0
  560. package/lib/lib/releases/status_helper.js +25 -0
  561. package/lib/lib/run/dyno.js +2 -2
  562. package/lib/lib/run/log-displayer.d.ts +1 -1
  563. package/lib/lib/spaces/format.d.ts +4 -0
  564. package/lib/lib/spaces/format.js +60 -0
  565. package/lib/lib/spaces/hosts.d.ts +9 -0
  566. package/lib/lib/spaces/hosts.js +34 -0
  567. package/lib/lib/spaces/outbound-rules.d.ts +4 -0
  568. package/lib/lib/spaces/outbound-rules.js +78 -0
  569. package/lib/lib/spaces/parsers.d.ts +8 -0
  570. package/lib/lib/spaces/parsers.js +17 -0
  571. package/lib/lib/spaces/peering.d.ts +4 -0
  572. package/lib/lib/spaces/peering.js +53 -0
  573. package/lib/lib/spaces/spaces.d.ts +4 -0
  574. package/lib/lib/spaces/spaces.js +37 -0
  575. package/lib/lib/spaces/vpn-connections.d.ts +2 -0
  576. package/lib/lib/spaces/vpn-connections.js +22 -0
  577. package/lib/lib/teamUtils.d.ts +3 -0
  578. package/lib/lib/teamUtils.js +18 -0
  579. package/lib/lib/time.d.ts +2 -0
  580. package/lib/lib/time.js +29 -0
  581. package/lib/lib/types/app_errors.d.ts +6 -0
  582. package/lib/lib/types/app_errors.js +2 -0
  583. package/lib/lib/types/domain.d.ts +61 -0
  584. package/lib/lib/types/domain.js +5 -0
  585. package/lib/lib/types/notifications.d.ts +20 -0
  586. package/lib/lib/types/notifications.js +2 -0
  587. package/lib/lib/utils/keyValueParser.d.ts +4 -0
  588. package/lib/lib/utils/keyValueParser.js +9 -0
  589. package/lib/lib/utils/multisort.d.ts +32 -0
  590. package/lib/lib/utils/multisort.js +66 -0
  591. package/lib/lib/utils/paginator.d.ts +2 -0
  592. package/lib/lib/utils/paginator.js +29 -0
  593. package/lib/lib/utils/uuid-validate.d.ts +1 -0
  594. package/lib/lib/utils/uuid-validate.js +7 -0
  595. package/lib/user-config.js +2 -2
  596. package/oclif.manifest.json +12684 -2674
  597. package/package.json +116 -65
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
43
+ * [`heroku certs`](docs/certs.md) - SSL certificates
44
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
@@ -62,14 +62,13 @@ For other issues, [submit a support ticket](https://help.heroku.com/).
62
62
  * [`heroku pipelines`](docs/pipelines.md) - manage pipelines
63
63
  * [`heroku plugins`](docs/plugins.md) - List installed plugins.
64
64
  * [`heroku ps`](docs/ps.md) - Client tools for Heroku Exec
65
- * [`heroku psql`](docs/psql.md) - open a psql shell to the database
66
65
  * [`heroku redis`](docs/redis.md) - manage heroku redis instances
67
66
  * [`heroku regions`](docs/regions.md) - list available regions for deployment
68
67
  * [`heroku releases`](docs/releases.md) - display the releases for an app
69
68
  * [`heroku reviewapps`](docs/reviewapps.md) - manage reviewapps in pipelines
70
69
  * [`heroku run`](docs/run.md) - run a one-off process inside a Heroku dyno
71
70
  * [`heroku sessions`](docs/sessions.md) - OAuth sessions
72
- * [`heroku spaces`](docs/spaces.md) - manage heroku private spaces
71
+ * [`heroku spaces`](docs/spaces.md) - list available spaces
73
72
  * [`heroku status`](docs/status.md) - display current status of the Heroku platform
74
73
  * [`heroku teams`](docs/teams.md) - manage teams
75
74
  * [`heroku update`](docs/update.md) - update the Heroku CLI
@@ -85,17 +84,14 @@ This project is built with [lerna](https://lerna.js.org/). The core plugins are
85
84
 
86
85
  After cloning the repo
87
86
  1. Run `yarn` to install dependencies
88
- 2. Run `yarn lerna bootstrap` set up Lerna and link the packages together
89
- - 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.
90
88
 
91
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.
92
90
 
93
91
  Testing
94
92
  =======
95
93
 
96
- Run all tests with `yarn lerna run test`.
97
-
98
- 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`.
99
95
 
100
96
  ## Debugging
101
97
 
@@ -103,7 +99,6 @@ Using WebStorm (from Jetbrains / IntelliJ), you can run/debug an individual test
103
99
 
104
100
  - Create a new run/debug configuration
105
101
  - Select the 'Mocha' type
106
- - Set the working directory to the directory of the package you are using. (i.e. ~/Heroku/Repos/cli/packages/certs-v5)
107
102
 
108
103
  Releasing
109
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,20 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Create extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static example: string;
6
+ static strict: boolean;
7
+ static hiddenAliases: string[];
8
+ static flags: {
9
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ as: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
12
+ wait: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
14
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
15
+ };
16
+ static args: {
17
+ 'service:plan': import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,96 @@
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
+ const tsheredoc_1 = require("tsheredoc");
10
+ function parseConfig(args) {
11
+ const config = {};
12
+ while (args.length > 0) {
13
+ let key = args.shift();
14
+ if (!key.startsWith('--'))
15
+ throw new Error(`Unexpected argument ${key}`);
16
+ key = key.replace(/^--/, '');
17
+ let val;
18
+ if (key.includes('=')) {
19
+ [key, ...val] = key.split('=');
20
+ val = val.join('=');
21
+ if (val === 'true') {
22
+ val = true;
23
+ }
24
+ config[key] = val;
25
+ }
26
+ else {
27
+ val = args.shift();
28
+ if (!val) {
29
+ config[key] = true;
30
+ }
31
+ else if (val.startsWith('--')) {
32
+ config[key] = true;
33
+ args.unshift(val);
34
+ }
35
+ else {
36
+ config[key] = val;
37
+ }
38
+ }
39
+ }
40
+ return config;
41
+ }
42
+ class Create extends command_1.Command {
43
+ async run() {
44
+ var _a;
45
+ const _b = await this.parse(Create), { flags, args } = _b, restParse = tslib_1.__rest(_b, ["flags", "args"]);
46
+ const { app, name, as, wait, confirm } = flags;
47
+ const servicePlan = args['service:plan'];
48
+ const argv = restParse.argv
49
+ // oclif duplicates specified args in argv
50
+ .filter(arg => arg !== servicePlan);
51
+ const config = parseConfig(argv);
52
+ let addon;
53
+ try {
54
+ addon = await (0, create_addon_1.default)(this.heroku, app, servicePlan, confirm, wait, { config, name, as });
55
+ if (wait) {
56
+ (0, notify_1.default)(`heroku addons:create ${addon.name}`, 'Add-on successfully provisioned');
57
+ }
58
+ }
59
+ catch (error) {
60
+ if (wait) {
61
+ (0, notify_1.default)(`heroku addons:create ${servicePlan}`, 'Add-on failed to provision', false);
62
+ }
63
+ throw error;
64
+ }
65
+ await this.config.runHook('recache', { type: 'addon', app, addon });
66
+ // eslint-disable-next-line no-unsafe-optional-chaining
67
+ 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`);
68
+ }
69
+ }
70
+ exports.default = Create;
71
+ Create.topic = 'addons';
72
+ Create.description = (0, tsheredoc_1.default) `
73
+ Create a new add-on resource.
74
+
75
+ In order to add additional config items, please place them at the end of the command after a double-dash (--).
76
+ `;
77
+ Create.example = (0, tsheredoc_1.default) `
78
+ Create an add-on resource:
79
+ $heroku addons:create heroku-redis --app my-app
80
+
81
+ Create an add-on resource with additional config items:
82
+ $heroku addons:create heroku-postgresql:standard-0 --app my-app -- --fork DATABASE
83
+ `;
84
+ Create.strict = false;
85
+ Create.hiddenAliases = ['addons:add'];
86
+ Create.flags = {
87
+ name: command_1.flags.string({ description: 'name for the add-on resource' }),
88
+ as: command_1.flags.string({ description: 'name for the initial add-on attachment' }),
89
+ confirm: command_1.flags.string({ description: 'overwrite existing config vars or existing add-on attachments' }),
90
+ wait: command_1.flags.boolean({ description: 'watch add-on creation status and exit when complete' }),
91
+ app: command_1.flags.app({ required: true }),
92
+ remote: command_1.flags.remote(),
93
+ };
94
+ Create.args = {
95
+ 'service:plan': core_1.Args.string({ required: true }),
96
+ };
@@ -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
+ };