zod-args-parser 1.2.7 → 1.2.8

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 (238) hide show
  1. package/README.md +13 -13
  2. package/lib/commonjs/autocomplete-scripts/{bash-autocomplete-script.js → bash-autocomplete-script.cjs} +2 -2
  3. package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.cjs.map +1 -0
  4. package/lib/commonjs/autocomplete-scripts/{powershell-autocomplete-script.js → powershell-autocomplete-script.cjs} +3 -3
  5. package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.cjs.map +1 -0
  6. package/lib/commonjs/autocomplete-scripts/{zsh-autocomplete-script.js → zsh-autocomplete-script.cjs} +4 -4
  7. package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.cjs.map +1 -0
  8. package/lib/commonjs/help-message/format-arguments.cjs +1 -0
  9. package/lib/commonjs/help-message/format-arguments.cjs.map +1 -0
  10. package/lib/commonjs/help-message/format-cli.cjs +1 -0
  11. package/lib/commonjs/help-message/format-cli.cjs.map +1 -0
  12. package/lib/commonjs/help-message/format-options.cjs +1 -0
  13. package/lib/commonjs/help-message/format-options.cjs.map +1 -0
  14. package/lib/commonjs/help-message/format-subcommands.cjs +1 -0
  15. package/lib/commonjs/help-message/format-subcommands.cjs.map +1 -0
  16. package/lib/commonjs/help-message/styles.cjs +1 -0
  17. package/lib/commonjs/help-message/styles.cjs.map +1 -0
  18. package/lib/commonjs/index.cjs +1 -0
  19. package/lib/commonjs/index.cjs.map +1 -0
  20. package/lib/commonjs/markdown/generate-markdown.cjs +1 -0
  21. package/lib/commonjs/markdown/generate-markdown.cjs.map +1 -0
  22. package/lib/commonjs/metadata/get-arguments-metadata.cjs +1 -0
  23. package/lib/commonjs/metadata/get-arguments-metadata.cjs.map +1 -0
  24. package/lib/commonjs/metadata/get-cli-metadata.cjs +1 -0
  25. package/lib/commonjs/metadata/{get-cli-metadata.js.map → get-cli-metadata.cjs.map} +1 -1
  26. package/lib/commonjs/metadata/get-options-metadata.cjs +1 -0
  27. package/lib/commonjs/metadata/get-options-metadata.cjs.map +1 -0
  28. package/lib/commonjs/metadata/get-subcommands-metadata.cjs +1 -0
  29. package/lib/commonjs/metadata/get-subcommands-metadata.cjs.map +1 -0
  30. package/lib/commonjs/parser/parse/parse.cjs +1 -0
  31. package/lib/commonjs/parser/parse/parse.cjs.map +1 -0
  32. package/lib/commonjs/parser/parse/parser-helpers.cjs +1 -0
  33. package/lib/commonjs/parser/parse/parser-helpers.cjs.map +1 -0
  34. package/lib/commonjs/parser/safe-parse.cjs +1 -0
  35. package/lib/commonjs/parser/safe-parse.cjs.map +1 -0
  36. package/lib/commonjs/parser/unsafe-parse.cjs +1 -0
  37. package/lib/commonjs/parser/unsafe-parse.cjs.map +1 -0
  38. package/lib/commonjs/parser/validate/validate-type.cjs.map +1 -0
  39. package/lib/commonjs/parser/validate/validate.cjs +1 -0
  40. package/lib/commonjs/parser/validate/validate.cjs.map +1 -0
  41. package/lib/commonjs/utilities.cjs +1 -0
  42. package/lib/commonjs/utilities.cjs.map +1 -0
  43. package/lib/commonjs/zod-utilities.cjs +1 -0
  44. package/lib/commonjs/zod-utilities.cjs.map +1 -0
  45. package/lib/module/autocomplete-scripts/{bash-autocomplete-script.js → bash-autocomplete-script.mjs} +2 -2
  46. package/lib/module/autocomplete-scripts/bash-autocomplete-script.mjs.map +1 -0
  47. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs +31 -0
  48. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs.map +1 -0
  49. package/lib/module/autocomplete-scripts/{zsh-autocomplete-script.js → zsh-autocomplete-script.mjs} +4 -4
  50. package/lib/module/autocomplete-scripts/zsh-autocomplete-script.mjs.map +1 -0
  51. package/lib/module/help-message/format-arguments.mjs +1 -0
  52. package/lib/module/help-message/format-arguments.mjs.map +1 -0
  53. package/lib/module/help-message/format-cli.mjs +1 -0
  54. package/lib/module/help-message/format-cli.mjs.map +1 -0
  55. package/lib/module/help-message/format-options.mjs +1 -0
  56. package/lib/module/help-message/format-options.mjs.map +1 -0
  57. package/lib/module/help-message/format-subcommands.mjs +1 -0
  58. package/lib/module/help-message/format-subcommands.mjs.map +1 -0
  59. package/lib/module/help-message/styles.mjs +1 -0
  60. package/lib/module/help-message/styles.mjs.map +1 -0
  61. package/lib/module/index.mjs +1 -0
  62. package/lib/module/index.mjs.map +1 -0
  63. package/lib/module/markdown/generate-markdown.mjs +1 -0
  64. package/lib/module/markdown/generate-markdown.mjs.map +1 -0
  65. package/lib/module/metadata/get-arguments-metadata.mjs +1 -0
  66. package/lib/module/metadata/get-arguments-metadata.mjs.map +1 -0
  67. package/lib/module/metadata/get-cli-metadata.mjs +1 -0
  68. package/lib/module/metadata/{get-cli-metadata.js.map → get-cli-metadata.mjs.map} +1 -1
  69. package/lib/module/metadata/get-options-metadata.mjs +1 -0
  70. package/lib/module/metadata/get-options-metadata.mjs.map +1 -0
  71. package/lib/module/metadata/get-subcommands-metadata.mjs +1 -0
  72. package/lib/module/metadata/get-subcommands-metadata.mjs.map +1 -0
  73. package/lib/module/parser/parse/parse.mjs +1 -0
  74. package/lib/module/parser/parse/parse.mjs.map +1 -0
  75. package/lib/module/parser/parse/parser-helpers.mjs +1 -0
  76. package/lib/module/parser/parse/parser-helpers.mjs.map +1 -0
  77. package/lib/module/parser/safe-parse.mjs +1 -0
  78. package/lib/module/parser/safe-parse.mjs.map +1 -0
  79. package/lib/module/parser/unsafe-parse.mjs +1 -0
  80. package/lib/module/parser/unsafe-parse.mjs.map +1 -0
  81. package/lib/module/parser/validate/validate-type.mjs.map +1 -0
  82. package/lib/module/parser/validate/validate.mjs +1 -0
  83. package/lib/module/parser/validate/validate.mjs.map +1 -0
  84. package/lib/module/utilities.mjs +1 -0
  85. package/lib/module/utilities.mjs.map +1 -0
  86. package/lib/module/zod-utilities.mjs +1 -0
  87. package/lib/module/zod-utilities.mjs.map +1 -0
  88. package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts +1 -1
  89. package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts.map +1 -1
  90. package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts +1 -1
  91. package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts.map +1 -1
  92. package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts +1 -1
  93. package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts.map +1 -1
  94. package/lib/typescript/help-message/format-arguments.d.ts +2 -2
  95. package/lib/typescript/help-message/format-arguments.d.ts.map +1 -1
  96. package/lib/typescript/help-message/format-cli.d.ts +5 -5
  97. package/lib/typescript/help-message/format-cli.d.ts.map +1 -1
  98. package/lib/typescript/help-message/format-options.d.ts +2 -2
  99. package/lib/typescript/help-message/format-options.d.ts.map +1 -1
  100. package/lib/typescript/help-message/format-subcommands.d.ts +2 -2
  101. package/lib/typescript/help-message/format-subcommands.d.ts.map +1 -1
  102. package/lib/typescript/help-message/styles.d.ts +14 -13
  103. package/lib/typescript/help-message/styles.d.ts.map +1 -1
  104. package/lib/typescript/index.d.ts +10 -10
  105. package/lib/typescript/index.d.ts.map +1 -1
  106. package/lib/typescript/markdown/generate-markdown.d.ts +1 -1
  107. package/lib/typescript/markdown/generate-markdown.d.ts.map +1 -1
  108. package/lib/typescript/metadata/get-arguments-metadata.d.ts +1 -1
  109. package/lib/typescript/metadata/get-arguments-metadata.d.ts.map +1 -1
  110. package/lib/typescript/metadata/get-options-metadata.d.ts.map +1 -1
  111. package/lib/typescript/metadata/get-subcommands-metadata.d.ts.map +1 -1
  112. package/lib/typescript/parser/parse/parse-types.d.ts +5 -5
  113. package/lib/typescript/parser/parse/parse-types.d.ts.map +1 -1
  114. package/lib/typescript/parser/parse/parse.d.ts +2 -2
  115. package/lib/typescript/parser/parse/parse.d.ts.map +1 -1
  116. package/lib/typescript/parser/parse/parser-helpers.d.ts +7 -7
  117. package/lib/typescript/parser/parse/parser-helpers.d.ts.map +1 -1
  118. package/lib/typescript/parser/safe-parse.d.ts +2 -2
  119. package/lib/typescript/parser/safe-parse.d.ts.map +1 -1
  120. package/lib/typescript/parser/unsafe-parse.d.ts +2 -2
  121. package/lib/typescript/parser/unsafe-parse.d.ts.map +1 -1
  122. package/lib/typescript/parser/validate/validate-type.d.ts +4 -4
  123. package/lib/typescript/parser/validate/validate-type.d.ts.map +1 -1
  124. package/lib/typescript/parser/validate/validate.d.ts +4 -4
  125. package/lib/typescript/parser/validate/validate.d.ts.map +1 -1
  126. package/lib/typescript/types.d.ts +19 -15
  127. package/lib/typescript/types.d.ts.map +1 -1
  128. package/lib/typescript/{utils.d.ts → utilities.d.ts} +9 -9
  129. package/lib/typescript/utilities.d.ts.map +1 -0
  130. package/lib/typescript/{zod-utils.d.ts → zod-utilities.d.ts} +5 -4
  131. package/lib/typescript/zod-utilities.d.ts.map +1 -0
  132. package/package.json +17 -18
  133. package/src/autocomplete-scripts/bash-autocomplete-script.ts +10 -10
  134. package/src/autocomplete-scripts/powershell-autocomplete-script.ts +17 -15
  135. package/src/autocomplete-scripts/zsh-autocomplete-script.ts +8 -5
  136. package/src/help-message/format-arguments.ts +20 -13
  137. package/src/help-message/format-cli.ts +65 -45
  138. package/src/help-message/format-options.ts +19 -12
  139. package/src/help-message/format-subcommands.ts +9 -9
  140. package/src/help-message/styles.ts +18 -18
  141. package/src/index.ts +21 -21
  142. package/src/markdown/generate-markdown.ts +55 -55
  143. package/src/metadata/get-arguments-metadata.ts +10 -10
  144. package/src/metadata/get-options-metadata.ts +8 -6
  145. package/src/metadata/get-subcommands-metadata.ts +3 -1
  146. package/src/parser/parse/parse-types.ts +5 -5
  147. package/src/parser/parse/parse.ts +67 -64
  148. package/src/parser/parse/parser-helpers.ts +24 -25
  149. package/src/parser/safe-parse.ts +24 -18
  150. package/src/parser/unsafe-parse.ts +34 -34
  151. package/src/parser/validate/validate-type.ts +4 -4
  152. package/src/parser/validate/validate.ts +17 -17
  153. package/src/types.ts +21 -17
  154. package/src/{utils.ts → utilities.ts} +44 -28
  155. package/src/{zod-utils.ts → zod-utilities.ts} +56 -32
  156. package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.js.map +0 -1
  157. package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.js.map +0 -1
  158. package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.js.map +0 -1
  159. package/lib/commonjs/help-message/format-arguments.js +0 -1
  160. package/lib/commonjs/help-message/format-arguments.js.map +0 -1
  161. package/lib/commonjs/help-message/format-cli.js +0 -1
  162. package/lib/commonjs/help-message/format-cli.js.map +0 -1
  163. package/lib/commonjs/help-message/format-options.js +0 -1
  164. package/lib/commonjs/help-message/format-options.js.map +0 -1
  165. package/lib/commonjs/help-message/format-subcommands.js +0 -1
  166. package/lib/commonjs/help-message/format-subcommands.js.map +0 -1
  167. package/lib/commonjs/help-message/styles.js +0 -1
  168. package/lib/commonjs/help-message/styles.js.map +0 -1
  169. package/lib/commonjs/index.js +0 -1
  170. package/lib/commonjs/index.js.map +0 -1
  171. package/lib/commonjs/markdown/generate-markdown.js +0 -1
  172. package/lib/commonjs/markdown/generate-markdown.js.map +0 -1
  173. package/lib/commonjs/metadata/get-arguments-metadata.js +0 -1
  174. package/lib/commonjs/metadata/get-arguments-metadata.js.map +0 -1
  175. package/lib/commonjs/metadata/get-cli-metadata.js +0 -1
  176. package/lib/commonjs/metadata/get-options-metadata.js +0 -1
  177. package/lib/commonjs/metadata/get-options-metadata.js.map +0 -1
  178. package/lib/commonjs/metadata/get-subcommands-metadata.js +0 -1
  179. package/lib/commonjs/metadata/get-subcommands-metadata.js.map +0 -1
  180. package/lib/commonjs/parser/parse/parse.js +0 -1
  181. package/lib/commonjs/parser/parse/parse.js.map +0 -1
  182. package/lib/commonjs/parser/parse/parser-helpers.js +0 -1
  183. package/lib/commonjs/parser/parse/parser-helpers.js.map +0 -1
  184. package/lib/commonjs/parser/safe-parse.js +0 -1
  185. package/lib/commonjs/parser/safe-parse.js.map +0 -1
  186. package/lib/commonjs/parser/unsafe-parse.js +0 -1
  187. package/lib/commonjs/parser/unsafe-parse.js.map +0 -1
  188. package/lib/commonjs/parser/validate/validate-type.js.map +0 -1
  189. package/lib/commonjs/parser/validate/validate.js +0 -1
  190. package/lib/commonjs/parser/validate/validate.js.map +0 -1
  191. package/lib/commonjs/utils.js +0 -1
  192. package/lib/commonjs/utils.js.map +0 -1
  193. package/lib/commonjs/zod-utils.js +0 -1
  194. package/lib/commonjs/zod-utils.js.map +0 -1
  195. package/lib/module/autocomplete-scripts/bash-autocomplete-script.js.map +0 -1
  196. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.js +0 -31
  197. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.js.map +0 -1
  198. package/lib/module/autocomplete-scripts/zsh-autocomplete-script.js.map +0 -1
  199. package/lib/module/help-message/format-arguments.js +0 -1
  200. package/lib/module/help-message/format-arguments.js.map +0 -1
  201. package/lib/module/help-message/format-cli.js +0 -1
  202. package/lib/module/help-message/format-cli.js.map +0 -1
  203. package/lib/module/help-message/format-options.js +0 -1
  204. package/lib/module/help-message/format-options.js.map +0 -1
  205. package/lib/module/help-message/format-subcommands.js +0 -1
  206. package/lib/module/help-message/format-subcommands.js.map +0 -1
  207. package/lib/module/help-message/styles.js +0 -1
  208. package/lib/module/help-message/styles.js.map +0 -1
  209. package/lib/module/index.js +0 -1
  210. package/lib/module/index.js.map +0 -1
  211. package/lib/module/markdown/generate-markdown.js +0 -1
  212. package/lib/module/markdown/generate-markdown.js.map +0 -1
  213. package/lib/module/metadata/get-arguments-metadata.js +0 -1
  214. package/lib/module/metadata/get-arguments-metadata.js.map +0 -1
  215. package/lib/module/metadata/get-cli-metadata.js +0 -1
  216. package/lib/module/metadata/get-options-metadata.js +0 -1
  217. package/lib/module/metadata/get-options-metadata.js.map +0 -1
  218. package/lib/module/metadata/get-subcommands-metadata.js +0 -1
  219. package/lib/module/metadata/get-subcommands-metadata.js.map +0 -1
  220. package/lib/module/parser/parse/parse.js +0 -1
  221. package/lib/module/parser/parse/parse.js.map +0 -1
  222. package/lib/module/parser/parse/parser-helpers.js +0 -1
  223. package/lib/module/parser/parse/parser-helpers.js.map +0 -1
  224. package/lib/module/parser/safe-parse.js +0 -1
  225. package/lib/module/parser/safe-parse.js.map +0 -1
  226. package/lib/module/parser/unsafe-parse.js +0 -1
  227. package/lib/module/parser/unsafe-parse.js.map +0 -1
  228. package/lib/module/parser/validate/validate-type.js.map +0 -1
  229. package/lib/module/parser/validate/validate.js +0 -1
  230. package/lib/module/parser/validate/validate.js.map +0 -1
  231. package/lib/module/utils.js +0 -1
  232. package/lib/module/utils.js.map +0 -1
  233. package/lib/module/zod-utils.js +0 -1
  234. package/lib/module/zod-utils.js.map +0 -1
  235. package/lib/typescript/utils.d.ts.map +0 -1
  236. package/lib/typescript/zod-utils.d.ts.map +0 -1
  237. /package/lib/commonjs/parser/validate/{validate-type.js → validate-type.cjs} +0 -0
  238. /package/lib/module/parser/validate/{validate-type.js → validate-type.mjs} +0 -0
