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,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AmbiguousError = exports.NotFound = exports.resolveAddon = exports.attachmentResolver = exports.appAttachment = exports.addonResolver = exports.appAddon = void 0;
4
+ const http_call_1 = require("http-call");
5
+ const api_client_1 = require("@heroku-cli/command/lib/api-client");
6
+ const addonHeaders = {
7
+ Accept: 'application/vnd.heroku+json; version=3.actions',
8
+ 'Accept-Expansion': 'addon_service,plan',
9
+ };
10
+ const appAddon = async function (heroku, app, id, options = {}) {
11
+ const response = await heroku.post('/actions/addons/resolve', {
12
+ headers: addonHeaders,
13
+ body: { app: app, addon: id, addon_service: options.addon_service },
14
+ });
15
+ return singularize('addon', options.namespace)(response === null || response === void 0 ? void 0 : response.body);
16
+ };
17
+ exports.appAddon = appAddon;
18
+ const handleNotFound = function (err, resource) {
19
+ if (err.statusCode === 404 && err.body && err.body.resource === resource) {
20
+ return true;
21
+ }
22
+ throw err;
23
+ };
24
+ const addonResolver = async (heroku, app, id, options) => {
25
+ const getAddon = async (addonId) => {
26
+ const response = await heroku.post('/actions/addons/resolve', {
27
+ headers: addonHeaders,
28
+ body: { app: null, addon: addonId, addon_service: options === null || options === void 0 ? void 0 : options.addon_service },
29
+ });
30
+ return singularize('addon', (options === null || options === void 0 ? void 0 : options.namespace) || '')(response === null || response === void 0 ? void 0 : response.body);
31
+ };
32
+ if (!app || id.includes('::')) {
33
+ return getAddon(id);
34
+ }
35
+ try {
36
+ return await (0, exports.appAddon)(heroku, app, id, options);
37
+ }
38
+ catch (error) {
39
+ if (error instanceof http_call_1.HTTPError && handleNotFound(error, 'add_on')) {
40
+ return getAddon(id);
41
+ }
42
+ throw error;
43
+ }
44
+ };
45
+ exports.addonResolver = addonResolver;
46
+ // -----------------------------------------------------
47
+ // Attachment resolver functions
48
+ // originating from `packages/addons-v5/lib/resolve.js`
49
+ // -----------------------------------------------------
50
+ const filter = function (app, addonService) {
51
+ return (attachments) => {
52
+ return attachments.filter(attachment => {
53
+ var _a, _b;
54
+ if (((_a = attachment === null || attachment === void 0 ? void 0 : attachment.app) === null || _a === void 0 ? void 0 : _a.name) !== app) {
55
+ return false;
56
+ }
57
+ return !(addonService && ((_b = attachment === null || attachment === void 0 ? void 0 : attachment.addon_service) === null || _b === void 0 ? void 0 : _b.name) !== addonService);
58
+ });
59
+ };
60
+ };
61
+ const attachmentHeaders = {
62
+ Accept: 'application/vnd.heroku+json; version=3.actions',
63
+ 'Accept-Inclusion': 'addon:plan,config_vars',
64
+ };
65
+ const appAttachment = async (heroku, app, id, options = {}) => {
66
+ const result = await heroku.post('/actions/addon-attachments/resolve', {
67
+ headers: attachmentHeaders, body: { app, addon_attachment: id, addon_service: options.addon_service },
68
+ });
69
+ return singularize('addon_attachment', options.namespace)(result.body);
70
+ };
71
+ exports.appAttachment = appAttachment;
72
+ const attachmentResolver = async (heroku, app, id, options = {}) => {
73
+ async function getAttachment(id) {
74
+ try {
75
+ const result = await heroku.post('/actions/addon-attachments/resolve', {
76
+ headers: attachmentHeaders, body: { app: null, addon_attachment: id, addon_service: options.addon_service },
77
+ });
78
+ return singularize('addon_attachment', options.namespace || '')(result.body);
79
+ }
80
+ catch (error) {
81
+ if (error instanceof api_client_1.HerokuAPIError) {
82
+ handleNotFound(error.http, 'add_on attachment');
83
+ }
84
+ }
85
+ }
86
+ async function getAppAddonAttachment(addon, app) {
87
+ var _a;
88
+ try {
89
+ const result = await heroku.get(`/addons/${encodeURIComponent((_a = addon.id) !== null && _a !== void 0 ? _a : '')}/addon-attachments`, { headers: attachmentHeaders });
90
+ const matches = filter(app, options.addon_service)(result.body);
91
+ return singularize('addon_attachment', options.namespace)(matches);
92
+ }
93
+ catch (error) {
94
+ const err = error instanceof api_client_1.HerokuAPIError ? error.http : error;
95
+ handleNotFound(err, 'add_on attachment');
96
+ }
97
+ }
98
+ // first check to see if there is an attachment matching this app/id combo
99
+ try {
100
+ const attachment = await (!app || id.includes('::') ? getAttachment(id) : (0, exports.appAttachment)(heroku, app, id, options));
101
+ if (attachment) {
102
+ return attachment;
103
+ }
104
+ }
105
+ catch (_a) { }
106
+ // if no attachment, look up an add-on that matches the id
107
+ // If we were passed an add-on slug, there still could be an attachment
108
+ // to the context app. Try to find and use it so `context_app` is set
109
+ // correctly in the SSO payload.
110
+ if (app) {
111
+ try {
112
+ const addon = await resolveAddon(heroku, app, id, options);
113
+ return await getAppAddonAttachment(addon, app);
114
+ }
115
+ catch (error) {
116
+ const err = error instanceof api_client_1.HerokuAPIError ? error.http : error;
117
+ handleNotFound(err, 'add_on attachment');
118
+ }
119
+ }
120
+ };
121
+ exports.attachmentResolver = attachmentResolver;
122
+ // -----------------------------------------------------
123
+ // END
124
+ // -----------------------------------------------------
125
+ const addonResolverMap = new Map();
126
+ async function resolveAddon(...args) {
127
+ var _a;
128
+ const [, app, id, options] = args;
129
+ const key = `${app}|${id}|${(_a = options === null || options === void 0 ? void 0 : options.addon_service) !== null && _a !== void 0 ? _a : ''}`;
130
+ const promise = addonResolverMap.get(key) || (0, exports.addonResolver)(...args);
131
+ try {
132
+ await promise;
133
+ addonResolverMap.has(key) || addonResolverMap.set(key, promise);
134
+ }
135
+ catch (_b) {
136
+ addonResolverMap.delete(key);
137
+ }
138
+ return promise;
139
+ }
140
+ exports.resolveAddon = resolveAddon;
141
+ resolveAddon.cache = addonResolverMap;
142
+ class NotFound extends Error {
143
+ constructor() {
144
+ super(...arguments);
145
+ this.statusCode = 404;
146
+ this.message = 'Couldn\'t find that addon.';
147
+ }
148
+ }
149
+ exports.NotFound = NotFound;
150
+ class AmbiguousError extends Error {
151
+ constructor(matches, type) {
152
+ super();
153
+ this.matches = matches;
154
+ this.type = type;
155
+ this.statusCode = 422;
156
+ this.body = { id: 'multiple_matches', message: this.message };
157
+ this.message = `Ambiguous identifier; multiple matching add-ons found: ${matches.map(match => match.name).join(', ')}.`;
158
+ }
159
+ }
160
+ exports.AmbiguousError = AmbiguousError;
161
+ function singularize(type, namespace) {
162
+ return (matches) => {
163
+ if (namespace) {
164
+ matches = matches.filter(m => m.namespace === namespace);
165
+ }
166
+ else if (matches.length > 1) {
167
+ // In cases that aren't specific enough, filter by namespace
168
+ matches = matches.filter(m => !Reflect.has(m, 'namespace') || m.namespace === null);
169
+ }
170
+ switch (matches.length) {
171
+ case 0:
172
+ throw new NotFound();
173
+ case 1:
174
+ return matches[0];
175
+ default:
176
+ throw new AmbiguousError(matches, type !== null && type !== void 0 ? type : '');
177
+ }
178
+ };
179
+ }
@@ -0,0 +1,9 @@
1
+ import * as Heroku from '@heroku-cli/schema';
2
+ export declare const trapConfirmationRequired: <T>(app: string, confirm: string | undefined, fn: (confirmed?: string) => Promise<T>) => Promise<T>;
3
+ export declare const formatPrice: ({ price, hourly }: {
4
+ price: Heroku.AddOn['price'] | number;
5
+ hourly?: boolean | undefined;
6
+ }) => any;
7
+ export declare const formatPriceText: (price: Heroku.AddOn['price']) => string;
8
+ export declare const grandfatheredPrice: (addon: Heroku.AddOn) => any;
9
+ export declare const formatState: (state: string) => string;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatState = exports.grandfatheredPrice = exports.formatPriceText = exports.formatPrice = exports.trapConfirmationRequired = void 0;
4
+ const confirmCommand_1 = require("../confirmCommand");
5
+ const color_1 = require("@heroku-cli/color");
6
+ const printf = require('printf');
7
+ const trapConfirmationRequired = async function (app, confirm, fn) {
8
+ return await fn(confirm)
9
+ .catch((error) => {
10
+ if (!error.body || error.body.id !== 'confirmation_required')
11
+ throw error;
12
+ return (0, confirmCommand_1.default)(app, confirm, error.body.message)
13
+ .then(() => fn(app));
14
+ });
15
+ };
16
+ exports.trapConfirmationRequired = trapConfirmationRequired;
17
+ // This function assumes that price.cents will reflect price per month.
18
+ // If the API returns any unit other than month
19
+ // this function will need to be updated.
20
+ const formatPrice = function ({ price, hourly }) {
21
+ if (!price)
22
+ return;
23
+ if (price.contract)
24
+ return 'contract';
25
+ if (price.cents === 0)
26
+ return 'free';
27
+ // we are using a standardized 720 hours/month
28
+ if (hourly)
29
+ return `~$${((price.cents / 100) / 720).toFixed(3)}/hour`;
30
+ const fmt = price.cents % 100 === 0 ? '$%.0f/%s' : '$%.02f/%s';
31
+ return printf(fmt, price.cents / 100, price.unit);
32
+ };
33
+ exports.formatPrice = formatPrice;
34
+ const formatPriceText = function (price) {
35
+ const priceHourly = (0, exports.formatPrice)({ price, hourly: true });
36
+ const priceMonthly = (0, exports.formatPrice)({ price, hourly: false });
37
+ if (!priceHourly)
38
+ return '';
39
+ if (priceHourly === 'free' || priceHourly === 'contract')
40
+ return `${color_1.default.green(priceHourly)}`;
41
+ return `${color_1.default.green(priceHourly)} (max ${priceMonthly})`;
42
+ };
43
+ exports.formatPriceText = formatPriceText;
44
+ const grandfatheredPrice = function (addon) {
45
+ var _a, _b, _c;
46
+ const price = (_a = addon.plan) === null || _a === void 0 ? void 0 : _a.price;
47
+ return Object.assign({}, price, {
48
+ cents: (_b = addon.billed_price) === null || _b === void 0 ? void 0 : _b.cents,
49
+ contract: (_c = addon.billed_price) === null || _c === void 0 ? void 0 : _c.contract,
50
+ });
51
+ };
52
+ exports.grandfatheredPrice = grandfatheredPrice;
53
+ const formatState = function (state) {
54
+ switch (state) {
55
+ case 'provisioned':
56
+ state = 'created';
57
+ break;
58
+ case 'provisioning':
59
+ state = 'creating';
60
+ break;
61
+ case 'deprovisioning':
62
+ state = 'destroying';
63
+ break;
64
+ case 'deprovisioned':
65
+ state = 'errored';
66
+ break;
67
+ default:
68
+ state = '';
69
+ }
70
+ return state;
71
+ };
72
+ exports.formatState = formatState;
@@ -0,0 +1,10 @@
1
+ import { APIClient } from '@heroku-cli/command';
2
+ declare type Options = {
3
+ heroku: APIClient;
4
+ appName: string;
5
+ recipient: string;
6
+ personalToPersonal: boolean;
7
+ bulk: boolean;
8
+ };
9
+ export declare const appTransfer: (options: Options) => Promise<void>;
10
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appTransfer = void 0;
4
+ const color_1 = require("@heroku-cli/color");
5
+ const core_1 = require("@oclif/core");
6
+ const getRequestOpts = (options) => {
7
+ const { appName, bulk, recipient, personalToPersonal } = options;
8
+ const isPersonalToPersonal = personalToPersonal || personalToPersonal === undefined;
9
+ const requestOpts = isPersonalToPersonal ?
10
+ {
11
+ body: { app: appName, recipient },
12
+ transferMsg: `Initiating transfer of ${color_1.color.app(appName)}`,
13
+ path: '/account/app-transfers',
14
+ method: 'POST',
15
+ } : {
16
+ body: { owner: recipient },
17
+ transferMsg: `Transferring ${color_1.color.app(appName)}`,
18
+ path: `/teams/apps/${appName}`,
19
+ method: 'PATCH',
20
+ };
21
+ if (!bulk)
22
+ requestOpts.transferMsg += ` to ${color_1.color.magenta(recipient)}`;
23
+ return requestOpts;
24
+ };
25
+ const appTransfer = async (options) => {
26
+ const { body, transferMsg, path, method } = getRequestOpts(options);
27
+ core_1.ux.action.start(transferMsg);
28
+ const { body: request } = await options.heroku.request(path, {
29
+ method,
30
+ body,
31
+ });
32
+ const message = request.state === 'pending' ? 'email sent' : undefined;
33
+ core_1.ux.action.stop(message);
34
+ };
35
+ exports.appTransfer = appTransfer;
@@ -9,6 +9,10 @@ export declare const DynoSizeCompletion: Completion;
9
9
  export declare const FileCompletion: Completion;
