heroku 9.0.0-alpha.1 → 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 (522) 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 +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 +2 -2
  37. package/lib/commands/apps/create.js +13 -6
  38. package/lib/commands/apps/destroy.d.ts +2 -1
  39. package/lib/commands/apps/destroy.js +4 -3
  40. package/lib/commands/apps/errors.d.ts +1 -0
  41. package/lib/commands/apps/errors.js +1 -0
  42. package/lib/commands/apps/favorites/add.d.ts +1 -0
  43. package/lib/commands/apps/favorites/add.js +1 -0
  44. package/lib/commands/apps/favorites/remove.d.ts +1 -0
  45. package/lib/commands/apps/favorites/remove.js +1 -0
  46. package/lib/commands/apps/index.d.ts +1 -1
  47. package/lib/commands/apps/index.js +1 -1
  48. package/lib/commands/apps/info.d.ts +2 -1
  49. package/lib/commands/apps/info.js +3 -4
  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 +2 -1
  57. package/lib/commands/apps/open.js +2 -1
  58. package/lib/commands/apps/rename.d.ts +2 -1
  59. package/lib/commands/apps/rename.js +2 -1
  60. package/lib/commands/apps/stacks/index.d.ts +2 -1
  61. package/lib/commands/apps/stacks/index.js +2 -1
  62. package/lib/commands/apps/stacks/set.d.ts +1 -1
  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.js +5 -1
  70. package/lib/commands/authorizations/info.js +5 -1
  71. package/lib/commands/authorizations/revoke.js +5 -1
  72. package/lib/commands/authorizations/rotate.js +5 -1
  73. package/lib/commands/authorizations/update.js +5 -1
  74. package/lib/commands/autocomplete/doctor.js +2 -2
  75. package/lib/commands/autocomplete/options.js +2 -2
  76. package/lib/commands/certs/add.d.ts +16 -0
  77. package/lib/commands/certs/add.js +98 -0
  78. package/lib/commands/certs/auto/disable.d.ts +11 -0
  79. package/lib/commands/certs/auto/disable.js +34 -0
  80. package/lib/commands/certs/auto/enable.d.ts +11 -0
  81. package/lib/commands/certs/auto/enable.js +51 -0
  82. package/lib/commands/certs/auto/index.d.ts +12 -0
  83. package/lib/commands/certs/auto/index.js +94 -0
  84. package/lib/commands/certs/auto/refresh.d.ts +10 -0
  85. package/lib/commands/certs/auto/refresh.js +19 -0
  86. package/lib/commands/certs/generate.d.ts +26 -0
  87. package/lib/commands/certs/generate.js +111 -0
  88. package/lib/commands/certs/index.d.ts +10 -0
  89. package/lib/commands/certs/index.js +26 -0
  90. package/lib/commands/certs/info.d.ts +13 -0
  91. package/lib/commands/certs/info.js +43 -0
  92. package/lib/commands/certs/remove.d.ts +13 -0
  93. package/lib/commands/certs/remove.js +32 -0
  94. package/lib/commands/certs/update.d.ts +18 -0
  95. package/lib/commands/certs/update.js +54 -0
  96. package/lib/commands/ci/config/get.d.ts +1 -0
  97. package/lib/commands/ci/config/get.js +1 -0
  98. package/lib/commands/ci/config/set.d.ts +1 -0
  99. package/lib/commands/ci/config/set.js +1 -0
  100. package/lib/commands/ci/config/unset.d.ts +1 -0
  101. package/lib/commands/ci/config/unset.js +1 -0
  102. package/lib/commands/ci/index.d.ts +1 -0
  103. package/lib/commands/ci/index.js +1 -0
  104. package/lib/commands/ci/info.d.ts +1 -0
  105. package/lib/commands/ci/info.js +1 -0
  106. package/lib/commands/ci/last.d.ts +1 -0
  107. package/lib/commands/ci/last.js +1 -0
  108. package/lib/commands/ci/open.d.ts +1 -0
  109. package/lib/commands/ci/open.js +1 -0
  110. package/lib/commands/ci/rerun.d.ts +1 -0
  111. package/lib/commands/ci/rerun.js +1 -0
  112. package/lib/commands/config/set.d.ts +2 -1
  113. package/lib/commands/config/set.js +2 -1
  114. package/lib/commands/container/index.d.ts +6 -0
  115. package/lib/commands/container/index.js +13 -0
  116. package/lib/commands/container/login.d.ts +9 -0
  117. package/lib/commands/container/login.js +57 -0
  118. package/lib/commands/container/logout.d.ts +9 -0
  119. package/lib/commands/container/logout.js +37 -0
  120. package/lib/commands/container/pull.d.ts +14 -0
  121. package/lib/commands/container/pull.js +40 -0
  122. package/lib/commands/container/push.d.ts +16 -0
  123. package/lib/commands/container/push.js +101 -0
  124. package/lib/commands/container/release.d.ts +14 -0
  125. package/lib/commands/container/release.js +89 -0
  126. package/lib/commands/container/rm.d.ts +13 -0
  127. package/lib/commands/container/rm.js +36 -0
  128. package/lib/commands/container/run.d.ts +15 -0
  129. package/lib/commands/container/run.js +63 -0
  130. package/lib/commands/dashboard.d.ts +7 -0
  131. package/lib/commands/dashboard.js +164 -0
  132. package/lib/commands/domains/index.d.ts +2 -2
  133. package/lib/commands/drains/add.d.ts +1 -0
  134. package/lib/commands/drains/add.js +1 -0
  135. package/lib/commands/drains/index.d.ts +1 -0
  136. package/lib/commands/drains/index.js +1 -0
  137. package/lib/commands/drains/remove.d.ts +1 -0
  138. package/lib/commands/drains/remove.js +1 -0
  139. package/lib/commands/features/disable.d.ts +12 -0
  140. package/lib/commands/features/disable.js +30 -0
  141. package/lib/commands/features/enable.d.ts +12 -0
  142. package/lib/commands/features/enable.js +29 -0
  143. package/lib/commands/features/index.d.ts +10 -0
  144. package/lib/commands/features/index.js +37 -0
  145. package/lib/commands/features/info.d.ts +13 -0
  146. package/lib/commands/features/info.js +33 -0
  147. package/lib/commands/keys/add.d.ts +14 -0
  148. package/lib/commands/keys/add.js +101 -0
  149. package/lib/commands/keys/clear.d.ts +5 -0
  150. package/lib/commands/keys/clear.js +17 -0
  151. package/lib/commands/keys/index.d.ts +9 -0
  152. package/lib/commands/keys/index.js +36 -0
  153. package/lib/commands/keys/remove.d.ts +9 -0
  154. package/lib/commands/keys/remove.js +29 -0
  155. package/lib/commands/labs/enable.d.ts +13 -0
  156. package/lib/commands/labs/enable.js +47 -0
  157. package/lib/commands/labs/index.d.ts +11 -0
  158. package/lib/commands/labs/index.js +71 -0
  159. package/lib/commands/labs/info.d.ts +14 -0
  160. package/lib/commands/labs/info.js +49 -0
  161. package/lib/commands/local/index.d.ts +1 -1
  162. package/lib/commands/local/index.js +8 -3
  163. package/lib/commands/local/run.d.ts +1 -1
  164. package/lib/commands/local/run.js +8 -3
  165. package/lib/commands/maintenance/index.d.ts +10 -0
  166. package/lib/commands/maintenance/index.js +19 -0
  167. package/lib/commands/maintenance/off.d.ts +10 -0
  168. package/lib/commands/maintenance/off.js +20 -0
  169. package/lib/commands/maintenance/on.d.ts +10 -0
  170. package/lib/commands/maintenance/on.js +20 -0
  171. package/lib/commands/members/add.d.ts +13 -0
  172. package/lib/commands/members/add.js +33 -0
  173. package/lib/commands/members/index.d.ts +12 -0
  174. package/lib/commands/members/index.js +76 -0
  175. package/lib/commands/members/remove.d.ts +10 -0
  176. package/lib/commands/members/remove.js +58 -0
  177. package/lib/commands/members/set.d.ts +11 -0
  178. package/lib/commands/members/set.js +21 -0
  179. package/lib/commands/notifications/index.d.ts +13 -0
  180. package/lib/commands/notifications/index.js +62 -0
  181. package/lib/commands/orgs/index.d.ts +11 -0
  182. package/lib/commands/orgs/index.js +27 -0
  183. package/lib/commands/orgs/open.d.ts +10 -0
  184. package/lib/commands/orgs/open.js +24 -0
  185. package/lib/commands/pg/backups/cancel.d.ts +15 -0
  186. package/lib/commands/pg/backups/cancel.js +49 -0
  187. package/lib/commands/pg/backups/capture.d.ts +15 -0
  188. package/lib/commands/pg/backups/capture.js +65 -0
  189. package/lib/commands/pg/backups/delete.d.ts +15 -0
  190. package/lib/commands/pg/backups/delete.js +38 -0
  191. package/lib/commands/pg/backups/download.d.ts +14 -0
  192. package/lib/commands/pg/backups/download.js +58 -0
  193. package/lib/commands/pg/backups/index.d.ts +20 -0
  194. package/lib/commands/pg/backups/index.js +129 -0
  195. package/lib/commands/pg/backups/info.d.ts +17 -0
  196. package/lib/commands/pg/backups/info.js +92 -0
  197. package/lib/commands/pg/backups/restore.d.ts +19 -0
  198. package/lib/commands/pg/backups/restore.js +107 -0
  199. package/lib/commands/pg/backups/schedule.d.ts +21 -0
  200. package/lib/commands/pg/backups/schedule.js +82 -0
  201. package/lib/commands/pg/backups/schedules.d.ts +10 -0
  202. package/lib/commands/pg/backups/schedules.js +31 -0
  203. package/lib/commands/pg/backups/unschedule.d.ts +13 -0
  204. package/lib/commands/pg/backups/unschedule.js +44 -0
  205. package/lib/commands/pg/backups/url.d.ts +13 -0
  206. package/lib/commands/pg/backups/url.js +41 -0
  207. package/lib/commands/pg/bloat.d.ts +13 -0
  208. package/lib/commands/pg/bloat.js +87 -0
  209. package/lib/commands/pg/blocking.d.ts +13 -0
  210. package/lib/commands/pg/blocking.js +42 -0
  211. package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
  212. package/lib/commands/pg/connection-pooling/attach.js +41 -0
  213. package/lib/commands/pg/copy.d.ts +18 -0
  214. package/lib/commands/pg/copy.js +86 -0
  215. package/lib/commands/pg/credentials/create.d.ts +14 -0
  216. package/lib/commands/pg/credentials/create.js +40 -0
  217. package/lib/commands/pg/credentials/destroy.d.ts +16 -0
  218. package/lib/commands/pg/credentials/destroy.js +48 -0
  219. package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
  220. package/lib/commands/pg/credentials/repair-default.js +39 -0
  221. package/lib/commands/pg/credentials/rotate.d.ts +16 -0
  222. package/lib/commands/pg/credentials/rotate.js +82 -0
  223. package/lib/commands/pg/credentials/url.d.ts +14 -0
  224. package/lib/commands/pg/credentials/url.js +64 -0
  225. package/lib/commands/pg/credentials.d.ts +16 -0
  226. package/lib/commands/pg/credentials.js +61 -0
  227. package/lib/commands/pg/diagnose.d.ts +18 -0
  228. package/lib/commands/pg/diagnose.js +109 -0
  229. package/lib/commands/pg/info.d.ts +14 -0
  230. package/lib/commands/pg/info.js +92 -0
  231. package/lib/commands/pg/kill.d.ts +15 -0
  232. package/lib/commands/pg/kill.js +32 -0
  233. package/lib/commands/pg/killall.d.ts +13 -0
  234. package/lib/commands/pg/killall.js +26 -0
  235. package/lib/commands/pg/links/create.d.ts +15 -0
  236. package/lib/commands/pg/links/create.js +58 -0
  237. package/lib/commands/pg/links/destroy.d.ts +16 -0
  238. package/lib/commands/pg/links/destroy.js +42 -0
  239. package/lib/commands/pg/links/index.d.ts +13 -0
  240. package/lib/commands/pg/links/index.js +59 -0
  241. package/lib/commands/pg/locks.d.ts +15 -0
  242. package/lib/commands/pg/locks.js +53 -0
  243. package/lib/commands/pg/maintenance/index.d.ts +13 -0
  244. package/lib/commands/pg/maintenance/index.js +29 -0
  245. package/lib/commands/pg/maintenance/run.d.ts +14 -0
  246. package/lib/commands/pg/maintenance/run.js +37 -0
  247. package/lib/commands/pg/maintenance/window.d.ts +15 -0
  248. package/lib/commands/pg/maintenance/window.js +41 -0
  249. package/lib/commands/pg/outliers.d.ts +19 -0
  250. package/lib/commands/pg/outliers.js +97 -0
  251. package/lib/commands/pg/promote.d.ts +14 -0
  252. package/lib/commands/pg/promote.js +169 -0
  253. package/lib/commands/pg/ps.d.ts +14 -0
  254. package/lib/commands/pg/ps.js +52 -0
  255. package/lib/commands/pg/psql.d.ts +16 -0
  256. package/lib/commands/pg/psql.js +49 -0
  257. package/lib/commands/pg/pull.d.ts +18 -0
  258. package/lib/commands/pg/pull.js +87 -0
  259. package/lib/commands/pg/push.d.ts +18 -0
  260. package/lib/commands/pg/push.js +84 -0
  261. package/lib/commands/pg/reset.d.ts +15 -0
  262. package/lib/commands/pg/reset.js +44 -0
  263. package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
  264. package/lib/commands/pg/settings/auto-explain/log-analyze.js +32 -0
  265. package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
  266. package/lib/commands/pg/settings/auto-explain/log-buffers.js +30 -0
  267. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +16 -0
  268. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +33 -0
  269. package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
  270. package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +25 -0
  271. package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
  272. package/lib/commands/pg/settings/auto-explain/log-triggers.js +30 -0
  273. package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
  274. package/lib/commands/pg/settings/auto-explain/log-verbose.js +33 -0
  275. package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
  276. package/lib/commands/pg/settings/auto-explain.js +38 -0
  277. package/lib/commands/pg/settings/index.d.ts +13 -0
  278. package/lib/commands/pg/settings/index.js +34 -0
  279. package/lib/commands/pg/settings/log-connections.d.ts +17 -0
  280. package/lib/commands/pg/settings/log-connections.js +34 -0
  281. package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
  282. package/lib/commands/pg/settings/log-lock-waits.js +31 -0
  283. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +15 -0
  284. package/lib/commands/pg/settings/log-min-duration-statement.js +33 -0
  285. package/lib/commands/pg/settings/log-statement.d.ts +12 -0
  286. package/lib/commands/pg/settings/log-statement.js +30 -0
  287. package/lib/commands/pg/settings/track-functions.d.ts +12 -0
  288. package/lib/commands/pg/settings/track-functions.js +29 -0
  289. package/lib/commands/pg/unfollow.d.ts +14 -0
  290. package/lib/commands/pg/unfollow.js +40 -0
  291. package/lib/commands/pg/upgrade.d.ts +15 -0
  292. package/lib/commands/pg/upgrade.js +58 -0
  293. package/lib/commands/pg/vacuum-stats.d.ts +13 -0
  294. package/lib/commands/pg/vacuum-stats.js +65 -0
  295. package/lib/commands/pg/wait.d.ts +15 -0
  296. package/lib/commands/pg/wait.js +79 -0
  297. package/lib/commands/pipelines/connect.js +1 -1
  298. package/lib/commands/pipelines/diff.js +1 -1
  299. package/lib/commands/ps/index.d.ts +15 -0
  300. package/lib/commands/ps/index.js +195 -0
  301. package/lib/commands/ps/restart.d.ts +17 -0
  302. package/lib/commands/ps/restart.js +38 -0
  303. package/lib/commands/ps/scale.d.ts +13 -0
  304. package/lib/commands/ps/scale.js +108 -0
  305. package/lib/commands/ps/stop.d.ts +17 -0
  306. package/lib/commands/ps/stop.js +33 -0
  307. package/lib/commands/ps/type.d.ts +12 -0
  308. package/lib/commands/ps/type.js +163 -0
  309. package/lib/commands/redis/cli.d.ts +15 -0
  310. package/lib/commands/redis/cli.js +204 -0
  311. package/lib/commands/redis/credentials.d.ts +14 -0
  312. package/lib/commands/redis/credentials.js +32 -0
  313. package/lib/commands/redis/info.d.ts +15 -0
  314. package/lib/commands/redis/info.js +25 -0
  315. package/lib/commands/redis/keyspace-notifications.d.ts +14 -0
  316. package/lib/commands/redis/keyspace-notifications.js +47 -0
  317. package/lib/commands/redis/maintenance.d.ts +16 -0
  318. package/lib/commands/redis/maintenance.js +63 -0
  319. package/lib/commands/redis/maxmemory.d.ts +14 -0
  320. package/lib/commands/redis/maxmemory.js +40 -0
  321. package/lib/commands/redis/promote.d.ts +13 -0
  322. package/lib/commands/redis/promote.js +39 -0
  323. package/lib/commands/redis/stats-reset.d.ts +14 -0
  324. package/lib/commands/redis/stats-reset.js +36 -0
  325. package/lib/commands/redis/timeout.d.ts +14 -0
  326. package/lib/commands/redis/timeout.js +35 -0
  327. package/lib/commands/redis/upgrade.d.ts +15 -0
  328. package/lib/commands/redis/upgrade.js +37 -0
  329. package/lib/commands/redis/wait.d.ts +14 -0
  330. package/lib/commands/redis/wait.js +60 -0
  331. package/lib/commands/releases/index.d.ts +14 -0
  332. package/lib/commands/releases/index.js +124 -0
  333. package/lib/commands/releases/info.d.ts +15 -0
  334. package/lib/commands/releases/info.js +56 -0
  335. package/lib/commands/releases/output.d.ts +13 -0
  336. package/lib/commands/releases/output.js +37 -0
  337. package/lib/commands/releases/rollback.d.ts +14 -0
  338. package/lib/commands/releases/rollback.js +48 -0
  339. package/lib/commands/run/detached.d.ts +7 -8
  340. package/lib/commands/run/detached.js +16 -20
  341. package/lib/commands/run/index.d.ts +10 -11
  342. package/lib/commands/run/index.js +16 -17
  343. package/lib/commands/run/inside.d.ts +5 -7
  344. package/lib/commands/run/inside.js +10 -14
  345. package/lib/commands/spaces/create.d.ts +22 -0
  346. package/lib/commands/spaces/create.js +73 -0
  347. package/lib/commands/spaces/destroy.d.ts +14 -0
  348. package/lib/commands/spaces/destroy.js +49 -0
  349. package/lib/commands/spaces/drains/get.d.ts +12 -0
  350. package/lib/commands/spaces/drains/get.js +27 -0
  351. package/lib/commands/spaces/drains/set.d.ts +14 -0
  352. package/lib/commands/spaces/drains/set.js +29 -0
  353. package/lib/commands/spaces/hosts.d.ts +14 -0
  354. package/lib/commands/spaces/hosts.js +37 -0
  355. package/lib/commands/spaces/index.d.ts +16 -0
  356. package/lib/commands/spaces/index.js +55 -0
  357. package/lib/commands/spaces/info.d.ts +14 -0
  358. package/lib/commands/spaces/info.js +47 -0
  359. package/lib/commands/spaces/outbound-rules/add.d.ts +15 -0
  360. package/lib/commands/spaces/outbound-rules/add.js +81 -0
  361. package/lib/commands/spaces/outbound-rules/index.d.ts +15 -0
  362. package/lib/commands/spaces/outbound-rules/index.js +49 -0
  363. package/lib/commands/spaces/outbound-rules/remove.d.ts +17 -0
  364. package/lib/commands/spaces/outbound-rules/remove.js +53 -0
  365. package/lib/commands/spaces/peerings/accept.d.ts +15 -0
  366. package/lib/commands/spaces/peerings/accept.js +36 -0
  367. package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
  368. package/lib/commands/spaces/peerings/destroy.js +45 -0
  369. package/lib/commands/spaces/peerings/index.d.ts +13 -0
  370. package/lib/commands/spaces/peerings/index.js +33 -0
  371. package/lib/commands/spaces/peerings/info.d.ts +15 -0
  372. package/lib/commands/spaces/peerings/info.js +59 -0
  373. package/lib/commands/spaces/ps.d.ts +15 -0
  374. package/lib/commands/spaces/ps.js +82 -0
  375. package/lib/commands/spaces/rename.d.ts +11 -0
  376. package/lib/commands/spaces/rename.js +26 -0
  377. package/lib/commands/spaces/topology.d.ts +32 -0
  378. package/lib/commands/spaces/topology.js +89 -0
  379. package/lib/commands/spaces/transfer.d.ts +11 -0
  380. package/lib/commands/spaces/transfer.js +35 -0
  381. package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
  382. package/lib/commands/spaces/trusted-ips/add.js +43 -0
  383. package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
  384. package/lib/commands/spaces/trusted-ips/index.js +52 -0
  385. package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
  386. package/lib/commands/spaces/trusted-ips/remove.js +44 -0
  387. package/lib/commands/spaces/vpn/config.d.ts +14 -0
  388. package/lib/commands/spaces/vpn/config.js +54 -0
  389. package/lib/commands/spaces/vpn/connect.d.ts +15 -0
  390. package/lib/commands/spaces/vpn/connect.js +45 -0
  391. package/lib/commands/spaces/vpn/connections.d.ts +17 -0
  392. package/lib/commands/spaces/vpn/connections.js +57 -0
  393. package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
  394. package/lib/commands/spaces/vpn/destroy.js +35 -0
  395. package/lib/commands/spaces/vpn/info.d.ts +16 -0
  396. package/lib/commands/spaces/vpn/info.js +82 -0
  397. package/lib/commands/spaces/vpn/update.d.ts +14 -0
  398. package/lib/commands/spaces/vpn/update.js +36 -0
  399. package/lib/commands/spaces/vpn/wait.d.ts +13 -0
  400. package/lib/commands/spaces/vpn/wait.js +53 -0
  401. package/lib/commands/spaces/wait.d.ts +17 -0
  402. package/lib/commands/spaces/wait.js +89 -0
  403. package/lib/commands/status.js +4 -4
  404. package/lib/commands/teams/index.d.ts +9 -0
  405. package/lib/commands/teams/index.js +29 -0
  406. package/lib/global_telemetry.js +10 -4
  407. package/lib/hooks/postrun/performance_analytics.js +5 -4
  408. package/lib/hooks/prerun/analytics.js +3 -0
  409. package/lib/lib/addons/addons_wait.d.ts +78 -0
  410. package/lib/lib/addons/addons_wait.js +56 -0
  411. package/lib/lib/addons/create_addon.d.ts +7 -0
  412. package/lib/lib/addons/create_addon.js +59 -0
  413. package/lib/lib/addons/destroy_addon.d.ts +3 -0
  414. package/lib/lib/addons/destroy_addon.js +48 -0
  415. package/lib/lib/addons/resolve.d.ts +38 -0
  416. package/lib/lib/addons/resolve.js +179 -0
  417. package/lib/lib/addons/util.d.ts +9 -0
  418. package/lib/lib/addons/util.js +72 -0
  419. package/lib/lib/apps/app-transfer.d.ts +10 -0
  420. package/lib/lib/apps/app-transfer.js +35 -0
  421. package/lib/lib/autocomplete/completions.d.ts +4 -0
  422. package/lib/lib/autocomplete/completions.js +6 -1
  423. package/lib/lib/certs/certificate_details.d.ts +2 -0
  424. package/lib/lib/certs/certificate_details.js +37 -0
  425. package/lib/lib/certs/display_table.d.ts +2 -0
  426. package/lib/lib/certs/display_table.js +51 -0
  427. package/lib/lib/certs/domains.d.ts +3 -0
  428. package/lib/lib/certs/domains.js +45 -0
  429. package/lib/lib/certs/flags.d.ts +7 -0
  430. package/lib/lib/certs/flags.js +42 -0
  431. package/lib/lib/certs/format_date.d.ts +1 -0
  432. package/lib/lib/certs/format_date.js +11 -0
  433. package/lib/lib/certs/get_cert_and_key.d.ts +9 -0
  434. package/lib/lib/certs/get_cert_and_key.js +11 -0
  435. package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
  436. package/lib/lib/ci/source.js +3 -3
  437. package/lib/lib/ci/test-run.js +2 -2
  438. package/lib/lib/config/quote.js +1 -1
  439. package/lib/lib/confirmCommand.d.ts +1 -0
  440. package/lib/lib/{apps/confirm-app.js → confirmCommand.js} +2 -2
  441. package/lib/lib/container/debug.d.ts +2 -0
  442. package/lib/lib/container/debug.js +5 -0
  443. package/lib/lib/container/docker_helper.d.ts +24 -0
  444. package/lib/lib/container/docker_helper.js +168 -0
  445. package/lib/lib/container/streamer.d.ts +1 -0
  446. package/lib/lib/container/streamer.js +31 -0
  447. package/lib/lib/domains/domains.d.ts +6 -0
  448. package/lib/lib/domains/domains.js +104 -0
  449. package/lib/lib/local/run-foreman.d.ts +1 -0
  450. package/lib/lib/local/run-foreman.js +229 -1
  451. package/lib/lib/members/util.d.ts +3 -0
  452. package/lib/lib/members/util.js +25 -0
  453. package/lib/lib/members/utils.d.ts +2 -0
  454. package/lib/lib/members/utils.js +14 -0
  455. package/lib/lib/notify.d.ts +1 -0
  456. package/lib/lib/notify.js +23 -0
  457. package/lib/lib/orgs/utils.d.ts +5 -0
  458. package/lib/lib/orgs/utils.js +24 -0
  459. package/lib/lib/pg/backups.d.ts +17 -0
  460. package/lib/lib/pg/backups.js +164 -0
  461. package/lib/lib/pg/bastion.d.ts +29 -0
  462. package/lib/lib/pg/bastion.js +121 -0
  463. package/lib/lib/pg/config.d.ts +2 -0
  464. package/lib/lib/pg/config.js +13 -0
  465. package/lib/lib/pg/download.d.ts +5 -0
  466. package/lib/lib/pg/download.js +34 -0
  467. package/lib/lib/pg/fetcher.d.ts +39 -0
  468. package/lib/lib/pg/fetcher.js +137 -0
  469. package/lib/lib/pg/host.d.ts +1 -0
  470. package/lib/lib/pg/host.js +7 -0
  471. package/lib/lib/pg/psql.d.ts +48 -0
  472. package/lib/lib/pg/psql.js +252 -0
  473. package/lib/lib/pg/push_pull.d.ts +13 -0
  474. package/lib/lib/pg/push_pull.js +118 -0
  475. package/lib/lib/pg/setter.d.ts +16 -0
  476. package/lib/lib/pg/setter.js +65 -0
  477. package/lib/lib/pg/types.d.ts +230 -0
  478. package/lib/lib/pg/types.js +2 -0
  479. package/lib/lib/pg/util.d.ts +36 -0
  480. package/lib/lib/pg/util.js +183 -0
  481. package/lib/lib/redis/api.d.ts +65 -0
  482. package/lib/lib/redis/api.js +122 -0
  483. package/lib/lib/releases/output.d.ts +1 -0
  484. package/lib/lib/releases/output.js +14 -0
  485. package/lib/lib/releases/releases.d.ts +6 -0
  486. package/lib/lib/releases/releases.js +32 -0
  487. package/lib/lib/releases/status_helper.d.ts +5 -0
  488. package/lib/lib/releases/status_helper.js +25 -0
  489. package/lib/lib/run/dyno.js +2 -2
  490. package/lib/lib/run/log-displayer.d.ts +1 -1
  491. package/lib/lib/spaces/format.d.ts +4 -0
  492. package/lib/lib/spaces/format.js +60 -0
  493. package/lib/lib/spaces/hosts.d.ts +9 -0
  494. package/lib/lib/spaces/hosts.js +34 -0
  495. package/lib/lib/spaces/outbound-rules.d.ts +4 -0
  496. package/lib/lib/spaces/outbound-rules.js +78 -0
  497. package/lib/lib/spaces/parsers.d.ts +8 -0
  498. package/lib/lib/spaces/parsers.js +17 -0
  499. package/lib/lib/spaces/peering.d.ts +4 -0
  500. package/lib/lib/spaces/peering.js +53 -0
  501. package/lib/lib/spaces/spaces.d.ts +4 -0
  502. package/lib/lib/spaces/spaces.js +37 -0
  503. package/lib/lib/spaces/vpn-connections.d.ts +2 -0
  504. package/lib/lib/spaces/vpn-connections.js +22 -0
  505. package/lib/lib/teamUtils.d.ts +3 -0
  506. package/lib/lib/teamUtils.js +18 -0
  507. package/lib/lib/time.d.ts +2 -0
  508. package/lib/lib/time.js +29 -0
  509. package/lib/lib/types/app_errors.d.ts +6 -0
  510. package/lib/lib/types/app_errors.js +2 -0
  511. package/lib/lib/types/domain.d.ts +61 -0
  512. package/lib/lib/types/domain.js +5 -0
  513. package/lib/lib/types/notifications.d.ts +20 -0
  514. package/lib/lib/types/notifications.js +2 -0
  515. package/lib/lib/utils/multisort.d.ts +32 -0
  516. package/lib/lib/utils/multisort.js +66 -0
  517. package/lib/lib/utils/uuid-validate.d.ts +1 -0
  518. package/lib/lib/utils/uuid-validate.js +7 -0
  519. package/lib/user-config.js +2 -2
  520. package/oclif.manifest.json +12776 -3097
  521. package/package.json +108 -61
  522. package/lib/lib/apps/confirm-app.d.ts +0 -1
