@mittwald/cli 1.0.0-alpha.46 → 1.0.0-alpha.47

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 (491) hide show
  1. package/README.md +214 -154
  2. package/bin/run.js +1 -1
  3. package/dist/commands/app/copy.d.ts +1 -1
  4. package/dist/commands/app/copy.js +2 -2
  5. package/dist/commands/app/create/node.d.ts +4 -4
  6. package/dist/commands/app/create/node.js +2 -2
  7. package/dist/commands/app/create/php.d.ts +4 -4
  8. package/dist/commands/app/create/php.js +2 -2
  9. package/dist/commands/app/create/python.d.ts +4 -4
  10. package/dist/commands/app/create/python.js +2 -2
  11. package/dist/commands/app/create/static.d.ts +4 -4
  12. package/dist/commands/app/create/static.js +2 -2
  13. package/dist/commands/app/dependency/list.d.ts +3 -4
  14. package/dist/commands/app/dependency/list.js +2 -5
  15. package/dist/commands/app/dependency/update.d.ts +1 -1
  16. package/dist/commands/app/dependency/update.js +2 -2
  17. package/dist/commands/app/dependency/versions.d.ts +3 -4
  18. package/dist/commands/app/dependency/versions.js +2 -5
  19. package/dist/commands/app/download.d.ts +3 -2
  20. package/dist/commands/app/download.js +15 -31
  21. package/dist/commands/app/get.d.ts +1 -1
  22. package/dist/commands/app/get.js +4 -4
  23. package/dist/commands/app/install/contao.d.ts +3 -3
  24. package/dist/commands/app/install/contao.js +2 -3
  25. package/dist/commands/app/install/drupal.d.ts +4 -4
  26. package/dist/commands/app/install/drupal.js +2 -3
  27. package/dist/commands/app/install/grav.d.ts +3 -3
  28. package/dist/commands/app/install/grav.js +2 -3
  29. package/dist/commands/app/install/joomla.d.ts +3 -3
  30. package/dist/commands/app/install/joomla.js +2 -3
  31. package/dist/commands/app/install/matomo.d.ts +3 -3
  32. package/dist/commands/app/install/matomo.js +2 -3
  33. package/dist/commands/app/install/moodle.d.ts +4 -4
  34. package/dist/commands/app/install/moodle.js +2 -3
  35. package/dist/commands/app/install/neos.d.ts +4 -4
  36. package/dist/commands/app/install/neos.js +2 -3
  37. package/dist/commands/app/install/nextcloud.d.ts +3 -3
  38. package/dist/commands/app/install/nextcloud.js +2 -3
  39. package/dist/commands/app/install/prestashop.d.ts +4 -4
  40. package/dist/commands/app/install/prestashop.js +2 -3
  41. package/dist/commands/app/install/shopware5.d.ts +3 -3
  42. package/dist/commands/app/install/shopware5.js +2 -3
  43. package/dist/commands/app/install/shopware6.d.ts +4 -4
  44. package/dist/commands/app/install/shopware6.js +2 -3
  45. package/dist/commands/app/install/typo3.d.ts +4 -4
  46. package/dist/commands/app/install/typo3.js +2 -3
  47. package/dist/commands/app/install/wordpress.d.ts +4 -4
  48. package/dist/commands/app/install/wordpress.js +2 -3
  49. package/dist/commands/app/list-upgrade-candidates.d.ts +2 -2
  50. package/dist/commands/app/list-upgrade-candidates.js +4 -4
  51. package/dist/commands/app/list.d.ts +3 -3
  52. package/dist/commands/app/list.js +4 -4
  53. package/dist/commands/app/ssh.d.ts +1 -1
  54. package/dist/commands/app/ssh.js +6 -6
  55. package/dist/commands/app/uninstall.d.ts +1 -1
  56. package/dist/commands/app/uninstall.js +2 -2
  57. package/dist/commands/app/upgrade.d.ts +3 -2
  58. package/dist/commands/app/upgrade.js +9 -11
  59. package/dist/commands/app/upload.d.ts +3 -2
  60. package/dist/commands/app/upload.js +15 -28
  61. package/dist/commands/app/versions.d.ts +2 -2
  62. package/dist/commands/app/versions.js +10 -19
  63. package/dist/commands/backup/create.d.ts +3 -3
  64. package/dist/commands/backup/create.js +6 -7
  65. package/dist/commands/backup/delete.d.ts +2 -2
  66. package/dist/commands/backup/delete.js +4 -9
  67. package/dist/commands/backup/download.d.ts +3 -3
  68. package/dist/commands/backup/download.js +20 -25
  69. package/dist/commands/backup/get.d.ts +2 -2
  70. package/dist/commands/backup/get.js +9 -12
  71. package/dist/commands/backup/list.d.ts +2 -4
  72. package/dist/commands/backup/list.js +8 -11
  73. package/dist/commands/backup/schedule/list.d.ts +2 -4
  74. package/dist/commands/backup/schedule/list.js +2 -5
  75. package/dist/commands/context/get.d.ts +1 -1
  76. package/dist/commands/context/get.js +2 -2
  77. package/dist/commands/context/reset.d.ts +1 -1
  78. package/dist/commands/context/reset.js +2 -2
  79. package/dist/commands/context/set.d.ts +1 -1
  80. package/dist/commands/context/set.js +6 -11
  81. package/dist/commands/conversation/categories.d.ts +2 -4
  82. package/dist/commands/conversation/categories.js +3 -6
  83. package/dist/commands/conversation/close.d.ts +3 -3
  84. package/dist/commands/conversation/close.js +6 -10
  85. package/dist/commands/conversation/create.d.ts +1 -1
  86. package/dist/commands/conversation/create.js +2 -2
  87. package/dist/commands/conversation/list.d.ts +2 -4
  88. package/dist/commands/conversation/list.js +2 -5
  89. package/dist/commands/conversation/reply.d.ts +3 -3
  90. package/dist/commands/conversation/reply.js +9 -14
  91. package/dist/commands/conversation/show.d.ts +3 -3
  92. package/dist/commands/conversation/show.js +8 -14
  93. package/dist/commands/conversation/show2.d.ts +1 -1
  94. package/dist/commands/conversation/show2.js +1 -1
  95. package/dist/commands/cronjob/create.d.ts +3 -1
  96. package/dist/commands/cronjob/create.js +10 -4
  97. package/dist/commands/cronjob/delete.d.ts +1 -1
  98. package/dist/commands/cronjob/delete.js +2 -2
  99. package/dist/commands/cronjob/execute.d.ts +1 -1
  100. package/dist/commands/cronjob/execute.js +1 -1
  101. package/dist/commands/cronjob/execution/abort.d.ts +1 -1
  102. package/dist/commands/cronjob/execution/abort.js +2 -2
  103. package/dist/commands/cronjob/execution/get.d.ts +1 -1
  104. package/dist/commands/cronjob/execution/get.js +1 -1
  105. package/dist/commands/cronjob/execution/list.d.ts +2 -4
  106. package/dist/commands/cronjob/execution/list.js +5 -7
  107. package/dist/commands/cronjob/execution/logs.d.ts +1 -1
  108. package/dist/commands/cronjob/execution/logs.js +2 -2
  109. package/dist/commands/cronjob/get.d.ts +2 -2
  110. package/dist/commands/cronjob/get.js +3 -3
  111. package/dist/commands/cronjob/list.d.ts +2 -4
  112. package/dist/commands/cronjob/list.js +3 -6
  113. package/dist/commands/database/mysql/charsets.d.ts +3 -4
  114. package/dist/commands/database/mysql/charsets.js +2 -5
  115. package/dist/commands/database/mysql/create.d.ts +2 -2
  116. package/dist/commands/database/mysql/create.js +5 -5
  117. package/dist/commands/database/mysql/delete.d.ts +1 -2
  118. package/dist/commands/database/mysql/delete.js +3 -7
  119. package/dist/commands/database/mysql/dump.d.ts +1 -1
  120. package/dist/commands/database/mysql/dump.js +6 -6
  121. package/dist/commands/database/mysql/get.d.ts +1 -1
  122. package/dist/commands/database/mysql/get.js +2 -2
  123. package/dist/commands/database/mysql/import.d.ts +1 -1
  124. package/dist/commands/database/mysql/import.js +6 -6
  125. package/dist/commands/database/mysql/list.d.ts +2 -4
  126. package/dist/commands/database/mysql/list.js +2 -5
  127. package/dist/commands/database/mysql/phpmyadmin.d.ts +1 -1
  128. package/dist/commands/database/mysql/phpmyadmin.js +2 -2
  129. package/dist/commands/database/mysql/port-forward.d.ts +1 -1
  130. package/dist/commands/database/mysql/port-forward.js +6 -6
  131. package/dist/commands/database/mysql/shell.d.ts +1 -1
  132. package/dist/commands/database/mysql/shell.js +6 -6
  133. package/dist/commands/database/mysql/user/delete.d.ts +1 -1
  134. package/dist/commands/database/mysql/user/delete.js +2 -2
  135. package/dist/commands/database/mysql/user/get.d.ts +1 -1
  136. package/dist/commands/database/mysql/user/get.js +1 -1
  137. package/dist/commands/database/mysql/user/list.d.ts +2 -4
  138. package/dist/commands/database/mysql/user/list.js +1 -4
  139. package/dist/commands/database/mysql/versions.d.ts +2 -4
  140. package/dist/commands/database/mysql/versions.js +1 -4
  141. package/dist/commands/database/redis/create.d.ts +1 -1
  142. package/dist/commands/database/redis/create.js +2 -2
  143. package/dist/commands/database/redis/get.d.ts +1 -1
  144. package/dist/commands/database/redis/get.js +1 -1
  145. package/dist/commands/database/redis/list.d.ts +2 -4
  146. package/dist/commands/database/redis/list.js +2 -5
  147. package/dist/commands/database/redis/shell.d.ts +1 -1
  148. package/dist/commands/database/redis/shell.js +6 -6
  149. package/dist/commands/database/redis/versions.d.ts +2 -4
  150. package/dist/commands/database/redis/versions.js +2 -5
  151. package/dist/commands/ddev/init.d.ts +1 -1
  152. package/dist/commands/ddev/init.js +3 -3
  153. package/dist/commands/ddev/render-config.d.ts +1 -1
  154. package/dist/commands/ddev/render-config.js +2 -2
  155. package/dist/commands/domain/dnszone/get.d.ts +1 -1
  156. package/dist/commands/domain/dnszone/get.js +3 -3
  157. package/dist/commands/domain/dnszone/list.d.ts +2 -4
  158. package/dist/commands/domain/dnszone/list.js +3 -6
  159. package/dist/commands/domain/dnszone/update.d.ts +1 -1
  160. package/dist/commands/domain/dnszone/update.js +3 -3
  161. package/dist/commands/domain/get.d.ts +1 -1
  162. package/dist/commands/domain/get.js +3 -3
  163. package/dist/commands/domain/list.d.ts +2 -4
  164. package/dist/commands/domain/list.js +2 -5
  165. package/dist/commands/domain/virtualhost/create.d.ts +1 -1
  166. package/dist/commands/domain/virtualhost/create.js +2 -2
  167. package/dist/commands/domain/virtualhost/delete.d.ts +1 -1
  168. package/dist/commands/domain/virtualhost/delete.js +1 -1
  169. package/dist/commands/domain/virtualhost/get.d.ts +1 -1
  170. package/dist/commands/domain/virtualhost/get.js +2 -2
  171. package/dist/commands/domain/virtualhost/list.d.ts +2 -4
  172. package/dist/commands/domain/virtualhost/list.js +2 -5
  173. package/dist/commands/login/reset.d.ts +1 -1
  174. package/dist/commands/login/reset.js +2 -2
  175. package/dist/commands/login/status.d.ts +1 -1
  176. package/dist/commands/login/status.js +1 -1
  177. package/dist/commands/login/token.d.ts +1 -1
  178. package/dist/commands/login/token.js +2 -2
  179. package/dist/commands/mail/address/create.d.ts +3 -2
  180. package/dist/commands/mail/address/create.js +6 -5
  181. package/dist/commands/mail/address/delete.d.ts +1 -1
  182. package/dist/commands/mail/address/delete.js +1 -1
  183. package/dist/commands/mail/address/get.d.ts +1 -1
  184. package/dist/commands/mail/address/get.js +1 -1
  185. package/dist/commands/mail/address/list.d.ts +2 -4
  186. package/dist/commands/mail/address/list.js +6 -9
  187. package/dist/commands/mail/address/update.d.ts +1 -1
  188. package/dist/commands/mail/address/update.js +2 -2
  189. package/dist/commands/mail/deliverybox/get.d.ts +1 -1
  190. package/dist/commands/mail/deliverybox/get.js +1 -1
  191. package/dist/commands/mail/deliverybox/list.d.ts +2 -4
  192. package/dist/commands/mail/deliverybox/list.js +3 -6
  193. package/dist/commands/org/delete.d.ts +1 -1
  194. package/dist/commands/org/delete.js +2 -2
  195. package/dist/commands/org/get.d.ts +1 -1
  196. package/dist/commands/org/get.js +3 -3
  197. package/dist/commands/org/invite/list-own.d.ts +3 -3
  198. package/dist/commands/org/invite/list-own.js +2 -2
  199. package/dist/commands/org/invite/list.d.ts +3 -6
  200. package/dist/commands/org/invite/list.js +10 -12
  201. package/dist/commands/org/invite/revoke.d.ts +1 -1
  202. package/dist/commands/org/invite/revoke.js +1 -1
  203. package/dist/commands/org/invite.d.ts +2 -2
  204. package/dist/commands/org/invite.js +5 -5
  205. package/dist/commands/org/list.d.ts +2 -4
  206. package/dist/commands/org/list.js +1 -4
  207. package/dist/commands/org/membership/list-own.d.ts +3 -3
  208. package/dist/commands/org/membership/list-own.js +6 -7
  209. package/dist/commands/org/membership/list.d.ts +3 -3
  210. package/dist/commands/org/membership/list.js +7 -8
  211. package/dist/commands/org/membership/revoke.d.ts +1 -1
  212. package/dist/commands/org/membership/revoke.js +1 -1
  213. package/dist/commands/project/create.d.ts +2 -2
  214. package/dist/commands/project/create.js +3 -3
  215. package/dist/commands/project/delete.d.ts +1 -1
  216. package/dist/commands/project/delete.js +3 -3
  217. package/dist/commands/project/filesystem/usage.d.ts +1 -1
  218. package/dist/commands/project/filesystem/usage.js +16 -11
  219. package/dist/commands/project/get.d.ts +2 -2
  220. package/dist/commands/project/get.js +6 -6
  221. package/dist/commands/project/invite/get.d.ts +1 -1
  222. package/dist/commands/project/invite/get.js +1 -1
  223. package/dist/commands/project/invite/list-own.d.ts +2 -4
  224. package/dist/commands/project/invite/list-own.js +2 -5
  225. package/dist/commands/project/invite/list.d.ts +2 -4
  226. package/dist/commands/project/invite/list.js +13 -16
  227. package/dist/commands/project/list.d.ts +3 -6
  228. package/dist/commands/project/list.js +1 -4
  229. package/dist/commands/project/membership/get-own.d.ts +1 -1
  230. package/dist/commands/project/membership/get-own.js +2 -2
  231. package/dist/commands/project/membership/get.d.ts +1 -1
  232. package/dist/commands/project/membership/get.js +1 -1
  233. package/dist/commands/project/membership/list-own.d.ts +2 -4
  234. package/dist/commands/project/membership/list-own.js +10 -15
  235. package/dist/commands/project/membership/list.d.ts +3 -3
  236. package/dist/commands/project/membership/list.js +3 -3
  237. package/dist/commands/project/ssh.d.ts +1 -1
  238. package/dist/commands/project/ssh.js +5 -5
  239. package/dist/commands/project/update.d.ts +1 -1
  240. package/dist/commands/project/update.js +2 -2
  241. package/dist/commands/server/get.d.ts +1 -1
  242. package/dist/commands/server/get.js +2 -2
  243. package/dist/commands/server/list.d.ts +2 -4
  244. package/dist/commands/server/list.js +1 -4
  245. package/dist/commands/sftp-user/delete.d.ts +1 -1
  246. package/dist/commands/sftp-user/delete.js +2 -2
  247. package/dist/commands/sftp-user/list.d.ts +2 -5
  248. package/dist/commands/sftp-user/list.js +2 -5
  249. package/dist/commands/ssh-user/delete.d.ts +1 -1
  250. package/dist/commands/ssh-user/delete.js +2 -2
  251. package/dist/commands/ssh-user/list.d.ts +2 -5
  252. package/dist/commands/ssh-user/list.js +2 -5
  253. package/dist/commands/user/api-token/create.d.ts +3 -4
  254. package/dist/commands/user/api-token/create.js +14 -25
  255. package/dist/commands/user/api-token/get.d.ts +1 -1
  256. package/dist/commands/user/api-token/get.js +1 -1
  257. package/dist/commands/user/api-token/list.d.ts +2 -4
  258. package/dist/commands/user/api-token/list.js +10 -13
  259. package/dist/commands/user/api-token/revoke.d.ts +1 -1
  260. package/dist/commands/user/api-token/revoke.js +1 -1
  261. package/dist/commands/user/get.d.ts +1 -1
  262. package/dist/commands/user/get.js +1 -1
  263. package/dist/commands/user/session/get.d.ts +1 -1
  264. package/dist/commands/user/session/get.js +1 -1
  265. package/dist/commands/user/session/list.d.ts +2 -4
  266. package/dist/commands/user/session/list.js +10 -12
  267. package/dist/commands/user/ssh-key/create.d.ts +2 -2
  268. package/dist/commands/user/ssh-key/create.js +5 -5
  269. package/dist/commands/user/ssh-key/delete.d.ts +1 -1
  270. package/dist/commands/user/ssh-key/delete.js +1 -1
  271. package/dist/commands/user/ssh-key/get.d.ts +1 -1
  272. package/dist/commands/user/ssh-key/get.js +1 -1
  273. package/dist/commands/user/ssh-key/import.d.ts +2 -2
  274. package/dist/commands/user/ssh-key/import.js +5 -5
  275. package/dist/commands/user/ssh-key/list.d.ts +3 -3
  276. package/dist/commands/user/ssh-key/list.js +3 -3
  277. package/dist/lib/apiutil/SuccessfulResponse.d.ts +19 -0
  278. package/dist/lib/auth/token.js +1 -1
  279. package/dist/{BaseCommand.js → lib/basecommands/BaseCommand.js} +4 -4
  280. package/dist/{types.d.ts → lib/basecommands/CommandFlags.d.ts} +2 -4
  281. package/dist/{DeleteBaseCommand.d.ts → lib/basecommands/DeleteBaseCommand.d.ts} +1 -1
  282. package/dist/{DeleteBaseCommand.js → lib/basecommands/DeleteBaseCommand.js} +3 -3
  283. package/dist/{rendering/react → lib/basecommands}/ExecRenderBaseCommand.d.ts +2 -2
  284. package/dist/{rendering/react → lib/basecommands}/ExecRenderBaseCommand.js +2 -2
  285. package/dist/{ExtendedBaseCommand.d.ts → lib/basecommands/ExtendedBaseCommand.d.ts} +2 -2
  286. package/dist/{ExtendedBaseCommand.js → lib/basecommands/ExtendedBaseCommand.js} +3 -3
  287. package/dist/{GetBaseCommand.d.ts → lib/basecommands/GetBaseCommand.d.ts} +1 -1
  288. package/dist/{GetBaseCommand.js → lib/basecommands/GetBaseCommand.js} +1 -1
  289. package/dist/{ListBaseCommand.d.ts → lib/basecommands/ListBaseCommand.d.ts} +5 -3
  290. package/dist/{ListBaseCommand.js → lib/basecommands/ListBaseCommand.js} +10 -3
  291. package/dist/{rendering/react → lib/basecommands}/RenderBaseCommand.d.ts +3 -3
  292. package/dist/{rendering/react → lib/basecommands}/RenderBaseCommand.js +6 -6
  293. package/dist/lib/{context.d.ts → context/Context.d.ts} +11 -14
  294. package/dist/lib/{context.js → context/Context.js} +12 -5
  295. package/dist/lib/context/ContextProvider.d.ts +6 -0
  296. package/dist/lib/{context_ddev.d.ts → context/DDEVContextProvider.d.ts} +3 -2
  297. package/dist/lib/{context_ddev.js → context/DDEVContextProvider.js} +2 -2
  298. package/dist/lib/context/FlagSet.d.ts +20 -0
  299. package/dist/lib/{context_flags.d.ts → context/FlagSetBuilder.d.ts} +23 -9
  300. package/dist/lib/context/FlagSetBuilder.js +148 -0
  301. package/dist/lib/context/TerraformContextProvider.d.ts +7 -0
  302. package/dist/lib/{context_terraform.js → context/TerraformContextProvider.js} +2 -2
  303. package/dist/lib/{context_user.d.ts → context/UserContextProvider.d.ts} +4 -2
  304. package/dist/lib/{context_user.js → context/UserContextProvider.js} +4 -6
  305. package/dist/lib/context/WritableContextProvider.d.ts +14 -0
  306. package/dist/lib/context/WritableContextProvider.js +1 -0
  307. package/dist/lib/ddev/config_loader.js +1 -1
  308. package/dist/lib/ddev/init_assert.js +2 -2
  309. package/dist/lib/error/UnexpectedShortIDPassedError.js +1 -1
  310. package/dist/lib/{handleError.d.ts → error/handleError.d.ts} +2 -3
  311. package/dist/lib/{handleError.js → error/handleError.js} +4 -6
  312. package/dist/lib/flags/expireFlags.d.ts +7 -0
  313. package/dist/lib/flags/expireFlags.js +18 -0
  314. package/dist/lib/{app → resources/app}/Installer.d.ts +5 -3
  315. package/dist/lib/{app → resources/app}/Installer.js +4 -4
  316. package/dist/lib/{app → resources/app}/custom_installation.js +3 -3
  317. package/dist/lib/{app → resources/app}/flags.d.ts +7 -7
  318. package/dist/lib/{app → resources/app}/flags.js +18 -12
  319. package/dist/lib/{app → resources/app}/hooks.js +1 -1
  320. package/dist/lib/{app → resources/app}/install.d.ts +1 -1
  321. package/dist/lib/resources/app/sync.d.ts +15 -0
  322. package/dist/lib/resources/app/sync.js +55 -0
  323. package/dist/lib/resources/app/upgrade.d.ts +1 -0
  324. package/dist/lib/resources/app/upgrade.js +1 -0
  325. package/dist/lib/{app → resources/app}/versions.d.ts +1 -1
  326. package/dist/lib/{app → resources/app}/versions.js +1 -1
  327. package/dist/lib/{app → resources/app}/wait.d.ts +3 -2
  328. package/dist/lib/{app → resources/app}/wait.js +3 -3
  329. package/dist/lib/resources/backup/flags.d.ts +1 -0
  330. package/dist/lib/resources/backup/flags.js +4 -0
  331. package/dist/lib/resources/conversation/flags.d.ts +2 -0
  332. package/dist/lib/resources/conversation/flags.js +12 -0
  333. package/dist/lib/{database → resources/database}/common.d.ts +1 -1
  334. package/dist/lib/{database → resources/database}/mysql/connect.d.ts +1 -1
  335. package/dist/lib/{database → resources/database}/mysql/temp_user.d.ts +1 -1
  336. package/dist/lib/{database → resources/database}/mysql/temp_user.js +1 -1
  337. package/dist/lib/{database → resources/database}/redis/connect.d.ts +1 -1
  338. package/dist/lib/{database → resources/database}/redis/flags.js +2 -2
  339. package/dist/lib/resources/domain/dnszone/flags.d.ts +1 -0
  340. package/dist/lib/{domain → resources/domain}/dnszone/flags.js +2 -2
  341. package/dist/lib/resources/domain/flags.d.ts +1 -0
  342. package/dist/lib/{domain → resources/domain}/flags.js +2 -2
  343. package/dist/lib/resources/mail/flags.d.ts +1 -0
  344. package/dist/lib/{mail → resources/mail}/flags.js +2 -2
  345. package/dist/lib/resources/org/flags.d.ts +2 -0
  346. package/dist/lib/resources/org/flags.js +10 -0
  347. package/dist/lib/{project → resources/project}/flags.d.ts +4 -3
  348. package/dist/lib/{project → resources/project}/flags.js +15 -8
  349. package/dist/lib/{project → resources/project}/hooks.js +1 -1
  350. package/dist/lib/{project → resources/project}/ingress.js +2 -4
  351. package/dist/lib/{projectbackup → resources/projectbackup}/hooks.js +1 -1
  352. package/dist/lib/resources/server/flags.d.ts +2 -0
  353. package/dist/lib/resources/server/flags.js +10 -0
  354. package/dist/lib/resources/ssh/types.js +1 -0
  355. package/dist/lib/units/ByteQuantity.d.ts +23 -0
  356. package/dist/lib/units/ByteQuantity.js +49 -0
  357. package/dist/lib/units/Duration.d.ts +23 -0
  358. package/dist/lib/units/Duration.js +57 -0
  359. package/dist/lib/util/fs/hasBinaryInPath.d.ts +9 -0
  360. package/dist/lib/{hasbin.js → util/fs/hasBinaryInPath.js} +9 -1
  361. package/dist/lib/util/fs/isNotFound.d.ts +8 -0
  362. package/dist/lib/util/fs/isNotFound.js +10 -0
  363. package/dist/lib/util/fs/pathExists.d.ts +7 -0
  364. package/dist/lib/{fsutil.js → util/fs/pathExists.js} +7 -3
  365. package/dist/lib/util/maybe.d.ts +12 -0
  366. package/dist/lib/util/maybe.js +17 -0
  367. package/dist/lib/util/mergeObjects.d.ts +7 -0
  368. package/dist/lib/{mergeObjects.js → util/mergeObjects.js} +8 -2
  369. package/dist/lib/util/password/generatePassword.d.ts +9 -0
  370. package/dist/lib/util/password/generatePassword.js +12 -0
  371. package/dist/lib/util/password/generatePasswordWithSpecialChars.d.ts +9 -0
  372. package/dist/lib/{password.js → util/password/generatePasswordWithSpecialChars.js} +9 -5
  373. package/dist/lib/wait.d.ts +5 -2
  374. package/dist/lib/wait.js +10 -9
  375. package/dist/rendering/formatter/GetFormatter.d.ts +11 -0
  376. package/dist/rendering/formatter/GetFormatter.js +20 -0
  377. package/dist/rendering/formatter/ListDateColumnFormatter.d.ts +24 -0
  378. package/dist/rendering/formatter/ListDateColumnFormatter.js +28 -0
  379. package/dist/{Formatter.d.ts → rendering/formatter/ListFormatter.d.ts} +2 -12
  380. package/dist/{Formatter.js → rendering/formatter/ListFormatter.js} +1 -19
  381. package/dist/rendering/formatter/printHeader.d.ts +7 -0
  382. package/dist/rendering/formatter/printHeader.js +12 -0
  383. package/dist/rendering/formatter/printKeyValues.d.ts +7 -0
  384. package/dist/{lib/viewhelpers/tui.js → rendering/formatter/printKeyValues.js} +6 -5
  385. package/dist/rendering/lib/getTerminalWidth.d.ts +7 -1
  386. package/dist/rendering/lib/getTerminalWidth.js +9 -2
  387. package/dist/rendering/process/components/ProcessError.js +1 -1
  388. package/dist/rendering/process/process_exec.js +3 -0
  389. package/dist/rendering/react/ComponentPrinter.d.ts +1 -1
  390. package/dist/rendering/react/components/AppInstallation/AppInstallationDetails.js +8 -10
  391. package/dist/rendering/react/components/AppInstallation/AppSystemSoftware.js +1 -1
  392. package/dist/rendering/react/components/ByteFormat.d.ts +9 -1
  393. package/dist/rendering/react/components/ByteFormat.js +9 -10
  394. package/dist/rendering/react/components/CronJob/CronJobDetails.js +2 -2
  395. package/dist/rendering/react/components/DnsZone/DnsZoneRecordsA.js +1 -1
  396. package/dist/rendering/react/components/DnsZone/DnsZoneRecordsAAAA.js +1 -1
  397. package/dist/rendering/react/components/DnsZone/DnsZoneRecordsMX.js +1 -1
  398. package/dist/rendering/react/components/DnsZone/DnsZoneRecordsSRV.js +1 -1
  399. package/dist/rendering/react/components/DnsZone/DnsZoneRecordsTXT.js +1 -1
  400. package/dist/rendering/react/components/FormattedDate.js +1 -1
  401. package/dist/rendering/react/components/OptionalValue.d.ts +13 -0
  402. package/dist/rendering/react/components/OptionalValue.js +16 -0
  403. package/dist/rendering/react/components/ProjectBackup/ProjectBackupDetails.js +2 -2
  404. package/dist/rendering/react/components/Table/CellData.js +1 -1
  405. package/dist/rendering/react/components/WithoutLineBreaks.js +1 -1
  406. package/dist/rendering/setup/FlagSupportedSetup.js +1 -1
  407. package/dist/{lib/viewhelpers/date.d.ts → rendering/textformat/formatDate.d.ts} +0 -1
  408. package/dist/{lib/viewhelpers/date.js → rendering/textformat/formatDate.js} +8 -15
  409. package/dist/rendering/textformat/removeLineBreaks.d.ts +6 -0
  410. package/dist/rendering/textformat/removeLineBreaks.js +8 -0
  411. package/package.json +5 -5
  412. package/dist/Flags.d.ts +0 -1
  413. package/dist/Flags.js +0 -1
  414. package/dist/lib/bytes.d.ts +0 -1
  415. package/dist/lib/bytes.js +0 -16
  416. package/dist/lib/context_flags.js +0 -88
  417. package/dist/lib/context_terraform.d.ts +0 -6
  418. package/dist/lib/domain/dnszone/flags.d.ts +0 -1
  419. package/dist/lib/domain/flags.d.ts +0 -1
  420. package/dist/lib/expires.d.ts +0 -11
  421. package/dist/lib/expires.js +0 -31
  422. package/dist/lib/fsutil.d.ts +0 -2
  423. package/dist/lib/hasbin.d.ts +0 -1
  424. package/dist/lib/mail/flags.d.ts +0 -1
  425. package/dist/lib/mergeObjects.d.ts +0 -1
  426. package/dist/lib/notify.d.ts +0 -2
  427. package/dist/lib/notify.js +0 -5
  428. package/dist/lib/org/flags.d.ts +0 -1
  429. package/dist/lib/org/flags.js +0 -3
  430. package/dist/lib/password.d.ts +0 -2
  431. package/dist/lib/server/flags.d.ts +0 -1
  432. package/dist/lib/server/flags.js +0 -3
  433. package/dist/lib/viewhelpers/list_column_date.d.ts +0 -14
  434. package/dist/lib/viewhelpers/list_column_date.js +0 -21
  435. package/dist/lib/viewhelpers/removeLineBreaks.d.ts +0 -1
  436. package/dist/lib/viewhelpers/removeLineBreaks.js +0 -1
  437. package/dist/lib/viewhelpers/size.d.ts +0 -2
  438. package/dist/lib/viewhelpers/size.js +0 -4
  439. package/dist/lib/viewhelpers/tui.d.ts +0 -2
  440. package/dist/normalize_id.d.ts +0 -7
  441. package/dist/normalize_id.js +0 -34
  442. /package/dist/lib/{app/upgrade.d.ts → apiutil/SuccessfulResponse.js} +0 -0
  443. /package/dist/lib/{api_consistency.d.ts → apiutil/api_consistency.d.ts} +0 -0
  444. /package/dist/lib/{api_consistency.js → apiutil/api_consistency.js} +0 -0
  445. /package/dist/lib/{api_logging.d.ts → apiutil/api_logging.d.ts} +0 -0
  446. /package/dist/lib/{api_logging.js → apiutil/api_logging.js} +0 -0
  447. /package/dist/lib/{api_retry.d.ts → apiutil/api_retry.d.ts} +0 -0
  448. /package/dist/lib/{api_retry.js → apiutil/api_retry.js} +0 -0
  449. /package/dist/lib/{assert_success.d.ts → apiutil/assert_success.d.ts} +0 -0
  450. /package/dist/lib/{assert_success.js → apiutil/assert_success.js} +0 -0
  451. /package/dist/{BaseCommand.d.ts → lib/basecommands/BaseCommand.d.ts} +0 -0
  452. /package/dist/lib/{app/upgrade.js → basecommands/CommandFlags.js} +0 -0
  453. /package/dist/lib/{ssh/types.js → context/ContextProvider.js} +0 -0
  454. /package/dist/{types.js → lib/context/FlagSet.js} +0 -0
  455. /package/dist/lib/{app → resources/app}/custom_installation.d.ts +0 -0
  456. /package/dist/lib/{app → resources/app}/hooks.d.ts +0 -0
  457. /package/dist/lib/{app → resources/app}/install.js +0 -0
  458. /package/dist/lib/{app → resources/app}/uuid.d.ts +0 -0
  459. /package/dist/lib/{app → resources/app}/uuid.js +0 -0
  460. /package/dist/lib/{conversation → resources/conversation}/message_input.d.ts +0 -0
  461. /package/dist/lib/{conversation → resources/conversation}/message_input.js +0 -0
  462. /package/dist/lib/{database → resources/database}/common.js +0 -0
  463. /package/dist/lib/{database → resources/database}/mysql/connect.js +0 -0
  464. /package/dist/lib/{database → resources/database}/mysql/flags.d.ts +0 -0
  465. /package/dist/lib/{database → resources/database}/mysql/flags.js +0 -0
  466. /package/dist/lib/{database → resources/database}/redis/connect.js +0 -0
  467. /package/dist/lib/{database → resources/database}/redis/flags.d.ts +0 -0
  468. /package/dist/lib/{domain → resources/domain}/dnszone/records.d.ts +0 -0
  469. /package/dist/lib/{domain → resources/domain}/dnszone/records.js +0 -0
  470. /package/dist/lib/{project → resources/project}/hooks.d.ts +0 -0
  471. /package/dist/lib/{project → resources/project}/ingress.d.ts +0 -0
  472. /package/dist/lib/{project → resources/project}/shortId.d.ts +0 -0
  473. /package/dist/lib/{project → resources/project}/shortId.js +0 -0
  474. /package/dist/lib/{projectbackup → resources/projectbackup}/hooks.d.ts +0 -0
  475. /package/dist/lib/{ssh → resources/ssh}/appinstall.d.ts +0 -0
  476. /package/dist/lib/{ssh → resources/ssh}/appinstall.js +0 -0
  477. /package/dist/lib/{ssh → resources/ssh}/connection.d.ts +0 -0
  478. /package/dist/lib/{ssh → resources/ssh}/connection.js +0 -0
  479. /package/dist/lib/{ssh → resources/ssh}/doc.d.ts +0 -0
  480. /package/dist/lib/{ssh → resources/ssh}/doc.js +0 -0
  481. /package/dist/lib/{ssh → resources/ssh}/exec.d.ts +0 -0
  482. /package/dist/lib/{ssh → resources/ssh}/exec.js +0 -0
  483. /package/dist/lib/{ssh → resources/ssh}/flags.d.ts +0 -0
  484. /package/dist/lib/{ssh → resources/ssh}/flags.js +0 -0
  485. /package/dist/lib/{ssh → resources/ssh}/project.d.ts +0 -0
  486. /package/dist/lib/{ssh → resources/ssh}/project.js +0 -0
  487. /package/dist/lib/{ssh → resources/ssh}/types.d.ts +0 -0
  488. /package/dist/lib/{language.d.ts → util/language/articleForWord.d.ts} +0 -0
  489. /package/dist/lib/{language.js → util/language/articleForWord.js} +0 -0
  490. /package/dist/{Printer.d.ts → rendering/Printer.d.ts} +0 -0
  491. /package/dist/{Printer.js → rendering/Printer.js} +0 -0
