heroku 9.0.0-alpha.1 → 9.0.0-alpha.3

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 +110 -63
  522. package/lib/lib/apps/confirm-app.d.ts +0 -1
@@ -0,0 +1,53 @@
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 vpn_connections_1 = require("../../../lib/spaces/vpn-connections");
7
+ const wait = (ms) => new Promise(resolve => {
8
+ setTimeout(resolve, ms);
9
+ });
10
+ class Wait extends command_1.Command {
11
+ async run() {
12
+ const { flags } = await this.parse(Wait);
13
+ const { name, space, json } = flags;
14
+ const interval = (flags.interval ? Number.parseInt(flags.interval, 10) : 10) * 1000;
15
+ const timeout = (flags.timeout ? Number.parseInt(flags.timeout, 10) : 20 * 60) * 1000;
16
+ const deadline = new Date(Date.now() + timeout);
17
+ let { body: vpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
18
+ if (vpnConnection.status === 'active') {
19
+ core_1.ux.log('VPN has been allocated.');
20
+ return;
21
+ }
22
+ core_1.ux.action.start(`Waiting for VPN Connection ${color_1.default.green(name)} to allocate...`);
23
+ while (vpnConnection.status !== 'active') {
24
+ if (new Date() > deadline) {
25
+ core_1.ux.error('Timeout waiting for VPN to become allocated.', { exit: 1 });
26
+ }
27
+ if (vpnConnection.status === 'failed') {
28
+ core_1.ux.error(vpnConnection.status_message || '', { exit: 1 });
29
+ }
30
+ await wait(interval);
31
+ const { body: updatedVpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
32
+ vpnConnection = updatedVpnConnection;
33
+ }
34
+ core_1.ux.action.stop();
35
+ const { body: newVpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
36
+ if (json) {
37
+ core_1.ux.styledJSON(newVpnConnection);
38
+ }
39
+ else {
40
+ (0, vpn_connections_1.displayVPNConfigInfo)(space, name, newVpnConnection);
41
+ }
42
+ }
43
+ }
44
+ exports.default = Wait;
45
+ Wait.topic = 'spaces';
46
+ Wait.description = 'wait for VPN Connection to be created';
47
+ Wait.flags = {
48
+ space: command_1.flags.string({ char: 's', description: 'space the vpn connection belongs to', required: true }),
49
+ name: command_1.flags.string({ char: 'n', description: 'name or id of the vpn connection to wait for', required: true }),
50
+ json: command_1.flags.boolean({ description: 'output in json format' }),
51
+ interval: command_1.flags.string({ char: 'i', description: 'seconds to wait between poll intervals' }),
52
+ timeout: command_1.flags.string({ char: 't', description: 'maximum number of seconds to wait' }),
53
+ };
@@ -0,0 +1,17 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Wait extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ space: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ interval: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ timeout: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ };
11
+ static args: {
12
+ space: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
13
+ };
14
+ run(): Promise<void>;
15
+ protected wait(ms: number): Promise<unknown>;
16
+ protected notify(spaceName: string): void;
17
+ }
@@ -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 tsheredoc_1 = require("tsheredoc");
7
+ const spinner_1 = require("@oclif/core/lib/cli-ux/action/spinner");
8
+ const debug_1 = require("debug");
9
+ const spaces_1 = require("../../lib/spaces/spaces");
10
+ const notifications_1 = require("@heroku-cli/notifications");
11
+ const spacesDebug = (0, debug_1.default)('spaces:wait');
12
+ class Wait extends command_1.Command {
13
+ async run() {
14
+ const { flags, args } = await this.parse(Wait);
15
+ const spaceName = flags.space || args.space;
16
+ if (!spaceName) {
17
+ core_1.ux.error((0, tsheredoc_1.default)(`
18
+ Error: Missing 1 required arg:
19
+ space
20
+ See more help with --help
21
+ `));
22
+ }
23
+ const interval = flags.interval * 1000;
24
+ const timeout = flags.timeout * 1000;
25
+ const deadline = new Date(Date.now() + timeout);
26
+ const action = new spinner_1.default();
27
+ action.start(`Waiting for space ${color_1.default.green(spaceName)} to allocate`);
28
+ let headers = {};
29
+ if (!flags.json) {
30
+ headers = { 'Accept-Expansion': 'region' };
31
+ }
32
+ let { body: space } = await this.heroku.get(`/spaces/${spaceName}`, { headers });
33
+ while (space.state === 'allocating') {
34
+ if (new Date() > deadline) {
35
+ throw new Error('Timeout waiting for space to become allocated.');
36
+ }
37
+ await this.wait(interval);
38
+ const { body: updatedSpace } = await this.heroku.get(`/spaces/${spaceName}`, { headers });
39
+ space = updatedSpace;
40
+ }
41
+ try {
42
+ const { body: nat } = await this.heroku.get(`/spaces/${spaceName}/nat`);
43
+ space.outbound_ips = nat;
44
+ }
45
+ catch (error) {
46
+ spacesDebug(`Retrieving NAT details for the space failed with ${error}`);
47
+ }
48
+ action.stop();
49
+ (0, spaces_1.renderInfo)(space, flags.json);
50
+ this.notify(spaceName);
51
+ }
52
+ wait(ms) {
53
+ return new Promise(resolve => setTimeout(resolve, ms));
54
+ }
55
+ notify(spaceName) {
56
+ try {
57
+ const notification = {
58
+ title: spaceName,
59
+ subtitle: `heroku spaces:wait ${spaceName}`,
60
+ message: 'space was successfully created',
61
+ sound: true,
62
+ };
63
+ (0, notifications_1.notify)(notification);
64
+ }
65
+ catch (error) {
66
+ core_1.ux.warn(error);
67
+ }
68
+ }
69
+ }
70
+ exports.default = Wait;
71
+ Wait.topic = 'spaces';
72
+ Wait.description = 'wait for a space to be created';
73
+ Wait.flags = {
74
+ space: command_1.flags.string({ char: 's', description: 'space to get info of' }),
75
+ json: command_1.flags.boolean({ description: 'output in json format' }),
76
+ interval: command_1.flags.integer({
77
+ char: 'i',
78
+ description: 'seconds to wait between poll intervals',
79
+ default: 30,
80
+ }),
81
+ timeout: command_1.flags.integer({
82
+ char: 't',
83
+ description: 'maximum number of seconds to wait',
84
+ default: 25 * 60,
85
+ }),
86
+ };
87
+ Wait.args = {
88
+ space: core_1.Args.string({ hidden: true }),
89
+ };
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const color_1 = require("@heroku-cli/color");
4
4
  const core_1 = require("@oclif/core");
5
+ const util_1 = require("@oclif/core/lib/util");
5
6
  const date_fns_1 = require("date-fns");
6
7
  const http_call_1 = require("http-call");
7
- const util_1 = require("../lib/status/util");
8
- const capitalize = (str) => str.slice(0, 1).toUpperCase() + str.slice(1);
8
+ const util_2 = require("../lib/status/util");
9
9
  const printStatus = (status) => {
10
10
  const colorize = color_1.default[status];
11
- let message = capitalize(status);
11
+ let message = (0, util_1.capitalize)(status);
12
12
  if (status === 'green') {
13
13
  message = 'No known issues at this time.';
14
14
  }
@@ -31,7 +31,7 @@ class Status extends core_1.Command {
31
31
  for (const incident of body.incidents) {
32
32
  core_1.ux.log();
33
33
  core_1.ux.styledHeader(`${incident.title} ${color_1.default.yellow(incident.created_at)} ${color_1.default.cyan(incident.full_url)}`);
34
- const padding = (0, util_1.maxBy)(incident.updates, (i) => i.update_type.length).update_type.length + 0;
34
+ const padding = (0, util_2.maxBy)(incident.updates, (i) => i.update_type.length).update_type.length + 0;
35
35
  for (const u of incident.updates) {
36
36
  core_1.ux.log(`${color_1.default.yellow(u.update_type.padEnd(padding))} ${new Date(u.updated_at).toISOString()} (${(0, date_fns_1.formatDistanceToNow)(new Date(u.updated_at))} ago)`);
37
37
  core_1.ux.log(`${u.contents}\n`);
@@ -0,0 +1,9 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Index extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ class Index extends command_1.Command {
7
+ async run() {
8
+ const { flags } = await this.parse(Index);
9
+ const { body: teams } = await this.heroku.get('/teams');
10
+ if (flags.json)
11
+ core_1.ux.styledJSON(teams);
12
+ else {
13
+ core_1.ux.table(teams.sort((a, b) => {
14
+ const aName = (a === null || a === void 0 ? void 0 : a.name) || '';
15
+ const bName = (b === null || b === void 0 ? void 0 : b.name) || '';
16
+ return (aName > bName) ? 1 : ((bName > aName) ? -1 : 0);
17
+ }), {
18
+ name: { header: 'Team' },
19
+ role: { header: 'Role', get: ({ role }) => color_1.default.green(role || '') },
20
+ });
21
+ }
22
+ }
23
+ }
24
+ exports.default = Index;
25
+ Index.topic = 'teams';
26
+ Index.description = `list the teams that you are a member of\n\nUse ${color_1.default.cyan.bold('heroku members:*')} to manage team members.`;
27
+ Index.flags = {
28
+ json: command_1.flags.boolean({ description: 'output in json format' }),
29
+ };
@@ -15,9 +15,12 @@ const path = require('path');
15
15
  const { version } = require('../package.json');
16
16
  const root = path.resolve(__dirname, '../package.json');
17
17
  const isDev = process.env.IS_DEV_ENVIRONMENT === 'true';
18
- const config = new core_1.Config({ root });
19
- const heroku = new command_1.APIClient(config);
20
- const token = heroku.auth;
18
+ const isTelemetryDisabled = process.env.DISABLE_TELEMETRY === 'true';
19
+ function getToken() {
20
+ const config = new core_1.Config({ root });
21
+ const heroku = new command_1.APIClient(config);
22
+ return heroku.auth;
23
+ }
21
24
  const debug = require('debug')('global_telemetry');
22
25
  const rollbar = new Rollbar({
23
26
  accessToken: '20783109b0064dbb85be0b2c5a5a5f79',
@@ -38,7 +41,7 @@ const resource = Resource
38
41
  const provider = new NodeTracerProvider({
39
42
  resource,
40
43
  });
41
- const headers = { Authorization: `Bearer ${token}` };
44
+ const headers = { Authorization: `Bearer ${process.env.IS_HEROKU_TEST_ENV !== 'true' ? getToken() : ''}` };
42
45
  const exporter = new OTLPTraceExporter({
43
46
  url: isDev ? 'https://backboard-staging.herokuapp.com/otel/v1/traces' : 'https://backboard.heroku.com/otel/v1/traces',
44
47
  headers,
@@ -104,6 +107,9 @@ function reportCmdNotFound(config) {
104
107
  exports.reportCmdNotFound = reportCmdNotFound;
105
108
  async function sendTelemetry(currentTelemetry, rollbarCb) {
106
109
  // send telemetry to honeycomb and rollbar
110
+ if (isTelemetryDisabled) {
111
+ return;
112
+ }
107
113
  const telemetry = currentTelemetry;
108
114
  if (telemetry instanceof Error) {
109
115
  await Promise.all([
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const telemetry = require("../../global_telemetry");
4
4
  const performance_analytics = async function () {
5
- if (global.cliTelemetry) {
6
- const cmdStartTime = global.cliTelemetry.commandRunDuration;
7
- global.cliTelemetry.commandRunDuration = telemetry.computeDuration(cmdStartTime);
8
- global.cliTelemetry.lifecycleHookCompletion.postrun = true;
5
+ if (process.env.IS_HEROKU_TEST_ENV === 'true' || !global.cliTelemetry) {
6
+ return;
9
7
  }
8
+ const cmdStartTime = global.cliTelemetry.commandRunDuration;
9
+ global.cliTelemetry.commandRunDuration = telemetry.computeDuration(cmdStartTime);
10
+ global.cliTelemetry.lifecycleHookCompletion.postrun = true;
10
11
  };
11
12
  exports.default = performance_analytics;
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const analytics_1 = require("../../analytics");
4
4
  const telemetry = require("../../global_telemetry");
5
5
  const analytics = async function (options) {
6
+ if (process.env.IS_HEROKU_TEST_ENV === 'true') {
7
+ return;
8
+ }
6
9
  global.cliTelemetry = telemetry.setupTelemetry(this.config, options);
7
10
  const analytics = new analytics_1.default(this.config);
8
11
  await analytics.record(options);
@@ -0,0 +1,78 @@
1
+ import * as Heroku from '@heroku-cli/schema';
2
+ import { APIClient } from '@heroku-cli/command';
3
+ export declare const waitForAddonProvisioning: (api: APIClient, addon: Heroku.AddOn, interval: number) => Promise<{
4
+ [x: string]: any;
5
+ actions?: {
6
+ [k: string]: any;
7
+ }[] | undefined;
8
+ addon_service?: {
9
+ [k: string]: any;
10
+ id?: string | undefined;
11
+ name?: string | undefined;
12
+ } | undefined;
13
+ billing_entity?: {
14
+ [k: string]: any;
15
+ id?: string | undefined;
16
+ name?: string | undefined;
17
+ type?: "app" | "team" | undefined;
18
+ } | undefined;
19
+ app?: {
20
+ [k: string]: any;
21
+ id?: string | undefined;
22
+ name?: string | undefined;
23
+ } | undefined;
24
+ billed_price?: {
25
+ [k: string]: any;
26
+ } | null | undefined;
27
+ config_vars?: string[] | undefined;
28
+ created_at?: string | undefined;
29
+ id?: string | undefined;
30
+ name?: string | undefined;
31
+ plan?: {
32
+ [k: string]: any;
33
+ id?: string | undefined;
34
+ name?: string | undefined;
35
+ } | undefined;
36
+ provider_id?: string | undefined;
37
+ state?: "provisioned" | "provisioning" | "deprovisioned" | undefined;
38
+ updated_at?: string | undefined;
39
+ web_url?: string | null | undefined;
40
+ }>;
41
+ export declare const waitForAddonDeprovisioning: (api: APIClient, addon: Heroku.AddOn, interval: number) => Promise<{
42
+ [x: string]: any;
43
+ actions?: {
44
+ [k: string]: any;
45
+ }[] | undefined;
46
+ addon_service?: {
47
+ [k: string]: any;
48
+ id?: string | undefined;
49
+ name?: string | undefined;
50
+ } | undefined;
51
+ billing_entity?: {
52
+ [k: string]: any;
53
+ id?: string | undefined;
54
+ name?: string | undefined;
55
+ type?: "app" | "team" | undefined;
56
+ } | undefined;
57
+ app?: {
58
+ [k: string]: any;
59
+ id?: string | undefined;
60
+ name?: string | undefined;
61
+ } | undefined;
62
+ billed_price?: {
63
+ [k: string]: any;
64
+ } | null | undefined;
65
+ config_vars?: string[] | undefined;
66
+ created_at?: string | undefined;
67
+ id?: string | undefined;
68
+ name?: string | undefined;
69
+ plan?: {
70
+ [k: string]: any;
71
+ id?: string | undefined;
72
+ name?: string | undefined;
73
+ } | undefined;
74
+ provider_id?: string | undefined;
75
+ state?: "provisioned" | "provisioning" | "deprovisioned" | undefined;
76
+ updated_at?: string | undefined;
77
+ web_url?: string | null | undefined;
78
+ }>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waitForAddonDeprovisioning = exports.waitForAddonProvisioning = void 0;
4
+ const core_1 = require("@oclif/core");
5
+ const color_1 = require("@heroku-cli/color");
6
+ const waitForAddonProvisioning = async function (api, addon, interval) {
7
+ var _a;
8
+ const app = ((_a = addon.app) === null || _a === void 0 ? void 0 : _a.name) || '';
9
+ const addonName = addon.name;
10
+ let addonBody = Object.assign({}, addon);
11
+ core_1.ux.action.start(`Creating ${color_1.default.addon(addonName || '')}`);
12
+ while (addonBody.state === 'provisioning') {
13
+ // eslint-disable-next-line no-promise-executor-return
14
+ await new Promise(resolve => setTimeout(resolve, interval * 1000));
15
+ const addonResponse = await api.get(`/apps/${app}/addons/${addonName}`, {
16
+ headers: { 'Accept-Expansion': 'addon_service,plan' },
17
+ });
18
+ addonBody = addonResponse === null || addonResponse === void 0 ? void 0 : addonResponse.body;
19
+ }
20
+ if (addonBody.state === 'deprovisioned') {
21
+ throw new Error(`The add-on was unable to be created, with status ${addonBody.state}`);
22
+ }
23
+ core_1.ux.action.stop();
24
+ return addonBody;
25
+ };
26
+ exports.waitForAddonProvisioning = waitForAddonProvisioning;
27
+ const waitForAddonDeprovisioning = async function (api, addon, interval) {
28
+ var _a;
29
+ const app = ((_a = addon.app) === null || _a === void 0 ? void 0 : _a.name) || '';
30
+ const addonName = addon.name || '';
31
+ let addonResponse = Object.assign({}, addon);
32
+ core_1.ux.action.start(`Destroying ${color_1.default.addon(addonName)}`);
33
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
34
+ // @ts-ignore
35
+ while (addonResponse.state === 'deprovisioning') {
36
+ // eslint-disable-next-line no-promise-executor-return
37
+ await new Promise(resolve => setTimeout(resolve, interval * 1000));
38
+ await api.get(`/apps/${app}/addons/${addonName}`, {
39
+ headers: { 'Accept-Expansion': 'addon_service,plan' },
40
+ }).then(response => {
41
+ addonResponse = response === null || response === void 0 ? void 0 : response.body;
42
+ }).catch(function (error) {
43
+ var _a;
44
+ // Not ideal, but API deletes the record returning a 404 when deprovisioned.
45
+ if (error.statusCode === 404 || ((_a = error.http) === null || _a === void 0 ? void 0 : _a.statusCode) === 404) {
46
+ addonResponse.state = 'deprovisioned';
47
+ }
48
+ else {
49
+ throw error;
50
+ }
51
+ });
52
+ }
53
+ core_1.ux.action.stop();
54
+ return addonResponse;
55
+ };
56
+ exports.waitForAddonDeprovisioning = waitForAddonDeprovisioning;
@@ -0,0 +1,7 @@
1
+ import * as Heroku from '@heroku-cli/schema';
2
+ import { APIClient } from '@heroku-cli/command';
3
+ export default function (heroku: APIClient, app: string, plan: string, confirm: string | undefined, wait: boolean, options: {
4
+ name?: string;
5
+ config: Record<string, string | boolean>;
6
+ as?: string;
7
+ }): Promise<Heroku.AddOn>;
@@ -0,0 +1,59 @@
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 util = require("./util");
6
+ const addons_wait_1 = require("./addons_wait");
7
+ function formatConfigVarsMessage(addon) {
8
+ const configVars = addon.config_vars || [];
9
+ if (configVars.length > 0) {
10
+ return `Created ${color_1.default.addon(addon.name || '')} as ${configVars.map((c) => color_1.default.configVar(c)).join(', ')}`;
11
+ }
12
+ return `Created ${color_1.default.addon(addon.name || '')}`;
13
+ }
14
+ // eslint-disable-next-line max-params
15
+ async function default_1(heroku, app, plan, confirm, wait, options) {
16
+ async function createAddonRequest(confirmed) {
17
+ var _a;
18
+ const body = {
19
+ confirm: confirmed,
20
+ name: options.name,
21
+ config: options.config,
22
+ plan: { name: plan },
23
+ attachment: { name: options.as },
24
+ };
25
+ core_1.ux.action.start(`Creating ${plan} on ${color_1.default.app(app)}`);
26
+ const { body: addon } = await heroku.post(`/apps/${app}/addons`, {
27
+ body,
28
+ headers: {
29
+ 'accept-expansion': 'plan',
30
+ 'x-heroku-legacy-provider-messages': 'true',
31
+ },
32
+ });
33
+ core_1.ux.action.stop(color_1.default.green(util.formatPriceText(((_a = addon.plan) === null || _a === void 0 ? void 0 : _a.price) || '')));
34
+ return addon;
35
+ }
36
+ let addon = await util.trapConfirmationRequired(app, confirm, confirm => (createAddonRequest(confirm)));
37
+ if (addon.provision_message) {
38
+ core_1.ux.log(addon.provision_message);
39
+ }
40
+ if (addon.state === 'provisioning') {
41
+ if (wait) {
42
+ core_1.ux.log(`Waiting for ${color_1.default.addon(addon.name || '')}...`);
43
+ addon = await (0, addons_wait_1.waitForAddonProvisioning)(heroku, addon, 5);
44
+ core_1.ux.log(formatConfigVarsMessage(addon));
45
+ }
46
+ else {
47
+ core_1.ux.log(`${color_1.default.addon(addon.name || '')} is being created in the background. The app will restart when complete...`);
48
+ core_1.ux.log(`Use ${color_1.default.cmd('heroku addons:info ' + addon.name)} to check creation progress`);
49
+ }
50
+ }
51
+ else if (addon.state === 'deprovisioned') {
52
+ throw new Error(`The add-on was unable to be created, with status ${addon.state}`);
53
+ }
54
+ else {
55
+ core_1.ux.log(formatConfigVarsMessage(addon));
56
+ }
57
+ return addon;
58
+ }
59
+ exports.default = default_1;
@@ -0,0 +1,3 @@
1
+ import { APIClient } from '@heroku-cli/command';
2
+ import * as Heroku from '@heroku-cli/schema';
3
+ export default function (heroku: APIClient, addon: Heroku.AddOn, force?: boolean, wait?: boolean): Promise<Heroku.AddOn>;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const addons_wait_1 = require("./addons_wait");
4
+ const color_1 = require("@heroku-cli/color");
5
+ const core_1 = require("@oclif/core");
6
+ async function default_1(heroku, addon, force = false, wait = false) {
7
+ const addonName = addon.name || '';
8
+ async function destroyAddonRequest() {
9
+ var _a, _b;
10
+ core_1.ux.action.start(`Destroying ${color_1.default.addon(addonName)} on ${color_1.default.app(((_a = addon.app) === null || _a === void 0 ? void 0 : _a.name) || '')}`);
11
+ const { body: addonDelete } = await heroku.delete(`/apps/${(_b = addon.app) === null || _b === void 0 ? void 0 : _b.id}/addons/${addon.id}`, {
12
+ headers: { 'Accept-Expansion': 'plan' },
13
+ body: { force },
14
+ }).catch(error => {
15
+ if (error.body && error.body.message) {
16
+ throw new Error(`The add-on was unable to be destroyed: ${error.body.message}.`);
17
+ }
18
+ else {
19
+ throw new Error(`The add-on was unable to be destroyed: ${error}.`);
20
+ }
21
+ });
22
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
23
+ // @ts-ignore
24
+ if (addonDelete.state === 'deprovisioning') {
25
+ core_1.ux.action.stop(color_1.default.yellow('pending'));
26
+ }
27
+ core_1.ux.action.stop();
28
+ return addonDelete;
29
+ }
30
+ let addonResponse = await destroyAddonRequest();
31
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
32
+ // @ts-ignore
33
+ if (addonResponse.state === 'deprovisioning') {
34
+ if (wait) {
35
+ core_1.ux.log(`Waiting for ${color_1.default.addon(addonName)}...`);
36
+ addonResponse = await (0, addons_wait_1.waitForAddonDeprovisioning)(heroku, addonResponse, 5);
37
+ }
38
+ else {
39
+ core_1.ux.log(`${color_1.default.addon(addonName)} is being destroyed in the background. The app will restart when complete...`);
40
+ core_1.ux.log(`Use ${color_1.default.cmd('heroku addons:info ' + addonName)} to check destruction progress`);
41
+ }
42
+ }
43
+ else if (addonResponse.state !== 'deprovisioned') {
44
+ throw new Error(`The add-on was unable to be destroyed, with status ${addonResponse.state}.`);
45
+ }
46
+ return addonResponse;
47
+ }
48
+ exports.default = default_1;
@@ -0,0 +1,38 @@
1
+ import { APIClient } from '@heroku-cli/command';
2
+ import type { AddOnAttachment } from '@heroku-cli/schema';
3
+ import type { AddOnAttachmentWithConfigVarsAndPlan } from '../pg/types';
4
+ export declare const appAddon: (heroku: APIClient, app: string, id: string, options?: AddOnAttachment) => Promise<AddOnAttachmentWithConfigVarsAndPlan>;
5
+ export declare const addonResolver: (heroku: APIClient, app: string | undefined, id: string, options?: AddOnAttachment) => Promise<AddOnAttachmentWithConfigVarsAndPlan>;
6
+ export declare const appAttachment: (heroku: APIClient, app: string | undefined, id: string, options?: {
7
+ addon_service?: string;
8
+ namespace?: string;
9
+ }) => Promise<AddOnAttachment & {
10
+ addon: AddOnAttachmentWithConfigVarsAndPlan;
11
+ }>;
12
+ export declare const attachmentResolver: (heroku: APIClient, app: string | undefined, id: string, options?: {
13
+ addon_service?: string;
14
+ namespace?: string;
15
+ }) => Promise<void | AddOnAttachment>;
16
+ export declare function resolveAddon(...args: Parameters<typeof addonResolver>): ReturnType<typeof addonResolver>;
17
+ export declare namespace resolveAddon {
18
+ var cache: Map<string, Promise<AddOnAttachmentWithConfigVarsAndPlan>>;
19
+ }
20
+ export declare class NotFound extends Error {
21
+ readonly statusCode = 404;
22
+ readonly message = "Couldn't find that addon.";
23
+ }
24
+ export declare class AmbiguousError extends Error {
25
+ readonly matches: {
26
+ name?: string;
27
+ }[];
28
+ readonly type: string;
29
+ readonly statusCode = 422;
30
+ readonly message: string;
31
+ readonly body: {
32
+ id: string;
33
+ message: string;
34
+ };
35
+ constructor(matches: {
36
+ name?: string;
37
+ }[], type: string);
38
+ }