@flowscripter/dynamic-cli-framework 1.7.3 → 1.7.4

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 (367) hide show
  1. package/cli-plugin.ts +1 -1
  2. package/dist/cli-plugin.d.ts +1 -1
  3. package/dist/cli-plugin.d.ts.map +1 -1
  4. package/dist/cli-plugin.js +25 -247
  5. package/dist/index.js +70 -105754
  6. package/dist/src/api/BaseCLIFeatureOptions.js +0 -0
  7. package/dist/src/api/CLI.js +0 -0
  8. package/dist/src/api/CLIConfig.js +0 -0
  9. package/dist/src/api/Context.js +0 -0
  10. package/dist/src/api/RunResult.js +73 -0
  11. package/dist/src/api/argument/Argument.js +0 -0
  12. package/dist/src/api/argument/ArgumentValueTypes.js +18 -0
  13. package/dist/src/api/argument/ComplexOption.js +1 -0
  14. package/dist/src/api/argument/GlobalCommandArgument.js +0 -0
  15. package/dist/src/api/argument/Option.js +0 -0
  16. package/dist/src/api/argument/Positional.js +0 -0
  17. package/dist/src/api/argument/SubCommandArgument.js +1 -0
  18. package/dist/src/api/command/Command.js +0 -0
  19. package/dist/src/api/command/GlobalCommand.js +0 -0
  20. package/dist/src/api/command/GlobalModifierCommand.js +0 -0
  21. package/dist/src/api/command/GroupCommand.js +0 -0
  22. package/dist/src/api/command/SubCommand.js +0 -0
  23. package/dist/src/api/command/UsageExample.js +0 -0
  24. package/dist/src/api/plugin/CLIPlugin.js +2 -0
  25. package/dist/src/api/plugin/CommandFactory.js +7 -0
  26. package/dist/src/api/plugin/ServiceProviderFactory.js +7 -0
  27. package/dist/src/api/plugin/createCLIPlugin.js +30 -0
  28. package/dist/src/api/service/ServiceProvider.js +0 -0
  29. package/dist/src/api/service/core/ArgumentPrompterService.js +1 -0
  30. package/dist/src/api/service/core/AsciiBannerGeneratorService.js +1 -0
  31. package/dist/src/api/service/core/CompletionService.js +8 -0
  32. package/dist/src/api/service/core/DataDumpGeneratorService.js +7 -0
  33. package/dist/src/api/service/core/ImagePrinterService.js +1 -0
  34. package/dist/src/api/service/core/KeyValueService.js +7 -0
  35. package/dist/src/api/service/core/PluginService.js +6 -0
  36. package/dist/src/api/service/core/PrettyPrinterService.js +1 -0
  37. package/dist/src/api/service/core/PrinterService.js +42 -0
  38. package/dist/src/api/service/core/PrompterService.js +10 -0
  39. package/dist/src/api/service/core/SecretService.js +0 -0
  40. package/dist/src/api/service/core/ShutdownService.js +1 -0
  41. package/dist/src/api/service/core/SyntaxHighlighterService.js +1 -0
  42. package/dist/src/api/service/core/Table.js +49 -0
  43. package/dist/src/api/service/core/TableGeneratorService.d.ts +1 -0
  44. package/dist/src/api/service/core/TableGeneratorService.d.ts.map +1 -1
  45. package/dist/src/api/service/core/TableGeneratorService.js +7 -0
  46. package/dist/src/api/service/core/TreePrinterService.js +1 -0
  47. package/dist/src/cli/BaseCLI.d.ts.map +1 -1
  48. package/dist/src/cli/BaseCLI.js +233 -0
  49. package/dist/src/cli/DefaultRuntimeCLI.js +20 -0
  50. package/dist/src/cli/DynamicPluginRuntimeCLI.js +50 -0
  51. package/dist/src/command/MultiCommandCliHelpCommand.js +238 -0
  52. package/dist/src/command/SingleCommandCliHelpCommand.js +104 -0
  53. package/dist/src/command/UsageCommand.js +16 -0
  54. package/dist/src/command/VersionCommand.js +13 -0
  55. package/dist/src/launcher.js +61 -0
  56. package/dist/src/runtime/DefaultContext.js +25 -0
  57. package/dist/src/runtime/argument/ArgumentTypeGuards.js +3 -0
  58. package/dist/src/runtime/command/CommandTypeGuards.js +12 -0
  59. package/dist/src/runtime/command/CommandValidator.js +371 -0
  60. package/dist/src/runtime/parser.js +105 -0
  61. package/dist/src/runtime/registry/CommandRegistry.js +0 -0
  62. package/dist/src/runtime/registry/DefaultCommandRegistry.js +190 -0
  63. package/dist/src/runtime/registry/DefaultServiceProviderRegistry.js +20 -0
  64. package/dist/src/runtime/registry/ServiceProviderRegistry.js +0 -0
  65. package/dist/src/runtime/runner.js +507 -0
  66. package/dist/src/runtime/scanner.js +244 -0
  67. package/dist/src/runtime/values/ValuePopulationResult.js +0 -0
  68. package/dist/src/runtime/values/argumentValueMerge.js +122 -0
  69. package/dist/src/runtime/values/argumentValueValidation.js +505 -0
  70. package/dist/src/runtime/values/globalCommandValuePopulation.js +67 -0
  71. package/dist/src/runtime/values/subCommandValuePopulation.js +549 -0
  72. package/dist/src/service/argumentPrompter/ArgumentPrompterServiceProvider.js +19 -0
  73. package/dist/src/service/argumentPrompter/DefaultArgumentPrompterService.js +197 -0
  74. package/dist/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.js +28 -0
  75. package/dist/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.js +233 -0
  76. package/dist/src/service/asciiBannerGenerator/standard.flf.json +3 -0
  77. package/dist/src/service/banner/BannerServiceProvider.js +60 -0
  78. package/dist/src/service/banner/command/NoBannerCommand.js +24 -0
  79. package/dist/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.js +51 -0
  80. package/dist/src/service/chiselAsciiBannerGenerator/chisel.flf.json +3 -0
  81. package/dist/src/service/completion/CompletionServiceProvider.d.ts +2 -1
  82. package/dist/src/service/completion/CompletionServiceProvider.d.ts.map +1 -1
  83. package/dist/src/service/completion/CompletionServiceProvider.js +160 -0
  84. package/dist/src/service/completion/DefaultCompletionService.js +279 -0
  85. package/dist/src/service/completion/command/CompletionCompleteSubCommand.d.ts +15 -0
  86. package/dist/src/service/completion/command/CompletionCompleteSubCommand.d.ts.map +1 -0
  87. package/dist/src/service/completion/command/CompletionCompleteSubCommand.js +37 -0
  88. package/dist/src/service/completion/command/CompletionGroupCommand.d.ts +14 -0
  89. package/dist/src/service/completion/command/CompletionGroupCommand.d.ts.map +1 -0
  90. package/dist/src/service/completion/command/CompletionGroupCommand.js +10 -0
  91. package/dist/src/service/completion/command/CompletionIntegrationSubCommand.d.ts +14 -0
  92. package/dist/src/service/completion/command/CompletionIntegrationSubCommand.d.ts.map +1 -0
  93. package/dist/src/service/completion/command/CompletionIntegrationSubCommand.js +67 -0
  94. package/dist/src/service/completion/shell/ShellHandler.js +0 -0
  95. package/dist/src/service/completion/shell/bash.js +39 -0
  96. package/dist/src/service/completion/shell/fish.js +35 -0
  97. package/dist/src/service/completion/shell/powershell.js +51 -0
  98. package/dist/src/service/completion/shell/zsh.js +42 -0
  99. package/dist/src/service/configuration/ConfigurationServiceProvider.js +482 -0
  100. package/dist/src/service/configuration/DefaultKeyValueService.js +80 -0
  101. package/dist/src/service/configuration/DefaultSecretService.js +60 -0
  102. package/dist/src/service/configuration/command/ConfigCommand.js +24 -0
  103. package/dist/src/service/configuration/command/DumpConfigCommand.js +18 -0
  104. package/dist/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.js +24 -0
  105. package/dist/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.js +59 -0
  106. package/dist/src/service/imagePrinter/DefaultImagePrinterService.js +10 -0
  107. package/dist/src/service/imagePrinter/ImagePrinterServiceProvider.js +20 -0
  108. package/dist/src/service/plugin/DefaultPluginService.js +21 -0
  109. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts +1 -1
  110. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts.map +1 -1
  111. package/dist/src/service/plugin/DefaultPluginServiceProvider.js +21 -0
  112. package/dist/src/service/plugin/command/PluginAddSubCommand.d.ts +17 -0
  113. package/dist/src/service/plugin/command/PluginAddSubCommand.d.ts.map +1 -0
  114. package/dist/src/service/plugin/command/PluginAddSubCommand.js +49 -0
  115. package/dist/src/service/plugin/command/PluginGroupCommand.d.ts +12 -0
  116. package/dist/src/service/plugin/command/PluginGroupCommand.d.ts.map +1 -0
  117. package/dist/src/service/plugin/command/PluginGroupCommand.js +21 -0
  118. package/dist/src/service/plugin/command/PluginListSubCommand.d.ts +12 -0
  119. package/dist/src/service/plugin/command/PluginListSubCommand.d.ts.map +1 -0
  120. package/dist/src/service/plugin/command/PluginListSubCommand.js +25 -0
  121. package/dist/src/service/plugin/command/PluginRemoveSubCommand.d.ts +17 -0
  122. package/dist/src/service/plugin/command/PluginRemoveSubCommand.d.ts.map +1 -0
  123. package/dist/src/service/plugin/command/PluginRemoveSubCommand.js +24 -0
  124. package/dist/src/service/plugin/command/PluginSearchSubCommand.d.ts +18 -0
  125. package/dist/src/service/plugin/command/PluginSearchSubCommand.d.ts.map +1 -0
  126. package/dist/src/service/plugin/command/PluginSearchSubCommand.js +34 -0
  127. package/dist/src/service/plugin/command/PluginUpgradeSubCommand.d.ts +12 -0
  128. package/dist/src/service/plugin/command/PluginUpgradeSubCommand.d.ts.map +1 -0
  129. package/dist/src/service/plugin/command/PluginUpgradeSubCommand.js +25 -0
  130. package/dist/src/service/plugin/command/getPluginId.d.ts +3 -0
  131. package/dist/src/service/plugin/command/getPluginId.d.ts.map +1 -0
  132. package/dist/src/service/plugin/command/getPluginId.js +3 -0
  133. package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.js +45 -0
  134. package/dist/src/service/prettyPrinter/PrettyPrinterServiceProvider.js +28 -0
  135. package/dist/src/service/printer/DefaultPrinterService.js +250 -0
  136. package/dist/src/service/printer/PrinterServiceProvider.js +43 -0
  137. package/dist/src/service/printer/command/DarkModeCommand.js +24 -0
  138. package/dist/src/service/printer/command/LogLevelCommand.js +41 -0
  139. package/dist/src/service/printer/command/NoColorCommand.js +24 -0
  140. package/dist/src/service/printer/command/NoHyperlinksCommand.js +21 -0
  141. package/dist/src/service/printer/terminal/Color.js +15 -0
  142. package/dist/src/service/printer/terminal/Progress.js +271 -0
  143. package/dist/src/service/printer/terminal/Spinner.js +83 -0
  144. package/dist/src/service/printer/terminal/Theme.js +26 -0
  145. package/dist/src/service/prompter/DefaultPrompterService.js +52 -0
  146. package/dist/src/service/prompter/PrompterServiceProvider.js +20 -0
  147. package/dist/src/service/prompter/command/NoPromptCommand.js +21 -0
  148. package/dist/src/service/prompter/prompt/PromptContext.js +22 -0
  149. package/dist/src/service/prompter/prompt/promptAcknowledge.js +19 -0
  150. package/dist/src/service/prompter/prompt/promptMultiSelect.js +74 -0
  151. package/dist/src/service/prompter/prompt/promptOpenUrl.js +70 -0
  152. package/dist/src/service/prompter/prompt/promptSingleSelect.js +73 -0
  153. package/dist/src/service/prompter/prompt/promptText.js +75 -0
  154. package/dist/src/service/prompter/prompt/promptToggle.js +21 -0
  155. package/dist/src/service/shutdown/DefaultShutdownService.js +16 -0
  156. package/dist/src/service/shutdown/ShutdownServiceProvider.js +60 -0
  157. package/dist/src/service/shutdown/ShutdownState.js +5 -0
  158. package/dist/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.js +54 -0
  159. package/dist/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.js +32 -0
  160. package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts +3 -1
  161. package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts.map +1 -1
  162. package/dist/src/service/tableGenerator/DefaultTableGeneratorService.js +344 -0
  163. package/dist/src/service/tableGenerator/TableGeneratorServiceProvider.js +26 -0
  164. package/dist/src/service/treePrinter/DefaultTreePrinterService.js +35 -0
  165. package/dist/src/service/treePrinter/TreePrinterServiceProvider.js +24 -0
  166. package/dist/src/terminal/Ansi.js +23 -0
  167. package/dist/src/terminal/ImageRenderer.js +164 -0
  168. package/dist/src/terminal/KeyReader.js +13 -0
  169. package/dist/src/terminal/PngDecoder.js +115 -0
  170. package/dist/src/terminal/Styler.js +0 -0
  171. package/dist/src/terminal/Terminal.js +0 -0
  172. package/dist/src/terminal/TtyKeyReader.js +87 -0
  173. package/dist/src/terminal/TtyStyler.js +55 -0
  174. package/dist/src/terminal/TtyTerminal.js +52 -0
  175. package/dist/src/terminal/supportsHyperlinks.js +95 -0
  176. package/dist/src/util/configHelper.js +61 -0
  177. package/dist/src/util/envVarHelper.js +216 -0
  178. package/dist/src/util/helpHelper.d.ts.map +1 -1
  179. package/dist/src/util/helpHelper.js +497 -0
  180. package/dist/src/util/logger.js +81 -0
  181. package/dist/src/util/runnerHelper.js +80 -0
  182. package/package.json +2 -2
  183. package/src/api/service/core/TableGeneratorService.ts +1 -0
  184. package/src/cli/BaseCLI.ts +4 -18
  185. package/src/service/completion/CompletionServiceProvider.ts +16 -2
  186. package/src/service/completion/command/CompletionCompleteSubCommand.ts +59 -0
  187. package/src/service/completion/command/CompletionGroupCommand.ts +21 -0
  188. package/src/{command/CompletionCommand.ts → service/completion/command/CompletionIntegrationSubCommand.ts} +12 -73
  189. package/src/service/completion/shell/bash.ts +1 -1
  190. package/src/service/completion/shell/fish.ts +1 -1
  191. package/src/service/completion/shell/powershell.ts +1 -1
  192. package/src/service/completion/shell/zsh.ts +1 -1
  193. package/src/service/plugin/DefaultPluginServiceProvider.ts +2 -2
  194. package/src/service/plugin/command/PluginAddSubCommand.ts +64 -0
  195. package/src/service/plugin/command/PluginGroupCommand.ts +27 -0
  196. package/src/service/plugin/command/PluginListSubCommand.ts +33 -0
  197. package/src/service/plugin/command/PluginRemoveSubCommand.ts +32 -0
  198. package/src/service/plugin/command/PluginSearchSubCommand.ts +42 -0
  199. package/src/service/plugin/command/PluginUpgradeSubCommand.ts +36 -0
  200. package/src/service/plugin/command/getPluginId.ts +5 -0
  201. package/src/service/tableGenerator/DefaultTableGeneratorService.ts +6 -1
  202. package/src/util/helpHelper.ts +1 -2
  203. package/dist/src/command/CompletionCommand.d.ts +0 -32
  204. package/dist/src/command/CompletionCommand.d.ts.map +0 -1
  205. package/dist/src/command/PluginCommand.d.ts +0 -67
  206. package/dist/src/command/PluginCommand.d.ts.map +0 -1
  207. package/dist/tests/cli/BaseCLI.test.d.ts +0 -2
  208. package/dist/tests/cli/BaseCLI.test.d.ts.map +0 -1
  209. package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts +0 -2
  210. package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts.map +0 -1
  211. package/dist/tests/command/CompletionCommand.test.d.ts +0 -2
  212. package/dist/tests/command/CompletionCommand.test.d.ts.map +0 -1
  213. package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts +0 -2
  214. package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts.map +0 -1
  215. package/dist/tests/command/PluginCommand.test.d.ts +0 -2
  216. package/dist/tests/command/PluginCommand.test.d.ts.map +0 -1
  217. package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts +0 -2
  218. package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts.map +0 -1
  219. package/dist/tests/command/UsageCommand.test.d.ts +0 -2
  220. package/dist/tests/command/UsageCommand.test.d.ts.map +0 -1
  221. package/dist/tests/command/VersionCommand.test.d.ts +0 -2
  222. package/dist/tests/command/VersionCommand.test.d.ts.map +0 -1
  223. package/dist/tests/fixtures/CLIConfig.d.ts +0 -3
  224. package/dist/tests/fixtures/CLIConfig.d.ts.map +0 -1
  225. package/dist/tests/fixtures/Command.d.ts +0 -20
  226. package/dist/tests/fixtures/Command.d.ts.map +0 -1
  227. package/dist/tests/fixtures/CommandRegistry.d.ts +0 -4
  228. package/dist/tests/fixtures/CommandRegistry.d.ts.map +0 -1
  229. package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts +0 -10
  230. package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts.map +0 -1
  231. package/dist/tests/fixtures/Context.d.ts +0 -4
  232. package/dist/tests/fixtures/Context.d.ts.map +0 -1
  233. package/dist/tests/fixtures/ServiceProviderRegistry.d.ts +0 -4
  234. package/dist/tests/fixtures/ServiceProviderRegistry.d.ts.map +0 -1
  235. package/dist/tests/fixtures/StreamString.d.ts +0 -10
  236. package/dist/tests/fixtures/StreamString.d.ts.map +0 -1
  237. package/dist/tests/fixtures/prettierPluginFoo.d.ts +0 -4
  238. package/dist/tests/fixtures/prettierPluginFoo.d.ts.map +0 -1
  239. package/dist/tests/fixtures/util.d.ts +0 -8
  240. package/dist/tests/fixtures/util.d.ts.map +0 -1
  241. package/dist/tests/runtime/DefaultContext.test.d.ts +0 -2
  242. package/dist/tests/runtime/DefaultContext.test.d.ts.map +0 -1
  243. package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts +0 -2
  244. package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts.map +0 -1
  245. package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts +0 -2
  246. package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts.map +0 -1
  247. package/dist/tests/runtime/command/CommandValidator.test.d.ts +0 -2
  248. package/dist/tests/runtime/command/CommandValidator.test.d.ts.map +0 -1
  249. package/dist/tests/runtime/parser.test.d.ts +0 -2
  250. package/dist/tests/runtime/parser.test.d.ts.map +0 -1
  251. package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts +0 -2
  252. package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts.map +0 -1
  253. package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts +0 -2
  254. package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts.map +0 -1
  255. package/dist/tests/runtime/runner.test.d.ts +0 -2
  256. package/dist/tests/runtime/runner.test.d.ts.map +0 -1
  257. package/dist/tests/runtime/scanner.test.d.ts +0 -2
  258. package/dist/tests/runtime/scanner.test.d.ts.map +0 -1
  259. package/dist/tests/runtime/values/argumentValueMerge.test.d.ts +0 -2
  260. package/dist/tests/runtime/values/argumentValueMerge.test.d.ts.map +0 -1
  261. package/dist/tests/runtime/values/argumentValueValidation.test.d.ts +0 -2
  262. package/dist/tests/runtime/values/argumentValueValidation.test.d.ts.map +0 -1
  263. package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts +0 -2
  264. package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts.map +0 -1
  265. package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts +0 -2
  266. package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts.map +0 -1
  267. package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts +0 -2
  268. package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts.map +0 -1
  269. package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts +0 -2
  270. package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts.map +0 -1
  271. package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts +0 -2
  272. package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts.map +0 -1
  273. package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts +0 -2
  274. package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts.map +0 -1
  275. package/dist/tests/service/banner/BannerServiceProvider.test.d.ts +0 -2
  276. package/dist/tests/service/banner/BannerServiceProvider.test.d.ts.map +0 -1
  277. package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts +0 -2
  278. package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts.map +0 -1
  279. package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts +0 -2
  280. package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts.map +0 -1
  281. package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts +0 -2
  282. package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts.map +0 -1
  283. package/dist/tests/service/completion/DefaultCompletionService.test.d.ts +0 -2
  284. package/dist/tests/service/completion/DefaultCompletionService.test.d.ts.map +0 -1
  285. package/dist/tests/service/completion/shell/bash.test.d.ts +0 -2
  286. package/dist/tests/service/completion/shell/bash.test.d.ts.map +0 -1
  287. package/dist/tests/service/completion/shell/fish.test.d.ts +0 -2
  288. package/dist/tests/service/completion/shell/fish.test.d.ts.map +0 -1
  289. package/dist/tests/service/completion/shell/powershell.test.d.ts +0 -2
  290. package/dist/tests/service/completion/shell/powershell.test.d.ts.map +0 -1
  291. package/dist/tests/service/completion/shell/zsh.test.d.ts +0 -2
  292. package/dist/tests/service/completion/shell/zsh.test.d.ts.map +0 -1
  293. package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts +0 -2
  294. package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts.map +0 -1
  295. package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts +0 -2
  296. package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts.map +0 -1
  297. package/dist/tests/service/configuration/DefaultSecretService.test.d.ts +0 -2
  298. package/dist/tests/service/configuration/DefaultSecretService.test.d.ts.map +0 -1
  299. package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts +0 -2
  300. package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts.map +0 -1
  301. package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts +0 -2
  302. package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts.map +0 -1
  303. package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts +0 -2
  304. package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts.map +0 -1
  305. package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts +0 -2
  306. package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts.map +0 -1
  307. package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts +0 -2
  308. package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts.map +0 -1
  309. package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts +0 -2
  310. package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts.map +0 -1
  311. package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts +0 -2
  312. package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts.map +0 -1
  313. package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts +0 -2
  314. package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts.map +0 -1
  315. package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts +0 -2
  316. package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts.map +0 -1
  317. package/dist/tests/service/printer/DefaultPrinterService.test.d.ts +0 -2
  318. package/dist/tests/service/printer/DefaultPrinterService.test.d.ts.map +0 -1
  319. package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts +0 -2
  320. package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts.map +0 -1
  321. package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts +0 -2
  322. package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts.map +0 -1
  323. package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts +0 -2
  324. package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts.map +0 -1
  325. package/dist/tests/service/printer/command/NoColorCommand.test.d.ts +0 -2
  326. package/dist/tests/service/printer/command/NoColorCommand.test.d.ts.map +0 -1
  327. package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts +0 -2
  328. package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts.map +0 -1
  329. package/dist/tests/service/printer/terminal/Progress.test.d.ts +0 -2
  330. package/dist/tests/service/printer/terminal/Progress.test.d.ts.map +0 -1
  331. package/dist/tests/service/printer/terminal/Spinner.test.d.ts +0 -2
  332. package/dist/tests/service/printer/terminal/Spinner.test.d.ts.map +0 -1
  333. package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts +0 -2
  334. package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts.map +0 -1
  335. package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts +0 -2
  336. package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts.map +0 -1
  337. package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts +0 -2
  338. package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts.map +0 -1
  339. package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts +0 -2
  340. package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts.map +0 -1
  341. package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts +0 -2
  342. package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts.map +0 -1
  343. package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts +0 -2
  344. package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts.map +0 -1
  345. package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts +0 -2
  346. package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts.map +0 -1
  347. package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts +0 -2
  348. package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts.map +0 -1
  349. package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts +0 -2
  350. package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts.map +0 -1
  351. package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts +0 -2
  352. package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts.map +0 -1
  353. package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts +0 -2
  354. package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts.map +0 -1
  355. package/dist/tests/terminal/ImageRenderer.test.d.ts +0 -2
  356. package/dist/tests/terminal/ImageRenderer.test.d.ts.map +0 -1
  357. package/dist/tests/terminal/PngDecoder.test.d.ts +0 -2
  358. package/dist/tests/terminal/PngDecoder.test.d.ts.map +0 -1
  359. package/dist/tests/terminal/supportsHyperlinks.test.d.ts +0 -2
  360. package/dist/tests/terminal/supportsHyperlinks.test.d.ts.map +0 -1
  361. package/dist/tests/util/configHelper.test.d.ts +0 -2
  362. package/dist/tests/util/configHelper.test.d.ts.map +0 -1
  363. package/dist/tests/util/envVarHelper.test.d.ts +0 -2
  364. package/dist/tests/util/envVarHelper.test.d.ts.map +0 -1
  365. package/dist/tests/util/logger.test.d.ts +0 -2
  366. package/dist/tests/util/logger.test.d.ts.map +0 -1
  367. package/src/command/PluginCommand.ts +0 -197
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,73 @@
1
+ export var RunState;
2
+ (function (RunState) {
3
+ /**
4
+ * Arguments were successfully parsed and the specified command(s) were successfully executed.
5
+ */
6
+ RunState[RunState["SUCCESS"] = 0] = "SUCCESS";
7
+ /**
8
+ * The arguments supplied were invalid or could not be parsed.
9
+ */
10
+ RunState[RunState["PARSE_ERROR"] = 1] = "PARSE_ERROR";
11
+ /**
12
+ * Arguments were successfully parsed but no command was discovered.
13
+ */
14
+ RunState[RunState["NO_COMMAND"] = 2] = "NO_COMMAND";
15
+ /**
16
+ * Arguments were successfully parsed and command(s) discovered but command execution failed.
17
+ */
18
+ RunState[RunState["EXECUTION_ERROR"] = 3] = "EXECUTION_ERROR";
19
+ /**
20
+ * General runtime error related to the framework.
21
+ */
22
+ RunState[RunState["RUNTIME_ERROR"] = 4] = "RUNTIME_ERROR";
23
+ /**
24
+ * Execution was interrupted by a signal (e.g. Ctrl-C or SIGTERM).
25
+ */
26
+ RunState[RunState["INTERRUPTED"] = 130] = "INTERRUPTED";
27
+ })(RunState || (RunState = {}));
28
+ /**
29
+ * Possible reasons for an invalid argument.
30
+ */
31
+ export var InvalidArgumentReason;
32
+ (function (InvalidArgumentReason) {
33
+ /**
34
+ * The argument value was not specified.
35
+ */
36
+ InvalidArgumentReason[InvalidArgumentReason["MISSING_VALUE"] = 0] = "MISSING_VALUE";
37
+ /**
38
+ * The value specified was not the correct type for the argument.
39
+ */
40
+ InvalidArgumentReason[InvalidArgumentReason["INCORRECT_VALUE_TYPE"] = 1] = "INCORRECT_VALUE_TYPE";
41
+ /**
42
+ * The argument does not support multiple values.
43
+ */
44
+ InvalidArgumentReason[InvalidArgumentReason["ILLEGAL_MULTIPLE_VALUES"] = 2] = "ILLEGAL_MULTIPLE_VALUES";
45
+ /**
46
+ * The value specified was not one of the defined allowable values for the argument.
47
+ */
48
+ InvalidArgumentReason[InvalidArgumentReason["ILLEGAL_VALUE"] = 3] = "ILLEGAL_VALUE";
49
+ /**
50
+ * The arguments specified resulted in a sparse array of values.
51
+ */
52
+ InvalidArgumentReason[InvalidArgumentReason["ILLEGAL_SPARSE_ARRAY"] = 4] = "ILLEGAL_SPARSE_ARRAY";
53
+ /**
54
+ * The argument specified an unknown complex option property.
55
+ */
56
+ InvalidArgumentReason[InvalidArgumentReason["UNKNOWN_PROPERTY"] = 5] = "UNKNOWN_PROPERTY";
57
+ /**
58
+ * Complex option nesting exceeds maximum of {@link MAXIMUM_COMPLEX_OPTION_NESTING_DEPTH}.
59
+ */
60
+ InvalidArgumentReason[InvalidArgumentReason["NESTING_DEPTH_EXCEEDED"] = 6] = "NESTING_DEPTH_EXCEEDED";
61
+ /**
62
+ * Array value nesting exceeds maximum of {@link MAXIMUM_ARGUMENT_ARRAY_SIZE}.
63
+ */
64
+ InvalidArgumentReason[InvalidArgumentReason["ARRAY_SIZE_EXCEEDED"] = 7] = "ARRAY_SIZE_EXCEEDED";
65
+ /**
66
+ * Attempt to set a primitive value on a complex object object.
67
+ */
68
+ InvalidArgumentReason[InvalidArgumentReason["OPTION_IS_COMPLEX"] = 8] = "OPTION_IS_COMPLEX";
69
+ /**
70
+ * The value failed a custom validation function defined on the argument.
71
+ */
72
+ InvalidArgumentReason[InvalidArgumentReason["CUSTOM_VALIDATION"] = 9] = "CUSTOM_VALIDATION";
73
+ })(InvalidArgumentReason || (InvalidArgumentReason = {}));
File without changes
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Enum of possible {@link Argument} value types.
3
+ */
4
+ export var ArgumentValueTypeName;
5
+ (function (ArgumentValueTypeName) {
6
+ ArgumentValueTypeName[ArgumentValueTypeName["STRING"] = 0] = "STRING";
7
+ ArgumentValueTypeName[ArgumentValueTypeName["NUMBER"] = 1] = "NUMBER";
8
+ ArgumentValueTypeName[ArgumentValueTypeName["INTEGER"] = 2] = "INTEGER";
9
+ ArgumentValueTypeName[ArgumentValueTypeName["BOOLEAN"] = 3] = "BOOLEAN";
10
+ ArgumentValueTypeName[ArgumentValueTypeName["SECRET"] = 4] = "SECRET";
11
+ })(ArgumentValueTypeName || (ArgumentValueTypeName = {}));
12
+ /**
13
+ * Only possible value for {@link ComplexOption.type}.
14
+ */
15
+ export var ComplexValueTypeName;
16
+ (function (ComplexValueTypeName) {
17
+ ComplexValueTypeName[ComplexValueTypeName["COMPLEX"] = 5] = "COMPLEX";
18
+ })(ComplexValueTypeName || (ComplexValueTypeName = {}));
@@ -0,0 +1 @@
1
+ export const MAXIMUM_COMPLEX_OPTION_NESTING_DEPTH = 10;
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ export const MAXIMUM_ARGUMENT_ARRAY_SIZE = 255;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ import { DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT } from "./CommandFactory.js";
2
+ import { DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT } from "./ServiceProviderFactory.js";
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Extension point identifier for {@link CommandFactory} extensions.
3
+ *
4
+ * Plugins register against this extension point to supply {@link Command} instances
5
+ * that are added to the CLI before execution begins.
6
+ */
7
+ export const DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT = "DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY";
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Extension point identifier for {@link ServiceProviderFactory} extensions.
3
+ *
4
+ * Plugins register against this extension point to supply {@link ServiceProvider} instances
5
+ * that are initialised by the runner as part of the normal service lifecycle.
6
+ */
7
+ export const DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT = "DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY";
@@ -0,0 +1,30 @@
1
+ import { DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT } from "./CommandFactory.js";
2
+ import { DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT } from "./ServiceProviderFactory.js";
3
+ /**
4
+ * Build a {@link CLIPlugin} from optional {@link CommandFactory} and {@link ServiceProviderFactory}
5
+ * instances (or factory functions), without needing to hand-construct extension descriptors.
6
+ */
7
+ export default function createCLIPlugin(options) {
8
+ const extensionDescriptors = [];
9
+ if (options.commandFactory) {
10
+ const commandFactory = options.commandFactory;
11
+ extensionDescriptors.push({
12
+ extensionPoint: DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT,
13
+ factory: {
14
+ create: async () => typeof commandFactory === "function" ? commandFactory() : commandFactory,
15
+ },
16
+ });
17
+ }
18
+ if (options.serviceProviderFactory) {
19
+ const serviceProviderFactory = options.serviceProviderFactory;
20
+ extensionDescriptors.push({
21
+ extensionPoint: DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT,
22
+ factory: {
23
+ create: async () => typeof serviceProviderFactory === "function"
24
+ ? serviceProviderFactory()
25
+ : serviceProviderFactory,
26
+ },
27
+ });
28
+ }
29
+ return { extensionDescriptors, pluginData: options.pluginData };
30
+ }
File without changes
@@ -0,0 +1 @@
1
+ export const ARGUMENT_PROMPTER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/argument-prompter-service";
@@ -0,0 +1 @@
1
+ export const ASCII_BANNER_GENERATOR_SERVICE_ID = "@flowscripter/dynamic-cli-framework/ascii-banner-generator-service";
@@ -0,0 +1,8 @@
1
+ export const COMPLETION_SERVICE_ID = "@flowscripter/dynamic-cli-framework/completion-service";
2
+ export var ShellType;
3
+ (function (ShellType) {
4
+ ShellType["BASH"] = "bash";
5
+ ShellType["ZSH"] = "zsh";
6
+ ShellType["FISH"] = "fish";
7
+ ShellType["POWERSHELL"] = "powershell";
8
+ })(ShellType || (ShellType = {}));
@@ -0,0 +1,7 @@
1
+ import { Buffer } from "node:buffer";
2
+ export const DATA_DUMP_GENERATOR_SERVICE_ID = "@flowscripter/dynamic-cli-framework/data-dump-generator-service";
3
+ export var DumpFormat;
4
+ (function (DumpFormat) {
5
+ DumpFormat["HEX"] = "HEX";
6
+ DumpFormat["ASCII"] = "ASCII";
7
+ })(DumpFormat || (DumpFormat = {}));
@@ -0,0 +1 @@
1
+ export const IMAGE_PRINTER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/image-printer-service";
@@ -0,0 +1,7 @@
1
+ export const KEY_VALUE_SERVICE_ID = "@flowscripter/dynamic-cli-framework/key-value-service";
2
+ /**
3
+ * The sentinel prefix used to indicate a value is stored as an OS-native secret.
4
+ * Values starting with this prefix are resolved via the {@link SecretService}.
5
+ * This prefix is reserved and must not be used for regular key-value data.
6
+ */
7
+ export const SECRET_SENTINEL_PREFIX = "__SECRET__:";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Service ID for {@link PluginService}.
3
+ *
4
+ * Pass to {@link Context.getServiceById} to retrieve the active {@link PluginService} instance.
5
+ */
6
+ export const PLUGIN_SERVICE_ID = "PLUGIN_SERVICE";
@@ -0,0 +1 @@
1
+ export const PRETTY_PRINTER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/pretty-printer-service";
@@ -0,0 +1,42 @@
1
+ export const PRINTER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/printer-service";
2
+ import { WritableStream } from "node:stream/web";
3
+ /**
4
+ * Enum of message importance level.
5
+ */
6
+ export var Level;
7
+ (function (Level) {
8
+ Level[Level["DEBUG"] = 0] = "DEBUG";
9
+ Level[Level["INFO"] = 1] = "INFO";
10
+ Level[Level["WARN"] = 2] = "WARN";
11
+ Level[Level["ERROR"] = 3] = "ERROR";
12
+ })(Level || (Level = {}));
13
+ /**
14
+ * Enum of spinner animation styles.
15
+ */
16
+ export var SpinnerStyle;
17
+ (function (SpinnerStyle) {
18
+ SpinnerStyle["BOX"] = "BOX";
19
+ SpinnerStyle["STAR"] = "STAR";
20
+ })(SpinnerStyle || (SpinnerStyle = {}));
21
+ /**
22
+ * Enum of progress bar rendering styles.
23
+ */
24
+ export var ProgressStyle;
25
+ (function (ProgressStyle) {
26
+ ProgressStyle["STROKE"] = "STROKE";
27
+ ProgressStyle["FILL"] = "FILL";
28
+ })(ProgressStyle || (ProgressStyle = {}));
29
+ /**
30
+ * Enum of message icons.
31
+ */
32
+ export var Icon;
33
+ (function (Icon) {
34
+ // Will be displayed in green if {@link Printer.colorEnabled} is `true`.
35
+ Icon[Icon["SUCCESS"] = 0] = "SUCCESS";
36
+ // Will be displayed in red if {@link Printer.colorEnabled} is `true`.
37
+ Icon[Icon["FAILURE"] = 1] = "FAILURE";
38
+ // Will be displayed in yellow if {@link Printer.colorEnabled} is `true`.
39
+ Icon[Icon["ALERT"] = 2] = "ALERT";
40
+ // Will be displayed in blue if {@link Printer.colorEnabled} is `true`.
41
+ Icon[Icon["INFORMATION"] = 3] = "INFORMATION";
42
+ })(Icon || (Icon = {}));
@@ -0,0 +1,10 @@
1
+ export const PROMPTER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/prompter-service";
2
+ export var PromptType;
3
+ (function (PromptType) {
4
+ PromptType[PromptType["SINGLE_SELECT"] = 0] = "SINGLE_SELECT";
5
+ PromptType[PromptType["MULTI_SELECT"] = 1] = "MULTI_SELECT";
6
+ PromptType[PromptType["ACKNOWLEDGE"] = 2] = "ACKNOWLEDGE";
7
+ PromptType[PromptType["TOGGLE"] = 3] = "TOGGLE";
8
+ PromptType[PromptType["TEXT"] = 4] = "TEXT";
9
+ PromptType[PromptType["OPEN_URL"] = 5] = "OPEN_URL";
10
+ })(PromptType || (PromptType = {}));
File without changes
@@ -0,0 +1 @@
1
+ export const SHUTDOWN_SERVICE_ID = "@flowscripter/dynamic-cli-framework/shutdown-service";
@@ -0,0 +1 @@
1
+ export const SYNTAX_HIGHLIGHTER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/syntax-highlighter-service";
@@ -0,0 +1,49 @@
1
+ export default class Table {
2
+ rowCount;
3
+ columnCount;
4
+ options;
5
+ #columnOptions = new Map();
6
+ #rowOptions = new Map();
7
+ #cells = new Map();
8
+ constructor(rowCount, columnCount, options) {
9
+ this.rowCount = rowCount;
10
+ this.columnCount = columnCount;
11
+ this.options = options ?? {};
12
+ }
13
+ row(rowIndex, rowOptions) {
14
+ if (rowIndex < 0 || rowIndex >= this.rowCount) {
15
+ throw new Error(`Row index ${rowIndex} out of bounds [0, ${this.rowCount})`);
16
+ }
17
+ this.#rowOptions.set(rowIndex, rowOptions);
18
+ return this;
19
+ }
20
+ column(columnIndex, columnOptions) {
21
+ if (columnIndex < 0 || columnIndex >= this.columnCount) {
22
+ throw new Error(`Column index ${columnIndex} out of bounds [0, ${this.columnCount})`);
23
+ }
24
+ this.#columnOptions.set(columnIndex, columnOptions);
25
+ return this;
26
+ }
27
+ cell(rowIndex, columnIndex, contents, cellOptions) {
28
+ if (rowIndex < 0 || rowIndex >= this.rowCount) {
29
+ throw new Error(`Row index ${rowIndex} out of bounds [0, ${this.rowCount})`);
30
+ }
31
+ if (columnIndex < 0 || columnIndex >= this.columnCount) {
32
+ throw new Error(`Column index ${columnIndex} out of bounds [0, ${this.columnCount})`);
33
+ }
34
+ this.#cells.set(`${rowIndex},${columnIndex}`, {
35
+ contents,
36
+ options: cellOptions,
37
+ });
38
+ return this;
39
+ }
40
+ getColumnOptions(columnIndex) {
41
+ return this.#columnOptions.get(columnIndex);
42
+ }
43
+ getRowOptions(rowIndex) {
44
+ return this.#rowOptions.get(rowIndex);
45
+ }
46
+ getCell(rowIndex, columnIndex) {
47
+ return this.#cells.get(`${rowIndex},${columnIndex}`);
48
+ }
49
+ }
@@ -25,6 +25,7 @@ export interface CellOptions {
25
25
  align?: Align;
26
26
  }