10
10
  export declare const PipelineCompletion: Completion;
11
11
  export declare const ProcessTypeCompletion: Completion;
12
+ export declare const ProtocolCompletion: {
13
+ cacheDuration: number;
14
+ options: () => Promise<string[]>;
15
+ };
12
16
  export declare const RegionCompletion: Completion;
13
17
  export declare const RemoteCompletion: Completion;
14
18
  export declare const RoleCompletion: Completion;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CompletionLookup = exports.CompletionMapping = exports.TeamCompletion = exports.StageCompletion = exports.StackCompletion = exports.SpaceCompletion = exports.ScopeCompletion = exports.RoleCompletion = exports.RemoteCompletion = exports.RegionCompletion = exports.ProcessTypeCompletion = exports.PipelineCompletion = exports.FileCompletion = exports.DynoSizeCompletion = exports.BuildpackCompletion = exports.AppDynoCompletion = exports.AppAddonCompletion = exports.AppCompletion = exports.herokuGet = exports.oneDay = void 0;
3
+ exports.CompletionLookup = exports.CompletionMapping = exports.TeamCompletion = exports.StageCompletion = exports.StackCompletion = exports.SpaceCompletion = exports.ScopeCompletion = exports.RoleCompletion = exports.RemoteCompletion = exports.RegionCompletion = exports.ProtocolCompletion = exports.ProcessTypeCompletion = exports.PipelineCompletion = exports.FileCompletion = exports.DynoSizeCompletion = exports.BuildpackCompletion = exports.AppDynoCompletion = exports.AppAddonCompletion = exports.AppCompletion = exports.herokuGet = exports.oneDay = void 0;
4
4
  const command_1 = require("@heroku-cli/command");