@@ -1,21 +1,24 @@
1
1
  import { getCliMetadata } from "../metadata/get-cli-metadata.js";
2
- import { concat, indent, ln, subcommandPlaceholder } from "../utils.js";
3
- import { formatHelpMsgArguments } from "./format-arguments.js";
4
- import { formatHelpMsgOptions } from "./format-options.js";
5
- import { formatHelpMsgCommands } from "./format-subcommands.js";
6
- import { helpMsgStyles } from "./styles.js";
7
-
8
- import type { Cli, HelpMsgStyle, Subcommand } from "../types.js";
9
-
10
- export function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>): string {
11
- const c = helpMsgStyles.default;
2
+ import { concat, indent, ln, subcommandPlaceholder } from "../utilities.js";
3
+ import { formatHelpMessageArguments } from "./format-arguments.js";
4
+ import { formatHelpMessageOptions } from "./format-options.js";
5
+ import { formatHelpMessageCommands } from "./format-subcommands.js";
6
+ import { helpMessageStyles } from "./styles.js";
7
+
8
+ import type { Cli, HelpMessageStyle, Subcommand } from "../types.js";
9
+
10
+ export function formatCliHelpMessage(
11
+ parameters: readonly [Cli, ...Subcommand[]],
12
+ style?: Partial<HelpMessageStyle>,
13
+ ): string {
14
+ const c = helpMessageStyles.default;
12
15
  if (style) Object.assign(c, style);
13
16
 
14
- const metadata = getCliMetadata(params);
17
+ const metadata = getCliMetadata(parameters);
15
18
 
16
19
  const formatTitle = (title: string) => c.title(` ${title.toUpperCase()}`);
17
20
 
18
- let msg = "";
21
+ let message = "";
19
22
 
20
23
  // CLI usage
21
24
  const usage =
@@ -23,18 +26,18 @@ export function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?
23
26
  concat(
24
27
  c.punctuation("$"),
25
28
  c.description(metadata.name),
26
- metadata.subcommands.length ? c.command("[command]") : "",
27
- metadata.options.length ? c.option("[options]") : "",
28
- metadata.arguments.length ? c.argument("<arguments>") : "",
29
+ metadata.subcommands.length > 0 ? c.command("[command]") : "",
30
+ metadata.options.length > 0 ? c.option("[options]") : "",
31
+ metadata.arguments.length > 0 ? c.argument("<arguments>") : "",
29
32
  metadata.allowPositional ? c.argument("<positionals>") : "",
30
33
  );
31
- msg += formatTitle("Usage") + ln(1);
32
- msg += indent(2) + usage + ln(2);
34
+ message += formatTitle("Usage") + ln(1);
35
+ message += indent(2) + usage + ln(2);
33
36
 
34
37
  // CLI description
35
38
  if (metadata.description) {
36
- msg += formatTitle("Description") + ln(1);
37
- msg += indent(2) + c.description(metadata.description).replace(/\n+/g, "\n" + indent(2)) + ln(2);
39
+ message += formatTitle("Description") + ln(1);
40
+ message += indent(2) + c.description(metadata.description).replace(/\n+/g, "\n" + indent(2)) + ln(2);
38
41
  }
39
42
 
40
43
  let longest = 0;
@@ -42,11 +45,14 @@ export function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?
42
45
  // Prepare CLI options
43
46
  const optionsMetadata = metadata.options;
44
47
 
45
- const longestOptionTitle = optionsMetadata.reduce((acc, metadata) => {
46
- const names = metadata.aliasesAsArgs.concat([metadata.nameAsArg]).join(", ");
48
+ let longestOptionTitle = 0;
49
+ for (const metadata of optionsMetadata) {
50
+ const names = [...metadata.aliasesAsArgs, metadata.nameAsArg].join(", ");
47
51
  const optLength = names.length + metadata.placeholder.length;
48
- return optLength > acc ? optLength : acc;
49
- }, 0);
52
+ if (optLength > longestOptionTitle) {
53
+ longestOptionTitle = optLength;
54
+ }
55
+ }
50
56
 
51
57
  if (longestOptionTitle > longest) {
52
58
  longest = longestOptionTitle;
@@ -55,46 +61,60 @@ export function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?
55
61
  // Prepare CLI commands
56
62
  const subcommandsMetadata = metadata.subcommands;
57
63
 
58
- const longestSubcommandTitle = subcommandsMetadata.reduce((acc, metadata) => {
59
- const names = metadata.aliases.concat([metadata.name]).join(", ");
64
+ let longestSubcommandTitle = 0;
65
+ for (const metadata of subcommandsMetadata) {
66
+ const names = [...metadata.aliases, metadata.name].join(", ");
60
67
  const placeholder = subcommandPlaceholder(metadata);
61
68
  const optLength = names.length + placeholder.length;
62
- return optLength > acc ? optLength : acc;
63
- }, 0);
69
+ if (optLength > longestSubcommandTitle) {
70
+ longestSubcommandTitle = optLength;
71
+ }
72
+ }
64
73
 
65
74
  if (longestSubcommandTitle > longest) {
66
75
  longest = longestSubcommandTitle;
67
76
  }
68
77
 
69
78
  // Prepare CLI arguments
70
- const argsMetadata = metadata.arguments;
71
- const longestArgTitle = argsMetadata.reduce((acc, arg) => (arg.name.length > acc ? arg.name.length : acc), 0);
72
- if (longestArgTitle > longest) {
73
- longest = longestArgTitle;
79
+ const argumentsMetadata = metadata.arguments;
80
+
81
+ let longestArgumentTitle = 0;
82
+ for (const argument of argumentsMetadata) {
83
+ if (argument.name.length > longestArgumentTitle) {
84
+ longestArgumentTitle = argument.name.length;
85
+ }
86
+ }
87
+
88
+ if (longestArgumentTitle > longest) {
89
+ longest = longestArgumentTitle;
74
90
  }
75
91
 
76
92
  // CLI options
77
- msg += formatHelpMsgOptions(optionsMetadata, c, longest);
93
+ message += formatHelpMessageOptions(optionsMetadata, c, longest);
78
94
 
79
95
  // CLI commands
80
- msg += formatHelpMsgCommands(subcommandsMetadata, c, longest);
96
+ message += formatHelpMessageCommands(subcommandsMetadata, c, longest);
81
97
 
82
98
  // CLI arguments
83
- msg += formatHelpMsgArguments(argsMetadata, c, longest);
99
+ message += formatHelpMessageArguments(argumentsMetadata, c, longest);
84
100
 
85
101
  // CLI example
86
102
  if (metadata.example) {
87
- msg += formatTitle("Example");
88
- msg += ln(1);
103
+ message += formatTitle("Example");
104
+ message += ln(1);
89
105
  const normalizeExample = metadata.example.replace(/\n+/g, "\n" + indent(3));
90
- msg += concat(indent(2), c.example(normalizeExample), ln(2));
106
+ message += concat(indent(2), c.example(normalizeExample), ln(2));
91
107
  }
92
108
 
93
- return msg;
109
+ return message;
94
110
  }
95
111
 
96
- export function formatSubcommandHelpMsg(subcommand: Subcommand, printStyle?: Partial<HelpMsgStyle>, cliName = "") {
97
- const c = helpMsgStyles.default;
112
+ export function formatSubcommandHelpMessage(
113
+ subcommand: Subcommand,
114
+ printStyle?: Partial<HelpMessageStyle>,
115
+ cliName = "",
116
+ ) {
117
+ const c = helpMessageStyles.default;
98
118
  if (printStyle) Object.assign(c, printStyle);
99
119
 
100
120
  const usage =
@@ -109,13 +129,13 @@ export function formatSubcommandHelpMsg(subcommand: Subcommand, printStyle?: Par
109
129
 
110
130
  const asCli: Cli = { cliName, usage, ...subcommand };
111
131
 
112
- return formatCliHelpMsg([asCli], c);
132
+ return formatCliHelpMessage([asCli], c);
113
133
  }
114
134
 
115
- export function printCliHelp(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>) {
116
- console.log(formatCliHelpMsg(params, style));
135
+ export function printCliHelp(parameters: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMessageStyle>) {
136
+ console.log(formatCliHelpMessage(parameters, style));
117
137
  }
118
138
 
119
- export function printSubcommandHelp(subcommand: Subcommand, style?: Partial<HelpMsgStyle>, cliName = "") {
120
- console.log(formatSubcommandHelpMsg(subcommand, style, cliName));
139
+ export function printSubcommandHelp(subcommand: Subcommand, style?: Partial<HelpMessageStyle>, cliName = "") {
140
+ console.log(formatSubcommandHelpMessage(subcommand, style, cliName));
121
141
  }
@@ -1,27 +1,34 @@
1
- import { concat, indent, insertAtEndOfFirstLine, ln } from "../utils.js";
1
+ import { concat, indent, insertAtEndOfFirstLine, ln } from "../utilities.js";
2
2
 
3
3
  import type { OptionMetadata } from "../metadata/metadata-types.js";
4
- import type { HelpMsgStyle } from "../types.js";
4
+ import type { HelpMessageStyle } from "../types.js";
5
5
 
6
- export function formatHelpMsgOptions(optionsMetadata: OptionMetadata[], c: HelpMsgStyle, longest: number): string {
7
- if (!optionsMetadata.length) return "";
6
+ export function formatHelpMessageOptions(
7
+ optionsMetadata: OptionMetadata[],
8
+ c: HelpMessageStyle,
9
+ longest: number,
10
+ ): string {
11
+ if (optionsMetadata.length === 0) return "";
8
12
 
9
- let msg = c.title(" OPTIONS") + ln(1);
13
+ let message = c.title(" OPTIONS") + ln(1);
10
14
 
11
15
  for (const metadata of optionsMetadata) {
12
16
  const names = metadata.aliasesAsArgs.concat([metadata.nameAsArg]);
13
17
  const normalizeDesc = metadata.description.replace(/\n+/g, "\n" + indent(longest + 6) + c.punctuation("└"));
14
- const defaultStr =
15
- typeof metadata.defaultValue !== "undefined" ? `(default: ${metadata.defaultValueAsString})` : "";
18
+ const defaultString = metadata.defaultValue === undefined ? "" : `(default: ${metadata.defaultValueAsString})`;
16
19
 
17
20
  const optLength = names.join(", ").length + metadata.placeholder.length;
18
21
  const spacing = longest + 1 - optLength;
19
22
 
20
23
  const coloredNames = names.map(name => c.option(name)).join(c.punctuation(", "));
21
24
 
22
- const defaultOrOptional = defaultStr ? c.default(defaultStr) : metadata.optional ? c.optional("(optional)") : "";
25
+ const defaultOrOptional = defaultString
26
+ ? c.default(defaultString)
27
+ : metadata.optional
28
+ ? c.optional("(optional)")
29
+ : "";
23
30
 
24
- msg += concat(
31
+ message += concat(
25
32
  indent(2) + coloredNames,
26
33
  c.placeholder(metadata.placeholder),
27
34
  indent(spacing),
@@ -31,14 +38,14 @@ export function formatHelpMsgOptions(optionsMetadata: OptionMetadata[], c: HelpM
31
38
 
32
39
  if (metadata.example) {
33
40
  const normalizeExample = metadata.example.replace(/\n+/g, "\n" + indent(longest + 16));
34
- msg += concat(
41
+ message += concat(
35
42
  indent(longest + 6) + c.punctuation("└") + c.exampleTitle("Example:"),
36
43
  c.example(normalizeExample) + ln(1),
37
44
  );
38
45
  }
39
46
  }
40
47
 
41
- msg += ln(1);
48
+ message += ln(1);
42
49
 
43
- return msg;
50
+ return message;
44
51
  }
@@ -1,16 +1,16 @@
1
- import { concat, indent, ln, subcommandPlaceholder } from "../utils.js";
1
+ import { concat, indent, ln, subcommandPlaceholder } from "../utilities.js";
2
2
 
3
3
  import type { SubcommandMetadata } from "../metadata/metadata-types.js";
4
- import type { HelpMsgStyle } from "../types.js";
4
+ import type { HelpMessageStyle } from "../types.js";
5
5
 
6
- export function formatHelpMsgCommands(
6
+ export function formatHelpMessageCommands(
7
7
  subcommandsMetadata: SubcommandMetadata[],
8
- c: HelpMsgStyle,
8
+ c: HelpMessageStyle,
9
9
  longest: number,
10
10
  ): string {
11
- if (!subcommandsMetadata.length) return "";
11
+ if (subcommandsMetadata.length === 0) return "";
12
12
 
13
- let msg = c.title(" COMMANDS") + ln(1);
13
+ let message = c.title(" COMMANDS") + ln(1);
14
14
 
15
15
  for (const metadata of subcommandsMetadata) {
16
16
  const names = metadata.aliases.concat([metadata.name]);
@@ -22,7 +22,7 @@ export function formatHelpMsgCommands(
22
22
 
23
23
  const coloredNames = names.map(name => c.command(name)).join(c.punctuation(", "));
24
24
 
25
- msg += concat(
25
+ message += concat(
26
26
  indent(2) + coloredNames,
27
27
  c.placeholder(placeholder),
28
28
  indent(spacing),
@@ -30,7 +30,7 @@ export function formatHelpMsgCommands(
30
30
  );
31
31
  }
32
32
 
33
- msg += ln(1);
33
+ message += ln(1);
34
34
 
35
- return msg;
35
+ return message;
36
36
  }
@@ -1,7 +1,7 @@
1
1
  import chalk from "chalk";
2
- import type { HelpMsgStyle } from "../types.js";
2
+ import type { HelpMessageStyle } from "../types.js";
3
3
 
4
- export const helpMsgStyles = Object.freeze({
4
+ export const helpMessageStyles = Object.freeze({
5
5
  default: {
6
6
  title: chalk.bold.blue,
7
7
  description: chalk.white,
@@ -55,17 +55,17 @@ export const helpMsgStyles = Object.freeze({
55
55
  punctuation: chalk.hex("#4C566A"),
56
56
  },
57
57
  html: {
58
- title: (...str) => `<span style="color: #89dceb; font-weight: bold;">${escapeHTML(str.join(" "))}</span>`,
59
- description: (...str) => `<span style="color: #cdd6e8;">${escapeHTML(str.join(" "))}</span>`,
60
- default: (...str) => `<span style="color: #6c7086; font-style: italic;">${escapeHTML(str.join(" "))}</span>`,
61
- optional: (...str) => `<span style="color: #6c7086; font-style: italic;">${escapeHTML(str.join(" "))}</span>`,
62
- exampleTitle: (...str) => `<span style="color: #f9e2af;">${escapeHTML(str.join(" "))}</span>`,
63
- example: (...str) => `<span style="color: #6c7086;">${escapeHTML(str.join(" "))}</span>`,
64
- command: (...str) => `<span style="color: #f9e2af;">${escapeHTML(str.join(" "))}</span>`,
65
- option: (...str) => `<span style="color: #17b85d;">${escapeHTML(str.join(" "))}</span>`,
66
- argument: (...str) => `<span style="color: #00ff00;">${escapeHTML(str.join(" "))}</span>`,
67
- placeholder: (...str) => `<span style="color: #db9518;">${escapeHTML(str.join(" "))}</span>`,
68
- punctuation: (...str) => `<span style="color: #6c7086;">${escapeHTML(str.join(" "))}</span>`,
58
+ title: (...string) => `<span style="color: #89dceb; font-weight: bold;">${escapeHTML(string.join(" "))}</span>`,
59
+ description: (...string) => `<span style="color: #cdd6e8;">${escapeHTML(string.join(" "))}</span>`,
60
+ default: (...string) => `<span style="color: #6c7086; font-style: italic;">${escapeHTML(string.join(" "))}</span>`,
61
+ optional: (...string) => `<span style="color: #6c7086; font-style: italic;">${escapeHTML(string.join(" "))}</span>`,
62
+ exampleTitle: (...string) => `<span style="color: #f9e2af;">${escapeHTML(string.join(" "))}</span>`,
63
+ example: (...string) => `<span style="color: #6c7086;">${escapeHTML(string.join(" "))}</span>`,
64
+ command: (...string) => `<span style="color: #f9e2af;">${escapeHTML(string.join(" "))}</span>`,
65
+ option: (...string) => `<span style="color: #17b85d;">${escapeHTML(string.join(" "))}</span>`,
66
+ argument: (...string) => `<span style="color: #00ff00;">${escapeHTML(string.join(" "))}</span>`,
67
+ placeholder: (...string) => `<span style="color: #db9518;">${escapeHTML(string.join(" "))}</span>`,
68
+ punctuation: (...string) => `<span style="color: #6c7086;">${escapeHTML(string.join(" "))}</span>`,
69
69
  },
70
70
  gruvboxDark: {
71
71
  title: chalk.bold.hex("#FABD2F"),
@@ -109,12 +109,12 @@ export const helpMsgStyles = Object.freeze({
109
109
  get noColors() {
110
110
  return new Proxy(this.default, {
111
111
  get() {
112
- return (...str: string[]) => str.join(" ");
112
+ return (...string: string[]) => string.join(" ");
113
113
  },
114
- });
114
+ }) as HelpMessageStyle;
115
115
  },
116
- }) satisfies Record<string, HelpMsgStyle>;
116
+ }) satisfies Record<string, HelpMessageStyle>;
117
117
 
118
- function escapeHTML(str: string) {
119
- return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
118
+ function escapeHTML(string: string) {
119
+ return string.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
120
120
  }
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type {
2
- ActionsFn,
2
+ ActionsFunctions,
3
3
  Argument,
4
4
  CheckArgumentsOptional,
5
5
  CheckDuplicatedArguments,
@@ -17,45 +17,45 @@ import type {
17
17
  * - Insures no optional arguments are allowed when `allowPositional` is enabled
18
18
  */
19
19
  type CheckCliSubcommandInput<T extends Cli | Subcommand> =
20
- CheckDuplicatedOptions<T> extends infer Err extends string
21
- ? Err
22
- : CheckDuplicatedArguments<T> extends infer Err extends string
23
- ? Err
24
- : CheckArgumentsOptional<T> extends infer Err extends string
25
- ? Err
20
+ CheckDuplicatedOptions<T> extends infer Error extends string
21
+ ? Error
22
+ : CheckDuplicatedArguments<T> extends infer Error extends string
23
+ ? Error
24
+ : CheckArgumentsOptional<T> extends infer Error extends string
25
+ ? Error
26
26
  : T;
27
27
 
28
28
  export function createCli<const T extends Cli>(input: CheckCliSubcommandInput<T>) {
29
- const setAction = (action: (res: any) => any) => {
29
+ const setAction = (action: (data: any) => any) => {
30
30
  if (typeof input === "string") return;
31
31
  input.action = action;
32
32
  };
33
33
 
34
- const setPreValidationHook = (hook: (ctx: any) => any) => {
34
+ const setPreValidationHook = (hook: (context: any) => any) => {
35
35
  if (typeof input === "string") return;
36
36
  input.preValidation = hook;
37
37
  };
38
38
 
39
- return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFn<T>>;
39
+ return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFunctions<T>>;
40
40
  }
41
41
 
42
42
  export function createSubcommand<const T extends Subcommand>(input: CheckCliSubcommandInput<T>) {
43
- const setAction = (action: (res: any) => any) => {
43
+ const setAction = (action: (data: any) => any) => {
44
44
  if (typeof input === "string") return;
45
45
  input.action = action as T["action"];
46
46
  };
47
47
 
48
- const setPreValidationHook = (hook: (ctx: any) => any) => {
48
+ const setPreValidationHook = (hook: (context: any) => any) => {
49
49
  if (typeof input === "string") return;
50
50
  input.preValidation = hook;
51
51
  };
52
52
 
53
- return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFn<T>>;
53
+ return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFunctions<T>>;
54
54
  }
55
55
 
56
56
  /** - Insures that there are no duplicated options */
57
57
  type CheckOptionsInput<T extends Option[]> =
58
- CheckDuplicatedOptions<{ options: T }> extends infer Err extends string ? Err : T;
58
+ CheckDuplicatedOptions<{ options: T }> extends infer Error extends string ? Error : T;
59
59
 
60
60
  export function createOptions<const T extends [Option, ...Option[]]>(options: CheckOptionsInput<T>) {
61
61
  return options;
@@ -63,24 +63,24 @@ export function createOptions<const T extends [Option, ...Option[]]>(options: Ch
63
63
 
64
64
  /** - Insures that only the last argument is optional */
65
65
  type CheckArgumentsInput<T extends Argument[]> =
66
- CheckArgumentsOptional<{ arguments: T }> extends infer Err extends string ? Err : T;
66
+ CheckArgumentsOptional<{ arguments: T }> extends infer Error extends string ? Error : T;
67
67
 
68
- export function createArguments<const T extends [Argument, ...Argument[]]>(args: CheckArgumentsInput<T>) {
69
- return args;
68
+ export function createArguments<const T extends [Argument, ...Argument[]]>(arguments_: CheckArgumentsInput<T>) {
69
+ return arguments_;
70
70
  }
71
71
 
72
72
  export {
73
- formatCliHelpMsg,
74
- formatSubcommandHelpMsg,
73
+ formatCliHelpMessage as formatCliHelpMsg,
74
+ formatSubcommandHelpMessage as formatSubcommandHelpMsg,
75
75
  printCliHelp,
76
76
  printSubcommandHelp,
77
77
  } from "./help-message/format-cli.js";
78
- export { helpMsgStyles } from "./help-message/styles.js";
78
+ export { helpMessageStyles } from "./help-message/styles.js";
79
79
 
80
80
  export { safeParse, safeParseAsync } from "./parser/safe-parse.js";
81
81
  export { unsafeParse as parse, unsafeParseAsync as parseAsync } from "./parser/unsafe-parse.js";
82
82
 
83
- export { isOptionalSchema, schemaDefaultValue, stringToArray, stringToSet } from "./zod-utils.js";
83
+ export { isOptionalSchema, schemaDefaultValue, stringToArray, stringToSet } from "./zod-utilities.js";
84
84
 
85
85
  export { generateBashAutocompleteScript } from "./autocomplete-scripts/bash-autocomplete-script.js";
86
86
  export { generatePowerShellAutocompleteScript } from "./autocomplete-scripts/powershell-autocomplete-script.js";