heroku 9.0.0-dev.0 → 9.1.0-beta.0

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 (597) 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 +20 -0
  13. package/lib/commands/addons/create.js +96 -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 +2 -1
  43. package/lib/commands/apps/favorites/add.js +1 -0
  44. package/lib/commands/apps/favorites/remove.d.ts +2 -1
  45. package/lib/commands/apps/favorites/remove.js +1 -0
  46. package/lib/commands/apps/index.d.ts +16 -0
  47. package/lib/commands/apps/index.js +119 -0
  48. package/lib/commands/apps/info.d.ts +19 -0
  49. package/lib/commands/apps/info.js +162 -0
  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 +15 -0
  57. package/lib/commands/apps/open.js +30 -0
  58. package/lib/commands/apps/rename.d.ts +16 -0
  59. package/lib/commands/apps/rename.js +51 -0
  60. package/lib/commands/apps/stacks/index.d.ts +3 -2
  61. package/lib/commands/apps/stacks/index.js +2 -1
  62. package/lib/commands/apps/stacks/set.d.ts +4 -4
  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.d.ts +3 -3
  70. package/lib/commands/authorizations/create.js +5 -1
  71. package/lib/commands/authorizations/info.d.ts +1 -1
  72. package/lib/commands/authorizations/info.js +5 -1
  73. package/lib/commands/authorizations/revoke.d.ts +1 -1
  74. package/lib/commands/authorizations/revoke.js +5 -1
  75. package/lib/commands/authorizations/rotate.d.ts +1 -1
  76. package/lib/commands/authorizations/rotate.js +5 -1
  77. package/lib/commands/authorizations/update.d.ts +4 -4
  78. package/lib/commands/authorizations/update.js +5 -1
  79. package/lib/commands/autocomplete/doctor.js +2 -2
  80. package/lib/commands/autocomplete/options.d.ts +2 -2
  81. package/lib/commands/autocomplete/options.js +2 -2
  82. package/lib/commands/autocomplete/script.d.ts +1 -1
  83. package/lib/commands/buildpacks/add.d.ts +4 -4
  84. package/lib/commands/buildpacks/clear.d.ts +2 -2
  85. package/lib/commands/buildpacks/index.d.ts +2 -2
  86. package/lib/commands/buildpacks/info.d.ts +1 -1
  87. package/lib/commands/buildpacks/remove.d.ts +4 -4
  88. package/lib/commands/buildpacks/search.d.ts +4 -4
  89. package/lib/commands/buildpacks/set.d.ts +4 -4
  90. package/lib/commands/buildpacks/versions.d.ts +1 -1
  91. package/lib/commands/certs/add.d.ts +16 -0
  92. package/lib/commands/certs/add.js +98 -0
  93. package/lib/commands/certs/auto/disable.d.ts +11 -0
  94. package/lib/commands/certs/auto/disable.js +34 -0
  95. package/lib/commands/certs/auto/enable.d.ts +11 -0
  96. package/lib/commands/certs/auto/enable.js +51 -0
  97. package/lib/commands/certs/auto/index.d.ts +12 -0
  98. package/lib/commands/certs/auto/index.js +94 -0
  99. package/lib/commands/certs/auto/refresh.d.ts +10 -0
  100. package/lib/commands/certs/auto/refresh.js +19 -0
  101. package/lib/commands/certs/generate.d.ts +26 -0
  102. package/lib/commands/certs/generate.js +111 -0
  103. package/lib/commands/certs/index.d.ts +10 -0
  104. package/lib/commands/certs/index.js +26 -0
  105. package/lib/commands/certs/info.d.ts +13 -0
  106. package/lib/commands/certs/info.js +43 -0
  107. package/lib/commands/certs/remove.d.ts +13 -0
  108. package/lib/commands/certs/remove.js +32 -0
  109. package/lib/commands/certs/update.d.ts +18 -0
  110. package/lib/commands/certs/update.js +54 -0
  111. package/lib/commands/ci/config/get.d.ts +4 -3
  112. package/lib/commands/ci/config/get.js +3 -2
  113. package/lib/commands/ci/config/index.d.ts +3 -2
  114. package/lib/commands/ci/config/index.js +3 -2
  115. package/lib/commands/ci/config/set.d.ts +3 -2
  116. package/lib/commands/ci/config/set.js +2 -1
  117. package/lib/commands/ci/config/unset.d.ts +3 -3
  118. package/lib/commands/ci/config/unset.js +3 -3
  119. package/lib/commands/ci/debug.d.ts +2 -2
  120. package/lib/commands/ci/index.d.ts +3 -2
  121. package/lib/commands/ci/index.js +1 -0
  122. package/lib/commands/ci/info.d.ts +5 -4
  123. package/lib/commands/ci/info.js +1 -0
  124. package/lib/commands/ci/last.d.ts +4 -3
  125. package/lib/commands/ci/last.js +1 -0
  126. package/lib/commands/ci/open.d.ts +3 -2
  127. package/lib/commands/ci/open.js +1 -0
  128. package/lib/commands/ci/rerun.d.ts +4 -3
  129. package/lib/commands/ci/rerun.js +1 -0
  130. package/lib/commands/ci/run.d.ts +2 -2
  131. package/lib/commands/clients/create.d.ts +2 -2
  132. package/lib/commands/clients/destroy.d.ts +1 -1
  133. package/lib/commands/clients/info.d.ts +1 -1
  134. package/lib/commands/clients/rotate.d.ts +1 -1
  135. package/lib/commands/clients/update.d.ts +3 -3
  136. package/lib/commands/config/edit.d.ts +3 -3
  137. package/lib/commands/config/get.d.ts +3 -3
  138. package/lib/commands/config/index.d.ts +2 -2
  139. package/lib/commands/config/set.d.ts +12 -0
  140. package/lib/commands/config/set.js +60 -0
  141. package/lib/commands/config/unset.d.ts +2 -2
  142. package/lib/commands/console.d.ts +4 -4
  143. package/lib/commands/container/index.d.ts +6 -0
  144. package/lib/commands/container/index.js +13 -0
  145. package/lib/commands/container/login.d.ts +9 -0
  146. package/lib/commands/container/login.js +57 -0
  147. package/lib/commands/container/logout.d.ts +9 -0
  148. package/lib/commands/container/logout.js +37 -0
  149. package/lib/commands/container/pull.d.ts +14 -0
  150. package/lib/commands/container/pull.js +43 -0
  151. package/lib/commands/container/push.d.ts +16 -0
  152. package/lib/commands/container/push.js +103 -0
  153. package/lib/commands/container/release.d.ts +14 -0
  154. package/lib/commands/container/release.js +91 -0
  155. package/lib/commands/container/rm.d.ts +13 -0
  156. package/lib/commands/container/rm.js +39 -0
  157. package/lib/commands/container/run.d.ts +15 -0
  158. package/lib/commands/container/run.js +66 -0
  159. package/lib/commands/dashboard.d.ts +7 -0
  160. package/lib/commands/dashboard.js +164 -0
  161. package/lib/commands/domains/add.d.ts +4 -4
  162. package/lib/commands/domains/clear.d.ts +2 -2
  163. package/lib/commands/domains/index.d.ts +14 -10
  164. package/lib/commands/domains/index.js +47 -3
  165. package/lib/commands/domains/info.d.ts +3 -3
  166. package/lib/commands/domains/remove.d.ts +3 -3
  167. package/lib/commands/domains/update.d.ts +4 -4
  168. package/lib/commands/domains/wait.d.ts +3 -3
  169. package/lib/commands/drains/add.d.ts +12 -0
  170. package/lib/commands/drains/add.js +23 -0
  171. package/lib/commands/drains/index.d.ts +11 -0
  172. package/lib/commands/drains/index.js +50 -0
  173. package/lib/commands/drains/remove.d.ts +13 -0
  174. package/lib/commands/drains/remove.js +22 -0
  175. package/lib/commands/features/disable.d.ts +12 -0
  176. package/lib/commands/features/disable.js +30 -0
  177. package/lib/commands/features/enable.d.ts +12 -0
  178. package/lib/commands/features/enable.js +29 -0
  179. package/lib/commands/features/index.d.ts +10 -0
  180. package/lib/commands/features/index.js +37 -0
  181. package/lib/commands/features/info.d.ts +13 -0
  182. package/lib/commands/features/info.js +33 -0
  183. package/lib/commands/git/clone.d.ts +3 -3
  184. package/lib/commands/git/credentials.d.ts +1 -1
  185. package/lib/commands/git/remote.d.ts +2 -2
  186. package/lib/commands/keys/add.d.ts +14 -0
  187. package/lib/commands/keys/add.js +101 -0
  188. package/lib/commands/keys/clear.d.ts +5 -0
  189. package/lib/commands/keys/clear.js +17 -0
  190. package/lib/commands/keys/index.d.ts +9 -0
  191. package/lib/commands/keys/index.js +36 -0
  192. package/lib/commands/keys/remove.d.ts +9 -0
  193. package/lib/commands/keys/remove.js +29 -0
  194. package/lib/commands/labs/enable.d.ts +13 -0
  195. package/lib/commands/labs/enable.js +47 -0
  196. package/lib/commands/labs/index.d.ts +11 -0
  197. package/lib/commands/labs/index.js +71 -0
  198. package/lib/commands/labs/info.d.ts +14 -0
  199. package/lib/commands/labs/info.js +49 -0
  200. package/lib/commands/local/index.d.ts +5 -5
  201. package/lib/commands/local/index.js +8 -3
  202. package/lib/commands/local/run.d.ts +2 -2
  203. package/lib/commands/local/run.js +8 -3
  204. package/lib/commands/logs.d.ts +6 -6
  205. package/lib/commands/maintenance/index.d.ts +10 -0
  206. package/lib/commands/maintenance/index.js +19 -0
  207. package/lib/commands/maintenance/off.d.ts +10 -0
  208. package/lib/commands/maintenance/off.js +20 -0
  209. package/lib/commands/maintenance/on.d.ts +10 -0
  210. package/lib/commands/maintenance/on.js +20 -0
  211. package/lib/commands/members/add.d.ts +13 -0
  212. package/lib/commands/members/add.js +33 -0
  213. package/lib/commands/members/index.d.ts +12 -0
  214. package/lib/commands/members/index.js +76 -0
  215. package/lib/commands/members/remove.d.ts +10 -0
  216. package/lib/commands/members/remove.js +58 -0
  217. package/lib/commands/members/set.d.ts +11 -0
  218. package/lib/commands/members/set.js +21 -0
  219. package/lib/commands/notifications/index.d.ts +13 -0
  220. package/lib/commands/notifications/index.js +62 -0
  221. package/lib/commands/orgs/index.d.ts +11 -0
  222. package/lib/commands/orgs/index.js +27 -0
  223. package/lib/commands/orgs/open.d.ts +10 -0
  224. package/lib/commands/orgs/open.js +24 -0
  225. package/lib/commands/pg/backups/cancel.d.ts +15 -0
  226. package/lib/commands/pg/backups/cancel.js +49 -0
  227. package/lib/commands/pg/backups/capture.d.ts +15 -0
  228. package/lib/commands/pg/backups/capture.js +65 -0
  229. package/lib/commands/pg/backups/delete.d.ts +15 -0
  230. package/lib/commands/pg/backups/delete.js +38 -0
  231. package/lib/commands/pg/backups/download.d.ts +14 -0
  232. package/lib/commands/pg/backups/download.js +58 -0
  233. package/lib/commands/pg/backups/index.d.ts +20 -0
  234. package/lib/commands/pg/backups/index.js +129 -0
  235. package/lib/commands/pg/backups/info.d.ts +17 -0
  236. package/lib/commands/pg/backups/info.js +92 -0
  237. package/lib/commands/pg/backups/restore.d.ts +19 -0
  238. package/lib/commands/pg/backups/restore.js +107 -0
  239. package/lib/commands/pg/backups/schedule.d.ts +21 -0
  240. package/lib/commands/pg/backups/schedule.js +82 -0
  241. package/lib/commands/pg/backups/schedules.d.ts +10 -0
  242. package/lib/commands/pg/backups/schedules.js +31 -0
  243. package/lib/commands/pg/backups/unschedule.d.ts +13 -0
  244. package/lib/commands/pg/backups/unschedule.js +44 -0
  245. package/lib/commands/pg/backups/url.d.ts +13 -0
  246. package/lib/commands/pg/backups/url.js +41 -0
  247. package/lib/commands/pg/bloat.d.ts +13 -0
  248. package/lib/commands/pg/bloat.js +87 -0
  249. package/lib/commands/pg/blocking.d.ts +13 -0
  250. package/lib/commands/pg/blocking.js +42 -0
  251. package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
  252. package/lib/commands/pg/connection-pooling/attach.js +41 -0
  253. package/lib/commands/pg/copy.d.ts +18 -0
  254. package/lib/commands/pg/copy.js +86 -0
  255. package/lib/commands/pg/credentials/create.d.ts +14 -0
  256. package/lib/commands/pg/credentials/create.js +40 -0
  257. package/lib/commands/pg/credentials/destroy.d.ts +16 -0
  258. package/lib/commands/pg/credentials/destroy.js +48 -0
  259. package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
  260. package/lib/commands/pg/credentials/repair-default.js +39 -0
  261. package/lib/commands/pg/credentials/rotate.d.ts +16 -0
  262. package/lib/commands/pg/credentials/rotate.js +82 -0
  263. package/lib/commands/pg/credentials/url.d.ts +14 -0
  264. package/lib/commands/pg/credentials/url.js +64 -0
  265. package/lib/commands/pg/credentials.d.ts +16 -0
  266. package/lib/commands/pg/credentials.js +61 -0
  267. package/lib/commands/pg/diagnose.d.ts +18 -0
  268. package/lib/commands/pg/diagnose.js +109 -0
  269. package/lib/commands/pg/info.d.ts +14 -0
  270. package/lib/commands/pg/info.js +92 -0
  271. package/lib/commands/pg/kill.d.ts +15 -0
  272. package/lib/commands/pg/kill.js +32 -0
  273. package/lib/commands/pg/killall.d.ts +13 -0
  274. package/lib/commands/pg/killall.js +26 -0
  275. package/lib/commands/pg/links/create.d.ts +15 -0
  276. package/lib/commands/pg/links/create.js +58 -0
  277. package/lib/commands/pg/links/destroy.d.ts +16 -0
  278. package/lib/commands/pg/links/destroy.js +42 -0
  279. package/lib/commands/pg/links/index.d.ts +13 -0
  280. package/lib/commands/pg/links/index.js +59 -0
  281. package/lib/commands/pg/locks.d.ts +15 -0
  282. package/lib/commands/pg/locks.js +53 -0
  283. package/lib/commands/pg/maintenance/index.d.ts +13 -0
  284. package/lib/commands/pg/maintenance/index.js +29 -0
  285. package/lib/commands/pg/maintenance/run.d.ts +14 -0
  286. package/lib/commands/pg/maintenance/run.js +37 -0
  287. package/lib/commands/pg/maintenance/window.d.ts +15 -0
  288. package/lib/commands/pg/maintenance/window.js +41 -0
  289. package/lib/commands/pg/outliers.d.ts +19 -0
  290. package/lib/commands/pg/outliers.js +97 -0
  291. package/lib/commands/pg/promote.d.ts +14 -0
  292. package/lib/commands/pg/promote.js +169 -0
  293. package/lib/commands/pg/ps.d.ts +14 -0
  294. package/lib/commands/pg/ps.js +52 -0
  295. package/lib/commands/pg/psql.d.ts +16 -0
  296. package/lib/commands/pg/psql.js +49 -0
  297. package/lib/commands/pg/pull.d.ts +18 -0
  298. package/lib/commands/pg/pull.js +87 -0
  299. package/lib/commands/pg/push.d.ts +18 -0
  300. package/lib/commands/pg/push.js +84 -0
  301. package/lib/commands/pg/reset.d.ts +15 -0
  302. package/lib/commands/pg/reset.js +44 -0
  303. package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
  304. package/lib/commands/pg/settings/auto-explain/log-analyze.js +32 -0
  305. package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
  306. package/lib/commands/pg/settings/auto-explain/log-buffers.js +30 -0
  307. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +16 -0
  308. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +33 -0
  309. package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
  310. package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +25 -0
  311. package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
  312. package/lib/commands/pg/settings/auto-explain/log-triggers.js +30 -0
  313. package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
  314. package/lib/commands/pg/settings/auto-explain/log-verbose.js +33 -0
  315. package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
  316. package/lib/commands/pg/settings/auto-explain.js +38 -0
  317. package/lib/commands/pg/settings/index.d.ts +13 -0
  318. package/lib/commands/pg/settings/index.js +34 -0
  319. package/lib/commands/pg/settings/log-connections.d.ts +17 -0
  320. package/lib/commands/pg/settings/log-connections.js +34 -0
  321. package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
  322. package/lib/commands/pg/settings/log-lock-waits.js +31 -0
  323. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +15 -0
  324. package/lib/commands/pg/settings/log-min-duration-statement.js +33 -0
  325. package/lib/commands/pg/settings/log-statement.d.ts +12 -0
  326. package/lib/commands/pg/settings/log-statement.js +30 -0
  327. package/lib/commands/pg/settings/track-functions.d.ts +12 -0
  328. package/lib/commands/pg/settings/track-functions.js +29 -0
  329. package/lib/commands/pg/unfollow.d.ts +14 -0
  330. package/lib/commands/pg/unfollow.js +40 -0
  331. package/lib/commands/pg/upgrade.d.ts +15 -0
  332. package/lib/commands/pg/upgrade.js +58 -0
  333. package/lib/commands/pg/vacuum-stats.d.ts +13 -0
  334. package/lib/commands/pg/vacuum-stats.js +65 -0
  335. package/lib/commands/pg/wait.d.ts +15 -0
  336. package/lib/commands/pg/wait.js +79 -0
  337. package/lib/commands/pipelines/add.d.ts +4 -4
  338. package/lib/commands/pipelines/connect.d.ts +2 -2
  339. package/lib/commands/pipelines/connect.js +1 -1
  340. package/lib/commands/pipelines/create.d.ts +5 -5
  341. package/lib/commands/pipelines/destroy.d.ts +1 -1
  342. package/lib/commands/pipelines/diff.d.ts +2 -2
  343. package/lib/commands/pipelines/diff.js +1 -1
  344. package/lib/commands/pipelines/info.d.ts +1 -1
  345. package/lib/commands/pipelines/open.d.ts +1 -1
  346. package/lib/commands/pipelines/promote.d.ts +3 -3
  347. package/lib/commands/pipelines/remove.d.ts +2 -2
  348. package/lib/commands/pipelines/rename.d.ts +2 -2
  349. package/lib/commands/pipelines/setup.d.ts +3 -3
  350. package/lib/commands/pipelines/transfer.d.ts +3 -3
  351. package/lib/commands/pipelines/update.d.ts +3 -3
  352. package/lib/commands/ps/autoscale/disable.d.ts +2 -2
  353. package/lib/commands/ps/autoscale/enable.d.ts +5 -5
  354. package/lib/commands/ps/index.d.ts +15 -0
  355. package/lib/commands/ps/index.js +195 -0
  356. package/lib/commands/ps/restart.d.ts +17 -0
  357. package/lib/commands/ps/restart.js +38 -0
  358. package/lib/commands/ps/scale.d.ts +13 -0
  359. package/lib/commands/ps/scale.js +108 -0
  360. package/lib/commands/ps/stop.d.ts +17 -0
  361. package/lib/commands/ps/stop.js +33 -0
  362. package/lib/commands/ps/type.d.ts +12 -0
  363. package/lib/commands/ps/type.js +163 -0
  364. package/lib/commands/ps/wait.d.ts +4 -4
  365. package/lib/commands/rake.d.ts +4 -4
  366. package/lib/commands/redis/cli.d.ts +15 -0
  367. package/lib/commands/redis/cli.js +204 -0
  368. package/lib/commands/redis/credentials.d.ts +14 -0
  369. package/lib/commands/redis/credentials.js +32 -0
  370. package/lib/commands/redis/info.d.ts +15 -0
  371. package/lib/commands/redis/info.js +25 -0
  372. package/lib/commands/redis/keyspace-notifications.d.ts +14 -0
  373. package/lib/commands/redis/keyspace-notifications.js +47 -0
  374. package/lib/commands/redis/maintenance.d.ts +16 -0
  375. package/lib/commands/redis/maintenance.js +63 -0
  376. package/lib/commands/redis/maxmemory.d.ts +14 -0
  377. package/lib/commands/redis/maxmemory.js +40 -0
  378. package/lib/commands/redis/promote.d.ts +13 -0
  379. package/lib/commands/redis/promote.js +39 -0
  380. package/lib/commands/redis/stats-reset.d.ts +14 -0
  381. package/lib/commands/redis/stats-reset.js +36 -0
  382. package/lib/commands/redis/timeout.d.ts +14 -0
  383. package/lib/commands/redis/timeout.js +35 -0
  384. package/lib/commands/redis/upgrade.d.ts +15 -0
  385. package/lib/commands/redis/upgrade.js +37 -0
  386. package/lib/commands/redis/wait.d.ts +14 -0
  387. package/lib/commands/redis/wait.js +60 -0
  388. package/lib/commands/releases/index.d.ts +14 -0
  389. package/lib/commands/releases/index.js +124 -0
  390. package/lib/commands/releases/info.d.ts +15 -0
  391. package/lib/commands/releases/info.js +56 -0
  392. package/lib/commands/releases/output.d.ts +13 -0
  393. package/lib/commands/releases/output.js +37 -0
  394. package/lib/commands/releases/rollback.d.ts +14 -0
  395. package/lib/commands/releases/rollback.js +48 -0
  396. package/lib/commands/reviewapps/disable.d.ts +3 -3
  397. package/lib/commands/reviewapps/enable.d.ts +3 -3
  398. package/lib/commands/run/detached.d.ts +7 -8
  399. package/lib/commands/run/detached.js +16 -20
  400. package/lib/commands/run/index.d.ts +10 -11
  401. package/lib/commands/run/index.js +16 -17
  402. package/lib/commands/run/inside.d.ts +5 -7
  403. package/lib/commands/run/inside.js +10 -14
  404. package/lib/commands/sessions/destroy.d.ts +1 -1
  405. package/lib/commands/spaces/create.d.ts +22 -0
  406. package/lib/commands/spaces/create.js +73 -0
  407. package/lib/commands/spaces/destroy.d.ts +14 -0
  408. package/lib/commands/spaces/destroy.js +49 -0
  409. package/lib/commands/spaces/drains/get.d.ts +12 -0
  410. package/lib/commands/spaces/drains/get.js +27 -0
  411. package/lib/commands/spaces/drains/set.d.ts +14 -0
  412. package/lib/commands/spaces/drains/set.js +29 -0
  413. package/lib/commands/spaces/hosts.d.ts +14 -0
  414. package/lib/commands/spaces/hosts.js +37 -0
  415. package/lib/commands/spaces/index.d.ts +16 -0
  416. package/lib/commands/spaces/index.js +55 -0
  417. package/lib/commands/spaces/info.d.ts +14 -0
  418. package/lib/commands/spaces/info.js +47 -0
  419. package/lib/commands/spaces/peerings/accept.d.ts +15 -0
  420. package/lib/commands/spaces/peerings/accept.js +36 -0
  421. package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
  422. package/lib/commands/spaces/peerings/destroy.js +45 -0
  423. package/lib/commands/spaces/peerings/index.d.ts +13 -0
  424. package/lib/commands/spaces/peerings/index.js +33 -0
  425. package/lib/commands/spaces/peerings/info.d.ts +15 -0
  426. package/lib/commands/spaces/peerings/info.js +59 -0
  427. package/lib/commands/spaces/ps.d.ts +15 -0
  428. package/lib/commands/spaces/ps.js +82 -0
  429. package/lib/commands/spaces/rename.d.ts +11 -0
  430. package/lib/commands/spaces/rename.js +26 -0
  431. package/lib/commands/spaces/topology.d.ts +32 -0
  432. package/lib/commands/spaces/topology.js +89 -0
  433. package/lib/commands/spaces/transfer.d.ts +11 -0
  434. package/lib/commands/spaces/transfer.js +35 -0
  435. package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
  436. package/lib/commands/spaces/trusted-ips/add.js +43 -0
  437. package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
  438. package/lib/commands/spaces/trusted-ips/index.js +52 -0
  439. package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
  440. package/lib/commands/spaces/trusted-ips/remove.js +44 -0
  441. package/lib/commands/spaces/vpn/config.d.ts +14 -0
  442. package/lib/commands/spaces/vpn/config.js +54 -0
  443. package/lib/commands/spaces/vpn/connect.d.ts +15 -0
  444. package/lib/commands/spaces/vpn/connect.js +48 -0
  445. package/lib/commands/spaces/vpn/connections.d.ts +17 -0
  446. package/lib/commands/spaces/vpn/connections.js +57 -0
  447. package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
  448. package/lib/commands/spaces/vpn/destroy.js +38 -0
  449. package/lib/commands/spaces/vpn/info.d.ts +16 -0
  450. package/lib/commands/spaces/vpn/info.js +82 -0
  451. package/lib/commands/spaces/vpn/update.d.ts +14 -0
  452. package/lib/commands/spaces/vpn/update.js +39 -0
  453. package/lib/commands/spaces/vpn/wait.d.ts +16 -0
  454. package/lib/commands/spaces/vpn/wait.js +70 -0
  455. package/lib/commands/spaces/wait.d.ts +17 -0
  456. package/lib/commands/spaces/wait.js +89 -0
  457. package/lib/commands/status.js +4 -4
  458. package/lib/commands/teams/index.d.ts +9 -0
  459. package/lib/commands/teams/index.js +29 -0
  460. package/lib/commands/webhooks/add.d.ts +8 -8
  461. package/lib/commands/webhooks/deliveries/index.d.ts +4 -4
  462. package/lib/commands/webhooks/deliveries/info.d.ts +4 -4
  463. package/lib/commands/webhooks/events/index.d.ts +3 -3
  464. package/lib/commands/webhooks/events/info.d.ts +4 -4
  465. package/lib/commands/webhooks/index.d.ts +3 -3
  466. package/lib/commands/webhooks/info.d.ts +4 -4
  467. package/lib/commands/webhooks/remove.d.ts +4 -4
  468. package/lib/commands/webhooks/update.d.ts +9 -9
  469. package/lib/global_telemetry.js +10 -4
  470. package/lib/hooks/postrun/performance_analytics.js +5 -4
  471. package/lib/hooks/prerun/analytics.js +3 -0
  472. package/lib/lib/addons/addons_wait.d.ts +78 -0
  473. package/lib/lib/addons/addons_wait.js +56 -0
  474. package/lib/lib/addons/create_addon.d.ts +7 -0
  475. package/lib/lib/addons/create_addon.js +59 -0
  476. package/lib/lib/addons/destroy_addon.d.ts +3 -0
  477. package/lib/lib/addons/destroy_addon.js +48 -0
  478. package/lib/lib/addons/resolve.d.ts +39 -0
  479. package/lib/lib/addons/resolve.js +180 -0
  480. package/lib/lib/addons/util.d.ts +9 -0
  481. package/lib/lib/addons/util.js +72 -0
  482. package/lib/lib/apps/app-transfer.d.ts +10 -0
  483. package/lib/lib/apps/app-transfer.js +35 -0
  484. package/lib/lib/apps/error_info.d.ts +7 -0
  485. package/lib/lib/apps/error_info.js +185 -0
  486. package/lib/lib/autocomplete/base.d.ts +1 -1
  487. package/lib/lib/autocomplete/completions.d.ts +5 -1
  488. package/lib/lib/autocomplete/completions.js +6 -1
  489. package/lib/lib/certs/certificate_details.d.ts +2 -0
  490. package/lib/lib/certs/certificate_details.js +37 -0
  491. package/lib/lib/certs/display_table.d.ts +2 -0
  492. package/lib/lib/certs/display_table.js +51 -0
  493. package/lib/lib/certs/domains.d.ts +3 -0
  494. package/lib/lib/certs/domains.js +45 -0
  495. package/lib/lib/certs/flags.d.ts +7 -0
  496. package/lib/lib/certs/flags.js +42 -0
  497. package/lib/lib/certs/format_date.d.ts +1 -0
  498. package/lib/lib/certs/format_date.js +11 -0
  499. package/lib/lib/certs/get_cert_and_key.d.ts +9 -0
  500. package/lib/lib/certs/get_cert_and_key.js +11 -0
  501. package/lib/lib/ci/git.d.ts +7 -1
  502. package/lib/lib/ci/git.js +44 -1
  503. package/lib/lib/ci/interfaces/kolkrabbi.d.ts +1 -1
  504. package/lib/lib/ci/source.js +3 -3
  505. package/lib/lib/ci/test-run.js +2 -2
  506. package/lib/lib/config/quote.js +1 -1
  507. package/lib/lib/confirmCommand.d.ts +1 -0
  508. package/lib/lib/confirmCommand.js +23 -0
  509. package/lib/lib/container/debug.d.ts +2 -0
  510. package/lib/lib/container/debug.js +5 -0
  511. package/lib/lib/container/docker_helper.d.ts +24 -0
  512. package/lib/lib/container/docker_helper.js +168 -0
  513. package/lib/lib/container/helpers.d.ts +8 -0
  514. package/lib/lib/container/helpers.js +29 -0
  515. package/lib/lib/container/streamer.d.ts +1 -0
  516. package/lib/lib/container/streamer.js +31 -0
  517. package/lib/lib/domains/domains.d.ts +6 -0
  518. package/lib/lib/domains/domains.js +104 -0
  519. package/lib/lib/git/git.d.ts +3 -0
  520. package/lib/lib/git/git.js +22 -3
  521. package/lib/lib/local/run-foreman.d.ts +1 -0
  522. package/lib/lib/local/run-foreman.js +229 -1
  523. package/lib/lib/members/util.d.ts +3 -0
  524. package/lib/lib/members/util.js +25 -0
  525. package/lib/lib/members/utils.d.ts +2 -0
  526. package/lib/lib/members/utils.js +14 -0
  527. package/lib/lib/notify.d.ts +1 -0
  528. package/lib/lib/notify.js +23 -0
  529. package/lib/lib/orgs/utils.d.ts +5 -0
  530. package/lib/lib/orgs/utils.js +24 -0
  531. package/lib/lib/pg/backups.d.ts +17 -0
  532. package/lib/lib/pg/backups.js +164 -0
  533. package/lib/lib/pg/bastion.d.ts +29 -0
  534. package/lib/lib/pg/bastion.js +121 -0
  535. package/lib/lib/pg/config.d.ts +2 -0
  536. package/lib/lib/pg/config.js +13 -0
  537. package/lib/lib/pg/download.d.ts +5 -0
  538. package/lib/lib/pg/download.js +34 -0
  539. package/lib/lib/pg/fetcher.d.ts +39 -0
  540. package/lib/lib/pg/fetcher.js +137 -0
  541. package/lib/lib/pg/host.d.ts +1 -0
  542. package/lib/lib/pg/host.js +7 -0
  543. package/lib/lib/pg/psql.d.ts +48 -0
  544. package/lib/lib/pg/psql.js +252 -0
  545. package/lib/lib/pg/push_pull.d.ts +13 -0
  546. package/lib/lib/pg/push_pull.js +118 -0
  547. package/lib/lib/pg/setter.d.ts +16 -0
  548. package/lib/lib/pg/setter.js +65 -0
  549. package/lib/lib/pg/types.d.ts +230 -0
  550. package/lib/lib/pg/types.js +2 -0
  551. package/lib/lib/pg/util.d.ts +36 -0
  552. package/lib/lib/pg/util.js +183 -0
  553. package/lib/lib/redis/api.d.ts +65 -0
  554. package/lib/lib/redis/api.js +122 -0
  555. package/lib/lib/releases/output.d.ts +1 -0
  556. package/lib/lib/releases/output.js +14 -0
  557. package/lib/lib/releases/releases.d.ts +6 -0
  558. package/lib/lib/releases/releases.js +32 -0
  559. package/lib/lib/releases/status_helper.d.ts +5 -0
  560. package/lib/lib/releases/status_helper.js +25 -0
  561. package/lib/lib/run/dyno.js +2 -2
  562. package/lib/lib/run/log-displayer.d.ts +1 -1
  563. package/lib/lib/spaces/format.d.ts +4 -0
  564. package/lib/lib/spaces/format.js +60 -0
  565. package/lib/lib/spaces/hosts.d.ts +9 -0
  566. package/lib/lib/spaces/hosts.js +34 -0
  567. package/lib/lib/spaces/outbound-rules.d.ts +4 -0
  568. package/lib/lib/spaces/outbound-rules.js +78 -0
  569. package/lib/lib/spaces/parsers.d.ts +8 -0
  570. package/lib/lib/spaces/parsers.js +17 -0
  571. package/lib/lib/spaces/peering.d.ts +4 -0
  572. package/lib/lib/spaces/peering.js +53 -0
  573. package/lib/lib/spaces/spaces.d.ts +4 -0
  574. package/lib/lib/spaces/spaces.js +37 -0
  575. package/lib/lib/spaces/vpn-connections.d.ts +2 -0
  576. package/lib/lib/spaces/vpn-connections.js +22 -0
  577. package/lib/lib/teamUtils.d.ts +3 -0
  578. package/lib/lib/teamUtils.js +18 -0
  579. package/lib/lib/time.d.ts +2 -0
  580. package/lib/lib/time.js +29 -0
  581. package/lib/lib/types/app_errors.d.ts +6 -0
  582. package/lib/lib/types/app_errors.js +2 -0
  583. package/lib/lib/types/domain.d.ts +61 -0
  584. package/lib/lib/types/domain.js +5 -0
  585. package/lib/lib/types/notifications.d.ts +20 -0
  586. package/lib/lib/types/notifications.js +2 -0
  587. package/lib/lib/utils/keyValueParser.d.ts +4 -0
  588. package/lib/lib/utils/keyValueParser.js +9 -0
  589. package/lib/lib/utils/multisort.d.ts +32 -0
  590. package/lib/lib/utils/multisort.js +66 -0
  591. package/lib/lib/utils/paginator.d.ts +2 -0
  592. package/lib/lib/utils/paginator.js +29 -0
  593. package/lib/lib/utils/uuid-validate.d.ts +1 -0
  594. package/lib/lib/utils/uuid-validate.js +7 -0
  595. package/lib/user-config.js +2 -2
  596. package/oclif.manifest.json +12684 -2674
  597. package/package.json +116 -65
