heroku 9.0.0-alpha.0 → 9.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/README.md +9 -11
  2. package/lib/commands/access/add.d.ts +14 -0
  3. package/lib/commands/access/add.js +55 -0
  4. package/lib/commands/access/index.d.ts +11 -0
  5. package/lib/commands/access/index.js +86 -0
  6. package/lib/commands/access/remove.d.ts +12 -0
  7. package/lib/commands/access/remove.js +25 -0
  8. package/lib/commands/access/update.d.ts +14 -0
  9. package/lib/commands/access/update.js +39 -0
  10. package/lib/commands/addons/attach.d.ts +16 -0
  11. package/lib/commands/addons/attach.js +51 -0
  12. package/lib/commands/addons/create.d.ts +19 -0
  13. package/lib/commands/addons/create.js +84 -0
  14. package/lib/commands/addons/destroy.d.ts +19 -0
  15. package/lib/commands/addons/destroy.js +61 -0
  16. package/lib/commands/addons/detach.d.ts +13 -0
  17. package/lib/commands/addons/detach.js +31 -0
  18. package/lib/commands/addons/docs.d.ts +14 -0
  19. package/lib/commands/addons/docs.js +36 -0
  20. package/lib/commands/addons/index.d.ts +16 -0
  21. package/lib/commands/addons/index.js +246 -0
  22. package/lib/commands/addons/info.d.ts +14 -0
  23. package/lib/commands/addons/info.js +44 -0
  24. package/lib/commands/addons/open.d.ts +75 -0
  25. package/lib/commands/addons/open.js +87 -0
  26. package/lib/commands/addons/plans.d.ts +12 -0
  27. package/lib/commands/addons/plans.js +47 -0
  28. package/lib/commands/addons/rename.d.ts +10 -0
  29. package/lib/commands/addons/rename.js +20 -0
  30. package/lib/commands/addons/services.d.ts +9 -0
  31. package/lib/commands/addons/services.js +34 -0
  32. package/lib/commands/addons/upgrade.d.ts +28 -0
  33. package/lib/commands/addons/upgrade.js +145 -0
  34. package/lib/commands/addons/wait.d.ts +14 -0
  35. package/lib/commands/addons/wait.js +70 -0
  36. package/lib/commands/apps/create.d.ts +28 -0
  37. package/lib/commands/apps/create.js +201 -0
  38. package/lib/commands/apps/destroy.d.ts +15 -0
  39. package/lib/commands/apps/destroy.js +47 -0
  40. package/lib/commands/apps/errors.d.ts +13 -0
  41. package/lib/commands/apps/errors.js +120 -0
  42. package/lib/commands/apps/favorites/add.d.ts +10 -0
  43. package/lib/commands/apps/favorites/add.js +38 -0
  44. package/lib/commands/apps/favorites/index.d.ts +9 -0
  45. package/lib/commands/apps/favorites/index.js +25 -0
  46. package/lib/commands/apps/favorites/remove.d.ts +10 -0
  47. package/lib/commands/apps/favorites/remove.js +28 -0
  48. package/lib/commands/apps/index.d.ts +16 -0
  49. package/lib/commands/apps/index.js +119 -0
  50. package/lib/commands/apps/info.d.ts +19 -0
  51. package/lib/commands/apps/info.js +162 -0
  52. package/lib/commands/apps/join.d.ts +11 -0
  53. package/lib/commands/apps/join.js +25 -0
  54. package/lib/commands/apps/leave.d.ts +12 -0
  55. package/lib/commands/apps/leave.js +25 -0
  56. package/lib/commands/apps/lock.d.ts +11 -0
  57. package/lib/commands/apps/lock.js +30 -0
  58. package/lib/commands/apps/open.d.ts +15 -0
  59. package/lib/commands/apps/open.js +30 -0
  60. package/lib/commands/apps/rename.d.ts +16 -0
  61. package/lib/commands/apps/rename.js +51 -0
  62. package/lib/commands/apps/stacks/index.d.ts +11 -0
  63. package/lib/commands/apps/stacks/index.js +44 -0
  64. package/lib/commands/apps/stacks/set.d.ts +14 -0
  65. package/lib/commands/apps/stacks/set.js +41 -0
  66. package/lib/commands/apps/transfer.d.ts +17 -0
  67. package/lib/commands/apps/transfer.js +91 -0
  68. package/lib/commands/apps/unlock.d.ts +11 -0
  69. package/lib/commands/apps/unlock.js +30 -0
  70. package/lib/commands/auth/logout.js +1 -0
  71. package/lib/commands/auth/token.js +2 -1
  72. package/lib/commands/authorizations/create.js +5 -1
  73. package/lib/commands/authorizations/info.js +5 -1
  74. package/lib/commands/authorizations/revoke.js +5 -1
  75. package/lib/commands/authorizations/rotate.js +5 -1
  76. package/lib/commands/authorizations/update.js +5 -1
  77. package/lib/commands/autocomplete/doctor.js +2 -2
  78. package/lib/commands/autocomplete/options.js +2 -2
  79. package/lib/commands/certs/add.d.ts +16 -0
  80. package/lib/commands/certs/add.js +98 -0
  81. package/lib/commands/certs/auto/disable.d.ts +11 -0
  82. package/lib/commands/certs/auto/disable.js +34 -0
  83. package/lib/commands/certs/auto/enable.d.ts +11 -0
  84. package/lib/commands/certs/auto/enable.js +51 -0
  85. package/lib/commands/certs/auto/index.d.ts +12 -0
  86. package/lib/commands/certs/auto/index.js +94 -0
  87. package/lib/commands/certs/auto/refresh.d.ts +10 -0
  88. package/lib/commands/certs/auto/refresh.js +19 -0
  89. package/lib/commands/certs/generate.d.ts +26 -0
  90. package/lib/commands/certs/generate.js +111 -0
  91. package/lib/commands/certs/index.d.ts +10 -0
  92. package/lib/commands/certs/index.js +26 -0
  93. package/lib/commands/certs/info.d.ts +13 -0
  94. package/lib/commands/certs/info.js +43 -0
  95. package/lib/commands/certs/remove.d.ts +13 -0
  96. package/lib/commands/certs/remove.js +32 -0
  97. package/lib/commands/certs/update.d.ts +18 -0
  98. package/lib/commands/certs/update.js +54 -0
  99. package/lib/commands/ci/config/get.d.ts +1 -0
  100. package/lib/commands/ci/config/get.js +1 -0
  101. package/lib/commands/ci/config/index.d.ts +12 -0
  102. package/lib/commands/ci/config/index.js +43 -0
  103. package/lib/commands/ci/config/set.d.ts +3 -2
  104. package/lib/commands/ci/config/set.js +3 -6
  105. package/lib/commands/ci/config/unset.d.ts +14 -0
  106. package/lib/commands/ci/config/unset.js +36 -0
  107. package/lib/commands/ci/index.d.ts +1 -0
  108. package/lib/commands/ci/index.js +1 -0
  109. package/lib/commands/ci/info.d.ts +1 -0
  110. package/lib/commands/ci/info.js +1 -0
  111. package/lib/commands/ci/last.d.ts +1 -0
  112. package/lib/commands/ci/last.js +1 -0
  113. package/lib/commands/ci/migrate-manifest.d.ts +7 -0
  114. package/lib/commands/ci/migrate-manifest.js +74 -0
  115. package/lib/commands/ci/open.d.ts +1 -0
  116. package/lib/commands/ci/open.js +1 -0
  117. package/lib/commands/ci/rerun.d.ts +1 -0
  118. package/lib/commands/ci/rerun.js +1 -0
  119. package/lib/commands/config/set.d.ts +12 -0
  120. package/lib/commands/config/set.js +60 -0
  121. package/lib/commands/container/index.d.ts +6 -0
  122. package/lib/commands/container/index.js +13 -0
  123. package/lib/commands/container/login.d.ts +9 -0
  124. package/lib/commands/container/login.js +57 -0
  125. package/lib/commands/container/logout.d.ts +9 -0
  126. package/lib/commands/container/logout.js +37 -0
  127. package/lib/commands/container/pull.d.ts +14 -0
  128. package/lib/commands/container/pull.js +40 -0
  129. package/lib/commands/container/push.d.ts +16 -0
  130. package/lib/commands/container/push.js +101 -0
  131. package/lib/commands/container/release.d.ts +14 -0
  132. package/lib/commands/container/release.js +89 -0
  133. package/lib/commands/container/rm.d.ts +13 -0
  134. package/lib/commands/container/rm.js +36 -0
  135. package/lib/commands/container/run.d.ts +15 -0
  136. package/lib/commands/container/run.js +63 -0
  137. package/lib/commands/dashboard.d.ts +7 -0
  138. package/lib/commands/dashboard.js +164 -0
  139. package/lib/commands/domains/index.d.ts +3 -3
  140. package/lib/commands/drains/add.d.ts +12 -0
  141. package/lib/commands/drains/add.js +23 -0
  142. package/lib/commands/drains/index.d.ts +11 -0
  143. package/lib/commands/drains/index.js +50 -0
  144. package/lib/commands/drains/remove.d.ts +13 -0
  145. package/lib/commands/drains/remove.js +22 -0
  146. package/lib/commands/features/disable.d.ts +12 -0
  147. package/lib/commands/features/disable.js +30 -0
  148. package/lib/commands/features/enable.d.ts +12 -0
  149. package/lib/commands/features/enable.js +29 -0
  150. package/lib/commands/features/index.d.ts +10 -0
  151. package/lib/commands/features/index.js +37 -0
  152. package/lib/commands/features/info.d.ts +13 -0
  153. package/lib/commands/features/info.js +33 -0
  154. package/lib/commands/keys/add.d.ts +14 -0
  155. package/lib/commands/keys/add.js +101 -0
  156. package/lib/commands/keys/clear.d.ts +5 -0
  157. package/lib/commands/keys/clear.js +17 -0
  158. package/lib/commands/keys/index.d.ts +9 -0
  159. package/lib/commands/keys/index.js +36 -0
  160. package/lib/commands/keys/remove.d.ts +9 -0
  161. package/lib/commands/keys/remove.js +29 -0
  162. package/lib/commands/labs/enable.d.ts +13 -0
  163. package/lib/commands/labs/enable.js +47 -0
  164. package/lib/commands/labs/index.d.ts +11 -0
  165. package/lib/commands/labs/index.js +71 -0
  166. package/lib/commands/labs/info.d.ts +14 -0
  167. package/lib/commands/labs/info.js +49 -0
  168. package/lib/commands/local/index.d.ts +1 -1
  169. package/lib/commands/local/index.js +8 -3
  170. package/lib/commands/local/run.d.ts +1 -1
  171. package/lib/commands/local/run.js +8 -3
  172. package/lib/commands/maintenance/index.d.ts +10 -0
  173. package/lib/commands/maintenance/index.js +19 -0
  174. package/lib/commands/maintenance/off.d.ts +10 -0
  175. package/lib/commands/maintenance/off.js +20 -0
  176. package/lib/commands/maintenance/on.d.ts +10 -0
  177. package/lib/commands/maintenance/on.js +20 -0
  178. package/lib/commands/members/add.d.ts +13 -0
  179. package/lib/commands/members/add.js +33 -0
  180. package/lib/commands/members/index.d.ts +12 -0
  181. package/lib/commands/members/index.js +76 -0
  182. package/lib/commands/members/remove.d.ts +10 -0
  183. package/lib/commands/members/remove.js +58 -0
  184. package/lib/commands/members/set.d.ts +11 -0
  185. package/lib/commands/members/set.js +21 -0
  186. package/lib/commands/notifications/index.d.ts +13 -0
  187. package/lib/commands/notifications/index.js +62 -0
  188. package/lib/commands/orgs/index.d.ts +11 -0
  189. package/lib/commands/orgs/index.js +27 -0
  190. package/lib/commands/orgs/open.d.ts +10 -0
  191. package/lib/commands/orgs/open.js +24 -0
  192. package/lib/commands/pg/backups/cancel.d.ts +15 -0
  193. package/lib/commands/pg/backups/cancel.js +49 -0
  194. package/lib/commands/pg/backups/capture.d.ts +15 -0
  195. package/lib/commands/pg/backups/capture.js +65 -0
  196. package/lib/commands/pg/backups/delete.d.ts +15 -0
  197. package/lib/commands/pg/backups/delete.js +38 -0
  198. package/lib/commands/pg/backups/download.d.ts +14 -0
  199. package/lib/commands/pg/backups/download.js +58 -0
  200. package/lib/commands/pg/backups/index.d.ts +20 -0
  201. package/lib/commands/pg/backups/index.js +129 -0
  202. package/lib/commands/pg/backups/info.d.ts +17 -0
  203. package/lib/commands/pg/backups/info.js +92 -0
  204. package/lib/commands/pg/backups/restore.d.ts +19 -0
  205. package/lib/commands/pg/backups/restore.js +107 -0
  206. package/lib/commands/pg/backups/schedule.d.ts +21 -0
  207. package/lib/commands/pg/backups/schedule.js +82 -0
  208. package/lib/commands/pg/backups/schedules.d.ts +10 -0
  209. package/lib/commands/pg/backups/schedules.js +31 -0
  210. package/lib/commands/pg/backups/unschedule.d.ts +13 -0
  211. package/lib/commands/pg/backups/unschedule.js +44 -0
  212. package/lib/commands/pg/backups/url.d.ts +13 -0
  213. package/lib/commands/pg/backups/url.js +41 -0
  214. package/lib/commands/pg/bloat.d.ts +13 -0
  215. package/lib/commands/pg/bloat.js +87 -0
  216. package/lib/commands/pg/blocking.d.ts +13 -0
  217. package/lib/commands/pg/blocking.js +42 -0
  218. package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
  219. package/lib/commands/pg/connection-pooling/attach.js +41 -0
  220. package/lib/commands/pg/copy.d.ts +18 -0
  221. package/lib/commands/pg/copy.js +86 -0
  222. package/lib/commands/pg/credentials/create.d.ts +14 -0
  223. package/lib/commands/pg/credentials/create.js +40 -0
  224. package/lib/commands/pg/credentials/destroy.d.ts +16 -0
  225. package/lib/commands/pg/credentials/destroy.js +48 -0
  226. package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
  227. package/lib/commands/pg/credentials/repair-default.js +39 -0
  228. package/lib/commands/pg/credentials/rotate.d.ts +16 -0
  229. package/lib/commands/pg/credentials/rotate.js +82 -0
  230. package/lib/commands/pg/credentials/url.d.ts +14 -0
  231. package/lib/commands/pg/credentials/url.js +64 -0
  232. package/lib/commands/pg/credentials.d.ts +16 -0
  233. package/lib/commands/pg/credentials.js +61 -0
  234. package/lib/commands/pg/diagnose.d.ts +18 -0
  235. package/lib/commands/pg/diagnose.js +109 -0
  236. package/lib/commands/pg/info.d.ts +14 -0
  237. package/lib/commands/pg/info.js +92 -0
  238. package/lib/commands/pg/kill.d.ts +15 -0
  239. package/lib/commands/pg/kill.js +32 -0
  240. package/lib/commands/pg/killall.d.ts +13 -0
  241. package/lib/commands/pg/killall.js +26 -0
  242. package/lib/commands/pg/links/create.d.ts +15 -0
  243. package/lib/commands/pg/links/create.js +58 -0
  244. package/lib/commands/pg/links/destroy.d.ts +16 -0
  245. package/lib/commands/pg/links/destroy.js +42 -0
  246. package/lib/commands/pg/links/index.d.ts +13 -0
  247. package/lib/commands/pg/links/index.js +59 -0
  248. package/lib/commands/pg/locks.d.ts +15 -0
  249. package/lib/commands/pg/locks.js +53 -0
  250. package/lib/commands/pg/maintenance/index.d.ts +13 -0
  251. package/lib/commands/pg/maintenance/index.js +29 -0
  252. package/lib/commands/pg/maintenance/run.d.ts +14 -0
  253. package/lib/commands/pg/maintenance/run.js +37 -0
  254. package/lib/commands/pg/maintenance/window.d.ts +15 -0
  255. package/lib/commands/pg/maintenance/window.js +41 -0
  256. package/lib/commands/pg/outliers.d.ts +19 -0
  257. package/lib/commands/pg/outliers.js +97 -0
  258. package/lib/commands/pg/promote.d.ts +14 -0
  259. package/lib/commands/pg/promote.js +169 -0
  260. package/lib/commands/pg/ps.d.ts +14 -0
  261. package/lib/commands/pg/ps.js +52 -0
  262. package/lib/commands/pg/psql.d.ts +16 -0
  263. package/lib/commands/pg/psql.js +49 -0
  264. package/lib/commands/pg/pull.d.ts +18 -0
  265. package/lib/commands/pg/pull.js +87 -0
  266. package/lib/commands/pg/push.d.ts +18 -0
  267. package/lib/commands/pg/push.js +84 -0
  268. package/lib/commands/pg/reset.d.ts +15 -0
  269. package/lib/commands/pg/reset.js +44 -0
  270. package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
  271. package/lib/commands/pg/settings/auto-explain/log-analyze.js +32 -0
  272. package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
  273. package/lib/commands/pg/settings/auto-explain/log-buffers.js +30 -0
  274. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +16 -0
  275. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +33 -0
  276. package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
  277. package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +25 -0
  278. package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
  279. package/lib/commands/pg/settings/auto-explain/log-triggers.js +30 -0
  280. package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
  281. package/lib/commands/pg/settings/auto-explain/log-verbose.js +33 -0
  282. package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
  283. package/lib/commands/pg/settings/auto-explain.js +38 -0
  284. package/lib/commands/pg/settings/index.d.ts +13 -0
  285. package/lib/commands/pg/settings/index.js +34 -0
  286. package/lib/commands/pg/settings/log-connections.d.ts +17 -0
  287. package/lib/commands/pg/settings/log-connections.js +34 -0
  288. package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
  289. package/lib/commands/pg/settings/log-lock-waits.js +31 -0
  290. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +15 -0
  291. package/lib/commands/pg/settings/log-min-duration-statement.js +33 -0
  292. package/lib/commands/pg/settings/log-statement.d.ts +12 -0
  293. package/lib/commands/pg/settings/log-statement.js +30 -0
  294. package/lib/commands/pg/settings/track-functions.d.ts +12 -0
  295. package/lib/commands/pg/settings/track-functions.js +29 -0
  296. package/lib/commands/pg/unfollow.d.ts +14 -0
  297. package/lib/commands/pg/unfollow.js +40 -0
  298. package/lib/commands/pg/upgrade.d.ts +15 -0
  299. package/lib/commands/pg/upgrade.js +58 -0
  300. package/lib/commands/pg/vacuum-stats.d.ts +13 -0
  301. package/lib/commands/pg/vacuum-stats.js +65 -0
  302. package/lib/commands/pg/wait.d.ts +15 -0
  303. package/lib/commands/pg/wait.js +79 -0
  304. package/lib/commands/pipelines/connect.js +1 -1
  305. package/lib/commands/pipelines/diff.js +1 -1
  306. package/lib/commands/ps/index.d.ts +15 -0
  307. package/lib/commands/ps/index.js +195 -0
  308. package/lib/commands/ps/restart.d.ts +17 -0
  309. package/lib/commands/ps/restart.js +38 -0
  310. package/lib/commands/ps/scale.d.ts +13 -0
  311. package/lib/commands/ps/scale.js +108 -0
  312. package/lib/commands/ps/stop.d.ts +17 -0
  313. package/lib/commands/ps/stop.js +33 -0
  314. package/lib/commands/ps/type.d.ts +12 -0
  315. package/lib/commands/ps/type.js +163 -0
  316. package/lib/commands/redis/cli.d.ts +15 -0
  317. package/lib/commands/redis/cli.js +204 -0
  318. package/lib/commands/redis/credentials.d.ts +14 -0
  319. package/lib/commands/redis/credentials.js +32 -0
  320. package/lib/commands/redis/info.d.ts +15 -0
  321. package/lib/commands/redis/info.js +25 -0
  322. package/lib/commands/redis/keyspace-notifications.d.ts +14 -0
  323. package/lib/commands/redis/keyspace-notifications.js +47 -0
  324. package/lib/commands/redis/maintenance.d.ts +16 -0
  325. package/lib/commands/redis/maintenance.js +63 -0
  326. package/lib/commands/redis/maxmemory.d.ts +14 -0
  327. package/lib/commands/redis/maxmemory.js +40 -0
  328. package/lib/commands/redis/promote.d.ts +13 -0
  329. package/lib/commands/redis/promote.js +39 -0
  330. package/lib/commands/redis/stats-reset.d.ts +14 -0
  331. package/lib/commands/redis/stats-reset.js +36 -0
  332. package/lib/commands/redis/timeout.d.ts +14 -0
  333. package/lib/commands/redis/timeout.js +35 -0
  334. package/lib/commands/redis/upgrade.d.ts +15 -0
  335. package/lib/commands/redis/upgrade.js +37 -0
  336. package/lib/commands/redis/wait.d.ts +14 -0
  337. package/lib/commands/redis/wait.js +60 -0
  338. package/lib/commands/releases/index.d.ts +14 -0
  339. package/lib/commands/releases/index.js +124 -0
  340. package/lib/commands/releases/info.d.ts +15 -0
  341. package/lib/commands/releases/info.js +56 -0
  342. package/lib/commands/releases/output.d.ts +13 -0
  343. package/lib/commands/releases/output.js +37 -0
  344. package/lib/commands/releases/rollback.d.ts +14 -0
  345. package/lib/commands/releases/rollback.js +48 -0
  346. package/lib/commands/run/detached.d.ts +7 -8
  347. package/lib/commands/run/detached.js +16 -20
  348. package/lib/commands/run/index.d.ts +10 -11
  349. package/lib/commands/run/index.js +16 -17
  350. package/lib/commands/run/inside.d.ts +5 -7
  351. package/lib/commands/run/inside.js +10 -14
  352. package/lib/commands/spaces/create.d.ts +22 -0
  353. package/lib/commands/spaces/create.js +73 -0
  354. package/lib/commands/spaces/destroy.d.ts +14 -0
  355. package/lib/commands/spaces/destroy.js +49 -0
  356. package/lib/commands/spaces/drains/get.d.ts +12 -0
  357. package/lib/commands/spaces/drains/get.js +27 -0
  358. package/lib/commands/spaces/drains/set.d.ts +14 -0
  359. package/lib/commands/spaces/drains/set.js +29 -0
  360. package/lib/commands/spaces/hosts.d.ts +14 -0
  361. package/lib/commands/spaces/hosts.js +37 -0
  362. package/lib/commands/spaces/index.d.ts +16 -0
  363. package/lib/commands/spaces/index.js +55 -0
  364. package/lib/commands/spaces/info.d.ts +14 -0
  365. package/lib/commands/spaces/info.js +47 -0
  366. package/lib/commands/spaces/outbound-rules/add.d.ts +15 -0
  367. package/lib/commands/spaces/outbound-rules/add.js +81 -0
  368. package/lib/commands/spaces/outbound-rules/index.d.ts +15 -0
  369. package/lib/commands/spaces/outbound-rules/index.js +49 -0
  370. package/lib/commands/spaces/outbound-rules/remove.d.ts +17 -0
  371. package/lib/commands/spaces/outbound-rules/remove.js +53 -0
  372. package/lib/commands/spaces/peerings/accept.d.ts +15 -0
  373. package/lib/commands/spaces/peerings/accept.js +36 -0
  374. package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
  375. package/lib/commands/spaces/peerings/destroy.js +45 -0
  376. package/lib/commands/spaces/peerings/index.d.ts +13 -0
  377. package/lib/commands/spaces/peerings/index.js +33 -0
  378. package/lib/commands/spaces/peerings/info.d.ts +15 -0
  379. package/lib/commands/spaces/peerings/info.js +59 -0
  380. package/lib/commands/spaces/ps.d.ts +15 -0
  381. package/lib/commands/spaces/ps.js +82 -0
  382. package/lib/commands/spaces/rename.d.ts +11 -0
  383. package/lib/commands/spaces/rename.js +26 -0
  384. package/lib/commands/spaces/topology.d.ts +32 -0
  385. package/lib/commands/spaces/topology.js +89 -0
  386. package/lib/commands/spaces/transfer.d.ts +11 -0
  387. package/lib/commands/spaces/transfer.js +35 -0
  388. package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
  389. package/lib/commands/spaces/trusted-ips/add.js +43 -0
  390. package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
  391. package/lib/commands/spaces/trusted-ips/index.js +52 -0
  392. package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
  393. package/lib/commands/spaces/trusted-ips/remove.js +44 -0
  394. package/lib/commands/spaces/vpn/config.d.ts +14 -0
  395. package/lib/commands/spaces/vpn/config.js +54 -0
  396. package/lib/commands/spaces/vpn/connect.d.ts +15 -0
  397. package/lib/commands/spaces/vpn/connect.js +45 -0
  398. package/lib/commands/spaces/vpn/connections.d.ts +17 -0
  399. package/lib/commands/spaces/vpn/connections.js +57 -0
  400. package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
  401. package/lib/commands/spaces/vpn/destroy.js +35 -0
  402. package/lib/commands/spaces/vpn/info.d.ts +16 -0
  403. package/lib/commands/spaces/vpn/info.js +82 -0
  404. package/lib/commands/spaces/vpn/update.d.ts +14 -0
  405. package/lib/commands/spaces/vpn/update.js +36 -0
  406. package/lib/commands/spaces/vpn/wait.d.ts +13 -0
  407. package/lib/commands/spaces/vpn/wait.js +53 -0
  408. package/lib/commands/spaces/wait.d.ts +17 -0
  409. package/lib/commands/spaces/wait.js +89 -0
  410. package/lib/commands/status.js +4 -4
  411. package/lib/commands/teams/index.d.ts +9 -0
  412. package/lib/commands/teams/index.js +29 -0
  413. package/lib/global_telemetry.js +10 -4
  414. package/lib/hooks/postrun/performance_analytics.js +5 -4
  415. package/lib/hooks/prerun/analytics.js +3 -0
  416. package/lib/lib/addons/addons_wait.d.ts +78 -0
  417. package/lib/lib/addons/addons_wait.js +56 -0
  418. package/lib/lib/addons/create_addon.d.ts +7 -0
  419. package/lib/lib/addons/create_addon.js +59 -0
  420. package/lib/lib/addons/destroy_addon.d.ts +3 -0
  421. package/lib/lib/addons/destroy_addon.js +48 -0
  422. package/lib/lib/addons/resolve.d.ts +38 -0
  423. package/lib/lib/addons/resolve.js +179 -0
  424. package/lib/lib/addons/util.d.ts +9 -0
  425. package/lib/lib/addons/util.js +72 -0
  426. package/lib/lib/api.d.ts +1 -1
  427. package/lib/lib/apps/app-transfer.d.ts +10 -0
  428. package/lib/lib/apps/app-transfer.js +35 -0
  429. package/lib/lib/apps/error_info.d.ts +7 -0
  430. package/lib/lib/apps/error_info.js +185 -0
  431. package/lib/lib/autocomplete/completions.d.ts +4 -0
  432. package/lib/lib/autocomplete/completions.js +6 -1
  433. package/lib/lib/buildpacks/buildpacks.js +3 -4
  434. package/lib/lib/certs/certificate_details.d.ts +2 -0
  435. package/lib/lib/certs/certificate_details.js +37 -0
  436. package/lib/lib/certs/display_table.d.ts +2 -0
  437. package/lib/lib/certs/display_table.js +51 -0
  438. package/lib/lib/certs/domains.d.ts +3 -0
  439. package/lib/lib/certs/domains.js +45 -0
  440. package/lib/lib/certs/flags.d.ts +7 -0
  441. package/lib/lib/certs/flags.js +42 -0
  442. package/lib/lib/certs/format_date.d.ts +1 -0
  443. package/lib/lib/certs/format_date.js +11 -0
  444. package/lib/lib/certs/get_cert_and_key.d.ts +9 -0
  445. package/lib/lib/certs/get_cert_and_key.js +11 -0
  446. package/lib/lib/ci/git.d.ts +7 -1
  447. package/lib/lib/ci/git.js +44 -1
  448. package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
  449. package/lib/lib/ci/source.js +3 -3
  450. package/lib/lib/ci/test-run.js +2 -2
  451. package/lib/lib/ci/validate.d.ts +2 -0
  452. package/lib/lib/ci/validate.js +10 -0
  453. package/lib/lib/config/quote.js +1 -1
  454. package/lib/lib/confirmCommand.d.ts +1 -0
  455. package/lib/lib/confirmCommand.js +23 -0
  456. package/lib/lib/container/debug.d.ts +2 -0
  457. package/lib/lib/container/debug.js +5 -0
  458. package/lib/lib/container/docker_helper.d.ts +24 -0
  459. package/lib/lib/container/docker_helper.js +168 -0
  460. package/lib/lib/container/streamer.d.ts +1 -0
  461. package/lib/lib/container/streamer.js +31 -0
  462. package/lib/lib/domains/domains.d.ts +6 -0
  463. package/lib/lib/domains/domains.js +104 -0
  464. package/lib/lib/git/git.d.ts +3 -0
  465. package/lib/lib/git/git.js +19 -0
  466. package/lib/lib/git/push.d.ts +1 -0
  467. package/lib/lib/git/push.js +6 -0
  468. package/lib/lib/local/run-foreman.d.ts +1 -0
  469. package/lib/lib/local/run-foreman.js +229 -1
  470. package/lib/lib/members/util.d.ts +3 -0
  471. package/lib/lib/members/util.js +25 -0
  472. package/lib/lib/members/utils.d.ts +2 -0
  473. package/lib/lib/members/utils.js +14 -0
  474. package/lib/lib/notify.d.ts +1 -0
  475. package/lib/lib/notify.js +23 -0
  476. package/lib/lib/orgs/utils.d.ts +5 -0
  477. package/lib/lib/orgs/utils.js +24 -0
  478. package/lib/lib/pg/backups.d.ts +17 -0
  479. package/lib/lib/pg/backups.js +164 -0
  480. package/lib/lib/pg/bastion.d.ts +29 -0
  481. package/lib/lib/pg/bastion.js +121 -0
  482. package/lib/lib/pg/config.d.ts +2 -0
  483. package/lib/lib/pg/config.js +13 -0
  484. package/lib/lib/pg/download.d.ts +5 -0
  485. package/lib/lib/pg/download.js +34 -0
  486. package/lib/lib/pg/fetcher.d.ts +39 -0
  487. package/lib/lib/pg/fetcher.js +137 -0
  488. package/lib/lib/pg/host.d.ts +1 -0
  489. package/lib/lib/pg/host.js +7 -0
  490. package/lib/lib/pg/psql.d.ts +48 -0
  491. package/lib/lib/pg/psql.js +252 -0
  492. package/lib/lib/pg/push_pull.d.ts +13 -0
  493. package/lib/lib/pg/push_pull.js +118 -0
  494. package/lib/lib/pg/setter.d.ts +16 -0
  495. package/lib/lib/pg/setter.js +65 -0
  496. package/lib/lib/pg/types.d.ts +230 -0
  497. package/lib/lib/pg/types.js +2 -0
  498. package/lib/lib/pg/util.d.ts +36 -0
  499. package/lib/lib/pg/util.js +183 -0
  500. package/lib/lib/redis/api.d.ts +65 -0
  501. package/lib/lib/redis/api.js +122 -0
  502. package/lib/lib/releases/output.d.ts +1 -0
  503. package/lib/lib/releases/output.js +14 -0
  504. package/lib/lib/releases/releases.d.ts +6 -0
  505. package/lib/lib/releases/releases.js +32 -0
  506. package/lib/lib/releases/status_helper.d.ts +5 -0
  507. package/lib/lib/releases/status_helper.js +25 -0
  508. package/lib/lib/run/dyno.js +2 -2
  509. package/lib/lib/run/log-displayer.d.ts +1 -1
  510. package/lib/lib/spaces/format.d.ts +4 -0
  511. package/lib/lib/spaces/format.js +60 -0
  512. package/lib/lib/spaces/hosts.d.ts +9 -0
  513. package/lib/lib/spaces/hosts.js +34 -0
  514. package/lib/lib/spaces/outbound-rules.d.ts +4 -0
  515. package/lib/lib/spaces/outbound-rules.js +78 -0
  516. package/lib/lib/spaces/parsers.d.ts +8 -0
  517. package/lib/lib/spaces/parsers.js +17 -0
  518. package/lib/lib/spaces/peering.d.ts +4 -0
  519. package/lib/lib/spaces/peering.js +53 -0
  520. package/lib/lib/spaces/spaces.d.ts +4 -0
  521. package/lib/lib/spaces/spaces.js +37 -0
  522. package/lib/lib/spaces/vpn-connections.d.ts +2 -0
  523. package/lib/lib/spaces/vpn-connections.js +22 -0
  524. package/lib/lib/teamUtils.d.ts +3 -0
  525. package/lib/lib/teamUtils.js +18 -0
  526. package/lib/lib/time.d.ts +2 -0
  527. package/lib/lib/time.js +29 -0
  528. package/lib/lib/types/app_errors.d.ts +6 -0
  529. package/lib/lib/types/app_errors.js +2 -0
  530. package/lib/lib/types/domain.d.ts +61 -0
  531. package/lib/lib/types/domain.js +5 -0
  532. package/lib/lib/types/favorites.d.ts +7 -0
  533. package/lib/lib/types/favorites.js +2 -0
  534. package/lib/lib/types/notifications.d.ts +20 -0
  535. package/lib/lib/types/notifications.js +2 -0
  536. package/lib/lib/utils/multisort.d.ts +32 -0
  537. package/lib/lib/utils/multisort.js +66 -0
  538. package/lib/lib/utils/uuid-validate.d.ts +1 -0
  539. package/lib/lib/utils/uuid-validate.js +7 -0
  540. package/lib/user-config.js +2 -2
  541. package/oclif.manifest.json +12920 -2534
  542. package/package.json +111 -60
  543. package/lib/lib/buildpacks/push.d.ts +0 -0
  544. package/lib/lib/buildpacks/push.js +0 -4
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const tsheredoc_1 = require("tsheredoc");
5
+ const setter_1 = require("../../../lib/pg/setter");
6
+ class LogStatement extends setter_1.PGSettingsCommand {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.settingKey = 'log_statement';
10
+ }
11
+ convertValue(val) {
12
+ return val;
13
+ }
14
+ explain(setting) {
15
+ return setting.values[setting.value];
16
+ }
17
+ }
18
+ exports.default = LogStatement;
19
+ LogStatement.description = (0, tsheredoc_1.default)(`
20
+ log_statement controls which SQL statements are logged.
21
+ Valid values for VALUE:
22
+ none - No statements are logged
23
+ ddl - All data definition statements, such as CREATE, ALTER and DROP will be logged
24
+ mod - Includes all statements from ddl as well as data-modifying statements such as INSERT, UPDATE, DELETE, TRUNCATE, COPY
25
+ all - All statements are logged
26
+ `);
27
+ LogStatement.args = {
28
+ database: core_1.Args.string(),
29
+ value: core_1.Args.string({ options: ['none', 'ddl', 'mod', 'all'] }),
30
+ };
@@ -0,0 +1,12 @@
1
+ import { PGSettingsCommand } from '../../../lib/pg/setter';
2
+ import type { Setting, SettingKey } from '../../../lib/pg/types';
3
+ export default class TrackFunctions extends PGSettingsCommand {
4
+ static description: string;
5
+ static args: {
6
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
7
+ value: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ protected settingKey: SettingKey;
10
+ protected convertValue(val: unknown): unknown;
11
+ protected explain(setting: Setting<keyof Setting<unknown>['value']>): string;
12
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const tsheredoc_1 = require("tsheredoc");
5
+ const setter_1 = require("../../../lib/pg/setter");
6
+ // ref: https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-FUNCTIONS
7
+ class TrackFunctions extends setter_1.PGSettingsCommand {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.settingKey = 'track_functions';
11
+ }
12
+ convertValue(val) {
13
+ return val;
14
+ }
15
+ explain(setting) {
16
+ return setting.values[setting.value];
17
+ }
18
+ }
19
+ exports.default = TrackFunctions;
20
+ TrackFunctions.description = (0, tsheredoc_1.default)(`
21
+ track_functions controls tracking of function call counts and time used. Default is none.
22
+ Valid values for VALUE:
23
+ none - No functions are tracked (default)
24
+ pl - Only procedural language functions are tracked
25
+ all - All functions, including SQL and C language functions, are tracked. Simple SQL-language that are inlined are not tracked`);
26
+ TrackFunctions.args = {
27
+ database: core_1.Args.string(),
28
+ value: core_1.Args.string({ options: ['none', 'pl', 'all'] }),
29
+ };
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Unfollow extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ };
10
+ static args: {
11
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,40 @@
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 fetcher_1 = require("../../lib/pg/fetcher");
7
+ const host_1 = require("../../lib/pg/host");
8
+ const util_1 = require("../../lib/pg/util");
9
+ const confirmCommand_1 = require("../../lib/confirmCommand");
10
+ const tsheredoc_1 = require("tsheredoc");
11
+ class Unfollow extends command_1.Command {
12
+ async run() {
13
+ const { flags, args } = await this.parse(Unfollow);
14
+ const { app, confirm } = flags;
15
+ const db = await (0, fetcher_1.getAddon)(this.heroku, app, args.database);
16
+ const { body: replica } = await this.heroku.get(`/client/v11/databases/${db.id}`, { hostname: (0, host_1.default)() });
17
+ if (!replica.following)
18
+ core_1.ux.error(`${color_1.default.addon(db.name)} is not a follower`);
19
+ const { body: configVars } = await this.heroku.get(`/apps/${app}/config-vars`);
20
+ const origin = (0, util_1.databaseNameFromUrl)(replica.following, configVars);
21
+ await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
22
+ Destructive action
23
+ ${color_1.default.addon(db.name)} will become writeable and no longer follow ${origin}. This cannot be undone.
24
+ `));
25
+ core_1.ux.action.start(`${color_1.default.addon(db.name)} unfollowing`);
26
+ await this.heroku.put(`/client/v11/databases/${db.id}/unfollow`, { hostname: (0, host_1.default)() });
27
+ core_1.ux.action.stop();
28
+ }
29
+ }
30
+ exports.default = Unfollow;
31
+ Unfollow.topic = 'pg';
32
+ Unfollow.description = 'stop a replica from following and make it a writeable database';
33
+ Unfollow.flags = {
34
+ confirm: command_1.flags.string({ char: 'c' }),
35
+ app: command_1.flags.app({ required: true }),
36
+ remote: command_1.flags.remote(),
37
+ };
38
+ Unfollow.args = {
39
+ database: core_1.Args.string({ required: true }),
40
+ };
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Upgrade extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ version: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ };
11
+ static args: {
12
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,58 @@
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 fetcher_1 = require("../../lib/pg/fetcher");
8
+ const host_1 = require("../../lib/pg/host");
9
+ const util_1 = require("../../lib/pg/util");
10
+ const confirmCommand_1 = require("../../lib/confirmCommand");
11
+ class Upgrade extends command_1.Command {
12
+ async run() {
13
+ const { flags, args } = await this.parse(Upgrade);
14
+ const { app, version, confirm } = flags;
15
+ const { database } = args;
16
+ const db = await (0, fetcher_1.getAddon)(this.heroku, app, database);
17
+ if ((0, util_1.legacyEssentialPlan)(db))
18
+ core_1.ux.error('pg:upgrade is only available for Essential-* databases and follower databases on Standard-tier and higher plans.');
19
+ const { body: replica } = await this.heroku.get(`/client/v11/databases/${db.id}`, { hostname: (0, host_1.default)() });
20
+ if (replica.following) {
21
+ const { body: configVars } = await this.heroku.get(`/apps/${app}/config-vars`);
22
+ const origin = (0, util_1.databaseNameFromUrl)(replica.following, configVars);
23
+ await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
24
+ Destructive action
25
+ ${color_1.default.addon(db.name)} will be upgraded to a newer PostgreSQL version, stop following ${origin}, and become writable.
26
+
27
+ This cannot be undone.
28
+ `));
29
+ }
30
+ else {
31
+ await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
32
+ Destructive action
33
+ ${color_1.default.addon(db.name)} will be upgraded to a newer PostgreSQL version.
34
+
35
+ This cannot be undone.
36
+ `));
37
+ }
38
+ const data = { version };
39
+ core_1.ux.action.start(`Starting upgrade of ${color_1.default.addon(db.name)}`);
40
+ await this.heroku.post(`/client/v11/databases/${db.id}/upgrade`, { hostname: (0, host_1.default)(), body: data });
41
+ core_1.ux.action.stop(`Use ${color_1.default.cmd('heroku pg:wait')} to track status`);
42
+ }
43
+ }
44
+ exports.default = Upgrade;
45
+ Upgrade.topic = 'pg';
46
+ Upgrade.description = (0, tsheredoc_1.default)(`
47
+ For an Essential-* plan, this command upgrades the database's PostgreSQL version. For a Standard-tier and higher plan, this command unfollows the leader database before upgrading the PostgreSQL version.
48
+ To upgrade to another PostgreSQL version, use pg:copy instead
49
+ `);
50
+ Upgrade.flags = {
51
+ confirm: command_1.flags.string({ char: 'c' }),
52
+ version: command_1.flags.string({ char: 'v', description: 'PostgreSQL version to upgrade to' }),
53
+ app: command_1.flags.app({ required: true }),
54
+ remote: command_1.flags.remote(),
55
+ };
56
+ Upgrade.args = {
57
+ database: core_1.Args.string(),
58
+ };
@@ -0,0 +1,13 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class VacuumStats extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ };
9
+ static args: {
10
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const command_1 = require("@heroku-cli/command");
4
+ const core_1 = require("@oclif/core");
5
+ const fetcher_1 = require("../../lib/pg/fetcher");
6
+ const psql_1 = require("../../lib/pg/psql");
7
+ const tsheredoc_1 = require("tsheredoc");
8
+ class VacuumStats extends command_1.Command {
9
+ async run() {
10
+ const { flags, args } = await this.parse(VacuumStats);
11
+ const db = await (0, fetcher_1.database)(this.heroku, flags.app, args.database);
12
+ const query = (0, tsheredoc_1.default)(`
13
+ WITH table_opts AS (
14
+ SELECT
15
+ pg_class.oid, relname, nspname, array_to_string(reloptions, '') AS relopts
16
+ FROM
17
+ pg_class INNER JOIN pg_namespace ns ON relnamespace = ns.oid
18
+ ), vacuum_settings AS (
19
+ SELECT
20
+ oid, relname, nspname,
21
+ CASE
22
+ WHEN relopts LIKE '%autovacuum_vacuum_threshold%'
23
+ THEN substring(relopts, '.*autovacuum_vacuum_threshold=([0-9.]+).*')::integer
24
+ ELSE current_setting('autovacuum_vacuum_threshold')::integer
25
+ END AS autovacuum_vacuum_threshold,
26
+ CASE
27
+ WHEN relopts LIKE '%autovacuum_vacuum_scale_factor%'
28
+ THEN substring(relopts, '.*autovacuum_vacuum_scale_factor=([0-9.]+).*')::real
29
+ ELSE current_setting('autovacuum_vacuum_scale_factor')::real
30
+ END AS autovacuum_vacuum_scale_factor
31
+ FROM
32
+ table_opts
33
+ )
34
+ SELECT
35
+ vacuum_settings.nspname AS schema,
36
+ vacuum_settings.relname AS table,
37
+ to_char(psut.last_vacuum, 'YYYY-MM-DD HH24:MI') AS last_vacuum,
38
+ to_char(psut.last_autovacuum, 'YYYY-MM-DD HH24:MI') AS last_autovacuum,
39
+ to_char(pg_class.reltuples, '9G999G999G999') AS rowcount,
40
+ to_char(psut.n_dead_tup, '9G999G999G999') AS dead_rowcount,
41
+ to_char(autovacuum_vacuum_threshold
42
+ + (autovacuum_vacuum_scale_factor::numeric * pg_class.reltuples), '9G999G999G999') AS autovacuum_threshold,
43
+ CASE
44
+ WHEN autovacuum_vacuum_threshold + (autovacuum_vacuum_scale_factor::numeric * pg_class.reltuples) < psut.n_dead_tup
45
+ THEN 'yes'
46
+ END AS expect_autovacuum
47
+ FROM
48
+ pg_stat_user_tables psut INNER JOIN pg_class ON psut.relid = pg_class.oid
49
+ INNER JOIN vacuum_settings ON pg_class.oid = vacuum_settings.oid
50
+ ORDER BY 1
51
+ `);
52
+ const output = await (0, psql_1.exec)(db, query);
53
+ core_1.ux.log(output);
54
+ }
55
+ }
56
+ exports.default = VacuumStats;
57
+ VacuumStats.topic = 'pg';
58
+ VacuumStats.description = 'show dead rows and whether an automatic vacuum is expected to be triggered';
59
+ VacuumStats.flags = {
60
+ app: command_1.flags.app({ required: true }),
61
+ remote: command_1.flags.remote(),
62
+ };
63
+ VacuumStats.args = {
64
+ database: core_1.Args.string(),
65
+ };
@@ -0,0 +1,15 @@
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
+ 'wait-interval': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ 'no-notify': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ };
11
+ static args: {
12
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const color_1 = require("@heroku-cli/color");
4
+ const command_1 = require("@heroku-cli/command");
5
+ const core_1 = require("@oclif/core");
6
+ const debug_1 = require("debug");
7
+ const fetcher_1 = require("../../lib/pg/fetcher");
8
+ const host_1 = require("../../lib/pg/host");
9
+ const notify_1 = require("../../lib/notify");
10
+ const wait = (ms) => new Promise(resolve => {
11
+ setTimeout(resolve, ms);
12
+ });
13
+ class Wait extends command_1.Command {
14
+ async run() {
15
+ const { flags, args } = await this.parse(Wait);
16
+ const { app, 'wait-interval': waitInterval } = flags;
17
+ const dbName = args.database;
18
+ const pgDebug = (0, debug_1.default)('pg');
19
+ const waitFor = async (db) => {
20
+ let interval = waitInterval && Number.parseInt(waitInterval, 10);
21
+ if (!interval || interval < 0)
22
+ interval = 5;
23
+ let status;
24
+ let waiting = false;
25
+ let retries = 20;
26
+ while (true) {
27
+ try {
28
+ ({ body: status } = await this.heroku.get(`/client/v11/databases/${db.id}/wait_status`, { hostname: (0, host_1.default)() }));
29
+ }
30
+ catch (error) {
31
+ const httpError = error;
32
+ pgDebug(httpError);
33
+ if (!retries || httpError.statusCode !== 404)
34
+ throw httpError;
35
+ retries--;
36
+ status = { 'waiting?': true };
37
+ }
38
+ if (status['error?']) {
39
+ (0, notify_1.default)('error', `${db.name} ${status.message}`, false);
40
+ core_1.ux.error(status.message || '', { exit: 1 });
41
+ }
42
+ if (!status['waiting?']) {
43
+ if (waiting) {
44
+ core_1.ux.action.stop(status.message);
45
+ }
46
+ return;
47
+ }
48
+ if (!waiting) {
49
+ waiting = true;
50
+ core_1.ux.action.start(`Waiting for database ${color_1.default.yellow(db.name)}`, status.message);
51
+ }
52
+ core_1.ux.action.status = status.message;
53
+ await wait(interval * 1000);
54
+ }
55
+ };
56
+ let dbs = [];
57
+ if (dbName) {
58
+ dbs = [await (0, fetcher_1.getAddon)(this.heroku, app, dbName)];
59
+ }
60
+ else {
61
+ dbs = await (0, fetcher_1.all)(this.heroku, app);
62
+ }
63
+ for (const db of dbs) {
64
+ await waitFor(db);
65
+ }
66
+ }
67
+ }
68
+ exports.default = Wait;
69
+ Wait.topic = 'pg';
70
+ Wait.description = 'blocks until database is available';
71
+ Wait.flags = {
72
+ 'wait-interval': command_1.flags.string({ description: 'how frequently to poll in seconds (to avoid rate limiting)' }),
73
+ 'no-notify': command_1.flags.boolean({ description: 'do not show OS notification' }),
74
+ app: command_1.flags.app({ required: true }),
75
+ remote: command_1.flags.remote(),
76
+ };
77
+ Wait.args = {
78
+ database: core_1.Args.string(),
79
+ };
@@ -32,7 +32,7 @@ class Connect extends command_1.Command {
32
32
  }
33
33
  }
34
34
  exports.default = Connect;
35
- Connect.description = 'connect a github repo to an existing pipeline';
35
+ Connect.description = 'connect a GitHub repo to an existing pipeline';
36
36
  Connect.examples = [
37
37
  '$ heroku pipelines:connect my-pipeline -r githuborg/reponame',
38
38
  ];
@@ -20,7 +20,7 @@ async function diff(targetApp, downstreamApp, githubToken, herokuUserAgent) {
20
20
  if (downstreamApp.hash === targetApp.hash) {
21
21
  return core_1.ux.log(`\n${color_1.default.app(targetApp.name)} is up to date with ${color_1.default.app(downstreamApp.name)}`);
22
22
  }
23
- // Do the actual Github diff
23
+ // Do the actual GitHub diff
24
24
  try {
25
25
  const path = `${targetApp.repo}/compare/${downstreamApp.hash}...${targetApp.hash}`;
26
26
  const headers = { authorization: 'token ' + githubToken };
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Index extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static strict: boolean;
6
+ static usage: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ extended: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const color_1 = require("@heroku-cli/color");
5
+ const command_1 = require("@heroku-cli/command");
6
+ const core_1 = require("@oclif/core");
7
+ const time_1 = require("../../lib/time");
8
+ const tsheredoc_1 = require("tsheredoc");
9
+ function getProcessNumber(s) {
10
+ return Number.parseInt(s.split('.', 2)[1], 10);
11
+ }
12
+ function uniqueValues(value, index, self) {
13
+ return self.indexOf(value) === index;
14
+ }
15
+ function byProcessNumber(a, b) {
16
+ return getProcessNumber(a.name) - getProcessNumber(b.name);
17
+ }
18
+ function byProcessName(a, b) {
19
+ if (a.name > b.name) {
20
+ return 1;
21
+ }
22
+ if (b.name > a.name) {
23
+ return -1;
24
+ }
25
+ return 0;
26
+ }
27
+ function byProcessTypeAndNumber(a, b) {
28
+ if (a.type > b.type) {
29
+ return 1;
30
+ }
31
+ if (b.type > a.type) {
32
+ return -1;
33
+ }
34
+ return getProcessNumber(a.name) - getProcessNumber(b.name);
35
+ }
36
+ function truncate(s) {
37
+ return s.length > 35 ? `${s.slice(0, 34)}…` : s;
38
+ }
39
+ function printExtended(dynos) {
40
+ const sortedDynos = dynos.sort(byProcessTypeAndNumber);
41
+ core_1.ux.table(sortedDynos, {
42
+ ID: { get: (dyno) => dyno.id },
43
+ Process: { get: (dyno) => dyno.name },
44
+ State: { get: (dyno) => `${dyno.state} ${(0, time_1.ago)(new Date(dyno.updated_at))}` },
45
+ Region: { get: (dyno) => dyno.extended ? dyno.extended.region : '' },
46
+ 'Execution Plane': { get: (dyno) => dyno.extended ? dyno.extended.execution_plane : '' },
47
+ Fleet: { get: (dyno) => dyno.extended ? dyno.extended.fleet : '' },
48
+ Instance: { get: (dyno) => dyno.extended ? dyno.extended.instance : '' },
49
+ IP: { get: (dyno) => dyno.extended ? dyno.extended.ip : '' },
50
+ Port: { get: (dyno) => dyno.extended ? dyno.extended.port.toString() : '' },
51
+ AZ: { get: (dyno) => dyno.extended ? dyno.extended.az : '' },
52
+ Release: { get: (dyno) => dyno.release.version },
53
+ Command: { get: (dyno) => truncate(dyno.command) },
54
+ Route: { get: (dyno) => dyno.extended ? dyno.extended.route : '' },
55
+ Size: { get: (dyno) => dyno.size },
56
+ }, {
57
+ 'no-truncate': true,
58
+ });
59
+ }
60
+ async function printAccountQuota(heroku, app, account) {
61
+ if (app.process_tier !== 'free' && app.process_tier !== 'eco') {
62
+ return;
63
+ }
64
+ if (app.owner.id !== account.id) {
65
+ return;
66
+ }
67
+ const { body: quota } = await heroku.request(`/accounts/${account.id}/actions/get-quota`, { headers: { Accept: 'application/vnd.heroku+json; version=3.account-quotas' } }).catch(() => {
68
+ return { body: null };
69
+ });
70
+ if (!quota || (quota.id && quota.id === 'not_found')) {
71
+ return;
72
+ }
73
+ const remaining = (quota.account_quota === 0) ? 0 : quota.account_quota - quota.quota_used;
74
+ const percentage = (quota.account_quota === 0) ? 0 : Math.floor(remaining / quota.account_quota * 100);
75
+ const remainingMinutes = remaining / 60;
76
+ const hours = Math.floor(remainingMinutes / 60);
77
+ const minutes = Math.floor(remainingMinutes % 60);
78
+ const appQuota = quota.apps.find(appQuota => {
79
+ return appQuota.app_uuid === app.id;
80
+ });
81
+ const appQuotaUsed = appQuota ? appQuota.quota_used / 60 : 0;
82
+ const appPercentage = appQuota ? Math.floor(appQuota.quota_used * 100 / quota.account_quota) : 0;
83
+ const appHours = Math.floor(appQuotaUsed / 60);
84
+ const appMinutes = Math.floor(appQuotaUsed % 60);
85
+ if (app.process_tier === 'eco') {
86
+ core_1.ux.log(`Eco dyno hours quota remaining this month: ${hours}h ${minutes}m (${percentage}%)`);
87
+ core_1.ux.log(`Eco dyno usage for this app: ${appHours}h ${appMinutes}m (${appPercentage}%)`);
88
+ core_1.ux.log('For more information on Eco dyno hours, see:');
89
+ core_1.ux.log('https://devcenter.heroku.com/articles/eco-dyno-hours');
90
+ core_1.ux.log();
91
+ }
92
+ if (app.process_tier === 'free') {
93
+ core_1.ux.log(`Free dyno hours quota remaining this month: ${hours}h ${minutes}m (${percentage}%)`);
94
+ core_1.ux.log(`Free dyno usage for this app: ${appHours}h ${appMinutes}m (${appPercentage}%)`);
95
+ core_1.ux.log('For more information on dyno sleeping and how to upgrade, see:');
96
+ core_1.ux.log('https://devcenter.heroku.com/articles/dyno-sleeping');
97
+ core_1.ux.log();
98
+ }
99
+ }
100
+ function decorateOneOffDyno(dyno) {
101
+ const since = (0, time_1.ago)(new Date(dyno.updated_at));
102
+ // eslint-disable-next-line unicorn/explicit-length-check
103
+ const size = dyno.size || '1X';
104
+ const state = dyno.state === 'up' ? color_1.default.green(dyno.state) : color_1.default.yellow(dyno.state);
105
+ return `${dyno.name} (${color_1.default.cyan(size)}): ${state} ${color_1.default.dim(since)}: ${dyno.command}`;
106
+ }
107
+ function decorateCommandDyno(dyno) {
108
+ const since = (0, time_1.ago)(new Date(dyno.updated_at));
109
+ const state = dyno.state === 'up' ? color_1.default.green(dyno.state) : color_1.default.yellow(dyno.state);
110
+ return `${dyno.name}: ${state} ${color_1.default.dim(since)}`;
111
+ }
112
+ function printDynos(dynos) {
113
+ const oneOffs = dynos.filter(d => d.type === 'run').sort(byProcessNumber);
114
+ const commands = dynos.filter(d => d.type !== 'run').map(d => d.command).filter(uniqueValues);
115
+ // Print one-off dynos
116
+ if (oneOffs.length > 0) {
117
+ core_1.ux.styledHeader(`${color_1.default.green('run')}: one-off processes (${color_1.default.yellow(oneOffs.length.toString())})`);
118
+ oneOffs.forEach(dyno => core_1.ux.log(decorateOneOffDyno(dyno)));
119
+ core_1.ux.log();
120
+ }
121
+ // Print dynos grouped by command
122
+ commands.forEach(function (command) {
123
+ const commandDynos = dynos.filter(d => d.command === command).sort(byProcessNumber);
124
+ const type = commandDynos[0].type;
125
+ // eslint-disable-next-line unicorn/explicit-length-check
126
+ const size = commandDynos[0].size || '1X';
127
+ core_1.ux.styledHeader(`${color_1.default.green(type)} (${color_1.default.cyan(size)}): ${command} (${color_1.default.yellow(commandDynos.length.toString())})`);
128
+ for (const dyno of commandDynos)
129
+ core_1.ux.log(decorateCommandDyno(dyno));
130
+ core_1.ux.log();
131
+ });
132
+ }
133
+ class Index extends command_1.Command {
134
+ async run() {
135
+ const _a = await this.parse(Index), { flags } = _a, restParse = tslib_1.__rest(_a, ["flags"]);
136
+ const { app, json, extended } = flags;
137
+ const types = restParse.argv;
138
+ const suffix = extended ? '?extended=true' : ''; // read previous comment, including this on the request doesn't make any difference.
139
+ const promises = {
140
+ dynos: this.heroku.request(`/apps/${app}/dynos${suffix}`),
141
+ appInfo: this.heroku.request(`/apps/${app}`, { headers: { Accept: 'application/vnd.heroku+json; version=3.process-tier' } }),
142
+ accountInfo: this.heroku.request('/account'),
143
+ };
144
+ const [{ body: dynos }, { body: appInfo }, { body: accountInfo }] = await Promise.all([promises.dynos, promises.appInfo, promises.accountInfo]);
145
+ const shielded = appInfo.space && appInfo.space.shield;
146
+ if (shielded) {
147
+ dynos.forEach(d => {
148
+ d.size = d.size.replace('Private-', 'Shield-');
149
+ });
150
+ }
151
+ let selectedDynos = dynos;
152
+ if (types.length > 0) {
153
+ selectedDynos = selectedDynos.filter(dyno => types.find((t) => dyno.type === t));
154
+ types.forEach(t => {
155
+ if (!selectedDynos.some(d => d.type === t)) {
156
+ throw new Error(`No ${color_1.default.cyan(t)} dynos on ${color_1.default.magenta(app)}`);
157
+ }
158
+ });
159
+ }
160
+ selectedDynos = selectedDynos.sort(byProcessName);
161
+ if (json)
162
+ core_1.ux.styledJSON(selectedDynos);
163
+ else if (extended)
164
+ printExtended(selectedDynos);
165
+ else {
166
+ await printAccountQuota(this.heroku, appInfo, accountInfo);
167
+ if (selectedDynos.length === 0)
168
+ core_1.ux.log(`No dynos on ${color_1.default.magenta(app)}`);
169
+ else
170
+ printDynos(selectedDynos);
171
+ }
172
+ }
173
+ }
174
+ exports.default = Index;
175
+ Index.topic = 'ps';
176
+ Index.description = 'list dynos for an app';
177
+ Index.strict = false;
178
+ Index.usage = 'ps [TYPE [TYPE ...]]';
179
+ Index.examples = [(0, tsheredoc_1.default) `
180
+ $ heroku ps
181
+ === run: one-off dyno
182
+ run.1: up for 5m: bash
183
+ === web: bundle exec thin start -p $PORT
184
+ web.1: created for 30s
185
+ `, (0, tsheredoc_1.default) `
186
+ $ heroku ps run # specifying types
187
+ === run: one-off dyno
188
+ run.1: up for 5m: bash
189
+ `];
190
+ Index.flags = {
191
+ app: command_1.flags.app({ required: true }),
192
+ remote: command_1.flags.remote(),
193
+ json: command_1.flags.boolean({ description: 'display as json' }),
194
+ extended: command_1.flags.boolean({ char: 'x', hidden: true }), // should be removed? Platform API doesn't serialize extended attributes even if the query param `extended=true` is sent.
195
+ };
@@ -0,0 +1,17 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Restart extends Command {
3
+ static description: string;
4
+ static topic: string;
5
+ static aliases: string[];
6
+ static hiddenAliases: string[];
7
+ static examples: string[];
8
+ static help: string;
9
+ static args: {
10
+ dyno: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
11
+ };
12
+ static flags: {
13
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
14
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
15
+ };
16
+ run(): Promise<void>;
17
+ }