@flowscripter/dynamic-cli-framework 1.4.19 → 1.5.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 (534) hide show
  1. package/README.md +3 -14
  2. package/cli-plugin.ts +16 -0
  3. package/dist/cli-plugin.d.ts +17 -0
  4. package/dist/cli-plugin.d.ts.map +1 -0
  5. package/dist/cli-plugin.js +69 -0
  6. package/dist/index.d.ts +115 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +105696 -0
  9. package/dist/src/api/BaseCLIFeatureOptions.d.ts +12 -0
  10. package/dist/src/api/BaseCLIFeatureOptions.d.ts.map +1 -0
  11. package/dist/src/api/CLI.d.ts +17 -0
  12. package/dist/src/api/CLI.d.ts.map +1 -0
  13. package/dist/src/api/CLIConfig.d.ts +22 -0
  14. package/dist/src/api/CLIConfig.d.ts.map +1 -0
  15. package/dist/src/api/Context.d.ts +23 -0
  16. package/dist/src/api/Context.d.ts.map +1 -0
  17. package/dist/src/api/RunResult.d.ts +128 -0
  18. package/dist/src/api/RunResult.d.ts.map +1 -0
  19. package/dist/src/api/argument/Argument.d.ts +62 -0
  20. package/dist/src/api/argument/Argument.d.ts.map +1 -0
  21. package/dist/src/api/argument/ArgumentValueTypes.d.ts +68 -0
  22. package/dist/src/api/argument/ArgumentValueTypes.d.ts.map +1 -0
  23. package/dist/src/api/argument/ComplexOption.d.ts +21 -0
  24. package/dist/src/api/argument/ComplexOption.d.ts.map +1 -0
  25. package/dist/src/api/argument/GlobalCommandArgument.d.ts +16 -0
  26. package/dist/src/api/argument/GlobalCommandArgument.d.ts.map +1 -0
  27. package/dist/src/api/argument/Option.d.ts +29 -0
  28. package/dist/src/api/argument/Option.d.ts.map +1 -0
  29. package/dist/src/api/argument/Positional.d.ts +26 -0
  30. package/dist/src/api/argument/Positional.d.ts.map +1 -0
  31. package/dist/src/api/argument/SubCommandArgument.d.ts +18 -0
  32. package/dist/src/api/argument/SubCommandArgument.d.ts.map +1 -0
  33. package/dist/src/api/command/Command.d.ts +21 -0
  34. package/dist/src/api/command/Command.d.ts.map +1 -0
  35. package/dist/src/api/command/GlobalCommand.d.ts +28 -0
  36. package/dist/src/api/command/GlobalCommand.d.ts.map +1 -0
  37. package/dist/src/api/command/GlobalModifierCommand.d.ts +12 -0
  38. package/dist/src/api/command/GlobalModifierCommand.d.ts.map +1 -0
  39. package/dist/src/api/command/GroupCommand.d.ts +19 -0
  40. package/dist/src/api/command/GroupCommand.d.ts.map +1 -0
  41. package/dist/src/api/command/SubCommand.d.ts +37 -0
  42. package/dist/src/api/command/SubCommand.d.ts.map +1 -0
  43. package/dist/src/api/command/UsageExample.d.ts +20 -0
  44. package/dist/src/api/command/UsageExample.d.ts.map +1 -0
  45. package/dist/src/api/plugin/CommandFactory.d.ts +23 -0
  46. package/dist/src/api/plugin/CommandFactory.d.ts.map +1 -0
  47. package/dist/src/api/plugin/ServiceProviderFactory.d.ts +25 -0
  48. package/dist/src/api/plugin/ServiceProviderFactory.d.ts.map +1 -0
  49. package/dist/src/api/service/ServiceProvider.d.ts +47 -0
  50. package/dist/src/api/service/ServiceProvider.d.ts.map +1 -0
  51. package/dist/src/api/service/core/ArgumentPrompterService.d.ts +6 -0
  52. package/dist/src/api/service/core/ArgumentPrompterService.d.ts.map +1 -0
  53. package/dist/src/api/service/core/AsciiBannerGeneratorService.d.ts +59 -0
  54. package/dist/src/api/service/core/AsciiBannerGeneratorService.d.ts.map +1 -0
  55. package/dist/src/api/service/core/CompletionService.d.ts +22 -0
  56. package/dist/src/api/service/core/CompletionService.d.ts.map +1 -0
  57. package/dist/src/api/service/core/DataDumpGeneratorService.d.ts +22 -0
  58. package/dist/src/api/service/core/DataDumpGeneratorService.d.ts.map +1 -0
  59. package/dist/src/api/service/core/ImagePrinterService.d.ts +21 -0
  60. package/dist/src/api/service/core/ImagePrinterService.d.ts.map +1 -0
  61. package/dist/src/api/service/core/KeyValueService.d.ts +40 -0
  62. package/dist/src/api/service/core/KeyValueService.d.ts.map +1 -0
  63. package/dist/src/api/service/core/PluginService.d.ts +55 -0
  64. package/dist/src/api/service/core/PluginService.d.ts.map +1 -0
  65. package/dist/src/api/service/core/PrettyPrinterService.d.ts +35 -0
  66. package/dist/src/api/service/core/PrettyPrinterService.d.ts.map +1 -0
  67. package/dist/src/api/service/core/PrinterService.d.ts +339 -0
  68. package/dist/src/api/service/core/PrinterService.d.ts.map +1 -0
  69. package/dist/src/api/service/core/PrompterService.d.ts +35 -0
  70. package/dist/src/api/service/core/PrompterService.d.ts.map +1 -0
  71. package/dist/src/api/service/core/SecretService.d.ts +25 -0
  72. package/dist/src/api/service/core/SecretService.d.ts.map +1 -0
  73. package/dist/src/api/service/core/ShutdownService.d.ts +24 -0
  74. package/dist/src/api/service/core/ShutdownService.d.ts.map +1 -0
  75. package/dist/src/api/service/core/SyntaxHighlighterService.d.ts +49 -0
  76. package/dist/src/api/service/core/SyntaxHighlighterService.d.ts.map +1 -0
  77. package/dist/src/api/service/core/Table.d.ts +18 -0
  78. package/dist/src/api/service/core/Table.d.ts.map +1 -0
  79. package/dist/src/api/service/core/TableGeneratorService.d.ts +31 -0
  80. package/dist/src/api/service/core/TableGeneratorService.d.ts.map +1 -0
  81. package/dist/src/api/service/core/TreePrinterService.d.ts +9 -0
  82. package/dist/src/api/service/core/TreePrinterService.d.ts.map +1 -0
  83. package/dist/src/cli/BaseCLI.d.ts +59 -0
  84. package/dist/src/cli/BaseCLI.d.ts.map +1 -0
  85. package/dist/src/cli/DefaultRuntimeCLI.d.ts +12 -0
  86. package/dist/src/cli/DefaultRuntimeCLI.d.ts.map +1 -0
  87. package/dist/src/cli/DynamicPluginRuntimeCLI.d.ts +20 -0
  88. package/dist/src/cli/DynamicPluginRuntimeCLI.d.ts.map +1 -0
  89. package/dist/src/command/CompletionCommand.d.ts +31 -0
  90. package/dist/src/command/CompletionCommand.d.ts.map +1 -0
  91. package/dist/src/command/MultiCommandCliHelpCommand.d.ts +40 -0
  92. package/dist/src/command/MultiCommandCliHelpCommand.d.ts.map +1 -0
  93. package/dist/src/command/PluginCommand.d.ts +67 -0
  94. package/dist/src/command/PluginCommand.d.ts.map +1 -0
  95. package/dist/src/command/SingleCommandCliHelpCommand.d.ts +31 -0
  96. package/dist/src/command/SingleCommandCliHelpCommand.d.ts.map +1 -0
  97. package/dist/src/command/UsageCommand.d.ts +14 -0
  98. package/dist/src/command/UsageCommand.d.ts.map +1 -0
  99. package/dist/src/command/VersionCommand.d.ts +12 -0
  100. package/dist/src/command/VersionCommand.d.ts.map +1 -0
  101. package/dist/src/launcher.d.ts +10 -0
  102. package/dist/src/launcher.d.ts.map +1 -0
  103. package/dist/src/runtime/DefaultContext.d.ts +14 -0
  104. package/dist/src/runtime/DefaultContext.d.ts.map +1 -0
  105. package/dist/src/runtime/argument/ArgumentTypeGuards.d.ts +4 -0
  106. package/dist/src/runtime/argument/ArgumentTypeGuards.d.ts.map +1 -0
  107. package/dist/src/runtime/command/CommandTypeGuards.d.ts +10 -0
  108. package/dist/src/runtime/command/CommandTypeGuards.d.ts.map +1 -0
  109. package/dist/src/runtime/command/CommandValidator.d.ts +15 -0
  110. package/dist/src/runtime/command/CommandValidator.d.ts.map +1 -0
  111. package/dist/src/runtime/parser.d.ts +48 -0
  112. package/dist/src/runtime/parser.d.ts.map +1 -0
  113. package/dist/src/runtime/registry/CommandRegistry.d.ts +89 -0
  114. package/dist/src/runtime/registry/CommandRegistry.d.ts.map +1 -0
  115. package/dist/src/runtime/registry/DefaultCommandRegistry.d.ts +51 -0
  116. package/dist/src/runtime/registry/DefaultCommandRegistry.d.ts.map +1 -0
  117. package/dist/src/runtime/registry/DefaultServiceProviderRegistry.d.ts +12 -0
  118. package/dist/src/runtime/registry/DefaultServiceProviderRegistry.d.ts.map +1 -0
  119. package/dist/src/runtime/registry/ServiceProviderRegistry.d.ts +11 -0
  120. package/dist/src/runtime/registry/ServiceProviderRegistry.d.ts.map +1 -0
  121. package/dist/src/runtime/runner.d.ts +76 -0
  122. package/dist/src/runtime/runner.d.ts.map +1 -0
  123. package/dist/src/runtime/scanner.d.ts +69 -0
  124. package/dist/src/runtime/scanner.d.ts.map +1 -0
  125. package/dist/src/runtime/values/ValuePopulationResult.d.ts +34 -0
  126. package/dist/src/runtime/values/ValuePopulationResult.d.ts.map +1 -0
  127. package/dist/src/runtime/values/argumentValueMerge.d.ts +13 -0
  128. package/dist/src/runtime/values/argumentValueMerge.d.ts.map +1 -0
  129. package/dist/src/runtime/values/argumentValueValidation.d.ts +33 -0
  130. package/dist/src/runtime/values/argumentValueValidation.d.ts.map +1 -0
  131. package/dist/src/runtime/values/globalCommandValuePopulation.d.ts +12 -0
  132. package/dist/src/runtime/values/globalCommandValuePopulation.d.ts.map +1 -0
  133. package/dist/src/runtime/values/subCommandValuePopulation.d.ts +12 -0
  134. package/dist/src/runtime/values/subCommandValuePopulation.d.ts.map +1 -0
  135. package/dist/src/service/argumentPrompter/ArgumentPrompterServiceProvider.d.ts +13 -0
  136. package/dist/src/service/argumentPrompter/ArgumentPrompterServiceProvider.d.ts.map +1 -0
  137. package/dist/src/service/argumentPrompter/DefaultArgumentPrompterService.d.ts +9 -0
  138. package/dist/src/service/argumentPrompter/DefaultArgumentPrompterService.d.ts.map +1 -0
  139. package/dist/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.d.ts +20 -0
  140. package/dist/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.d.ts.map +1 -0
  141. package/dist/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.d.ts +12 -0
  142. package/dist/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.d.ts.map +1 -0
  143. package/dist/src/service/banner/BannerServiceProvider.d.ts +29 -0
  144. package/dist/src/service/banner/BannerServiceProvider.d.ts.map +1 -0
  145. package/dist/src/service/banner/command/NoBannerCommand.d.ts +19 -0
  146. package/dist/src/service/banner/command/NoBannerCommand.d.ts.map +1 -0
  147. package/dist/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.d.ts +22 -0
  148. package/dist/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.d.ts.map +1 -0
  149. package/dist/src/service/completion/CompletionServiceProvider.d.ts +14 -0
  150. package/dist/src/service/completion/CompletionServiceProvider.d.ts.map +1 -0
  151. package/dist/src/service/completion/DefaultCompletionService.d.ts +17 -0
  152. package/dist/src/service/completion/DefaultCompletionService.d.ts.map +1 -0
  153. package/dist/src/service/completion/shell/ShellHandler.d.ts +13 -0
  154. package/dist/src/service/completion/shell/ShellHandler.d.ts.map +1 -0
  155. package/dist/src/service/completion/shell/bash.d.ts +11 -0
  156. package/dist/src/service/completion/shell/bash.d.ts.map +1 -0
  157. package/dist/src/service/completion/shell/fish.d.ts +11 -0
  158. package/dist/src/service/completion/shell/fish.d.ts.map +1 -0
  159. package/dist/src/service/completion/shell/powershell.d.ts +11 -0
  160. package/dist/src/service/completion/shell/powershell.d.ts.map +1 -0
  161. package/dist/src/service/completion/shell/zsh.d.ts +11 -0
  162. package/dist/src/service/completion/shell/zsh.d.ts.map +1 -0
  163. package/dist/src/service/configuration/ConfigurationServiceProvider.d.ts +196 -0
  164. package/dist/src/service/configuration/ConfigurationServiceProvider.d.ts.map +1 -0
  165. package/dist/src/service/configuration/DefaultKeyValueService.d.ts +14 -0
  166. package/dist/src/service/configuration/DefaultKeyValueService.d.ts.map +1 -0
  167. package/dist/src/service/configuration/DefaultSecretService.d.ts +27 -0
  168. package/dist/src/service/configuration/DefaultSecretService.d.ts.map +1 -0
  169. package/dist/src/service/configuration/command/ConfigCommand.d.ts +19 -0
  170. package/dist/src/service/configuration/command/ConfigCommand.d.ts.map +1 -0
  171. package/dist/src/service/configuration/command/DumpConfigCommand.d.ts +14 -0
  172. package/dist/src/service/configuration/command/DumpConfigCommand.d.ts.map +1 -0
  173. package/dist/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.d.ts +12 -0
  174. package/dist/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.d.ts.map +1 -0
  175. package/dist/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.d.ts +10 -0
  176. package/dist/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.d.ts.map +1 -0
  177. package/dist/src/service/imagePrinter/DefaultImagePrinterService.d.ts +8 -0
  178. package/dist/src/service/imagePrinter/DefaultImagePrinterService.d.ts.map +1 -0
  179. package/dist/src/service/imagePrinter/ImagePrinterServiceProvider.d.ts +13 -0
  180. package/dist/src/service/imagePrinter/ImagePrinterServiceProvider.d.ts.map +1 -0
  181. package/dist/src/service/plugin/DefaultPluginService.d.ts +15 -0
  182. package/dist/src/service/plugin/DefaultPluginService.d.ts.map +1 -0
  183. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts +13 -0
  184. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts.map +1 -0
  185. package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.d.ts +13 -0
  186. package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.d.ts.map +1 -0
  187. package/dist/src/service/prettyPrinter/PrettyPrinterServiceProvider.d.ts +20 -0
  188. package/dist/src/service/prettyPrinter/PrettyPrinterServiceProvider.d.ts.map +1 -0
  189. package/dist/src/service/printer/DefaultPrinterService.d.ts +61 -0
  190. package/dist/src/service/printer/DefaultPrinterService.d.ts.map +1 -0
  191. package/dist/src/service/printer/PrinterServiceProvider.d.ts +22 -0
  192. package/dist/src/service/printer/PrinterServiceProvider.d.ts.map +1 -0
  193. package/dist/src/service/printer/command/DarkModeCommand.d.ts +19 -0
  194. package/dist/src/service/printer/command/DarkModeCommand.d.ts.map +1 -0
  195. package/dist/src/service/printer/command/LogLevelCommand.d.ts +19 -0
  196. package/dist/src/service/printer/command/LogLevelCommand.d.ts.map +1 -0
  197. package/dist/src/service/printer/command/NoColorCommand.d.ts +19 -0
  198. package/dist/src/service/printer/command/NoColorCommand.d.ts.map +1 -0
  199. package/dist/src/service/printer/command/NoHyperlinksCommand.d.ts +16 -0
  200. package/dist/src/service/printer/command/NoHyperlinksCommand.d.ts.map +1 -0
  201. package/dist/src/service/printer/terminal/Color.d.ts +15 -0
  202. package/dist/src/service/printer/terminal/Color.d.ts.map +1 -0
  203. package/dist/src/service/printer/terminal/Progress.d.ts +20 -0
  204. package/dist/src/service/printer/terminal/Progress.d.ts.map +1 -0
  205. package/dist/src/service/printer/terminal/Spinner.d.ts +16 -0
  206. package/dist/src/service/printer/terminal/Spinner.d.ts.map +1 -0
  207. package/dist/src/service/printer/terminal/Theme.d.ts +3 -0
  208. package/dist/src/service/printer/terminal/Theme.d.ts.map +1 -0
  209. package/dist/src/service/prompter/DefaultPrompterService.d.ts +21 -0
  210. package/dist/src/service/prompter/DefaultPrompterService.d.ts.map +1 -0
  211. package/dist/src/service/prompter/PrompterServiceProvider.d.ts +13 -0
  212. package/dist/src/service/prompter/PrompterServiceProvider.d.ts.map +1 -0
  213. package/dist/src/service/prompter/command/NoPromptCommand.d.ts +16 -0
  214. package/dist/src/service/prompter/command/NoPromptCommand.d.ts.map +1 -0
  215. package/dist/src/service/prompter/prompt/PromptContext.d.ts +15 -0
  216. package/dist/src/service/prompter/prompt/PromptContext.d.ts.map +1 -0
  217. package/dist/src/service/prompter/prompt/promptAcknowledge.d.ts +4 -0
  218. package/dist/src/service/prompter/prompt/promptAcknowledge.d.ts.map +1 -0
  219. package/dist/src/service/prompter/prompt/promptMultiSelect.d.ts +4 -0
  220. package/dist/src/service/prompter/prompt/promptMultiSelect.d.ts.map +1 -0
  221. package/dist/src/service/prompter/prompt/promptOpenUrl.d.ts +4 -0
  222. package/dist/src/service/prompter/prompt/promptOpenUrl.d.ts.map +1 -0
  223. package/dist/src/service/prompter/prompt/promptSingleSelect.d.ts +4 -0
  224. package/dist/src/service/prompter/prompt/promptSingleSelect.d.ts.map +1 -0
  225. package/dist/src/service/prompter/prompt/promptText.d.ts +4 -0
  226. package/dist/src/service/prompter/prompt/promptText.d.ts.map +1 -0
  227. package/dist/src/service/prompter/prompt/promptToggle.d.ts +4 -0
  228. package/dist/src/service/prompter/prompt/promptToggle.d.ts.map +1 -0
  229. package/dist/src/service/shutdown/DefaultShutdownService.d.ts +9 -0
  230. package/dist/src/service/shutdown/DefaultShutdownService.d.ts.map +1 -0
  231. package/dist/src/service/shutdown/ShutdownServiceProvider.d.ts +15 -0
  232. package/dist/src/service/shutdown/ShutdownServiceProvider.d.ts.map +1 -0
  233. package/dist/src/service/shutdown/ShutdownState.d.ts +6 -0
  234. package/dist/src/service/shutdown/ShutdownState.d.ts.map +1 -0
  235. package/dist/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.d.ts +17 -0
  236. package/dist/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.d.ts.map +1 -0
  237. package/dist/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.d.ts +20 -0
  238. package/dist/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.d.ts.map +1 -0
  239. package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts +10 -0
  240. package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts.map +1 -0
  241. package/dist/src/service/tableGenerator/TableGeneratorServiceProvider.d.ts +12 -0
  242. package/dist/src/service/tableGenerator/TableGeneratorServiceProvider.d.ts.map +1 -0
  243. package/dist/src/service/treePrinter/DefaultTreePrinterService.d.ts +10 -0
  244. package/dist/src/service/treePrinter/DefaultTreePrinterService.d.ts.map +1 -0
  245. package/dist/src/service/treePrinter/TreePrinterServiceProvider.d.ts +12 -0
  246. package/dist/src/service/treePrinter/TreePrinterServiceProvider.d.ts.map +1 -0
  247. package/dist/src/terminal/Ansi.d.ts +14 -0
  248. package/dist/src/terminal/Ansi.d.ts.map +1 -0
  249. package/dist/src/terminal/ImageRenderer.d.ts +7 -0
  250. package/dist/src/terminal/ImageRenderer.d.ts.map +1 -0
  251. package/dist/src/terminal/KeyReader.d.ts +22 -0
  252. package/dist/src/terminal/KeyReader.d.ts.map +1 -0
  253. package/dist/src/terminal/PngDecoder.d.ts +6 -0
  254. package/dist/src/terminal/PngDecoder.d.ts.map +1 -0
  255. package/dist/src/terminal/Styler.d.ts +9 -0
  256. package/dist/src/terminal/Styler.d.ts.map +1 -0
  257. package/dist/src/terminal/Terminal.d.ts +10 -0
  258. package/dist/src/terminal/Terminal.d.ts.map +1 -0
  259. package/dist/src/terminal/TtyKeyReader.d.ts +11 -0
  260. package/dist/src/terminal/TtyKeyReader.d.ts.map +1 -0
  261. package/dist/src/terminal/TtyStyler.d.ts +19 -0
  262. package/dist/src/terminal/TtyStyler.d.ts.map +1 -0
  263. package/dist/src/terminal/TtyTerminal.d.ts +14 -0
  264. package/dist/src/terminal/TtyTerminal.d.ts.map +1 -0
  265. package/dist/src/terminal/supportsHyperlinks.d.ts +3 -0
  266. package/dist/src/terminal/supportsHyperlinks.d.ts.map +1 -0
  267. package/dist/src/util/configHelper.d.ts +22 -0
  268. package/dist/src/util/configHelper.d.ts.map +1 -0
  269. package/dist/src/util/envVarHelper.d.ts +21 -0
  270. package/dist/src/util/envVarHelper.d.ts.map +1 -0
  271. package/dist/src/util/helpHelper.d.ts +26 -0
  272. package/dist/src/util/helpHelper.d.ts.map +1 -0
  273. package/dist/src/util/logger.d.ts +18 -0
  274. package/dist/src/util/logger.d.ts.map +1 -0
  275. package/dist/src/util/runnerHelper.d.ts +9 -0
  276. package/dist/src/util/runnerHelper.d.ts.map +1 -0
  277. package/dist/tests/cli/BaseCLI.test.d.ts +2 -0
  278. package/dist/tests/cli/BaseCLI.test.d.ts.map +1 -0
  279. package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts +2 -0
  280. package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts.map +1 -0
  281. package/dist/tests/command/CompletionCommand.test.d.ts +2 -0
  282. package/dist/tests/command/CompletionCommand.test.d.ts.map +1 -0
  283. package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts +2 -0
  284. package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts.map +1 -0
  285. package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts +2 -0
  286. package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts.map +1 -0
  287. package/dist/tests/command/UsageCommand.test.d.ts +2 -0
  288. package/dist/tests/command/UsageCommand.test.d.ts.map +1 -0
  289. package/dist/tests/command/VersionCommand.test.d.ts +2 -0
  290. package/dist/tests/command/VersionCommand.test.d.ts.map +1 -0
  291. package/dist/tests/fixtures/CLIConfig.d.ts +3 -0
  292. package/dist/tests/fixtures/CLIConfig.d.ts.map +1 -0
  293. package/dist/tests/fixtures/Command.d.ts +20 -0
  294. package/dist/tests/fixtures/Command.d.ts.map +1 -0
  295. package/{tests/fixtures/CommandRegistry.ts → dist/tests/fixtures/CommandRegistry.d.ts} +2 -4
  296. package/dist/tests/fixtures/CommandRegistry.d.ts.map +1 -0
  297. package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts +10 -0
  298. package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts.map +1 -0
  299. package/dist/tests/fixtures/Context.d.ts +4 -0
  300. package/dist/tests/fixtures/Context.d.ts.map +1 -0
  301. package/dist/tests/fixtures/ServiceProviderRegistry.d.ts +4 -0
  302. package/dist/tests/fixtures/ServiceProviderRegistry.d.ts.map +1 -0
  303. package/dist/tests/fixtures/StreamString.d.ts +10 -0
  304. package/dist/tests/fixtures/StreamString.d.ts.map +1 -0
  305. package/dist/tests/fixtures/prettierPluginFoo.d.ts +4 -0
  306. package/dist/tests/fixtures/prettierPluginFoo.d.ts.map +1 -0
  307. package/dist/tests/fixtures/util.d.ts +8 -0
  308. package/dist/tests/fixtures/util.d.ts.map +1 -0
  309. package/dist/tests/runtime/DefaultContext.test.d.ts +2 -0
  310. package/dist/tests/runtime/DefaultContext.test.d.ts.map +1 -0
  311. package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts +2 -0
  312. package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts.map +1 -0
  313. package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts +2 -0
  314. package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts.map +1 -0
  315. package/dist/tests/runtime/command/CommandValidator.test.d.ts +2 -0
  316. package/dist/tests/runtime/command/CommandValidator.test.d.ts.map +1 -0
  317. package/dist/tests/runtime/parser.test.d.ts +2 -0
  318. package/dist/tests/runtime/parser.test.d.ts.map +1 -0
  319. package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts +2 -0
  320. package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts.map +1 -0
  321. package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts +2 -0
  322. package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts.map +1 -0
  323. package/dist/tests/runtime/runner.test.d.ts +2 -0
  324. package/dist/tests/runtime/runner.test.d.ts.map +1 -0
  325. package/dist/tests/runtime/scanner.test.d.ts +2 -0
  326. package/dist/tests/runtime/scanner.test.d.ts.map +1 -0
  327. package/dist/tests/runtime/values/argumentValueMerge.test.d.ts +2 -0
  328. package/dist/tests/runtime/values/argumentValueMerge.test.d.ts.map +1 -0
  329. package/dist/tests/runtime/values/argumentValueValidation.test.d.ts +2 -0
  330. package/dist/tests/runtime/values/argumentValueValidation.test.d.ts.map +1 -0
  331. package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts +2 -0
  332. package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts.map +1 -0
  333. package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts +2 -0
  334. package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts.map +1 -0
  335. package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts +2 -0
  336. package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts.map +1 -0
  337. package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts +2 -0
  338. package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts.map +1 -0
  339. package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts +2 -0
  340. package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts.map +1 -0
  341. package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts +2 -0
  342. package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts.map +1 -0
  343. package/dist/tests/service/banner/BannerServiceProvider.test.d.ts +2 -0
  344. package/dist/tests/service/banner/BannerServiceProvider.test.d.ts.map +1 -0
  345. package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts +2 -0
  346. package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts.map +1 -0
  347. package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts +2 -0
  348. package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts.map +1 -0
  349. package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts +2 -0
  350. package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts.map +1 -0
  351. package/dist/tests/service/completion/DefaultCompletionService.test.d.ts +2 -0
  352. package/dist/tests/service/completion/DefaultCompletionService.test.d.ts.map +1 -0
  353. package/dist/tests/service/completion/shell/bash.test.d.ts +2 -0
  354. package/dist/tests/service/completion/shell/bash.test.d.ts.map +1 -0
  355. package/dist/tests/service/completion/shell/fish.test.d.ts +2 -0
  356. package/dist/tests/service/completion/shell/fish.test.d.ts.map +1 -0
  357. package/dist/tests/service/completion/shell/powershell.test.d.ts +2 -0
  358. package/dist/tests/service/completion/shell/powershell.test.d.ts.map +1 -0
  359. package/dist/tests/service/completion/shell/zsh.test.d.ts +2 -0
  360. package/dist/tests/service/completion/shell/zsh.test.d.ts.map +1 -0
  361. package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts +2 -0
  362. package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts.map +1 -0
  363. package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts +2 -0
  364. package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts.map +1 -0
  365. package/dist/tests/service/configuration/DefaultSecretService.test.d.ts +2 -0
  366. package/dist/tests/service/configuration/DefaultSecretService.test.d.ts.map +1 -0
  367. package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts +2 -0
  368. package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts.map +1 -0
  369. package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts +2 -0
  370. package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts.map +1 -0
  371. package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts +2 -0
  372. package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts.map +1 -0
  373. package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts +2 -0
  374. package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts.map +1 -0
  375. package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts +2 -0
  376. package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts.map +1 -0
  377. package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts +2 -0
  378. package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts.map +1 -0
  379. package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts +2 -0
  380. package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts.map +1 -0
  381. package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts +2 -0
  382. package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts.map +1 -0
  383. package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts +2 -0
  384. package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts.map +1 -0
  385. package/dist/tests/service/printer/DefaultPrinterService.test.d.ts +2 -0
  386. package/dist/tests/service/printer/DefaultPrinterService.test.d.ts.map +1 -0
  387. package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts +2 -0
  388. package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts.map +1 -0
  389. package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts +2 -0
  390. package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts.map +1 -0
  391. package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts +2 -0
  392. package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts.map +1 -0
  393. package/dist/tests/service/printer/command/NoColorCommand.test.d.ts +2 -0
  394. package/dist/tests/service/printer/command/NoColorCommand.test.d.ts.map +1 -0
  395. package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts +2 -0
  396. package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts.map +1 -0
  397. package/dist/tests/service/printer/terminal/Progress.test.d.ts +2 -0
  398. package/dist/tests/service/printer/terminal/Progress.test.d.ts.map +1 -0
  399. package/dist/tests/service/printer/terminal/Spinner.test.d.ts +2 -0
  400. package/dist/tests/service/printer/terminal/Spinner.test.d.ts.map +1 -0
  401. package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts +2 -0
  402. package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts.map +1 -0
  403. package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts +2 -0
  404. package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts.map +1 -0
  405. package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts +2 -0
  406. package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts.map +1 -0
  407. package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts +2 -0
  408. package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts.map +1 -0
  409. package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts +2 -0
  410. package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts.map +1 -0
  411. package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts +2 -0
  412. package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts.map +1 -0
  413. package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts +2 -0
  414. package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts.map +1 -0
  415. package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts +2 -0
  416. package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts.map +1 -0
  417. package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts +2 -0
  418. package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts.map +1 -0
  419. package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts +2 -0
  420. package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts.map +1 -0
  421. package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts +2 -0
  422. package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts.map +1 -0
  423. package/dist/tests/terminal/ImageRenderer.test.d.ts +2 -0
  424. package/dist/tests/terminal/ImageRenderer.test.d.ts.map +1 -0
  425. package/dist/tests/terminal/PngDecoder.test.d.ts +2 -0
  426. package/dist/tests/terminal/PngDecoder.test.d.ts.map +1 -0
  427. package/dist/tests/terminal/supportsHyperlinks.test.d.ts +2 -0
  428. package/dist/tests/terminal/supportsHyperlinks.test.d.ts.map +1 -0
  429. package/dist/tests/util/configHelper.test.d.ts +2 -0
  430. package/dist/tests/util/configHelper.test.d.ts.map +1 -0
  431. package/dist/tests/util/envVarHelper.test.d.ts +2 -0
  432. package/dist/tests/util/envVarHelper.test.d.ts.map +1 -0
  433. package/dist/tests/util/logger.test.d.ts +2 -0
  434. package/dist/tests/util/logger.test.d.ts.map +1 -0
  435. package/index.ts +15 -1
  436. package/package.json +28 -2
  437. package/src/api/plugin/CommandFactory.ts +25 -0
  438. package/src/api/plugin/ServiceProviderFactory.ts +27 -0
  439. package/src/api/service/core/PluginService.ts +63 -0
  440. package/src/cli/DynamicPluginRuntimeCLI.ts +77 -0
  441. package/src/command/PluginCommand.ts +184 -0
  442. package/src/launcher.ts +35 -0
  443. package/src/service/plugin/DefaultPluginService.ts +37 -0
  444. package/src/service/plugin/DefaultPluginServiceProvider.ts +29 -0
  445. package/.github/workflows/check-bun-dependencies.yml +0 -12
  446. package/.github/workflows/lint-pr-message.yml +0 -13
  447. package/.github/workflows/release-bun-library.yml +0 -15
  448. package/.github/workflows/validate-bun-library-pr.yml +0 -10
  449. package/README/core-commands.md +0 -40
  450. package/README/core-service-providers.md +0 -198
  451. package/README/development.md +0 -57
  452. package/README/implementation-details.md +0 -474
  453. package/README/key-concepts.md +0 -751
  454. package/bun.lock +0 -156
  455. package/tests/cli/BaseCLI.test.ts +0 -283
  456. package/tests/command/CompletionCommand.test.ts +0 -63
  457. package/tests/command/MultiCommandCliHelpCommand.test.ts +0 -496
  458. package/tests/command/SingleCommandCliHelpCommand.test.ts +0 -302
  459. package/tests/command/UsageCommand.test.ts +0 -48
  460. package/tests/command/VersionCommand.test.ts +0 -37
  461. package/tests/fixtures/CLIConfig.ts +0 -9
  462. package/tests/fixtures/Command.ts +0 -248
  463. package/tests/fixtures/ConfigurationServiceProvider.ts +0 -28
  464. package/tests/fixtures/Context.ts +0 -32
  465. package/tests/fixtures/ServiceProviderRegistry.ts +0 -16
  466. package/tests/fixtures/StreamString.ts +0 -37
  467. package/tests/fixtures/prettierPluginFoo.ts +0 -31
  468. package/tests/fixtures/util.ts +0 -35
  469. package/tests/runtime/DefaultContext.test.ts +0 -20
  470. package/tests/runtime/argument/ArgumentTypeGuards.test.ts +0 -47
  471. package/tests/runtime/command/CommandTypeGuards.test.ts +0 -43
  472. package/tests/runtime/command/CommandValidator.test.ts +0 -1196
  473. package/tests/runtime/parser.test.ts +0 -744
  474. package/tests/runtime/registry/DefaultCommandRegistry.test.ts +0 -144
  475. package/tests/runtime/registry/DefaultServiceProviderRegistry.test.ts +0 -36
  476. package/tests/runtime/runner.test.ts +0 -1284
  477. package/tests/runtime/scanner.test.ts +0 -915
  478. package/tests/runtime/values/argumentValueMerge.test.ts +0 -366
  479. package/tests/runtime/values/argumentValueValidation.test.ts +0 -1090
  480. package/tests/runtime/values/globalCommandValuePopulation.test.ts +0 -480
  481. package/tests/runtime/values/subCommandValuePopulation.test.ts +0 -2430
  482. package/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.ts +0 -38
  483. package/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.ts +0 -745
  484. package/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.ts +0 -17
  485. package/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.ts +0 -208
  486. package/tests/service/asciiBannerGenerator/__snapshots__/DefaultAsciiBannerGeneratorService.test.ts.snap +0 -20
  487. package/tests/service/asciiBannerGenerator/small.flf.json +0 -3
  488. package/tests/service/banner/BannerServiceProvider.test.ts +0 -87
  489. package/tests/service/banner/__snapshots__/BannerServiceProvider.test.ts.snap +0 -16
  490. package/tests/service/banner/command/NoBannerCommand.test.ts +0 -18
  491. package/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.ts +0 -52
  492. package/tests/service/completion/CompletionServiceProvider.test.ts +0 -335
  493. package/tests/service/completion/DefaultCompletionService.test.ts +0 -216
  494. package/tests/service/completion/shell/bash.test.ts +0 -73
  495. package/tests/service/completion/shell/fish.test.ts +0 -60
  496. package/tests/service/completion/shell/powershell.test.ts +0 -59
  497. package/tests/service/completion/shell/zsh.test.ts +0 -60
  498. package/tests/service/configuration/ConfigurationServiceProvider.test.ts +0 -212
  499. package/tests/service/configuration/DefaultKeyValueService.test.ts +0 -155
  500. package/tests/service/configuration/DefaultSecretService.test.ts +0 -140
  501. package/tests/service/configuration/command/ConfigCommand.test.ts +0 -29
  502. package/tests/service/configuration/command/DumpConfigCommand.test.ts +0 -51
  503. package/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.ts +0 -51
  504. package/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.ts +0 -208
  505. package/tests/service/imagePrinter/DefaultImagePrinterService.test.ts +0 -31
  506. package/tests/service/imagePrinter/ImagePrinterServiceProvider.test.ts +0 -17
  507. package/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.ts +0 -46
  508. package/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.ts +0 -37
  509. package/tests/service/printer/DefaultPrinterService.test.ts +0 -530
  510. package/tests/service/printer/PrinterServiceProvider.test.ts +0 -34
  511. package/tests/service/printer/command/DarkModeCommand.test.ts +0 -75
  512. package/tests/service/printer/command/LogLevelCommand.test.ts +0 -47
  513. package/tests/service/printer/command/NoColorCommand.test.ts +0 -75
  514. package/tests/service/printer/command/NoHyperlinksCommand.test.ts +0 -75
  515. package/tests/service/printer/terminal/Progress.test.ts +0 -98
  516. package/tests/service/printer/terminal/Spinner.test.ts +0 -92
  517. package/tests/service/prompter/DefaultPrompterService.test.ts +0 -598
  518. package/tests/service/prompter/PrompterServiceProvider.test.ts +0 -41
  519. package/tests/service/prompter/command/NoPromptCommand.test.ts +0 -58
  520. package/tests/service/prompter/prompt/PromptContext.test.ts +0 -61
  521. package/tests/service/shutdown/ShutdownServiceProvider.test.ts +0 -13
  522. package/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.ts +0 -101
  523. package/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.ts +0 -37
  524. package/tests/service/tableGenerator/DefaultTableGeneratorService.test.ts +0 -342
  525. package/tests/service/tableGenerator/TableGeneratorServiceProvider.test.ts +0 -47
  526. package/tests/service/treePrinter/DefaultTreePrinterService.test.ts +0 -142
  527. package/tests/service/treePrinter/TreePrinterServiceProvider.test.ts +0 -51
  528. package/tests/terminal/ImageRenderer.test.ts +0 -152
  529. package/tests/terminal/PngDecoder.test.ts +0 -219
  530. package/tests/terminal/supportsHyperlinks.test.ts +0 -149
  531. package/tests/util/configHelper.test.ts +0 -193
  532. package/tests/util/envVarHelper.test.ts +0 -254
  533. package/tests/util/logger.test.ts +0 -56
  534. package/tsconfig.json +0 -32