@@ -0,0 +1,13 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Killall 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,26 @@
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 host_1 = require("../../lib/pg/host");
7
+ class Killall extends command_1.Command {
8
+ async run() {
9
+ const { flags, args } = await this.parse(Killall);
10
+ const { app } = flags;
11
+ core_1.ux.action.start('Terminating connections for all credentials');
12
+ const database = await (0, fetcher_1.getAddon)(this.heroku, app, args.database);
13
+ await this.heroku.post(`/client/v11/databases/${database.id}/connection_reset`, { hostname: (0, host_1.default)() });
14
+ core_1.ux.action.stop();
15
+ }
16
+ }
17
+ exports.default = Killall;
18
+ Killall.topic = 'pg';
19
+ Killall.description = 'terminates all connections for all credentials';
20
+ Killall.flags = {
21
+ app: command_1.flags.app({ required: true }),
22
+ remote: command_1.flags.remote(),
23
+ };
24
+ Killall.args = {
25
+ database: core_1.Args.string(),
26
+ };
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Create extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ as: 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
+ remote: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
12
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string, 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 resolve_1 = require("../../../lib/addons/resolve");
8
+ const fetcher_1 = require("../../../lib/pg/fetcher");
9
+ const host_1 = require("../../../lib/pg/host");
10
+ const util_1 = require("../../../lib/pg/util");
11
+ class Create extends command_1.Command {
12
+ async run() {
13
+ const { flags, args } = await this.parse(Create);
14
+ const { app } = flags;
15
+ const service = async (remoteId) => {
16
+ const addon = await (0, resolve_1.addonResolver)(this.heroku, app, remoteId);
17
+ if (!addon.plan.name.match(/^heroku-(redis|postgresql)/))
18
+ throw new Error('Remote database must be heroku-redis or heroku-postgresql');
19
+ return addon;
20
+ };
21
+ const [db, target] = await Promise.all([
22
+ (0, fetcher_1.getAddon)(this.heroku, app, args.database),
23
+ service(args.remote),
24
+ ]);
25
+ if ((0, util_1.essentialPlan)(db))
26
+ throw new Error('pg:links isn’t available for Essential-tier databases.');
27
+ if ((0, util_1.essentialPlan)(target))
28
+ throw new Error('pg:links isn’t available for Essential-tier databases.');
29
+ core_1.ux.action.start(`Adding link from ${color_1.default.yellow(target.name)} to ${color_1.default.yellow(db.name)}`);
30
+ const { body: link } = await this.heroku.post(`/client/v11/databases/${db.id}/links`, {
31
+ body: {
32
+ target: target.name,
33
+ as: flags.as,
34
+ },
35
+ hostname: (0, host_1.default)(),
36
+ });
37
+ if (link.message) {
38
+ throw new Error(link.message);
39
+ }
40
+ core_1.ux.action.stop(`done, ${color_1.default.cyan(link.name)}`);
41
+ }
42
+ }
43
+ exports.default = Create;
44
+ Create.topic = 'pg';
45
+ Create.description = (0, tsheredoc_1.default)(`
46
+ create a link between data stores
47
+ Example:
48
+ heroku pg:links:create HEROKU_REDIS_RED HEROKU_POSTGRESQL_CERULEAN
49
+ `);
50
+ Create.flags = {
51
+ as: command_1.flags.string({ description: 'name of link to create' }),
52
+ app: command_1.flags.app({ required: true }),
53
+ remote: command_1.flags.remote(),
54
+ };
55
+ Create.args = {
56
+ remote: core_1.Args.string({ required: true }),
57
+ database: core_1.Args.string({ required: true }),
58
+ };
@@ -0,0 +1,16 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Destroy extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static example: string;
6
+ static flags: {
7
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ confirm: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, 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, Record<string, unknown>>;
13
+ link: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,42 @@
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 util_1 = require("../../../lib/pg/util");
8
+ const confirmCommand_1 = require("../../../lib/confirmCommand");
9
+ const tsheredoc_1 = require("tsheredoc");
10
+ const host_1 = require("../../../lib/pg/host");
11
+ class Destroy extends command_1.Command {
12
+ async run() {
13
+ const { flags, args } = await this.parse(Destroy);
14
+ const { app, confirm } = flags;
15
+ const { database, link } = args;
16
+ const db = await (0, fetcher_1.getAddon)(this.heroku, app, database);
17
+ if ((0, util_1.essentialPlan)(db))
18
+ throw new Error('pg:links isn’t available for Essential-tier databases.');
19
+ await (0, confirmCommand_1.default)(app, confirm, (0, tsheredoc_1.default)(`
20
+ Destructive action
21
+ This command will affect the database ${color_1.default.yellow(db.name)}
22
+ This will delete ${color_1.default.cyan(link)} along with the tables and views created within it.
23
+ This may have adverse effects for software written against the ${color_1.default.cyan(link)} schema.
24
+ `));
25
+ core_1.ux.action.start(`Destroying link ${color_1.default.cyan(link)} from ${color_1.default.yellow(db.name)}`);
26
+ await this.heroku.delete(`/client/v11/databases/${db.id}/links/${encodeURIComponent(link)}`, { hostname: (0, host_1.default)() });
27
+ core_1.ux.action.stop();
28
+ }
29
+ }
30
+ exports.default = Destroy;
31
+ Destroy.topic = 'pg';
32
+ Destroy.description = 'destroys a link between data stores';
33
+ Destroy.example = '$ heroku pg:links:destroy HEROKU_POSTGRESQL_CERULEAN redis-symmetrical-100';
34
+ Destroy.flags = {
35
+ app: command_1.flags.app({ required: true }),
36
+ confirm: command_1.flags.string({ char: 'c' }),
37
+ remote: command_1.flags.remote(),
38
+ };
39
+ Destroy.args = {
40
+ database: core_1.Args.string({ required: true }),
41
+ link: core_1.Args.string({ required: true }),
42
+ };
@@ -0,0 +1,13 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Index extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ 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,59 @@
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
+ class Index extends command_1.Command {
9
+ async run() {
10
+ const { flags, args } = await this.parse(Index);
11
+ const { app } = flags;
12
+ const { database } = args;
13
+ let dbs;
14
+ if (database)
15
+ dbs = await Promise.all([(0, fetcher_1.getAddon)(this.heroku, app, database)]);
16
+ else
17
+ dbs = await (0, fetcher_1.all)(this.heroku, app);
18
+ if (dbs.length === 0)
19
+ throw new Error(`No databases on ${color_1.default.app(app)}`);
20
+ dbs = await Promise.all(dbs.map(async (db) => {
21
+ const { body: links } = await this.heroku.get(`/client/v11/databases/${db.id}/links`, { hostname: (0, host_1.default)() });
22
+ db.links = links;
23
+ return db;
24
+ }));
25
+ let once;
26
+ dbs.forEach(db => {
27
+ if (once)
28
+ core_1.ux.log();
29
+ else
30
+ once = true;
31
+ core_1.ux.styledHeader(color_1.default.yellow(db.name));
32
+ if (db.links.message)
33
+ return core_1.ux.log(db.links.message);
34
+ if (db.links.length === 0)
35
+ return core_1.ux.log('No data sources are linked into this database');
36
+ db.links.forEach((link) => {
37
+ var _a, _b;
38
+ core_1.ux.log(` * ${color_1.default.cyan(link.name)}`);
39
+ const remoteAttachmentName = ((_a = link.remote) === null || _a === void 0 ? void 0 : _a.attachment_name) || '';
40
+ const remoteName = ((_b = link.remote) === null || _b === void 0 ? void 0 : _b.name) || '';
41
+ const remoteLinkText = `${color_1.default.green(remoteAttachmentName)} (${color_1.default.yellow(remoteName)})`;
42
+ core_1.ux.styledObject({
43
+ created_at: link.created_at,
44
+ remote: remoteLinkText,
45
+ });
46
+ });
47
+ });
48
+ }
49
+ }
50
+ exports.default = Index;
51
+ Index.topic = 'pg';
52
+ Index.description = 'lists all databases and information on link';
53
+ Index.flags = {
54
+ app: command_1.flags.app({ required: true }),
55
+ remote: command_1.flags.remote(),
56
+ };
57
+ Index.args = {
58
+ database: core_1.Args.string(),
59
+ };
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Locks extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ truncate: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
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 | undefined, Record<string, unknown>>;
12
+ };
13
+ run(): Promise<void>;
14
+ protected truncatedQueryString(truncate: boolean): string;
15
+ }
@@ -0,0 +1,53 @@
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 Locks extends command_1.Command {
9
+ async run() {
10
+ const { flags, args } = await this.parse(Locks);
11
+ const { app, truncate } = flags;
12
+ const db = await (0, fetcher_1.database)(this.heroku, app, args.database);
13
+ const query = (0, tsheredoc_1.default) `
14
+ SELECT
15
+ pg_stat_activity.pid,
16
+ pg_class.relname,
17
+ pg_locks.transactionid,
18
+ pg_locks.granted,
19
+ ${this.truncatedQueryString(truncate)} AS query_snippet,
20
+ age(now(), pg_stat_activity.query_start) AS "age"
21
+ FROM
22
+ pg_stat_activity,
23
+ pg_locks
24
+ LEFT OUTER JOIN pg_class
25
+ ON pg_locks.relation = pg_class.oid
26
+ WHERE
27
+ pg_stat_activity.query <> '<insufficient privilege>'
28
+ AND pg_locks.pid = pg_stat_activity.pid
29
+ AND pg_locks.mode = 'ExclusiveLock'
30
+ AND pg_stat_activity.pid <> pg_backend_pid() order by query_start;
31
+ `;
32
+ const output = await (0, psql_1.exec)(db, query);
33
+ core_1.ux.log(output);
34
+ }
35
+ truncatedQueryString(truncate) {
36
+ const column = 'pg_stat_activity.query';
37
+ if (truncate) {
38
+ return `CASE WHEN length(${column}) <= 40 THEN ${column} ELSE substr(${column}, 0, 39) || '…' END`;
39
+ }
40
+ return column;
41
+ }
42
+ }
43
+ exports.default = Locks;
44
+ Locks.topic = 'pg';
45
+ Locks.description = 'display queries with active locks';
46
+ Locks.flags = {
47
+ truncate: command_1.flags.boolean({ char: 't', description: 'truncates queries to 40 characters' }),
48
+ app: command_1.flags.app({ required: true }),
49
+ remote: command_1.flags.remote(),
50
+ };
51
+ Locks.args = {
52
+ database: core_1.Args.string(),
53
+ };
@@ -0,0 +1,13 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Index extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ 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,29 @@
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 util_1 = require("../../../lib/pg/util");
7
+ const host_1 = require("../../../lib/pg/host");
8
+ class Index extends command_1.Command {
9
+ async run() {
10
+ const { flags, args } = await this.parse(Index);
11
+ const { app } = flags;
12
+ const { database } = args;
13
+ const db = await (0, fetcher_1.getAddon)(this.heroku, app, database);
14
+ if ((0, util_1.essentialPlan)(db))
15
+ core_1.ux.error('pg:maintenance isn’t available for Essential-tier databases.');
16
+ const { body: info } = await this.heroku.get(`/client/v11/databases/${db.id}/maintenance`, { hostname: (0, host_1.default)() });
17
+ core_1.ux.log(info.message);
18
+ }
19
+ }
20
+ exports.default = Index;
21
+ Index.topic = 'pg';
22
+ Index.description = 'show current maintenance information';
23
+ Index.flags = {
24
+ app: command_1.flags.app({ required: true }),
25
+ remote: command_1.flags.remote(),
26
+ };
27
+ Index.args = {
28
+ database: core_1.Args.string(),
29
+ };
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Run extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
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 | undefined, Record<string, unknown>>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,37 @@
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 util_1 = require("../../../lib/pg/util");
8
+ const host_1 = require("../../../lib/pg/host");
9
+ class Run extends command_1.Command {
10
+ async run() {
11
+ const { flags, args } = await this.parse(Run);
12
+ const { app, force } = flags;
13
+ const { database } = args;
14
+ const db = await (0, fetcher_1.getAddon)(this.heroku, app, database);
15
+ if ((0, util_1.essentialPlan)(db))
16
+ core_1.ux.error("pg:maintenance isn't available for Essential-tier databases.");
17
+ core_1.ux.action.start(`Starting maintenance for ${color_1.default.yellow(db.name)}`);
18
+ if (!force) {
19
+ const { body: appInfo } = await this.heroku.get(`/apps/${app}`);
20
+ if (!appInfo.maintenance)
21
+ core_1.ux.error('Application must be in maintenance mode or run with --force');
22
+ }
23
+ const { body: response } = await this.heroku.post(`/client/v11/databases/${db.id}/maintenance`, { hostname: (0, host_1.default)() });
24
+ core_1.ux.action.stop(response.message || 'done');
25
+ }
26
+ }
27
+ exports.default = Run;
28
+ Run.topic = 'pg';
29
+ Run.description = 'start maintenance';
30
+ Run.flags = {
31
+ force: command_1.flags.boolean({ char: 'f' }),
32
+ app: command_1.flags.app({ required: true }),
33
+ remote: command_1.flags.remote(),
34
+ };
35
+ Run.args = {
36
+ database: core_1.Args.string(),
37
+ };
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Window extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static example: string;
6
+ static flags: {
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
+ window: import("@oclif/core/lib/interfaces/parser").Arg<string, Record<string, unknown>>;
12
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,41 @@
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 host_1 = require("../../../lib/pg/host");
7
+ const util_1 = require("../../../lib/pg/util");
8
+ const fetcher_1 = require("../../../lib/pg/fetcher");
9
+ const tsheredoc_1 = require("tsheredoc");
10
+ class Window extends command_1.Command {
11
+ async run() {
12
+ const { args, flags } = await this.parse(Window);
13
+ const { database, window } = args;
14
+ const { app } = flags;
15
+ const db = await (0, fetcher_1.getAddon)(this.heroku, app, database);
16
+ if ((0, util_1.essentialPlan)(db))
17
+ core_1.ux.error("pg:maintenance isn't available for Essential-tier databases.");
18
+ if (!window.match(/^[A-Za-z]{2,10} \d\d?:[03]0$/))
19
+ core_1.ux.error('Window must be "Day HH:MM" where MM is 00 or 30');
20
+ core_1.ux.action.start(`Setting maintenance window for ${color_1.default.yellow(db.name)} to ${color_1.default.cyan(window)}`);
21
+ const { body: response } = await this.heroku.put(`/client/v11/databases/${db.id}/maintenance_window`, {
22
+ body: { description: window }, hostname: (0, host_1.default)(),
23
+ });
24
+ core_1.ux.action.stop(response.message || 'done');
25
+ }
26
+ }
27
+ exports.default = Window;
28
+ Window.topic = 'pg';
29
+ Window.description = (0, tsheredoc_1.default)(`
30
+ Set weekly maintenance window.
31
+ All times are in UTC.
32
+ `);
33
+ Window.example = '$ heroku pg:maintenance:window "Sunday 06:00" postgres-slippery-100';
34
+ Window.flags = {
35
+ app: command_1.flags.app({ required: true }),
36
+ remote: command_1.flags.remote(),
37
+ };
38
+ Window.args = {
39
+ window: core_1.Args.string({ required: true }),
40
+ database: core_1.Args.string(),
41
+ };
@@ -0,0 +1,19 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ import { getConnectionDetails } from '../../lib/pg/util';
3
+ export default class Outliers extends Command {
4
+ static topic: string;
5
+ static description: string;
6
+ static flags: {
7
+ reset: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
+ truncate: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ num: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
10
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
11
+ remote: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
12
+ };
13
+ static args: {
14
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
15
+ };
16
+ run(): Promise<void>;
17
+ protected ensurePGStatStatement(db: ReturnType<typeof getConnectionDetails>): Promise<void>;
18
+ protected outliersQuery(version: string | undefined, limit: number, truncate: boolean): string;
19
+ }
@@ -0,0 +1,97 @@
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 Outliers extends command_1.Command {
9
+ async run() {
10
+ const { flags, args } = await this.parse(Outliers);
11
+ const { app, reset, truncate, num } = flags;
12
+ const db = await (0, fetcher_1.database)(this.heroku, app, args.database);
13
+ const version = await (0, psql_1.fetchVersion)(db);
14
+ await this.ensurePGStatStatement(db);
15
+ if (reset) {
16
+ await (0, psql_1.exec)(db, 'SELECT pg_stat_statements_reset();');
17
+ return;
18
+ }
19
+ let limit = 10;
20
+ if (num) {
21
+ if (/^(\d+)$/.exec(num)) {
22
+ limit = Number.parseInt(num, 10);
23
+ }
24
+ else {
25
+ core_1.ux.error(`Cannot parse num param value "${num}" to a number`);
26
+ }
27
+ }
28
+ const query = this.outliersQuery(version, limit, truncate);
29
+ const output = await (0, psql_1.exec)(db, query);
30
+ core_1.ux.log(output);
31
+ }
32
+ async ensurePGStatStatement(db) {
33
+ const query = (0, tsheredoc_1.default) `
34
+ SELECT exists(
35
+ SELECT 1
36
+ FROM pg_extension e
37
+ LEFT JOIN pg_namespace n ON n.oid = e.extnamespace
38
+ WHERE e.extname = 'pg_stat_statements' AND n.nspname IN ('public', 'heroku_ext')
39
+ ) AS available;
40
+ `;
41
+ const output = await (0, psql_1.exec)(db, query);
42
+ if (!output.includes('t')) {
43
+ core_1.ux.error((0, tsheredoc_1.default) `
44
+ pg_stat_statements extension need to be installed first.
45
+ You can install it by running: CREATE EXTENSION pg_stat_statements WITH SCHEMA heroku_ext;
46
+ `);
47
+ }
48
+ }
49
+ outliersQuery(version, limit, truncate) {
50
+ const truncatedQueryString = truncate ? (0, tsheredoc_1.default) `
51
+ CASE WHEN length(query) <= 40 THEN query ELSE substr(query, 0, 39) || '…' END
52
+ ` : 'query';
53
+ if (version && Number.parseInt(version, 10) >= 13) {
54
+ return (0, tsheredoc_1.default) `
55
+ SELECT
56
+ interval '1 millisecond' * total_exec_time AS total_exec_time,
57
+ to_char((total_exec_time/sum(total_exec_time) OVER()) * 100, 'FM90D0') || '%' AS prop_exec_time,
58
+ to_char(calls, 'FM999G999G999G990') AS ncalls,
59
+ interval '1 millisecond' * (blk_read_time + blk_write_time) AS sync_io_time,
60
+ ${truncatedQueryString} AS query
61
+ FROM pg_stat_statements
62
+ WHERE userid = (
63
+ SELECT usesysid FROM pg_user WHERE usename = current_user LIMIT 1
64
+ )
65
+ ORDER BY total_exec_time DESC
66
+ LIMIT ${limit};
67
+ `;
68
+ }
69
+ return (0, tsheredoc_1.default) `
70
+ SELECT
71
+ interval '1 millisecond' * total_time AS total_exec_time,
72
+ to_char((total_time/sum(total_time) OVER()) * 100, 'FM90D0') || '%' AS prop_exec_time,
73
+ to_char(calls, 'FM999G999G999G990') AS ncalls,
74
+ interval '1 millisecond' * (blk_read_time + blk_write_time) AS sync_io_time,
75
+ ${truncatedQueryString} AS query
76
+ FROM pg_stat_statements
77
+ WHERE userid = (
78
+ SELECT usesysid FROM pg_user WHERE usename = current_user LIMIT 1
79
+ )
80
+ ORDER BY total_time DESC
81
+ LIMIT ${limit};
82
+ `;
83
+ }
84
+ }
85
+ exports.default = Outliers;
86
+ Outliers.topic = 'pg';
87
+ Outliers.description = 'show 10 queries that have longest execution time in aggregate';
88
+ Outliers.flags = {
89
+ reset: command_1.flags.boolean({ description: 'resets statistics gathered by pg_stat_statements' }),
90
+ truncate: command_1.flags.boolean({ char: 't', description: 'truncate queries to 40 characters' }),
91
+ num: command_1.flags.string({ char: 'n', description: 'the number of queries to display (default: 10)' }),
92
+ app: command_1.flags.app({ required: true }),
93
+ remote: command_1.flags.remote(),
94
+ };
95
+ Outliers.args = {
96
+ database: core_1.Args.string(),
97
+ };
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Promote extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
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
+ }