@flowscripter/dynamic-cli-framework 1.7.2 → 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.
- package/cli-plugin.ts +1 -1
- package/dist/cli-plugin.d.ts +1 -1
- package/dist/cli-plugin.d.ts.map +1 -1
- package/dist/cli-plugin.js +25 -247
- package/dist/index.js +70 -105710
- package/dist/src/api/BaseCLIFeatureOptions.js +0 -0
- package/dist/src/api/CLI.js +0 -0
- package/dist/src/api/CLIConfig.js +0 -0
- package/dist/src/api/Context.js +0 -0
- package/dist/src/api/RunResult.js +73 -0
- package/dist/src/api/argument/Argument.js +0 -0
- package/dist/src/api/argument/ArgumentValueTypes.js +18 -0
- package/dist/src/api/argument/ComplexOption.js +1 -0
- package/dist/src/api/argument/GlobalCommandArgument.js +0 -0
- package/dist/src/api/argument/Option.js +0 -0
- package/dist/src/api/argument/Positional.js +0 -0
- package/dist/src/api/argument/SubCommandArgument.js +1 -0
- package/dist/src/api/command/Command.d.ts +5 -0
- package/dist/src/api/command/Command.d.ts.map +1 -1
- package/dist/src/api/command/Command.js +0 -0
- package/dist/src/api/command/GlobalCommand.js +0 -0
- package/dist/src/api/command/GlobalModifierCommand.js +0 -0
- package/dist/src/api/command/GroupCommand.js +0 -0
- package/dist/src/api/command/SubCommand.js +0 -0
- package/dist/src/api/command/UsageExample.js +0 -0
- package/dist/src/api/plugin/CLIPlugin.js +2 -0
- package/dist/src/api/plugin/CommandFactory.js +7 -0
- package/dist/src/api/plugin/ServiceProviderFactory.js +7 -0
- package/dist/src/api/plugin/createCLIPlugin.js +30 -0
- package/dist/src/api/service/ServiceProvider.js +0 -0
- package/dist/src/api/service/core/ArgumentPrompterService.js +1 -0
- package/dist/src/api/service/core/AsciiBannerGeneratorService.js +1 -0
- package/dist/src/api/service/core/CompletionService.js +8 -0
- package/dist/src/api/service/core/DataDumpGeneratorService.js +7 -0
- package/dist/src/api/service/core/ImagePrinterService.js +1 -0
- package/dist/src/api/service/core/KeyValueService.js +7 -0
- package/dist/src/api/service/core/PluginService.js +6 -0
- package/dist/src/api/service/core/PrettyPrinterService.js +1 -0
- package/dist/src/api/service/core/PrinterService.js +42 -0
- package/dist/src/api/service/core/PrompterService.js +10 -0
- package/dist/src/api/service/core/SecretService.js +0 -0
- package/dist/src/api/service/core/ShutdownService.js +1 -0
- package/dist/src/api/service/core/SyntaxHighlighterService.js +1 -0
- package/dist/src/api/service/core/Table.js +49 -0
- package/dist/src/api/service/core/TableGeneratorService.d.ts +1 -0
- package/dist/src/api/service/core/TableGeneratorService.d.ts.map +1 -1
- package/dist/src/api/service/core/TableGeneratorService.js +7 -0
- package/dist/src/api/service/core/TreePrinterService.js +1 -0
- package/dist/src/cli/BaseCLI.d.ts.map +1 -1
- package/dist/src/cli/BaseCLI.js +233 -0
- package/dist/src/cli/DefaultRuntimeCLI.d.ts.map +1 -1
- package/dist/src/cli/DefaultRuntimeCLI.js +20 -0
- package/dist/src/cli/DynamicPluginRuntimeCLI.js +50 -0
- package/dist/src/command/MultiCommandCliHelpCommand.d.ts.map +1 -1
- package/dist/src/command/MultiCommandCliHelpCommand.js +238 -0
- package/dist/src/command/SingleCommandCliHelpCommand.js +104 -0
- package/dist/src/command/UsageCommand.js +16 -0
- package/dist/src/command/VersionCommand.js +13 -0
- package/dist/src/launcher.js +61 -0
- package/dist/src/runtime/DefaultContext.js +25 -0
- package/dist/src/runtime/argument/ArgumentTypeGuards.js +3 -0
- package/dist/src/runtime/command/CommandTypeGuards.js +12 -0
- package/dist/src/runtime/command/CommandValidator.js +371 -0
- package/dist/src/runtime/parser.js +105 -0
- package/dist/src/runtime/registry/CommandRegistry.js +0 -0
- package/dist/src/runtime/registry/DefaultCommandRegistry.js +190 -0
- package/dist/src/runtime/registry/DefaultServiceProviderRegistry.js +20 -0
- package/dist/src/runtime/registry/ServiceProviderRegistry.js +0 -0
- package/dist/src/runtime/runner.js +507 -0
- package/dist/src/runtime/scanner.js +244 -0
- package/dist/src/runtime/values/ValuePopulationResult.js +0 -0
- package/dist/src/runtime/values/argumentValueMerge.js +122 -0
- package/dist/src/runtime/values/argumentValueValidation.js +505 -0
- package/dist/src/runtime/values/globalCommandValuePopulation.js +67 -0
- package/dist/src/runtime/values/subCommandValuePopulation.js +549 -0
- package/dist/src/service/argumentPrompter/ArgumentPrompterServiceProvider.js +19 -0
- package/dist/src/service/argumentPrompter/DefaultArgumentPrompterService.js +197 -0
- package/dist/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.js +28 -0
- package/dist/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.js +233 -0
- package/dist/src/service/asciiBannerGenerator/standard.flf.json +3 -0
- package/dist/src/service/banner/BannerServiceProvider.js +60 -0
- package/dist/src/service/banner/command/NoBannerCommand.js +24 -0
- package/dist/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.js +51 -0
- package/dist/src/service/chiselAsciiBannerGenerator/chisel.flf.json +3 -0
- package/dist/src/service/completion/CompletionServiceProvider.d.ts +2 -1
- package/dist/src/service/completion/CompletionServiceProvider.d.ts.map +1 -1
- package/dist/src/service/completion/CompletionServiceProvider.js +160 -0
- package/dist/src/service/completion/DefaultCompletionService.d.ts.map +1 -1
- package/dist/src/service/completion/DefaultCompletionService.js +279 -0
- package/dist/src/service/completion/command/CompletionCompleteSubCommand.d.ts +15 -0
- package/dist/src/service/completion/command/CompletionCompleteSubCommand.d.ts.map +1 -0
- package/dist/src/service/completion/command/CompletionCompleteSubCommand.js +37 -0
- package/dist/src/service/completion/command/CompletionGroupCommand.d.ts +14 -0
- package/dist/src/service/completion/command/CompletionGroupCommand.d.ts.map +1 -0
- package/dist/src/service/completion/command/CompletionGroupCommand.js +10 -0
- package/dist/src/service/completion/command/CompletionIntegrationSubCommand.d.ts +14 -0
- package/dist/src/service/completion/command/CompletionIntegrationSubCommand.d.ts.map +1 -0
- package/dist/src/service/completion/command/CompletionIntegrationSubCommand.js +67 -0
- package/dist/src/service/completion/shell/ShellHandler.js +0 -0
- package/dist/src/service/completion/shell/bash.js +39 -0
- package/dist/src/service/completion/shell/fish.js +35 -0
- package/dist/src/service/completion/shell/powershell.js +51 -0
- package/dist/src/service/completion/shell/zsh.js +42 -0
- package/dist/src/service/configuration/ConfigurationServiceProvider.js +482 -0
- package/dist/src/service/configuration/DefaultKeyValueService.js +80 -0
- package/dist/src/service/configuration/DefaultSecretService.js +60 -0
- package/dist/src/service/configuration/command/ConfigCommand.js +24 -0
- package/dist/src/service/configuration/command/DumpConfigCommand.js +18 -0
- package/dist/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.js +24 -0
- package/dist/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.js +59 -0
- package/dist/src/service/imagePrinter/DefaultImagePrinterService.js +10 -0
- package/dist/src/service/imagePrinter/ImagePrinterServiceProvider.js +20 -0
- package/dist/src/service/plugin/DefaultPluginService.js +21 -0
- package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts +1 -1
- package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts.map +1 -1
- package/dist/src/service/plugin/DefaultPluginServiceProvider.js +21 -0
- package/dist/src/service/plugin/command/PluginAddSubCommand.d.ts +17 -0
- package/dist/src/service/plugin/command/PluginAddSubCommand.d.ts.map +1 -0
- package/dist/src/service/plugin/command/PluginAddSubCommand.js +49 -0
- package/dist/src/service/plugin/command/PluginGroupCommand.d.ts +12 -0
- package/dist/src/service/plugin/command/PluginGroupCommand.d.ts.map +1 -0
- package/dist/src/service/plugin/command/PluginGroupCommand.js +21 -0
- package/dist/src/service/plugin/command/PluginListSubCommand.d.ts +12 -0
- package/dist/src/service/plugin/command/PluginListSubCommand.d.ts.map +1 -0
- package/dist/src/service/plugin/command/PluginListSubCommand.js +25 -0
- package/dist/src/service/plugin/command/PluginRemoveSubCommand.d.ts +17 -0
- package/dist/src/service/plugin/command/PluginRemoveSubCommand.d.ts.map +1 -0
- package/dist/src/service/plugin/command/PluginRemoveSubCommand.js +24 -0
- package/dist/src/service/plugin/command/PluginSearchSubCommand.d.ts +18 -0
- package/dist/src/service/plugin/command/PluginSearchSubCommand.d.ts.map +1 -0
- package/dist/src/service/plugin/command/PluginSearchSubCommand.js +34 -0
- package/dist/src/service/plugin/command/PluginUpgradeSubCommand.d.ts +12 -0
- package/dist/src/service/plugin/command/PluginUpgradeSubCommand.d.ts.map +1 -0
- package/dist/src/service/plugin/command/PluginUpgradeSubCommand.js +25 -0
- package/dist/src/service/plugin/command/getPluginId.d.ts +3 -0
- package/dist/src/service/plugin/command/getPluginId.d.ts.map +1 -0
- package/dist/src/service/plugin/command/getPluginId.js +3 -0
- package/dist/src/service/prettyPrinter/DefaultPrettyPrinterService.js +45 -0
- package/dist/src/service/prettyPrinter/PrettyPrinterServiceProvider.js +28 -0
- package/dist/src/service/printer/DefaultPrinterService.js +250 -0
- package/dist/src/service/printer/PrinterServiceProvider.js +43 -0
- package/dist/src/service/printer/command/DarkModeCommand.js +24 -0
- package/dist/src/service/printer/command/LogLevelCommand.js +41 -0
- package/dist/src/service/printer/command/NoColorCommand.js +24 -0
- package/dist/src/service/printer/command/NoHyperlinksCommand.js +21 -0
- package/dist/src/service/printer/terminal/Color.js +15 -0
- package/dist/src/service/printer/terminal/Progress.js +271 -0
- package/dist/src/service/printer/terminal/Spinner.js +83 -0
- package/dist/src/service/printer/terminal/Theme.js +26 -0
- package/dist/src/service/prompter/DefaultPrompterService.js +52 -0
- package/dist/src/service/prompter/PrompterServiceProvider.js +20 -0
- package/dist/src/service/prompter/command/NoPromptCommand.js +21 -0
- package/dist/src/service/prompter/prompt/PromptContext.js +22 -0
- package/dist/src/service/prompter/prompt/promptAcknowledge.js +19 -0
- package/dist/src/service/prompter/prompt/promptMultiSelect.js +74 -0
- package/dist/src/service/prompter/prompt/promptOpenUrl.js +70 -0
- package/dist/src/service/prompter/prompt/promptSingleSelect.js +73 -0
- package/dist/src/service/prompter/prompt/promptText.js +75 -0
- package/dist/src/service/prompter/prompt/promptToggle.js +21 -0
- package/dist/src/service/shutdown/DefaultShutdownService.js +16 -0
- package/dist/src/service/shutdown/ShutdownServiceProvider.js +60 -0
- package/dist/src/service/shutdown/ShutdownState.js +5 -0
- package/dist/src/service/syntaxHighlighter/DefaultSyntaxHighlighterService.js +54 -0
- package/dist/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.js +32 -0
- package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts +3 -1
- package/dist/src/service/tableGenerator/DefaultTableGeneratorService.d.ts.map +1 -1
- package/dist/src/service/tableGenerator/DefaultTableGeneratorService.js +344 -0
- package/dist/src/service/tableGenerator/TableGeneratorServiceProvider.js +26 -0
- package/dist/src/service/treePrinter/DefaultTreePrinterService.js +35 -0
- package/dist/src/service/treePrinter/TreePrinterServiceProvider.js +24 -0
- package/dist/src/terminal/Ansi.js +23 -0
- package/dist/src/terminal/ImageRenderer.js +164 -0
- package/dist/src/terminal/KeyReader.js +13 -0
- package/dist/src/terminal/PngDecoder.js +115 -0
- package/dist/src/terminal/Styler.js +0 -0
- package/dist/src/terminal/Terminal.js +0 -0
- package/dist/src/terminal/TtyKeyReader.js +87 -0
- package/dist/src/terminal/TtyStyler.js +55 -0
- package/dist/src/terminal/TtyTerminal.js +52 -0
- package/dist/src/terminal/supportsHyperlinks.d.ts.map +1 -1
- package/dist/src/terminal/supportsHyperlinks.js +95 -0
- package/dist/src/util/configHelper.js +61 -0
- package/dist/src/util/envVarHelper.js +216 -0
- package/dist/src/util/helpHelper.d.ts.map +1 -1
- package/dist/src/util/helpHelper.js +497 -0
- package/dist/src/util/logger.js +81 -0
- package/dist/src/util/runnerHelper.d.ts +1 -0
- package/dist/src/util/runnerHelper.d.ts.map +1 -1
- package/dist/src/util/runnerHelper.js +80 -0
- package/package.json +3 -3
- package/src/api/command/Command.ts +6 -0
- package/src/api/service/core/TableGeneratorService.ts +1 -0
- package/src/cli/BaseCLI.ts +6 -18
- package/src/cli/DefaultRuntimeCLI.ts +0 -4
- package/src/command/MultiCommandCliHelpCommand.ts +23 -7
- package/src/service/completion/CompletionServiceProvider.ts +16 -2
- package/src/service/completion/DefaultCompletionService.ts +14 -0
- package/src/service/completion/command/CompletionCompleteSubCommand.ts +59 -0
- package/src/service/completion/command/CompletionGroupCommand.ts +21 -0
- package/src/{command/CompletionCommand.ts → service/completion/command/CompletionIntegrationSubCommand.ts} +12 -72
- package/src/service/completion/shell/bash.ts +1 -1
- package/src/service/completion/shell/fish.ts +1 -1
- package/src/service/completion/shell/powershell.ts +1 -1
- package/src/service/completion/shell/zsh.ts +1 -1
- package/src/service/plugin/DefaultPluginServiceProvider.ts +2 -2
- package/src/service/plugin/command/PluginAddSubCommand.ts +64 -0
- package/src/service/plugin/command/PluginGroupCommand.ts +27 -0
- package/src/service/plugin/command/PluginListSubCommand.ts +33 -0
- package/src/service/plugin/command/PluginRemoveSubCommand.ts +32 -0
- package/src/service/plugin/command/PluginSearchSubCommand.ts +42 -0
- package/src/service/plugin/command/PluginUpgradeSubCommand.ts +36 -0
- package/src/service/plugin/command/getPluginId.ts +5 -0
- package/src/service/tableGenerator/DefaultTableGeneratorService.ts +7 -2
- package/src/terminal/supportsHyperlinks.ts +22 -0
- package/src/util/helpHelper.ts +7 -6
- package/src/util/runnerHelper.ts +14 -2
- package/dist/src/command/CompletionCommand.d.ts +0 -31
- package/dist/src/command/CompletionCommand.d.ts.map +0 -1
- package/dist/src/command/PluginCommand.d.ts +0 -67
- package/dist/src/command/PluginCommand.d.ts.map +0 -1
- package/dist/tests/cli/BaseCLI.test.d.ts +0 -2
- package/dist/tests/cli/BaseCLI.test.d.ts.map +0 -1
- package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts +0 -2
- package/dist/tests/cli/DynamicPluginRuntimeCLI.test.d.ts.map +0 -1
- package/dist/tests/command/CompletionCommand.test.d.ts +0 -2
- package/dist/tests/command/CompletionCommand.test.d.ts.map +0 -1
- package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts +0 -2
- package/dist/tests/command/MultiCommandCliHelpCommand.test.d.ts.map +0 -1
- package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts +0 -2
- package/dist/tests/command/SingleCommandCliHelpCommand.test.d.ts.map +0 -1
- package/dist/tests/command/UsageCommand.test.d.ts +0 -2
- package/dist/tests/command/UsageCommand.test.d.ts.map +0 -1
- package/dist/tests/command/VersionCommand.test.d.ts +0 -2
- package/dist/tests/command/VersionCommand.test.d.ts.map +0 -1
- package/dist/tests/fixtures/CLIConfig.d.ts +0 -3
- package/dist/tests/fixtures/CLIConfig.d.ts.map +0 -1
- package/dist/tests/fixtures/Command.d.ts +0 -20
- package/dist/tests/fixtures/Command.d.ts.map +0 -1
- package/dist/tests/fixtures/CommandRegistry.d.ts +0 -4
- package/dist/tests/fixtures/CommandRegistry.d.ts.map +0 -1
- package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts +0 -10
- package/dist/tests/fixtures/ConfigurationServiceProvider.d.ts.map +0 -1
- package/dist/tests/fixtures/Context.d.ts +0 -4
- package/dist/tests/fixtures/Context.d.ts.map +0 -1
- package/dist/tests/fixtures/ServiceProviderRegistry.d.ts +0 -4
- package/dist/tests/fixtures/ServiceProviderRegistry.d.ts.map +0 -1
- package/dist/tests/fixtures/StreamString.d.ts +0 -10
- package/dist/tests/fixtures/StreamString.d.ts.map +0 -1
- package/dist/tests/fixtures/prettierPluginFoo.d.ts +0 -4
- package/dist/tests/fixtures/prettierPluginFoo.d.ts.map +0 -1
- package/dist/tests/fixtures/util.d.ts +0 -8
- package/dist/tests/fixtures/util.d.ts.map +0 -1
- package/dist/tests/runtime/DefaultContext.test.d.ts +0 -2
- package/dist/tests/runtime/DefaultContext.test.d.ts.map +0 -1
- package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts +0 -2
- package/dist/tests/runtime/argument/ArgumentTypeGuards.test.d.ts.map +0 -1
- package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts +0 -2
- package/dist/tests/runtime/command/CommandTypeGuards.test.d.ts.map +0 -1
- package/dist/tests/runtime/command/CommandValidator.test.d.ts +0 -2
- package/dist/tests/runtime/command/CommandValidator.test.d.ts.map +0 -1
- package/dist/tests/runtime/parser.test.d.ts +0 -2
- package/dist/tests/runtime/parser.test.d.ts.map +0 -1
- package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts +0 -2
- package/dist/tests/runtime/registry/DefaultCommandRegistry.test.d.ts.map +0 -1
- package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts +0 -2
- package/dist/tests/runtime/registry/DefaultServiceProviderRegistry.test.d.ts.map +0 -1
- package/dist/tests/runtime/runner.test.d.ts +0 -2
- package/dist/tests/runtime/runner.test.d.ts.map +0 -1
- package/dist/tests/runtime/scanner.test.d.ts +0 -2
- package/dist/tests/runtime/scanner.test.d.ts.map +0 -1
- package/dist/tests/runtime/values/argumentValueMerge.test.d.ts +0 -2
- package/dist/tests/runtime/values/argumentValueMerge.test.d.ts.map +0 -1
- package/dist/tests/runtime/values/argumentValueValidation.test.d.ts +0 -2
- package/dist/tests/runtime/values/argumentValueValidation.test.d.ts.map +0 -1
- package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts +0 -2
- package/dist/tests/runtime/values/globalCommandValuePopulation.test.d.ts.map +0 -1
- package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts +0 -2
- package/dist/tests/runtime/values/subCommandValuePopulation.test.d.ts.map +0 -1
- package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts +0 -2
- package/dist/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.d.ts.map +0 -1
- package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts +0 -2
- package/dist/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.d.ts.map +0 -1
- package/dist/tests/service/banner/BannerServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/banner/BannerServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts +0 -2
- package/dist/tests/service/banner/command/NoBannerCommand.test.d.ts.map +0 -1
- package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts +0 -2
- package/dist/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.d.ts.map +0 -1
- package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/completion/CompletionServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/completion/DefaultCompletionService.test.d.ts +0 -2
- package/dist/tests/service/completion/DefaultCompletionService.test.d.ts.map +0 -1
- package/dist/tests/service/completion/shell/bash.test.d.ts +0 -2
- package/dist/tests/service/completion/shell/bash.test.d.ts.map +0 -1
- package/dist/tests/service/completion/shell/fish.test.d.ts +0 -2
- package/dist/tests/service/completion/shell/fish.test.d.ts.map +0 -1
- package/dist/tests/service/completion/shell/powershell.test.d.ts +0 -2
- package/dist/tests/service/completion/shell/powershell.test.d.ts.map +0 -1
- package/dist/tests/service/completion/shell/zsh.test.d.ts +0 -2
- package/dist/tests/service/completion/shell/zsh.test.d.ts.map +0 -1
- package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/configuration/ConfigurationServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts +0 -2
- package/dist/tests/service/configuration/DefaultKeyValueService.test.d.ts.map +0 -1
- package/dist/tests/service/configuration/DefaultSecretService.test.d.ts +0 -2
- package/dist/tests/service/configuration/DefaultSecretService.test.d.ts.map +0 -1
- package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts +0 -2
- package/dist/tests/service/configuration/command/ConfigCommand.test.d.ts.map +0 -1
- package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts +0 -2
- package/dist/tests/service/configuration/command/DumpConfigCommand.test.d.ts.map +0 -1
- package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts +0 -2
- package/dist/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.d.ts.map +0 -1
- package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts +0 -2
- package/dist/tests/service/imagePrinter/DefaultImagePrinterService.test.d.ts.map +0 -1
- package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/imagePrinter/ImagePrinterServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/plugin/DefaultPluginServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts +0 -2
- package/dist/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.d.ts.map +0 -1
- package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/printer/DefaultPrinterService.test.d.ts +0 -2
- package/dist/tests/service/printer/DefaultPrinterService.test.d.ts.map +0 -1
- package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/printer/PrinterServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts +0 -2
- package/dist/tests/service/printer/command/DarkModeCommand.test.d.ts.map +0 -1
- package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts +0 -2
- package/dist/tests/service/printer/command/LogLevelCommand.test.d.ts.map +0 -1
- package/dist/tests/service/printer/command/NoColorCommand.test.d.ts +0 -2
- package/dist/tests/service/printer/command/NoColorCommand.test.d.ts.map +0 -1
- package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts +0 -2
- package/dist/tests/service/printer/command/NoHyperlinksCommand.test.d.ts.map +0 -1
- package/dist/tests/service/printer/terminal/Progress.test.d.ts +0 -2
- package/dist/tests/service/printer/terminal/Progress.test.d.ts.map +0 -1
- package/dist/tests/service/printer/terminal/Spinner.test.d.ts +0 -2
- package/dist/tests/service/printer/terminal/Spinner.test.d.ts.map +0 -1
- package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts +0 -2
- package/dist/tests/service/prompter/DefaultPrompterService.test.d.ts.map +0 -1
- package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/prompter/PrompterServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts +0 -2
- package/dist/tests/service/prompter/command/NoPromptCommand.test.d.ts.map +0 -1
- package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts +0 -2
- package/dist/tests/service/prompter/prompt/PromptContext.test.d.ts.map +0 -1
- package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/shutdown/ShutdownServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts +0 -2
- package/dist/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.d.ts.map +0 -1
- package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts +0 -2
- package/dist/tests/service/tableGenerator/DefaultTableGeneratorService.test.d.ts.map +0 -1
- package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/tableGenerator/TableGeneratorServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts +0 -2
- package/dist/tests/service/treePrinter/DefaultTreePrinterService.test.d.ts.map +0 -1
- package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts +0 -2
- package/dist/tests/service/treePrinter/TreePrinterServiceProvider.test.d.ts.map +0 -1
- package/dist/tests/terminal/ImageRenderer.test.d.ts +0 -2
- package/dist/tests/terminal/ImageRenderer.test.d.ts.map +0 -1
- package/dist/tests/terminal/PngDecoder.test.d.ts +0 -2
- package/dist/tests/terminal/PngDecoder.test.d.ts.map +0 -1
- package/dist/tests/terminal/supportsHyperlinks.test.d.ts +0 -2
- package/dist/tests/terminal/supportsHyperlinks.test.d.ts.map +0 -1
- package/dist/tests/util/configHelper.test.d.ts +0 -2
- package/dist/tests/util/configHelper.test.d.ts.map +0 -1
- package/dist/tests/util/envVarHelper.test.d.ts +0 -2
- package/dist/tests/util/envVarHelper.test.d.ts.map +0 -1
- package/dist/tests/util/logger.test.d.ts +0 -2
- package/dist/tests/util/logger.test.d.ts.map +0 -1
- package/src/command/PluginCommand.ts +0 -197
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Minimal PNG-to-RGBA pixel extractor. Supports 8-bit RGB and RGBA only.
|
|
2
|
+
import { inflateSync } from "node:zlib";
|
|
3
|
+
function paethPredictor(a, b, c) {
|
|
4
|
+
const p = a + b - c;
|
|
5
|
+
const pa = Math.abs(p - a);
|
|
6
|
+
const pb = Math.abs(p - b);
|
|
7
|
+
const pc = Math.abs(p - c);
|
|
8
|
+
if (pa <= pb && pa <= pc)
|
|
9
|
+
return a;
|
|
10
|
+
if (pb <= pc)
|
|
11
|
+
return b;
|
|
12
|
+
return c;
|
|
13
|
+
}
|
|
14
|
+
export function decodePngToRGBA(pngBytes) {
|
|
15
|
+
const sig = [137, 80, 78, 71, 13, 10, 26, 10];
|
|
16
|
+
for (let i = 0; i < 8; i++) {
|
|
17
|
+
if (pngBytes[i] !== sig[i])
|
|
18
|
+
throw new Error("Invalid PNG signature");
|
|
19
|
+
}
|
|
20
|
+
const view = new DataView(pngBytes.buffer, pngBytes.byteOffset, pngBytes.byteLength);
|
|
21
|
+
let offset = 8;
|
|
22
|
+
let width = 0;
|
|
23
|
+
let height = 0;
|
|
24
|
+
let bitDepth = 0;
|
|
25
|
+
let colorType = 0;
|
|
26
|
+
const idatChunks = [];
|
|
27
|
+
while (offset < pngBytes.length) {
|
|
28
|
+
const length = view.getUint32(offset);
|
|
29
|
+
const type = String.fromCharCode(pngBytes[offset + 4], pngBytes[offset + 5], pngBytes[offset + 6], pngBytes[offset + 7]);
|
|
30
|
+
const dataStart = offset + 8;
|
|
31
|
+
if (type === "IHDR") {
|
|
32
|
+
width = view.getUint32(dataStart);
|
|
33
|
+
height = view.getUint32(dataStart + 4);
|
|
34
|
+
bitDepth = pngBytes[dataStart + 8];
|
|
35
|
+
colorType = pngBytes[dataStart + 9];
|
|
36
|
+
const interlace = pngBytes[dataStart + 12];
|
|
37
|
+
if (bitDepth !== 8) {
|
|
38
|
+
throw new Error(`Unsupported bit depth: ${bitDepth} (only 8 supported)`);
|
|
39
|
+
}
|
|
40
|
+
if (colorType !== 2 && colorType !== 6) {
|
|
41
|
+
throw new Error(`Unsupported color type: ${colorType} (only RGB=2 and RGBA=6 supported)`);
|
|
42
|
+
}
|
|
43
|
+
if (interlace !== 0) {
|
|
44
|
+
throw new Error("Interlaced PNGs are not supported");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (type === "IDAT") {
|
|
48
|
+
idatChunks.push(pngBytes.subarray(dataStart, dataStart + length));
|
|
49
|
+
}
|
|
50
|
+
else if (type === "IEND") {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
offset = dataStart + length + 4; // +4 for CRC
|
|
54
|
+
}
|
|
55
|
+
if (width === 0 || height === 0)
|
|
56
|
+
throw new Error("Missing IHDR chunk");
|
|
57
|
+
if (idatChunks.length === 0)
|
|
58
|
+
throw new Error("Missing IDAT chunks");
|
|
59
|
+
const bpp = colorType === 6 ? 4 : 3;
|
|
60
|
+
const compressed = new Uint8Array(idatChunks.reduce((sum, c) => sum + c.length, 0));
|
|
61
|
+
let pos = 0;
|
|
62
|
+
for (const chunk of idatChunks) {
|
|
63
|
+
compressed.set(chunk, pos);
|
|
64
|
+
pos += chunk.length;
|
|
65
|
+
}
|
|
66
|
+
const raw = inflateSync(compressed);
|
|
67
|
+
const stride = bpp * width;
|
|
68
|
+
const pixels = new Uint8Array(width * height * 4);
|
|
69
|
+
const prevRow = new Uint8Array(stride);
|
|
70
|
+
const currRow = new Uint8Array(stride);
|
|
71
|
+
let rawOffset = 0;
|
|
72
|
+
for (let y = 0; y < height; y++) {
|
|
73
|
+
const filterType = raw[rawOffset++];
|
|
74
|
+
for (let x = 0; x < stride; x++) {
|
|
75
|
+
currRow[x] = raw[rawOffset++];
|
|
76
|
+
}
|
|
77
|
+
for (let x = 0; x < stride; x++) {
|
|
78
|
+
const left = x >= bpp ? currRow[x - bpp] : 0;
|
|
79
|
+
const up = prevRow[x];
|
|
80
|
+
const upperLeft = x >= bpp ? prevRow[x - bpp] : 0;
|
|
81
|
+
switch (filterType) {
|
|
82
|
+
case 0:
|
|
83
|
+
break;
|
|
84
|
+
case 1:
|
|
85
|
+
currRow[x] = (currRow[x] + left) & 0xff;
|
|
86
|
+
break;
|
|
87
|
+
case 2:
|
|
88
|
+
currRow[x] = (currRow[x] + up) & 0xff;
|
|
89
|
+
break;
|
|
90
|
+
case 3:
|
|
91
|
+
currRow[x] = (currRow[x] + ((left + up) >> 1)) & 0xff;
|
|
92
|
+
break;
|
|
93
|
+
case 4:
|
|
94
|
+
currRow[x] = (currRow[x] + paethPredictor(left, up, upperLeft)) & 0xff;
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
throw new Error(`Unknown filter type: ${filterType}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const rowStart = y * width * 4;
|
|
101
|
+
if (bpp === 4) {
|
|
102
|
+
pixels.set(currRow, rowStart);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
for (let x = 0; x < width; x++) {
|
|
106
|
+
pixels[rowStart + x * 4] = currRow[x * 3];
|
|
107
|
+
pixels[rowStart + x * 4 + 1] = currRow[x * 3 + 1];
|
|
108
|
+
pixels[rowStart + x * 4 + 2] = currRow[x * 3 + 2];
|
|
109
|
+
pixels[rowStart + x * 4 + 3] = 255;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
prevRow.set(currRow);
|
|
113
|
+
}
|
|
114
|
+
return { width, height, pixels };
|
|
115
|
+
}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { ReadStream } from "node:tty";
|
|
2
|
+
import { Buffer } from "node:buffer";
|
|
3
|
+
import { SpecialKey } from "./KeyReader.js";
|
|
4
|
+
export default class TtyKeyReader {
|
|
5
|
+
#ttyReadStream;
|
|
6
|
+
constructor(ttyReadStream) {
|
|
7
|
+
if (ttyReadStream.isTTY === false) {
|
|
8
|
+
throw new Error("The provided ReadStream is not a TTY");
|
|
9
|
+
}
|
|
10
|
+
this.#ttyReadStream = ttyReadStream;
|
|
11
|
+
}
|
|
12
|
+
enableRawMode() {
|
|
13
|
+
this.#ttyReadStream.setRawMode(true);
|
|
14
|
+
this.#ttyReadStream.resume();
|
|
15
|
+
}
|
|
16
|
+
disableRawMode() {
|
|
17
|
+
this.#ttyReadStream.setRawMode(false);
|
|
18
|
+
this.#ttyReadStream.pause();
|
|
19
|
+
}
|
|
20
|
+
readKey() {
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
const onData = (data) => {
|
|
23
|
+
this.#ttyReadStream.removeListener("data", onData);
|
|
24
|
+
// A lone 0x1b may be the start of a multi-byte escape sequence (e.g. arrow keys).
|
|
25
|
+
// Wait briefly for the rest of the sequence before decoding.
|
|
26
|
+
if (data.length === 1 && data[0] === 0x1b) {
|
|
27
|
+
const timeout = setTimeout(() => {
|
|
28
|
+
this.#ttyReadStream.removeListener("data", onMore);
|
|
29
|
+
resolve(TtyKeyReader.#decodeKeyEvent(data));
|
|
30
|
+
}, 20);
|
|
31
|
+
const onMore = (more) => {
|
|
32
|
+
clearTimeout(timeout);
|
|
33
|
+
this.#ttyReadStream.removeListener("data", onMore);
|
|
34
|
+
resolve(TtyKeyReader.#decodeKeyEvent(Buffer.concat([data, more])));
|
|
35
|
+
};
|
|
36
|
+
this.#ttyReadStream.once("data", onMore);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
resolve(TtyKeyReader.#decodeKeyEvent(data));
|
|
40
|
+
};
|
|
41
|
+
this.#ttyReadStream.on("data", onData);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
static #decodeKeyEvent(data) {
|
|
45
|
+
if (data.length === 0) {
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
// escape sequences
|
|
49
|
+
if (data[0] === 0x1b) {
|
|
50
|
+
if (data.length === 1) {
|
|
51
|
+
return { specialKey: SpecialKey.ESCAPE };
|
|
52
|
+
}
|
|
53
|
+
if (data.length >= 3 && data[1] === 0x5b) {
|
|
54
|
+
switch (data[2]) {
|
|
55
|
+
case 0x41:
|
|
56
|
+
return { specialKey: SpecialKey.UP };
|
|
57
|
+
case 0x42:
|
|
58
|
+
return { specialKey: SpecialKey.DOWN };
|
|
59
|
+
case 0x43:
|
|
60
|
+
return { specialKey: SpecialKey.RIGHT };
|
|
61
|
+
case 0x44:
|
|
62
|
+
return { specialKey: SpecialKey.LEFT };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { specialKey: SpecialKey.ESCAPE };
|
|
66
|
+
}
|
|
67
|
+
// control characters
|
|
68
|
+
switch (data[0]) {
|
|
69
|
+
case 0x0d:
|
|
70
|
+
return { specialKey: SpecialKey.ENTER };
|
|
71
|
+
case 0x20:
|
|
72
|
+
return { specialKey: SpecialKey.SPACE };
|
|
73
|
+
case 0x7f:
|
|
74
|
+
return { specialKey: SpecialKey.BACKSPACE };
|
|
75
|
+
case 0x09:
|
|
76
|
+
return { specialKey: SpecialKey.TAB };
|
|
77
|
+
case 0x03:
|
|
78
|
+
return { specialKey: SpecialKey.INTERRUPT };
|
|
79
|
+
}
|
|
80
|
+
// printable characters
|
|
81
|
+
const str = data.toString("utf8");
|
|
82
|
+
if (str.length > 0) {
|
|
83
|
+
return { key: str };
|
|
84
|
+
}
|
|
85
|
+
return {};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { BACKGROUND_COLOR_END, FOREGROUND_COLOR_END, HYPERLINK_END, hyperlinkStart, ITALIC_END, ITALIC_START, } from "./Ansi.js";
|
|
2
|
+
export default class TtyStyler {
|
|
3
|
+
colorEnabled = true;
|
|
4
|
+
hyperlinksEnabled;
|
|
5
|
+
colorLevel;
|
|
6
|
+
/**
|
|
7
|
+
* The color level in use.
|
|
8
|
+
*
|
|
9
|
+
* 1 = 16 color
|
|
10
|
+
* 2 = 256 color
|
|
11
|
+
* 3 = 16 million color
|
|
12
|
+
*/
|
|
13
|
+
constructor(colorLevel = 1, hyperlinksEnabled = true) {
|
|
14
|
+
this.colorLevel = colorLevel;
|
|
15
|
+
this.hyperlinksEnabled = hyperlinksEnabled;
|
|
16
|
+
}
|
|
17
|
+
colorText(text, colorValue) {
|
|
18
|
+
if (!this.colorEnabled) {
|
|
19
|
+
return text;
|
|
20
|
+
}
|
|
21
|
+
if (this.colorLevel === 3) {
|
|
22
|
+
return Bun.color(colorValue, "ansi-16m") + text + FOREGROUND_COLOR_END;
|
|
23
|
+
}
|
|
24
|
+
if (this.colorLevel === 2) {
|
|
25
|
+
return Bun.color(colorValue, "ansi-256") + text + FOREGROUND_COLOR_END;
|
|
26
|
+
}
|
|
27
|
+
return Bun.color(colorValue, "ansi-16") + text + FOREGROUND_COLOR_END;
|
|
28
|
+
}
|
|
29
|
+
backgroundColorText(text, colorValue) {
|
|
30
|
+
if (!this.colorEnabled) {
|
|
31
|
+
return text;
|
|
32
|
+
}
|
|
33
|
+
if (this.colorLevel === 3) {
|
|
34
|
+
const r = (colorValue >> 16) & 0xff;
|
|
35
|
+
const g = (colorValue >> 8) & 0xff;
|
|
36
|
+
const b = colorValue & 0xff;
|
|
37
|
+
return `\x1b[48;2;${r};${g};${b}m${text}${BACKGROUND_COLOR_END}`;
|
|
38
|
+
}
|
|
39
|
+
if (this.colorLevel === 2) {
|
|
40
|
+
return (Bun.color(colorValue, "ansi-256").replace("[38;", "[48;") + text + BACKGROUND_COLOR_END);
|
|
41
|
+
}
|
|
42
|
+
return (Bun.color(colorValue, "ansi-16").replace(/\[(\d+)m/, (_, n) => `[${Number(n) + 10}m`) +
|
|
43
|
+
text +
|
|
44
|
+
BACKGROUND_COLOR_END);
|
|
45
|
+
}
|
|
46
|
+
italicText(text) {
|
|
47
|
+
return ITALIC_START + text + ITALIC_END;
|
|
48
|
+
}
|
|
49
|
+
hyperlink(text, url) {
|
|
50
|
+
if (!this.hyperlinksEnabled) {
|
|
51
|
+
return `${text}: ${url}`;
|
|
52
|
+
}
|
|
53
|
+
return hyperlinkStart(url) + text + HYPERLINK_END;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { WriteStream } from "node:tty";
|
|
2
|
+
import { CLEAR_LINE, CURSOR_LEFT, CURSOR_UP, HIDE_CURSOR, SHOW_CURSOR } from "./Ansi.js";
|
|
3
|
+
export default class TtyTerminal {
|
|
4
|
+
#ttyWriteStream;
|
|
5
|
+
#encoder = new TextEncoder();
|
|
6
|
+
constructor(ttyWriteStream) {
|
|
7
|
+
if (ttyWriteStream.isTTY === false) {
|
|
8
|
+
throw new Error("The provided WriteStream is not a TTY");
|
|
9
|
+
}
|
|
10
|
+
this.#ttyWriteStream = ttyWriteStream;
|
|
11
|
+
}
|
|
12
|
+
#writeAll(message) {
|
|
13
|
+
const encoded = this.#encoder.encode(message);
|
|
14
|
+
this.#ttyWriteStream.write(encoded);
|
|
15
|
+
}
|
|
16
|
+
clearLine() {
|
|
17
|
+
this.#writeAll(CLEAR_LINE + CURSOR_LEFT);
|
|
18
|
+
return Promise.resolve();
|
|
19
|
+
}
|
|
20
|
+
clearUpLines(count) {
|
|
21
|
+
this.#writeAll((CURSOR_UP + CLEAR_LINE).repeat(count) + CLEAR_LINE + CURSOR_LEFT);
|
|
22
|
+
return Promise.resolve();
|
|
23
|
+
}
|
|
24
|
+
hideCursor() {
|
|
25
|
+
this.#writeAll(HIDE_CURSOR);
|
|
26
|
+
return Promise.resolve();
|
|
27
|
+
}
|
|
28
|
+
showCursor() {
|
|
29
|
+
this.#writeAll(SHOW_CURSOR);
|
|
30
|
+
return Promise.resolve();
|
|
31
|
+
}
|
|
32
|
+
write(text) {
|
|
33
|
+
this.#writeAll(text);
|
|
34
|
+
return Promise.resolve();
|
|
35
|
+
}
|
|
36
|
+
columns() {
|
|
37
|
+
try {
|
|
38
|
+
return this.#ttyWriteStream.columns || 80;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return 80;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
rows() {
|
|
45
|
+
try {
|
|
46
|
+
return this.#ttyWriteStream.rows || 24;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return 24;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supportsHyperlinks.d.ts","sourceRoot":"","sources":["../../../src/terminal/supportsHyperlinks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAwB5C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"supportsHyperlinks.d.ts","sourceRoot":"","sources":["../../../src/terminal/supportsHyperlinks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAwB5C,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAoGnF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
function parseVersion(versionString = "") {
|
|
3
|
+
if (/^\d{3,4}$/.test(versionString)) {
|
|
4
|
+
const match = /(\d{1,2})(\d{2})/.exec(versionString) ?? [];
|
|
5
|
+
return {
|
|
6
|
+
major: 0,
|
|
7
|
+
minor: Number.parseInt(match[1] ?? "0", 10),
|
|
8
|
+
patch: Number.parseInt(match[2] ?? "0", 10),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const versions = (versionString ?? "").split(".").map((n) => Number.parseInt(n, 10));
|
|
12
|
+
return {
|
|
13
|
+
major: versions[0] ?? 0,
|
|
14
|
+
minor: versions[1] ?? 0,
|
|
15
|
+
patch: versions[2] ?? 0,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export default function supportsHyperlinks(stream) {
|
|
19
|
+
const { CI, CURSOR_TRACE_ID, FORCE_HYPERLINK, LC_TERMINAL, LC_TERMINAL_VERSION, TEAMCITY_VERSION, TERM_PROGRAM, TERM_PROGRAM_VERSION, VTE_VERSION, TERM, } = process.env;
|
|
20
|
+
if (FORCE_HYPERLINK) {
|
|
21
|
+
return !(FORCE_HYPERLINK.length > 0 && Number.parseInt(FORCE_HYPERLINK, 10) === 0);
|
|
22
|
+
}
|
|
23
|
+
if (stream && !stream.isTTY) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if ("WT_SESSION" in process.env) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (CI) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (TEAMCITY_VERSION) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (TERM_PROGRAM) {
|
|
36
|
+
const version = parseVersion(TERM_PROGRAM_VERSION);
|
|
37
|
+
switch (TERM_PROGRAM) {
|
|
38
|
+
case "iTerm.app": {
|
|
39
|
+
if (version.major === 3) {
|
|
40
|
+
return version.minor >= 1;
|
|
41
|
+
}
|
|
42
|
+
return version.major > 3;
|
|
43
|
+
}
|
|
44
|
+
case "WezTerm": {
|
|
45
|
+
if (/^0-unstable-\d{4}-\d{2}-\d{2}$/.test(TERM_PROGRAM_VERSION)) {
|
|
46
|
+
const date = TERM_PROGRAM_VERSION.slice("0-unstable-".length);
|
|
47
|
+
return date >= "2020-06-20";
|
|
48
|
+
}
|
|
49
|
+
return version.major >= 20200620;
|
|
50
|
+
}
|
|
51
|
+
case "vscode": {
|
|
52
|
+
if (CURSOR_TRACE_ID) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return version.major > 1 || (version.major === 1 && version.minor >= 72);
|
|
56
|
+
}
|
|
57
|
+
case "ghostty":
|
|
58
|
+
return true;
|
|
59
|
+
case "zed":
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (LC_TERMINAL) {
|
|
64
|
+
const version = parseVersion(LC_TERMINAL_VERSION);
|
|
65
|
+
switch (LC_TERMINAL) {
|
|
66
|
+
case "iTerm2": {
|
|
67
|
+
if (version.major === 3) {
|
|
68
|
+
return version.minor >= 1;
|
|
69
|
+
}
|
|
70
|
+
return version.major > 3;
|
|
71
|
+
}
|
|
72
|
+
case "WezTerm": {
|
|
73
|
+
if (/^0-unstable-\d{4}-\d{2}-\d{2}$/.test(LC_TERMINAL_VERSION)) {
|
|
74
|
+
const date = LC_TERMINAL_VERSION.slice("0-unstable-".length);
|
|
75
|
+
return date >= "2020-06-20";
|
|
76
|
+
}
|
|
77
|
+
return version.major >= 20200620;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (VTE_VERSION) {
|
|
82
|
+
if (VTE_VERSION === "0.50.0") {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
const version = parseVersion(VTE_VERSION);
|
|
86
|
+
return version.major > 0 || version.minor >= 50;
|
|
87
|
+
}
|
|
88
|
+
switch (TERM) {
|
|
89
|
+
case "alacritty":
|
|
90
|
+
return true;
|
|
91
|
+
case "xterm-kitty":
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
function getKeySegment(segment, isCustom = false, isArray = false) {
|
|
2
|
+
let keySegment = segment;
|
|
3
|
+
if (!isCustom) {
|
|
4
|
+
keySegment = keySegment.replace("-", "_").toUpperCase();
|
|
5
|
+
if (keySegment[0].match(/[0-9]/)) {
|
|
6
|
+
keySegment = `_${keySegment}`;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
if (isArray) {
|
|
10
|
+
return `${keySegment}[_<index>]`;
|
|
11
|
+
}
|
|
12
|
+
return keySegment;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Determine the configuration key for the specified {@link SubCommandArgument}.
|
|
16
|
+
*
|
|
17
|
+
* @param cliConfig the {@link CLIConfig} to use for determining the default configuration key.
|
|
18
|
+
* @param command the {@link Command} to use for determining the default configuration key.
|
|
19
|
+
* @param argumentAncestry a list of {@link SubCommandArgument} instances from the root command arguments to a leaf argument.
|
|
20
|
+
* Apart from {@link ComplexOption} instances this will always only have a single entry.
|
|
21
|
+
*/
|
|
22
|
+
export function getSubCommandArgumentConfigurationKey(cliConfig, command, argumentAncestry) {
|
|
23
|
+
if (command.enableConfiguration === undefined || command.enableConfiguration !== true) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (argumentAncestry.length === 0) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const keySegments = [];
|
|
30
|
+
const firstArgument = argumentAncestry[0];
|
|
31
|
+
if (firstArgument.configurationKey === undefined) {
|
|
32
|
+
keySegments.push(getKeySegment(cliConfig.name));
|
|
33
|
+
keySegments.push(getKeySegment(command.name));
|
|
34
|
+
}
|
|
35
|
+
argumentAncestry.forEach((argument) => {
|
|
36
|
+
const isArray = argument.isArray || argument.isVarargMultiple;
|
|
37
|
+
keySegments.push(getKeySegment(argument.configurationKey || argument.name, argument.configurationKey !== undefined, isArray));
|
|
38
|
+
});
|
|
39
|
+
return keySegments.join("_");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Determine the configuration key for the specified {@link GlobalCommandArgument}.
|
|
43
|
+
*
|
|
44
|
+
* @param cliConfig the {@link CLIConfig} to use for determining the default configuration key.
|
|
45
|
+
* @param command the {@link Command} to use for determining the default configuration key.
|
|
46
|
+
* @param globalCommandArgument the {@link GlobalCommandArgument}.
|
|
47
|
+
*/
|
|
48
|
+
export function getGlobalCommandArgumentConfigurationKey(cliConfig, command, globalCommandArgument) {
|
|
49
|
+
if (command.enableConfiguration === undefined || command.enableConfiguration !== true) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
const keySegments = [];
|
|
53
|
+
if (globalCommandArgument.configurationKey === undefined) {
|
|
54
|
+
keySegments.push(getKeySegment(cliConfig.name));
|
|
55
|
+
keySegments.push(getKeySegment(command.name));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
keySegments.push(getKeySegment(globalCommandArgument.configurationKey));
|
|
59
|
+
}
|
|
60
|
+
return keySegments.join("_");
|
|
61
|
+
}
|