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
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Pull extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static usage: string;
6
+ static example: string;
7
+ static strict: boolean;
8
+ static flags: {
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
+ verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const command_1 = require("@heroku-cli/command");
4
+ const core_1 = require("@oclif/core");
5
+ const DockerHelper = require("../../lib/container/docker_helper");
6
+ const debug_1 = require("../../lib/container/debug");
7
+ const color_1 = require("@heroku-cli/color");
8
+ class Pull extends command_1.Command {
9
+ async run() {
10
+ const { argv, flags } = await this.parse(Pull);
11
+ const { verbose, app } = flags;
12
+ if (argv.length === 0) {
13
+ this.error(`Error: Requires one or more process types\n${Pull.example}`);
14
+ }
15
+ const herokuHost = process.env.HEROKU_HOST || 'heroku.com';
16
+ const registry = `registry.${herokuHost}`;
17
+ if (verbose) {
18
+ debug_1.debug.enabled = true;
19
+ }
20
+ for (const process of argv) {
21
+ const tag = `${registry}/${app}/${process}`;
22
+ core_1.ux.styledHeader(`Pulling ${process} as ${tag}`);
23
+ await DockerHelper.pullImage(tag);
24
+ }
25
+ }
26
+ }
27
+ exports.default = Pull;
28
+ Pull.topic = 'container';
29
+ Pull.description = 'pulls an image from an app\'s process type';
30
+ Pull.usage = 'container:pull -a APP [-v] PROCESS_TYPE...';
31
+ Pull.example = `
32
+ ${color_1.default.cmd('$ heroku container:pull web')} # Pulls the web image from the app
33
+ ${color_1.default.cmd('$ heroku container:pull web worker')} # Pulls both the web and worker images from the app
34
+ ${color_1.default.cmd('$ heroku container:pull web:latest')} # Pulls the latest tag from the web image`;
35
+ Pull.strict = false;
36
+ Pull.flags = {
37
+ app: command_1.flags.app({ required: true }),
38
+ remote: command_1.flags.remote(),
39
+ verbose: command_1.flags.boolean({ char: 'v' }),
40
+ };
@@ -0,0 +1,16 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Push extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static strict: boolean;
6
+ static flags: {
7
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ recursive: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ arg: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ 'context-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
12
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
13
+ };
14
+ static examples: string[];
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const command_1 = require("@heroku-cli/command");
4
+ const core_1 = require("@oclif/core");
5
+ const DockerHelper = require("../../lib/container/docker_helper");
6
+ const debug_1 = require("../../lib/container/debug");
7
+ async function selectJobs(jobs, processTypes, recursive) {
8
+ let filteredJobs = {};
9
+ let selectedJobs = [];
10
+ if (Object.keys(jobs).length === 0) {
11
+ return selectedJobs;
12
+ }
13
+ if (recursive) {
14
+ if (processTypes.length > 0) {
15
+ filteredJobs = DockerHelper.filterByProcessType(jobs, processTypes);
16
+ }
17
+ selectedJobs = await DockerHelper.chooseJobs(filteredJobs);
18
+ }
19
+ else if (jobs.standard) {
20
+ jobs.standard.forEach(pj => {
21
+ pj.resource = pj.resource.replace(/standard$/, processTypes[0]);
22
+ });
23
+ selectedJobs = jobs.standard || [];
24
+ }
25
+ return selectedJobs;
26
+ }
27
+ class Push extends command_1.Command {
28
+ async run() {
29
+ const { argv: processTypes, flags } = await this.parse(Push);
30
+ const { verbose, app, recursive, arg, 'context-path': contextPath } = flags;
31
+ if (verbose) {
32
+ debug_1.debug.enabled = true;
33
+ }
34
+ if (processTypes.length === 0 && !recursive) {
35
+ core_1.ux.error('Requires either --recursive or one or more process types', { exit: 1 });
36
+ }
37
+ if (processTypes.length > 1 && !recursive) {
38
+ core_1.ux.error('Requires exactly one target process type, or --recursive option', { exit: 1 });
39
+ }
40
+ await this.heroku.get(`/apps/${app}`);
41
+ const herokuHost = process.env.HEROKU_HOST || 'heroku.com';
42
+ const registry = `registry.${herokuHost}`;
43
+ const dockerfiles = DockerHelper.getDockerfiles(process.cwd(), recursive);
44
+ const possibleJobs = DockerHelper.getJobs(`${registry}/${app}`, dockerfiles);
45
+ const jobs = await selectJobs(possibleJobs, processTypes, recursive);
46
+ if (jobs.length === 0) {
47
+ core_1.ux.error('No images to push', { exit: 1 });
48
+ }
49
+ const buildArgs = (arg === undefined) ? [] : arg.split(',');
50
+ try {
51
+ for (const job of jobs) {
52
+ if (job.name === 'standard') {
53
+ core_1.ux.styledHeader(`Building ${processTypes} (${job.dockerfile})`);
54
+ }
55
+ else {
56
+ core_1.ux.styledHeader(`Building ${job.name} (${job.dockerfile})`);
57
+ }
58
+ await DockerHelper.buildImage(job.dockerfile, job.resource, buildArgs, contextPath);
59
+ }
60
+ }
61
+ catch (error) {
62
+ core_1.ux.error(`docker build exited with ${error}`, { exit: 1 });
63
+ }
64
+ try {
65
+ for (const job of jobs) {
66
+ if (job.name === 'standard') {
67
+ core_1.ux.styledHeader(`Pushing ${processTypes} (${job.dockerfile})`);
68
+ }
69
+ else {
70
+ core_1.ux.styledHeader(`Pushing ${job.name} (${job.dockerfile})`);
71
+ }
72
+ await DockerHelper.pushImage(job.resource);
73
+ }
74
+ const plural = jobs.length !== 1;
75
+ core_1.ux.log(`Your image${plural ? 's have' : ' has'} been successfully pushed. You can now release ${plural ? 'them' : 'it'} with the 'container:release' command.`);
76
+ }
77
+ catch (error) {
78
+ core_1.ux.error(`docker push exited with ${error}`, { exit: 1 });
79
+ }
80
+ }
81
+ }
82
+ exports.default = Push;
83
+ Push.topic = 'container';
84
+ Push.description = 'builds, then pushes Docker images to deploy your Heroku app';
85
+ Push.strict = false;
86
+ Push.flags = {
87
+ app: command_1.flags.app({ required: true }),
88
+ verbose: command_1.flags.boolean({ char: 'v' }),
89
+ recursive: command_1.flags.boolean({ char: 'R', description: 'pushes Dockerfile.<process> found in current and subdirectories' }),
90
+ arg: command_1.flags.string({ description: 'set build-time variables' }),
91
+ 'context-path': command_1.flags.string({ description: 'path to use as build context (defaults to Dockerfile dir)' }),
92
+ remote: command_1.flags.remote({ char: 'r' }),
93
+ };
94
+ Push.examples = [
95
+ '$ heroku container:push web # Pushes Dockerfile to web process type',
96
+ '$ heroku container:push worker # Pushes Dockerfile to worker process type',
97
+ '$ heroku container:push web worker --recursive # Pushes Dockerfile.web and Dockerfile.worker',
98
+ '$ heroku container:push --recursive # Pushes Dockerfile.*',
99
+ '$ heroku container:push web --arg ENV=live,HTTPS=on # Build-time variables',
100
+ '$ heroku container:push --recursive --context-path . # Pushes Dockerfile.* using current dir as build context',
101
+ ];
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class ContainerRelease extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static usage: string;
6
+ static example: string;
7
+ static strict: boolean;
8
+ static flags: {
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
+ verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,89 @@
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 debug_1 = require("../../lib/container/debug");
7
+ const streamer_1 = require("../../lib/container/streamer");
8
+ class ContainerRelease extends command_1.Command {
9
+ async run() {
10
+ const { flags, argv } = await this.parse(ContainerRelease);
11
+ const { app, verbose } = flags;
12
+ if (argv.length === 0) {
13
+ this.error(`Error: Requires one or more process types\n ${ContainerRelease.example}`);
14
+ }
15
+ if (verbose) {
16
+ debug_1.debug.enabled = true;
17
+ }
18
+ await this.heroku.get(`/apps/${app}`);
19
+ const herokuHost = process.env.HEROKU_HOST || 'heroku.com';
20
+ const updateData = [];
21
+ for (const process of argv) {
22
+ const image = `${app}/${process}`;
23
+ const tag = 'latest';
24
+ const { body: imageResp } = await this.heroku.get(`/v2/${image}/manifests/${tag}`, {
25
+ hostname: `registry.${herokuHost}`,
26
+ headers: {
27
+ Accept: 'application/vnd.docker.distribution.manifest.v2+json',
28
+ Authorization: `Basic ${Buffer.from(`:${this.heroku.auth}`).toString('base64')}`,
29
+ }
30
+ });
31
+ let imageID;
32
+ let v1Comp;
33
+ switch (imageResp.schemaVersion) {
34
+ case 1:
35
+ v1Comp = JSON.parse(imageResp.history[0].v1Compatibility);
36
+ imageID = v1Comp.id;
37
+ break;
38
+ case 2:
39
+ imageID = imageResp.config.digest;
40
+ break;
41
+ }
42
+ updateData.push({
43
+ type: process, docker_image: imageID,
44
+ });
45
+ }
46
+ core_1.ux.action.start(`Releasing images ${argv.join(',')} to ${app}`);
47
+ await this.heroku.patch(`/apps/${app}/formation`, {
48
+ body: { updates: updateData }, headers: {
49
+ Accept: 'application/vnd.heroku+json; version=3.docker-releases',
50
+ },
51
+ });
52
+ core_1.ux.action.stop();
53
+ const { body: oldReleases } = await this.heroku.get(`/apps/${app}/releases`, {
54
+ partial: true, headers: { Range: 'version ..; max=2, order=desc' },
55
+ });
56
+ const oldRelease = oldReleases[0];
57
+ const { body: updatedReleases } = await this.heroku.get(`/apps/${app}/releases`, {
58
+ partial: true, headers: { Range: 'version ..; max=1, order=desc' },
59
+ });
60
+ const release = updatedReleases[0];
61
+ if ((!oldRelease && !release) || (oldRelease && (oldRelease.id === release.id))) {
62
+ return;
63
+ }
64
+ if (release.status === 'failed') {
65
+ core_1.ux.error('Error: release command failed', { exit: 1 });
66
+ }
67
+ else if ((release.status === 'pending') && release.output_stream_url) {
68
+ core_1.ux.log('Running release command...');
69
+ await (0, streamer_1.streamer)(release.output_stream_url, process.stdout);
70
+ const { body: finishedRelease } = await this.heroku.request(`/apps/${app}/releases/${release.id}`);
71
+ if (finishedRelease.status === 'failed') {
72
+ core_1.ux.error('Error: release command failed', { exit: 1 });
73
+ }
74
+ }
75
+ }
76
+ }
77
+ exports.default = ContainerRelease;
78
+ ContainerRelease.topic = 'container';
79
+ ContainerRelease.description = 'Releases previously pushed Docker images to your Heroku app';
80
+ ContainerRelease.usage = 'container:release';
81
+ ContainerRelease.example = `
82
+ ${color_1.default.cmd('heroku container:release web')} # Releases the previously pushed web process type
83
+ ${color_1.default.cmd('heroku container:release web worker')} # Releases the previously pushed web and worker process types`;
84
+ ContainerRelease.strict = false;
85
+ ContainerRelease.flags = {
86
+ app: command_1.flags.app({ required: true }),
87
+ remote: command_1.flags.remote(),
88
+ verbose: command_1.flags.boolean({ char: 'v' }),
89
+ };
@@ -0,0 +1,13 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Rm extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static usage: string;
6
+ static example: string;
7
+ static strict: boolean;
8
+ static flags: {
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
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const command_1 = require("@heroku-cli/command");
4
+ const core_1 = require("@oclif/core");
5
+ const color_1 = require("@heroku-cli/color");
6
+ class Rm extends command_1.Command {
7
+ async run() {
8
+ const { argv, flags } = await this.parse(Rm);
9
+ const { app } = flags;
10
+ if (argv.length === 0) {
11
+ this.error(`Error: Requires one or more process types\n${Rm.example}`);
12
+ }
13
+ for (const process of argv) {
14
+ core_1.ux.action.start(`Removing container ${process} for ${color_1.default.app(app)}`);
15
+ await this.heroku.patch(`/apps/${app}/formation/${process}`, {
16
+ headers: {
17
+ Accept: 'application/vnd.heroku+json; version=3.docker-releases',
18
+ },
19
+ body: { docker_image: null },
20
+ });
21
+ core_1.ux.action.stop();
22
+ }
23
+ }
24
+ }
25
+ exports.default = Rm;
26
+ Rm.topic = 'container';
27
+ Rm.description = 'remove the process type from your app';
28
+ Rm.usage = 'container:rm -a APP [-v] PROCESS_TYPE...';
29
+ Rm.example = `
30
+ ${color_1.default.cmd('heroku container:rm web')} # Destroys the web container
31
+ ${color_1.default.cmd('heroku container:rm web worker')} # Destroys the web and worker containers`;
32
+ Rm.strict = false;
33
+ Rm.flags = {
34
+ app: command_1.flags.app({ required: true }),
35
+ remote: command_1.flags.remote(),
36
+ };
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Run extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static usage: string;
6
+ static example: string;
7
+ static strict: boolean;
8
+ static flags: {
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
+ port: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
12
+ verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const command_1 = require("@heroku-cli/command");
4
+ const core_1 = require("@oclif/core");
5
+ const DockerHelper = require("../../lib/container/docker_helper");
6
+ const debug_1 = require("../../lib/container/debug");
7
+ const color_1 = require("@heroku-cli/color");
8
+ class Run extends command_1.Command {
9
+ async run() {
10
+ const { argv, flags } = await this.parse(Run);
11
+ const { verbose, app, port } = flags;
12
+ if (argv.length === 0) {
13
+ this.error(`Error: Requires one process type\n${Run.example}`);
14
+ }
15
+ if (verbose) {
16
+ debug_1.debug.enabled = true;
17
+ }
18
+ const processType = argv.shift();
19
+ const command = argv.join(' ');
20
+ const herokuHost = process.env.HEROKU_HOST || 'heroku.com';
21
+ const registry = `registry.${herokuHost}`;
22
+ const dockerfiles = DockerHelper.getDockerfiles(process.cwd(), false);
23
+ const possibleJobs = DockerHelper.getJobs(`${registry}/${app}`, dockerfiles);
24
+ let jobs = [];
25
+ if (possibleJobs.standard) {
26
+ possibleJobs.standard.forEach((pj) => {
27
+ pj.resource = pj.resource.replace(/standard$/, processType);
28
+ });
29
+ jobs = possibleJobs.standard || [];
30
+ }
31
+ if (jobs.length === 0) {
32
+ core_1.ux.error('No images to run');
33
+ }
34
+ const job = jobs[0];
35
+ if (command.length === 0) {
36
+ core_1.ux.styledHeader(`Running ${job.resource}`);
37
+ }
38
+ else {
39
+ core_1.ux.styledHeader(`Running '${command}' on ${job.resource}`);
40
+ }
41
+ try {
42
+ await DockerHelper.runImage(job.resource, command, port);
43
+ }
44
+ catch (error) {
45
+ core_1.ux.error(`docker run exited with ${error}`);
46
+ }
47
+ }
48
+ }
49
+ exports.default = Run;
50
+ Run.topic = 'container';
51
+ Run.description = 'builds, then runs the docker image locally';
52
+ Run.usage = 'container:run -a APP [-v] PROCESS_TYPE...';
53
+ Run.example = `
54
+ ${color_1.default.cmd('$ heroku container:pull web')} # Pulls the web image from the app
55
+ ${color_1.default.cmd('$ heroku container:pull web worker')} # Pulls both the web and worker images from the app
56
+ ${color_1.default.cmd('$ heroku container:pull web:latest')} # Pulls the latest tag from the web image`;
57
+ Run.strict = false;
58
+ Run.flags = {
59
+ app: command_1.flags.app({ required: true }),
60
+ remote: command_1.flags.remote(),
61
+ port: command_1.flags.integer({ char: 'p', description: 'port the app will run on', default: 5000 }),
62
+ verbose: command_1.flags.boolean({ char: 'v' }),
63
+ };
@@ -0,0 +1,7 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Dashboard extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static hidden: boolean;
6
+ run(): Promise<void>;
7
+ }
@@ -0,0 +1,164 @@
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 lodash_1 = require("lodash");
7
+ const img = require("term-img");
8
+ const path = require("path");
9
+ const child_process_1 = require("child_process");
10
+ const sparkline = require('sparkline');
11
+ const time_1 = require("../lib/time");
12
+ const process = require("process");
13
+ const empty = (o) => Object.keys(o).length === 0;
14
+ function displayFormation(formation) {
15
+ formation = (0, lodash_1.groupBy)(formation, 'size');
16
+ formation = (0, lodash_1.map)(formation, (p, size) => `${bold((0, lodash_1.sumBy)(p, 'quantity').toString())} | ${size}`);
17
+ core_1.ux.log(` ${label('Dynos:')} ${formation.join(', ')}`);
18
+ }
19
+ function displayErrors(metrics) {
20
+ let errors = [];
21
+ if (metrics.routerErrors) {
22
+ errors = errors.concat(Object.entries(metrics.routerErrors.data)
23
+ .map(e => color_1.default.red(`${(0, lodash_1.sum)(e[1])} ${e[0]}`)));
24
+ }
25
+ if (metrics.dynoErrors) {
26
+ metrics.dynoErrors.filter(d => d)
27
+ .forEach(dynoErrors => {
28
+ errors = errors.concat(Object.entries((dynoErrors === null || dynoErrors === void 0 ? void 0 : dynoErrors.data) || {})
29
+ .map(e => color_1.default.red(`${(0, lodash_1.sum)(e[1])} ${e[0]}`)));
30
+ });
31
+ }
32
+ if (errors.length > 0)
33
+ core_1.ux.log(` ${label('Errors:')} ${errors.join(dim(', '))} (see details with ${color_1.default.cyan.bold('heroku apps:errors')})`);
34
+ }
35
+ function displayMetrics(metrics) {
36
+ function rpmSparkline() {
37
+ var _a;
38
+ if (['win32', 'windows'].includes(process.platform))
39
+ return '';
40
+ const points = [];
41
+ Object.values(((_a = metrics.routerStatus) === null || _a === void 0 ? void 0 : _a.data) || {})
42
+ .forEach(cur => {
43
+ for (const [i, element] of cur.entries()) {
44
+ const j = Math.floor(i / 3);
45
+ points[j] = (points[j] || 0) + element;
46
+ }
47
+ });
48
+ points.pop();
49
+ return dim(sparkline(points)) + ' last 24 hours rpm';
50
+ }
51
+ let ms = '';
52
+ let rpm = '';
53
+ if (metrics.routerLatency && !empty(metrics.routerLatency.data)) {
54
+ const latency = metrics.routerLatency.data['latency.ms.p50'];
55
+ if (!empty(latency))
56
+ ms = `${(0, lodash_1.round)((0, lodash_1.mean)(latency))} ms `;
57
+ }
58
+ if (metrics.routerStatus && !empty(metrics.routerStatus.data)) {
59
+ rpm = `${(0, lodash_1.round)((0, lodash_1.sum)((0, lodash_1.flatten)(Object.values(metrics.routerStatus.data))) / 24 / 60)} rpm ${rpmSparkline()}`;
60
+ }
61
+ if (rpm || ms)
62
+ core_1.ux.log(` ${label('Metrics:')} ${ms}${rpm}`);
63
+ }
64
+ function displayNotifications(notifications) {
65
+ if (!notifications)
66
+ return;
67
+ notifications = notifications.filter(n => !n.read);
68
+ if (notifications.length > 0) {
69
+ core_1.ux.log(`\nYou have ${color_1.default.yellow(notifications.length.toString())} unread notifications. Read them with ${color_1.default.cyan.bold('heroku notifications')}`);
70
+ }
71
+ }
72
+ const dim = (s) => color_1.default.dim(s);
73
+ const bold = (s) => color_1.default.bold(s);
74
+ const label = (s) => color_1.default.blue(s);
75
+ const fetchMetrics = async (apps, heroku) => {
76
+ const NOW = new Date().toISOString();
77
+ const YESTERDAY = new Date(Date.now() - (24 * 60 * 60 * 1000)).toISOString();
78
+ const date = `start_time=${YESTERDAY}&end_time=${NOW}&step=1h`;
79
+ const metricsData = await Promise.all(apps.map(app => {
80
+ const types = app.formation.map((p) => p.type);
81
+ const dynoErrorsPromise = Promise.all(types.map((type) => heroku.get(`/apps/${app.app.name}/formation/${type}/metrics/errors?${date}`, { hostname: 'api.metrics.herokai.com' }).catch(() => { })));
82
+ return Promise.all([
83
+ dynoErrorsPromise,
84
+ heroku.get(`/apps/${app.app.name}/router-metrics/latency?${date}&process_type=${types[0]}`, { hostname: 'api.metrics.herokai.com' }).catch(() => { }),
85
+ heroku.get(`/apps/${app.app.name}/router-metrics/errors?${date}&process_type=${types[0]}`, { hostname: 'api.metrics.herokai.com' }).catch(() => { }),
86
+ heroku.get(`/apps/${app.app.name}/router-metrics/status?${date}&process_type=${types[0]}`, { hostname: 'api.metrics.herokai.com' }).catch(() => { }),
87
+ ]);
88
+ }));
89
+ return metricsData.map(([dynoErrors, routerLatency, routerErrors, routerStatus]) => ({
90
+ dynoErrors, routerLatency: routerLatency === null || routerLatency === void 0 ? void 0 : routerLatency.body, routerErrors: routerErrors === null || routerErrors === void 0 ? void 0 : routerErrors.body, routerStatus: routerStatus === null || routerStatus === void 0 ? void 0 : routerStatus.body,
91
+ }));
92
+ };
93
+ function displayApps(apps, appsMetrics) {
94
+ var _a;
95
+ const getOwner = (owner) => { var _a; return ((_a = owner === null || owner === void 0 ? void 0 : owner.email) === null || _a === void 0 ? void 0 : _a.endsWith('@herokumanager.com')) ? owner.email.split('@')[0] : owner === null || owner === void 0 ? void 0 : owner.email; };
96
+ const zipped = (0, lodash_1.zip)(apps, appsMetrics);
97
+ for (const a of zipped) {
98
+ const app = a[0];
99
+ const metrics = a[1];
100
+ core_1.ux.log(color_1.default.magenta(app.app.name || ''));
101
+ core_1.ux.log(` ${label('Owner:')} ${getOwner(app.app.owner)}`);
102
+ if (app.pipeline) {
103
+ core_1.ux.log(` ${label('Pipeline:')} ${(_a = app.pipeline.pipeline) === null || _a === void 0 ? void 0 : _a.name}`);
104
+ }
105
+ displayFormation(app.formation);
106
+ core_1.ux.log(` ${label('Last release:')} ${(0, time_1.ago)(new Date(app.app.released_at || ''))}`);
107
+ displayMetrics(metrics);
108
+ displayErrors(metrics);
109
+ core_1.ux.log();
110
+ }
111
+ }
112
+ class Dashboard extends command_1.Command {
113
+ async run() {
114
+ if (!this.heroku.auth && process.env.IS_HEROKU_TEST_ENV !== 'true') {
115
+ (0, child_process_1.execSync)('heroku help', { stdio: 'inherit' });
116
+ return;
117
+ }
118
+ const favoriteApps = async () => {
119
+ const { body: apps } = await this.heroku.get('/favorites?type=app', {
120
+ hostname: 'particleboard.heroku.com',
121
+ });
122
+ return apps.map(app => app.resource_name);
123
+ };
124
+ try {
125
+ img(path.join(__dirname, '..', '..', 'assets', 'heroku.png'), { fallback: () => { } });
126
+ }
127
+ catch (_a) { }
128
+ core_1.ux.action.start('Loading');
129
+ const apps = await favoriteApps();
130
+ const [{ body: teams }, notificationsResponse, appsWithMoreInfo] = await Promise.all([
131
+ this.heroku.get('/teams'),
132
+ this.heroku.get('/user/notifications', { hostname: 'telex.heroku.com' })
133
+ .catch(() => null),
134
+ Promise.all(apps.map(async (appID) => {
135
+ const [{ body: app }, { body: formation }, pipelineResponse] = await Promise.all([
136
+ this.heroku.get(`/apps/${appID}`),
137
+ this.heroku.get(`/apps/${appID}/formation`),
138
+ this.heroku.get(`/apps/${appID}/pipeline-couplings`)
139
+ .catch(() => null),
140
+ ]);
141
+ return {
142
+ app, formation, pipeline: pipelineResponse === null || pipelineResponse === void 0 ? void 0 : pipelineResponse.body,
143
+ };
144
+ })),
145
+ ]);
146
+ const metrics = await fetchMetrics(appsWithMoreInfo, this.heroku);
147
+ core_1.ux.action.stop();
148
+ if (apps.length > 0)
149
+ displayApps(appsWithMoreInfo, metrics);
150
+ else
151
+ core_1.ux.warn(`Add apps to this dashboard by favoriting them with ${color_1.default.cyan.bold('heroku apps:favorites:add')}`);
152
+ core_1.ux.log(`See all add-ons with ${color_1.default.cyan.bold('heroku addons')}`);
153
+ const sampleTeam = (0, lodash_1.sortBy)(teams.filter(o => o.role !== 'collaborator'), o => new Date(o.created_at || ''))[0];
154
+ if (sampleTeam)
155
+ core_1.ux.log(`See all apps in ${color_1.default.yellow.dim(sampleTeam.name || '')} with ${color_1.default.cyan.bold('heroku apps --team ' + sampleTeam.name)}`);
156
+ core_1.ux.log(`See all apps with ${color_1.default.cyan.bold('heroku apps --all')}`);
157
+ displayNotifications(notificationsResponse === null || notificationsResponse === void 0 ? void 0 : notificationsResponse.body);
158
+ core_1.ux.log(`\nSee other CLI commands with ${color_1.default.cyan.bold('heroku help')}\n`);
159
+ }
160
+ }
161
+ exports.default = Dashboard;
162
+ Dashboard.topic = 'dashboard';
163
+ Dashboard.description = 'display information about favorite apps';
164
+ Dashboard.hidden = true;
@@ -6,11 +6,11 @@ export default class DomainsIndex extends Command {
6
6
  static flags: {
7
7
  extended: import("@oclif/core/lib/interfaces").Flag<boolean>;
8
8
  'no-header': import("@oclif/core/lib/interfaces").Flag<boolean>;
9
- sort: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
9
  filter: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ sort: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ output: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
12
  columns: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
12
13
  csv: import("@oclif/core/lib/interfaces").Flag<boolean>;
13
- output: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
14
14
  help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
15
15
  app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
16
16
  remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
@@ -22,7 +22,7 @@ export default class DomainsIndex extends Command {
22
22
  };
23
23
  kind: {
24
24
  header: string;
25
- get: (domain: Heroku.Domain) => "ALIAS or ANAME" | "CNAME" | undefined;
25
+ get: (domain: Heroku.Domain) => "CNAME" | "ALIAS or ANAME" | undefined;
26
26
  };
27
27
  cname: {
28
28
  header: string;
@@ -0,0 +1,12 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Add 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
+ };
8
+ static args: {
9
+ url: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const color_1 = require("@heroku-cli/color");
5
+ const command_1 = require("@heroku-cli/command");
6
+ class Add extends command_1.Command {
7
+ async run() {
8
+ const { flags, args } = await this.parse(Add);
9
+ const { body: drain } = await this.heroku.post(`/apps/${flags.app}/log-drains`, {
10
+ body: { url: args.url },
11
+ });
12
+ core_1.ux.log(`Successfully added drain ${color_1.default.cyan(drain.url || '')}`);
13
+ }
14
+ }
15
+ exports.default = Add;
16
+ Add.description = 'adds a log drain to an app';
17
+ Add.flags = {
18
+ app: command_1.flags.app({ required: true }),
19
+ remote: command_1.flags.remote(),
20
+ };
21
+ Add.args = {
22
+ url: core_1.Args.string({ required: true }),
23
+ };