5
5
  const deps_1 = require("@heroku-cli/command/lib/deps");
6
6
  const git_1 = require("@heroku-cli/command/lib/git");
@@ -138,6 +138,11 @@ exports.ProcessTypeCompletion = {
138
138
  return types;
139
139
  },
140
140
  };
141
+ exports.ProtocolCompletion = {
142
+ cacheDuration: 60 * 60 * 24 * 365, options: async () => {
143
+ return ['tcp', 'udp', 'icmp', '0-255', 'any'];
144
+ },
145
+ };
141
146
  exports.RegionCompletion = {
142
147
  cacheDuration: exports.oneDay * 7,
143
148
  options: async (ctx) => {
@@ -0,0 +1,2 @@
1
+ import { SniEndpoint } from '../types/sni_endpoint';
2
+ export declare const displayCertificateDetails: (sniEndpoint: SniEndpoint, message?: string) => void;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.displayCertificateDetails = void 0;
4
+ const format_date_1 = require("./format_date");
5
+ const core_1 = require("@oclif/core");
6
+ const color_1 = require("@heroku-cli/color");
7
+ const displayCertificateDetails = function (sniEndpoint, message = 'Certificate details:') {
8
+ const now = new Date();
9
+ const autoRenewsAt = new Date(sniEndpoint.ssl_cert.expires_at);
10
+ autoRenewsAt.setMonth(autoRenewsAt.getMonth() - 1);
11
+ if (sniEndpoint.app && sniEndpoint.ssl_cert.acm && autoRenewsAt > now) {
12
+ core_1.ux.log(`Renewal scheduled for ${color_1.color.green((0, format_date_1.default)(autoRenewsAt.toString()))}.\n`);
13
+ }
14
+ core_1.ux.log(message);
15
+ const tableObject = {
16
+ 'Common Name(s)': sniEndpoint.ssl_cert.cert_domains,
17
+ 'Expires At': (0, format_date_1.default)(sniEndpoint.ssl_cert.expires_at),
18
+ Issuer: sniEndpoint.ssl_cert.issuer,
19
+ 'Starts At': (0, format_date_1.default)(sniEndpoint.ssl_cert.starts_at),
20
+ Subject: sniEndpoint.ssl_cert.subject,
21
+ };
22
+ // Only displays domains when the list of ids was replaced by the list of hostnames
23
+ if (sniEndpoint.domains.length > 0 && !sniEndpoint.domains.some(domain => domain.match('^[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}'))) {
24
+ tableObject['Domain(s)'] = sniEndpoint.domains;
25
+ }
26
+ core_1.ux.styledObject(tableObject);
27
+ if (sniEndpoint.ssl_cert['ca_signed?']) {
28
+ core_1.ux.log('SSL certificate is verified by a root authority.');
29
+ }
30
+ else if (sniEndpoint.ssl_cert.issuer === sniEndpoint.ssl_cert.subject) {
31
+ core_1.ux.log('SSL certificate is self signed.');
32
+ }
33
+ else {
34
+ core_1.ux.log('SSL certificate is not trusted.');
35
+ }
36
+ };
37
+ exports.displayCertificateDetails = displayCertificateDetails;
@@ -0,0 +1,2 @@
1
+ import { SniEndpoint } from '../types/sni_endpoint';
2
+ export default function (endpoints: SniEndpoint[]): void;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const format_date_1 = require("./format_date");
5
+ function type(endpoint) {
6
+ if (endpoint.ssl_cert && endpoint.ssl_cert.acm) {
7
+ return 'ACM';
8
+ }
9
+ return 'SNI';
10
+ }
11
+ function default_1(endpoints) {
12
+ const mapped = endpoints
13
+ .filter(endpoint => endpoint.ssl_cert)
14
+ .map(endpoint => {
15
+ const tableContents = {
16
+ name: endpoint.name,
17
+ expires_at: endpoint.ssl_cert.expires_at,
18
+ ca_signed: endpoint.ssl_cert['ca_signed?'],
19
+ type: type(endpoint),
20
+ common_names: endpoint.ssl_cert.cert_domains.join(', '),
21
+ display_name: endpoint.display_name,
22
+ };
23
+ // If they're using ACM it's not really worth showing the number of associated domains since
24
+ // it'll always be 1 and is entirely outside the user's control
25
+ if (!endpoint.ssl_cert.acm) {
26
+ tableContents.associated_domains = endpoint.domains.length > 0 ? endpoint.domains.length : '0';
27
+ }
28
+ return tableContents;
29
+ });
30
+ const columns = {
31
+ name: { header: 'Name' },
32
+ };
33
+ if (endpoints.some(endpoint => endpoint.display_name)) {
34
+ columns.display_name = { header: 'Display Name' };
35
+ }
36
+ columns.common_names = { header: 'Common Name(s)' };
37
+ columns.expires_at = {
38
+ header: 'Expires',
39
+ get: ({ expires_at }) => expires_at === undefined ? '' : (0, format_date_1.default)(expires_at),
40
+ };
41
+ columns.ca_signed = {
42
+ header: 'Trusted',
43
+ get: ({ ca_signed }) => ca_signed ? 'True' : 'False',
44
+ };
45
+ columns.type = { header: 'Type' };
46
+ if (endpoints.some(endpoint => !endpoint.ssl_cert.acm)) {
47
+ columns.associated_domains = { header: 'Domains' };
48
+ }
49
+ core_1.ux.table(mapped, columns);
50
+ }
51
+ exports.default = default_1;
@@ -0,0 +1,3 @@
1
+ import { APIClient } from '@heroku-cli/command';
2
+ import { Domain } from '../types/domain';
3
+ export declare function waitForDomains(app: string, heroku: APIClient): Promise<Domain[]>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waitForDomains = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ function customDomainCreationComplete(app, heroku) {
7
+ return tslib_1.__asyncGenerator(this, arguments, function* customDomainCreationComplete_1() {
8
+ let retries = 30;
9
+ while (retries--) {
10
+ const { body: apiDomains } = yield tslib_1.__await(heroku.get(`/apps/${app}/domains`));
11
+ const someNull = apiDomains.some((domain) => domain.kind === 'custom' && !domain.cname);
12
+ if (!someNull) {
13
+ yield yield tslib_1.__await(apiDomains);
14
+ break;
15
+ }
16
+ yield tslib_1.__await(new Promise(resolve => {
17
+ setTimeout(resolve, 1000);
18
+ }));
19
+ yield yield tslib_1.__await(null);
20
+ }
21
+ });
22
+ }
23
+ async function waitForDomains(app, heroku) {
24
+ var e_1, _a;
25
+ core_1.ux.action.start('Waiting for stable domains to be created');
26
+ try {
27
+ for (var _b = tslib_1.__asyncValues(customDomainCreationComplete(app, heroku)), _c; _c = await _b.next(), !_c.done;) {
28
+ const apiDomains = _c.value;
29
+ if (apiDomains) {
30
+ core_1.ux.action.stop();
31
+ return apiDomains;
32
+ }
33
+ }
34
+ }
35
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
36
+ finally {
37
+ try {
38
+ if (_c && !_c.done && (_a = _b.return)) await _a.call(_b);
39
+ }
40
+ finally { if (e_1) throw e_1.error; }
41
+ }
42
+ core_1.ux.action.stop('!');
43
+ throw new Error('Timed out while waiting for stable domains to be created');
44
+ }
45
+ exports.waitForDomains = waitForDomains;
@@ -0,0 +1,7 @@
1
+ import { SniEndpoint } from '../types/sni_endpoint';
2
+ import { APIClient } from '@heroku-cli/command';
3
+ export default function (flags: {
4
+ endpoint: string | undefined;
5
+ name: string | undefined;
6
+ app: string;
7
+ }, heroku: APIClient): Promise<SniEndpoint>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ async function default_1(flags, heroku) {
4
+ if (flags.endpoint && flags.name) {
5
+ throw new Error('Specified both --name and --endpoint, please use just one');
6
+ }
7
+ let { body: sniEndpoints } = await heroku.get(`/apps/${flags.app}/sni-endpoints`);
8
+ if (sniEndpoints.length === 0) {
9
+ throw new Error(`${flags.app} has no SSL certificates`);
10
+ }
11
+ if (flags.endpoint) {
12
+ const promises = [];
13
+ sniEndpoints.forEach(endpoint => {
14
+ endpoint.domains.forEach(domain => promises.push(heroku.get(`/apps/${flags.app}/domains/${domain}`)));
15
+ });
16
+ const domains = (await Promise.all(promises)).map(({ body: domain }) => domain);
17
+ sniEndpoints = sniEndpoints.filter(endpoint => {
18
+ // This was modified from `endpoint.cname === flags.endpoint` because `cname` doesn't exist anymore in the SniEndpoint serialization.
19
+ // We're making the assumption that the `--endpoint` flag was being used to search by hostname (internationalized domain name).
20
+ return domains.some(domain => { var _a; return domain.hostname === flags.endpoint && ((_a = domain.sni_endpoint) === null || _a === void 0 ? void 0 : _a.name) === endpoint.name; });
21
+ });
22
+ if (sniEndpoints.length > 1) {
23
+ throw new Error('Must pass --name when more than one endpoint matches --endpoint');
24
+ }
25
+ }
26
+ if (flags.name) {
27
+ sniEndpoints = sniEndpoints.filter(endpoint => {
28
+ return endpoint.name === flags.name;
29
+ });
30
+ if (sniEndpoints.length > 1) {
31
+ throw new Error(`More than one endpoint matches ${flags.name}, please file a support ticket`);
32
+ }
33
+ }
34
+ if (sniEndpoints.length > 1) {
35
+ throw new Error('Must pass --name when more than one endpoint');
36
+ }
37
+ if (sniEndpoints.length === 0) {
38
+ throw new Error('Record not found.');
39
+ }
40
+ return sniEndpoints[0];
41
+ }
42
+ exports.default = default_1;
@@ -0,0 +1 @@
1
+ export default function (date: string): string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const date_fns_1 = require("date-fns");
4
+ function getUTCDate(dateString = Date.now()) {
5
+ const date = new Date(dateString);
6
+ return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
7
+ }
8
+ function default_1(date) {
9
+ return `${(0, date_fns_1.format)(getUTCDate(date), 'yyyy-MM-dd HH:mm')} UTC`;
10
+ }
11
+ exports.default = default_1;
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import type { PathLike } from 'node:fs';
3
+ export declare function getCertAndKey(args: {
4
+ CRT: PathLike;
5
+ KEY: PathLike;
6
+ }): Promise<{
7
+ crt: string;
8
+ key: string;
9
+ }>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCertAndKey = void 0;
4
+ const fs = require("node:fs/promises");
5
+ async function getCertAndKey(args) {
6
+ return {
7
+ crt: await fs.readFile(args.CRT, { encoding: 'utf-8' }),
8
+ key: await fs.readFile(args.KEY, { encoding: 'utf-8' }),
9
+ };
10
+ }
11
+ exports.getCertAndKey = getCertAndKey;
@@ -186,7 +186,7 @@ export interface HerokuPlatformApiOrganization {
186
186
  [k: string]: any;
187
187
  }
188
188
  /**
189
- * Pipeline repositories link a pipeline to a Github repository.
189
+ * Pipeline repositories link a pipeline to a GitHub repository.
190
190
  */
191
191
  export interface KolkrabbiApiPipelineRepositories {
192
192
  /**
@@ -4,11 +4,11 @@ exports.createSourceBlob = void 0;
4
4
  const fs = require("async-file");
5
5
  const core_1 = require("@oclif/core");
6
6
  const git = require("./git");
7
- const got = require('got');
7
+ const got_1 = require("got");
8
8
  async function uploadArchive(url, filePath) {
9
- const request = got.stream.put(url, {
9
+ const request = got_1.default.stream.put(url, {
10
10
  headers: {
11
- 'content-length': (await fs.stat(filePath)).size,
11
+ 'content-length': (await fs.stat(filePath)).size.toString(),
12
12
  },
13
13
  });
14
14
  fs.createReadStream(filePath).pipe(request);
@@ -4,9 +4,9 @@ exports.displayTestRunInfo = exports.displayAndExit = exports.waitForStates = ex
4
4
  const color_1 = require("@heroku-cli/color");
5
5
  const core_1 = require("@oclif/core");
6
6
  const https_1 = require("https");
7
+ const node_crypto_1 = require("node:crypto");
7
8
  const phoenix_1 = require("phoenix");
8
9
  const util_1 = require("util");
9
- const uuid_1 = require("uuid");
10
10
  const WebSocket = require("ws");
11
11
  const debug = require('debug')('ci');
12
12
  const ansiEscapes = require('ansi-escapes');
@@ -132,7 +132,7 @@ async function renderList(command, testRuns, pipeline, watchOption, jsonOption)
132
132
  transport: WebSocket,
133
133
  params: {
134
134
  token: command.heroku.auth,
135
- tab_id: `heroku-cli-${(0, uuid_1.v4)()}`,
135
+ tab_id: `heroku-cli-${(0, node_crypto_1.randomUUID)()}`,
136
136
  },
137
137
  logger: (kind, msg, data) => debug(`${kind}: ${msg}\n${(0, util_1.inspect)(data)}`),
138
138
  });
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parse = exports.quote = void 0;
4
4
  const shell = require('shell-quote');
5
- // slightly modifed form of shell-quote to default to using single-quotes over backslashes
5
+ // slightly modified form of shell-quote to default to using single-quotes over backslashes
6
6
  function quote(s) {
7
7
  // eslint-disable-next-line no-useless-escape
8
8
  if (/["\s#!$&'()*,:;<=>?@\[\\\]^`{|}]/.test(s)) {
@@ -0,0 +1 @@
1
+ export default function confirmCommand(app: string, confirm?: string, message?: string): Promise<void>;
@@ -2,7 +2,7 @@
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
- async function confirmApp(app, confirm, message) {
5
+ async function confirmCommand(app, confirm, message) {
6
6
  if (confirm) {
7
7
  if (confirm === app)
8
8
  return;
@@ -20,4 +20,4 @@ This command will affect the app ${color_1.default.bold.red(app)}`;
20
20
  }
21
21
  throw new Error(`Confirmation did not match ${color_1.default.bold.red(app)}. Aborted.`);
22
22
  }
23
- exports.default = confirmApp;
23
+ exports.default = confirmCommand;