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,204 @@
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 readline = require("readline");
6
+ const ssh2_1 = require("ssh2");
7
+ const Parser = require("redis-parser");
8
+ const portfinder = require("portfinder");
9
+ const confirmCommand_1 = require("../../lib/confirmCommand");
10
+ const tls = require("tls");
11
+ const node_util_1 = require("node:util");
12
+ const net = require("net");
13
+ const api_1 = require("../../lib/redis/api");
14
+ const REPLY_OK = 'OK';
15
+ async function redisCLI(uri, client) {
16
+ const io = readline.createInterface(process.stdin, process.stdout);
17
+ const reply = new Parser({
18
+ returnReply(reply) {
19
+ switch (state) {
20
+ case 'monitoring':
21
+ if (reply !== REPLY_OK) {
22
+ console.log(reply);
23
+ }
24
+ break;
25
+ case 'subscriber':
26
+ if (Array.isArray(reply)) {
27
+ reply.forEach(function (value, i) {
28
+ console.log(`${i + 1}) ${value}`);
29
+ });
30
+ }
31
+ else {
32
+ console.log(reply);
33
+ }
34
+ break;
35
+ case 'connect':
36
+ if (reply !== REPLY_OK) {
37
+ console.log(reply);
38
+ }
39
+ state = 'normal';
40
+ io.prompt();
41
+ break;
42
+ case 'closing':
43
+ if (reply !== REPLY_OK) {
44
+ console.log(reply);
45
+ }
46
+ break;
47
+ default:
48
+ if (Array.isArray(reply)) {
49
+ reply.forEach(function (value, i) {
50
+ console.log(`${i + 1}) ${value}`);
51
+ });
52
+ }
53
+ else {
54
+ console.log(reply);
55
+ }
56
+ io.prompt();
57
+ break;
58
+ }
59
+ }, returnError(err) {
60
+ console.log(err.message);
61
+ io.prompt();
62
+ }, returnFatalError(err) {
63
+ client.emit('error', err);
64
+ console.dir(err);
65
+ },
66
+ });
67
+ let state = 'connect';
68
+ client.write(`AUTH ${uri.password}\n`);
69
+ io.setPrompt(uri.host + '> ');
70
+ io.on('line', function (line) {
71
+ switch (line.split(' ')[0]) {
72
+ case 'MONITOR':
73
+ state = 'monitoring';
74
+ break;
75
+ case 'PSUBSCRIBE':
76
+ case 'SUBSCRIBE':
77
+ state = 'subscriber';
78
+ break;
79
+ }
80
+ client.write(`${line}\n`);
81
+ });
82
+ io.on('close', function () {
83
+ state = 'closing';
84
+ client.write('QUIT\n');
85
+ });
86
+ client.on('data', function (data) {
87
+ reply.execute(data);
88
+ });
89
+ return new Promise((resolve, reject) => {
90
+ client.on('error', reject);
91
+ client.on('end', function () {
92
+ console.log('\nDisconnected from instance.');
93
+ io.close();
94
+ resolve();
95
+ });
96
+ });
97
+ }
98
+ async function bastionConnect(uri, bastions, config, preferNativeTls) {
99
+ const tunnel = await new Promise(resolve => {
100
+ var _a;
101
+ const ssh2 = new ssh2_1.Client();
102
+ resolve(ssh2);
103
+ ssh2.once('ready', () => resolve(ssh2));
104
+ ssh2.connect({
105
+ host: bastions.split(',')[0],
106
+ username: 'bastion',
107
+ privateKey: (_a = match(config, /_BASTION_KEY/)) !== null && _a !== void 0 ? _a : '',
108
+ });
109
+ });
110
+ const localPort = await portfinder.getPortPromise({ startPort: 49152, stopPort: 65535 });
111
+ const stream = await (0, node_util_1.promisify)(tunnel.forwardOut)('localhost', localPort, uri.hostname, Number.parseInt(uri.port, 10));
112
+ let client = stream;
113
+ if (preferNativeTls) {
114
+ client = tls.connect({
115
+ socket: stream,
116
+ port: Number.parseInt(uri.port, 10),
117
+ host: uri.hostname,
118
+ rejectUnauthorized: false,
119
+ });
120
+ }
121
+ stream.on('close', () => tunnel.end());
122
+ stream.on('end', () => client.end());
123
+ return redisCLI(uri, client);
124
+ }
125
+ function match(config, lookup) {
126
+ for (const key in config) {
127
+ if (lookup.test(key)) {
128
+ return config[key];
129
+ }
130
+ }
131
+ return null;
132
+ }
133
+ async function maybeTunnel(redis, config) {
134
+ var _a;
135
+ const bastions = match(config, /_BASTIONS/);
136
+ const hobby = redis.plan.indexOf('hobby') === 0;
137
+ const preferNativeTls = redis.prefer_native_tls;
138
+ const uri = preferNativeTls && hobby ? new URL((_a = match(config, /_TLS_URL/)) !== null && _a !== void 0 ? _a : '') : new URL(redis.resource_url);
139
+ if (bastions !== null) {
140
+ return bastionConnect(uri, bastions, config, preferNativeTls);
141
+ }
142
+ let client;
143
+ if (preferNativeTls) {
144
+ client = tls.connect({
145
+ port: Number.parseInt(uri.port, 10), host: uri.hostname, rejectUnauthorized: false,
146
+ });
147
+ }
148
+ else if (hobby) {
149
+ client = net.connect({ port: Number.parseInt(uri.port, 10), host: uri.hostname });
150
+ }
151
+ else {
152
+ client = tls.connect({
153
+ port: Number.parseInt(uri.port, 10) + 1, host: uri.hostname, rejectUnauthorized: false,
154
+ });
155
+ }
156
+ return redisCLI(uri, client);
157
+ }
158
+ class Cli extends command_1.Command {
159
+ async run() {
160
+ const { flags, args } = await this.parse(Cli);
161
+ const api = (0, api_1.default)(flags.app, args.database, false, this.heroku);
162
+ const addon = await api.getRedisAddon();
163
+ const configVars = await getRedisConfigVars(addon, this.heroku);
164
+ const { body: redis } = await api.request(`/redis/v0/databases/${addon.id}`);
165
+ if (redis.plan.startsWith('shield-')) {
166
+ core_1.ux.error('\n Using redis:cli on Heroku Redis shield plans is not supported.\n Please see Heroku DevCenter for more details: https://devcenter.heroku.com/articles/shield-private-space#shield-features\n ', { exit: 1 });
167
+ }
168
+ const hobby = redis.plan.indexOf('hobby') === 0;
169
+ const prefer_native_tls = redis.prefer_native_tls;
170
+ if (!prefer_native_tls && hobby) {
171
+ await (0, confirmCommand_1.default)(flags.app, flags.confirm, 'WARNING: Insecure action.\nAll data, including the Redis password, will not be encrypted.');
172
+ }
173
+ const nonBastionVars = Object.keys(configVars)
174
+ .filter(function (configVar) {
175
+ return !(/(?:BASTIONS|BASTION_KEY|BASTION_REKEYS_AFTER)$/.test(configVar));
176
+ })
177
+ .join(', ');
178
+ core_1.ux.log(`Connecting to ${addon.name} (${nonBastionVars}):`);
179
+ return maybeTunnel(redis, configVars);
180
+ }
181
+ }
182
+ exports.default = Cli;
183
+ Cli.topic = 'redis';
184
+ Cli.description = 'opens a redis prompt';
185
+ Cli.flags = {
186
+ confirm: command_1.flags.string({ char: 'c' }),
187
+ app: command_1.flags.app({ required: true }),
188
+ remote: command_1.flags.remote(),
189
+ };
190
+ Cli.args = {
191
+ database: core_1.Args.string(),
192
+ };
193
+ Cli.examples = [
194
+ '$ heroku redis:cli --app=my-app my-database',
195
+ '$ heroku redis:cli --app=my-app --confirm my-database',
196
+ ];
197
+ async function getRedisConfigVars(addon, heroku) {
198
+ const { body: config } = await heroku.get(`/apps/${addon.billing_entity.name}/config-vars`);
199
+ const redisConfigVars = {};
200
+ addon.config_vars.forEach(configVar => {
201
+ redisConfigVars[configVar] = config[configVar];
202
+ });
203
+ return redisConfigVars;
204
+ }
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Credentials 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
+ reset: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
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,32 @@
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 api_1 = require("../../lib/redis/api");
6
+ class Credentials extends command_1.Command {
7
+ async run() {
8
+ const { args, flags } = await this.parse(Credentials);
9
+ const { app, reset } = flags;
10
+ const { database } = args;
11
+ const addon = await (0, api_1.default)(app, database, false, this.heroku).getRedisAddon();
12
+ if (reset) {
13
+ core_1.ux.log(`Resetting credentials for ${addon.name}`);
14
+ await (0, api_1.default)(app, database, false, this.heroku).request(`/redis/v0/databases/${addon.name}/credentials_rotation`, 'POST');
15
+ }
16
+ else {
17
+ const { body: redis } = await (0, api_1.default)(app, database, false, this.heroku).request(`/redis/v0/databases/${addon.name}`);
18
+ core_1.ux.log(redis.resource_url);
19
+ }
20
+ }
21
+ }
22
+ exports.default = Credentials;
23
+ Credentials.topic = 'redis';
24
+ Credentials.description = 'display credentials information';
25
+ Credentials.flags = {
26
+ app: command_1.flags.app({ required: true }),
27
+ remote: command_1.flags.remote(),
28
+ reset: command_1.flags.boolean({ description: 'reset credentials' }),
29
+ };
30
+ Credentials.args = {
31
+ database: core_1.Args.string({ required: false }),
32
+ };
@@ -0,0 +1,15 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Info extends Command {
3
+ static topic: string;
4
+ static description: string;
5
+ static aliases: 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
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ static args: {
12
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,25 @@
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 api_1 = require("../../lib/redis/api");
6
+ class Info extends command_1.Command {
7
+ async run() {
8
+ const { flags, args } = await this.parse(Info);
9
+ const { app, json } = flags;
10
+ const { database } = args;
11
+ return (0, api_1.default)(app, database, json, this.heroku).info();
12
+ }
13
+ }
14
+ exports.default = Info;
15
+ Info.topic = 'redis';
16
+ Info.description = 'gets information about redis';
17
+ Info.aliases = ['redis'];
18
+ Info.flags = {
19
+ app: command_1.flags.app({ required: true }),
20
+ remote: command_1.flags.remote(),
21
+ json: command_1.flags.boolean({ char: 'j', description: 'output in json format' }),
22
+ };
23
+ Info.args = {
24
+ database: core_1.Args.string(),
25
+ };
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class KeyspaceNotifications 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
+ config: import("@oclif/core/lib/interfaces").OptionFlag<string, 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,47 @@
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 api_1 = require("../../lib/redis/api");
6
+ const tsheredoc_1 = require("tsheredoc");
7
+ const core_2 = require("@oclif/core");
8
+ class KeyspaceNotifications extends command_1.Command {
9
+ async run() {
10
+ const { flags, args } = await this.parse(KeyspaceNotifications);
11
+ const { app, config } = flags;
12
+ const { database } = args;
13
+ const api = (0, api_1.default)(app, database, false, this.heroku);
14
+ const addon = await api.getRedisAddon();
15
+ const { body: updated_config } = await api.request(`/redis/v0/databases/${addon.name}/config`, 'PATCH', { notify_keyspace_events: config });
16
+ core_2.ux.log(`Keyspace notifications for ${addon.name} (${addon.config_vars.join(', ')}) set to '${updated_config.notify_keyspace_events.value}'.`);
17
+ }
18
+ }
19
+ exports.default = KeyspaceNotifications;
20
+ KeyspaceNotifications.topic = 'redis';
21
+ KeyspaceNotifications.description = (0, tsheredoc_1.default) `
22
+ set the keyspace notifications configuration
23
+ Set the configuration to enable keyspace notification events:
24
+ K Keyspace events, published with __keyspace@<db>__ prefix.
25
+ E Keyevent events, published with __keyevent@<db>__ prefix.
26
+ g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
27
+ $ String commands
28
+ l List commands
29
+ s Set commands
30
+ h Hash commands
31
+ z Sorted set commands
32
+ t Stream commands
33
+ x Expired events (events generated every time a key expires)
34
+ e Evicted events (events generated when a key is evicted for maxmemory)
35
+ m Key miss events (events generated when a key that doesn't exist is accessed)
36
+ A Alias for "g$lshztxe", so that the "AKE" string means all the events except "m".
37
+
38
+ pass an empty string ('') to disable keyspace notifications
39
+ `;
40
+ KeyspaceNotifications.flags = {
41
+ app: command_1.flags.app({ required: true }),
42
+ remote: command_1.flags.remote(),
43
+ config: command_1.flags.string({ char: 'c', description: 'set keyspace notifications configuration', hasValue: true, required: true }),
44
+ };
45
+ KeyspaceNotifications.args = {
46
+ database: core_1.Args.string(),
47
+ };
@@ -0,0 +1,16 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Maintenance 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
+ window: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ run: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ static args: {
13
+ database: import("@oclif/core/lib/interfaces/parser").Arg<string | undefined, Record<string, unknown>>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,63 @@
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 api_1 = require("../../lib/redis/api");
6
+ const tsheredoc_1 = require("tsheredoc");
7
+ class Maintenance extends command_1.Command {
8
+ async run() {
9
+ var _a;
10
+ const { args, flags } = await this.parse(Maintenance);
11
+ const { app: appName, window, run, force } = flags;
12
+ const { database } = args;
13
+ const api = (0, api_1.default)(appName, database, false, this.heroku);
14
+ const addon = await api.getRedisAddon();
15
+ if ((_a = addon.plan.name) === null || _a === void 0 ? void 0 : _a.match(/hobby/)) {
16
+ core_1.ux.error('redis:maintenance is not available for hobby-dev instances', { exit: 1 });
17
+ }
18
+ if (window) {
19
+ if (!window.match(/[A-Za-z]{3,10} \d\d?:[03]0/)) {
20
+ core_1.ux.error('Maintenance windows must be "Day HH:MM", where MM is 00 or 30.', { exit: 1 });
21
+ }
22
+ const { body: maintenance } = await api.request(`/redis/v0/databases/${addon.name}/maintenance_window`, 'PUT', { description: window });
23
+ core_1.ux.log(`Maintenance window for ${addon.name} (${addon.config_vars.join(', ')}) set to ${maintenance.window}.`);
24
+ return;
25
+ }
26
+ if (run) {
27
+ const { body: app } = await this.heroku.get(`/apps/${appName}`);
28
+ if (!app.maintenance && !force) {
29
+ core_1.ux.error('Application must be in maintenance mode or --force flag must be used', { exit: 1 });
30
+ }
31
+ const { body: maintenance } = await api.request(`/redis/v0/databases/${addon.name}/maintenance`, 'POST');
32
+ core_1.ux.log(maintenance.message);
33
+ return;
34
+ }
35
+ const { body: maintenance } = await api.request(`/redis/v0/databases/${addon.name}/maintenance`, 'GET');
36
+ core_1.ux.log(maintenance.message);
37
+ }
38
+ }
39
+ exports.default = Maintenance;
40
+ Maintenance.topic = 'redis';
41
+ Maintenance.description = (0, tsheredoc_1.default) `
42
+ manage maintenance windows
43
+ Set or change the maintenance window for your Redis instance
44
+ `;
45
+ Maintenance.flags = {
46
+ app: command_1.flags.app({ required: true }),
47
+ remote: command_1.flags.remote(),
48
+ window: command_1.flags.string({
49
+ char: 'w',
50
+ description: 'set weekly UTC maintenance window (format: "Day HH:MM", where MM is 00 or 30)',
51
+ hasValue: true,
52
+ required: false,
53
+ }),
54
+ run: command_1.flags.boolean({ description: 'start maintenance', required: false }),
55
+ force: command_1.flags.boolean({
56
+ char: 'f',
57
+ description: 'start maintenance without entering application maintenance mode',
58
+ required: false,
59
+ }),
60
+ };
61
+ Maintenance.args = {
62
+ database: core_1.Args.string({ required: false }),
63
+ };
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class MaxMemory 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
+ policy: 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,40 @@
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 api_1 = require("../../lib/redis/api");
6
+ class MaxMemory extends command_1.Command {
7
+ async run() {
8
+ const { flags, args } = await this.parse(MaxMemory);
9
+ const { app, policy } = flags;
10
+ const { database } = args;
11
+ const addon = await (0, api_1.default)(app, database, false, this.heroku).getRedisAddon();
12
+ const { body: config } = await (0, api_1.default)(app, database, false, this.heroku)
13
+ .request(`/redis/v0/databases/${addon.name}/config`, 'PATCH', { maxmemory_policy: policy });
14
+ const configVars = addon.config_vars || [];
15
+ core_1.ux.log(`Maxmemory policy for ${addon.name} (${configVars.join(', ')}) set to ${config.maxmemory_policy.value}.`);
16
+ core_1.ux.log(`${config.maxmemory_policy.value} ${config.maxmemory_policy.values[config.maxmemory_policy.value]}.`);
17
+ }
18
+ }
19
+ exports.default = MaxMemory;
20
+ MaxMemory.topic = 'redis';
21
+ MaxMemory.description = `set the key eviction policy when instances reach their storage limit
22
+ Available policies for key eviction include:
23
+
24
+ noeviction # returns errors when memory limit is reached
25
+ allkeys-lfu # removes less frequently used keys first
26
+ volatile-lfu # removes less frequently used keys first that have an expiry set
27
+ allkeys-lru # removes less recently used keys first
28
+ volatile-lru # removes less recently used keys first that have an expiry set
29
+ allkeys-random # evicts random keys
30
+ volatile-random # evicts random keys but only those that have an expiry set
31
+ volatile-ttl # only evicts keys with an expiry set and a short TTL
32
+ `;
33
+ MaxMemory.flags = {
34
+ app: command_1.flags.app({ required: true }),
35
+ policy: command_1.flags.string({ char: 'p', description: 'set policy name', required: true }),
36
+ remote: command_1.flags.remote(),
37
+ };
38
+ MaxMemory.args = {
39
+ database: core_1.Args.string(),
40
+ };
@@ -0,0 +1,13 @@
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
+ 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,39 @@
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 api_1 = require("../../lib/redis/api");
6
+ class Promote extends command_1.Command {
7
+ async run() {
8
+ const { flags, args } = await this.parse(Promote);
9
+ const api = (0, api_1.default)(flags.app, args.database, false, this.heroku);
10
+ const { body: addonsList } = await this.heroku.get(`/apps/${flags.app}/addons`);
11
+ const addon = await api.getRedisAddon(addonsList);
12
+ const redisFilter = api.makeAddonsFilter('REDIS_URL');
13
+ const redis = redisFilter(addonsList);
14
+ if (redis.length === 1 && redis[0].config_vars.filter((c) => c.endsWith('_URL')).length === 1) {
15
+ const attachment = redis[0];
16
+ await this.heroku.post('/addon-attachments', {
17
+ body: {
18
+ app: { name: flags.app }, addon: { name: attachment.name }, confirm: flags.app,
19
+ },
20
+ });
21
+ }
22
+ core_1.ux.log(`Promoting ${addon.name} to REDIS_URL on ${flags.app}`);
23
+ await this.heroku.post('/addon-attachments', {
24
+ body: {
25
+ app: { name: flags.app }, addon: { name: addon.name }, confirm: flags.app, name: 'REDIS',
26
+ },
27
+ });
28
+ }
29
+ }
30
+ exports.default = Promote;
31
+ Promote.topic = 'redis';
32
+ Promote.description = 'sets DATABASE as your REDIS_URL';
33
+ Promote.flags = {
34
+ app: command_1.flags.app({ required: true }),
35
+ remote: command_1.flags.remote(),
36
+ };
37
+ Promote.args = {
38
+ database: core_1.Args.string({ required: false }),
39
+ };
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class StatsReset 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
+ confirm: 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,36 @@
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 api_1 = require("../../lib/redis/api");
6
+ const confirmCommand_1 = require("../../lib/confirmCommand");
7
+ const tsheredoc_1 = require("tsheredoc");
8
+ const color_1 = require("@heroku-cli/color");
9
+ class StatsReset extends command_1.Command {
10
+ async run() {
11
+ const { flags, args } = await this.parse(StatsReset);
12
+ const { app, confirm } = flags;
13
+ const { database } = args;
14
+ const addon = await (0, api_1.default)(app, database, false, this.heroku).getRedisAddon();
15
+ const warning = (0, tsheredoc_1.default)(`
16
+ WARNING: Irreversible action.
17
+ All stats covered by RESETSTAT will be reset on ${color_1.default.addon(addon.name || '')}.
18
+ `);
19
+ await (0, confirmCommand_1.default)(app, confirm, warning);
20
+ core_1.ux.action.start(`Resetting stats on ${color_1.default.addon(addon.name || '')}`);
21
+ const { body: response } = await (0, api_1.default)(app, database, false, this.heroku)
22
+ .request(`/redis/v0/databases/${addon.id}/stats/reset`, 'POST');
23
+ core_1.ux.action.stop(response.message);
24
+ }
25
+ }
26
+ exports.default = StatsReset;
27
+ StatsReset.topic = 'redis';
28
+ StatsReset.description = 'reset all stats covered by RESETSTAT (https://redis.io/commands/config-resetstat)';
29
+ StatsReset.flags = {
30
+ app: command_1.flags.app({ required: true }),
31
+ remote: command_1.flags.remote(),
32
+ confirm: command_1.flags.string({ char: 'c' }),
33
+ };
34
+ StatsReset.args = {
35
+ database: core_1.Args.string(),
36
+ };
@@ -0,0 +1,14 @@
1
+ import { Command } from '@heroku-cli/command';
2
+ export default class Timeout 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
+ seconds: import("@oclif/core/lib/interfaces").OptionFlag<number, 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,35 @@
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 api_1 = require("../../lib/redis/api");
6
+ class Timeout extends command_1.Command {
7
+ async run() {
8
+ const { flags, args } = await this.parse(Timeout);
9
+ const { app, seconds } = flags;
10
+ const { database } = args;
11
+ const addon = await (0, api_1.default)(app, database, false, this.heroku).getRedisAddon();
12
+ const { body: response } = await (0, api_1.default)(app, database, false, this.heroku)
13
+ .request(`/redis/v0/databases/${addon.id}/config`, 'PATCH', { timeout: seconds });
14
+ core_1.ux.log(`Timeout for ${addon.name} (${addon.config_vars.join(', ')}) set to ${response.timeout.value} seconds.`);
15
+ if (response.timeout.value === 0) {
16
+ core_1.ux.log('Connections to the Redis instance can idle indefinitely.');
17
+ }
18
+ else {
19
+ core_1.ux.log(`Connections to the Redis instance will be stopped after idling for ${response.timeout.value} seconds.`);
20
+ }
21
+ }
22
+ }
23
+ exports.default = Timeout;
24
+ Timeout.topic = 'redis';
25
+ Timeout.description = `set the number of seconds to wait before killing idle connections
26
+ A value of zero means that connections will not be closed.
27
+ `;
28
+ Timeout.flags = {
29
+ app: command_1.flags.app({ required: true }),
30
+ remote: command_1.flags.remote(),
31
+ seconds: command_1.flags.integer({ char: 's', description: 'set timeout value', required: true }),
32
+ };
33
+ Timeout.args = {
34
+ database: core_1.Args.string(),
35
+ };