@@ -1,745 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import DefaultArgumentPrompterService from "../../../src/service/argumentPrompter/DefaultArgumentPrompterService.ts";
3
- import type PrompterService from "../../../src/api/service/core/PrompterService.ts";
4
- import type { Prompt, PromptResult } from "../../../src/api/service/core/PrompterService.ts";
5
- import type { ParseResult } from "../../../src/runtime/parser.ts";
6
- import { InvalidArgumentReason } from "../../../src/api/RunResult.ts";
7
- import {
8
- ArgumentValueTypeName,
9
- ComplexValueTypeName,
10
- } from "../../../src/api/argument/ArgumentValueTypes.ts";
11
- import type SubCommand from "../../../src/api/command/SubCommand.ts";
12
- import type GlobalCommand from "../../../src/api/command/GlobalCommand.ts";
13
- import type ComplexOption from "../../../src/api/argument/ComplexOption.ts";
14
-
15
- class MockPrompterService implements PrompterService {
16
- promptEnabled = true;
17
- #responses: Map<string, PromptResult> = new Map();
18
-
19
- addResponse(name: string, value: PromptResult["value"]) {
20
- this.#responses.set(name, { name, value });
21
- }
22
-
23
- prompt(promptDef: Prompt): Promise<PromptResult> {
24
- const result = this.#responses.get(promptDef.name);
25
- if (!result) {
26
- return Promise.reject(new Error(`No mock response for prompt: ${promptDef.name}`));
27
- }
28
- return Promise.resolve(result);
29
- }
30
-
31
- async promptAll(prompts: ReadonlyArray<Prompt>): Promise<ReadonlyArray<PromptResult>> {
32
- const results: PromptResult[] = [];
33
- for (const p of prompts) {
34
- results.push(await this.prompt(p));
35
- }
36
- return results;
37
- }
38
- }
39
-
40
- function makeSubCommand(
41
- name: string,
42
- options: SubCommand["options"] = [],
43
- positionals: SubCommand["positionals"] = [],
44
- ): SubCommand {
45
- return {
46
- name,
47
- description: `${name} description`,
48
- options,
49
- positionals,
50
- enableConfiguration: false,
51
- execute: () => Promise.resolve(),
52
- } as SubCommand;
53
- }
54
-
55
- function makeGlobalCommand(
56
- name: string,
57
- argType: ArgumentValueTypeName = ArgumentValueTypeName.STRING,
58
- ): GlobalCommand {
59
- return {
60
- name,
61
- description: `${name} description`,
62
- argument: {
63
- type: argType,
64
- },
65
- } as GlobalCommand;
66
- }
67
-
68
- describe("DefaultArgumentPrompterService tests", () => {
69
- test("promptEnabled=false returns original parseResult", async () => {
70
- const prompter = new MockPrompterService();
71
- prompter.promptEnabled = false;
72
- const service = new DefaultArgumentPrompterService(prompter);
73
-
74
- const command = makeSubCommand("test", [
75
- {
76
- name: "foo",
77
- description: "foo option",
78
- type: ArgumentValueTypeName.STRING,
79
- isOptional: false,
80
- },
81
- ]);
82
-
83
- const parseResult: ParseResult = {
84
- command,
85
- populatedArgumentValues: {},
86
- invalidArguments: [
87
- {
88
- reason: InvalidArgumentReason.MISSING_VALUE,
89
- name: "foo",
90
- },
91
- ],
92
- unusedArgs: [],
93
- };
94
-
95
- const result = await service.promptForMissingArguments(parseResult);
96
- expect(result).toBe(parseResult);
97
- });
98
-
99
- test("non-MISSING_VALUE invalidArguments returns original parseResult", async () => {
100
- const prompter = new MockPrompterService();
101
- const service = new DefaultArgumentPrompterService(prompter);
102
-
103
- const command = makeSubCommand("test");
104
- const parseResult: ParseResult = {
105
- command,
106
- populatedArgumentValues: {},
107
- invalidArguments: [
108
- {
109
- reason: InvalidArgumentReason.INCORRECT_VALUE_TYPE,
110
- name: "foo",
111
- },
112
- ],
113
- unusedArgs: [],
114
- };
115
-
116
- const result = await service.promptForMissingArguments(parseResult);
117
- expect(result).toBe(parseResult);
118
- });
119
-
120
- test("empty invalidArguments returns original parseResult", async () => {
121
- const prompter = new MockPrompterService();
122
- const service = new DefaultArgumentPrompterService(prompter);
123
-
124
- const command = makeSubCommand("test");
125
- const parseResult: ParseResult = {
126
- command,
127
- populatedArgumentValues: {},
128
- invalidArguments: [],
129
- unusedArgs: [],
130
- };
131
-
132
- const result = await service.promptForMissingArguments(parseResult);
133
- expect(result).toBe(parseResult);
134
- });
135
-
136
- test("missing STRING option prompts TEXT", async () => {
137
- const prompter = new MockPrompterService();
138
- prompter.addResponse("foo", "bar");
139
- const service = new DefaultArgumentPrompterService(prompter);
140
-
141
- const command = makeSubCommand("test", [
142
- {
143
- name: "foo",
144
- description: "foo option",
145
- type: ArgumentValueTypeName.STRING,
146
- isOptional: false,
147
- },
148
- ]);
149
-
150
- const parseResult: ParseResult = {
151
- command,
152
- populatedArgumentValues: {},
153
- invalidArguments: [
154
- {
155
- reason: InvalidArgumentReason.MISSING_VALUE,
156
- name: "foo",
157
- },
158
- ],
159
- unusedArgs: [],
160
- };
161
-
162
- const result = await service.promptForMissingArguments(parseResult);
163
- expect(result.invalidArguments.length).toEqual(0);
164
- expect((result.populatedArgumentValues as Record<string, unknown>)["foo"]).toEqual("bar");
165
- });
166
-
167
- test("missing BOOLEAN option prompts TOGGLE", async () => {
168
- const prompter = new MockPrompterService();
169
- prompter.addResponse("flag", true);
170
- const service = new DefaultArgumentPrompterService(prompter);
171
-
172
- const command = makeSubCommand("test", [
173
- {
174
- name: "flag",
175
- description: "flag option",
176
- type: ArgumentValueTypeName.BOOLEAN,
177
- isOptional: false,
178
- },
179
- ]);
180
-
181
- const parseResult: ParseResult = {
182
- command,
183
- populatedArgumentValues: {},
184
- invalidArguments: [
185
- {
186
- reason: InvalidArgumentReason.MISSING_VALUE,
187
- name: "flag",
188
- },
189
- ],
190
- unusedArgs: [],
191
- };
192
-
193
- const result = await service.promptForMissingArguments(parseResult);
194
- expect(result.invalidArguments.length).toEqual(0);
195
- expect((result.populatedArgumentValues as Record<string, unknown>)["flag"]).toEqual(true);
196
- });
197
-
198
- test("missing option with allowableValues prompts SINGLE_SELECT", async () => {
199
- const prompter = new MockPrompterService();
200
- prompter.addResponse("color", "blue");
201
- const service = new DefaultArgumentPrompterService(prompter);
202
-
203
- const command = makeSubCommand("test", [
204
- {
205
- name: "color",
206
- description: "color option",
207
- type: ArgumentValueTypeName.STRING,
208
- isOptional: false,
209
- allowableValues: ["red", "blue", "green"],
210
- },
211
- ]);
212
-
213
- const parseResult: ParseResult = {
214
- command,
215
- populatedArgumentValues: {},
216
- invalidArguments: [
217
- {
218
- reason: InvalidArgumentReason.MISSING_VALUE,
219
- name: "color",
220
- },
221
- ],
222
- unusedArgs: [],
223
- };
224
-
225
- const result = await service.promptForMissingArguments(parseResult);
226
- expect(result.invalidArguments.length).toEqual(0);
227
- expect((result.populatedArgumentValues as Record<string, unknown>)["color"]).toEqual("blue");
228
- });
229
-
230
- test("missing INTEGER option coerces string to number", async () => {
231
- const prompter = new MockPrompterService();
232
- prompter.addResponse("count", "42");
233
- const service = new DefaultArgumentPrompterService(prompter);
234
-
235
- const command = makeSubCommand("test", [
236
- {
237
- name: "count",
238
- description: "count option",
239
- type: ArgumentValueTypeName.INTEGER,
240
- isOptional: false,
241
- },
242
- ]);
243
-
244
- const parseResult: ParseResult = {
245
- command,
246
- populatedArgumentValues: {},
247
- invalidArguments: [
248
- {
249
- reason: InvalidArgumentReason.MISSING_VALUE,
250
- name: "count",
251
- },
252
- ],
253
- unusedArgs: [],
254
- };
255
-
256
- const result = await service.promptForMissingArguments(parseResult);
257
- expect(result.invalidArguments.length).toEqual(0);
258
- expect((result.populatedArgumentValues as Record<string, unknown>)["count"]).toEqual(42);
259
- });
260
-
261
- test("SubCommand with multiple missing values prompts for each", async () => {
262
- const prompter = new MockPrompterService();
263
- prompter.addResponse("name", "Alice");
264
- prompter.addResponse("age", "30");
265
- const service = new DefaultArgumentPrompterService(prompter);
266
-
267
- const command = makeSubCommand("test", [
268
- {
269
- name: "name",
270
- description: "name option",
271
- type: ArgumentValueTypeName.STRING,
272
- isOptional: false,
273
- },
274
- {
275
- name: "age",
276
- description: "age option",
277
- type: ArgumentValueTypeName.INTEGER,
278
- isOptional: false,
279
- },
280
- ]);
281
-
282
- const parseResult: ParseResult = {
283
- command,
284
- populatedArgumentValues: {},
285
- invalidArguments: [
286
- {
287
- reason: InvalidArgumentReason.MISSING_VALUE,
288
- name: "name",
289
- },
290
- {
291
- reason: InvalidArgumentReason.MISSING_VALUE,
292
- name: "age",
293
- },
294
- ],
295
- unusedArgs: [],
296
- };
297
-
298
- const result = await service.promptForMissingArguments(parseResult);
299
- expect(result.invalidArguments.length).toEqual(0);
300
- const values = result.populatedArgumentValues as Record<string, unknown>;
301
- expect(values["name"]).toEqual("Alice");
302
- expect(values["age"]).toEqual(30);
303
- });
304
-
305
- test("GlobalCommand with missing argument prompts and returns value", async () => {
306
- const prompter = new MockPrompterService();
307
- prompter.addResponse("myglob", "hello");
308
- const service = new DefaultArgumentPrompterService(prompter);
309
-
310
- const command = makeGlobalCommand("myglob");
311
-
312
- const parseResult: ParseResult = {
313
- command,
314
- populatedArgumentValues: undefined,
315
- invalidArguments: [
316
- {
317
- reason: InvalidArgumentReason.MISSING_VALUE,
318
- name: "myglob",
319
- },
320
- ],
321
- unusedArgs: [],
322
- };
323
-
324
- const result = await service.promptForMissingArguments(parseResult);
325
- expect(result.invalidArguments.length).toEqual(0);
326
- expect(result.populatedArgumentValues).toEqual("hello");
327
- });
328
-
329
- test("GlobalCommand with no argument returns original parseResult", async () => {
330
- const prompter = new MockPrompterService();
331
- const service = new DefaultArgumentPrompterService(prompter);
332
-
333
- // GlobalCommand with no argument property
334
- const command = {
335
- name: "noarg",
336
- description: "no arg command",
337
- } as GlobalCommand;
338
-
339
- const parseResult: ParseResult = {
340
- command,
341
- populatedArgumentValues: undefined,
342
- invalidArguments: [
343
- {
344
- reason: InvalidArgumentReason.MISSING_VALUE,
345
- name: "noarg",
346
- },
347
- ],
348
- unusedArgs: [],
349
- };
350
-
351
- const result = await service.promptForMissingArguments(parseResult);
352
- expect(result).toBe(parseResult);
353
- });
354
-
355
- test("GlobalCommand with INTEGER argument coerces value", async () => {
356
- const prompter = new MockPrompterService();
357
- prompter.addResponse("count", "99");
358
- const service = new DefaultArgumentPrompterService(prompter);
359
-
360
- const command = makeGlobalCommand("count", ArgumentValueTypeName.INTEGER);
361
-
362
- const parseResult: ParseResult = {
363
- command,
364
- populatedArgumentValues: undefined,
365
- invalidArguments: [
366
- {
367
- reason: InvalidArgumentReason.MISSING_VALUE,
368
- name: "count",
369
- },
370
- ],
371
- unusedArgs: [],
372
- };
373
-
374
- const result = await service.promptForMissingArguments(parseResult);
375
- expect(result.invalidArguments.length).toEqual(0);
376
- expect(result.populatedArgumentValues).toEqual(99);
377
- });
378
-
379
- test("SubCommand with complex option prompts for nested properties", async () => {
380
- const prompter = new MockPrompterService();
381
- prompter.addResponse("addr.street", "123 Main St");
382
- prompter.addResponse("addr.city", "Springfield");
383
- const service = new DefaultArgumentPrompterService(prompter);
384
-
385
- const complexOption: ComplexOption = {
386
- name: "addr",
387
- description: "address",
388
- type: ComplexValueTypeName.COMPLEX,
389
- properties: [
390
- {
391
- name: "street",
392
- description: "street name",
393
- type: ArgumentValueTypeName.STRING,
394
- isOptional: false,
395
- },
396
- {
397
- name: "city",
398
- description: "city name",
399
- type: ArgumentValueTypeName.STRING,
400
- isOptional: false,
401
- },
402
- ],
403
- };
404
-
405
- const command = makeSubCommand("test", [
406
- complexOption as unknown as SubCommand["options"][number],
407
- ]);
408
-
409
- const parseResult: ParseResult = {
410
- command,
411
- populatedArgumentValues: {},
412
- invalidArguments: [
413
- {
414
- reason: InvalidArgumentReason.MISSING_VALUE,
415
- name: "addr",
416
- },
417
- ],
418
- unusedArgs: [],
419
- };
420
-
421
- const result = await service.promptForMissingArguments(parseResult);
422
- expect(result.invalidArguments.length).toEqual(0);
423
- const values = result.populatedArgumentValues as Record<string, unknown>;
424
- const addr = values["addr"] as Record<string, unknown>;
425
- expect(addr["street"]).toEqual("123 Main St");
426
- expect(addr["city"]).toEqual("Springfield");
427
- });
428
-
429
- test("SubCommand with complex option skips optional properties with defaults", async () => {
430
- const prompter = new MockPrompterService();
431
- prompter.addResponse("addr.street", "123 Main St");
432
- const service = new DefaultArgumentPrompterService(prompter);
433
-
434
- const complexOption: ComplexOption = {
435
- name: "addr",
436
- description: "address",
437
- type: ComplexValueTypeName.COMPLEX,
438
- properties: [
439
- {
440
- name: "street",
441
- description: "street name",
442
- type: ArgumentValueTypeName.STRING,
443
- isOptional: false,
444
- },
445
- {
446
- name: "zip",
447
- description: "zip code",
448
- type: ArgumentValueTypeName.STRING,
449
- isOptional: true,
450
- defaultValue: "00000",
451
- },
452
- ],
453
- };
454
-
455
- const command = makeSubCommand("test", [
456
- complexOption as unknown as SubCommand["options"][number],
457
- ]);
458
-
459
- const parseResult: ParseResult = {
460
- command,
461
- populatedArgumentValues: {},
462
- invalidArguments: [
463
- {
464
- reason: InvalidArgumentReason.MISSING_VALUE,
465
- name: "addr",
466
- },
467
- ],
468
- unusedArgs: [],
469
- };
470
-
471
- const result = await service.promptForMissingArguments(parseResult);
472
- expect(result.invalidArguments.length).toEqual(0);
473
- const values = result.populatedArgumentValues as Record<string, unknown>;
474
- const addr = values["addr"] as Record<string, unknown>;
475
- expect(addr["street"]).toEqual("123 Main St");
476
- expect(addr["zip"]).toBeUndefined();
477
- });
478
-
479
- test("SubCommand with array option prompts for multiple values", async () => {
480
- const prompter = new MockPrompterService();
481
- prompter.addResponse("tags", "alpha");
482
- prompter.addResponse("tags_more", true);
483
- const service = new DefaultArgumentPrompterService(prompter);
484
-
485
- // Override prompt to return different values on successive calls
486
- let callCount = 0;
487
- const responses: Array<{ name: string; value: unknown }> = [
488
- { name: "tags", value: "alpha" },
489
- { name: "tags_more", value: true },
490
- { name: "tags", value: "beta" },
491
- { name: "tags_more", value: false },
492
- ];
493
- prompter.prompt = () => {
494
- const resp = responses[callCount]!;
495
- callCount++;
496
- return Promise.resolve(resp as PromptResult);
497
- };
498
-
499
- const command = makeSubCommand("test", [
500
- {
501
- name: "tags",
502
- description: "tags list",
503
- type: ArgumentValueTypeName.STRING,
504
- isOptional: false,
505
- isArray: true,
506
- },
507
- ]);
508
-
509
- const parseResult: ParseResult = {
510
- command,
511
- populatedArgumentValues: {},
512
- invalidArguments: [
513
- {
514
- reason: InvalidArgumentReason.MISSING_VALUE,
515
- name: "tags",
516
- },
517
- ],
518
- unusedArgs: [],
519
- };
520
-
521
- const result = await service.promptForMissingArguments(parseResult);
522
- expect(result.invalidArguments.length).toEqual(0);
523
- const values = result.populatedArgumentValues as Record<string, unknown>;
524
- expect(values["tags"]).toEqual(["alpha", "beta"]);
525
- });
526
-
527
- test("SubCommand with missing positional prompts for value", async () => {
528
- const prompter = new MockPrompterService();
529
- prompter.addResponse("file", "/tmp/data.txt");
530
- const service = new DefaultArgumentPrompterService(prompter);
531
-
532
- const command = makeSubCommand(
533
- "test",
534
- [],
535
- [
536
- {
537
- name: "file",
538
- description: "file path",
539
- type: ArgumentValueTypeName.STRING,
540
- },
541
- ],
542
- );
543
-
544
- const parseResult: ParseResult = {
545
- command,
546
- populatedArgumentValues: {},
547
- invalidArguments: [
548
- {
549
- reason: InvalidArgumentReason.MISSING_VALUE,
550
- name: "file",
551
- },
552
- ],
553
- unusedArgs: [],
554
- };
555
-
556
- const result = await service.promptForMissingArguments(parseResult);
557
- expect(result.invalidArguments.length).toEqual(0);
558
- const values = result.populatedArgumentValues as Record<string, unknown>;
559
- expect(values["file"]).toEqual("/tmp/data.txt");
560
- });
561
-
562
- test("SubCommand with unknown argument name pushes to remainingInvalid", async () => {
563
- const prompter = new MockPrompterService();
564
- const service = new DefaultArgumentPrompterService(prompter);
565
-
566
- const command = makeSubCommand("test", [
567
- {
568
- name: "known",
569
- description: "known option",
570
- type: ArgumentValueTypeName.STRING,
571
- isOptional: false,
572
- },
573
- ]);
574
-
575
- const parseResult: ParseResult = {
576
- command,
577
- populatedArgumentValues: {},
578
- invalidArguments: [
579
- {
580
- reason: InvalidArgumentReason.MISSING_VALUE,
581
- name: "unknown_arg",
582
- },
583
- ],
584
- unusedArgs: [],
585
- };
586
-
587
- const result = await service.promptForMissingArguments(parseResult);
588
- expect(result.invalidArguments.length).toEqual(1);
589
- expect(result.invalidArguments[0]!.name).toEqual("unknown_arg");
590
- });
591
-
592
- test("SubCommand with invalid name=undefined pushes to remainingInvalid", async () => {
593
- const prompter = new MockPrompterService();
594
- const service = new DefaultArgumentPrompterService(prompter);
595
-
596
- const command = makeSubCommand("test");
597
-
598
- const parseResult: ParseResult = {
599
- command,
600
- populatedArgumentValues: {},
601
- invalidArguments: [
602
- {
603
- reason: InvalidArgumentReason.MISSING_VALUE,
604
- },
605
- ],
606
- unusedArgs: [],
607
- };
608
-
609
- const result = await service.promptForMissingArguments(parseResult);
610
- expect(result.invalidArguments.length).toEqual(1);
611
- });
612
-
613
- test("NUMBER type coerces string to float", async () => {
614
- const prompter = new MockPrompterService();
615
- prompter.addResponse("ratio", "3.14");
616
- const service = new DefaultArgumentPrompterService(prompter);
617
-
618
- const command = makeSubCommand("test", [
619
- {
620
- name: "ratio",
621
- description: "ratio option",
622
- type: ArgumentValueTypeName.NUMBER,
623
- isOptional: false,
624
- },
625
- ]);
626
-
627
- const parseResult: ParseResult = {
628
- command,
629
- populatedArgumentValues: {},
630
- invalidArguments: [
631
- {
632
- reason: InvalidArgumentReason.MISSING_VALUE,
633
- name: "ratio",
634
- },
635
- ],
636
- unusedArgs: [],
637
- };
638
-
639
- const result = await service.promptForMissingArguments(parseResult);
640
- expect(result.invalidArguments.length).toEqual(0);
641
- const values = result.populatedArgumentValues as Record<string, unknown>;
642
- expect(values["ratio"]).toBeCloseTo(3.14);
643
- });
644
-
645
- test("BOOLEAN type coerces string 'true' to boolean true", async () => {
646
- const prompter = new MockPrompterService();
647
- prompter.addResponse("enabled", "true");
648
- const service = new DefaultArgumentPrompterService(prompter);
649
-
650
- const command = makeSubCommand("test", [
651
- {
652
- name: "enabled",
653
- description: "enabled option",
654
- type: ArgumentValueTypeName.BOOLEAN,
655
- isOptional: false,
656
- },
657
- ]);
658
-
659
- const parseResult: ParseResult = {
660
- command,
661
- populatedArgumentValues: {},
662
- invalidArguments: [
663
- {
664
- reason: InvalidArgumentReason.MISSING_VALUE,
665
- name: "enabled",
666
- },
667
- ],
668
- unusedArgs: [],
669
- };
670
-
671
- const result = await service.promptForMissingArguments(parseResult);
672
- expect(result.invalidArguments.length).toEqual(0);
673
- const values = result.populatedArgumentValues as Record<string, unknown>;
674
- expect(values["enabled"]).toEqual(true);
675
- });
676
-
677
- test("prompt error returns original parseResult", async () => {
678
- const prompter = new MockPrompterService();
679
- const service = new DefaultArgumentPrompterService(prompter);
680
-
681
- // No mock responses added, so prompt will reject
682
- const command = makeGlobalCommand("failing");
683
-
684
- const parseResult: ParseResult = {
685
- command,
686
- populatedArgumentValues: undefined,
687
- invalidArguments: [
688
- {
689
- reason: InvalidArgumentReason.MISSING_VALUE,
690
- name: "failing",
691
- },
692
- ],
693
- unusedArgs: [],
694
- };
695
-
696
- const result = await service.promptForMissingArguments(parseResult);
697
- expect(result).toBe(parseResult);
698
- });
699
-
700
- test("vararg positional triggers array prompting", async () => {
701
- const prompter = new MockPrompterService();
702
- const service = new DefaultArgumentPrompterService(prompter);
703
-
704
- let callCount = 0;
705
- const responses: Array<{ name: string; value: unknown }> = [
706
- { name: "files", value: "a.txt" },
707
- { name: "files_more", value: false },
708
- ];
709
- prompter.prompt = () => {
710
- const resp = responses[callCount]!;
711
- callCount++;
712
- return Promise.resolve(resp as PromptResult);
713
- };
714
-
715
- const command = makeSubCommand(
716
- "test",
717
- [],
718
- [
719
- {
720
- name: "files",
721
- description: "file paths",
722
- type: ArgumentValueTypeName.STRING,
723
- isVarargMultiple: true,
724
- },
725
- ],
726
- );
727
-
728
- const parseResult: ParseResult = {
729
- command,
730
- populatedArgumentValues: {},
731
- invalidArguments: [
732
- {
733
- reason: InvalidArgumentReason.MISSING_VALUE,
734
- name: "files",
735
- },
736
- ],
737
- unusedArgs: [],
738
- };
739
-
740
- const result = await service.promptForMissingArguments(parseResult);
741
- expect(result.invalidArguments.length).toEqual(0);
742
- const values = result.populatedArgumentValues as Record<string, unknown>;
743
- expect(values["files"]).toEqual(["a.txt"]);
744
- });
745
- });