@@ -0,0 +1,2 @@
1
+ import * as logger from 'debug';
2
+ export declare const debug: logger.Debugger;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.debug = void 0;
4
+ const logger = require("debug");
5
+ exports.debug = logger('heroku-container-registry');
@@ -0,0 +1,24 @@
1
+ export declare type cmdOptions = {
2
+ output?: boolean;
3
+ input?: string;
4
+ };
5
+ export declare const cmd: (cmd: string, args: string[], options?: cmdOptions) => Promise<string>;
6
+ export declare const version: () => Promise<number[]>;
7
+ export declare const pullImage: (resource: string) => Promise<string>;
8
+ export declare const getDockerfiles: (rootdir: string, recursive: boolean) => string[];
9
+ export declare type dockerJob = {
10
+ name: string;
11
+ resource: string;
12
+ dockerfile: string;
13
+ postfix: number;
14
+ depth: number;
15
+ };
16
+ export declare type groupedDockerJobs = {
17
+ [processType: string]: dockerJob[];
18
+ };
19
+ export declare const getJobs: (resourceRoot: string, dockerfiles: string[]) => groupedDockerJobs;
20
+ export declare const filterByProcessType: (jobs: groupedDockerJobs, processTypes: string[]) => groupedDockerJobs;
21
+ export declare const chooseJobs: (jobs: groupedDockerJobs) => Promise<dockerJob[]>;
22
+ export declare const buildImage: (dockerfile: string, resource: string, buildArgs: string[], path?: string) => Promise<string>;
23
+ export declare const pushImage: (resource: string) => Promise<string>;
24
+ export declare const runImage: (resource: string, command: string, port: number) => Promise<string>;
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runImage = exports.pushImage = exports.buildImage = exports.chooseJobs = exports.filterByProcessType = exports.getJobs = exports.getDockerfiles = exports.pullImage = exports.version = exports.cmd = void 0;
4
+ const Child = require("child_process");
5
+ const debug_1 = require("./debug");
6
+ const glob = require("glob");
7
+ const Path = require("path");
8
+ const inquirer = require("inquirer");
9
+ const os = require("os");
10
+ const DOCKERFILE_REGEX = /\bDockerfile(.\w*)?$/;
11
+ const cmd = async function (cmd, args, options = {}) {
12
+ (0, debug_1.debug)(cmd, args);
13
+ const stdio = [
14
+ options.input ? 'pipe' : process.stdin,
15
+ options.output ? 'pipe' : process.stdout,
16
+ process.stderr,
17
+ ];
18
+ return new Promise((resolve, reject) => {
19
+ const child = Child.spawn(cmd, args, { stdio: stdio });
20
+ if (child.stdin) {
21
+ child.stdin.end(options.input);
22
+ }
23
+ let stdout;
24
+ if (child.stdout) {
25
+ stdout = '';
26
+ child.stdout.on('data', data => {
27
+ stdout += data.toString();
28
+ });
29
+ }
30
+ child.on('error', (err) => {
31
+ if (err.code === 'ENOENT' && err.path === 'docker') {
32
+ reject(new Error(`Cannot find docker, please ensure docker is installed.
33
+ If you need help installing docker, visit https://docs.docker.com/install/#supported-platforms`));
34
+ }
35
+ else {
36
+ reject(err);
37
+ }
38
+ });
39
+ child.on('exit', (code, signal) => {
40
+ if (signal || code) {
41
+ reject(new Error(signal || (code === null || code === void 0 ? void 0 : code.toString())));
42
+ }
43
+ else {
44
+ resolve(stdout);
45
+ }
46
+ });
47
+ });
48
+ };
49
+ exports.cmd = cmd;
50
+ const version = async function () {
51
+ const version = await (0, exports.cmd)('docker', ['version', '-f', '{{.Client.Version}}'], { output: true });
52
+ const [major, minor] = version.split(/\./);
53
+ return [Number.parseInt(major, 10) || 0, Number.parseInt(minor, 10) || 0]; // ensure exactly 2 components
54
+ };
55
+ exports.version = version;
56
+ const pullImage = function (resource) {
57
+ const args = ['pull', resource];
58
+ return (0, exports.cmd)('docker', args);
59
+ };
60
+ exports.pullImage = pullImage;
61
+ const getDockerfiles = function (rootdir, recursive) {
62
+ const match = recursive ? './**/Dockerfile?(.)*' : 'Dockerfile*';
63
+ let dockerfiles = glob.sync(match, {
64
+ cwd: rootdir,
65
+ nodir: true,
66
+ });
67
+ if (recursive) {
68
+ dockerfiles = dockerfiles.filter(df => df.match(/Dockerfile\.[\w]+$/));
69
+ }
70
+ else {
71
+ dockerfiles = dockerfiles.filter(df => df.match(/Dockerfile$/));
72
+ }
73
+ return dockerfiles.map(file => Path.join(rootdir, file));
74
+ };
75
+ exports.getDockerfiles = getDockerfiles;
76
+ const getJobs = function (resourceRoot, dockerfiles) {
77
+ const jobs = [];
78
+ dockerfiles.forEach(dockerfile => {
79
+ const match = dockerfile.match(DOCKERFILE_REGEX);
80
+ if (match) {
81
+ const proc = (match[1] || '.standard').slice(1);
82
+ jobs.push({
83
+ name: proc,
84
+ resource: `${resourceRoot}/${proc}`,
85
+ dockerfile: dockerfile,
86
+ postfix: Path.basename(dockerfile) === 'Dockerfile' ? 0 : 1,
87
+ depth: Path.normalize(dockerfile).split(Path.sep).length,
88
+ });
89
+ }
90
+ });
91
+ // prefer closer Dockerfiles, then prefer Dockerfile over Dockerfile.web
92
+ jobs.sort((a, b) => {
93
+ return a.depth - b.depth || a.postfix - b.postfix;
94
+ });
95
+ // group all Dockerfiles for the same process type together
96
+ const groupedJobs = {};
97
+ jobs.forEach(job => {
98
+ groupedJobs[job.name] = groupedJobs[job.name] || [];
99
+ groupedJobs[job.name].push(job);
100
+ });
101
+ return groupedJobs;
102
+ };
103
+ exports.getJobs = getJobs;
104
+ const filterByProcessType = function (jobs, processTypes) {
105
+ const filteredJobs = {};
106
+ processTypes.forEach(processType => {
107
+ filteredJobs[processType] = jobs[processType];
108
+ });
109
+ return filteredJobs;
110
+ };
111
+ exports.filterByProcessType = filterByProcessType;
112
+ const chooseJobs = async function (jobs) {
113
+ const chosenJobs = [];
114
+ for (const processType in jobs) {
115
+ if (Object.prototype.hasOwnProperty.call(jobs, processType)) {
116
+ const group = jobs[processType];
117
+ if (group.length > 1) {
118
+ const prompt = [{
119
+ type: 'list',
120
+ name: processType,
121
+ choices: group.map(j => j.dockerfile),
122
+ message: `Found multiple Dockerfiles with process type ${processType}. Please choose one to build and push `,
123
+ }];
124
+ const answer = await inquirer.prompt(prompt);
125
+ const found = group.find(o => o.dockerfile === answer[processType]);
126
+ if (found) {
127
+ chosenJobs.push(found);
128
+ }
129
+ }
130
+ else {
131
+ chosenJobs.push(group[0]);
132
+ }
133
+ }
134
+ }
135
+ return chosenJobs;
136
+ };
137
+ exports.chooseJobs = chooseJobs;
138
+ const buildImage = async function (dockerfile, resource, buildArgs, path) {
139
+ const cwd = path || Path.dirname(dockerfile);
140
+ const args = ['build', '-f', dockerfile, '-t', resource, '--platform', 'linux/amd64'];
141
+ for (const element of buildArgs) {
142
+ if (element.length > 0) {
143
+ args.push('--build-arg', element);
144
+ }
145
+ }
146
+ args.push(cwd);
147
+ return (0, exports.cmd)('docker', args);
148
+ };
149
+ exports.buildImage = buildImage;
150
+ const pushImage = async function (resource) {
151
+ const args = ['push', resource];
152
+ return (0, exports.cmd)('docker', args);
153
+ };
154
+ exports.pushImage = pushImage;
155
+ const runImage = function (resource, command, port) {
156
+ const args = [
157
+ 'run',
158
+ '--user',
159
+ os.userInfo().uid.toString(),
160
+ '-e',
161
+ `PORT=${port}`,
162
+ '-it',
163
+ resource,
164
+ command,
165
+ ];
166
+ return (0, exports.cmd)('docker', args);
167
+ };
168
+ exports.runImage = runImage;
@@ -0,0 +1 @@
1
+ export declare const streamer: (url: string, out: NodeJS.WriteStream) => Promise<unknown>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.streamer = void 0;
4
+ async function call(url, out, retries) {
5
+ const http = require('http-call').HTTP;
6
+ const maxRetries = 30;
7
+ try {
8
+ const { response } = await http.stream(url);
9
+ response.on('data', function (d) {
10
+ out.write(d);
11
+ });
12
+ return await new Promise(function (resolve, reject) {
13
+ response.on('error', reject);
14
+ response.on('end', resolve);
15
+ });
16
+ }
17
+ catch (error) {
18
+ if (error.statusCode === 404 && retries <= maxRetries) {
19
+ return new Promise(function (resolve, reject) {
20
+ setTimeout(function () {
21
+ call(url, out, retries + 1).then(resolve, reject);
22
+ }, 1000);
23
+ });
24
+ }
25
+ throw error;
26
+ }
27
+ }
28
+ const streamer = function (url, out) {
29
+ return call(url, out, 0);
30
+ };
31
+ exports.streamer = streamer;
@@ -0,0 +1,6 @@
1
+ import { APIClient } from '@heroku-cli/command';
2
+ import * as Heroku from '@heroku-cli/schema';
3
+ export declare function getDomains(heroku: APIClient, app: string): Promise<Required<Heroku.Domain>[]>;
4
+ export declare function waitForDomains(heroku: APIClient, app: string): Promise<Required<Heroku.Domain>[]>;
5
+ export declare function printDomains(domains: Required<Heroku.Domain>[], message: string): void;
6
+ export declare function waitForCertIssuedOnDomains(heroku: APIClient, app: string): Promise<void>;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waitForCertIssuedOnDomains = exports.printDomains = exports.waitForDomains = exports.getDomains = void 0;
4
+ const psl_1 = require("psl");
5
+ const core_1 = require("@oclif/core");
6
+ const color_1 = require("@heroku-cli/color");
7
+ const wait = function (ms) {
8
+ return new Promise(function (resolve) {
9
+ setTimeout(resolve, ms);
10
+ });
11
+ };
12
+ function isParseError(parsed) {
13
+ return parsed.error !== undefined;
14
+ }
15
+ async function getDomains(heroku, app) {
16
+ const { body: domains } = await heroku.get(`/apps/${app}/domains`);
17
+ return domains;
18
+ }
19
+ exports.getDomains = getDomains;
20
+ function type(domain) {
21
+ const parsed = (0, psl_1.parse)(domain.hostname);
22
+ if (isParseError(parsed)) {
23
+ throw new Error(parsed.error.message);
24
+ }
25
+ return parsed.subdomain === null ? 'ALIAS/ANAME' : 'CNAME';
26
+ }
27
+ async function waitForDomains(heroku, app) {
28
+ function someNull(domains) {
29
+ return domains.some(domain => domain.kind === 'custom' && !domain.cname);
30
+ }
31
+ let apiDomains = await getDomains(heroku, app);
32
+ if (someNull(apiDomains)) {
33
+ core_1.ux.action.start('Waiting for stable domains to be created');
34
+ let index = 0;
35
+ do {
36
+ // trying 30 times was easier for me to test that setTimeout
37
+ if (index >= 30) {
38
+ throw new Error('Timed out while waiting for stable domains to be created');
39
+ }
40
+ await wait(1000);
41
+ apiDomains = await getDomains(heroku, app);
42
+ index++;
43
+ } while (someNull(apiDomains));
44
+ }
45
+ return apiDomains;
46
+ }
47
+ exports.waitForDomains = waitForDomains;
48
+ function printDomains(domains, message) {
49
+ domains = domains.filter(domain => domain.kind === 'custom');
50
+ const domains_with_type = domains.map(domain => Object.assign({}, domain, { type: type(domain) }));
51
+ if (domains_with_type.length === 0) {
52
+ core_1.ux.styledHeader(`${message} Add a custom domain to your app by running ${color_1.default.cmd('heroku domains:add <yourdomain.com>')}`);
53
+ }
54
+ else {
55
+ core_1.ux.styledHeader(`${message} Update your application's DNS settings as follows`);
56
+ core_1.ux.table(domains_with_type, {
57
+ domain: {
58
+ get: ({ hostname }) => hostname,
59
+ },
60
+ recordType: {
61
+ header: 'Record Type',
62
+ get: ({ type }) => type,
63
+ },
64
+ dnsTarget: {
65
+ header: 'DNS Target',
66
+ get: ({ cname }) => cname,
67
+ },
68
+ });
69
+ }
70
+ }
71
+ exports.printDomains = printDomains;
72
+ async function waitForCertIssuedOnDomains(heroku, app) {
73
+ function certIssuedOrFailedForAllCustomDomains(domains) {
74
+ domains = domains.filter(domain => domain.kind === 'custom');
75
+ return domains.every(domain => domain.acm_status === 'cert issued' || domain.acm_status === 'failed');
76
+ }
77
+ function someFailed(domains) {
78
+ domains = domains.filter(domain => domain.kind === 'custom');
79
+ return domains.some(domain => domain.acm_status === 'failed');
80
+ }
81
+ function backoff(attempts) {
82
+ const wait = 15 * 1000;
83
+ // Don't wait more than 60 seconds
84
+ const multiplier = attempts < 60 ? Math.floor(attempts / 20) : 3;
85
+ const extraWait = wait * multiplier;
86
+ return wait + extraWait;
87
+ }
88
+ let domains = await getDomains(heroku, app);
89
+ if (!certIssuedOrFailedForAllCustomDomains(domains)) {
90
+ core_1.ux.action.start('Waiting until the certificate is issued to all domains');
91
+ let retries = 0;
92
+ while (!certIssuedOrFailedForAllCustomDomains(domains)) {
93
+ await wait(backoff(retries));
94
+ domains = await getDomains(heroku, app);
95
+ retries++;
96
+ }
97
+ if (someFailed(domains)) {
98
+ core_1.ux.action.stop(color_1.default.red('!'));
99
+ throw new Error('ACM not enabled for some domains');
100
+ }
101
+ core_1.ux.action.stop();
102
+ }
103
+ }
104
+ exports.waitForCertIssuedOnDomains = waitForCertIssuedOnDomains;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1,230 @@
1
1
  "use strict";