27
27
  export default interface TableGeneratorService {
28
+ createTable(rowCount: number, columnCount: number, options?: TableOptions): Table;
28
29
  render(table: Table): string;
29
30
  }
30
31
  import type Table from "./Table.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"TableGeneratorService.d.ts","sourceRoot":"","sources":["../../../../../src/api/service/core/TableGeneratorService.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,gEACwB,CAAC;AAEhE,oBAAY,KAAK;IACf,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACV;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC5C,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;CAC9B;AAED,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"TableGeneratorService.d.ts","sourceRoot":"","sources":["../../../../../src/api/service/core/TableGeneratorService.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,gEACwB,CAAC;AAEhE,oBAAY,KAAK;IACf,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACV;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC5C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IAClF,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;CAC9B;AAED,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const TABLE_GENERATOR_SERVICE_ID = "@flowscripter/dynamic-cli-framework/table-generator-service";
2
+ export var Align;
3
+ (function (Align) {
4
+ Align[Align["LEFT"] = 0] = "LEFT";
5
+ Align[Align["CENTER"] = 1] = "CENTER";
6
+ Align[Align["RIGHT"] = 2] = "RIGHT";
7
+ })(Align || (Align = {}));
@@ -0,0 +1 @@
1
+ export const TREE_PRINTER_SERVICE_ID = "@flowscripter/dynamic-cli-framework/tree-printer-service";
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AA4BjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAGpD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,qBAAqB,MAAM,iCAAiC,CAAC;AAiBzE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,YAAW,GAAG;;gBAavC,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,cAAc,EACpC,oBAAoB,EAAE,cAAc,EACpC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,QAAQ,EACxB,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,qBAAqB;IA2DjC;;;;;;;OAOG;IACI,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAI1D;;;;;;;;OAQG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO;IAU5B,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAiK3D"}
1
+ {"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AA4BjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAGpD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,qBAAqB,MAAM,iCAAiC,CAAC;AAYzE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,YAAW,GAAG;;gBAavC,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,cAAc,EACpC,oBAAoB,EAAE,cAAc,EACpC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,QAAQ,EACxB,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,qBAAqB;IA2DjC;;;;;;;OAOG;IACI,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAI1D;;;;;;;;OAQG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO;IAU5B,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAwJ3D"}
@@ -0,0 +1,233 @@
1
+ import { RunState } from "../api/RunResult.js";
2
+ import getLogger from "../util/logger.js";
3
+ import DefaultCommandRegistry from "../runtime/registry/DefaultCommandRegistry.js";
4
+ import DefaultServiceProviderRegistry from "../runtime/registry/DefaultServiceProviderRegistry.js";
5
+ import DefaultContext from "../runtime/DefaultContext.js";
6
+ import { SingleCommandCliHelpGlobalCommand, SingleCommandCliHelpSubCommand, } from "../command/SingleCommandCliHelpCommand.js";
7
+ import { MultiCommandCliHelpGlobalCommand, MultiCommandCliHelpSubCommand, } from "../command/MultiCommandCliHelpCommand.js";
8
+ import VersionCommand from "../command/VersionCommand.js";
9
+ import UsageCommand from "../command/UsageCommand.js";
10
+ import { isGlobalCommand, isGlobalModifierCommand, isGroupCommand, isSubCommand, } from "../runtime/command/CommandTypeGuards.js";
11
+ import CommandValidator from "../runtime/command/CommandValidator.js";
12
+ import ShutdownServiceProvider from "../service/shutdown/ShutdownServiceProvider.js";
13
+ import { shutdownState } from "../service/shutdown/ShutdownState.js";
14
+ import ConfigurationServiceProvider from "../service/configuration/ConfigurationServiceProvider.js";
15
+ import PrinterServiceProvider from "../service/printer/PrinterServiceProvider.js";
16
+ import TableGeneratorServiceProvider from "../service/tableGenerator/TableGeneratorServiceProvider.js";
17
+ import { run } from "../runtime/runner.js";
18
+ import { printRuntimeError } from "../util/runnerHelper.js";
19
+ import { WritableStream } from "node:stream/web";
20
+ import DefaultPrinterService from "../service/printer/DefaultPrinterService.js";
21
+ import DefaultPrompterService, { DEFAULT_PROMPTER_CONFIG, } from "../service/prompter/DefaultPrompterService.js";
22
+ import PrompterServiceProvider from "../service/prompter/PrompterServiceProvider.js";
23
+ import DefaultArgumentPrompterService from "../service/argumentPrompter/DefaultArgumentPrompterService.js";
24
+ import ArgumentPrompterServiceProvider from "../service/argumentPrompter/ArgumentPrompterServiceProvider.js";
25
+ import DefaultCompletionService from "../service/completion/DefaultCompletionService.js";
26
+ import CompletionServiceProvider from "../service/completion/CompletionServiceProvider.js";
27
+ import ImagePrinterServiceProvider from "../service/imagePrinter/ImagePrinterServiceProvider.js";
28
+ const logger = getLogger("BaseCLI");
29
+ /**
30
+ * Base implementation of a {@link CLI}.
31
+ *
32
+ * By default the following service providers are added:
33
+ *
34
+ * * {@link ShutdownServiceProvider}
35
+ * * {@link PrinterServiceProvider}
36
+ * * {@link ConfigurationServiceProvider}
37
+ * * {@link TableGeneratorServiceProvider}
38
+ *
39
+ * NOTE: The `ConfigurationServiceProvider` will not be added if the required `allow-read` and `allow-write`
40
+ * permissions are not granted. It can also be excluded if desired via a constructor argument.
41
+ *
42
+ * Optionally enabled via {@link BaseCLIFeatureOptions}:
43
+ *
44
+ * * {@link ImagePrinterServiceProvider}
45
+ *
46
+ * By default the following commands are added:
47
+ *
48
+ * * {@link SingleCommandCliHelpSubCommand} or {@link MultiCommandCliHelpSubCommand}
49
+ * * {@link SingleCommandCliHelpGlobalCommand} or {@link MultiCommandCliHelpGlobalCommand}
50
+ * * commands provided by the {@link ConfigurationServiceProvider}.
51
+ * * commands provided by the {@link PrinterServiceProvider}.
52
+ */
53
+ export default class BaseCLI {
54
+ #cliConfig;
55
+ #options;
56
+ #keyReader;
57
+ #stderrTerminal;
58
+ #addedNonModifierCommands;
59
+ #serviceProviderRegistry;
60
+ #commandRegistry;
61
+ #context;
62
+ #printerService;
63
+ #stdoutTerminal;
64
+ constructor(cliConfig, stdoutWritableStream, stderrWritableStream, stdoutIsColor, stderrIsColor, stdoutTerminal, stderrTerminal, styler, keyReader, options) {
65
+ if (cliConfig.name.length === 0) {
66
+ throw new Error("Invalid empty CLI name provided");
67
+ }
68
+ if (cliConfig.name[0].match(/[0-9\-_]/)) {
69
+ throw new Error(`Invalid CLI name starting with a digit or dash provided: '${cliConfig.name}'`);
70
+ }
71
+ if (cliConfig.description !== undefined && cliConfig.description.length === 0) {
72
+ throw new Error("Invalid empty CLI description provided");
73
+ }
74
+ if (cliConfig.version !== undefined && cliConfig.version.length === 0) {
75
+ throw new Error("Invalid empty CLI version provided");
76
+ }
77
+ this.#cliConfig = cliConfig;
78
+ this.#options = {
79
+ configFileSupportEnabled: false,
80
+ envVarsSupportEnabled: false,
81
+ keyValueServiceEnabled: false,
82
+ secretServiceEnabled: false,
83
+ argumentPrompterServiceEnabled: false,
84
+ completionServiceEnabled: false,
85
+ imagePrinterServiceEnabled: false,
86
+ validateAllCommands: false,
87
+ promptingEnabled: true,
88
+ ...options,
89
+ };
90
+ this.#keyReader = keyReader;
91
+ this.#stderrTerminal = stderrTerminal;
92
+ this.#addedNonModifierCommands = [];
93
+ let commandValidator;
94
+ if (this.#options.validateAllCommands) {
95
+ commandValidator = new CommandValidator(this.#cliConfig);
96
+ }
97
+ // create a service provider registry
98
+ this.#serviceProviderRegistry = new DefaultServiceProviderRegistry();
99
+ // create a command registry
100
+ this.#commandRegistry = new DefaultCommandRegistry([], commandValidator);
101
+ // create a context
102
+ this.#context = new DefaultContext(this.#cliConfig);
103
+ this.#stdoutTerminal = stdoutTerminal;
104
+ this.#printerService = new DefaultPrinterService(stdoutWritableStream, stderrWritableStream, stdoutIsColor, stderrIsColor, stdoutTerminal, stderrTerminal, styler);
105
+ }
106
+ /**
107
+ * Add a {@link ServiceProvider} to the CLI's {@link ServiceProviderRegistry}.
108
+ *
109
+ * This will register the {@link ServiceProvider}, add any provided services to the {@link Context} and register
110
+ * any provided {@link Command} instances.
111
+ *
112
+ * @param serviceProvider the {@link ServiceProvider} to add.
113
+ */
114
+ addServiceProvider(serviceProvider) {
115
+ this.#serviceProviderRegistry.addServiceProvider(serviceProvider);
116
+ }
117
+ /**
118
+ * Add a {@link Command} to the CLI's {@link CommandRegistry}.
119
+ *
120
+ * If only one non-modifier {@link Command} is added, the CLI will operate as a single command CLI and the provided
121
+ * command will be set as a default command. If more than one command is added, the CLI will operate as a
122
+ * multi-command CLI. In this case the default command will be set to a help command.
123
+ *
124
+ * @param command the {@link Command} to add.
125
+ */
126
+ addCommand(command) {
127
+ if (!isGlobalModifierCommand(command)) {
128
+ // store the command locally to help determine if this CLI will be a single or multi-command CLI
129
+ this.#addedNonModifierCommands.push(command);
130
+ }
131
+ // register the command
132
+ this.#commandRegistry.addCommand(command);
133
+ }
134
+ async run(args) {
135
+ if (this.#addedNonModifierCommands.length === 0) {
136
+ throw new Error("No non-modifier commands added to the CLI, nothing to run!");
137
+ }
138
+ if (this.#addedNonModifierCommands.length === 1 &&
139
+ !isSubCommand(this.#addedNonModifierCommands[0]) &&
140
+ !isGlobalCommand(this.#addedNonModifierCommands[0]) &&
141
+ !isGroupCommand(this.#addedNonModifierCommands[0])) {
142
+ throw new Error("If only one command is added, it must be a global command, sub-command, or group command!");
143
+ }
144
+ // create and add core services
145
+ this.addServiceProvider(new ShutdownServiceProvider(100));
146
+ this.addServiceProvider(new PrinterServiceProvider(80, this.#printerService));
147
+ this.addServiceProvider(new TableGeneratorServiceProvider(70));
148
+ const prompterService = new DefaultPrompterService(DEFAULT_PROMPTER_CONFIG, this.#stderrTerminal, this.#keyReader, this.#printerService);
149
+ prompterService.promptEnabled = this.#options.promptingEnabled;
150
+ this.addServiceProvider(new PrompterServiceProvider(75, prompterService));
151
+ if (this.#options.argumentPrompterServiceEnabled) {
152
+ const argumentPrompterService = new DefaultArgumentPrompterService(prompterService);
153
+ this.addServiceProvider(new ArgumentPrompterServiceProvider(65, argumentPrompterService));
154
+ }
155
+ if (this.#options.imagePrinterServiceEnabled) {
156
+ this.addServiceProvider(new ImagePrinterServiceProvider(55, this.#stdoutTerminal));
157
+ }
158
+ if (this.#options.completionServiceEnabled) {
159
+ const completionService = new DefaultCompletionService();
160
+ this.addServiceProvider(new CompletionServiceProvider(5, completionService, this.#commandRegistry));
161
+ }
162
+ const configurationServiceProvider = new ConfigurationServiceProvider(90, this.#options.envVarsSupportEnabled, this.#options.configFileSupportEnabled, this.#options.keyValueServiceEnabled, this.#options.secretServiceEnabled);
163
+ this.addServiceProvider(configurationServiceProvider);
164
+ for (const serviceProvider of this.#serviceProviderRegistry.getServiceProviders()) {
165
+ const serviceInfo = await serviceProvider.getServiceInfo(this.#cliConfig);
166
+ if (serviceInfo.service) {
167
+ this.#context.addServiceInstance(serviceProvider.serviceId, serviceInfo.service);
168
+ }
169
+ serviceInfo.commands.forEach((command) => {
170
+ this.#commandRegistry.addCommand(command, serviceProvider.serviceId);
171
+ });
172
+ }
173
+ logger.debug(() => `Running with args: ${args.join(" ")}`);
174
+ let helpSubCommand;
175
+ let helpGlobalCommand;
176
+ let defaultCommand;
177
+ try {
178
+ // setup help commands and default command based on the number of commands explicitly added via {@link addCommand)
179
+ if (this.#addedNonModifierCommands.length === 1 &&
180
+ !isGroupCommand(this.#addedNonModifierCommands[0])) {
181
+ // a single-command CLI
182
+ defaultCommand = this.#addedNonModifierCommands[0];
183
+ helpSubCommand = new SingleCommandCliHelpSubCommand(this.#options.envVarsSupportEnabled, defaultCommand, this.#commandRegistry);
184
+ helpGlobalCommand = new SingleCommandCliHelpGlobalCommand(this.#options.envVarsSupportEnabled, defaultCommand, this.#commandRegistry);
185
+ }
186
+ else {
187
+ // a multi-command CLI
188
+ helpSubCommand = new MultiCommandCliHelpSubCommand(this.#options.envVarsSupportEnabled, this.#commandRegistry);
189
+ helpGlobalCommand = new MultiCommandCliHelpGlobalCommand(this.#options.envVarsSupportEnabled, this.#commandRegistry);
190
+ }
191
+ // register the help commands
192
+ this.#commandRegistry.addCommand(helpSubCommand);
193
+ this.#commandRegistry.addCommand(helpGlobalCommand);
194
+ // register the version command
195
+ this.#commandRegistry.addCommand(new VersionCommand());
196
+ // run...
197
+ const runResult = await run(args, this.#commandRegistry, this.#serviceProviderRegistry, configurationServiceProvider, this.#context, defaultCommand);
198
+ // then handle the result...
199
+ if (runResult.runState === RunState.NO_COMMAND) {
200
+ // print usage
201
+ await new UsageCommand(helpGlobalCommand).execute(this.#context);
202
+ }
203
+ else if (runResult.runState === RunState.PARSE_ERROR) {
204
+ if (runResult.command !== undefined &&
205
+ (isSubCommand(runResult.command) || isGlobalCommand(runResult.command))) {
206
+ // print help on specific command
207
+ await helpSubCommand.execute(this.#context, {
208
+ command: runResult.command.name,
209
+ });
210
+ }
211
+ else {
212
+ // print usage
213
+ await new UsageCommand(helpGlobalCommand).execute(this.#context);
214
+ }
215
+ }
216
+ return runResult;
217
+ }
218
+ catch (error) {
219
+ if (shutdownState.shutdownRequested || error.message === "Interrupted") {
220
+ return { runState: RunState.INTERRUPTED };
221
+ }
222
+ logger.error("Runtime error: %s", error.message);
223
+ await printRuntimeError(this.#context, error);
224
+ return {
225
+ runState: RunState.RUNTIME_ERROR,
226
+ error: error,
227
+ };
228
+ }
229
+ finally {
230
+ await ShutdownServiceProvider.shutdown();
231
+ }
232
+ }
233
+ }