@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.
Files changed (174) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/index.d.ts +74 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +29 -0
  6. package/dist/src/BaseCLIFeatureOptions.d.ts +12 -0
  7. package/dist/src/BaseCLIFeatureOptions.d.ts.map +1 -0
  8. package/dist/src/BaseCLIFeatureOptions.js +0 -0
  9. package/dist/src/CLI.d.ts +17 -0
  10. package/dist/src/CLI.d.ts.map +1 -0
  11. package/dist/src/CLI.js +0 -0
  12. package/dist/src/CLIConfig.d.ts +22 -0
  13. package/dist/src/CLIConfig.d.ts.map +1 -0
  14. package/dist/src/CLIConfig.js +0 -0
  15. package/dist/src/Context.d.ts +23 -0
  16. package/dist/src/Context.d.ts.map +1 -0
  17. package/dist/src/Context.js +0 -0
  18. package/dist/src/ParseResult.d.ts +33 -0
  19. package/dist/src/ParseResult.d.ts.map +1 -0
  20. package/dist/src/ParseResult.js +0 -0
  21. package/dist/src/RunResult.d.ts +128 -0
  22. package/dist/src/RunResult.d.ts.map +1 -0
  23. package/dist/src/RunResult.js +73 -0
  24. package/dist/src/argument/Argument.d.ts +62 -0
  25. package/dist/src/argument/Argument.d.ts.map +1 -0
  26. package/dist/src/argument/Argument.js +0 -0
  27. package/dist/src/argument/ArgumentValueTypes.d.ts +68 -0
  28. package/dist/src/argument/ArgumentValueTypes.d.ts.map +1 -0
  29. package/dist/src/argument/ArgumentValueTypes.js +18 -0
  30. package/dist/src/argument/ComplexOption.d.ts +21 -0
  31. package/dist/src/argument/ComplexOption.d.ts.map +1 -0
  32. package/dist/src/argument/ComplexOption.js +1 -0
  33. package/dist/src/argument/GlobalCommandArgument.d.ts +16 -0
  34. package/dist/src/argument/GlobalCommandArgument.d.ts.map +1 -0
  35. package/dist/src/argument/GlobalCommandArgument.js +0 -0
  36. package/dist/src/argument/Option.d.ts +29 -0
  37. package/dist/src/argument/Option.d.ts.map +1 -0
  38. package/dist/src/argument/Option.js +0 -0
  39. package/dist/src/argument/Positional.d.ts +26 -0
  40. package/dist/src/argument/Positional.d.ts.map +1 -0
  41. package/dist/src/argument/Positional.js +0 -0
  42. package/dist/src/argument/SubCommandArgument.d.ts +18 -0
  43. package/dist/src/argument/SubCommandArgument.d.ts.map +1 -0
  44. package/dist/src/argument/SubCommandArgument.js +1 -0
  45. package/dist/src/command/Command.d.ts +26 -0
  46. package/dist/src/command/Command.d.ts.map +1 -0
  47. package/dist/src/command/Command.js +0 -0
  48. package/dist/src/command/GlobalCommand.d.ts +28 -0
  49. package/dist/src/command/GlobalCommand.d.ts.map +1 -0
  50. package/dist/src/command/GlobalCommand.js +0 -0
  51. package/dist/src/command/GlobalModifierCommand.d.ts +12 -0
  52. package/dist/src/command/GlobalModifierCommand.d.ts.map +1 -0
  53. package/dist/src/command/GlobalModifierCommand.js +0 -0
  54. package/dist/src/command/GroupCommand.d.ts +19 -0
  55. package/dist/src/command/GroupCommand.d.ts.map +1 -0
  56. package/dist/src/command/GroupCommand.js +0 -0
  57. package/dist/src/command/SubCommand.d.ts +37 -0
  58. package/dist/src/command/SubCommand.d.ts.map +1 -0
  59. package/dist/src/command/SubCommand.js +0 -0
  60. package/dist/src/command/UsageExample.d.ts +20 -0
  61. package/dist/src/command/UsageExample.d.ts.map +1 -0
  62. package/dist/src/command/UsageExample.js +0 -0
  63. package/dist/src/plugin/CLIPlugin.d.ts +32 -0
  64. package/dist/src/plugin/CLIPlugin.d.ts.map +1 -0
  65. package/dist/src/plugin/CLIPlugin.js +2 -0
  66. package/dist/src/plugin/CommandFactory.d.ts +23 -0
  67. package/dist/src/plugin/CommandFactory.d.ts.map +1 -0
  68. package/dist/src/plugin/CommandFactory.js +7 -0
  69. package/dist/src/plugin/ServiceProviderFactory.d.ts +25 -0
  70. package/dist/src/plugin/ServiceProviderFactory.d.ts.map +1 -0
  71. package/dist/src/plugin/ServiceProviderFactory.js +7 -0
  72. package/dist/src/plugin/createCLIPlugin.d.ts +14 -0
  73. package/dist/src/plugin/createCLIPlugin.d.ts.map +1 -0
  74. package/dist/src/plugin/createCLIPlugin.js +30 -0
  75. package/dist/src/registry/CommandRegistry.d.ts +89 -0
  76. package/dist/src/registry/CommandRegistry.d.ts.map +1 -0
  77. package/dist/src/registry/CommandRegistry.js +0 -0
  78. package/dist/src/registry/ServiceProviderRegistry.d.ts +11 -0
  79. package/dist/src/registry/ServiceProviderRegistry.d.ts.map +1 -0
  80. package/dist/src/registry/ServiceProviderRegistry.js +0 -0
  81. package/dist/src/service/ServiceProvider.d.ts +47 -0
  82. package/dist/src/service/ServiceProvider.d.ts.map +1 -0
  83. package/dist/src/service/ServiceProvider.js +0 -0
  84. package/dist/src/service/core/ArgumentPrompterService.d.ts +6 -0
  85. package/dist/src/service/core/ArgumentPrompterService.d.ts.map +1 -0
  86. package/dist/src/service/core/ArgumentPrompterService.js +1 -0
  87. package/dist/src/service/core/AsciiBannerGeneratorService.d.ts +59 -0
  88. package/dist/src/service/core/AsciiBannerGeneratorService.d.ts.map +1 -0
  89. package/dist/src/service/core/AsciiBannerGeneratorService.js +1 -0
  90. package/dist/src/service/core/CompletionService.d.ts +22 -0
  91. package/dist/src/service/core/CompletionService.d.ts.map +1 -0
  92. package/dist/src/service/core/CompletionService.js +8 -0
  93. package/dist/src/service/core/DataDumpGeneratorService.d.ts +22 -0
  94. package/dist/src/service/core/DataDumpGeneratorService.d.ts.map +1 -0
  95. package/dist/src/service/core/DataDumpGeneratorService.js +7 -0
  96. package/dist/src/service/core/ImagePrinterService.d.ts +21 -0
  97. package/dist/src/service/core/ImagePrinterService.d.ts.map +1 -0
  98. package/dist/src/service/core/ImagePrinterService.js +1 -0
  99. package/dist/src/service/core/KeyValueService.d.ts +40 -0
  100. package/dist/src/service/core/KeyValueService.d.ts.map +1 -0
  101. package/dist/src/service/core/KeyValueService.js +7 -0
  102. package/dist/src/service/core/PluginService.d.ts +56 -0
  103. package/dist/src/service/core/PluginService.d.ts.map +1 -0
  104. package/dist/src/service/core/PluginService.js +6 -0
  105. package/dist/src/service/core/PrettyPrinterService.d.ts +35 -0
  106. package/dist/src/service/core/PrettyPrinterService.d.ts.map +1 -0
  107. package/dist/src/service/core/PrettyPrinterService.js +1 -0
  108. package/dist/src/service/core/PrinterService.d.ts +380 -0
  109. package/dist/src/service/core/PrinterService.d.ts.map +1 -0
  110. package/dist/src/service/core/PrinterService.js +42 -0
  111. package/dist/src/service/core/PrompterService.d.ts +35 -0
  112. package/dist/src/service/core/PrompterService.d.ts.map +1 -0
  113. package/dist/src/service/core/PrompterService.js +10 -0
  114. package/dist/src/service/core/SecretService.d.ts +25 -0
  115. package/dist/src/service/core/SecretService.d.ts.map +1 -0
  116. package/dist/src/service/core/SecretService.js +0 -0
  117. package/dist/src/service/core/ShutdownService.d.ts +24 -0
  118. package/dist/src/service/core/ShutdownService.d.ts.map +1 -0
  119. package/dist/src/service/core/ShutdownService.js +1 -0
  120. package/dist/src/service/core/SyntaxHighlighterService.d.ts +49 -0
  121. package/dist/src/service/core/SyntaxHighlighterService.d.ts.map +1 -0
  122. package/dist/src/service/core/SyntaxHighlighterService.js +1 -0
  123. package/dist/src/service/core/Table.d.ts +18 -0
  124. package/dist/src/service/core/Table.d.ts.map +1 -0
  125. package/dist/src/service/core/Table.js +49 -0
  126. package/dist/src/service/core/TableGeneratorService.d.ts +32 -0
  127. package/dist/src/service/core/TableGeneratorService.d.ts.map +1 -0
  128. package/dist/src/service/core/TableGeneratorService.js +7 -0
  129. package/dist/src/service/core/TreePrinterService.d.ts +9 -0
  130. package/dist/src/service/core/TreePrinterService.d.ts.map +1 -0
  131. package/dist/src/service/core/TreePrinterService.js +1 -0
  132. package/index.ts +138 -0
  133. package/package.json +66 -0
  134. package/src/CLI.ts +17 -0
  135. package/src/CLIConfig.ts +24 -0
  136. package/src/Context.ts +25 -0
  137. package/src/ParseResult.ts +40 -0
  138. package/src/RunResult.ts +158 -0
  139. package/src/argument/Argument.ts +75 -0
  140. package/src/argument/ArgumentValueTypes.ts +80 -0
  141. package/src/argument/ComplexOption.ts +27 -0
  142. package/src/argument/GlobalCommandArgument.ts +17 -0
  143. package/src/argument/Option.ts +32 -0
  144. package/src/argument/Positional.ts +27 -0
  145. package/src/argument/SubCommandArgument.ts +20 -0
  146. package/src/command/Command.ts +28 -0
  147. package/src/command/GlobalCommand.ts +30 -0
  148. package/src/command/GlobalModifierCommand.ts +12 -0
  149. package/src/command/GroupCommand.ts +20 -0
  150. package/src/command/SubCommand.ts +41 -0
  151. package/src/command/UsageExample.ts +21 -0
  152. package/src/plugin/CLIPlugin.ts +36 -0
  153. package/src/plugin/CommandFactory.ts +25 -0
  154. package/src/plugin/ServiceProviderFactory.ts +27 -0
  155. package/src/plugin/createCLIPlugin.ts +47 -0
  156. package/src/registry/CommandRegistry.ts +116 -0
  157. package/src/registry/ServiceProviderRegistry.ts +11 -0
  158. package/src/service/ServiceProvider.ts +52 -0
  159. package/src/service/core/ArgumentPrompterService.ts +8 -0
  160. package/src/service/core/AsciiBannerGeneratorService.ts +69 -0
  161. package/src/service/core/CompletionService.ts +32 -0
  162. package/src/service/core/DataDumpGeneratorService.ts +27 -0
  163. package/src/service/core/ImagePrinterService.ts +25 -0
  164. package/src/service/core/KeyValueService.ts +44 -0
  165. package/src/service/core/PluginService.ts +64 -0
  166. package/src/service/core/PrettyPrinterService.ts +39 -0
  167. package/src/service/core/PrinterService.ts +446 -0
  168. package/src/service/core/PrompterService.ts +42 -0
  169. package/src/service/core/SecretService.ts +27 -0
  170. package/src/service/core/ShutdownService.ts +27 -0
  171. package/src/service/core/SyntaxHighlighterService.ts +54 -0
  172. package/src/service/core/Table.ts +67 -0
  173. package/src/service/core/TableGeneratorService.ts +39 -0
  174. 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