2
- require('foreman/nf.js');
2
+ // Copyright IBM Corp. 2012,2015. All Rights Reserved.
3
+ // Node module: foreman
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ // This file is copied from the Node Foreman package. It was copied in order to fix
7
+ // a bug related to the use of port 5000 as a default. It is not meant to be a
8
+ // long-term solution, we plan to eventually remove our dependency on Node Foreman.
9
+ // These rules are disabled in order to prevent the need for refactoring
10
+ /* eslint-disable guard-for-in */
11
+ /* eslint-disable new-cap */
12
+ const path = require('path');
13
+ const events = require('events');
14
+ const fs = require('fs');
15
+ const quote = require('shell-quote').quote;
16
+ const program = require('commander');
17
+ const colors = require('foreman/lib/colors');
18
+ const display = require('foreman/lib/console').Console;
19
+ const _proc = require('foreman/lib/proc');
20
+ const _procfile = require('foreman/lib/procfile');
21
+ const _envs = require('foreman/lib/envs');
22
+ const _requirements = require('foreman/lib/requirements');
23
+ const startProxies = require('foreman/lib/proxy').startProxies;
24
+ const startForward = require('foreman/lib/forward').startForward;
25
+ const exporters = require('foreman/lib/exporters');
26
+ const foremanPjson = require('foreman/package.json');
27
+ program.version(foremanPjson.version);
28
+ program.option('-j, --procfile <FILE>', 'load procfile FILE', 'Procfile');
29
+ program.option('-e, --env <FILE>', 'load environment from FILE, a comma-separated list', '.env');
30
+ program.option('-p, --port <PORT>', 'start indexing ports at number PORT', 0);
31
+ // Foreman Event Bus/Emitter //
32
+ var emitter = new events.EventEmitter();
33
+ emitter.once('killall', function (signal) {
34
+ display.Done('Killing all processes with signal ', signal);
35
+ });
36
+ emitter.setMaxListeners(50);
37
+ var start = _proc.start;
38
+ var once = _proc.once;
39
+ var loadProc = _procfile.loadProc;
40
+ var loadEnvs = _envs.loadEnvs;
41
+ var getreqs = _requirements.getreqs;
42
+ var calculatePadding = _requirements.calculatePadding;
43
+ // Kill All Child Processes on SIGINT
44
+ process.once('SIGINT', function () {
45
+ display.Warn('Interrupted by User');
46
+ emitter.emit('killall', 'SIGINT');
47
+ });
48
+ program
49
+ .command('start [procs]')
50
+ .usage('[Options] [Processes] e.g. web=1,log=2,api')
51
+ .option('-s, --showenvs', 'show ENV variables on start', false)
52
+ .option('-x, --proxy <PORT>', 'start a load balancing proxy on PORT')
53
+ .option('--ssl-key <KEY FILE>', 'a key file to use when proxying SSL')
54
+ .option('--ssl-cert <CERT FILE>', 'a cert file to use when proxying SSL')
55
+ .option('-f, --forward <PORT>', 'start a forward proxy on PORT')
56
+ .option('-i, --intercept <HOSTNAME>', 'set forward proxy to intercept HOSTNAME', null)
57
+ .option('-r, --raw', 'raw log output with no app name, timestamp, wrap or trim', false)
58
+ .option('-t, --trim <N>', 'trim logs to N characters', 0)
59
+ .option('-w, --wrap', 'wrap logs (negates trim)')
60
+ .description('Start the jobs in the Procfile')
61
+ .action(function (args) {
62
+ var envs = loadEnvs(program.env);
63
+ var proc = loadProc(program.procfile);
64
+ if (!proc) {
65
+ return;
66
+ }
67
+ if (this.showenvs) {
68
+ for (var key in envs) {
69
+ display.Alert('env %s=%s', key, envs[key]);
70
+ }
71
+ }
72
+ var reqs = getreqs(args, proc);
73
+ display.padding = calculatePadding(reqs);
74
+ display.raw = this.raw;
75
+ if (this.wrap) {
76
+ display.wrapline = process.stdout.columns - display.padding - 7;
77
+ display.trimline = 0;
78
+ display.Alert('Wrapping display Output to %d Columns', display.wrapline);
79
+ }
80
+ else {
81
+ display.trimline = this.trim;
82
+ if (display.trimline > 0) {
83
+ display.Alert('Trimming display Output to %d Columns', display.trimline);
84
+ }
85
+ }
86
+ if (this.forward) {
87
+ startForward(this.forward, this.intercept, emitter);
88
+ }
89
+ // using port 5006 because it is not known to be used by other common software
90
+ startProxies(reqs, proc, this, emitter, program.port || envs.PORT || process.env.PORT || 5006);
91
+ start(proc, reqs, envs, program.port || envs.PORT || process.env.PORT || 5006, emitter);
92
+ });
93
+ program
94
+ .command('run <COMMAND...>')
95
+ .usage('[Options]')
96
+ .option('-s, --showenvs', 'show ENV variables on start', false)
97
+ .description('Run a one off process using the ENV variables')
98
+ .action(function (args) {
99
+ var envs = loadEnvs(program.env);
100
+ var callback = function (code) {
101
+ process.exit(code);
102
+ };
103
+ if (!args || args.length === 0) {
104
+ return;
105
+ }
106
+ var input = quote(args);
107
+ if (this.showenvs) {
108
+ for (var key in envs) {
109
+ display.Alert('env %s=%s', key, envs[key]);
110
+ }
111
+ }
112
+ display.trimline = process.stdout.columns - 5;
113
+ once(input, envs, callback);
114
+ });
115
+ program
116
+ .command('export [PROCS]')
117
+ .option('-a, --app <NAME>', 'export upstart application as NAME', 'foreman')
118
+ .option('-u, --user <NAME>', 'export upstart user as NAME', 'root')
119
+ .option('-o, --out <DIR>', 'export upstart files to DIR', '.')
120
+ .option('-c, --cwd <DIR>', 'change current working directory to DIR')
121
+ .option('-g, --gid <GID>', 'set gid of upstart config to GID')
122
+ .option('-l, --log <DIR>', 'specify upstart log directory', '/var/log')
123
+ .option('-t, --type <TYPE>', 'export file to TYPE (default upstart)', 'upstart')
124
+ .option('-m, --template <DIR>', 'use template folder')
125
+ .description('Export to an upstart job independent of foreman')
126
+ .action(function (procArgs) {
127
+ var envs = loadEnvs(program.env);
128
+ var procs = loadProc(program.procfile);
129
+ if (!procs) {
130
+ return;
131
+ }
132
+ var req = getreqs(procArgs, procs);
133
+ // Variables for Upstart Template
134
+ var config = {
135
+ application: this.app,
136
+ cwd: path.resolve(process.cwd(), this.cwd || ''),
137
+ user: this.user,
138
+ logs: this.log,
139
+ envs: envs,
140
+ group: this.gid || this.user,
141
+ template: this.template,
142
+ };
143
+ config.envfile = path.resolve(program.env);
144
+ var writeout;
145
+ if (exporters[this.type]) {
146
+ writeout = exporters[this.type];
147
+ }
148
+ else {
149
+ display.Error('Unknown Export Format', this.type);
150
+ process.exit(1);
151
+ }
152
+ // Check for Upstart User
153
+ // friendly warning - does not stop export
154
+ var userExists = false;
155
+ fs.readFileSync('/etc/passwd')
156
+ .toString().split(/\n/).forEach(function (line) {
157
+ if (line.match(/^[^:]*/)[0] === config.user) {
158
+ userExists = true;
159
+ }
160
+ });
161
+ if (!userExists) {
162
+ display.Warn(display.fmt('User %s Does Not Exist on System', config.user));
163
+ }
164
+ // using port 5006 because it is not known to be used by other common software
165
+ var baseport = Number.parseInt(program.port || envs.PORT || process.env.PORT || 5006);
166
+ var baseport_i = 0;
167
+ var baseport_j = 0;
168
+ var envl = [];
169
+ config.processes = [];
170
+ // This is ugly because of shitty support for array copying
171
+ // Cleanup is definitely required
172
+ for (var key in req) {
173
+ var c = {};
174
+ var cmd = procs[key];
175
+ if (!cmd) {
176
+ display.Warn("Required Key '%s' Does Not Exist in Procfile Definition", key);
177
+ continue;
178
+ }
179
+ var n = req[key];
180
+ config.processes.push({ process: key, n: n });
181
+ c.process = key;
182
+ c.command = cmd;
183
+ for (var _ in config) {
184
+ c[_] = config[_];
185
+ }
186
+ c.numbers = [];
187
+ for (var i = 1; i <= n; i++) {
188
+ const port = (baseport + baseport_i + baseport_j) * 100;
189
+ const envl = [];
190
+ for (key in envs) {
191
+ envl.push({
192
+ key: key,
193
+ value: envs[key],
194
+ });
195
+ }
196
+ envl.push({ key: 'PORT', value: conf.port });
197
+ // eslint-disable-next-line unicorn/no-array-push-push
198
+ envl.push({ key: 'FOREMAN_WORKER_NAME', value: conf.process + '.' + conf.number });
199
+ conf.envs = envl;
200
+ const conf = Object.assign(Object.assign({}, c), { number: i, port, envs: envl });
201
+ // Write the APP-PROCESS-N.conf File
202
+ writeout.foreman_app_n(conf, this.out);
203
+ baseport_i++;
204
+ c.numbers.push({ number: i });
205
+ }
206
+ envl = [];
207
+ for (key in envs) {
208
+ envl.push({
209
+ key: key,
210
+ value: envs[key],
211
+ });
212
+ }
213
+ c.envs = envl;
214
+ // Write the APP-Process.conf File
215
+ writeout.foreman_app(c, this.out);
216
+ baseport_i = 0;
217
+ baseport_j++;
218
+ }
219
+ // Write the APP.conf File
220
+ writeout.foreman(config, this.out);
221
+ });
222
+ program.parse(process.argv);
223
+ if (process.argv.slice(2).length === 0) {
224
+ console.log(colors.cyan(' _____ '));
225
+ console.log(colors.cyan(' | __|___ ___ ___ _____ ___ ___ '));
226
+ console.log(colors.yellow(' | __| . | _| -_| | | |'));
227
+ console.log(colors.magenta(' |__| |___|_| |___|_|_|_|_^_|_|_|'));
228
+ program.outputHelp();
229
+ process.exit(1);
230
+ }
@@ -0,0 +1,3 @@
1
+ import { APIClient } from '@heroku-cli/command';
2
+ export declare const inviteMemberToTeam: (email: string, role: string, team: string, heroku: APIClient) => Promise<void>;
3
+ export declare const addMemberToTeam: (email: string, role: string, groupName: string, heroku: APIClient, method?: string) => Promise<void>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMemberToTeam = exports.inviteMemberToTeam = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const color_1 = require("@heroku-cli/color");
6
+ const inviteMemberToTeam = async function (email, role, team, heroku) {
7
+ core_1.ux.action.start(`Inviting ${color_1.default.cyan(email)} to ${color_1.default.magenta(team)} as ${color_1.default.green(role)}`);
8
+ await heroku.request(`/teams/${team}/invitations`, {
9
+ headers: {
10
+ Accept: 'application/vnd.heroku+json; version=3.team-invitations',
11
+ }, method: 'PUT',
12
+ body: { email, role },
13
+ });
14
+ core_1.ux.action.stop();
15
+ };
16
+ exports.inviteMemberToTeam = inviteMemberToTeam;
17
+ const addMemberToTeam = async function (email, role, groupName, heroku, method = 'PUT') {
18
+ core_1.ux.action.start(`Adding ${color_1.default.cyan(email)} to ${color_1.default.magenta(groupName)} as ${color_1.default.green(role)}`);
19
+ await heroku.request(`/teams/${groupName}/members`, {
20
+ method: method,
21
+ body: { email, role },
22
+ });
23
+ core_1.ux.action.stop();
24
+ };
25
+ exports.addMemberToTeam = addMemberToTeam;
@@ -0,0 +1,2 @@
1
+ import { APIClient } from '@heroku-cli/command';
2
+ export declare const addMemberToTeam: (email: string, role: string, groupName: string, heroku: APIClient, method?: string) => Promise<void>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMemberToTeam = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const color_1 = require("@heroku-cli/color");
6
+ const addMemberToTeam = async function (email, role, groupName, heroku, method = 'PUT') {
7
+ core_1.ux.action.start(`Adding ${color_1.default.cyan(email)} to ${color_1.default.magenta(groupName)} as ${color_1.default.green(role)}`);
8
+ await heroku.request(`/teams/${groupName}/members`, {
9
+ method: method,
10
+ body: { email, role },
11
+ });
12
+ core_1.ux.action.stop();
13
+ };
14
+ exports.addMemberToTeam = addMemberToTeam;
@@ -0,0 +1 @@
1
+ export default function (subtitle: string, message: string, success?: boolean): void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const path = require("path");
4
+ const notifications_1 = require("@heroku-cli/notifications");
5
+ const core_1 = require("@oclif/core");
6
+ function default_1(subtitle, message, success = true) {
7
+ const contentImage = path.join(__dirname, `../assets/${success ? 'success' : 'error'}.png`);
8
+ try {
9
+ (0, notifications_1.notify)({
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-ignore
12
+ title: 'heroku cli',
13
+ subtitle,
14
+ message,
15
+ contentImage,
16
+ sound: true,
17
+ });
18
+ }
19
+ catch (error) {
20
+ core_1.ux.warn(error);
21
+ }
22
+ }
23
+ exports.default = default_1;
@@ -0,0 +1,5 @@
1
+ import * as Heroku from '@heroku-cli/schema';
2
+ export declare const printGroups: (teams: Heroku.Team[], type: {
3
+ label: string;
4
+ }) => void;
5
+ export declare const printGroupsJSON: (teams: Heroku.Team[]) => void;