heroku 11.0.0-alpha.11 → 11.0.0-alpha.13

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 (895) hide show
  1. package/README.md +17 -2
  2. package/lib/commands/access/add.d.ts +5 -5
  3. package/lib/commands/access/add.js +13 -13
  4. package/lib/commands/access/index.d.ts +2 -2
  5. package/lib/commands/access/index.js +7 -8
  6. package/lib/commands/access/remove.d.ts +1 -1
  7. package/lib/commands/access/remove.js +5 -5
  8. package/lib/commands/access/update.d.ts +5 -5
  9. package/lib/commands/access/update.js +9 -9
  10. package/lib/commands/accounts/add.d.ts +1 -1
  11. package/lib/commands/accounts/add.js +3 -2
  12. package/lib/commands/accounts/current.js +4 -5
  13. package/lib/commands/accounts/index.js +2 -1
  14. package/lib/commands/accounts/remove.d.ts +1 -1
  15. package/lib/commands/accounts/remove.js +3 -2
  16. package/lib/commands/accounts/set.d.ts +1 -1
  17. package/lib/commands/accounts/set.js +3 -2
  18. package/lib/commands/addons/attach.d.ts +6 -6
  19. package/lib/commands/addons/attach.js +14 -14
  20. package/lib/commands/addons/create.d.ts +9 -10
  21. package/lib/commands/addons/create.js +31 -29
  22. package/lib/commands/addons/destroy.d.ts +9 -9
  23. package/lib/commands/addons/destroy.js +19 -19
  24. package/lib/commands/addons/detach.d.ts +4 -4
  25. package/lib/commands/addons/detach.js +9 -9
  26. package/lib/commands/addons/docs.d.ts +5 -5
  27. package/lib/commands/addons/docs.js +9 -9
  28. package/lib/commands/addons/index.d.ts +5 -5
  29. package/lib/commands/addons/index.js +32 -30
  30. package/lib/commands/addons/info.d.ts +4 -4
  31. package/lib/commands/addons/info.js +18 -14
  32. package/lib/commands/addons/open.d.ts +26 -27
  33. package/lib/commands/addons/open.js +21 -24
  34. package/lib/commands/addons/rename.d.ts +2 -2
  35. package/lib/commands/addons/rename.js +6 -6
  36. package/lib/commands/addons/services.d.ts +1 -1
  37. package/lib/commands/addons/services.js +5 -4
  38. package/lib/commands/addons/upgrade.d.ts +10 -11
  39. package/lib/commands/addons/upgrade.js +74 -70
  40. package/lib/commands/addons/wait.d.ts +5 -5
  41. package/lib/commands/addons/wait.js +10 -10
  42. package/lib/commands/apps/create.d.ts +12 -12
  43. package/lib/commands/apps/create.js +50 -58
  44. package/lib/commands/apps/destroy.d.ts +6 -6
  45. package/lib/commands/apps/destroy.js +10 -10
  46. package/lib/commands/apps/errors.d.ts +3 -3
  47. package/lib/commands/apps/errors.js +24 -12
  48. package/lib/commands/apps/favorites/add.d.ts +1 -1
  49. package/lib/commands/apps/favorites/add.js +4 -4
  50. package/lib/commands/apps/favorites/index.d.ts +1 -1
  51. package/lib/commands/apps/favorites/index.js +4 -4
  52. package/lib/commands/apps/favorites/remove.d.ts +1 -1
  53. package/lib/commands/apps/favorites/remove.js +3 -3
  54. package/lib/commands/apps/index.d.ts +4 -4
  55. package/lib/commands/apps/index.js +21 -21
  56. package/lib/commands/apps/info.d.ts +8 -8
  57. package/lib/commands/apps/info.js +31 -31
  58. package/lib/commands/apps/join.d.ts +2 -2
  59. package/lib/commands/apps/join.js +3 -3
  60. package/lib/commands/apps/leave.d.ts +1 -1
  61. package/lib/commands/apps/leave.js +3 -3
  62. package/lib/commands/apps/lock.d.ts +2 -2
  63. package/lib/commands/apps/lock.js +5 -5
  64. package/lib/commands/apps/open.d.ts +5 -5
  65. package/lib/commands/apps/open.js +11 -9
  66. package/lib/commands/apps/rename.d.ts +6 -6
  67. package/lib/commands/apps/rename.js +13 -13
  68. package/lib/commands/apps/stacks/index.d.ts +2 -2
  69. package/lib/commands/apps/stacks/index.js +5 -6
  70. package/lib/commands/apps/stacks/set.d.ts +4 -4
  71. package/lib/commands/apps/stacks/set.js +9 -9
  72. package/lib/commands/apps/transfer.d.ts +8 -8
  73. package/lib/commands/apps/transfer.js +33 -32
  74. package/lib/commands/apps/unlock.d.ts +2 -2
  75. package/lib/commands/apps/unlock.js +3 -3
  76. package/lib/commands/auth/2fa/disable.d.ts +1 -1
  77. package/lib/commands/auth/2fa/disable.js +3 -2
  78. package/lib/commands/auth/2fa/index.d.ts +1 -1
  79. package/lib/commands/auth/2fa/index.js +4 -4
  80. package/lib/commands/auth/login.d.ts +3 -3
  81. package/lib/commands/auth/login.js +6 -6
  82. package/lib/commands/auth/logout.js +1 -0
  83. package/lib/commands/auth/token.js +4 -2
  84. package/lib/commands/authorizations/create.js +2 -1
  85. package/lib/commands/authorizations/index.js +3 -4
  86. package/lib/commands/authorizations/revoke.d.ts +2 -2
  87. package/lib/commands/authorizations/revoke.js +6 -6
  88. package/lib/commands/autocomplete/create.d.ts +29 -0
  89. package/lib/commands/autocomplete/create.js +223 -0
  90. package/lib/commands/autocomplete/doctor.d.ts +12 -0
  91. package/lib/commands/autocomplete/doctor.js +111 -0
  92. package/lib/commands/autocomplete/index.d.ts +12 -0
  93. package/lib/commands/autocomplete/index.js +65 -0
  94. package/lib/commands/autocomplete/options.d.ts +25 -0
  95. package/lib/commands/autocomplete/options.js +208 -0
  96. package/lib/commands/autocomplete/script.d.ts +10 -0
  97. package/lib/commands/autocomplete/script.js +20 -0
  98. package/lib/commands/buildpacks/index.js +2 -3
  99. package/lib/commands/buildpacks/remove.d.ts +4 -4
  100. package/lib/commands/buildpacks/remove.js +9 -8
  101. package/lib/commands/certs/add.d.ts +8 -8
  102. package/lib/commands/certs/add.js +27 -29
  103. package/lib/commands/certs/auto/disable.d.ts +2 -2
  104. package/lib/commands/certs/auto/disable.js +4 -4
  105. package/lib/commands/certs/auto/enable.d.ts +2 -2
  106. package/lib/commands/certs/auto/enable.js +8 -9
  107. package/lib/commands/certs/auto/index.d.ts +2 -2
  108. package/lib/commands/certs/auto/index.js +16 -17
  109. package/lib/commands/certs/generate.d.ts +2 -3
  110. package/lib/commands/certs/generate.js +1 -2
  111. package/lib/commands/certs/index.d.ts +1 -1
  112. package/lib/commands/certs/index.js +3 -3
  113. package/lib/commands/certs/info.d.ts +4 -4
  114. package/lib/commands/certs/info.js +6 -6
  115. package/lib/commands/certs/remove.d.ts +3 -3
  116. package/lib/commands/certs/remove.js +5 -5
  117. package/lib/commands/certs/update.d.ts +8 -8
  118. package/lib/commands/certs/update.js +19 -19
  119. package/lib/commands/ci/config/get.d.ts +5 -5
  120. package/lib/commands/ci/config/get.js +8 -8
  121. package/lib/commands/ci/config/index.d.ts +2 -2
  122. package/lib/commands/ci/config/index.js +8 -9
  123. package/lib/commands/ci/config/set.d.ts +2 -2
  124. package/lib/commands/ci/config/set.js +10 -10
  125. package/lib/commands/ci/config/unset.d.ts +3 -3
  126. package/lib/commands/ci/config/unset.js +6 -5
  127. package/lib/commands/ci/index.d.ts +2 -2
  128. package/lib/commands/ci/index.js +5 -4
  129. package/lib/commands/ci/info.js +3 -2
  130. package/lib/commands/ci/last.d.ts +1 -1
  131. package/lib/commands/ci/last.js +4 -3
  132. package/lib/commands/ci/migrate-manifest.d.ts +1 -1
  133. package/lib/commands/ci/migrate-manifest.js +4 -4
  134. package/lib/commands/ci/open.d.ts +2 -2
  135. package/lib/commands/ci/open.js +4 -3
  136. package/lib/commands/ci/rerun.d.ts +4 -4
  137. package/lib/commands/ci/rerun.js +9 -8
  138. package/lib/commands/ci/run.d.ts +1 -1
  139. package/lib/commands/ci/run.js +9 -7
  140. package/lib/commands/clients/create.js +4 -3
  141. package/lib/commands/clients/destroy.d.ts +1 -1
  142. package/lib/commands/clients/destroy.js +4 -4
  143. package/lib/commands/clients/index.js +5 -4
  144. package/lib/commands/clients/info.d.ts +3 -3
  145. package/lib/commands/clients/info.js +5 -5
  146. package/lib/commands/clients/rotate.d.ts +3 -3
  147. package/lib/commands/clients/rotate.js +5 -6
  148. package/lib/commands/clients/update.d.ts +3 -3
  149. package/lib/commands/clients/update.js +5 -5
  150. package/lib/commands/config/edit.d.ts +5 -5
  151. package/lib/commands/config/edit.js +21 -22
  152. package/lib/commands/config/get.d.ts +5 -4
  153. package/lib/commands/config/get.js +34 -13
  154. package/lib/commands/config/index.d.ts +1 -1
  155. package/lib/commands/config/index.js +4 -5
  156. package/lib/commands/config/set.d.ts +2 -2
  157. package/lib/commands/config/set.js +17 -18
  158. package/lib/commands/config/unset.d.ts +1 -1
  159. package/lib/commands/config/unset.js +12 -11
  160. package/lib/commands/container/pull.d.ts +4 -4
  161. package/lib/commands/container/pull.js +12 -12
  162. package/lib/commands/container/push.d.ts +6 -6
  163. package/lib/commands/container/push.js +18 -18
  164. package/lib/commands/container/release.d.ts +4 -4
  165. package/lib/commands/container/release.js +16 -15
  166. package/lib/commands/container/rm.d.ts +4 -4
  167. package/lib/commands/container/rm.js +10 -9
  168. package/lib/commands/container/run.d.ts +5 -5
  169. package/lib/commands/container/run.js +14 -14
  170. package/lib/commands/dashboard.d.ts +1 -1
  171. package/lib/commands/dashboard.js +19 -20
  172. package/lib/commands/domains/add.d.ts +5 -5
  173. package/lib/commands/domains/add.js +17 -18
  174. package/lib/commands/domains/clear.js +2 -2
  175. package/lib/commands/domains/index.d.ts +5 -3
  176. package/lib/commands/domains/index.js +99 -69
  177. package/lib/commands/domains/info.js +2 -1
  178. package/lib/commands/domains/remove.d.ts +3 -3
  179. package/lib/commands/domains/remove.js +5 -5
  180. package/lib/commands/domains/update.d.ts +4 -4
  181. package/lib/commands/domains/update.js +8 -8
  182. package/lib/commands/drains/add.d.ts +3 -3
  183. package/lib/commands/drains/add.js +7 -7
  184. package/lib/commands/drains/index.d.ts +1 -1
  185. package/lib/commands/drains/index.js +5 -6
  186. package/lib/commands/drains/remove.d.ts +4 -4
  187. package/lib/commands/drains/remove.js +6 -6
  188. package/lib/commands/features/disable.d.ts +3 -3
  189. package/lib/commands/features/disable.js +8 -8
  190. package/lib/commands/features/enable.d.ts +3 -3
  191. package/lib/commands/features/enable.js +8 -8
  192. package/lib/commands/features/index.js +2 -3
  193. package/lib/commands/features/info.d.ts +4 -4
  194. package/lib/commands/features/info.js +10 -9
  195. package/lib/commands/git/clone.d.ts +2 -2
  196. package/lib/commands/git/clone.js +7 -6
  197. package/lib/commands/git/remote.js +6 -5
  198. package/lib/commands/keys/add.d.ts +3 -4
  199. package/lib/commands/keys/add.js +20 -18
  200. package/lib/commands/keys/index.js +4 -5
  201. package/lib/commands/keys/remove.d.ts +2 -2
  202. package/lib/commands/keys/remove.js +8 -8
  203. package/lib/commands/labs/disable.d.ts +3 -3
  204. package/lib/commands/labs/disable.js +13 -13
  205. package/lib/commands/labs/enable.d.ts +4 -4
  206. package/lib/commands/labs/enable.js +11 -11
  207. package/lib/commands/labs/index.d.ts +2 -2
  208. package/lib/commands/labs/index.js +6 -7
  209. package/lib/commands/labs/info.d.ts +3 -3
  210. package/lib/commands/labs/info.js +8 -7
  211. package/lib/commands/local/index.d.ts +4 -4
  212. package/lib/commands/local/index.js +21 -21
  213. package/lib/commands/local/run.d.ts +1 -1
  214. package/lib/commands/local/run.js +4 -3
  215. package/lib/commands/logs.d.ts +1 -1
  216. package/lib/commands/logs.js +22 -21
  217. package/lib/commands/maintenance/off.d.ts +1 -1
  218. package/lib/commands/maintenance/off.js +2 -2
  219. package/lib/commands/maintenance/on.d.ts +1 -1
  220. package/lib/commands/maintenance/on.js +2 -2
  221. package/lib/commands/members/index.d.ts +3 -3
  222. package/lib/commands/members/index.js +18 -13
  223. package/lib/commands/members/remove.d.ts +1 -1
  224. package/lib/commands/members/remove.js +6 -6
  225. package/lib/commands/notifications/index.d.ts +3 -3
  226. package/lib/commands/notifications/index.js +9 -10
  227. package/lib/commands/orgs/open.js +2 -2
  228. package/lib/commands/pg/backups/cancel.d.ts +13 -0
  229. package/lib/commands/pg/backups/cancel.js +43 -0
  230. package/lib/commands/pg/backups/capture.d.ts +15 -0
  231. package/lib/commands/pg/backups/capture.js +62 -0
  232. package/lib/commands/pg/backups/delete.d.ts +15 -0
  233. package/lib/commands/pg/backups/delete.js +34 -0
  234. package/lib/commands/pg/backups/download.d.ts +14 -0
  235. package/lib/commands/pg/backups/download.js +54 -0
  236. package/lib/commands/pg/backups/index.d.ts +20 -0
  237. package/lib/commands/pg/backups/index.js +121 -0
  238. package/lib/commands/pg/backups/info.d.ts +17 -0
  239. package/lib/commands/pg/backups/info.js +86 -0
  240. package/lib/commands/pg/backups/restore.d.ts +20 -0
  241. package/lib/commands/pg/backups/restore.js +134 -0
  242. package/lib/commands/pg/backups/schedule.d.ts +21 -0
  243. package/lib/commands/pg/backups/schedule.js +69 -0
  244. package/lib/commands/pg/backups/schedules.d.ts +10 -0
  245. package/lib/commands/pg/backups/schedules.js +27 -0
  246. package/lib/commands/pg/backups/unschedule.d.ts +13 -0
  247. package/lib/commands/pg/backups/unschedule.js +42 -0
  248. package/lib/commands/pg/backups/url.d.ts +13 -0
  249. package/lib/commands/pg/backups/url.js +37 -0
  250. package/lib/commands/pg/bloat.d.ts +13 -0
  251. package/lib/{oldCommands → commands}/pg/bloat.js +23 -30
  252. package/lib/commands/pg/blocking.d.ts +13 -0
  253. package/lib/commands/pg/blocking.js +42 -0
  254. package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
  255. package/lib/commands/pg/connection-pooling/attach.js +38 -0
  256. package/lib/commands/pg/copy.d.ts +18 -0
  257. package/lib/commands/pg/copy.js +83 -0
  258. package/lib/commands/pg/credentials/create.d.ts +15 -0
  259. package/lib/commands/pg/credentials/create.js +39 -0
  260. package/lib/commands/pg/credentials/destroy.d.ts +16 -0
  261. package/lib/commands/pg/credentials/destroy.js +45 -0
  262. package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
  263. package/lib/commands/pg/credentials/repair-default.js +38 -0
  264. package/lib/commands/pg/credentials/rotate.d.ts +17 -0
  265. package/lib/commands/pg/credentials/rotate.js +79 -0
  266. package/lib/commands/pg/credentials/url.d.ts +14 -0
  267. package/lib/commands/pg/credentials/url.js +59 -0
  268. package/lib/commands/pg/credentials.d.ts +16 -0
  269. package/lib/commands/pg/credentials.js +61 -0
  270. package/lib/commands/pg/diagnose.d.ts +18 -0
  271. package/lib/commands/pg/diagnose.js +106 -0
  272. package/lib/commands/pg/info.d.ts +14 -0
  273. package/lib/commands/pg/info.js +91 -0
  274. package/lib/commands/pg/kill.d.ts +15 -0
  275. package/lib/commands/pg/kill.js +32 -0
  276. package/lib/commands/pg/killall.d.ts +13 -0
  277. package/lib/commands/pg/killall.js +24 -0
  278. package/lib/commands/pg/links/create.d.ts +16 -0
  279. package/lib/commands/pg/links/create.js +57 -0
  280. package/lib/commands/pg/links/destroy.d.ts +16 -0
  281. package/lib/commands/pg/links/destroy.js +40 -0
  282. package/lib/commands/pg/links/index.d.ts +13 -0
  283. package/lib/commands/pg/links/index.js +62 -0
  284. package/lib/commands/pg/locks.d.ts +15 -0
  285. package/lib/commands/pg/locks.js +53 -0
  286. package/lib/commands/pg/maintenance/index.d.ts +13 -0
  287. package/lib/commands/pg/maintenance/index.js +27 -0
  288. package/lib/commands/pg/maintenance/run.d.ts +14 -0
  289. package/lib/commands/pg/maintenance/run.js +34 -0
  290. package/lib/commands/pg/maintenance/window.d.ts +15 -0
  291. package/lib/commands/pg/maintenance/window.js +41 -0
  292. package/lib/commands/pg/outliers.d.ts +19 -0
  293. package/lib/commands/pg/outliers.js +100 -0
  294. package/lib/commands/pg/promote.d.ts +14 -0
  295. package/lib/commands/pg/promote.js +167 -0
  296. package/lib/commands/pg/ps.d.ts +14 -0
  297. package/lib/commands/pg/ps.js +52 -0
  298. package/lib/commands/pg/psql.d.ts +16 -0
  299. package/lib/commands/pg/psql.js +47 -0
  300. package/lib/commands/pg/pull.d.ts +18 -0
  301. package/lib/commands/pg/pull.js +87 -0
  302. package/lib/commands/pg/push.d.ts +18 -0
  303. package/lib/commands/pg/push.js +83 -0
  304. package/lib/commands/pg/reset.d.ts +15 -0
  305. package/lib/commands/pg/reset.js +43 -0
  306. package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
  307. package/lib/commands/pg/settings/auto-explain/log-analyze.js +28 -0
  308. package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
  309. package/lib/commands/pg/settings/auto-explain/log-buffers.js +26 -0
  310. package/lib/commands/pg/settings/auto-explain/log-format.d.ts +12 -0
  311. package/lib/commands/pg/settings/auto-explain/log-format.js +22 -0
  312. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +13 -0
  313. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +29 -0
  314. package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
  315. package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +20 -0
  316. package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
  317. package/lib/commands/pg/settings/auto-explain/log-triggers.js +26 -0
  318. package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
  319. package/lib/commands/pg/settings/auto-explain/log-verbose.js +29 -0
  320. package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
  321. package/lib/commands/pg/settings/auto-explain.js +34 -0
  322. package/lib/commands/pg/settings/data-connector-details-logs.d.ts +17 -0
  323. package/lib/commands/pg/settings/data-connector-details-logs.js +30 -0
  324. package/lib/commands/pg/settings/index.d.ts +13 -0
  325. package/lib/commands/pg/settings/index.js +33 -0
  326. package/lib/commands/pg/settings/log-connections.d.ts +17 -0
  327. package/lib/commands/pg/settings/log-connections.js +30 -0
  328. package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
  329. package/lib/commands/pg/settings/log-lock-waits.js +27 -0
  330. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +12 -0
  331. package/lib/commands/pg/settings/log-min-duration-statement.js +29 -0
  332. package/lib/commands/pg/settings/log-min-error-statement.d.ts +12 -0
  333. package/lib/commands/pg/settings/log-min-error-statement.js +23 -0
  334. package/lib/commands/pg/settings/log-statement.d.ts +12 -0
  335. package/lib/commands/pg/settings/log-statement.js +26 -0
  336. package/lib/commands/pg/settings/track-functions.d.ts +12 -0
  337. package/lib/commands/pg/settings/track-functions.js +25 -0
  338. package/lib/commands/pg/unfollow.d.ts +14 -0
  339. package/lib/commands/pg/unfollow.js +38 -0
  340. package/lib/commands/pg/upgrade/cancel.d.ts +13 -0
  341. package/lib/commands/pg/upgrade/cancel.js +50 -0
  342. package/lib/commands/pg/upgrade/dryrun.d.ts +14 -0
  343. package/lib/commands/pg/upgrade/dryrun.js +50 -0
  344. package/lib/commands/pg/upgrade/index.d.ts +15 -0
  345. package/lib/commands/pg/upgrade/index.js +73 -0
  346. package/lib/commands/pg/upgrade/prepare.d.ts +14 -0
  347. package/lib/commands/pg/upgrade/prepare.js +51 -0
  348. package/lib/commands/pg/upgrade/run.d.ts +16 -0
  349. package/lib/commands/pg/upgrade/run.js +95 -0
  350. package/lib/commands/pg/upgrade/wait.d.ts +16 -0
  351. package/lib/commands/pg/upgrade/wait.js +105 -0
  352. package/lib/commands/pg/vacuum-stats.d.ts +13 -0
  353. package/lib/{oldCommands → commands}/pg/vacuum-stats.js +25 -29
  354. package/lib/commands/pg/wait.d.ts +15 -0
  355. package/lib/commands/pg/wait.js +79 -0
  356. package/lib/commands/pipelines/add.d.ts +3 -3
  357. package/lib/commands/pipelines/add.js +13 -13
  358. package/lib/commands/pipelines/connect.js +2 -1
  359. package/lib/commands/pipelines/create.d.ts +3 -3
  360. package/lib/commands/pipelines/create.js +20 -20
  361. package/lib/commands/pipelines/destroy.d.ts +2 -2
  362. package/lib/commands/pipelines/destroy.js +5 -5
  363. package/lib/commands/pipelines/diff.d.ts +3 -3
  364. package/lib/commands/pipelines/diff.js +12 -13
  365. package/lib/commands/pipelines/index.js +3 -3
  366. package/lib/commands/pipelines/info.d.ts +3 -3
  367. package/lib/commands/pipelines/info.js +10 -9
  368. package/lib/commands/pipelines/open.d.ts +9 -0
  369. package/lib/commands/pipelines/open.js +19 -0
  370. package/lib/commands/pipelines/promote.d.ts +12 -0
  371. package/lib/commands/pipelines/promote.js +209 -0
  372. package/lib/commands/pipelines/remove.d.ts +10 -0
  373. package/lib/commands/pipelines/remove.js +20 -0
  374. package/lib/commands/pipelines/rename.d.ts +10 -0
  375. package/lib/commands/pipelines/rename.js +34 -0
  376. package/lib/commands/pipelines/setup.d.ts +16 -0
  377. package/lib/commands/pipelines/setup.js +88 -0
  378. package/lib/commands/pipelines/transfer.d.ts +13 -0
  379. package/lib/commands/pipelines/transfer.js +60 -0
  380. package/lib/commands/pipelines/update.d.ts +11 -0
  381. package/lib/commands/pipelines/update.js +29 -0
  382. package/lib/commands/prompt.d.ts +1 -1
  383. package/lib/commands/prompt.js +4 -3
  384. package/lib/commands/ps/autoscale/disable.d.ts +10 -0
  385. package/lib/commands/ps/autoscale/disable.js +33 -0
  386. package/lib/commands/ps/autoscale/enable.d.ts +14 -0
  387. package/lib/commands/ps/autoscale/enable.js +84 -0
  388. package/lib/commands/ps/index.d.ts +15 -0
  389. package/lib/commands/ps/index.js +199 -0
  390. package/lib/commands/ps/restart.d.ts +18 -0
  391. package/lib/commands/ps/restart.js +68 -0
  392. package/lib/commands/ps/scale.d.ts +13 -0
  393. package/lib/commands/ps/scale.js +81 -0
  394. package/lib/commands/ps/stop.d.ts +18 -0
  395. package/lib/commands/ps/stop.js +62 -0
  396. package/lib/commands/ps/type.d.ts +12 -0
  397. package/lib/commands/ps/type.js +168 -0
  398. package/lib/commands/ps/wait.d.ts +13 -0
  399. package/lib/commands/ps/wait.js +73 -0
  400. package/lib/commands/regions.d.ts +2 -2
  401. package/lib/commands/regions.js +6 -5
  402. package/lib/commands/releases/index.d.ts +14 -0
  403. package/lib/commands/releases/index.js +155 -0
  404. package/lib/commands/releases/info.d.ts +15 -0
  405. package/lib/commands/releases/info.js +75 -0
  406. package/lib/commands/releases/output.d.ts +13 -0
  407. package/lib/commands/releases/output.js +33 -0
  408. package/lib/commands/releases/retry.d.ts +11 -0
  409. package/lib/commands/releases/retry.js +46 -0
  410. package/lib/commands/releases/rollback.d.ts +14 -0
  411. package/lib/commands/releases/rollback.js +54 -0
  412. package/lib/commands/repl.d.ts +1 -1
  413. package/lib/commands/repl.js +3 -2
  414. package/lib/commands/reviewapps/disable.d.ts +3 -3
  415. package/lib/commands/reviewapps/disable.js +11 -10
  416. package/lib/commands/reviewapps/enable.d.ts +2 -2
  417. package/lib/commands/reviewapps/enable.js +9 -8
  418. package/lib/commands/run/detached.d.ts +16 -0
  419. package/lib/commands/run/detached.js +54 -0
  420. package/lib/commands/run/index.d.ts +19 -0
  421. package/lib/commands/run/index.js +69 -0
  422. package/lib/commands/run/inside.d.ts +18 -0
  423. package/lib/commands/run/inside.js +77 -0
  424. package/lib/commands/sessions/destroy.d.ts +1 -1
  425. package/lib/commands/sessions/destroy.js +4 -4
  426. package/lib/commands/sessions/index.js +2 -3
  427. package/lib/commands/spaces/create.d.ts +23 -0
  428. package/lib/commands/spaces/create.js +87 -0
  429. package/lib/commands/spaces/destroy.d.ts +14 -0
  430. package/lib/commands/spaces/destroy.js +61 -0
  431. package/lib/commands/spaces/drains/get.d.ts +11 -0
  432. package/lib/commands/spaces/drains/get.js +23 -0
  433. package/lib/commands/spaces/drains/set.d.ts +13 -0
  434. package/lib/commands/spaces/drains/set.js +25 -0
  435. package/lib/commands/spaces/hosts.d.ts +14 -0
  436. package/lib/commands/spaces/hosts.js +35 -0
  437. package/lib/commands/spaces/index.d.ts +16 -0
  438. package/lib/commands/spaces/index.js +65 -0
  439. package/lib/commands/spaces/info.d.ts +14 -0
  440. package/lib/commands/spaces/info.js +48 -0
  441. package/lib/commands/spaces/peerings/accept.d.ts +15 -0
  442. package/lib/commands/spaces/peerings/accept.js +33 -0
  443. package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
  444. package/lib/commands/spaces/peerings/destroy.js +43 -0
  445. package/lib/commands/spaces/peerings/index.d.ts +13 -0
  446. package/lib/commands/spaces/peerings/index.js +31 -0
  447. package/lib/commands/spaces/peerings/info.d.ts +15 -0
  448. package/lib/{oldCommands → commands}/spaces/peerings/info.js +32 -40
  449. package/lib/commands/spaces/ps.d.ts +15 -0
  450. package/lib/commands/spaces/ps.js +77 -0
  451. package/lib/commands/spaces/rename.d.ts +11 -0
  452. package/lib/commands/spaces/rename.js +24 -0
  453. package/lib/commands/spaces/topology.d.ts +18 -0
  454. package/lib/commands/spaces/topology.js +87 -0
  455. package/lib/commands/spaces/transfer.d.ts +11 -0
  456. package/lib/commands/spaces/transfer.js +33 -0
  457. package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
  458. package/lib/commands/spaces/trusted-ips/add.js +49 -0
  459. package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
  460. package/lib/commands/spaces/trusted-ips/index.js +59 -0
  461. package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
  462. package/lib/commands/spaces/trusted-ips/remove.js +51 -0
  463. package/lib/commands/spaces/vpn/config.d.ts +14 -0
  464. package/lib/commands/spaces/vpn/config.js +53 -0
  465. package/lib/commands/spaces/vpn/connect.d.ts +15 -0
  466. package/lib/commands/spaces/vpn/connect.js +46 -0
  467. package/lib/commands/spaces/vpn/connections.d.ts +17 -0
  468. package/lib/commands/spaces/vpn/connections.js +55 -0
  469. package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
  470. package/lib/commands/spaces/vpn/destroy.js +36 -0
  471. package/lib/commands/spaces/vpn/info.d.ts +16 -0
  472. package/lib/commands/spaces/vpn/info.js +85 -0
  473. package/lib/commands/spaces/vpn/update.d.ts +14 -0
  474. package/lib/commands/spaces/vpn/update.js +36 -0
  475. package/lib/commands/spaces/vpn/wait.d.ts +16 -0
  476. package/lib/commands/spaces/vpn/wait.js +69 -0
  477. package/lib/commands/spaces/wait.d.ts +17 -0
  478. package/lib/commands/spaces/wait.js +87 -0
  479. package/lib/commands/status.js +14 -13
  480. package/lib/commands/teams/index.d.ts +1 -1
  481. package/lib/commands/teams/index.js +4 -5
  482. package/lib/commands/telemetry/add.d.ts +6 -5
  483. package/lib/commands/telemetry/add.js +43 -18
  484. package/lib/commands/telemetry/index.d.ts +4 -4
  485. package/lib/commands/telemetry/index.js +19 -17
  486. package/lib/commands/telemetry/info.d.ts +2 -2
  487. package/lib/commands/telemetry/info.js +5 -4
  488. package/lib/commands/telemetry/update.d.ts +3 -3
  489. package/lib/commands/telemetry/update.js +8 -9
  490. package/lib/commands/usage/addons.d.ts +2 -2
  491. package/lib/commands/usage/addons.js +17 -18
  492. package/lib/commands/webhooks/add.d.ts +16 -0
  493. package/lib/commands/webhooks/add.js +43 -0
  494. package/lib/commands/webhooks/deliveries/index.d.ts +12 -0
  495. package/lib/commands/webhooks/deliveries/index.js +75 -0
  496. package/lib/commands/webhooks/deliveries/info.d.ts +14 -0
  497. package/lib/commands/webhooks/deliveries/info.js +40 -0
  498. package/lib/commands/webhooks/index.d.ts +11 -0
  499. package/lib/commands/webhooks/index.js +42 -0
  500. package/lib/commands/webhooks/info.d.ts +14 -0
  501. package/lib/commands/webhooks/info.js +29 -0
  502. package/lib/commands/webhooks/remove.d.ts +14 -0
  503. package/lib/commands/webhooks/remove.js +24 -0
  504. package/lib/commands/webhooks/update.d.ts +19 -0
  505. package/lib/commands/webhooks/update.js +36 -0
  506. package/lib/global_telemetry.d.ts +2 -2
  507. package/lib/global_telemetry.js +34 -36
  508. package/lib/lib/addons/addons_wait.d.ts +1 -1
  509. package/lib/lib/addons/addons_wait.js +2 -2
  510. package/lib/lib/addons/create_addon.d.ts +5 -3
  511. package/lib/lib/addons/create_addon.js +12 -9
  512. package/lib/lib/addons/destroy_addon.js +17 -9
  513. package/lib/lib/addons/resolve.d.ts +10 -11
  514. package/lib/lib/addons/resolve.js +19 -18
  515. package/lib/lib/addons/util.d.ts +2 -2
  516. package/lib/lib/addons/util.js +22 -16
  517. package/lib/lib/api.d.ts +1 -1
  518. package/lib/lib/api.js +19 -23
  519. package/lib/lib/apps/app-transfer.d.ts +3 -3
  520. package/lib/lib/apps/app-transfer.js +11 -11
  521. package/lib/lib/autocomplete/base.d.ts +11 -1
  522. package/lib/lib/autocomplete/base.js +33 -49
  523. package/lib/lib/autocomplete/cache.js +9 -7
  524. package/lib/lib/autocomplete/completions.d.ts +41 -1
  525. package/lib/lib/autocomplete/completions.js +258 -290
  526. package/lib/lib/buildpacks/buildpacks.d.ts +11 -11
  527. package/lib/lib/buildpacks/buildpacks.js +71 -71
  528. package/lib/lib/certs/certificate_details.js +3 -4
  529. package/lib/lib/certs/flags.d.ts +2 -2
  530. package/lib/lib/certs/flags.js +5 -8
  531. package/lib/lib/certs/get_cert_and_key.js +2 -2
  532. package/lib/lib/ci/git.d.ts +12 -2
  533. package/lib/lib/ci/git.js +20 -6
  534. package/lib/lib/ci/pipelines.d.ts +5 -5
  535. package/lib/lib/ci/pipelines.js +17 -17
  536. package/lib/lib/ci/source.d.ts +8 -0
  537. package/lib/lib/ci/source.js +22 -10
  538. package/lib/lib/ci/test-run.js +18 -15
  539. package/lib/lib/config/quote.js +4 -4
  540. package/lib/lib/config/util.d.ts +3 -0
  541. package/lib/lib/config/util.js +5 -0
  542. package/lib/lib/confirmCommand.js +6 -7
  543. package/lib/lib/container/docker_helper.d.ts +12 -12
  544. package/lib/lib/container/docker_helper.js +71 -74
  545. package/lib/lib/container/helpers.js +2 -2
  546. package/lib/lib/container/streamer.js +4 -4
  547. package/lib/lib/data/baseCommand.d.ts +4 -0
  548. package/lib/lib/data/baseCommand.js +15 -0
  549. package/lib/lib/data/createPool.d.ts +4 -0
  550. package/lib/lib/data/createPool.js +6 -0
  551. package/lib/lib/data/credentialUtils.d.ts +3 -0
  552. package/lib/lib/data/credentialUtils.js +23 -0
  553. package/lib/lib/data/displayQuota.d.ts +19 -0
  554. package/lib/lib/data/displayQuota.js +59 -0
  555. package/lib/lib/data/parseProvisionOpts.d.ts +15 -0
  556. package/lib/lib/data/parseProvisionOpts.js +31 -0
  557. package/lib/lib/data/types.d.ts +181 -0
  558. package/lib/lib/data/types.js +3 -0
  559. package/lib/lib/data-scrubber/patterns.d.ts +4 -0
  560. package/lib/lib/data-scrubber/patterns.js +13 -0
  561. package/lib/lib/data-scrubber/presets.d.ts +64 -0
  562. package/lib/lib/data-scrubber/presets.js +112 -0
  563. package/lib/lib/data-scrubber/scrubber.d.ts +131 -0
  564. package/lib/lib/data-scrubber/scrubber.js +256 -0
  565. package/lib/lib/data-scrubber/types.d.ts +169 -0
  566. package/lib/lib/domains/domains.js +10 -10
  567. package/lib/lib/domains/wait-for-domain.js +2 -3
  568. package/lib/lib/local/env-file-validator.js +2 -2
  569. package/lib/lib/local/fork-foreman.js +3 -2
  570. package/lib/lib/members/util.js +7 -7
  571. package/lib/lib/orgs/utils.js +2 -3
  572. package/lib/lib/pg/backups.d.ts +17 -1
  573. package/lib/lib/pg/backups.js +132 -156
  574. package/lib/lib/pg/download.js +7 -7
  575. package/lib/lib/pg/fetcher.d.ts +3 -1
  576. package/lib/lib/pg/fetcher.js +3 -162
  577. package/lib/lib/pg/psql.d.ts +17 -1
  578. package/lib/lib/pg/psql.js +59 -269
  579. package/lib/lib/pg/push_pull.d.ts +12 -0
  580. package/lib/lib/pg/push_pull.js +97 -119
  581. package/lib/lib/pg/setter.d.ts +16 -1
  582. package/lib/lib/pg/setter.js +61 -73
  583. package/lib/lib/pg/types.d.ts +10 -33
  584. package/lib/lib/pg/util.d.ts +8 -1
  585. package/lib/lib/pg/util.js +102 -211
  586. package/lib/lib/pipelines/disambiguate.js +9 -11
  587. package/lib/lib/pipelines/ownership.d.ts +1 -1
  588. package/lib/lib/pipelines/ownership.js +6 -12
  589. package/lib/lib/pipelines/render-pipeline.d.ts +2 -2
  590. package/lib/lib/pipelines/render-pipeline.js +10 -9
  591. package/lib/lib/pipelines/setup/create-apps.js +7 -9
  592. package/lib/lib/pipelines/setup/get-ci-settings.js +2 -2
  593. package/lib/lib/pipelines/setup/get-github-token.js +1 -3
  594. package/lib/lib/pipelines/setup/get-name-and-repo.js +27 -22
  595. package/lib/lib/pipelines/setup/get-settings.js +12 -12
  596. package/lib/lib/pipelines/setup/poll-app-setups.js +3 -5
  597. package/lib/lib/pipelines/setup/setup-pipeline.js +1 -3
  598. package/lib/lib/pipelines/setup/validate.d.ts +1 -1
  599. package/lib/lib/pipelines/setup/validate.js +2 -2
  600. package/lib/lib/pipelines/stages.d.ts +2 -2
  601. package/lib/lib/pipelines/stages.js +4 -4
  602. package/lib/lib/redis/api.d.ts +22 -22
  603. package/lib/lib/redis/api.js +62 -67
  604. package/lib/lib/releases/output.js +1 -1
  605. package/lib/lib/releases/status_helper.d.ts +1 -1
  606. package/lib/lib/releases/status_helper.js +16 -8
  607. package/lib/lib/run/colorize.js +73 -40
  608. package/lib/lib/run/dyno.d.ts +22 -30
  609. package/lib/lib/run/dyno.js +184 -180
  610. package/lib/lib/run/helpers.d.ts +25 -0
  611. package/lib/lib/run/helpers.js +119 -3
  612. package/lib/lib/run/log-displayer.d.ts +3 -3
  613. package/lib/lib/run/log-displayer.js +21 -21
  614. package/lib/lib/spaces/format.js +36 -23
  615. package/lib/lib/spaces/hosts.d.ts +9 -1
  616. package/lib/lib/spaces/hosts.js +28 -41
  617. package/lib/lib/spaces/peering.d.ts +4 -1
  618. package/lib/lib/spaces/peering.js +45 -52
  619. package/lib/lib/spaces/spaces.d.ts +6 -1
  620. package/lib/lib/spaces/spaces.js +30 -39
  621. package/lib/lib/spaces/vpn-connections.js +16 -16
  622. package/lib/lib/telemetry/util.d.ts +1 -1
  623. package/lib/lib/telemetry/util.js +3 -3
  624. package/lib/lib/types/completion.d.ts +15 -0
  625. package/lib/lib/utils/multisort.d.ts +4 -7
  626. package/lib/lib/utils/multisort.js +8 -32
  627. package/lib/lib/utils/packageParser.js +2 -2
  628. package/lib/lib/utils/uuid-validate.js +1 -3
  629. package/lib/lib/webhooks/base.d.ts +2 -2
  630. package/lib/lib/webhooks/base.js +3 -3
  631. package/lib/nls-data.d.ts +10 -0
  632. package/lib/nls-data.js +10 -0
  633. package/lib/nls.d.ts +1 -1
  634. package/lib/nls.js +1 -1
  635. package/npm-shrinkwrap.json +17653 -18259
  636. package/oclif.manifest.json +9918 -3293
  637. package/package.json +26 -237
  638. package/lib/lib/pg/bastion.js +0 -137
  639. package/lib/lib/pg/config.d.ts +0 -2
  640. package/lib/lib/pg/config.js +0 -9
  641. package/lib/lib/pg/host.d.ts +0 -1
  642. package/lib/lib/pg/host.js +0 -3
  643. package/lib/lib/spaces/outbound-rules.js +0 -85
  644. package/lib/oldCommands/autocomplete/create.d.ts +0 -1
  645. package/lib/oldCommands/autocomplete/create.js +0 -254
  646. package/lib/oldCommands/autocomplete/doctor.d.ts +0 -1
  647. package/lib/oldCommands/autocomplete/doctor.js +0 -110
  648. package/lib/oldCommands/autocomplete/index.d.ts +0 -1
  649. package/lib/oldCommands/autocomplete/index.js +0 -80
  650. package/lib/oldCommands/autocomplete/options.d.ts +0 -1
  651. package/lib/oldCommands/autocomplete/options.js +0 -240
  652. package/lib/oldCommands/autocomplete/script.d.ts +0 -1
  653. package/lib/oldCommands/autocomplete/script.js +0 -35
  654. package/lib/oldCommands/pg/backups/cancel.d.ts +0 -1
  655. package/lib/oldCommands/pg/backups/cancel.js +0 -56
  656. package/lib/oldCommands/pg/backups/capture.d.ts +0 -1
  657. package/lib/oldCommands/pg/backups/capture.js +0 -77
  658. package/lib/oldCommands/pg/backups/delete.d.ts +0 -1
  659. package/lib/oldCommands/pg/backups/delete.js +0 -45
  660. package/lib/oldCommands/pg/backups/download.d.ts +0 -1
  661. package/lib/oldCommands/pg/backups/download.js +0 -64
  662. package/lib/oldCommands/pg/backups/index.d.ts +0 -1
  663. package/lib/oldCommands/pg/backups/index.js +0 -141
  664. package/lib/oldCommands/pg/backups/info.d.ts +0 -1
  665. package/lib/oldCommands/pg/backups/info.js +0 -102
  666. package/lib/oldCommands/pg/backups/restore.d.ts +0 -1
  667. package/lib/oldCommands/pg/backups/restore.js +0 -150
  668. package/lib/oldCommands/pg/backups/schedule.d.ts +0 -1
  669. package/lib/oldCommands/pg/backups/schedule.js +0 -107
  670. package/lib/oldCommands/pg/backups/schedules.d.ts +0 -1
  671. package/lib/oldCommands/pg/backups/schedules.js +0 -34
  672. package/lib/oldCommands/pg/backups/unschedule.d.ts +0 -1
  673. package/lib/oldCommands/pg/backups/unschedule.js +0 -60
  674. package/lib/oldCommands/pg/backups/url.d.ts +0 -1
  675. package/lib/oldCommands/pg/backups/url.js +0 -46
  676. package/lib/oldCommands/pg/bloat.d.ts +0 -1
  677. package/lib/oldCommands/pg/blocking.d.ts +0 -1
  678. package/lib/oldCommands/pg/blocking.js +0 -48
  679. package/lib/oldCommands/pg/connection-pooling/attach.d.ts +0 -1
  680. package/lib/oldCommands/pg/connection-pooling/attach.js +0 -53
  681. package/lib/oldCommands/pg/copy.d.ts +0 -1
  682. package/lib/oldCommands/pg/copy.js +0 -104
  683. package/lib/oldCommands/pg/credentials/create.d.ts +0 -1
  684. package/lib/oldCommands/pg/credentials/create.js +0 -47
  685. package/lib/oldCommands/pg/credentials/destroy.d.ts +0 -1
  686. package/lib/oldCommands/pg/credentials/destroy.js +0 -56
  687. package/lib/oldCommands/pg/credentials/repair-default.d.ts +0 -1
  688. package/lib/oldCommands/pg/credentials/repair-default.js +0 -43
  689. package/lib/oldCommands/pg/credentials/rotate.d.ts +0 -1
  690. package/lib/oldCommands/pg/credentials/rotate.js +0 -97
  691. package/lib/oldCommands/pg/credentials/url.d.ts +0 -1
  692. package/lib/oldCommands/pg/credentials/url.js +0 -75
  693. package/lib/oldCommands/pg/credentials.d.ts +0 -1
  694. package/lib/oldCommands/pg/credentials.js +0 -77
  695. package/lib/oldCommands/pg/diagnose.d.ts +0 -1
  696. package/lib/oldCommands/pg/diagnose.js +0 -136
  697. package/lib/oldCommands/pg/info.d.ts +0 -1
  698. package/lib/oldCommands/pg/info.js +0 -110
  699. package/lib/oldCommands/pg/kill.d.ts +0 -1
  700. package/lib/oldCommands/pg/kill.js +0 -37
  701. package/lib/oldCommands/pg/killall.d.ts +0 -1
  702. package/lib/oldCommands/pg/killall.js +0 -31
  703. package/lib/oldCommands/pg/links/create.d.ts +0 -1
  704. package/lib/oldCommands/pg/links/create.js +0 -70
  705. package/lib/oldCommands/pg/links/destroy.d.ts +0 -1
  706. package/lib/oldCommands/pg/links/destroy.js +0 -51
  707. package/lib/oldCommands/pg/links/index.d.ts +0 -1
  708. package/lib/oldCommands/pg/links/index.js +0 -64
  709. package/lib/oldCommands/pg/locks.d.ts +0 -1
  710. package/lib/oldCommands/pg/locks.js +0 -60
  711. package/lib/oldCommands/pg/maintenance/index.d.ts +0 -1
  712. package/lib/oldCommands/pg/maintenance/index.js +0 -34
  713. package/lib/oldCommands/pg/maintenance/run.d.ts +0 -1
  714. package/lib/oldCommands/pg/maintenance/run.js +0 -44
  715. package/lib/oldCommands/pg/maintenance/window.d.ts +0 -1
  716. package/lib/oldCommands/pg/maintenance/window.js +0 -52
  717. package/lib/oldCommands/pg/outliers.d.ts +0 -1
  718. package/lib/oldCommands/pg/outliers.js +0 -110
  719. package/lib/oldCommands/pg/promote.d.ts +0 -1
  720. package/lib/oldCommands/pg/promote.js +0 -183
  721. package/lib/oldCommands/pg/ps.d.ts +0 -1
  722. package/lib/oldCommands/pg/ps.js +0 -56
  723. package/lib/oldCommands/pg/psql.d.ts +0 -1
  724. package/lib/oldCommands/pg/psql.js +0 -53
  725. package/lib/oldCommands/pg/pull.d.ts +0 -1
  726. package/lib/oldCommands/pg/pull.js +0 -114
  727. package/lib/oldCommands/pg/push.d.ts +0 -1
  728. package/lib/oldCommands/pg/push.js +0 -111
  729. package/lib/oldCommands/pg/reset.d.ts +0 -1
  730. package/lib/oldCommands/pg/reset.js +0 -49
  731. package/lib/oldCommands/pg/settings/auto-explain/log-analyze.d.ts +0 -1
  732. package/lib/oldCommands/pg/settings/auto-explain/log-analyze.js +0 -37
  733. package/lib/oldCommands/pg/settings/auto-explain/log-buffers.d.ts +0 -1
  734. package/lib/oldCommands/pg/settings/auto-explain/log-buffers.js +0 -35
  735. package/lib/oldCommands/pg/settings/auto-explain/log-format.d.ts +0 -1
  736. package/lib/oldCommands/pg/settings/auto-explain/log-format.js +0 -30
  737. package/lib/oldCommands/pg/settings/auto-explain/log-min-duration.d.ts +0 -1
  738. package/lib/oldCommands/pg/settings/auto-explain/log-min-duration.js +0 -39
  739. package/lib/oldCommands/pg/settings/auto-explain/log-nested-statements.d.ts +0 -1
  740. package/lib/oldCommands/pg/settings/auto-explain/log-nested-statements.js +0 -30
  741. package/lib/oldCommands/pg/settings/auto-explain/log-triggers.d.ts +0 -1
  742. package/lib/oldCommands/pg/settings/auto-explain/log-triggers.js +0 -35
  743. package/lib/oldCommands/pg/settings/auto-explain/log-verbose.d.ts +0 -1
  744. package/lib/oldCommands/pg/settings/auto-explain/log-verbose.js +0 -40
  745. package/lib/oldCommands/pg/settings/auto-explain.d.ts +0 -1
  746. package/lib/oldCommands/pg/settings/auto-explain.js +0 -45
  747. package/lib/oldCommands/pg/settings/data-connector-details-logs.d.ts +0 -1
  748. package/lib/oldCommands/pg/settings/data-connector-details-logs.js +0 -40
  749. package/lib/oldCommands/pg/settings/index.d.ts +0 -1
  750. package/lib/oldCommands/pg/settings/index.js +0 -41
  751. package/lib/oldCommands/pg/settings/log-connections.d.ts +0 -1
  752. package/lib/oldCommands/pg/settings/log-connections.js +0 -40
  753. package/lib/oldCommands/pg/settings/log-lock-waits.d.ts +0 -1
  754. package/lib/oldCommands/pg/settings/log-lock-waits.js +0 -36
  755. package/lib/oldCommands/pg/settings/log-min-duration-statement.d.ts +0 -1
  756. package/lib/oldCommands/pg/settings/log-min-duration-statement.js +0 -39
  757. package/lib/oldCommands/pg/settings/log-min-error-statement.d.ts +0 -1
  758. package/lib/oldCommands/pg/settings/log-min-error-statement.js +0 -31
  759. package/lib/oldCommands/pg/settings/log-statement.d.ts +0 -1
  760. package/lib/oldCommands/pg/settings/log-statement.js +0 -33
  761. package/lib/oldCommands/pg/settings/track-functions.d.ts +0 -1
  762. package/lib/oldCommands/pg/settings/track-functions.js +0 -33
  763. package/lib/oldCommands/pg/unfollow.d.ts +0 -1
  764. package/lib/oldCommands/pg/unfollow.js +0 -46
  765. package/lib/oldCommands/pg/upgrade/cancel.d.ts +0 -1
  766. package/lib/oldCommands/pg/upgrade/cancel.js +0 -62
  767. package/lib/oldCommands/pg/upgrade/dryrun.d.ts +0 -1
  768. package/lib/oldCommands/pg/upgrade/dryrun.js +0 -62
  769. package/lib/oldCommands/pg/upgrade/index.d.ts +0 -1
  770. package/lib/oldCommands/pg/upgrade/index.js +0 -85
  771. package/lib/oldCommands/pg/upgrade/prepare.d.ts +0 -1
  772. package/lib/oldCommands/pg/upgrade/prepare.js +0 -64
  773. package/lib/oldCommands/pg/upgrade/run.d.ts +0 -1
  774. package/lib/oldCommands/pg/upgrade/run.js +0 -106
  775. package/lib/oldCommands/pg/upgrade/wait.d.ts +0 -1
  776. package/lib/oldCommands/pg/upgrade/wait.js +0 -121
  777. package/lib/oldCommands/pg/upgrade.d.ts +0 -1
  778. package/lib/oldCommands/pg/upgrade.js +0 -66
  779. package/lib/oldCommands/pg/vacuum-stats.d.ts +0 -1
  780. package/lib/oldCommands/pg/wait.d.ts +0 -1
  781. package/lib/oldCommands/pg/wait.js +0 -96
  782. package/lib/oldCommands/pipelines/open.d.ts +0 -1
  783. package/lib/oldCommands/pipelines/open.js +0 -25
  784. package/lib/oldCommands/pipelines/promote.d.ts +0 -1
  785. package/lib/oldCommands/pipelines/promote.js +0 -269
  786. package/lib/oldCommands/pipelines/remove.d.ts +0 -1
  787. package/lib/oldCommands/pipelines/remove.js +0 -29
  788. package/lib/oldCommands/pipelines/rename.d.ts +0 -1
  789. package/lib/oldCommands/pipelines/rename.js +0 -42
  790. package/lib/oldCommands/pipelines/setup.d.ts +0 -1
  791. package/lib/oldCommands/pipelines/setup.js +0 -117
  792. package/lib/oldCommands/pipelines/transfer.d.ts +0 -1
  793. package/lib/oldCommands/pipelines/transfer.js +0 -78
  794. package/lib/oldCommands/pipelines/update.d.ts +0 -1
  795. package/lib/oldCommands/pipelines/update.js +0 -39
  796. package/lib/oldCommands/ps/autoscale/disable.d.ts +0 -1
  797. package/lib/oldCommands/ps/autoscale/disable.js +0 -43
  798. package/lib/oldCommands/ps/autoscale/enable.d.ts +0 -1
  799. package/lib/oldCommands/ps/autoscale/enable.js +0 -103
  800. package/lib/oldCommands/ps/index.d.ts +0 -1
  801. package/lib/oldCommands/ps/index.js +0 -254
  802. package/lib/oldCommands/ps/restart.d.ts +0 -1
  803. package/lib/oldCommands/ps/restart.js +0 -78
  804. package/lib/oldCommands/ps/scale.d.ts +0 -1
  805. package/lib/oldCommands/ps/scale.js +0 -95
  806. package/lib/oldCommands/ps/stop.d.ts +0 -1
  807. package/lib/oldCommands/ps/stop.js +0 -73
  808. package/lib/oldCommands/ps/type.d.ts +0 -1
  809. package/lib/oldCommands/ps/type.js +0 -190
  810. package/lib/oldCommands/ps/wait.d.ts +0 -1
  811. package/lib/oldCommands/ps/wait.js +0 -93
  812. package/lib/oldCommands/releases/index.d.ts +0 -1
  813. package/lib/oldCommands/releases/index.js +0 -156
  814. package/lib/oldCommands/releases/info.d.ts +0 -1
  815. package/lib/oldCommands/releases/info.js +0 -68
  816. package/lib/oldCommands/releases/output.d.ts +0 -1
  817. package/lib/oldCommands/releases/output.js +0 -42
  818. package/lib/oldCommands/releases/retry.d.ts +0 -1
  819. package/lib/oldCommands/releases/retry.js +0 -59
  820. package/lib/oldCommands/releases/rollback.d.ts +0 -1
  821. package/lib/oldCommands/releases/rollback.js +0 -65
  822. package/lib/oldCommands/run/detached.d.ts +0 -1
  823. package/lib/oldCommands/run/detached.js +0 -61
  824. package/lib/oldCommands/run/index.d.ts +0 -1
  825. package/lib/oldCommands/run/index.js +0 -72
  826. package/lib/oldCommands/run/inside.d.ts +0 -1
  827. package/lib/oldCommands/run/inside.js +0 -93
  828. package/lib/oldCommands/spaces/create.d.ts +0 -1
  829. package/lib/oldCommands/spaces/create.js +0 -99
  830. package/lib/oldCommands/spaces/destroy.d.ts +0 -1
  831. package/lib/oldCommands/spaces/destroy.js +0 -79
  832. package/lib/oldCommands/spaces/drains/get.d.ts +0 -1
  833. package/lib/oldCommands/spaces/drains/get.js +0 -33
  834. package/lib/oldCommands/spaces/drains/set.d.ts +0 -1
  835. package/lib/oldCommands/spaces/drains/set.js +0 -33
  836. package/lib/oldCommands/spaces/hosts.d.ts +0 -1
  837. package/lib/oldCommands/spaces/hosts.js +0 -42
  838. package/lib/oldCommands/spaces/index.d.ts +0 -1
  839. package/lib/oldCommands/spaces/index.js +0 -74
  840. package/lib/oldCommands/spaces/info.d.ts +0 -1
  841. package/lib/oldCommands/spaces/info.js +0 -59
  842. package/lib/oldCommands/spaces/peerings/accept.d.ts +0 -1
  843. package/lib/oldCommands/spaces/peerings/accept.js +0 -41
  844. package/lib/oldCommands/spaces/peerings/destroy.d.ts +0 -1
  845. package/lib/oldCommands/spaces/peerings/destroy.js +0 -51
  846. package/lib/oldCommands/spaces/peerings/index.d.ts +0 -1
  847. package/lib/oldCommands/spaces/peerings/index.js +0 -39
  848. package/lib/oldCommands/spaces/peerings/info.d.ts +0 -1
  849. package/lib/oldCommands/spaces/ps.d.ts +0 -1
  850. package/lib/oldCommands/spaces/ps.js +0 -97
  851. package/lib/oldCommands/spaces/rename.d.ts +0 -1
  852. package/lib/oldCommands/spaces/rename.js +0 -29
  853. package/lib/oldCommands/spaces/topology.d.ts +0 -1
  854. package/lib/oldCommands/spaces/topology.js +0 -95
  855. package/lib/oldCommands/spaces/transfer.d.ts +0 -1
  856. package/lib/oldCommands/spaces/transfer.js +0 -37
  857. package/lib/oldCommands/spaces/trusted-ips/add.d.ts +0 -1
  858. package/lib/oldCommands/spaces/trusted-ips/add.js +0 -48
  859. package/lib/oldCommands/spaces/trusted-ips/index.d.ts +0 -1
  860. package/lib/oldCommands/spaces/trusted-ips/index.js +0 -57
  861. package/lib/oldCommands/spaces/trusted-ips/remove.d.ts +0 -1
  862. package/lib/oldCommands/spaces/trusted-ips/remove.js +0 -50
  863. package/lib/oldCommands/spaces/vpn/config.d.ts +0 -1
  864. package/lib/oldCommands/spaces/vpn/config.js +0 -61
  865. package/lib/oldCommands/spaces/vpn/connect.d.ts +0 -1
  866. package/lib/oldCommands/spaces/vpn/connect.js +0 -54
  867. package/lib/oldCommands/spaces/vpn/connections.d.ts +0 -1
  868. package/lib/oldCommands/spaces/vpn/connections.js +0 -70
  869. package/lib/oldCommands/spaces/vpn/destroy.d.ts +0 -1
  870. package/lib/oldCommands/spaces/vpn/destroy.js +0 -48
  871. package/lib/oldCommands/spaces/vpn/info.d.ts +0 -1
  872. package/lib/oldCommands/spaces/vpn/info.js +0 -89
  873. package/lib/oldCommands/spaces/vpn/update.d.ts +0 -1
  874. package/lib/oldCommands/spaces/vpn/update.js +0 -46
  875. package/lib/oldCommands/spaces/vpn/wait.d.ts +0 -1
  876. package/lib/oldCommands/spaces/vpn/wait.js +0 -80
  877. package/lib/oldCommands/spaces/wait.d.ts +0 -1
  878. package/lib/oldCommands/spaces/wait.js +0 -106
  879. package/lib/oldCommands/webhooks/add.d.ts +0 -1
  880. package/lib/oldCommands/webhooks/add.js +0 -56
  881. package/lib/oldCommands/webhooks/deliveries/index.d.ts +0 -1
  882. package/lib/oldCommands/webhooks/deliveries/index.js +0 -90
  883. package/lib/oldCommands/webhooks/deliveries/info.d.ts +0 -1
  884. package/lib/oldCommands/webhooks/deliveries/info.js +0 -54
  885. package/lib/oldCommands/webhooks/index.d.ts +0 -1
  886. package/lib/oldCommands/webhooks/index.js +0 -55
  887. package/lib/oldCommands/webhooks/info.d.ts +0 -1
  888. package/lib/oldCommands/webhooks/info.js +0 -41
  889. package/lib/oldCommands/webhooks/remove.d.ts +0 -1
  890. package/lib/oldCommands/webhooks/remove.js +0 -37
  891. package/lib/oldCommands/webhooks/update.d.ts +0 -1
  892. package/lib/oldCommands/webhooks/update.js +0 -50
  893. package/lib/package.nls.json +0 -6
  894. /package/lib/lib/{pg/bastion.d.ts → data-scrubber/types.js} +0 -0
  895. /package/lib/lib/{spaces/outbound-rules.d.ts → types/completion.js} +0 -0
