@flowscripter/dynamic-cli-framework-api 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/index.d.ts +74 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/src/BaseCLIFeatureOptions.d.ts +12 -0
- package/dist/src/BaseCLIFeatureOptions.d.ts.map +1 -0
- package/dist/src/BaseCLIFeatureOptions.js +0 -0
- package/dist/src/CLI.d.ts +17 -0
- package/dist/src/CLI.d.ts.map +1 -0
- package/dist/src/CLI.js +0 -0
- package/dist/src/CLIConfig.d.ts +22 -0
- package/dist/src/CLIConfig.d.ts.map +1 -0
- package/dist/src/CLIConfig.js +0 -0
- package/dist/src/Context.d.ts +23 -0
- package/dist/src/Context.d.ts.map +1 -0
- package/dist/src/Context.js +0 -0
- package/dist/src/ParseResult.d.ts +33 -0
- package/dist/src/ParseResult.d.ts.map +1 -0
- package/dist/src/ParseResult.js +0 -0
- package/dist/src/RunResult.d.ts +128 -0
- package/dist/src/RunResult.d.ts.map +1 -0
- package/dist/src/RunResult.js +73 -0
- package/dist/src/argument/Argument.d.ts +62 -0
- package/dist/src/argument/Argument.d.ts.map +1 -0
- package/dist/src/argument/Argument.js +0 -0
- package/dist/src/argument/ArgumentValueTypes.d.ts +68 -0
- package/dist/src/argument/ArgumentValueTypes.d.ts.map +1 -0
- package/dist/src/argument/ArgumentValueTypes.js +18 -0
- package/dist/src/argument/ComplexOption.d.ts +21 -0
- package/dist/src/argument/ComplexOption.d.ts.map +1 -0
- package/dist/src/argument/ComplexOption.js +1 -0
- package/dist/src/argument/GlobalCommandArgument.d.ts +16 -0
- package/dist/src/argument/GlobalCommandArgument.d.ts.map +1 -0
- package/dist/src/argument/GlobalCommandArgument.js +0 -0
- package/dist/src/argument/Option.d.ts +29 -0
- package/dist/src/argument/Option.d.ts.map +1 -0
- package/dist/src/argument/Option.js +0 -0
- package/dist/src/argument/Positional.d.ts +26 -0
- package/dist/src/argument/Positional.d.ts.map +1 -0
- package/dist/src/argument/Positional.js +0 -0
- package/dist/src/argument/SubCommandArgument.d.ts +18 -0
- package/dist/src/argument/SubCommandArgument.d.ts.map +1 -0
- package/dist/src/argument/SubCommandArgument.js +1 -0
- package/dist/src/command/Command.d.ts +26 -0
- package/dist/src/command/Command.d.ts.map +1 -0
- package/dist/src/command/Command.js +0 -0
- package/dist/src/command/GlobalCommand.d.ts +28 -0
- package/dist/src/command/GlobalCommand.d.ts.map +1 -0
- package/dist/src/command/GlobalCommand.js +0 -0
- package/dist/src/command/GlobalModifierCommand.d.ts +12 -0
- package/dist/src/command/GlobalModifierCommand.d.ts.map +1 -0
- package/dist/src/command/GlobalModifierCommand.js +0 -0
- package/dist/src/command/GroupCommand.d.ts +19 -0
- package/dist/src/command/GroupCommand.d.ts.map +1 -0
- package/dist/src/command/GroupCommand.js +0 -0
- package/dist/src/command/SubCommand.d.ts +37 -0
- package/dist/src/command/SubCommand.d.ts.map +1 -0
- package/dist/src/command/SubCommand.js +0 -0
- package/dist/src/command/UsageExample.d.ts +20 -0
- package/dist/src/command/UsageExample.d.ts.map +1 -0
- package/dist/src/command/UsageExample.js +0 -0
- package/dist/src/plugin/CLIPlugin.d.ts +32 -0
- package/dist/src/plugin/CLIPlugin.d.ts.map +1 -0
- package/dist/src/plugin/CLIPlugin.js +2 -0
- package/dist/src/plugin/CommandFactory.d.ts +23 -0
- package/dist/src/plugin/CommandFactory.d.ts.map +1 -0
- package/dist/src/plugin/CommandFactory.js +7 -0
- package/dist/src/plugin/ServiceProviderFactory.d.ts +25 -0
- package/dist/src/plugin/ServiceProviderFactory.d.ts.map +1 -0
- package/dist/src/plugin/ServiceProviderFactory.js +7 -0
- package/dist/src/plugin/createCLIPlugin.d.ts +14 -0
- package/dist/src/plugin/createCLIPlugin.d.ts.map +1 -0
- package/dist/src/plugin/createCLIPlugin.js +30 -0
- package/dist/src/registry/CommandRegistry.d.ts +89 -0
- package/dist/src/registry/CommandRegistry.d.ts.map +1 -0
- package/dist/src/registry/CommandRegistry.js +0 -0
- package/dist/src/registry/ServiceProviderRegistry.d.ts +11 -0
- package/dist/src/registry/ServiceProviderRegistry.d.ts.map +1 -0
- package/dist/src/registry/ServiceProviderRegistry.js +0 -0
- package/dist/src/service/ServiceProvider.d.ts +47 -0
- package/dist/src/service/ServiceProvider.d.ts.map +1 -0
- package/dist/src/service/ServiceProvider.js +0 -0
- package/dist/src/service/core/ArgumentPrompterService.d.ts +6 -0
- package/dist/src/service/core/ArgumentPrompterService.d.ts.map +1 -0
- package/dist/src/service/core/ArgumentPrompterService.js +1 -0
- package/dist/src/service/core/AsciiBannerGeneratorService.d.ts +59 -0
- package/dist/src/service/core/AsciiBannerGeneratorService.d.ts.map +1 -0
- package/dist/src/service/core/AsciiBannerGeneratorService.js +1 -0
- package/dist/src/service/core/CompletionService.d.ts +22 -0
- package/dist/src/service/core/CompletionService.d.ts.map +1 -0
- package/dist/src/service/core/CompletionService.js +8 -0
- package/dist/src/service/core/DataDumpGeneratorService.d.ts +22 -0
- package/dist/src/service/core/DataDumpGeneratorService.d.ts.map +1 -0
- package/dist/src/service/core/DataDumpGeneratorService.js +7 -0
- package/dist/src/service/core/ImagePrinterService.d.ts +21 -0
- package/dist/src/service/core/ImagePrinterService.d.ts.map +1 -0
- package/dist/src/service/core/ImagePrinterService.js +1 -0
- package/dist/src/service/core/KeyValueService.d.ts +40 -0
- package/dist/src/service/core/KeyValueService.d.ts.map +1 -0
- package/dist/src/service/core/KeyValueService.js +7 -0
- package/dist/src/service/core/PluginService.d.ts +56 -0
- package/dist/src/service/core/PluginService.d.ts.map +1 -0
- package/dist/src/service/core/PluginService.js +6 -0
- package/dist/src/service/core/PrettyPrinterService.d.ts +35 -0
- package/dist/src/service/core/PrettyPrinterService.d.ts.map +1 -0
- package/dist/src/service/core/PrettyPrinterService.js +1 -0
- package/dist/src/service/core/PrinterService.d.ts +380 -0
- package/dist/src/service/core/PrinterService.d.ts.map +1 -0
- package/dist/src/service/core/PrinterService.js +42 -0
- package/dist/src/service/core/PrompterService.d.ts +35 -0
- package/dist/src/service/core/PrompterService.d.ts.map +1 -0
- package/dist/src/service/core/PrompterService.js +10 -0
- package/dist/src/service/core/SecretService.d.ts +25 -0
- package/dist/src/service/core/SecretService.d.ts.map +1 -0
- package/dist/src/service/core/SecretService.js +0 -0
- package/dist/src/service/core/ShutdownService.d.ts +24 -0
- package/dist/src/service/core/ShutdownService.d.ts.map +1 -0
- package/dist/src/service/core/ShutdownService.js +1 -0
- package/dist/src/service/core/SyntaxHighlighterService.d.ts +49 -0
- package/dist/src/service/core/SyntaxHighlighterService.d.ts.map +1 -0
- package/dist/src/service/core/SyntaxHighlighterService.js +1 -0
- package/dist/src/service/core/Table.d.ts +18 -0
- package/dist/src/service/core/Table.d.ts.map +1 -0
- package/dist/src/service/core/Table.js +49 -0
- package/dist/src/service/core/TableGeneratorService.d.ts +32 -0
- package/dist/src/service/core/TableGeneratorService.d.ts.map +1 -0
- package/dist/src/service/core/TableGeneratorService.js +7 -0
- package/dist/src/service/core/TreePrinterService.d.ts +9 -0
- package/dist/src/service/core/TreePrinterService.d.ts.map +1 -0
- package/dist/src/service/core/TreePrinterService.js +1 -0
- package/index.ts +138 -0
- package/package.json +66 -0
- package/src/CLI.ts +17 -0
- package/src/CLIConfig.ts +24 -0
- package/src/Context.ts +25 -0
- package/src/ParseResult.ts +40 -0
- package/src/RunResult.ts +158 -0
- package/src/argument/Argument.ts +75 -0
- package/src/argument/ArgumentValueTypes.ts +80 -0
- package/src/argument/ComplexOption.ts +27 -0
- package/src/argument/GlobalCommandArgument.ts +17 -0
- package/src/argument/Option.ts +32 -0
- package/src/argument/Positional.ts +27 -0
- package/src/argument/SubCommandArgument.ts +20 -0
- package/src/command/Command.ts +28 -0
- package/src/command/GlobalCommand.ts +30 -0
- package/src/command/GlobalModifierCommand.ts +12 -0
- package/src/command/GroupCommand.ts +20 -0
- package/src/command/SubCommand.ts +41 -0
- package/src/command/UsageExample.ts +21 -0
- package/src/plugin/CLIPlugin.ts +36 -0
- package/src/plugin/CommandFactory.ts +25 -0
- package/src/plugin/ServiceProviderFactory.ts +27 -0
- package/src/plugin/createCLIPlugin.ts +47 -0
- package/src/registry/CommandRegistry.ts +116 -0
- package/src/registry/ServiceProviderRegistry.ts +11 -0
- package/src/service/ServiceProvider.ts +52 -0
- package/src/service/core/ArgumentPrompterService.ts +8 -0
- package/src/service/core/AsciiBannerGeneratorService.ts +69 -0
- package/src/service/core/CompletionService.ts +32 -0
- package/src/service/core/DataDumpGeneratorService.ts +27 -0
- package/src/service/core/ImagePrinterService.ts +25 -0
- package/src/service/core/KeyValueService.ts +44 -0
- package/src/service/core/PluginService.ts +64 -0
- package/src/service/core/PrettyPrinterService.ts +39 -0
- package/src/service/core/PrinterService.ts +446 -0
- package/src/service/core/PrompterService.ts +42 -0
- package/src/service/core/SecretService.ts +27 -0
- package/src/service/core/ShutdownService.ts +27 -0
- package/src/service/core/SyntaxHighlighterService.ts +54 -0
- package/src/service/core/Table.ts +67 -0
- package/src/service/core/TableGeneratorService.ts +39 -0
- package/src/service/core/TreePrinterService.ts +10 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Flowscripter
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# dynamic-cli-framework-api
|
|
2
|
+
|
|
3
|
+
[](https://github.com/flowscripter/dynamic-cli-framework-api/releases)
|
|
4
|
+
[](https://github.com/flowscripter/dynamic-cli-framework-api/actions/workflows/release-bun-library.yml)
|
|
5
|
+
[](https://codecov.io/gh/flowscripter/dynamic-cli-framework-api)
|
|
6
|
+
[](https://flowscripter.github.io/dynamic-cli-framework-api/index.html)
|
|
7
|
+
[](https://github.com/flowscripter/dynamic-cli-framework-api/blob/main/LICENSE)
|
|
8
|
+
|
|
9
|
+
> API for the [dynamic-cli-framework](https://github.com/flowscripter/dynamic-cli-framework)
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
Plugin authors should depend on this package (not the full
|
|
14
|
+
`@flowscripter/dynamic-cli-framework`) as a `peerDependency`:
|
|
15
|
+
|
|
16
|
+
```jsonc
|
|
17
|
+
{
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"@flowscripter/dynamic-cli-framework-api": "*",
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Key exports:
|
|
25
|
+
|
|
26
|
+
- `createCLIPlugin` - scaffolding helper to build a `CLIPlugin` from a `CommandFactory` and/or `ServiceProviderFactory`.
|
|
27
|
+
- `CommandFactory`, `ServiceProviderFactory` - extension interfaces implemented by a plugin.
|
|
28
|
+
- `Command`, `SubCommand`, `GlobalCommand`, `GroupCommand` - command types.
|
|
29
|
+
- `Context`, `CLIConfig` - runtime context passed to commands.
|
|
30
|
+
- Core service interfaces and their `*_SERVICE_ID` identifiers (`PrinterService`, `TableGeneratorService`, `SyntaxHighlighterService`, etc.) used to look up services via `Context`.
|
|
31
|
+
|
|
32
|
+
See [dynamic-cli-framework](https://github.com/flowscripter/dynamic-cli-framework)
|
|
33
|
+
for the runnable framework and its concrete service implementations.
|
|
34
|
+
|
|
35
|
+
# Development
|
|
36
|
+
|
|
37
|
+
Install dependencies:
|
|
38
|
+
|
|
39
|
+
`bun install`
|
|
40
|
+
|
|
41
|
+
Build (produces `dist/` for Node.js and TypeScript consumers; Bun uses raw source directly):
|
|
42
|
+
|
|
43
|
+
`bun run build`
|
|
44
|
+
|
|
45
|
+
Format:
|
|
46
|
+
|
|
47
|
+
`bunx oxfmt`
|
|
48
|
+
|
|
49
|
+
Lint:
|
|
50
|
+
|
|
51
|
+
`bunx oxlint index.ts src/ tests/`
|
|
52
|
+
|
|
53
|
+
Generate HTML API Documentation:
|
|
54
|
+
|
|
55
|
+
`bunx typedoc index.ts`
|
|
56
|
+
|
|
57
|
+
## License
|
|
58
|
+
|
|
59
|
+
MIT © Flowscripter
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export type { default as Argument } from "./src/argument/Argument.ts";
|
|
2
|
+
export type { ArgumentSingleValueType, ArgumentValues, ArgumentValueType, PopulatedArgumentSingleValueType, PopulatedArgumentValues, PopulatedArgumentValueType, } from "./src/argument/ArgumentValueTypes.ts";
|
|
3
|
+
export { ArgumentValueTypeName, ComplexValueTypeName } from "./src/argument/ArgumentValueTypes.ts";
|
|
4
|
+
export type { default as ComplexOption } from "./src/argument/ComplexOption.ts";
|
|
5
|
+
export { MAXIMUM_COMPLEX_OPTION_NESTING_DEPTH } from "./src/argument/ComplexOption.ts";
|
|
6
|
+
export type { default as SubCommandArgument } from "./src/argument/SubCommandArgument.ts";
|
|
7
|
+
export { MAXIMUM_ARGUMENT_ARRAY_SIZE } from "./src/argument/SubCommandArgument.ts";
|
|
8
|
+
export type { default as GlobalCommandArgument } from "./src/argument/GlobalCommandArgument.ts";
|
|
9
|
+
export type { default as Option } from "./src/argument/Option.ts";
|
|
10
|
+
export type { default as Positional } from "./src/argument/Positional.ts";
|
|
11
|
+
export type { default as Command } from "./src/command/Command.ts";
|
|
12
|
+
export type { default as GlobalCommand } from "./src/command/GlobalCommand.ts";
|
|
13
|
+
export type { default as GlobalModifierCommand } from "./src/command/GlobalModifierCommand.ts";
|
|
14
|
+
export type { default as GroupCommand } from "./src/command/GroupCommand.ts";
|
|
15
|
+
export type { default as SubCommand } from "./src/command/SubCommand.ts";
|
|
16
|
+
export type { default as UsageExample } from "./src/command/UsageExample.ts";
|
|
17
|
+
export type { ServiceInfo, ServiceProvider } from "./src/service/ServiceProvider.ts";
|
|
18
|
+
export type { default as CommandRegistry } from "./src/registry/CommandRegistry.ts";
|
|
19
|
+
export type { default as ServiceProviderRegistry } from "./src/registry/ServiceProviderRegistry.ts";
|
|
20
|
+
export { ASCII_BANNER_GENERATOR_SERVICE_ID } from "./src/service/core/AsciiBannerGeneratorService.ts";
|
|
21
|
+
export type { default as AsciiBannerGeneratorService } from "./src/service/core/AsciiBannerGeneratorService.ts";
|
|
22
|
+
export type { BannerColorEffects, BannerGenerateOptions, ColorEffect, ColorEffectDirection, FixedColorEffect, GradientColorEffect, RainbowColorEffect, } from "./src/service/core/AsciiBannerGeneratorService.ts";
|
|
23
|
+
export { KEY_VALUE_SERVICE_ID } from "./src/service/core/KeyValueService.ts";
|
|
24
|
+
export { SECRET_SENTINEL_PREFIX } from "./src/service/core/KeyValueService.ts";
|
|
25
|
+
export type { default as KeyValueService } from "./src/service/core/KeyValueService.ts";
|
|
26
|
+
export type { default as SecretService } from "./src/service/core/SecretService.ts";
|
|
27
|
+
export { PRINTER_SERVICE_ID } from "./src/service/core/PrinterService.ts";
|
|
28
|
+
export type { default as PrinterService } from "./src/service/core/PrinterService.ts";
|
|
29
|
+
export { Icon, Level, ProgressStyle, SpinnerStyle } from "./src/service/core/PrinterService.ts";
|
|
30
|
+
export { SHUTDOWN_SERVICE_ID } from "./src/service/core/ShutdownService.ts";
|
|
31
|
+
export type { default as ShutdownService } from "./src/service/core/ShutdownService.ts";
|
|
32
|
+
export { SYNTAX_HIGHLIGHTER_SERVICE_ID } from "./src/service/core/SyntaxHighlighterService.ts";
|
|
33
|
+
export type { default as SyntaxHighlighterService } from "./src/service/core/SyntaxHighlighterService.ts";
|
|
34
|
+
export type { ColorScheme } from "./src/service/core/SyntaxHighlighterService.ts";
|
|
35
|
+
export { PRETTY_PRINTER_SERVICE_ID } from "./src/service/core/PrettyPrinterService.ts";
|
|
36
|
+
export type { default as PrettyPrinterService } from "./src/service/core/PrettyPrinterService.ts";
|
|
37
|
+
export { IMAGE_PRINTER_SERVICE_ID } from "./src/service/core/ImagePrinterService.ts";
|
|
38
|
+
export type { default as ImagePrinterService } from "./src/service/core/ImagePrinterService.ts";
|
|
39
|
+
export { TREE_PRINTER_SERVICE_ID } from "./src/service/core/TreePrinterService.ts";
|
|
40
|
+
export type { default as TreePrinterService } from "./src/service/core/TreePrinterService.ts";
|
|
41
|
+
export type { TreeNode } from "./src/service/core/TreePrinterService.ts";
|
|
42
|
+
export { TABLE_GENERATOR_SERVICE_ID } from "./src/service/core/TableGeneratorService.ts";
|
|
43
|
+
export type { default as TableGeneratorService } from "./src/service/core/TableGeneratorService.ts";
|
|
44
|
+
export { Align, type CellOptions, type ColumnOptions, type RowOptions, type TableOptions, } from "./src/service/core/TableGeneratorService.ts";
|
|
45
|
+
export { default as Table } from "./src/service/core/Table.ts";
|
|
46
|
+
export { DATA_DUMP_GENERATOR_SERVICE_ID } from "./src/service/core/DataDumpGeneratorService.ts";
|
|
47
|
+
export type { default as DataDumpGeneratorService } from "./src/service/core/DataDumpGeneratorService.ts";
|
|
48
|
+
export { type ByteRangeColor, DumpFormat, type HexDumpGenerateOptions, } from "./src/service/core/DataDumpGeneratorService.ts";
|
|
49
|
+
export { COMPLETION_SERVICE_ID } from "./src/service/core/CompletionService.ts";
|
|
50
|
+
export type { default as CompletionService } from "./src/service/core/CompletionService.ts";
|
|
51
|
+
export { type CompletionItem, ShellType } from "./src/service/core/CompletionService.ts";
|
|
52
|
+
export { PROMPTER_SERVICE_ID } from "./src/service/core/PrompterService.ts";
|
|
53
|
+
export type { default as PrompterService } from "./src/service/core/PrompterService.ts";
|
|
54
|
+
export { type Prompt, type PromptOption, type PromptResult, PromptType, } from "./src/service/core/PrompterService.ts";
|
|
55
|
+
export { ARGUMENT_PROMPTER_SERVICE_ID } from "./src/service/core/ArgumentPrompterService.ts";
|
|
56
|
+
export type { default as ArgumentPrompterService } from "./src/service/core/ArgumentPrompterService.ts";
|
|
57
|
+
export type { ParseResult } from "./src/ParseResult.ts";
|
|
58
|
+
export type { InvalidArgument } from "./src/RunResult.ts";
|
|
59
|
+
export type { default as Context } from "./src/Context.ts";
|
|
60
|
+
export type { default as RunResult } from "./src/RunResult.ts";
|
|
61
|
+
export { InvalidArgumentReason, RunState } from "./src/RunResult.ts";
|
|
62
|
+
export type { default as CLIConfig } from "./src/CLIConfig.ts";
|
|
63
|
+
export type { default as CLI } from "./src/CLI.ts";
|
|
64
|
+
export type { default as CommandFactory } from "./src/plugin/CommandFactory.ts";
|
|
65
|
+
export { DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT } from "./src/plugin/CommandFactory.ts";
|
|
66
|
+
export type { default as ServiceProviderFactory } from "./src/plugin/ServiceProviderFactory.ts";
|
|
67
|
+
export { DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT } from "./src/plugin/ServiceProviderFactory.ts";
|
|
68
|
+
export type { Plugin, ExtensionDescriptor, ExtensionFactory, VersionedPluginDescriptor, SearchQuery, } from "@flowscripter/dynamic-plugin-framework";
|
|
69
|
+
export type { default as CLIPlugin, CommandFactoryExtensionDescriptor, ServiceProviderFactoryExtensionDescriptor, } from "./src/plugin/CLIPlugin.ts";
|
|
70
|
+
export { default as createCLIPlugin } from "./src/plugin/createCLIPlugin.ts";
|
|
71
|
+
export type { CLIPluginOptions } from "./src/plugin/createCLIPlugin.ts";
|
|
72
|
+
export { PLUGIN_SERVICE_ID } from "./src/service/core/PluginService.ts";
|
|
73
|
+
export type { default as PluginService } from "./src/service/core/PluginService.ts";
|
|
74
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { ArgumentValueTypeName, ComplexValueTypeName } from "./src/argument/ArgumentValueTypes.js";
|
|
2
|
+
export { MAXIMUM_COMPLEX_OPTION_NESTING_DEPTH } from "./src/argument/ComplexOption.js";
|
|
3
|
+
export { MAXIMUM_ARGUMENT_ARRAY_SIZE } from "./src/argument/SubCommandArgument.js";
|
|
4
|
+
// Core Service IDs and types
|
|
5
|
+
export { ASCII_BANNER_GENERATOR_SERVICE_ID } from "./src/service/core/AsciiBannerGeneratorService.js";
|
|
6
|
+
export { KEY_VALUE_SERVICE_ID } from "./src/service/core/KeyValueService.js";
|
|
7
|
+
export { SECRET_SENTINEL_PREFIX } from "./src/service/core/KeyValueService.js";
|
|
8
|
+
export { PRINTER_SERVICE_ID } from "./src/service/core/PrinterService.js";
|
|
9
|
+
export { Icon, Level, ProgressStyle, SpinnerStyle } from "./src/service/core/PrinterService.js";
|
|
10
|
+
export { SHUTDOWN_SERVICE_ID } from "./src/service/core/ShutdownService.js";
|
|
11
|
+
export { SYNTAX_HIGHLIGHTER_SERVICE_ID } from "./src/service/core/SyntaxHighlighterService.js";
|
|
12
|
+
export { PRETTY_PRINTER_SERVICE_ID } from "./src/service/core/PrettyPrinterService.js";
|
|
13
|
+
export { IMAGE_PRINTER_SERVICE_ID } from "./src/service/core/ImagePrinterService.js";
|
|
14
|
+
export { TREE_PRINTER_SERVICE_ID } from "./src/service/core/TreePrinterService.js";
|
|
15
|
+
export { TABLE_GENERATOR_SERVICE_ID } from "./src/service/core/TableGeneratorService.js";
|
|
16
|
+
export { Align, } from "./src/service/core/TableGeneratorService.js";
|
|
17
|
+
export { default as Table } from "./src/service/core/Table.js";
|
|
18
|
+
export { DATA_DUMP_GENERATOR_SERVICE_ID } from "./src/service/core/DataDumpGeneratorService.js";
|
|
19
|
+
export { DumpFormat, } from "./src/service/core/DataDumpGeneratorService.js";
|
|
20
|
+
export { COMPLETION_SERVICE_ID } from "./src/service/core/CompletionService.js";
|
|
21
|
+
export { ShellType } from "./src/service/core/CompletionService.js";
|
|
22
|
+
export { PROMPTER_SERVICE_ID } from "./src/service/core/PrompterService.js";
|
|
23
|
+
export { PromptType, } from "./src/service/core/PrompterService.js";
|
|
24
|
+
export { ARGUMENT_PROMPTER_SERVICE_ID } from "./src/service/core/ArgumentPrompterService.js";
|
|
25
|
+
export { InvalidArgumentReason, RunState } from "./src/RunResult.js";
|
|
26
|
+
export { DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT } from "./src/plugin/CommandFactory.js";
|
|
27
|
+
export { DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT } from "./src/plugin/ServiceProviderFactory.js";
|
|
28
|
+
export { default as createCLIPlugin } from "./src/plugin/createCLIPlugin.js";
|
|
29
|
+
export { PLUGIN_SERVICE_ID } from "./src/service/core/PluginService.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default interface BaseCLIFeatureOptions {
|
|
2
|
+
readonly configFileSupportEnabled?: boolean;
|
|
3
|
+
readonly envVarsSupportEnabled?: boolean;
|
|
4
|
+
readonly keyValueServiceEnabled?: boolean;
|
|
5
|
+
readonly secretServiceEnabled?: boolean;
|
|
6
|
+
readonly argumentPrompterServiceEnabled?: boolean;
|
|
7
|
+
readonly completionServiceEnabled?: boolean;
|
|
8
|
+
readonly imagePrinterServiceEnabled?: boolean;
|
|
9
|
+
readonly validateAllCommands?: boolean;
|
|
10
|
+
readonly promptingEnabled?: boolean;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=BaseCLIFeatureOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseCLIFeatureOptions.d.ts","sourceRoot":"","sources":["../../src/BaseCLIFeatureOptions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC5C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC"}
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface to be implemented by a CLI application.
|
|
3
|
+
*/
|
|
4
|
+
import type RunResult from "./RunResult.ts";
|
|
5
|
+
import type CLIConfig from "./CLIConfig.ts";
|
|
6
|
+
export default interface CLI {
|
|
7
|
+
/**
|
|
8
|
+
* Run the CLI with the provided arguments which do not include the invoked executable name.
|
|
9
|
+
*
|
|
10
|
+
* @param args the arguments to parse.
|
|
11
|
+
* @param cliConfig the {@link CLIConfig} for the CLI application.
|
|
12
|
+
*
|
|
13
|
+
* @return result of parsing arguments and running appropriate {@link Command} instances.
|
|
14
|
+
*/
|
|
15
|
+
run(args: ReadonlyArray<string>, cliConfig: CLIConfig): Promise<RunResult>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=CLI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../src/CLI.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,OAAO,WAAW,GAAG;IAC1B;;;;;;;OAOG;IACH,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC5E"}
|
package/dist/src/CLI.js
ADDED
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface specifying common configuration for a {@link CLI} application.
|
|
3
|
+
*/
|
|
4
|
+
export default interface CLIConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Name of the CLI application.
|
|
7
|
+
*/
|
|
8
|
+
readonly name: string;
|
|
9
|
+
/**
|
|
10
|
+
* Optional description of the CLI application.
|
|
11
|
+
*/
|
|
12
|
+
readonly description?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Optional sub-message to display below the banner.
|
|
15
|
+
*/
|
|
16
|
+
readonly subMessage?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Version of the CLI application.
|
|
19
|
+
*/
|
|
20
|
+
readonly version: string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=CLIConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CLIConfig.d.ts","sourceRoot":"","sources":["../../src/CLIConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,SAAS;IAChC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B"}
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface allowing a {@link CLI} to pass context to a {@link Command} instance.
|
|
3
|
+
*/
|
|
4
|
+
import type CLIConfig from "./CLIConfig.ts";
|
|
5
|
+
export default interface Context {
|
|
6
|
+
/**
|
|
7
|
+
* The {@link CLIConfig} in use by the {@link CLI}.
|
|
8
|
+
*/
|
|
9
|
+
readonly cliConfig: CLIConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Return the service identified by the specified ID.
|
|
12
|
+
*
|
|
13
|
+
* @param id the ID of the service to retrieve.
|
|
14
|
+
*/
|
|
15
|
+
getServiceById(id: string): unknown;
|
|
16
|
+
/**
|
|
17
|
+
* Check if the specified service exists in the context.
|
|
18
|
+
*
|
|
19
|
+
* @param id the ID of the desired service.
|
|
20
|
+
*/
|
|
21
|
+
doesServiceExist(id: string): boolean;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../src/Context.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,OAAO,WAAW,OAAO;IAC9B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC"}
|
|
File without changes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type Command from "./command/Command.ts";
|
|
2
|
+
import type GroupCommand from "./command/GroupCommand.ts";
|
|
3
|
+
import type { PopulatedArgumentSingleValueType, PopulatedArgumentValues } from "./argument/ArgumentValueTypes.ts";
|
|
4
|
+
import type { InvalidArgument } from "./RunResult.ts";
|
|
5
|
+
/**
|
|
6
|
+
* A container holding the result of a command clause parsing operation.
|
|
7
|
+
*/
|
|
8
|
+
export interface ParseResult {
|
|
9
|
+
/**
|
|
10
|
+
* The {@link Command} to execute if the parse result is valid (i.e. {@link invalidArguments} is empty).
|
|
11
|
+
*/
|
|
12
|
+
readonly command: Command;
|
|
13
|
+
/**
|
|
14
|
+
* Optional parent {@link GroupCommand} if the parsed {@link command} was a member {@link SubCommand},
|
|
15
|
+
*/
|
|
16
|
+
readonly groupCommand?: GroupCommand;
|
|
17
|
+
/**
|
|
18
|
+
* The argument values populated from the command line args. If the parse result is valid
|
|
19
|
+
* (i.e. {@link invalidArguments} is empty), this can be used to execute the specified {@link command}.
|
|
20
|
+
* {@link PopulatedArgumentSingleValueType} is for {@link GlobalCommand} values, {@link PopulatedArgumentValues} is for
|
|
21
|
+
* {@link SubCommand} values.
|
|
22
|
+
*/
|
|
23
|
+
readonly populatedArgumentValues: PopulatedArgumentValues | PopulatedArgumentSingleValueType;
|
|
24
|
+
/**
|
|
25
|
+
* Any arguments which were invalid.
|
|
26
|
+
*/
|
|
27
|
+
readonly invalidArguments: ReadonlyArray<InvalidArgument>;
|
|
28
|
+
/**
|
|
29
|
+
* Any arguments which were unused in the parsing operation.
|
|
30
|
+
*/
|
|
31
|
+
readonly unusedArgs: ReadonlyArray<string>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ParseResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParseResult.d.ts","sourceRoot":"","sources":["../../src/ParseResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EACV,gCAAgC,EAChC,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAErC;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,GAAG,gCAAgC,CAAC;IAE7F;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAE1D;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC5C"}
|
|
File without changes
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State of a {@link CLI} after invocation.
|
|
3
|
+
*/
|
|
4
|
+
import type Command from "./command/Command.ts";
|
|
5
|
+
import type Argument from "./argument/Argument.ts";
|
|
6
|
+
import type ComplexOption from "./argument/ComplexOption.ts";
|
|
7
|
+
import type { PopulatedArgumentValues, PopulatedArgumentValueType } from "./argument/ArgumentValueTypes.ts";
|
|
8
|
+
export declare enum RunState {
|
|
9
|
+
/**
|
|
10
|
+
* Arguments were successfully parsed and the specified command(s) were successfully executed.
|
|
11
|
+
*/
|
|
12
|
+
SUCCESS = 0,
|
|
13
|
+
/**
|
|
14
|
+
* The arguments supplied were invalid or could not be parsed.
|
|
15
|
+
*/
|
|
16
|
+
PARSE_ERROR = 1,
|
|
17
|
+
/**
|
|
18
|
+
* Arguments were successfully parsed but no command was discovered.
|
|
19
|
+
*/
|
|
20
|
+
NO_COMMAND = 2,
|
|
21
|
+
/**
|
|
22
|
+
* Arguments were successfully parsed and command(s) discovered but command execution failed.
|
|
23
|
+
*/
|
|
24
|
+
EXECUTION_ERROR = 3,
|
|
25
|
+
/**
|
|
26
|
+
* General runtime error related to the framework.
|
|
27
|
+
*/
|
|
28
|
+
RUNTIME_ERROR = 4,
|
|
29
|
+
/**
|
|
30
|
+
* Execution was interrupted by a signal (e.g. Ctrl-C or SIGTERM).
|
|
31
|
+
*/
|
|
32
|
+
INTERRUPTED = 130
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Possible reasons for an invalid argument.
|
|
36
|
+
*/
|
|
37
|
+
export declare enum InvalidArgumentReason {
|
|
38
|
+
/**
|
|
39
|
+
* The argument value was not specified.
|
|
40
|
+
*/
|
|
41
|
+
MISSING_VALUE = 0,
|
|
42
|
+
/**
|
|
43
|
+
* The value specified was not the correct type for the argument.
|
|
44
|
+
*/
|
|
45
|
+
INCORRECT_VALUE_TYPE = 1,
|
|
46
|
+
/**
|
|
47
|
+
* The argument does not support multiple values.
|
|
48
|
+
*/
|
|
49
|
+
ILLEGAL_MULTIPLE_VALUES = 2,
|
|
50
|
+
/**
|
|
51
|
+
* The value specified was not one of the defined allowable values for the argument.
|
|
52
|
+
*/
|
|
53
|
+
ILLEGAL_VALUE = 3,
|
|
54
|
+
/**
|
|
55
|
+
* The arguments specified resulted in a sparse array of values.
|
|
56
|
+
*/
|
|
57
|
+
ILLEGAL_SPARSE_ARRAY = 4,
|
|
58
|
+
/**
|
|
59
|
+
* The argument specified an unknown complex option property.
|
|
60
|
+
*/
|
|
61
|
+
UNKNOWN_PROPERTY = 5,
|
|
62
|
+
/**
|
|
63
|
+
* Complex option nesting exceeds maximum of {@link MAXIMUM_COMPLEX_OPTION_NESTING_DEPTH}.
|
|
64
|
+
*/
|
|
65
|
+
NESTING_DEPTH_EXCEEDED = 6,
|
|
66
|
+
/**
|
|
67
|
+
* Array value nesting exceeds maximum of {@link MAXIMUM_ARGUMENT_ARRAY_SIZE}.
|
|
68
|
+
*/
|
|
69
|
+
ARRAY_SIZE_EXCEEDED = 7,
|
|
70
|
+
/**
|
|
71
|
+
* Attempt to set a primitive value on a complex object object.
|
|
72
|
+
*/
|
|
73
|
+
OPTION_IS_COMPLEX = 8,
|
|
74
|
+
/**
|
|
75
|
+
* The value failed a custom validation function defined on the argument.
|
|
76
|
+
*/
|
|
77
|
+
CUSTOM_VALIDATION = 9
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Details of an invalid parsed argument.
|
|
81
|
+
*/
|
|
82
|
+
export interface InvalidArgument {
|
|
83
|
+
/**
|
|
84
|
+
* A reason for the parsing error
|
|
85
|
+
*/
|
|
86
|
+
readonly reason: InvalidArgumentReason;
|
|
87
|
+
/**
|
|
88
|
+
* The name of the argument specified (if it was able to be populated)
|
|
89
|
+
*/
|
|
90
|
+
readonly name?: string;
|
|
91
|
+
/**
|
|
92
|
+
* The {@link Argument} (if it was able to be populated)
|
|
93
|
+
*/
|
|
94
|
+
readonly argument?: Argument | ComplexOption;
|
|
95
|
+
/**
|
|
96
|
+
* The argument value (if it was able to be populated).
|
|
97
|
+
*
|
|
98
|
+
* NOTE: This value is unlikely to be valid as it is the cause of the invalid argument error.
|
|
99
|
+
*/
|
|
100
|
+
readonly value?: PopulatedArgumentValues | PopulatedArgumentValueType | Array<PopulatedArgumentValues | PopulatedArgumentValueType>;
|
|
101
|
+
/**
|
|
102
|
+
* An optional message providing detail about the validation failure.
|
|
103
|
+
* Populated when {@link reason} is {@link InvalidArgumentReason.CUSTOM_VALIDATION}.
|
|
104
|
+
*/
|
|
105
|
+
readonly message?: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Result of a {@link CLI} invocation.
|
|
109
|
+
*/
|
|
110
|
+
export default interface RunResult {
|
|
111
|
+
/**
|
|
112
|
+
* The state after processing the invocation.
|
|
113
|
+
*/
|
|
114
|
+
readonly runState: RunState;
|
|
115
|
+
/**
|
|
116
|
+
* Populated if {@link runState} is {@link RunState.SUCCESS}, {@link RunState.PARSE_ERROR} or {@link RunState.EXECUTION_ERROR}.
|
|
117
|
+
*/
|
|
118
|
+
readonly command?: Command;
|
|
119
|
+
/**
|
|
120
|
+
* Populated if {@link runState} is {@link RunState.PARSE_ERROR}
|
|
121
|
+
*/
|
|
122
|
+
readonly invalidArguments?: ReadonlyArray<InvalidArgument>;
|
|
123
|
+
/**
|
|
124
|
+
* Populated if {@link runState} is {@link RunState.EXECUTION_ERROR} or {@link RunState.RUNTIME_ERROR}.
|
|
125
|
+
*/
|
|
126
|
+
readonly error?: Error;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=RunResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunResult.d.ts","sourceRoot":"","sources":["../../src/RunResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,aAAa,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;AAE1C,oBAAY,QAAQ;IAClB;;OAEG;IACH,OAAO,IAAI;IAEX;;OAEG;IACH,WAAW,IAAI;IAEf;;OAEG;IACH,UAAU,IAAI;IAEd;;OAEG;IACH,eAAe,IAAI;IAEnB;;OAEG;IACH,aAAa,IAAI;IAEjB;;OAEG;IACH,WAAW,MAAM;CAClB;AAED;;GAEG;AACH,oBAAY,qBAAqB;IAC/B;;OAEG;IACH,aAAa,IAAI;IAEjB;;OAEG;IACH,oBAAoB,IAAI;IAExB;;OAEG;IACH,uBAAuB,IAAI;IAE3B;;OAEG;IACH,aAAa,IAAI;IAEjB;;OAEG;IACH,oBAAoB,IAAI;IAExB;;OAEG;IACH,gBAAgB,IAAI;IAEpB;;OAEG;IACH,sBAAsB,IAAI;IAE1B;;OAEG;IACH,mBAAmB,IAAI;IAEvB;;OAEG;IACH,iBAAiB,IAAI;IAErB;;OAEG;IACH,iBAAiB,IAAI;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EACX,uBAAuB,GACvB,0BAA0B,GAC1B,KAAK,CAAC,uBAAuB,GAAG,0BAA0B,CAAC,CAAC;IAEhE;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,SAAS;IAChC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export var RunState;
|
|
2
|
+
(function (RunState) {
|
|
3
|
+
/**
|
|
4
|
+
* Arguments were successfully parsed and the specified command(s) were successfully executed.
|
|
5
|
+
*/
|
|
6
|
+
RunState[RunState["SUCCESS"] = 0] = "SUCCESS";
|
|
7
|
+
/**
|
|
8
|
+
* The arguments supplied were invalid or could not be parsed.
|
|
9
|
+
*/
|
|
10
|
+
RunState[RunState["PARSE_ERROR"] = 1] = "PARSE_ERROR";
|
|
11
|
+
/**
|
|
12
|
+
* Arguments were successfully parsed but no command was discovered.
|
|
13
|
+
*/
|
|
14
|
+
RunState[RunState["NO_COMMAND"] = 2] = "NO_COMMAND";
|
|
15
|
+
/**
|
|
16
|
+
* Arguments were successfully parsed and command(s) discovered but command execution failed.
|
|
17
|
+
*/
|
|
18
|
+
RunState[RunState["EXECUTION_ERROR"] = 3] = "EXECUTION_ERROR";
|
|
19
|
+
/**
|
|
20
|
+
* General runtime error related to the framework.
|
|
21
|
+
*/
|
|
22
|
+
RunState[RunState["RUNTIME_ERROR"] = 4] = "RUNTIME_ERROR";
|
|
23
|
+
/**
|
|
24
|
+
* Execution was interrupted by a signal (e.g. Ctrl-C or SIGTERM).
|
|
25
|
+
*/
|
|
26
|
+
RunState[RunState["INTERRUPTED"] = 130] = "INTERRUPTED";
|
|
27
|
+
})(RunState || (RunState = {}));
|
|
28
|
+
/**
|
|
29
|
+
* Possible reasons for an invalid argument.
|
|
30
|
+
*/
|
|
31
|
+
export var InvalidArgumentReason;
|
|
32
|
+
(function (InvalidArgumentReason) {
|
|
33
|
+
/**
|
|
34
|
+
* The argument value was not specified.
|
|
35
|
+
*/
|
|
36
|
+
InvalidArgumentReason[InvalidArgumentReason["MISSING_VALUE"] = 0] = "MISSING_VALUE";
|
|
37
|
+
/**
|
|
38
|
+
* The value specified was not the correct type for the argument.
|
|
39
|
+
*/
|
|
40
|
+
InvalidArgumentReason[InvalidArgumentReason["INCORRECT_VALUE_TYPE"] = 1] = "INCORRECT_VALUE_TYPE";
|
|
41
|
+
/**
|
|
42
|
+
* The argument does not support multiple values.
|
|
43
|
+
*/
|
|
44
|
+
InvalidArgumentReason[InvalidArgumentReason["ILLEGAL_MULTIPLE_VALUES"] = 2] = "ILLEGAL_MULTIPLE_VALUES";
|
|
45
|
+
/**
|
|
46
|
+
* The value specified was not one of the defined allowable values for the argument.
|
|
47
|
+
*/
|
|
48
|
+
InvalidArgumentReason[InvalidArgumentReason["ILLEGAL_VALUE"] = 3] = "ILLEGAL_VALUE";
|
|
49
|
+
/**
|
|
50
|
+
* The arguments specified resulted in a sparse array of values.
|
|
51
|
+
*/
|
|
52
|
+
InvalidArgumentReason[InvalidArgumentReason["ILLEGAL_SPARSE_ARRAY"] = 4] = "ILLEGAL_SPARSE_ARRAY";
|
|
53
|
+
/**
|
|
54
|
+
* The argument specified an unknown complex option property.
|
|
55
|
+
*/
|
|
56
|
+
InvalidArgumentReason[InvalidArgumentReason["UNKNOWN_PROPERTY"] = 5] = "UNKNOWN_PROPERTY";
|
|
57
|
+
/**
|
|
58
|
+
* Complex option nesting exceeds maximum of {@link MAXIMUM_COMPLEX_OPTION_NESTING_DEPTH}.
|
|
59
|
+
*/
|
|
60
|
+
InvalidArgumentReason[InvalidArgumentReason["NESTING_DEPTH_EXCEEDED"] = 6] = "NESTING_DEPTH_EXCEEDED";
|
|
61
|
+
/**
|
|
62
|
+
* Array value nesting exceeds maximum of {@link MAXIMUM_ARGUMENT_ARRAY_SIZE}.
|
|
63
|
+
*/
|
|
64
|
+
InvalidArgumentReason[InvalidArgumentReason["ARRAY_SIZE_EXCEEDED"] = 7] = "ARRAY_SIZE_EXCEEDED";
|
|
65
|
+
/**
|
|
66
|
+
* Attempt to set a primitive value on a complex object object.
|
|
67
|
+
*/
|
|
68
|
+
InvalidArgumentReason[InvalidArgumentReason["OPTION_IS_COMPLEX"] = 8] = "OPTION_IS_COMPLEX";
|
|
69
|
+
/**
|
|
70
|
+
* The value failed a custom validation function defined on the argument.
|
|
71
|
+
*/
|
|
72
|
+
InvalidArgumentReason[InvalidArgumentReason["CUSTOM_VALIDATION"] = 9] = "CUSTOM_VALIDATION";
|
|
73
|
+
})(InvalidArgumentReason || (InvalidArgumentReason = {}));
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { ArgumentSingleValueType, ArgumentValues, ArgumentValueType, ArgumentValueTypeName } from "./ArgumentValueTypes.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Interface to be implemented by all {@link Command} arguments.
|
|
4
|
+
*/
|
|
5
|
+
export default interface Argument {
|
|
6
|
+
/**
|
|
7
|
+
* Type of the argument value.
|
|
8
|
+
*/
|
|
9
|
+
readonly type: ArgumentValueTypeName;
|
|
10
|
+
/**
|
|
11
|
+
* Optional list of values that the value must match. This is not supported for {@link ArgumentValueTypeName.BOOLEAN}.
|
|
12
|
+
*/
|
|
13
|
+
readonly allowableValues?: ReadonlyArray<ArgumentSingleValueType>;
|
|
14
|
+
/**
|
|
15
|
+
* Optional (default is `false`) for {@link ArgumentValueTypeName.STRING} when comparing a value against {@link allowableValues}.
|
|
16
|
+
*/
|
|
17
|
+
readonly isCaseInsensitive?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Optional for {@link ArgumentValueTypeName.INTEGER} or {@link ArgumentValueTypeName.NUMBER} when validating a value.
|
|
20
|
+
*/
|
|
21
|
+
readonly minValueInclusive?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Optional for {@link ArgumentValueTypeName.INTEGER} or {@link ArgumentValueTypeName.NUMBER} when validating a value.
|
|
24
|
+
*/
|
|
25
|
+
readonly maxValueInclusive?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Optional configuration key to use for the argument. Must consist of alphanumeric non-whitespace uppercase
|
|
28
|
+
* ASCII or `_` characters. Must not start with a digit.
|
|
29
|
+
*
|
|
30
|
+
* If not specified a default configuration key is determined as follows: The {@link SubCommandArgument.name} is capitalized
|
|
31
|
+
* and any `-` characters are replaced with `_` characters. If the result starts with a digit, it is
|
|
32
|
+
* prefixed with `_`. Some examples:
|
|
33
|
+
*
|
|
34
|
+
* * name: `FooBar` => configuration key: `FOOBAR`
|
|
35
|
+
* * name: `Hello-World-` => configuration key: `HELLO_WORLD_`
|
|
36
|
+
* * name: `3` => configuration key: `_3`
|
|
37
|
+
*
|
|
38
|
+
* NOTE: Regardless of whether a {@link configurationKey} is specified, or the default is relied upon,
|
|
39
|
+
* it will only be used if the parent {@link Command} has specified {@link Command.enableConfiguration} as `true`.
|
|
40
|
+
*/
|
|
41
|
+
readonly configurationKey?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Optional custom validation function invoked after all built-in validation
|
|
44
|
+
* has passed. Receives the validated and type-converted value.
|
|
45
|
+
*
|
|
46
|
+
* Return `undefined` if the value is valid, or a string describing the
|
|
47
|
+
* validation error. The error string is associated with
|
|
48
|
+
* {@link InvalidArgumentReason.CUSTOM_VALIDATION}.
|
|
49
|
+
*
|
|
50
|
+
* Example: ensure array values are unique:
|
|
51
|
+
* ```typescript
|
|
52
|
+
* validate: (value) => {
|
|
53
|
+
* const arr = value as string[];
|
|
54
|
+
* return new Set(arr).size !== arr.length
|
|
55
|
+
* ? "values must be unique"
|
|
56
|
+
* : undefined;
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
readonly validate?: (value: ArgumentValueType | ArgumentValues | Array<ArgumentValues>) => string | undefined;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=Argument.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Argument.d.ts","sourceRoot":"","sources":["../../../src/argument/Argument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,QAAQ;IAC/B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IAErC;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAElE;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAErC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAClB,KAAK,EAAE,iBAAiB,GAAG,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,KAC9D,MAAM,GAAG,SAAS,CAAC;CACzB"}
|
|
File without changes
|