+ [![version](https://img.shields.io/github/v/release/flowscripter/dynamic-cli-framework-api?sort=semver)](https://github.com/flowscripter/dynamic-cli-framework-api/releases)
4
+ [![build](https://img.shields.io/github/actions/workflow/status/flowscripter/dynamic-cli-framework-api/release-bun-library.yml)](https://github.com/flowscripter/dynamic-cli-framework-api/actions/workflows/release-bun-library.yml)
5
+ [![coverage](https://codecov.io/gh/flowscripter/dynamic-cli-framework-api/branch/main/graph/badge.svg?token=EMFT2938ZF)](https://codecov.io/gh/flowscripter/dynamic-cli-framework-api)
6
+ [![docs](https://img.shields.io/badge/docs-API-blue)](https://flowscripter.github.io/dynamic-cli-framework-api/index.html)
7
+ [![license: MIT](https://img.shields.io/github/license/flowscripter/dynamic-cli-framework-api)](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
@@ -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":"AACA,YAAY,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACnG,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,oCAAoC,EAAE,MAAM,iCAAiC,CAAC;AACvF,YAAY,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,YAAY,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChG,YAAY,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1E,YAAY,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/E,YAAY,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7E,YAAY,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzE,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7E,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGrF,YAAY,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpF,YAAY,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAGpG,OAAO,EAAE,iCAAiC,EAAE,MAAM,mDAAmD,CAAC;AACtG,YAAY,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChH,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mDAAmD,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,YAAY,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxF,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,YAAY,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEhG,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,YAAY,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExF,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC/F,YAAY,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1G,YAAY,EAAE,WAAW,EAAE,MAAM,gDAAgD,CAAC;AAElF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,YAAY,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElG,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,YAAY,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhG,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,YAAY,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9F,YAAY,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,YAAY,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,YAAY,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1G,OAAO,EACL,KAAK,cAAc,EACnB,UAAU,EACV,KAAK,sBAAsB,GAC5B,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,YAAY,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,KAAK,cAAc,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,YAAY,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EACL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,UAAU,GACX,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,YAAY,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxG,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3D,YAAY,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/D,YAAY,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnD,YAAY,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,qDAAqD,EAAE,MAAM,gCAAgC,CAAC;AACvG,YAAY,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,8DAA8D,EAAE,MAAM,wCAAwC,CAAC;AACxH,YAAY,EACV,MAAM,EACN,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,WAAW,GACZ,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,OAAO,IAAI,SAAS,EACpB,iCAAiC,EACjC,yCAAyC,GAC1C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,YAAY,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qCAAqC,CAAC"}
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"}
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