@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
@@ -0,0 +1,25 @@
1
+ import { Icon, PRINTER_SERVICE_ID } from "../../../api/service/core/PrinterService.js";
2
+ import { PLUGIN_SERVICE_ID } from "../../../api/service/core/PluginService.js";
3
+ import { getPluginId } from "./getPluginId.js";
4
+ export class PluginUpgradeSubCommand {
5
+ name = "upgrade";
6
+ description = "Upgrade locally installed plugins";
7
+ enableConfiguration = false;
8
+ options = [];
9
+ positionals = [];
10
+ async execute(context, _argumentValues) {
11
+ const printerService = context.getServiceById(PRINTER_SERVICE_ID);
12
+ const pluginService = context.getServiceById(PLUGIN_SERVICE_ID);
13
+ let upgraded = 0;
14
+ for await (const update of pluginService.checkForUpdates()) {
15
+ const id = getPluginId(update.descriptor);
16
+ await printerService.info(`Upgrading ${id} to ${update.availableVersion}...\n`, Icon.INFORMATION);
17
+ await pluginService.install(update.descriptor);
18
+ await printerService.print(`Upgraded ${id} to ${update.availableVersion}.\n`, Icon.SUCCESS);
19
+ upgraded++;
20
+ }
21
+ if (upgraded === 0) {
22
+ await printerService.print("All plugins are up to date.\n");
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,3 @@
1
+ import type { VersionedPluginDescriptor } from "@flowscripter/dynamic-plugin-framework";
2
+ export declare function getPluginId(descriptor: VersionedPluginDescriptor): string;
3
+ //# sourceMappingURL=getPluginId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPluginId.d.ts","sourceRoot":"","sources":["../../../../../src/service/plugin/command/getPluginId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAExF,wBAAgB,WAAW,CAAC,UAAU,EAAE,yBAAyB,GAAG,MAAM,CAEzE"}
@@ -0,0 +1,3 @@
1
+ export function getPluginId(descriptor) {
2
+ return descriptor.scope ? `@${descriptor.scope}/${descriptor.name}` : descriptor.name;
3
+ }
@@ -0,0 +1,45 @@
1
+ import * as prettier from "prettier";
2
+ /**
3
+ * Default implementation of {@link PrettyPrinterService} which provides by default the
4
+ * syntaxes built into prettier.
5
+ */
6
+ export default class DefaultPrettyPrinterService {
7
+ #registeredSyntaxes = new Array();
8
+ #syntaxNameToPluginnMap = new Map();
9
+ async #populateBuiltInSyntaxes() {
10
+ const languages = (await prettier.getSupportInfo()).languages;
11
+ this.#registeredSyntaxes = languages.map((language) => language.name.toLowerCase());
12
+ }
13
+ async getRegisteredSyntaxes() {
14
+ if (this.#registeredSyntaxes.length === 0) {
15
+ await this.#populateBuiltInSyntaxes();
16
+ }
17
+ return this.#registeredSyntaxes;
18
+ }
19
+ async prettify(text, syntaxName) {
20
+ if (this.#registeredSyntaxes.length === 0) {
21
+ await this.#populateBuiltInSyntaxes();
22
+ }
23
+ const name = syntaxName.toLowerCase();
24
+ if (!this.#registeredSyntaxes.includes(name)) {
25
+ throw new Error(`Syntax name is not registered: ${name}`);
26
+ }
27
+ const options = { parser: syntaxName };
28
+ const syntaxPlugin = this.#syntaxNameToPluginnMap.get(name);
29
+ if (syntaxPlugin) {
30
+ options.plugins = [syntaxPlugin];
31
+ }
32
+ return prettier.format(text, options);
33
+ }
34
+ async registerSyntax(syntaxName, syntaxPlugin) {
35
+ if (this.#registeredSyntaxes.length === 0) {
36
+ await this.#populateBuiltInSyntaxes();
37
+ }
38
+ const name = syntaxName.toLowerCase();
39
+ if (this.#registeredSyntaxes.includes(name)) {
40
+ throw new Error(`Syntax name already registered: ${name}`);
41
+ }
42
+ this.#registeredSyntaxes.push(name);
43
+ this.#syntaxNameToPluginnMap.set(name, syntaxPlugin);
44
+ }
45
+ }
@@ -0,0 +1,28 @@
1
+ import DefaultPrettyPrinterService from "./DefaultPrettyPrinterService.js";
2
+ import { PRETTY_PRINTER_SERVICE_ID } from "../../api/service/core/PrettyPrinterService.js";
3
+ /**
4
+ * Provides a {@link PrettyPrinterService}.
5
+ */
6
+ export default class PrettyPrinterServiceProvider {
7
+ servicePriority;
8
+ serviceId = PRETTY_PRINTER_SERVICE_ID;
9
+ #defaultPrettyPrinterService;
10
+ /**
11
+ * Create an instance of the service provider with the specified details.
12
+ *
13
+ * @param servicePriority the priority of the service.
14
+ */
15
+ constructor(servicePriority) {
16
+ this.servicePriority = servicePriority;
17
+ this.#defaultPrettyPrinterService = new DefaultPrettyPrinterService();
18
+ }
19
+ getServiceInfo(_cliConfig) {
20
+ return Promise.resolve({
21
+ service: this.#defaultPrettyPrinterService,
22
+ commands: [],
23
+ });
24
+ }
25
+ initService(_context) {
26
+ return Promise.resolve(undefined);
27
+ }
28
+ }
@@ -0,0 +1,250 @@
1
+ import { default as Spinner } from "./terminal/Spinner.js";
2
+ import { default as Progress } from "./terminal/Progress.js";
3
+ import { Level, } from "../../api/service/core/PrinterService.js";
4
+ import { Color } from "./terminal/Color.js";
5
+ import { getDarkModeTheme, getLightModeTheme } from "./terminal/Theme.js";
6
+ import { WritableStream } from "node:stream/web";
7
+ export default class DefaultPrinterService {
8
+ stdoutWritable;
9
+ stderrWritable;
10
+ #stdoutIsColor;
11
+ #stdoutTerminal;
12
+ #stderrTerminal;
13
+ #styler;
14
+ #isDarkMode = true;
15
+ #threshold = Level.INFO;
16
+ #iconDefinitions = [];
17
+ #theme = [];
18
+ #encoder = new TextEncoder();
19
+ #spinner;
20
+ #progress;
21
+ async #log(level, message, icon) {
22
+ if (this.#threshold > level) {
23
+ return;
24
+ }
25
+ await this.#spinner.pause();
26
+ await this.#progress.pause();
27
+ await this.#stderrTerminal.write(`${icon !== undefined ? `${this.#iconDefinitions[icon]} ` : ""}${message}`);
28
+ this.#spinner.resume();
29
+ this.#progress.resume();
30
+ }
31
+ constructor(stdoutWritableStream, stderrWritableStream, stdoutIsColor, stderrIsColor, stdoutTerminal, stderrTerminal, styler) {
32
+ this.stdoutWritable = stdoutWritableStream;
33
+ this.stderrWritable = stderrWritableStream;
34
+ this.#stdoutIsColor = stdoutIsColor;
35
+ this.#stdoutTerminal = stdoutTerminal;
36
+ this.#stderrTerminal = stderrTerminal;
37
+ this.#styler = styler;
38
+ this.#styler.colorEnabled = stderrIsColor;
39
+ this.#spinner = new Spinner(this.#stderrTerminal, this.#styler);
40
+ this.#progress = new Progress(this.#stderrTerminal, this.#styler);
41
+ this.darkMode = false;
42
+ this.#iconDefinitions = [this.green("✔"), this.red("✖"), this.yellow("‼"), this.blue("ℹ")];
43
+ }
44
+ set colorEnabled(enabled) {
45
+ this.#styler.colorEnabled = enabled;
46
+ this.#stdoutIsColor = enabled;
47
+ if (enabled) {
48
+ this.#iconDefinitions = [this.green("✔"), this.red("✖"), this.yellow("‼"), this.blue("ℹ")];
49
+ }
50
+ else {
51
+ this.#iconDefinitions = ["✔", "✖", "‼", "ℹ"];
52
+ }
53
+ }
54
+ get colorEnabled() {
55
+ return this.#styler.colorEnabled;
56
+ }
57
+ set hyperlinksEnabled(enabled) {
58
+ this.#styler.hyperlinksEnabled = enabled;
59
+ }
60
+ get hyperlinksEnabled() {
61
+ return this.#styler.hyperlinksEnabled;
62
+ }
63
+ hyperlink(text, url) {
64
+ return this.#styler.hyperlink(text, url);
65
+ }
66
+ stdoutColumns() {
67
+ return this.#stdoutTerminal.columns();
68
+ }
69
+ stderrColumns() {
70
+ return this.#stderrTerminal.columns();
71
+ }
72
+ set darkMode(isDarkMode) {
73
+ this.#isDarkMode = isDarkMode;
74
+ if (isDarkMode) {
75
+ this.#theme = getDarkModeTheme();
76
+ }
77
+ else {
78
+ this.#theme = getLightModeTheme();
79
+ }
80
+ this.#spinner.spinnerColor = this.#theme[Color.EMPHASISED];
81
+ this.#spinner.messageColor = this.#theme[Color.PRIMARY];
82
+ this.#progress.completeColor = this.#theme[Color.GREEN];
83
+ this.#progress.remainingColor = this.#theme[Color.SECONDARY];
84
+ this.#progress.labelColor = this.#theme[Color.SECONDARY];
85
+ this.#progress.valueColor = this.#theme[Color.PRIMARY];
86
+ }
87
+ get darkMode() {
88
+ return this.#isDarkMode;
89
+ }
90
+ primary(message) {
91
+ return this.#styler.colorText(message, this.#theme[Color.PRIMARY]);
92
+ }
93
+ secondary(message) {
94
+ return this.#styler.colorText(message, this.#theme[Color.SECONDARY]);
95
+ }
96
+ emphasised(message) {
97
+ return this.#styler.colorText(message, this.#theme[Color.EMPHASISED]);
98
+ }
99
+ selected(message) {
100
+ return this.#styler.colorText(message, this.#theme[Color.SELECTED]);
101
+ }
102
+ italic(message) {
103
+ return this.#styler.italicText(message);
104
+ }
105
+ yellow(message) {
106
+ return this.#styler.colorText(message, this.#theme[Color.YELLOW]);
107
+ }
108
+ orange(message) {
109
+ return this.#styler.colorText(message, this.#theme[Color.ORANGE]);
110
+ }
111
+ red(message) {
112
+ return this.#styler.colorText(message, this.#theme[Color.RED]);
113
+ }
114
+ magenta(message) {
115
+ return this.#styler.colorText(message, this.#theme[Color.MAGENTA]);
116
+ }
117
+ violet(message) {
118
+ return this.#styler.colorText(message, this.#theme[Color.VIOLET]);
119
+ }
120
+ blue(message) {
121
+ return this.#styler.colorText(message, this.#theme[Color.BLUE]);
122
+ }
123
+ cyan(message) {
124
+ return this.#styler.colorText(message, this.#theme[Color.CYAN]);
125
+ }
126
+ green(message) {
127
+ return this.#styler.colorText(message, this.#theme[Color.GREEN]);
128
+ }
129
+ #parseHexColor(hexFormattedColor) {
130
+ if (hexFormattedColor.length !== 7 || !hexFormattedColor.toLowerCase().startsWith("#")) {
131
+ throw new Error(`Invalid color: ${hexFormattedColor}`);
132
+ }
133
+ const colorValue = parseInt(hexFormattedColor.slice(1), 16);
134
+ if (isNaN(colorValue) || colorValue < 0 || colorValue > 0xffffff) {
135
+ throw new Error(`Invalid color: ${hexFormattedColor}`);
136
+ }
137
+ return colorValue;
138
+ }
139
+ color(message, hexFormattedColor) {
140
+ return this.#styler.colorText(message, this.#parseHexColor(hexFormattedColor));
141
+ }
142
+ backgroundPrimary(message) {
143
+ return this.#styler.backgroundColorText(message, this.#theme[Color.PRIMARY]);
144
+ }
145
+ backgroundSecondary(message) {
146
+ return this.#styler.backgroundColorText(message, this.#theme[Color.SECONDARY]);
147
+ }
148
+ backgroundEmphasised(message) {
149
+ return this.#styler.backgroundColorText(message, this.#theme[Color.EMPHASISED]);
150
+ }
151
+ backgroundSelected(message) {
152
+ return this.#styler.backgroundColorText(message, this.#theme[Color.SELECTED]);
153
+ }
154
+ backgroundYellow(message) {
155
+ return this.#styler.backgroundColorText(message, this.#theme[Color.YELLOW]);
156
+ }
157
+ backgroundOrange(message) {
158
+ return this.#styler.backgroundColorText(message, this.#theme[Color.ORANGE]);
159
+ }
160
+ backgroundRed(message) {
161
+ return this.#styler.backgroundColorText(message, this.#theme[Color.RED]);
162
+ }
163
+ backgroundMagenta(message) {
164
+ return this.#styler.backgroundColorText(message, this.#theme[Color.MAGENTA]);
165
+ }
166
+ backgroundViolet(message) {
167
+ return this.#styler.backgroundColorText(message, this.#theme[Color.VIOLET]);
168
+ }
169
+ backgroundBlue(message) {
170
+ return this.#styler.backgroundColorText(message, this.#theme[Color.BLUE]);
171
+ }
172
+ backgroundCyan(message) {
173
+ return this.#styler.backgroundColorText(message, this.#theme[Color.CYAN]);
174
+ }
175
+ backgroundGreen(message) {
176
+ return this.#styler.backgroundColorText(message, this.#theme[Color.GREEN]);
177
+ }
178
+ backgroundColor(message, hexFormattedColor) {
179
+ return this.#styler.backgroundColorText(message, this.#parseHexColor(hexFormattedColor));
180
+ }
181
+ async debug(message, icon) {
182
+ await this.#log(Level.DEBUG, this.secondary(message), icon);
183
+ }
184
+ async info(message, icon) {
185
+ await this.#log(Level.INFO, this.primary(message), icon);
186
+ }
187
+ async warn(message, icon) {
188
+ await this.#log(Level.WARN, this.yellow(message), icon);
189
+ }
190
+ async error(message, icon) {
191
+ await this.#log(Level.ERROR, this.red(message), icon);
192
+ }
193
+ async print(message, icon) {
194
+ await this.#spinner.pause();
195
+ await this.#progress.pause();
196
+ const writer = this.stdoutWritable.getWriter();
197
+ const colorMessage = this.#stdoutIsColor ? this.primary(message) : message;
198
+ const encoded = this.#encoder.encode(`${icon !== undefined ? `${this.#iconDefinitions[icon]} ` : ""}${colorMessage}`);
199
+ await writer.ready;
200
+ await writer.write(encoded);
201
+ writer.releaseLock();
202
+ this.#spinner.resume();
203
+ this.#progress.resume();
204
+ }
205
+ async setLevel(level) {
206
+ if (this.#threshold > Level.INFO) {
207
+ await this.#spinner.hide();
208
+ await this.#progress.hideAll();
209
+ }
210
+ this.#threshold = level;
211
+ }
212
+ getLevel() {
213
+ return this.#threshold;
214
+ }
215
+ async showSpinner(message, style) {
216
+ await this.#progress.hideAll();
217
+ if (this.#threshold > Level.INFO) {
218
+ return;
219
+ }
220
+ if (style != null) {
221
+ this.#spinner.spinnerStyle = style;
222
+ }
223
+ await this.#spinner.show(message);
224
+ }
225
+ async hideSpinner() {
226
+ await this.#spinner.hide();
227
+ }
228
+ async showProgressBar(units, message = "", total = 100, current = 0, style) {
229
+ await this.#spinner.hide();
230
+ if (this.#threshold > Level.INFO) {
231
+ return -1;
232
+ }
233
+ if (style != null) {
234
+ this.#progress.progressStyle = style;
235
+ }
236
+ return this.#progress.add(units, message, total, current);
237
+ }
238
+ async hideProgressBar(handle) {
239
+ await this.#progress.hide(handle);
240
+ }
241
+ async hideAllProgressBars() {
242
+ await this.#progress.hideAll();
243
+ }
244
+ updateProgressBar(handle, current, message) {
245
+ if (this.#threshold > Level.INFO) {
246
+ return;
247
+ }
248
+ this.#progress.update(handle, current, message);
249
+ }
250
+ }
@@ -0,0 +1,43 @@
1
+ import LogLevelCommand from "./command/LogLevelCommand.js";
2
+ import { PRINTER_SERVICE_ID } from "../../api/service/core/PrinterService.js";
3
+ import DarkModeCommand from "./command/DarkModeCommand.js";
4
+ import NoColorCommand from "./command/NoColorCommand.js";
5
+ import NoHyperlinksCommand from "./command/NoHyperlinksCommand.js";
6
+ import { SHUTDOWN_SERVICE_ID } from "../../api/service/core/ShutdownService.js";
7
+ /**
8
+ * Provides a {@link PrinterService}.
9
+ */
10
+ export default class PrinterServiceProvider {
11
+ serviceId = PRINTER_SERVICE_ID;
12
+ servicePriority;
13
+ printerService;
14
+ /**
15
+ * Create an instance of the service provider with the specified details.
16
+ *
17
+ * @param servicePriority the priority of the service.
18
+ * @param printerService the PrinterService implementation to use.
19
+ */
20
+ constructor(servicePriority, printerService) {
21
+ this.servicePriority = servicePriority;
22
+ this.printerService = printerService;
23
+ }
24
+ getServiceInfo(_cliConfig) {
25
+ return Promise.resolve({
26
+ service: this.printerService,
27
+ commands: [
28
+ new NoHyperlinksCommand(this, this.servicePriority + 3),
29
+ new DarkModeCommand(this, this.servicePriority + 2),
30
+ new NoColorCommand(this, this.servicePriority + 1),
31
+ new LogLevelCommand(this, this.servicePriority),
32
+ ],
33
+ });
34
+ }
35
+ initService(context) {
36
+ const shutdownService = context.getServiceById(SHUTDOWN_SERVICE_ID);
37
+ shutdownService.addShutdownListener(async () => {
38
+ await this.printerService.hideSpinner();
39
+ await this.printerService.hideAllProgressBars();
40
+ });
41
+ return Promise.resolve();
42
+ }
43
+ }
@@ -0,0 +1,24 @@
1
+ import { ArgumentValueTypeName, } from "../../../api/argument/ArgumentValueTypes.js";
2
+ /**
3
+ * Command allowing the specification of dark/light mode for {@link PrinterServiceProvider}.
4
+ */
5
+ export default class DarkModeCommand {
6
+ name = "dark-mode";
7
+ description = "Enable dark mode for output";
8
+ enableConfiguration = true;
9
+ argument = {
10
+ type: ArgumentValueTypeName.BOOLEAN,
11
+ defaultValue: false,
12
+ configurationKey: "DARK_MODE",
13
+ };
14
+ executePriority;
15
+ #printerServiceProvider;
16
+ constructor(printerServiceProvider, executePriority) {
17
+ this.#printerServiceProvider = printerServiceProvider;
18
+ this.executePriority = executePriority;
19
+ }
20
+ execute(_context, argumentValue) {
21
+ this.#printerServiceProvider.printerService.darkMode = argumentValue;
22
+ return Promise.resolve();
23
+ }
24
+ }
@@ -0,0 +1,41 @@
1
+ import { ArgumentValueTypeName, } from "../../../api/argument/ArgumentValueTypes.js";
2
+ import { Level } from "../../../api/service/core/PrinterService.js";
3
+ /**
4
+ * Command allowing the setting of the log level for {@link PrinterServiceProvider}.
5
+ */
6
+ export default class LogLevelCommand {
7
+ name = "log-level";
8
+ description = "Set the logging threshold";
9
+ enableConfiguration = true;
10
+ argument = {
11
+ type: ArgumentValueTypeName.STRING,
12
+ allowableValues: ["DEBUG", "INFO", "WARN", "ERROR"],
13
+ isCaseInsensitive: true,
14
+ defaultValue: "INFO",
15
+ configurationKey: "LOG_LEVEL",
16
+ };
17
+ executePriority;
18
+ #printerServiceProvider;
19
+ constructor(printerServiceProvider, executePriority) {
20
+ this.#printerServiceProvider = printerServiceProvider;
21
+ this.executePriority = executePriority;
22
+ }
23
+ execute(_context, argumentValue) {
24
+ const logLevel = argumentValue;
25
+ switch (logLevel.toUpperCase()) {
26
+ case "DEBUG":
27
+ this.#printerServiceProvider.printerService.setLevel(Level.DEBUG);
28
+ break;
29
+ case "INFO":
30
+ this.#printerServiceProvider.printerService.setLevel(Level.INFO);
31
+ break;
32
+ case "WARN":
33
+ this.#printerServiceProvider.printerService.setLevel(Level.WARN);
34
+ break;
35
+ case "ERROR":
36
+ this.#printerServiceProvider.printerService.setLevel(Level.ERROR);
37
+ break;
38
+ }
39
+ return Promise.resolve();
40
+ }
41
+ }
@@ -0,0 +1,24 @@
1
+ import { ArgumentValueTypeName, } from "../../../api/argument/ArgumentValueTypes.js";
2
+ /**
3
+ * Command allowing the disabling of color for {@link PrinterServiceProvider}.
4
+ */
5
+ export default class NoColorCommand {
6
+ name = "no-color";
7
+ description = "Disable color for output";
8
+ enableConfiguration = true;
9
+ argument = {
10
+ type: ArgumentValueTypeName.BOOLEAN,
11
+ defaultValue: false,
12
+ configurationKey: "NO_COLOR",
13
+ };
14
+ executePriority;
15
+ #printerServiceProvider;
16
+ constructor(printerServiceProvider, executePriority) {
17
+ this.#printerServiceProvider = printerServiceProvider;
18
+ this.executePriority = executePriority;
19
+ }
20
+ execute(_context, argumentValue) {
21
+ this.#printerServiceProvider.printerService.colorEnabled = !argumentValue;
22
+ return Promise.resolve();
23
+ }
24
+ }
@@ -0,0 +1,21 @@
1
+ import { ArgumentValueTypeName, } from "../../../api/argument/ArgumentValueTypes.js";
2
+ export default class NoHyperlinksCommand {
3
+ name = "no-hyperlinks";
4
+ description = "Disable hyperlinks for output";
5
+ enableConfiguration = true;
6
+ argument = {
7
+ type: ArgumentValueTypeName.BOOLEAN,
8
+ defaultValue: false,
9
+ configurationKey: "NO_HYPERLINKS",
10
+ };
11
+ executePriority;
12
+ #printerServiceProvider;
13
+ constructor(printerServiceProvider, executePriority) {
14
+ this.#printerServiceProvider = printerServiceProvider;
15
+ this.executePriority = executePriority;
16
+ }
17
+ execute(_context, argumentValue) {
18
+ this.#printerServiceProvider.printerService.hyperlinksEnabled = !argumentValue;
19
+ return Promise.resolve();
20
+ }
21
+ }
@@ -0,0 +1,15 @@
1
+ export var Color;
2
+ (function (Color) {
3
+ Color[Color["PRIMARY"] = 0] = "PRIMARY";
4
+ Color[Color["SECONDARY"] = 1] = "SECONDARY";
5
+ Color[Color["EMPHASISED"] = 2] = "EMPHASISED";
6
+ Color[Color["SELECTED"] = 3] = "SELECTED";
7
+ Color[Color["YELLOW"] = 4] = "YELLOW";
8
+ Color[Color["ORANGE"] = 5] = "ORANGE";
9
+ Color[Color["RED"] = 6] = "RED";
10
+ Color[Color["MAGENTA"] = 7] = "MAGENTA";
11
+ Color[Color["VIOLET"] = 8] = "VIOLET";
12
+ Color[Color["BLUE"] = 9] = "BLUE";
13
+ Color[Color["CYAN"] = 10] = "CYAN";
14
+ Color[Color["GREEN"] = 11] = "GREEN";
15
+ })(Color || (Color = {}));