@@ -0,0 +1,23 @@
1
+ import { Options } from "pretty-bytes";
2
+ /**
3
+ * Reexport of pretty-bytes Options type, as to not expose the pretty-bytes
4
+ * dependency to the outside world.
5
+ */
6
+ export type ByteQuantityFormattingOptions = Options;
7
+ /**
8
+ * Represents a quantity of bytes. Provides methods for parsing, formatting and
9
+ * manipulating byte quantities.
10
+ */
11
+ export default class ByteQuantity {
12
+ readonly bytes: number;
13
+ static flag: import("@oclif/core/lib/interfaces/parser.js").FlagDefinition<ByteQuantity, import("@oclif/core/lib/interfaces/parser.js").CustomOptions, {
14
+ multiple: false;
15
+ requiredOrDefaulted: false;
16
+ }>;
17
+ private constructor();
18
+ static fromBytes(bytes: number): ByteQuantity;
19
+ static fromString(input: string, requireQuantity?: boolean): ByteQuantity;
20
+ format(opts?: ByteQuantityFormattingOptions): string;
21
+ toString(): string;
22
+ add(other: ByteQuantity): ByteQuantity;
23
+ }
@@ -0,0 +1,49 @@
1
+ import prettyBytes from "pretty-bytes";
2
+ import { Flags } from "@oclif/core";
3
+ /**
4
+ * Represents a quantity of bytes. Provides methods for parsing, formatting and
5
+ * manipulating byte quantities.
6
+ */
7
+ export default class ByteQuantity {
8
+ bytes;
9
+ static flag = Flags.custom({
10
+ parse: async (input) => ByteQuantity.fromString(input, true),
11
+ });
12
+ constructor(bytes) {
13
+ this.bytes = bytes;
14
+ }
15
+ static fromBytes(bytes) {
16
+ return new ByteQuantity(bytes);
17
+ }
18
+ static fromString(input, requireQuantity = false) {
19
+ const numeric = parseInt(input.replace(/[^0-9]/g, ""), 10);
20
+ if ((!requireQuantity && `${numeric}` == input) ||
21
+ input.toLowerCase().match(/[0-9]b?$/)) {
22
+ return new ByteQuantity(numeric);
23
+ }
24
+ if (input.toLowerCase().match(/gi?b?$/)) {
25
+ return new ByteQuantity(numeric * (1 << 30));
26
+ }
27
+ if (input.toLowerCase().match(/mi?b?$/)) {
28
+ return new ByteQuantity(numeric * (1 << 20));
29
+ }
30
+ if (input.toLowerCase().match(/ki?b?$/)) {
31
+ return new ByteQuantity(numeric * (1 << 10));
32
+ }
33
+ throw new Error("unsupported byte unit; supported are 'gi(b)', 'mi(b)', 'ki(b)' or 'b'");
34
+ }
35
+ format(opts) {
36
+ return prettyBytes(this.bytes, { binary: true, ...opts });
37
+ }
38
+ toString() {
39
+ return this.format({
40
+ locale: false,
41
+ binary: true,
42
+ space: false,
43
+ maximumFractionDigits: 0,
44
+ });
45
+ }
46
+ add(other) {
47
+ return new ByteQuantity(this.bytes + other.bytes);
48
+ }
49
+ }
@@ -0,0 +1,23 @@
1
+ import { FlagDefinition } from "@oclif/core/lib/interfaces/index.js";
2
+ /**
3
+ * Represents a duration of time.
4
+ *
5
+ * This class represents a duration of time and offers utility methods around
6
+ * this.
7
+ */
8
+ export default class Duration {
9
+ readonly milliseconds: number;
10
+ static relativeFlag: FlagDefinition<Duration>;
11
+ static absoluteFlag: FlagDefinition<Date>;
12
+ private constructor();
13
+ static fromZero(): Duration;
14
+ static fromMilliseconds(milliseconds: number): Duration;
15
+ static fromSeconds(seconds: number): Duration;
16
+ static fromString(input: string): Duration;
17
+ get seconds(): number;
18
+ from(referenceDate: Date): Date;
19
+ fromNow(): Date;
20
+ add(other: Duration): Duration;
21
+ compare(other: Duration): number;
22
+ toString(): string;
23
+ }
@@ -0,0 +1,57 @@
1
+ import parseDuration from "parse-duration";
2
+ import { Flags } from "@oclif/core";
3
+ /**
4
+ * Represents a duration of time.
5
+ *
6
+ * This class represents a duration of time and offers utility methods around
7
+ * this.
8
+ */
9
+ export default class Duration {
10
+ milliseconds;
11
+ static relativeFlag = Flags.custom({
12
+ parse: async (input) => Duration.fromString(input),
13
+ });
14
+ static absoluteFlag = Flags.custom({
15
+ parse: async (input) => Duration.fromString(input).fromNow(),
16
+ });
17
+ constructor(milliseconds) {
18
+ this.milliseconds = milliseconds;
19
+ }
20
+ static fromZero() {
21
+ return new Duration(0);
22
+ }
23
+ static fromMilliseconds(milliseconds) {
24
+ return new Duration(milliseconds);
25
+ }
26
+ static fromSeconds(seconds) {
27
+ return new Duration(seconds * 1000);
28
+ }
29
+ static fromString(input) {
30
+ const parsed = parseDuration(input);
31
+ if (parsed === undefined) {
32
+ throw new Error("could not parse duration: " + input);
33
+ }
34
+ return new Duration(parsed);
35
+ }
36
+ get seconds() {
37
+ return this.milliseconds / 1000;
38
+ }
39
+ from(referenceDate) {
40
+ return new Date(referenceDate.getTime() + this.milliseconds);
41
+ }
42
+ fromNow() {
43
+ return this.from(new Date());
44
+ }
45
+ add(other) {
46
+ return new Duration(this.milliseconds + other.milliseconds);
47
+ }
48
+ compare(other) {
49
+ return this.milliseconds - other.milliseconds;
50
+ }
51
+ toString() {
52
+ if (this.milliseconds > 1000) {
53
+ return `${Math.round(this.seconds)}s`;
54
+ }
55
+ return `${this.milliseconds}ms`;
56
+ }
57
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Checks if a binary is in the PATH. This is useful for commands that rely on
3
+ * external binaries to work. These should be asserted to exist before the
4
+ * command does anything else.
5
+ *
6
+ * @param name The name of the binary to check for
7
+ * @returns True if the binary is in the PATH
8
+ */
9
+ export declare function hasBinaryInPath(name: string): Promise<boolean>;
@@ -1,6 +1,14 @@
1
1
  import path from "path";
2
2
  import fs from "fs";
3
- export async function hasBinary(name) {
3
+ /**
4
+ * Checks if a binary is in the PATH. This is useful for commands that rely on
5
+ * external binaries to work. These should be asserted to exist before the
6
+ * command does anything else.
7
+ *
8
+ * @param name The name of the binary to check for
9
+ * @returns True if the binary is in the PATH
10
+ */
11
+ export async function hasBinaryInPath(name) {
4
12
  const p = process.env.PATH ?? "";
5
13
  const pathItems = p.split(path.delimiter);
6
14
  for (const item of pathItems) {
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Quickly checks if an error is a "file not found" error. Intended to be used
3
+ * in a catch block around "fs" functions.
4
+ *
5
+ * @param e The error to check
6
+ * @returns True if the error is a "file not found" error
7
+ */
8
+ export declare function isNotFound(e: unknown): boolean;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Quickly checks if an error is a "file not found" error. Intended to be used
3
+ * in a catch block around "fs" functions.
4
+ *
5
+ * @param e The error to check
6
+ * @returns True if the error is a "file not found" error
7
+ */
8
+ export function isNotFound(e) {
9
+ return e instanceof Error && "code" in e && e.code === "ENOENT";
10
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Checks if a filesystem path exists.
3
+ *
4
+ * @param path The filesystem path (file or directory) to check
5
+ * @returns True if the path exists
6
+ */
7
+ export declare function pathExists(path: string): Promise<boolean>;
@@ -1,7 +1,11 @@
1
1
  import fs from "fs/promises";
2
- export function isNotFound(e) {
3
- return e instanceof Error && "code" in e && e.code === "ENOENT";
4
- }
2
+ import { isNotFound } from "./isNotFound.js";
3
+ /**
4
+ * Checks if a filesystem path exists.
5
+ *
6
+ * @param path The filesystem path (file or directory) to check
7
+ * @returns True if the path exists
8
+ */
5
9
  export async function pathExists(path) {
6
10
  try {
7
11
  await fs.stat(path);
@@ -0,0 +1,12 @@
1
+ export type OptionalFn<T> = T extends (...i: infer TIn) => infer TOut ? (...i: (TIn[number] | undefined)[]) => TOut | undefined : never;
2
+ /**
3
+ * Maybe is a helper function that wraps a function and makes its input
4
+ * optional. When the input is undefined, the function will return undefined.
5
+ * Otherwise, the function will be called with the input.
6
+ *
7
+ * @param fn The function to wrap.
8
+ * @returns A new function that takes an optional input, and returns undefined
9
+ * if the input is undefined.
10
+ */
11
+ export declare function maybe<TIn, TOut>(fn: (...inputs: TIn[]) => TOut): OptionalFn<(...inputs: TIn[]) => TOut>;
12
+ export default maybe;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Maybe is a helper function that wraps a function and makes its input
3
+ * optional. When the input is undefined, the function will return undefined.
4
+ * Otherwise, the function will be called with the input.
5
+ *
6
+ * @param fn The function to wrap.
7
+ * @returns A new function that takes an optional input, and returns undefined
8
+ * if the input is undefined.
9
+ */
10
+ export function maybe(fn) {
11
+ return (...args) => {
12
+ return !args.some((a) => a === undefined)
13
+ ? fn(...args)
14
+ : undefined;
15
+ };
16
+ }
17
+ export default maybe;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Merges two objects into one.
3
+ *
4
+ * @param obj1
5
+ * @param obj2
6
+ */
7
+ export declare function mergeObjects<T1, T2>(obj1: T1, obj2: T2): T1 & T2;
@@ -1,6 +1,12 @@
1
- export const mergeObjects = (obj1, obj2) => {
1
+ /**
2
+ * Merges two objects into one.
3
+ *
4
+ * @param obj1
5
+ * @param obj2
6
+ */
7
+ export function mergeObjects(obj1, obj2) {
2
8
  return {
3
9
  ...Object.fromEntries(Object.entries(obj1 ?? {}).filter(([, value]) => !!value)),
4
10
  ...Object.fromEntries(Object.entries(obj2 ?? {}).filter(([, value]) => !!value)),
5
11
  };
6
- };
12
+ }
@@ -0,0 +1,9 @@
1
+ export declare const defaultPasswordLength = 32;
2
+ /**
3
+ * Generates a random password of a given length. The password is generated from
4
+ * the base64 alphabet.
5
+ *
6
+ * @param length The desired amount of characters
7
+ * @returns The generated password
8
+ */
9
+ export declare function generatePassword(length?: number): string;
@@ -0,0 +1,12 @@
1
+ import crypto from "crypto";
2
+ export const defaultPasswordLength = 32;
3
+ /**
4
+ * Generates a random password of a given length. The password is generated from
5
+ * the base64 alphabet.
6
+ *
7
+ * @param length The desired amount of characters
8
+ * @returns The generated password
9
+ */
10
+ export function generatePassword(length = defaultPasswordLength) {
11
+ return crypto.randomBytes(length).toString("base64").substring(0, length);
12
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generates a random password of a given length with a specific amount of
3
+ * special characters.
4
+ *
5
+ * @param length The desired amount of characters
6
+ * @param amountSpecialChars The desired amount of special characters
7
+ * @returns The generated password
8
+ */
9
+ export declare function generatePasswordWithSpecialChars(length?: number, amountSpecialChars?: number): string;
@@ -1,15 +1,19 @@
1
- import crypto from "crypto";
1
+ import { defaultPasswordLength, generatePassword } from "./generatePassword.js";
2
2
  const passwordAllowedSpecialChars = ["%", "_", "-", "+", "&"];
3
- const defaultPasswordLength = 32;
4
3
  function randomInt(min, max) {
5
4
  return Math.floor(Math.random() * (max - 1) + min);
6
5
  }
7
6
  function getRandomSpecialCharacter() {
8
7
  return passwordAllowedSpecialChars[randomInt(0, passwordAllowedSpecialChars.length - 1)];
9
8
  }
10
- export function generatePassword(length = defaultPasswordLength) {
11
- return crypto.randomBytes(length).toString("base64").substring(0, length);
12
- }
9
+ /**
10
+ * Generates a random password of a given length with a specific amount of
11
+ * special characters.
12
+ *
13
+ * @param length The desired amount of characters
14
+ * @param amountSpecialChars The desired amount of special characters
15
+ * @returns The generated password
16
+ */
13
17
  export function generatePasswordWithSpecialChars(length = defaultPasswordLength, amountSpecialChars = Math.floor(length / 8)) {
14
18
  const passwordCharacters = generatePassword(length).split("");
15
19
  for (let i = 0; i < amountSpecialChars; i++) {
@@ -1,5 +1,8 @@
1
+ import Duration from "./units/Duration.js";
2
+ import { InferredFlags } from "@oclif/core/lib/interfaces/index.js";
1
3
  export declare const waitFlags: {
2
4
  wait: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
3
- "wait-timeout": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
5
+ "wait-timeout": import("@oclif/core/lib/interfaces/parser.js").OptionFlag<Duration, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
4
6
  };
5
- export declare function waitUntil<T>(tester: () => Promise<T | null>, timeoutSeconds?: number): Promise<T>;
7
+ export type WaitFlags = InferredFlags<typeof waitFlags>;
8
+ export declare function waitUntil<T>(tester: () => Promise<T | null>, timeout?: Duration): Promise<T>;
package/dist/lib/wait.js CHANGED
@@ -1,23 +1,24 @@
1
1
  import { Flags } from "@oclif/core";
2
+ import Duration from "./units/Duration.js";
2
3
  export const waitFlags = {
3
4
  wait: Flags.boolean({
4
5
  char: "w",
5
- description: "Wait for the resource to be ready.",
6
+ description: "wait for the resource to be ready.",
6
7
  }),
7
- "wait-timeout": Flags.integer({
8
- description: "The number of seconds to wait for the resource to be ready.",
9
- default: 600,
8
+ "wait-timeout": Duration.relativeFlag({
9
+ description: "the duration to wait for the resource to be ready (common units like 'ms', 's', 'm' are accepted).",
10
+ default: Duration.fromSeconds(600),
10
11
  }),
11
12
  };
12
- export async function waitUntil(tester, timeoutSeconds = 600) {
13
- let waited = 0;
14
- while (waited < timeoutSeconds) {
13
+ export async function waitUntil(tester, timeout = Duration.fromSeconds(600)) {
14
+ let waited = Duration.fromZero();
15
+ while (waited.compare(timeout) < 0) {
15
16
  const result = await tester();
16
17
  if (result) {
17
18
  return result;
18
19
  }
19
20
  await new Promise((resolve) => setTimeout(resolve, 1000));
20
- waited++;
21
+ waited = waited.add(Duration.fromSeconds(1));
21
22
  }
22
- throw new Error(`expected condition was not reached after ${timeoutSeconds} seconds`);
23
+ throw new Error(`expected condition was not reached after ${timeout.toString()}`);
23
24
  }
@@ -0,0 +1,11 @@
1
+ import { FlagInput } from "@oclif/core/lib/interfaces/parser.js";
2
+ import { Printer } from "../Printer.js";
3
+ export interface GetOptions {
4
+ outputFormat: string;
5
+ }
6
+ export declare class GetFormatter<T = unknown> {
7
+ static get flags(): FlagInput;
8
+ private defaultPrinter;
9
+ constructor(defaultPrinter?: Printer<T>);
10
+ log(output: T, opts?: GetOptions): void;
11
+ }
@@ -0,0 +1,20 @@
1
+ import { ux } from "@oclif/core";
2
+ import { DefaultPrinter, PrinterFactory } from "../Printer.js";
3
+ export class GetFormatter {
4
+ static get flags() {
5
+ return {
6
+ output: {
7
+ ...ux.table.flags().output,
8
+ options: ["json", "yaml"],
9
+ char: "o",
10
+ },
11
+ };
12
+ }
13
+ defaultPrinter = new DefaultPrinter();
14
+ constructor(defaultPrinter = new DefaultPrinter()) {
15
+ this.defaultPrinter = defaultPrinter;
16
+ }
17
+ log(output, opts) {
18
+ PrinterFactory.build(opts?.outputFormat, this.defaultPrinter).log(output);
19
+ }
20
+ }
@@ -0,0 +1,24 @@
1
+ import { FlagOutput } from "@oclif/core/lib/interfaces/parser.js";
2
+ import { DateRenderer } from "../textformat/formatDate.js";
3
+ import { table } from "@oclif/core/lib/cli-ux/styled/table.js";
4
+ import Column = table.Column;
5
+ type ResourceWithCreatedAt = {
6
+ createdAt: string;
7
+ };
8
+ export declare function isResourceWithCreatedAt(resource: Record<string, unknown>): resource is ResourceWithCreatedAt;
9
+ /**
10
+ * ListDateColumnFormatter is a helper class to create a column for a list
11
+ * formatter that can handle date formatting.
12
+ */
13
+ export default class ListDateColumnFormatter {
14
+ private readonly flags;
15
+ constructor(flags: FlagOutput);
16
+ get renderDate(): DateRenderer;
17
+ buildColumn<TColumnName extends string = "createdAt">({ header, fallback, column, extended, }?: {
18
+ header?: string;
19
+ fallback?: string;
20
+ column?: TColumnName | "createdAt";
21
+ extended?: boolean;
22
+ }): Partial<Column<Record<string, unknown>>>;
23
+ }
24
+ export {};
@@ -0,0 +1,28 @@
1
+ import { formatDateISO, makeDateRendererForFormat, } from "../textformat/formatDate.js";
2
+ import { isListFormatterFlags } from "./ListFormatter.js";
3
+ export function isResourceWithCreatedAt(resource) {
4
+ return "createdAt" in resource;
5
+ }
6
+ /**
7
+ * ListDateColumnFormatter is a helper class to create a column for a list
8
+ * formatter that can handle date formatting.
9
+ */
10
+ export default class ListDateColumnFormatter {
11
+ flags;
12
+ constructor(flags) {
13
+ this.flags = flags;
14
+ }
15
+ get renderDate() {
16
+ if (isListFormatterFlags(this.flags)) {
17
+ return makeDateRendererForFormat(this.flags.output, !this.flags["no-relative-dates"]);
18
+ }
19
+ return formatDateISO;
20
+ }
21
+ buildColumn({ header = "Created at", fallback = "unknown", column = "createdAt", extended = false, } = {}) {
22
+ return {
23
+ header,
24
+ extended,
25
+ get: (row) => row[column] ? this.renderDate(new Date(`${row[column]}`)) : fallback,
26
+ };
27
+ }
28
+ }
@@ -1,23 +1,13 @@
1
- import { BooleanFlag, FlagInput, FlagOutput } from "@oclif/core/lib/interfaces/parser.js";
1
+ import { BooleanFlag, FlagOutput } from "@oclif/core/lib/interfaces/parser.js";
2
2
  import { ux } from "@oclif/core";
3
- import { Printer } from "./Printer.js";
4
- export interface GetOptions {
5
- outputFormat: string;
6
- }
7
3
  export type ListOptions = ux.Table.table.Options;
8
4
  export type ListColumns<TItem extends Record<string, unknown>> = ux.Table.table.Columns<TItem>;
9
- export declare class GetFormatter<T = unknown> {
10
- static get flags(): FlagInput;
11
- private defaultPrinter;
12
- constructor(defaultPrinter?: Printer<T>);
13
- log(output: T, opts?: GetOptions): void;
14
- }
15
5
  type RelevantTableBaseFlags = Partial<typeof ux.table.Flags> & Pick<typeof ux.table.Flags, "output">;
16
6
  type ListFormatterFlags = RelevantTableBaseFlags & {
17
7
  "no-relative-dates": BooleanFlag<boolean>;
18
8
  };
19
9
  type ListFormatterFlagsOutput = {
20
- output: string;
10
+ output: "txt" | "json" | "yaml" | "csv";
21
11
  "no-relative-dates": boolean;
22
12
  };
23
13
  export declare function isListFormatterFlags(flags: FlagOutput): flags is ListFormatterFlagsOutput;
@@ -1,23 +1,5 @@
1
1
  import { Flags, ux } from "@oclif/core";
2
- import { DefaultPrinter, PrinterFactory } from "./Printer.js";
3
- export class GetFormatter {
4
- static get flags() {
5
- return {
6
- output: {
7
- ...ux.table.flags().output,
8
- options: ["json", "yaml"],
9
- char: "o",
10
- },
11
- };
12
- }
13
- defaultPrinter = new DefaultPrinter();
14
- constructor(defaultPrinter = new DefaultPrinter()) {
15
- this.defaultPrinter = defaultPrinter;
16
- }
17
- log(output, opts) {
18
- PrinterFactory.build(opts?.outputFormat, this.defaultPrinter).log(output);
19
- }
20
- }
2
+ import { PrinterFactory } from "../Printer.js";
21
3
  export function isListFormatterFlags(flags) {
22
4
  return "output" in flags;
23
5
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Prints a header with a predefined style.
3
+ *
4
+ * @deprecated Use React components instead!
5
+ * @param heading
6
+ */
7
+ export declare function printHeader(heading: string): void;
@@ -0,0 +1,12 @@
1
+ import chalk from "chalk";
2
+ /**
3
+ * Prints a header with a predefined style.
4
+ *
5
+ * @deprecated Use React components instead!
6
+ * @param heading
7
+ */
8
+ export function printHeader(heading) {
9
+ console.log(chalk.bold.white(heading));
10
+ console.log(chalk.bold.white("─".repeat(heading.length)));
11
+ console.log();
12
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Prints a list of key-value pairs.
3
+ *
4
+ * @deprecated Use React components instead!
5
+ * @param tableContents
6
+ */
7
+ export declare function printKeyValues(tableContents: Record<string, string>): void;
@@ -1,9 +1,10 @@
1
1
  import chalk from "chalk";
2
- export function printHeader(heading) {
3
- console.log(chalk.bold.white(heading));
4
- console.log(chalk.bold.white("─".repeat(heading.length)));
5
- console.log();
6
- }
2
+ /**
3
+ * Prints a list of key-value pairs.
4
+ *
5
+ * @deprecated Use React components instead!
6
+ * @param tableContents
7
+ */
7
8
  export function printKeyValues(tableContents) {
8
9
  const keys = Object.keys(tableContents);
9
10
  const l = Math.max(...keys.map((k) => k.length));
@@ -1 +1,7 @@
1
- export declare const getTerminalWidth: () => number | undefined;
1
+ /**
2
+ * Get the width of the terminal, if available.
3
+ *
4
+ * @returns The with of the terminal in characters; undefined if process is not
5
+ * attached to a TTY
6
+ */
7
+ export declare function getTerminalWidth(): number | undefined;
@@ -1,2 +1,9 @@
1
- import { stdout } from "@oclif/core";
2
- export const getTerminalWidth = () => stdout.isTTY ? stdout.getWindowSize()[0] : undefined;
1
+ /**
2
+ * Get the width of the terminal, if available.
3
+ *
4
+ * @returns The with of the terminal in characters; undefined if process is not
5
+ * attached to a TTY
6
+ */
7
+ export function getTerminalWidth() {
8
+ return process.stdout.isTTY ? process.stdout.getWindowSize()[0] : undefined;
9
+ }
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { isValidationError } from "../../../lib/handleError.js";
2
+ import { isValidationError } from "../../../lib/error/handleError.js";
3
3
  import { ProcessValidationErrors } from "./ProcessValidationErrors.js";
4
4
  import { Box, Text } from "ink";
5
5
  export const ProcessError = ({ err }) => {
@@ -1,6 +1,9 @@
1
1
  import { spawn } from "child_process";
2
+ import debug from "debug";
3
+ const d = debug("mw:exec");
2
4
  export async function spawnInProcess(r, title, cmd, args) {
3
5
  const step = r.addStep(title);
6
+ d("spawning %o with args %o", cmd, args);
4
7
  const child = spawn(cmd, args, {
5
8
  shell: false,
6
9
  stdio: ["inherit", "pipe", "pipe"],
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from "react";
2
- import { Printer } from "../../Printer.js";
2
+ import { Printer } from "../Printer.js";
3
3
  export declare class ComponentPrinter<T> implements Printer<T> {
4
4
  private render;
5
5
  constructor(render: (r: T) => ReactElement);