@flowscripter/dynamic-cli-framework 1.4.19 → 1.6.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,142 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import DefaultTreePrinterService from "../../../src/service/treePrinter/DefaultTreePrinterService.ts";
3
-
4
- describe("DefaultTreePrinterService tests", () => {
5
- test("Single root, no children", () => {
6
- const service = new DefaultTreePrinterService();
7
- service.colorEnabled = false;
8
-
9
- expect(service.print({ label: "Root" })).toEqual("Root");
10
- });
11
-
12
- test("Root with string children uses correct connectors", () => {
13
- const service = new DefaultTreePrinterService();
14
- service.colorEnabled = false;
15
-
16
- const result = service.print({
17
- label: "Root",
18
- children: ["Alpha", "Beta", "Gamma"],
19
- });
20
-
21
- const lines = result.split("\n");
22
- expect(lines[0]).toEqual("Root");
23
- expect(lines[1]).toEqual("├── Alpha");
24
- expect(lines[2]).toEqual("├── Beta");
25
- expect(lines[3]).toEqual("└── Gamma");
26
- });
27
-
28
- test("Root with TreeNode children uses correct connectors", () => {
29
- const service = new DefaultTreePrinterService();
30
- service.colorEnabled = false;
31
-
32
- const result = service.print({
33
- label: "Root",
34
- children: [
35
- { label: "Child1", children: ["Leaf1", "Leaf2"] },
36
- {
37
- label: "Child2",
38
- },
39
- ],
40
- });
41
-
42
- const lines = result.split("\n");
43
- expect(lines[0]).toEqual("Root");
44
- expect(lines[1]).toEqual("├── Child1");
45
- expect(lines[2]).toEqual("│ ├── Leaf1");
46
- expect(lines[3]).toEqual("│ └── Leaf2");
47
- expect(lines[4]).toEqual("└── Child2");
48
- });
49
-
50
- test("Mixed children (strings and nodes at same level)", () => {
51
- const service = new DefaultTreePrinterService();
52
- service.colorEnabled = false;
53
-
54
- const result = service.print({
55
- label: "Root",
56
- children: ["StringChild", { label: "NodeChild", children: ["Nested"] }, "Last"],
57
- });
58
-
59
- const lines = result.split("\n");
60
- expect(lines[0]).toEqual("Root");
61
- expect(lines[1]).toEqual("├── StringChild");
62
- expect(lines[2]).toEqual("├── NodeChild");
63
- expect(lines[3]).toEqual("│ └── Nested");
64
- expect(lines[4]).toEqual("└── Last");
65
- });
66
-
67
- test("Deep nesting propagates continuation chars correctly", () => {
68
- const service = new DefaultTreePrinterService();
69
- service.colorEnabled = false;
70
-
71
- const result = service.print({
72
- label: "Root",
73
- children: [
74
- {
75
- label: "L1",
76
- children: [
77
- {
78
- label: "L2",
79
- children: ["L3a", "L3b"],
80
- },
81
- "L2sibling",
82
- ],
83
- },
84
- "RootSibling",
85
- ],
86
- });
87
-
88
- const lines = result.split("\n");
89
- expect(lines[0]).toEqual("Root");
90
- expect(lines[1]).toEqual("├── L1");
91
- expect(lines[2]).toEqual("│ ├── L2");
92
- expect(lines[3]).toEqual("│ │ ├── L3a");
93
- expect(lines[4]).toEqual("│ │ └── L3b");
94
- expect(lines[5]).toEqual("│ └── L2sibling");
95
- expect(lines[6]).toEqual("└── RootSibling");
96
- });
97
-
98
- test("Last child uses └── and others use ├──", () => {
99
- const service = new DefaultTreePrinterService();
100
- service.colorEnabled = false;
101
-
102
- const result = service.print({
103
- label: "Root",
104
- children: ["A", "B", "C"],
105
- });
106
-
107
- const lines = result.split("\n");
108
- expect(lines[1]!.startsWith("├── ")).toBe(true);
109
- expect(lines[2]!.startsWith("├── ")).toBe(true);
110
- expect(lines[3]!.startsWith("└── ")).toBe(true);
111
- });
112
-
113
- test("colorEnabled=true wraps labels via colorFunction", () => {
114
- const service = new DefaultTreePrinterService();
115
- service.colorEnabled = true;
116
- service.colorFunction = (text, _color) => `[${text}]`;
117
-
118
- const result = service.print({
119
- label: "Root",
120
- children: ["Child"],
121
- });
122
-
123
- const lines = result.split("\n");
124
- expect(lines[0]).toEqual("[Root]");
125
- expect(lines[1]).toEqual("└── [Child]");
126
- });
127
-
128
- test("colorEnabled=false returns plain text", () => {
129
- const service = new DefaultTreePrinterService();
130
- service.colorEnabled = false;
131
- service.colorFunction = (text, _color) => `[${text}]`;
132
-
133
- const result = service.print({
134
- label: "Root",
135
- children: ["Child"],
136
- });
137
-
138
- const lines = result.split("\n");
139
- expect(lines[0]).toEqual("Root");
140
- expect(lines[1]).toEqual("└── Child");
141
- });
142
- });
@@ -1,51 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import DefaultContext from "../../../src/runtime/DefaultContext.ts";
3
- import { getCLIConfig } from "../../fixtures/CLIConfig.ts";
4
- import TreePrinterServiceProvider from "../../../src/service/treePrinter/TreePrinterServiceProvider.ts";
5
- import { PRINTER_SERVICE_ID } from "../../../src/api/service/core/PrinterService.ts";
6
- import DefaultPrinterService from "../../../src/service/printer/DefaultPrinterService.ts";
7
- import StreamString from "../../fixtures/StreamString.ts";
8
- import TtyTerminal from "../../../src/terminal/TtyTerminal.ts";
9
- import TtyStyler from "../../../src/terminal/TtyStyler.ts";
10
-
11
- describe("TreePrinterServiceProvider tests", () => {
12
- test("getServiceInfo returns service and empty commands", async () => {
13
- const treePrinterServiceProvider = new TreePrinterServiceProvider(100);
14
- const cliConfig = getCLIConfig();
15
-
16
- const serviceInfo = await treePrinterServiceProvider.getServiceInfo(cliConfig);
17
- expect(serviceInfo.commands.length).toEqual(0);
18
- expect(serviceInfo.service).toBeDefined();
19
- });
20
-
21
- test("initService sets colorEnabled and colorFunction from PrinterService", async () => {
22
- const dummyStdout = new StreamString();
23
- const dummyStderr = new StreamString();
24
- const treePrinterServiceProvider = new TreePrinterServiceProvider(100);
25
- const cliConfig = getCLIConfig();
26
- const context = new DefaultContext(cliConfig);
27
-
28
- context.addServiceInstance(
29
- PRINTER_SERVICE_ID,
30
- new DefaultPrinterService(
31
- dummyStdout.writableStream,
32
- dummyStderr.writableStream,
33
- true,
34
- true,
35
- new TtyTerminal(dummyStdout.writeStream),
36
- new TtyTerminal(dummyStderr.writeStream),
37
- new TtyStyler(3),
38
- ),
39
- );
40
-
41
- const serviceInfo = await treePrinterServiceProvider.getServiceInfo(cliConfig);
42
- expect(serviceInfo.commands.length).toEqual(0);
43
-
44
- await treePrinterServiceProvider.initService(context);
45
-
46
- const service =
47
- serviceInfo.service as import("../../../src/service/treePrinter/DefaultTreePrinterService.ts").default;
48
- expect(service.colorEnabled).toBe(true);
49
- expect(typeof service.colorFunction).toBe("function");
50
- });
51
- });
@@ -1,152 +0,0 @@
1
- import { deflateSync } from "node:zlib";
2
- import { describe, expect, test } from "bun:test";
3
- import supportsTerminalGraphics from "supports-terminal-graphics";
4
- import ImageRenderer from "../../src/terminal/ImageRenderer.ts";
5
- import type Terminal from "../../src/terminal/Terminal.ts";
6
-
7
- // Build a proper PNG with valid CRC values
8
- function crc32Table(): Uint32Array {
9
- const table = new Uint32Array(256);
10
- for (let n = 0; n < 256; n++) {
11
- let c = n;
12
- for (let k = 0; k < 8; k++) {
13
- if (c & 1) {
14
- c = 0xedb88320 ^ (c >>> 1);
15
- } else {
16
- c = c >>> 1;
17
- }
18
- }
19
- table[n] = c;
20
- }
21
- return table;
22
- }
23
-
24
- const CRC_TABLE = crc32Table();
25
-
26
- function crc32(data: Uint8Array): number {
27
- let crc = 0xffffffff;
28
- for (let i = 0; i < data.length; i++) {
29
- crc = CRC_TABLE[(crc ^ data[i]!) & 0xff]! ^ (crc >>> 8);
30
- }
31
- return (crc ^ 0xffffffff) >>> 0;
32
- }
33
-
34
- function buildValidPng(width: number, height: number, colorType: number = 6): Uint8Array {
35
- const parts: number[] = [];
36
-
37
- // PNG signature
38
- parts.push(137, 80, 78, 71, 13, 10, 26, 10);
39
-
40
- function addChunk(type: string, data: Uint8Array) {
41
- // Length (4 bytes big-endian)
42
- const len = data.length;
43
- parts.push((len >>> 24) & 0xff, (len >>> 16) & 0xff, (len >>> 8) & 0xff, len & 0xff);
44
-
45
- // Type (4 bytes)
46
- const typeBytes = new TextEncoder().encode(type);
47
- for (const b of typeBytes) parts.push(b);
48
-
49
- // Data
50
- for (const b of data) parts.push(b);
51
-
52
- // CRC over type + data
53
- const crcInput = new Uint8Array(4 + data.length);
54
- crcInput.set(typeBytes, 0);
55
- crcInput.set(data, 4);
56
- const crcVal = crc32(crcInput);
57
- parts.push(
58
- (crcVal >>> 24) & 0xff,
59
- (crcVal >>> 16) & 0xff,
60
- (crcVal >>> 8) & 0xff,
61
- crcVal & 0xff,
62
- );
63
- }
64
-
65
- // IHDR
66
- const ihdr = new Uint8Array(13);
67
- const ihdrView = new DataView(ihdr.buffer);
68
- ihdrView.setUint32(0, width);
69
- ihdrView.setUint32(4, height);
70
- ihdr[8] = 8; // bit depth
71
- ihdr[9] = colorType;
72
- ihdr[10] = 0; // compression
73
- ihdr[11] = 0; // filter
74
- ihdr[12] = 0; // interlace
75
- addChunk("IHDR", ihdr);
76
-
77
- // IDAT
78
- const bpp = colorType === 6 ? 4 : 3;
79
- const stride = width * bpp;
80
- const raw = new Uint8Array(height * (1 + stride));
81
- let offset = 0;
82
- for (let y = 0; y < height; y++) {
83
- raw[offset++] = 0; // filter: none
84
- for (let x = 0; x < width; x++) {
85
- raw[offset++] = (x * 80 + y * 40) & 0xff; // R
86
- raw[offset++] = (x * 60 + y * 30) & 0xff; // G
87
- raw[offset++] = (x * 40 + y * 20) & 0xff; // B
88
- if (bpp === 4) {
89
- raw[offset++] = 255; // A
90
- }
91
- }
92
- }
93
- const compressed = deflateSync(raw);
94
- addChunk("IDAT", new Uint8Array(compressed));
95
-
96
- // IEND
97
- addChunk("IEND", new Uint8Array(0));
98
-
99
- return new Uint8Array(parts);
100
- }
101
-
102
- function createMockTerminal(columns: number = 80, rows: number = 24): Terminal {
103
- return {
104
- clearLine: () => Promise.resolve(),
105
- clearUpLines: () => Promise.resolve(),
106
- hideCursor: () => Promise.resolve(),
107
- showCursor: () => Promise.resolve(),
108
- write: () => Promise.resolve(),
109
- columns: () => columns,
110
- rows: () => rows,
111
- };
112
- }
113
-
114
- describe("ImageRenderer", () => {
115
- test("renderImage returns a string with correct protocol markers", async () => {
116
- const terminal = createMockTerminal(40, 20);
117
- const renderer = new ImageRenderer(terminal);
118
- const png = buildValidPng(4, 4, 6);
119
-
120
- const result = await renderer.renderImage(png, 50);
121
- expect(typeof result).toBe("string");
122
- expect(result.length).toBeGreaterThan(0);
123
-
124
- if (supportsTerminalGraphics.stdout.kitty) {
125
- expect(result).toContain("\x1b_Gf=100");
126
- } else if (supportsTerminalGraphics.stdout.iterm2) {
127
- expect(result).toContain("\x1b]1337;File=inline=1;width=50%:");
128
- } else {
129
- expect(result).toContain("\n");
130
- }
131
- });
132
-
133
- test("renderImage with default widthPercentage", async () => {
134
- const terminal = createMockTerminal(80, 24);
135
- const renderer = new ImageRenderer(terminal);
136
- const png = buildValidPng(2, 2, 6);
137
-
138
- const result = await renderer.renderImage(png);
139
- expect(typeof result).toBe("string");
140
- expect(result.length).toBeGreaterThan(0);
141
- });
142
-
143
- test("renderImage with RGB image (colorType=2)", async () => {
144
- const terminal = createMockTerminal(40, 20);
145
- const renderer = new ImageRenderer(terminal);
146
- const png = buildValidPng(4, 4, 2);
147
-
148
- const result = await renderer.renderImage(png, 50);
149
- expect(typeof result).toBe("string");
150
- expect(result.length).toBeGreaterThan(0);
151
- });
152
- });
@@ -1,219 +0,0 @@
1
- import { deflateSync } from "node:zlib";
2
- import { describe, expect, test } from "bun:test";
3
- import { decodePngToRGBA } from "../../src/terminal/PngDecoder.ts";
4
-
5
- // Helper to build a minimal PNG from raw components
6
- function buildPng(chunks: Array<{ type: string; data: Uint8Array }>): Uint8Array {
7
- const parts: Uint8Array[] = [];
8
- // PNG signature
9
- parts.push(new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]));
10
-
11
- for (const chunk of chunks) {
12
- const typeBytes = new TextEncoder().encode(chunk.type);
13
- const lengthBuf = new ArrayBuffer(4);
14
- new DataView(lengthBuf).setUint32(0, chunk.data.length);
15
-
16
- // CRC placeholder (4 bytes of zeros - decoder doesn't validate CRC)
17
- const crc = new Uint8Array(4);
18
-
19
- parts.push(new Uint8Array(lengthBuf));
20
- parts.push(typeBytes);
21
- parts.push(chunk.data);
22
- parts.push(crc);
23
- }
24
-
25
- const totalLength = parts.reduce((sum, p) => sum + p.length, 0);
26
- const result = new Uint8Array(totalLength);
27
- let offset = 0;
28
- for (const p of parts) {
29
- result.set(p, offset);
30
- offset += p.length;
31
- }
32
- return result;
33
- }
34
-
35
- function makeIHDR(
36
- width: number,
37
- height: number,
38
- bitDepth: number,
39
- colorType: number,
40
- interlace: number = 0,
41
- ): Uint8Array {
42
- const buf = new ArrayBuffer(13);
43
- const view = new DataView(buf);
44
- view.setUint32(0, width);
45
- view.setUint32(4, height);
46
- const bytes = new Uint8Array(buf);
47
- bytes[8] = bitDepth;
48
- bytes[9] = colorType;
49
- bytes[10] = 0; // compression
50
- bytes[11] = 0; // filter method
51
- bytes[12] = interlace;
52
- return bytes;
53
- }
54
-
55
- // Build raw scanline data for a simple image with a given filter type
56
- function makeRawScanlines(
57
- width: number,
58
- height: number,
59
- bpp: number,
60
- filterType: number,
61
- ): Uint8Array {
62
- const stride = width * bpp;
63
- const raw = new Uint8Array(height * (1 + stride));
64
- let offset = 0;
65
- for (let y = 0; y < height; y++) {
66
- raw[offset++] = filterType;
67
- for (let x = 0; x < stride; x++) {
68
- // Simple pixel values
69
- raw[offset++] = ((y * stride + x) * 37 + 100) & 0xff;
70
- }
71
- }
72
- return raw;
73
- }
74
-
75
- function buildSimplePng(
76
- width: number,
77
- height: number,
78
- colorType: number,
79
- filterType: number = 0,
80
- ): Uint8Array {
81
- const bpp = colorType === 6 ? 4 : 3;
82
- const rawData = makeRawScanlines(width, height, bpp, filterType);
83
- const compressed = deflateSync(rawData);
84
-
85
- return buildPng([
86
- { type: "IHDR", data: makeIHDR(width, height, 8, colorType) },
87
- { type: "IDAT", data: new Uint8Array(compressed) },
88
- { type: "IEND", data: new Uint8Array(0) },
89
- ]);
90
- }
91
-
92
- describe("decodePngToRGBA", () => {
93
- test("decodes a simple RGBA (colorType=6) PNG", () => {
94
- const png = buildSimplePng(2, 2, 6, 0);
95
- const result = decodePngToRGBA(png);
96
- expect(result.width).toBe(2);
97
- expect(result.height).toBe(2);
98
- expect(result.pixels.length).toBe(2 * 2 * 4);
99
- });
100
-
101
- test("decodes a simple RGB (colorType=2) PNG and sets alpha to 255", () => {
102
- const png = buildSimplePng(2, 2, 2, 0);
103
- const result = decodePngToRGBA(png);
104
- expect(result.width).toBe(2);
105
- expect(result.height).toBe(2);
106
- expect(result.pixels.length).toBe(2 * 2 * 4);
107
- // Every 4th byte (alpha) should be 255
108
- for (let i = 3; i < result.pixels.length; i += 4) {
109
- expect(result.pixels[i]).toBe(255);
110
- }
111
- });
112
-
113
- test("handles filter type 1 (Sub)", () => {
114
- const png = buildSimplePng(3, 2, 6, 1);
115
- const result = decodePngToRGBA(png);
116
- expect(result.width).toBe(3);
117
- expect(result.height).toBe(2);
118
- });
119
-
120
- test("handles filter type 2 (Up)", () => {
121
- const png = buildSimplePng(3, 2, 6, 2);
122
- const result = decodePngToRGBA(png);
123
- expect(result.width).toBe(3);
124
- expect(result.height).toBe(2);
125
- });
126
-
127
- test("handles filter type 3 (Average)", () => {
128
- const png = buildSimplePng(3, 2, 6, 3);
129
- const result = decodePngToRGBA(png);
130
- expect(result.width).toBe(3);
131
- expect(result.height).toBe(2);
132
- });
133
-
134
- test("handles filter type 4 (Paeth)", () => {
135
- const png = buildSimplePng(3, 2, 6, 4);
136
- const result = decodePngToRGBA(png);
137
- expect(result.width).toBe(3);
138
- expect(result.height).toBe(2);
139
- });
140
-
141
- test("handles filter type 4 (Paeth) with RGB colorType", () => {
142
- const png = buildSimplePng(3, 3, 2, 4);
143
- const result = decodePngToRGBA(png);
144
- expect(result.width).toBe(3);
145
- expect(result.height).toBe(3);
146
- // Alpha should be 255 for RGB
147
- for (let i = 3; i < result.pixels.length; i += 4) {
148
- expect(result.pixels[i]).toBe(255);
149
- }
150
- });
151
-
152
- test("throws on invalid PNG signature", () => {
153
- const data = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
154
- expect(() => decodePngToRGBA(data)).toThrow("Invalid PNG signature");
155
- });
156
-
157
- test("throws on unsupported bit depth", () => {
158
- const png = buildPng([
159
- { type: "IHDR", data: makeIHDR(1, 1, 16, 2) },
160
- { type: "IEND", data: new Uint8Array(0) },
161
- ]);
162
- expect(() => decodePngToRGBA(png)).toThrow("Unsupported bit depth: 16");
163
- });
164
-
165
- test("throws on unsupported color type", () => {
166
- const png = buildPng([
167
- { type: "IHDR", data: makeIHDR(1, 1, 8, 0) },
168
- { type: "IEND", data: new Uint8Array(0) },
169
- ]);
170
- expect(() => decodePngToRGBA(png)).toThrow("Unsupported color type: 0");
171
- });
172
-
173
- test("throws on interlaced PNG", () => {
174
- const png = buildPng([
175
- { type: "IHDR", data: makeIHDR(1, 1, 8, 6, 1) },
176
- { type: "IEND", data: new Uint8Array(0) },
177
- ]);
178
- expect(() => decodePngToRGBA(png)).toThrow("Interlaced PNGs are not supported");
179
- });
180
-
181
- test("throws on unknown filter type", () => {
182
- // Build raw scanlines with invalid filter type 5
183
- const width = 1;
184
- const height = 1;
185
- const bpp = 4;
186
- const stride = width * bpp;
187
- const raw = new Uint8Array(height * (1 + stride));
188
- raw[0] = 5; // invalid filter
189
- for (let i = 1; i <= stride; i++) raw[i] = 128;
190
- const compressed = deflateSync(raw);
191
-
192
- const png = buildPng([
193
- { type: "IHDR", data: makeIHDR(width, height, 8, 6) },
194
- { type: "IDAT", data: new Uint8Array(compressed) },
195
- { type: "IEND", data: new Uint8Array(0) },
196
- ]);
197
- expect(() => decodePngToRGBA(png)).toThrow("Unknown filter type: 5");
198
- });
199
-
200
- test("handles multiple IDAT chunks", () => {
201
- const bpp = 4;
202
- const rawData = makeRawScanlines(2, 2, bpp, 0);
203
- const compressed = new Uint8Array(deflateSync(rawData));
204
- // Split compressed data into two chunks
205
- const mid = Math.floor(compressed.length / 2);
206
- const chunk1 = compressed.subarray(0, mid);
207
- const chunk2 = compressed.subarray(mid);
208
-
209
- const png = buildPng([
210
- { type: "IHDR", data: makeIHDR(2, 2, 8, 6) },
211
- { type: "IDAT", data: chunk1 },
212
- { type: "IDAT", data: chunk2 },
213
- { type: "IEND", data: new Uint8Array(0) },
214
- ]);
215
- const result = decodePngToRGBA(png);
216
- expect(result.width).toBe(2);
217
- expect(result.height).toBe(2);
218
- });
219
- });