@@ -0,0 +1,34 @@
1
+ import { color, utils } from '@heroku/heroku-cli-util';
2
+ import { Command, flags } from '@heroku-cli/command';
3
+ import { Args, ux } from '@oclif/core';
4
+ import { essentialPlan } from '../../../lib/pg/util.js';
5
+ import { nls } from '../../../nls.js';
6
+ export default class Run extends Command {
7
+ static args = {
8
+ database: Args.string({ description: `${nls('pg:database:arg:description')} ${nls('pg:database:arg:description:default:suffix')}` }),
9
+ };
10
+ static description = 'start maintenance';
11
+ static flags = {
12
+ app: flags.app({ required: true }),
13
+ force: flags.boolean({ char: 'f' }),
14
+ remote: flags.remote(),
15
+ };
16
+ static topic = 'pg';
17
+ async run() {
18
+ const { args, flags } = await this.parse(Run);
19
+ const { app, force } = flags;
20
+ const { database } = args;
21
+ const dbResolver = new utils.pg.DatabaseResolver(this.heroku);
22
+ const { addon: db } = await dbResolver.getAttachment(app, database);
23
+ if (essentialPlan(db))
24
+ ux.error("pg:maintenance isn't available for Essential-tier databases.");
25
+ ux.action.start(`Starting maintenance for ${color.datastore(db.name)}`);
26
+ if (!force) {
27
+ const { body: appInfo } = await this.heroku.get(`/apps/${app}`);
28
+ if (!appInfo.maintenance)
29
+ ux.error('Application must be in maintenance mode or run with --force');
30
+ }
31
+ const { body: response } = await this.heroku.post(`/client/v11/databases/${db.id}/maintenance`, { hostname: utils.pg.host() });
32
+ ux.action.stop(response.message || 'done');
33
+ }
34
+ }
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Window extends Command {
3
+ static args: {
4
+ window: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
+ database: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
+ };
7
+ static description: string;
8
+ static example: string;
9
+ static flags: {
10
+ app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ static topic: string;
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,41 @@
1
+ import { color, utils } from '@heroku/heroku-cli-util';
2
+ import { Command, flags } from '@heroku-cli/command';
3
+ import { Args, ux } from '@oclif/core';
4
+ import tsheredoc from 'tsheredoc';
5
+ import { essentialPlan } from '../../../lib/pg/util.js';
6
+ const heredoc = tsheredoc.default;
7
+ import { nls } from '../../../nls.js';
8
+ export default class Window extends Command {
9
+ /* eslint-disable perfectionist/sort-objects */
10
+ static args = {
11
+ window: Args.string({ description: 'timestamp of the maintenance window', required: true }),
12
+ database: Args.string({ description: `${nls('pg:database:arg:description')} ${nls('pg:database:arg:description:default:suffix')}` }),
13
+ };
14
+ /* eslint-enable perfectionist/sort-objects */
15
+ static description = heredoc(`
16
+ Set weekly maintenance window.
17
+ All times are in UTC.
18
+ `);
19
+ static example = `${color.command('heroku pg:maintenance:window "Sunday 06:00" postgres-slippery-100')}`;
20
+ static flags = {
21
+ app: flags.app({ required: true }),
22
+ remote: flags.remote(),
23
+ };
24
+ static topic = 'pg';
25
+ async run() {
26
+ const { args, flags } = await this.parse(Window);
27
+ const { database, window } = args;
28
+ const { app } = flags;
29
+ const dbResolver = new utils.pg.DatabaseResolver(this.heroku);
30
+ const { addon: db } = await dbResolver.getAttachment(app, database);
31
+ if (essentialPlan(db))
32
+ ux.error("pg:maintenance isn't available for Essential-tier databases.");
33
+ if (!window.match(/^[A-Za-z]{2,10} \d\d?:[03]0$/))
34
+ ux.error('Window must be "Day HH:MM" where MM is 00 or 30');
35
+ ux.action.start(`Setting maintenance window for ${color.datastore(db.name)} to ${color.info(window)}`);
36
+ const { body: response } = await this.heroku.put(`/client/v11/databases/${db.id}/maintenance_window`, {
37
+ body: { description: window }, hostname: utils.pg.host(),
38
+ });
39
+ ux.action.stop(response.message || 'done');
40
+ }
41
+ }
@@ -0,0 +1,19 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Outliers extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static flags: {
6
+ reset: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ truncate: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ num: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ static args: {
13
+ database: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
14
+ };
15
+ private psqlService;
16
+ run(): Promise<void>;
17
+ protected ensurePGStatStatement(): Promise<void>;
18
+ protected outliersQuery(version: string | undefined, limit: number, truncate: boolean): string;
19
+ }
@@ -0,0 +1,100 @@
1
+ import { Command, flags } from '@heroku-cli/command';
2
+ import { Args, ux } from '@oclif/core';
3
+ import { utils } from '@heroku/heroku-cli-util';
4
+ import { fetchVersion } from '../../lib/pg/psql.js';
5
+ import tsheredoc from 'tsheredoc';
6
+ import { nls } from '../../nls.js';
7
+ const heredoc = tsheredoc.default;
8
+ export default class Outliers extends Command {
9
+ static topic = 'pg';
10
+ static description = 'show 10 queries that have longest execution time in aggregate';
11
+ static flags = {
12
+ reset: flags.boolean({ description: 'resets statistics gathered by pg_stat_statements' }),
13
+ truncate: flags.boolean({ char: 't', description: 'truncate queries to 40 characters' }),
14
+ num: flags.string({ char: 'n', description: 'the number of queries to display (default: 10)' }),
15
+ app: flags.app({ required: true }),
16
+ remote: flags.remote(),
17
+ };
18
+ static args = {
19
+ database: Args.string({ description: `${nls('pg:database:arg:description')} ${nls('pg:database:arg:description:default:suffix')}` }),
20
+ };
21
+ psqlService;
22
+ async run() {
23
+ const { flags, args } = await this.parse(Outliers);
24
+ const { app, reset, truncate, num } = flags;
25
+ const dbResolver = new utils.pg.DatabaseResolver(this.heroku);
26
+ const db = await dbResolver.getDatabase(app, args.database);
27
+ this.psqlService = new utils.pg.PsqlService(db);
28
+ const version = await fetchVersion(db);
29
+ await this.ensurePGStatStatement();
30
+ if (reset) {
31
+ await this.psqlService.execQuery('SELECT pg_stat_statements_reset();');
32
+ return;
33
+ }
34
+ let limit = 10;
35
+ if (num) {
36
+ if (/^(\d+)$/.exec(num)) {
37
+ limit = Number.parseInt(num, 10);
38
+ }
39
+ else {
40
+ ux.error(`Cannot parse num param value "${num}" to a number`);
41
+ }
42
+ }
43
+ const query = this.outliersQuery(version, limit, truncate);
44
+ const output = await this.psqlService.execQuery(query);
45
+ ux.stdout(output);
46
+ }
47
+ async ensurePGStatStatement() {
48
+ const query = heredoc `
49
+ SELECT exists(
50
+ SELECT 1
51
+ FROM pg_extension e
52
+ LEFT JOIN pg_namespace n ON n.oid = e.extnamespace
53
+ WHERE e.extname = 'pg_stat_statements' AND n.nspname IN ('public', 'heroku_ext')
54
+ ) AS available;
55
+ `;
56
+ const output = await this.psqlService.execQuery(query);
57
+ if (!output.includes('t')) {
58
+ ux.error(heredoc `
59
+ pg_stat_statements extension need to be installed first.
60
+ You can install it by running: CREATE EXTENSION pg_stat_statements WITH SCHEMA heroku_ext;
61
+ `);
62
+ }
63
+ }
64
+ outliersQuery(version, limit, truncate) {
65
+ const truncatedQueryString = truncate ? heredoc `
66
+ CASE WHEN length(query) <= 40 THEN query ELSE substr(query, 0, 39) || '…' END
67
+ ` : 'query';
68
+ let totalExecTimeField = '';
69
+ if (version && Number.parseInt(version, 10) >= 13) {
70
+ totalExecTimeField = 'total_exec_time';
71
+ }
72
+ else {
73
+ totalExecTimeField = 'total_time';
74
+ }
75
+ let blkReadTimeField = '';
76
+ let blkWriteTimeField = '';
77
+ if (version && Number.parseInt(version, 10) >= 17) {
78
+ blkReadTimeField = 'shared_blk_read_time';
79
+ blkWriteTimeField = 'shared_blk_write_time';
80
+ }
81
+ else {
82
+ blkReadTimeField = 'blk_read_time';
83
+ blkWriteTimeField = 'blk_write_time';
84
+ }
85
+ return heredoc `
86
+ SELECT
87
+ interval '1 millisecond' * ${totalExecTimeField} AS total_exec_time,
88
+ to_char((${totalExecTimeField}/sum(${totalExecTimeField}) OVER()) * 100, 'FM90D0') || '%' AS prop_exec_time,
89
+ to_char(calls, 'FM999G999G999G990') AS ncalls,
90
+ interval '1 millisecond' * (${blkReadTimeField} + ${blkWriteTimeField}) AS sync_io_time,
91
+ ${truncatedQueryString} AS query
92
+ FROM pg_stat_statements
93
+ WHERE userid = (
94
+ SELECT usesysid FROM pg_user WHERE usename = current_user LIMIT 1
95
+ )
96
+ ORDER BY ${totalExecTimeField} DESC
97
+ LIMIT ${limit};
98
+ `;
99
+ }
100
+ }
@@ -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/interfaces").BooleanFlag<boolean>;
7
+ app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ };
10
+ static args: {
11
+ database: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,167 @@
1
+ /* eslint-disable complexity */
2
+ import { color, utils } from '@heroku/heroku-cli-util';
3
+ import { Command, flags } from '@heroku-cli/command';
4
+ import { Args, ux } from '@oclif/core';
5
+ import tsheredoc from 'tsheredoc';
6
+ import { getRelease } from '../../lib/pg/fetcher.js';
7
+ import { nls } from '../../nls.js';
8
+ const heredoc = tsheredoc.default;
9
+ export default class Promote extends Command {
10
+ static topic = 'pg';
11
+ static description = 'sets DATABASE as your DATABASE_URL';
12
+ static flags = {
13
+ force: flags.boolean({ char: 'f' }),
14
+ app: flags.app({ required: true }),
15
+ remote: flags.remote(),
16
+ };
17
+ static args = {
18
+ database: Args.string({ required: true, description: nls('pg:database:arg:description') }),
19
+ };
20
+ async run() {
21
+ const { flags, args } = await this.parse(Promote);
22
+ const { force, app } = flags;
23
+ const { database } = args;
24
+ const dbResolver = new utils.pg.DatabaseResolver(this.heroku);
25
+ const attachment = await dbResolver.getAttachment(app, database);
26
+ ux.action.start(`Ensuring an alternate alias for existing ${color.datastore('DATABASE_URL')}`);
27
+ const { body: attachments } = await this.heroku.get(`/apps/${app}/addon-attachments`);
28
+ const current = attachments.find(a => a.name === 'DATABASE');
29
+ if (current) {
30
+ // eslint-disable-next-line eqeqeq
31
+ if (current.addon?.name === attachment.addon.name && current.namespace == attachment.namespace) {
32
+ if (attachment.namespace) {
33
+ ux.error(`${color.attachment(attachment.name)} is already promoted on ${color.app(app)}`);
34
+ }
35
+ else {
36
+ ux.error(`${color.addon(attachment.addon.name)} is already promoted on ${color.app(app)}`);
37
+ }
38
+ }
39
+ const existing = attachments.filter(a => a.addon?.id === current.addon?.id && a.namespace === current.namespace)
40
+ .find(a => a.name !== 'DATABASE');
41
+ if (existing) {
42
+ ux.action.stop(color.attachment(existing.name + '_URL'));
43
+ }
44
+ else {
45
+ // The current add-on occupying the DATABASE attachment has no
46
+ // other attachments. In order to promote this database without
47
+ // error, we can create a secondary attachment, just-in-time.
48
+ const { body: backup } = await this.heroku.post('/addon-attachments', {
49
+ body: {
50
+ app: { name: app },
51
+ addon: { name: current.addon?.name },
52
+ namespace: current.namespace,
53
+ confirm: app,
54
+ },
55
+ });
56
+ ux.action.stop(color.attachment(backup.name + '_URL'));
57
+ }
58
+ }
59
+ if (!force) {
60
+ const { body: status } = await this.heroku.get(`/client/v11/databases/${attachment.addon.id}/wait_status`, {
61
+ hostname: utils.pg.host(),
62
+ });
63
+ if (status['waiting?']) {
64
+ ux.error(heredoc(`
65
+ Database cannot be promoted while in state: ${status.message}
66
+
67
+ Promoting this database can lead to application errors and outage. Please run ${color.code('heroku pg:wait')} to wait for database to become available.
68
+
69
+ To ignore this error, you can pass the --force flag to promote the database and risk application issues.
70
+ `));
71
+ }
72
+ }
73
+ let promotionMessage;
74
+ if (attachment.namespace) {
75
+ promotionMessage = `Promoting ${color.attachment(attachment.name)} to ${color.datastore('DATABASE_URL')} on ${color.app(app)}`;
76
+ }
77
+ else {
78
+ promotionMessage = `Promoting ${color.datastore(attachment.addon.name)} to ${color.datastore('DATABASE_URL')} on ${color.app(app)}`;
79
+ }
80
+ ux.action.start(promotionMessage);
81
+ await this.heroku.post('/addon-attachments', {
82
+ body: {
83
+ name: 'DATABASE',
84
+ app: { name: app },
85
+ addon: { name: attachment.addon.name },
86
+ namespace: attachment.namespace || null,
87
+ confirm: app,
88
+ },
89
+ });
90
+ ux.action.stop();
91
+ const currentPooler = attachments.find(a => a.namespace === 'connection-pooling:default' && a.addon?.id === current?.addon?.id && a.name === 'DATABASE_CONNECTION_POOL');
92
+ if (currentPooler) {
93
+ ux.action.start('Reattaching pooler to new leader');
94
+ await this.heroku.post('/addon-attachments', {
95
+ body: {
96
+ name: currentPooler.name,
97
+ app: { name: app },
98
+ addon: { name: attachment.addon.name },
99
+ namespace: 'connection-pooling:default',
100
+ confirm: app,
101
+ },
102
+ });
103
+ ux.action.stop();
104
+ }
105
+ const { body: promotedDatabaseDetails } = await this.heroku.get(`/client/v11/databases/${attachment.addon.id}`, {
106
+ hostname: utils.pg.host(),
107
+ });
108
+ if (promotedDatabaseDetails.following) {
109
+ const unfollowLeaderCmd = `heroku pg:unfollow ${attachment.addon.name}`;
110
+ ux.warn(heredoc(`
111
+ Your database has been promoted but it is currently a follower database in read-only mode.
112
+
113
+ Promoting a database with ${color.code('heroku pg:promote')} doesn't automatically unfollow its leader.
114
+
115
+ Use ${color.code(unfollowLeaderCmd)} to stop this follower from replicating from its leader (${color.datastore(promotedDatabaseDetails.leader)}) and convert it into a writable database.
116
+ `));
117
+ }
118
+ const { body: formation } = await this.heroku.get(`/apps/${app}/formation`);
119
+ const releasePhase = formation.find(process => process.type === 'release');
120
+ if (releasePhase) {
121
+ ux.action.start('Checking release phase');
122
+ const { body: releases } = await this.heroku.get(`/apps/${app}/releases`, {
123
+ partial: true,
124
+ headers: {
125
+ Range: 'version ..; max=5, order=desc',
126
+ },
127
+ });
128
+ const attach = releases.find(release => release.description?.includes('Attach DATABASE'));
129
+ const detach = releases.find(release => release.description?.includes('Detach DATABASE'));
130
+ if (!attach || !detach) {
131
+ ux.error('Unable to check release phase. Check your Attach DATABASE release for failures.');
132
+ }
133
+ const endTime = Date.now() + 900000; // 15 minutes from now
134
+ const [attachId, detachId] = [attach?.id, detach?.id];
135
+ while (true) {
136
+ const attach = await getRelease(this.heroku, app, attachId);
137
+ if (attach && attach.status === 'succeeded') {
138
+ let msg = 'pg:promote succeeded.';
139
+ const detach = await getRelease(this.heroku, app, detachId);
140
+ if (detach && detach.status === 'failed') {
141
+ msg += ` It is safe to ignore the failed ${detach.description} release.`;
142
+ }
143
+ ux.action.stop(msg);
144
+ return;
145
+ }
146
+ if (attach && attach.status === 'failed') {
147
+ let msg = `pg:promote failed because ${attach.description} release was unsuccessful. Your application is currently running `;
148
+ const detach = await getRelease(this.heroku, app, detachId);
149
+ if (detach && detach.status === 'succeeded') {
150
+ msg += 'without an attached DATABASE_URL.';
151
+ }
152
+ else {
153
+ msg += `with ${current?.addon?.name} attached as DATABASE_URL.`;
154
+ }
155
+ msg += ' Check your release phase logs for failure causes.';
156
+ ux.action.stop(msg);
157
+ return;
158
+ }
159
+ if (Date.now() > endTime) {
160
+ ux.action.stop('timeout. Check your Attach DATABASE release for failures.');
161
+ return;
162
+ }
163
+ await new Promise(resolve => setTimeout(resolve, 5000));
164
+ }
165
+ }
166
+ }
167
+ }
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Ps extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
+ app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ };
9
+ static topic: string;
10
+ static args: {
11
+ database: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,52 @@
1
+ import { Command, flags } from '@heroku-cli/command';
2
+ import { Args } from '@oclif/core';
3
+ import tsheredoc from 'tsheredoc';
4
+ import { utils } from '@heroku/heroku-cli-util';
5
+ import { nls } from '../../nls.js';
6
+ const heredoc = tsheredoc.default;
7
+ export default class Ps extends Command {
8
+ static description = 'view active queries with execution time';
9
+ static flags = {
10
+ verbose: flags.boolean({ char: 'v' }),
11
+ app: flags.app({ required: true }),
12
+ remote: flags.remote(),
13
+ };
14
+ static topic = 'pg';
15
+ static args = {
16
+ database: Args.string({ description: `${nls('pg:database:arg:description')} ${nls('pg:database:arg:description:default:suffix')}` }),
17
+ };
18
+ async run() {
19
+ const { flags, args } = await this.parse(Ps);
20
+ const { database: databaseName } = args;
21
+ const { verbose, app } = flags;
22
+ const dbResolver = new utils.pg.DatabaseResolver(this.heroku);
23
+ const db = await dbResolver.getDatabase(app, databaseName);
24
+ const psqlService = new utils.pg.PsqlService(db);
25
+ const num = Math.random();
26
+ const waitingMarker = `${num}${num}`;
27
+ const waitingQuery = heredoc(`
28
+ SELECT '${num}' || '${num}'
29
+ WHERE EXISTS
30
+ (SELECT 1
31
+ FROM information_schema.columns
32
+ WHERE table_schema = 'pg_catalog'
33
+ AND TABLE_NAME = 'pg_stat_activity'
34
+ AND COLUMN_NAME = 'waiting')
35
+ `);
36
+ const waitingOutput = await psqlService.execQuery(waitingQuery);
37
+ const waiting = waitingOutput.includes(waitingMarker) ? 'waiting' : 'wait_event IS NOT NULL AS waiting';
38
+ const query = heredoc(`SELECT pid,
39
+ state,
40
+ application_name AS SOURCE,
41
+ usename AS username,
42
+ age(now(), xact_start) AS running_for,
43
+ xact_start AS transaction_start, ${waiting}, query
44
+ FROM pg_stat_activity
45
+ WHERE query <> '<insufficient privilege>'${verbose ? '' : " AND state <> 'idle'"}
46
+ AND pid <> pg_backend_pid()
47
+ ORDER BY query_start DESC
48
+ `);
49
+ const output = await psqlService.execQuery(query);
50
+ process.stdout.write(output);
51
+ }
52
+ }
@@ -0,0 +1,16 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Psql extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ command: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ credential: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ };
11
+ static args: {
12
+ database: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
13
+ };
14
+ static aliases: string[];
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,47 @@
1
+ import { color, utils } from '@heroku/heroku-cli-util';
2
+ import { Command, flags } from '@heroku-cli/command';
3
+ import { Args } from '@oclif/core';
4
+ import { nls } from '../../nls.js';
5
+ export default class Psql extends Command {
6
+ static description = 'open a psql shell to the database';
7
+ static flags = {
8
+ command: flags.string({ char: 'c', description: 'SQL command to run' }),
9
+ file: flags.string({ char: 'f', description: 'SQL file to run' }),
10
+ credential: flags.string({ description: 'credential to use' }),
11
+ app: flags.app({ required: true }),
12
+ remote: flags.remote(),
13
+ };
14
+ static args = {
15
+ database: Args.string({ description: `${nls('pg:database:arg:description')} ${nls('pg:database:arg:description:default:suffix')}` }),
16
+ };
17
+ static aliases = ['psql'];
18
+ async run() {
19
+ const { flags, args } = await this.parse(Psql);
20
+ const { app, command, credential, file } = flags;
21
+ const namespace = credential ? `credential:${credential}` : undefined;
22
+ let db;
23
+ const dbResolver = new utils.pg.DatabaseResolver(this.heroku);
24
+ try {
25
+ db = await dbResolver.getDatabase(app, args.database, namespace);
26
+ }
27
+ catch (error) {
28
+ if (namespace && error instanceof Error && error.message === "Couldn't find that addon.") {
29
+ throw new Error("Credential doesn't match, make sure credential is attached");
30
+ }
31
+ throw error;
32
+ }
33
+ const psqlService = new utils.pg.PsqlService(db);
34
+ console.error(`--> Connecting to ${color.datastore(db.attachment.addon.name)}`);
35
+ if (command) {
36
+ const output = await psqlService.execQuery(command);
37
+ process.stdout.write(output);
38
+ }
39
+ else if (file) {
40
+ const output = await psqlService.execFile(file);
41
+ process.stdout.write(output);
42
+ }
43
+ else {
44
+ await psqlService.interactiveSession();
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,18 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ import { pg } from '@heroku/heroku-cli-util';
3
+ export default class Pull extends Command {
4
+ static args: {
5
+ source: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ target: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static description: string;
9
+ static examples: string[];
10
+ static flags: {
11
+ app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'exclude-table-data': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ static topic: string;
16
+ protected pull(sourceIn: pg.ConnectionDetails, targetIn: pg.ConnectionDetails, exclusions: string[]): Promise<void>;
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,87 @@
1
+ import { Command, flags } from '@heroku-cli/command';
2
+ import { Args, ux } from '@oclif/core';
3
+ import tsheredoc from 'tsheredoc';
4
+ import { color, utils } from '@heroku/heroku-cli-util';
5
+ // import {SpawnOptions, spawn} from 'node:child_process'
6
+ import childProcess from 'node:child_process';
7
+ import { nls } from '../../nls.js';
8
+ import { connArgs, maybeTunnel, parseExclusions, prepare, spawnPipe, verifyExtensionsMatch, } from '../../lib/pg/push_pull.js';
9
+ const { env } = process;
10
+ const heredoc = tsheredoc.default;
11
+ export default class Pull extends Command {
12
+ static args = {
13
+ source: Args.string({ required: true, description: `${nls('pg:database:arg:description')} ${nls('pg:database:arg:description:default:suffix')}` }),
14
+ target: Args.string({ required: true, description: 'PostgreSQL connection string for the target database' }),
15
+ };
16
+ static description = heredoc `
17
+ pull Heroku database into local or remote database
18
+ Pull from SOURCE into TARGET.
19
+
20
+ TARGET must be one of:
21
+ * a database name (i.e. on a local PostgreSQL server) => TARGET must not exist and will be created
22
+ * a fully qualified URL to a local PostgreSQL server => TARGET must not exist and will be created
23
+ * a fully qualified URL to a remote PostgreSQL server => TARGET must exist and be empty
24
+
25
+ To delete a local database run ${color.code('dropdb TARGET')}.
26
+ To create an empty remote database, run ${color.code('createdb')} with connection command-line options (run ${color.code('createdb --help')} for details).
27
+ `;
28
+ static examples = [heredoc `
29
+ # pull Heroku DB named postgresql-swimmingly-100 into local DB mylocaldb that must not exist
30
+ ${color.command('heroku pg:pull postgresql-swimmingly-100 mylocaldb --app sushi')}
31
+ `, heredoc `
32
+ # pull Heroku DB named postgresql-swimmingly-100 into empty remote DB at postgres://myhost/mydb
33
+ ${color.command('heroku pg:pull postgresql-swimmingly-100 postgres://myhost/mydb --app sushi')}
34
+ `];
35
+ static flags = {
36
+ app: flags.app({ required: true }),
37
+ 'exclude-table-data': flags.string({ description: 'tables for which data should be excluded (use \';\' to split multiple names)', hasValue: true }),
38
+ remote: flags.remote(),
39
+ };
40
+ static topic = 'pg';
41
+ async pull(sourceIn, targetIn, exclusions) {
42
+ await prepare(targetIn);
43
+ const source = await maybeTunnel(sourceIn);
44
+ const target = await maybeTunnel(targetIn);
45
+ const exclude = exclusions.map(e => ('--exclude-table-data=' + e)).join(' ');
46
+ const dumpFlags = ['--verbose', '-F', 'c', '-Z', '0', '-N', '_heroku', ...connArgs(source, true)];
47
+ if (exclude !== '')
48
+ dumpFlags.push(exclude);
49
+ const dumpOptions = {
50
+ env: {
51
+ PGSSLMODE: 'prefer',
52
+ ...env,
53
+ },
54
+ shell: true,
55
+ stdio: ['pipe', 'pipe', 2],
56
+ };
57
+ if (source.password)
58
+ dumpOptions.env.PGPASSWORD = source.password;
59
+ const restoreFlags = ['--verbose', '-F', 'c', '--no-acl', '--no-owner', ...connArgs(target)];
60
+ const restoreOptions = {
61
+ env: { ...env },
62
+ shell: true,
63
+ stdio: ['pipe', 'pipe', 2],
64
+ };
65
+ if (target.password)
66
+ restoreOptions.env.PGPASSWORD = target.password;
67
+ const pgDump = childProcess.spawn('pg_dump', dumpFlags, dumpOptions);
68
+ const pgRestore = childProcess.spawn('pg_restore', restoreFlags, restoreOptions);
69
+ await spawnPipe(pgDump, pgRestore);
70
+ if (source._tunnel)
71
+ source._tunnel.close();
72
+ if (target._tunnel)
73
+ target._tunnel.close();
74
+ await verifyExtensionsMatch(sourceIn, targetIn);
75
+ }
76
+ async run() {
77
+ const { args, flags } = await this.parse(Pull);
78
+ const { app, 'exclude-table-data': excludeTableData } = flags;
79
+ const exclusions = parseExclusions(excludeTableData);
80
+ const dbResolver = new utils.pg.DatabaseResolver(this.heroku);
81
+ const source = await dbResolver.getDatabase(app, args.source);
82
+ const target = utils.pg.DatabaseResolver.parsePostgresConnectionString(args.target);
83
+ ux.stdout(`Pulling ${color.cyan(source.attachment.addon.name)} to ${color.addon(args.target)}`);
84
+ await this.pull(source, target, exclusions);
85
+ ux.stdout('Pulling complete.');
86
+ }
87
+ }
@@ -0,0 +1,18 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ import { pg } from '@heroku/heroku-cli-util';
3
+ export default class Push extends Command {
4
+ static args: {
5
+ source: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ target: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static description: string;
9
+ static examples: string[];
10
+ static flags: {
11
+ app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'exclude-table-data': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ remote: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ static topic: string;
16
+ protected push(sourceIn: pg.ConnectionDetails, targetIn: pg.ConnectionDetails, exclusions: string[]): Promise<void>;
17
+ run(): Promise<void>;
18
+ }