zod-args-parser 1.1.0 → 1.2.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 (206) hide show
  1. package/README.md +597 -91
  2. package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.js +1 -1
  3. package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.js.map +1 -1
  4. package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.js +1 -1
  5. package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.js.map +1 -1
  6. package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.js +1 -1
  7. package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.js.map +1 -1
  8. package/lib/commonjs/help-message/format-arguments.js +1 -0
  9. package/lib/commonjs/help-message/format-arguments.js.map +1 -0
  10. package/lib/commonjs/help-message/format-cli.js +1 -0
  11. package/lib/commonjs/help-message/format-cli.js.map +1 -0
  12. package/lib/commonjs/help-message/format-options.js +1 -0
  13. package/lib/commonjs/help-message/format-options.js.map +1 -0
  14. package/lib/commonjs/help-message/format-subcommands.js +1 -0
  15. package/lib/commonjs/help-message/format-subcommands.js.map +1 -0
  16. package/lib/commonjs/help-message/styles.js +1 -0
  17. package/lib/commonjs/help-message/styles.js.map +1 -0
  18. package/lib/commonjs/index.js +1 -1
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/markdown/generate-markdown.js.map +1 -1
  21. package/lib/commonjs/metadata/get-arguments-metadata.js +1 -1
  22. package/lib/commonjs/metadata/get-arguments-metadata.js.map +1 -1
  23. package/lib/commonjs/metadata/get-cli-metadata.js +1 -1
  24. package/lib/commonjs/metadata/get-cli-metadata.js.map +1 -1
  25. package/lib/commonjs/metadata/get-options-metadata.js +1 -1
  26. package/lib/commonjs/metadata/get-options-metadata.js.map +1 -1
  27. package/lib/commonjs/metadata/get-subcommands-metadata.js.map +1 -1
  28. package/lib/commonjs/parser/parse/parse.js +1 -0
  29. package/lib/commonjs/parser/parse/parse.js.map +1 -0
  30. package/lib/commonjs/parser/parse/parser-helpers.js +1 -0
  31. package/lib/commonjs/parser/parse/parser-helpers.js.map +1 -0
  32. package/lib/commonjs/parser/safe-parse.js +1 -1
  33. package/lib/commonjs/parser/safe-parse.js.map +1 -1
  34. package/lib/commonjs/parser/unsafe-parse.js +1 -0
  35. package/lib/commonjs/parser/unsafe-parse.js.map +1 -0
  36. package/lib/commonjs/parser/validate/validate-type.js +1 -0
  37. package/lib/commonjs/parser/validate/validate-type.js.map +1 -0
  38. package/lib/commonjs/parser/validate/validate.js +1 -0
  39. package/lib/commonjs/parser/validate/validate.js.map +1 -0
  40. package/lib/commonjs/utils.js +1 -1
  41. package/lib/commonjs/utils.js.map +1 -1
  42. package/lib/commonjs/zod-utils.js +1 -0
  43. package/lib/commonjs/zod-utils.js.map +1 -0
  44. package/lib/module/autocomplete-scripts/bash-autocomplete-script.js +1 -1
  45. package/lib/module/autocomplete-scripts/bash-autocomplete-script.js.map +1 -1
  46. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.js +1 -1
  47. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.js.map +1 -1
  48. package/lib/module/autocomplete-scripts/zsh-autocomplete-script.js +1 -1
  49. package/lib/module/autocomplete-scripts/zsh-autocomplete-script.js.map +1 -1
  50. package/lib/module/help-message/format-arguments.js +1 -0
  51. package/lib/module/help-message/format-arguments.js.map +1 -0
  52. package/lib/module/help-message/format-cli.js +1 -0
  53. package/lib/module/help-message/format-cli.js.map +1 -0
  54. package/lib/module/help-message/format-options.js +1 -0
  55. package/lib/module/help-message/format-options.js.map +1 -0
  56. package/lib/module/help-message/{print-subcommands.js → format-subcommands.js} +1 -1
  57. package/lib/module/help-message/format-subcommands.js.map +1 -0
  58. package/lib/module/help-message/styles.js +1 -0
  59. package/lib/module/help-message/styles.js.map +1 -0
  60. package/lib/module/index.js +1 -1
  61. package/lib/module/index.js.map +1 -1
  62. package/lib/module/markdown/generate-markdown.js.map +1 -1
  63. package/lib/module/metadata/get-arguments-metadata.js +1 -1
  64. package/lib/module/metadata/get-arguments-metadata.js.map +1 -1
  65. package/lib/module/metadata/get-cli-metadata.js +1 -1
  66. package/lib/module/metadata/get-cli-metadata.js.map +1 -1
  67. package/lib/module/metadata/get-options-metadata.js +1 -1
  68. package/lib/module/metadata/get-options-metadata.js.map +1 -1
  69. package/lib/module/metadata/get-subcommands-metadata.js.map +1 -1
  70. package/lib/module/parser/parse/parse.js +1 -0
  71. package/lib/module/parser/parse/parse.js.map +1 -0
  72. package/lib/module/parser/parse/parser-helpers.js +1 -0
  73. package/lib/module/parser/parse/parser-helpers.js.map +1 -0
  74. package/lib/module/parser/safe-parse.js +1 -1
  75. package/lib/module/parser/safe-parse.js.map +1 -1
  76. package/lib/module/parser/unsafe-parse.js +1 -0
  77. package/lib/module/parser/unsafe-parse.js.map +1 -0
  78. package/lib/module/parser/validate/validate-type.js +1 -0
  79. package/lib/module/parser/validate/validate-type.js.map +1 -0
  80. package/lib/module/parser/validate/validate.js +1 -0
  81. package/lib/module/parser/validate/validate.js.map +1 -0
  82. package/lib/module/utils.js +1 -1
  83. package/lib/module/utils.js.map +1 -1
  84. package/lib/module/zod-utils.js +1 -0
  85. package/lib/module/zod-utils.js.map +1 -0
  86. package/lib/typescript/help-message/format-arguments.d.ts +4 -0
  87. package/lib/typescript/help-message/format-arguments.d.ts.map +1 -0
  88. package/lib/typescript/help-message/format-cli.d.ts +6 -0
  89. package/lib/typescript/help-message/format-cli.d.ts.map +1 -0
  90. package/lib/typescript/help-message/format-options.d.ts +4 -0
  91. package/lib/typescript/help-message/format-options.d.ts.map +1 -0
  92. package/lib/typescript/help-message/format-subcommands.d.ts +4 -0
  93. package/lib/typescript/help-message/format-subcommands.d.ts.map +1 -0
  94. package/lib/typescript/help-message/styles.d.ts +108 -0
  95. package/lib/typescript/help-message/styles.d.ts.map +1 -0
  96. package/lib/typescript/index.d.ts +18 -29
  97. package/lib/typescript/index.d.ts.map +1 -1
  98. package/lib/typescript/markdown/generate-markdown.d.ts.map +1 -1
  99. package/lib/typescript/metadata/get-arguments-metadata.d.ts +2 -1
  100. package/lib/typescript/metadata/get-arguments-metadata.d.ts.map +1 -1
  101. package/lib/typescript/metadata/get-cli-metadata.d.ts +3 -2
  102. package/lib/typescript/metadata/get-cli-metadata.d.ts.map +1 -1
  103. package/lib/typescript/metadata/get-options-metadata.d.ts +2 -1
  104. package/lib/typescript/metadata/get-options-metadata.d.ts.map +1 -1
  105. package/lib/typescript/metadata/get-subcommands-metadata.d.ts +2 -1
  106. package/lib/typescript/metadata/get-subcommands-metadata.d.ts.map +1 -1
  107. package/lib/typescript/metadata/metadata-types.d.ts +80 -0
  108. package/lib/typescript/metadata/metadata-types.d.ts.map +1 -0
  109. package/lib/typescript/parser/parse/parse-types.d.ts +85 -0
  110. package/lib/typescript/parser/parse/parse-types.d.ts.map +1 -0
  111. package/lib/typescript/parser/parse/parse.d.ts +4 -0
  112. package/lib/typescript/parser/parse/parse.d.ts.map +1 -0
  113. package/lib/typescript/parser/parse/parser-helpers.d.ts +40 -0
  114. package/lib/typescript/parser/parse/parser-helpers.d.ts.map +1 -0
  115. package/lib/typescript/parser/safe-parse.d.ts +1 -0
  116. package/lib/typescript/parser/safe-parse.d.ts.map +1 -1
  117. package/lib/typescript/parser/unsafe-parse.d.ts +4 -0
  118. package/lib/typescript/parser/unsafe-parse.d.ts.map +1 -0
  119. package/lib/typescript/parser/validate/validate-type.d.ts +22 -0
  120. package/lib/typescript/parser/validate/validate-type.d.ts.map +1 -0
  121. package/lib/typescript/parser/validate/validate.d.ts +11 -0
  122. package/lib/typescript/parser/validate/validate.d.ts.map +1 -0
  123. package/lib/typescript/types.d.ts +66 -181
  124. package/lib/typescript/types.d.ts.map +1 -1
  125. package/lib/typescript/utils.d.ts +20 -19
  126. package/lib/typescript/utils.d.ts.map +1 -1
  127. package/lib/typescript/zod-utils.d.ts +27 -0
  128. package/lib/typescript/zod-utils.d.ts.map +1 -0
  129. package/package.json +7 -6
  130. package/src/autocomplete-scripts/bash-autocomplete-script.ts +1 -1
  131. package/src/autocomplete-scripts/powershell-autocomplete-script.ts +1 -1
  132. package/src/autocomplete-scripts/zsh-autocomplete-script.ts +1 -1
  133. package/src/help-message/format-arguments.ts +38 -0
  134. package/src/help-message/{print-help-message.ts → format-cli.ts} +43 -48
  135. package/src/help-message/{print-options.ts → format-options.ts} +16 -14
  136. package/src/help-message/format-subcommands.ts +37 -0
  137. package/src/help-message/styles.ts +120 -0
  138. package/src/index.ts +50 -44
  139. package/src/markdown/generate-markdown.ts +2 -1
  140. package/src/metadata/get-arguments-metadata.ts +3 -2
  141. package/src/metadata/get-cli-metadata.ts +4 -4
  142. package/src/metadata/get-options-metadata.ts +4 -3
  143. package/src/metadata/get-subcommands-metadata.ts +2 -1
  144. package/src/metadata/metadata-types.ts +114 -0
  145. package/src/parser/parse/parse-types.ts +89 -0
  146. package/src/parser/parse/parse.ts +227 -0
  147. package/src/parser/parse/parser-helpers.ts +167 -0
  148. package/src/parser/safe-parse.ts +60 -8
  149. package/src/parser/unsafe-parse.ts +98 -0
  150. package/src/parser/validate/validate-type.ts +21 -0
  151. package/src/parser/validate/validate.ts +66 -0
  152. package/src/types.ts +90 -231
  153. package/src/utils.ts +33 -65
  154. package/src/{zodUtils.ts → zod-utils.ts} +65 -17
  155. package/lib/commonjs/help-message/colors.js +0 -1
  156. package/lib/commonjs/help-message/colors.js.map +0 -1
  157. package/lib/commonjs/help-message/print-arguments.js +0 -1
  158. package/lib/commonjs/help-message/print-arguments.js.map +0 -1
  159. package/lib/commonjs/help-message/print-help-message.js +0 -1
  160. package/lib/commonjs/help-message/print-help-message.js.map +0 -1
  161. package/lib/commonjs/help-message/print-options.js +0 -1
  162. package/lib/commonjs/help-message/print-options.js.map +0 -1
  163. package/lib/commonjs/help-message/print-subcommands.js +0 -1
  164. package/lib/commonjs/help-message/print-subcommands.js.map +0 -1
  165. package/lib/commonjs/help-message/utils.js +0 -1
  166. package/lib/commonjs/help-message/utils.js.map +0 -1
  167. package/lib/commonjs/parser/parse.js +0 -1
  168. package/lib/commonjs/parser/parse.js.map +0 -1
  169. package/lib/commonjs/zodUtils.js +0 -1
  170. package/lib/commonjs/zodUtils.js.map +0 -1
  171. package/lib/module/help-message/colors.js +0 -1
  172. package/lib/module/help-message/colors.js.map +0 -1
  173. package/lib/module/help-message/print-arguments.js +0 -1
  174. package/lib/module/help-message/print-arguments.js.map +0 -1
  175. package/lib/module/help-message/print-help-message.js +0 -1
  176. package/lib/module/help-message/print-help-message.js.map +0 -1
  177. package/lib/module/help-message/print-options.js +0 -1
  178. package/lib/module/help-message/print-options.js.map +0 -1
  179. package/lib/module/help-message/print-subcommands.js.map +0 -1
  180. package/lib/module/help-message/utils.js +0 -1
  181. package/lib/module/help-message/utils.js.map +0 -1
  182. package/lib/module/parser/parse.js +0 -1
  183. package/lib/module/parser/parse.js.map +0 -1
  184. package/lib/module/zodUtils.js +0 -1
  185. package/lib/module/zodUtils.js.map +0 -1
  186. package/lib/typescript/help-message/colors.d.ts +0 -17
  187. package/lib/typescript/help-message/colors.d.ts.map +0 -1
  188. package/lib/typescript/help-message/print-arguments.d.ts +0 -4
  189. package/lib/typescript/help-message/print-arguments.d.ts.map +0 -1
  190. package/lib/typescript/help-message/print-help-message.d.ts +0 -4
  191. package/lib/typescript/help-message/print-help-message.d.ts.map +0 -1
  192. package/lib/typescript/help-message/print-options.d.ts +0 -4
  193. package/lib/typescript/help-message/print-options.d.ts.map +0 -1
  194. package/lib/typescript/help-message/print-subcommands.d.ts +0 -4
  195. package/lib/typescript/help-message/print-subcommands.d.ts.map +0 -1
  196. package/lib/typescript/help-message/utils.d.ts +0 -13
  197. package/lib/typescript/help-message/utils.d.ts.map +0 -1
  198. package/lib/typescript/parser/parse.d.ts +0 -3
  199. package/lib/typescript/parser/parse.d.ts.map +0 -1
  200. package/lib/typescript/zodUtils.d.ts +0 -14
  201. package/lib/typescript/zodUtils.d.ts.map +0 -1
  202. package/src/help-message/colors.ts +0 -24
  203. package/src/help-message/print-arguments.ts +0 -35
  204. package/src/help-message/print-subcommands.ts +0 -28
  205. package/src/help-message/utils.ts +0 -31
  206. package/src/parser/parse.ts +0 -272
@@ -1,92 +1,14 @@
1
1
  import type * as Z3 from "zod/v3";
2
2
  import type * as Z4 from "zod/v4/core";
3
+ import type { ParseResult } from "./parser/parse/parse-types.js";
4
+ import type { ValidateResult } from "./parser/validate/validate-type.js";
3
5
  export type SchemaV3 = Z3.ZodTypeAny;
4
6
  export type SchemaV4 = Z4.$ZodType;
5
7
  export type Schema = SchemaV3 | SchemaV4;
6
- type ZodInfer<T extends Schema> = T extends SchemaV4 ? Z4.infer<T> : T extends SchemaV3 ? Z3.infer<T> : never;
7
- export interface CliMetadata {
8
- /** The name of the cli program. */
9
- readonly name: string;
10
- /** - The description of the cli program. Empty string if not provided */
11
- readonly description: string;
12
- /** - The placeholder of the option. Empty string if not provided */
13
- readonly placeholder: string;
14
- /** - The usage of the cli program. Empty string if not provided */
15
- readonly usage: string;
16
- /** - The example of the cli program. Empty string if not provided */
17
- readonly example: string;
18
- /** - Whether the cli program allows positional arguments. */
19
- readonly allowPositional: boolean;
20
- /** - The options of the cli program. Empty array if not provided */
21
- readonly options: OptionMetadata[];
22
- /** - The arguments of the cli program. Empty array if not provided */
23
- readonly arguments: ArgumentMetadata[];
24
- /** - The subcommands of the cli program. Empty array if not provided */
25
- readonly subcommands: SubcommandMetadata[];
26
- }
27
- export interface SubcommandMetadata {
28
- /** The subcommand name. */
29
- readonly name: string;
30
- /** - The aliases of the subcommand. Empty array if not provided */
31
- readonly aliases: string[];
32
- /** - The description of the subcommand. Empty string if not provided */
33
- readonly description: string;
34
- /** - The placeholder of the subcommand. Empty string if not provided */
35
- readonly placeholder: string;
36
- /** - The usage of the subcommand. Empty string if not provided */
37
- readonly usage: string;
38
- /** - The example of the subcommand. Empty string if not provided */
39
- readonly example: string;
40
- /** - Whether the subcommand allows positional arguments. */
41
- readonly allowPositional: boolean;
42
- /** - The options of the subcommand. Empty array if not provided */
43
- readonly options: OptionMetadata[];
44
- /** - The arguments of the subcommand. Empty array if not provided */
45
- readonly arguments: ArgumentMetadata[];
46
- }
47
- export interface OptionMetadata {
48
- /** The option name in camelCase. E.g. `optionName` */
49
- readonly name: string;
50
- /** The option name in kebab-case. E.g. `--option-name` */
51
- readonly nameAsArg: string;
52
- /** - The aliases of the option in camelCase. Empty array if not provided. E.g. `[aliasName, ...]` */
53
- readonly aliases: string[];
54
- /** - The aliases of the option in kebab-case. Empty array if not provided. E.g. `[--alias-name, ...]` */
55
- readonly aliasesAsArgs: string[];
56
- /** - The description of the option. Empty string if not provided */
57
- readonly description: string;
58
- /** - The placeholder of the option. Empty string if not provided */
59
- readonly placeholder: string;
60
- /** - The example of the option. Empty string if not provided */
61
- readonly example: string;
62
- /** - The default value of the option. */
63
- readonly defaultValue: unknown;
64
- /** - The default value of the option as string. */
65
- readonly defaultValueAsString: string;
66
- /** - Whether the option is optional. */
67
- readonly optional: boolean;
68
- /** - The zod type of the option. */
69
- readonly type: Schema;
70
- }
71
- export interface ArgumentMetadata {
72
- /** The argument name. */
73
- readonly name: string;
74
- /** - The description of the argument. Empty string if not provided */
75
- readonly description: string;
76
- /** - The example of the argument. Empty string if not provided */
77
- readonly example: string;
78
- /** - The default value of the argument. */
79
- readonly defaultValue: unknown;
80
- /** - The default value of the argument as string. */
81
- readonly defaultValueAsString: string;
82
- /** - Whether the argument is optional. */
83
- readonly optional: boolean;
84
- /** - The zod type of the argument. */
85
- readonly type: Schema;
86
- }
8
+ export type ZodInfer<T extends Schema> = T extends SchemaV4 ? Z4.infer<T> : T extends SchemaV3 ? Z3.infer<T> : never;
87
9
  export type Subcommand = {
88
10
  /**
89
- * - The subcommand name, use `kebab-case`.
11
+ * - The subcommand name
90
12
  * - Make sure to not duplicate commands and aliases.
91
13
  *
92
14
  * @example
@@ -141,27 +63,36 @@ export type Subcommand = {
141
63
  * const helpCommand = createSubcommand({ name: "help", options: [...] });
142
64
  * helpCommand.setAction(res => console.log(res));
143
65
  */
144
- action?: (results?: any) => void;
66
+ action?: (results?: any) => any;
67
+ /**
68
+ * - The preValidation hook is executed before the action.
69
+ * - To get typescript types use `setPreValidationHook` instead of this.
70
+ *
71
+ * @example
72
+ * const helpCommand = createSubcommand({ name: "help", options: [...] });
73
+ * helpCommand.setPreValidationHook(ctx => console.log(ctx));
74
+ */
75
+ preValidation?: (ctx?: any) => any;
145
76
  };
146
- export type Cli = Prettify<Omit<Subcommand, "name"> & {
77
+ export type Cli = Prettify<Omit<Subcommand, "name" | "aliases" | "placeholder"> & {
147
78
  /** - The name of the CLI program. */
148
79
  cliName: string;
149
80
  }>;
150
81
  export type Option = {
151
82
  /**
152
- * - The name of the option, use `CamelCase`.
153
- * - For example: the syntax for the option `rootPath` is `--root-path`.
83
+ * The name of the option, use a valid **JavaScript** variable name.\
84
+ * **Supports:** `camelCase`, `PascalCase`, `snake_case`, and `SCREAMING_SNAKE_CASE`.\
85
+ * **Examples:**
86
+ *
87
+ * - `I` or `i` ➡️ `-i`
88
+ * - `InputDir`, `inputDir`, or `INPUT_DIR` ➡️ `--input-dir`
89
+ * - `Help`, `help`, or `HELP` ➡️ `--help`
154
90
  */
155
91
  name: string;
156
92
  /**
157
93
  * - The will be used to validate the user input.
158
94
  *
159
- * @example
160
- * type: z.boolean().default(false);
161
- * type: z.coerce.number(); // will be coerced to number by Zod
162
- * type: z.preprocess(parseStringToArrFn, z.array(z.coerce.number())); // array of numbers
163
- *
164
- * @see https://zod.dev/?id=types
95
+ * @see https://zod.dev/api
165
96
  */
166
97
  type: Schema;
167
98
  /**
@@ -189,12 +120,7 @@ export type Argument = {
189
120
  /**
190
121
  * - The will be used to validate the user input.
191
122
  *
192
- * @example
193
- * type: z.boolean();
194
- * type: z.coerce.number(); // will be coerced to number by Zod
195
- * type: z.preprocess(ParseStringToArrFn, z.array(z.coerce.number())); // array of numbers
196
- *
197
- * @see https://zod.dev/?id=types
123
+ * @see https://zod.dev/api
198
124
  */
199
125
  type: Schema;
200
126
  /**
@@ -209,50 +135,8 @@ export type Argument = {
209
135
  example?: string;
210
136
  };
211
137
  export type ColorFnType = (...text: unknown[]) => string;
212
- export type PrintHelpOpt = {
213
- /**
214
- * - **Optional** `boolean`
215
- * - Whether to print colors or not.
216
- * - Default: `true`
217
- */
218
- colors?: boolean;
219
- /**
220
- * - **Optional** `object`
221
- * - The colors to use for the help message.
222
- */
223
- customColors?: {
224
- title?: ColorFnType;
225
- description?: ColorFnType;
226
- default?: ColorFnType;
227
- optional?: ColorFnType;
228
- exampleTitle?: ColorFnType;
229
- example?: ColorFnType;
230
- command?: ColorFnType;
231
- option?: ColorFnType;
232
- argument?: ColorFnType;
233
- placeholder?: ColorFnType;
234
- punctuation?: ColorFnType;
235
- };
236
- };
237
- export type _Info = {
238
- /**
239
- * - The raw argument as it was passed in
240
- * - For options that have a default value and are not passed in, the raw argument will be `undefined`
241
- */
242
- rawArg?: string;
243
- /**
244
- * - The raw value of the argument as it was passed in
245
- * - It will be empty string for `boolean` options. E.g. `--help` or `-h`
246
- * - For options that have a default value and are not passed in, the raw value will be `undefined`
247
- */
248
- rawValue?: string;
249
- /**
250
- * - The source value of the argument:
251
- * - `cli`: The argument was passed in by the user
252
- * - `default`: The argument was not passed in and has a default value
253
- */
254
- source: "cli" | "default";
255
- };
138
+ /** - The colors to use for the help message. */
139
+ export type HelpMsgStyle = Record<"title" | "description" | "default" | "optional" | "exampleTitle" | "example" | "command" | "option" | "argument" | "placeholder" | "punctuation", ColorFnType>;
256
140
  /**
257
141
  * - Infer the options type from a subcommand.
258
142
  *
@@ -284,55 +168,29 @@ export type Prettify<T> = {
284
168
  /** Allow string type for literal union and get auto completion */
285
169
  export type LiteralUnion<T extends string> = T | (string & {});
286
170
  /** Extract the undefined properties from an object */
287
- type UndefinedProperties<T> = {
171
+ export type UndefinedProperties<T> = {
288
172
  [P in keyof T]-?: undefined extends T[P] ? P : never;
289
173
  }[keyof T];
290
174
  /** Make undefined properties optional? */
291
- type ToOptional<T> = Prettify<Partial<Pick<T, UndefinedProperties<T>>> & Pick<T, Exclude<keyof T, UndefinedProperties<T>>>>;
292
- export type OptionsArr2RecordType<T extends Option[] | undefined> = T extends Option[] ? ToOptional<{
293
- [K in T[number]["name"]]: ZodInfer<Extract<T[number], {
294
- name: K;
295
- }>["type"]>;
296
- }> : object;
297
- export type ArgumentsArr2ArrType<T extends Argument[] | undefined> = T extends Argument[] ? {
298
- arguments: {
299
- [K in keyof T]: T[K] extends {
300
- type: Schema;
301
- } ? ZodInfer<T[K]["type"]> : never;
302
- };
303
- } : object;
304
- export type Positional<S extends Partial<Subcommand>> = S["allowPositional"] extends true ? {
305
- positional: string[];
306
- } : object;
307
- export type Info<T extends Option[] | undefined> = T extends Option[] ? {
308
- _info: ToOptional<{
309
- [K in T[number]["name"]]: Extract<T[number], {
310
- name: K;
311
- }> extends infer U extends Option ? undefined extends ZodInfer<U["type"]> ? undefined | Prettify<_Info & U> : Prettify<_Info & U> : never;
312
- }>;
313
- } : object;
175
+ export type ToOptional<T> = Prettify<Partial<Pick<T, UndefinedProperties<T>>> & Pick<T, Exclude<keyof T, UndefinedProperties<T>>>>;
314
176
  export type NoSubcommand = {
315
177
  name: undefined;
316
178
  };
317
- export type ParseResult<S extends Partial<Subcommand>[]> = {
318
- [K in keyof S]: Prettify<{
319
- subcommand: S[K]["name"];
320
- } & Positional<S[K]> & Info<S[K]["options"]> & OptionsArr2RecordType<S[K]["options"]> & ArgumentsArr2ArrType<S[K]["arguments"]>>;
321
- }[number];
322
179
  export type PrintMethods<N extends Subcommand["name"]> = {
323
- printCliHelp: (options?: PrintHelpOpt) => void;
324
- printSubcommandHelp: (subcommand: LiteralUnion<NonNullable<N>>, options?: PrintHelpOpt) => void;
180
+ printCliHelp: (style?: Partial<HelpMsgStyle>) => void;
181
+ printSubcommandHelp: (subcommand: LiteralUnion<NonNullable<N>>, style?: Partial<HelpMsgStyle>) => void;
325
182
  };
326
- export type UnSafeParseResult<S extends Partial<Subcommand>[]> = CheckDuplicatedSubcommands<S> extends infer E extends string ? E : Prettify<ParseResult<S> & PrintMethods<NonNullable<S[number]["name"]>>>;
183
+ export type UnsafeParseResult<S extends Partial<Subcommand>[]> = CheckDuplicatedSubcommands<S> extends infer E extends string ? E : Prettify<ValidateResult<S> & PrintMethods<NonNullable<S[number]["name"]>>>;
327
184
  export type SafeParseResult<S extends Partial<Subcommand>[]> = CheckDuplicatedSubcommands<S> extends infer E extends string ? E : Prettify<({
328
185
  success: false;
329
186
  error: Error;
330
187
  } | {
331
188
  success: true;
332
- data: ParseResult<S>;
189
+ data: ValidateResult<S>;
333
190
  }) & PrintMethods<NonNullable<S[number]["name"]>>>;
334
- export type ActionFn<T extends Subcommand | Cli> = {
335
- setAction: (actions: (res: UnSafeParseResult<[T]>) => void) => void;
191
+ export type ActionsFn<T extends Subcommand | Cli> = {
192
+ setAction: (actions: (res: UnsafeParseResult<[T]>) => void) => void;
193
+ setPreValidationHook: (hookFn: (ctx: ParseResult<[T]>) => void) => void;
336
194
  };
337
195
  /** - Combine `name` and `aliases` to a `string[]` */
338
196
  type MapNameAndAliases2StrArr<T extends {
@@ -353,16 +211,43 @@ type IsDuplicatesInArr<Input extends any[]> = Input extends [infer Item, ...infe
353
211
  /**
354
212
  * - Check if there are duplicated options including aliases in `subcommand`
355
213
  * - Return an error message if duplicated is found
356
- * - Return `subcommand` if not found
214
+ * - Return `undefined` if not found
357
215
  */
358
216
  export type CheckDuplicatedOptions<T extends {
359
217
  options?: Option[];
360
- }> = T["options"] extends infer O extends Option[] ? IsDuplicatesInArr<MapNameAndAliases2StrArr<O>> extends infer D extends string ? `>>> Error: Duplicated Options \`${D}\` <<<` : T : T;
218
+ }> = T["options"] extends infer O extends Option[] ? IsDuplicatesInArr<MapNameAndAliases2StrArr<O>> extends infer Name extends string ? `>>> Error: Duplicated Options. Check the options with the name \`${Name}\` <<<` : undefined : undefined;
361
219
  /**
362
220
  * - Check for duplicated subcommands including aliases
363
221
  * - Return an error message if duplicated is found
364
- * - Return the `subcommand[]` if no error
222
+ * - Return the `undefined` if no error
223
+ */
224
+ type CheckDuplicatedSubcommands<T extends Partial<Subcommand>[]> = IsDuplicatesInArr<MapNameAndAliases2StrArr<T>> extends infer Name extends string ? `>>> Error: Duplicated Subcommand. Check the subcommands with the name \`${Name}\` <<<` : undefined;
225
+ /**
226
+ * - Check for duplicated arguments
227
+ * - Return an error message if duplicated is found
228
+ * - Return the `undefined` if no error
229
+ */
230
+ export type CheckDuplicatedArguments<T extends {
231
+ arguments?: Argument[];
232
+ }> = T["arguments"] extends infer A extends Argument[] ? IsDuplicatesInArr<MapNameAndAliases2StrArr<A>> extends infer Name extends string ? `>>> Error: Duplicated Arguments. Check the arguments with the name \`${Name}\` <<<` : undefined : undefined;
233
+ type OptionalUnion = Z3.ZodOptional<Z3.ZodAny> | Z4.$ZodOptional | Z3.ZodDefault<Z3.ZodAny> | Z4.$ZodDefault;
234
+ /**
235
+ * - Insures that only the last argument is optional
236
+ * - Insures no optional arguments are allowed when `allowPositional` is enabled
365
237
  */
366
- export type CheckDuplicatedSubcommands<T extends Partial<Subcommand>[]> = IsDuplicatesInArr<MapNameAndAliases2StrArr<T>> extends infer D extends string ? `>>> Error: Duplicated Subcommand \`${D}\` <<<` : T;
238
+ export type CheckArgumentsOptional<T extends {
239
+ allowPositional?: boolean;
240
+ arguments?: readonly Argument[];
241
+ }> = T["arguments"] extends readonly [...infer Rest, infer Last] ? Last extends {
242
+ type: OptionalUnion;
243
+ } ? T["allowPositional"] extends true ? `>>> Error: Cannot have optional arguments when \`allowPositional\` is enabled. The argument \`${Last extends {
244
+ name: string;
245
+ } ? Last["name"] : ""}\` should not be optional <<<` : T : Extract<Rest[number], {
246
+ type: OptionalUnion;
247
+ }> extends never ? T : T["allowPositional"] extends true ? `>>> Error: Cannot have optional arguments when \`allowPositional\` is enabled. The argument \`${Rest[number] extends {
248
+ name: string;
249
+ } ? Rest[number]["name"] : ""}\` should not be optional <<<` : `>>> Error: Only the last argument may be optional. The argument \`${Rest[number] extends {
250
+ name: string;
251
+ } ? Rest[number]["name"] : ""}\` should not be optional <<<` : T;
367
252
  export {};
368
253
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC;AACrC,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;AACnC,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzC,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAErH,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAEhC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IAEtC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;IAEhC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,QAAQ,CACxB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,GAAG;IACrD,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB,CACF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB;;;;;;;;OAQG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;AAEzD,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,MAAM,CAC7B,OAAO,GACP,aAAa,GACb,SAAS,GACT,UAAU,GACV,cAAc,GACd,SAAS,GACT,SAAS,GACT,QAAQ,GACR,UAAU,GACV,aAAa,GACb,aAAa,EACf,WAAW,CACZ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,EAAE,GACvG,UAAU,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CAAE,CAAC,GAC3F,SAAS,CAAC;AAEd;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,MAAM,CAAC,SAAS,QAAQ,EAAE,GAC7G;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;CAAE,GAClF,SAAS,CAAC;AAEd,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAExD,kEAAkE;AAClE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE/D,sDAAsD;AACtD,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvG,0CAA0C;AAC1C,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,QAAQ,CAClC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7F,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,IAAI;IACvD,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,mBAAmB,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;CACxG,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IAC3D,0BAA0B,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GACxD,CAAC,GACD,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IACzD,0BAA0B,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GACxD,CAAC,GACD,QAAQ,CACN,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,GAC7E,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAC/C,CAAC;AAER,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,IAAI;IAClD,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;IACpE,oBAAoB,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;CACzE,CAAC;AAEF,qDAAqD;AACrD,KAAK,wBAAwB,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,IAAI,CAAC,SAAS;IAC3F,MAAM,KAAK,SAAS,UAAU;IAC9B,GAAG,MAAM,IAAI;CACd,GACG,IAAI,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,GAClD,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,GAClH,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,GACjF,EAAE,CAAC;AAEP;;;GAGG;AACH,KAAK,iBAAiB,CAAC,KAAK,SAAS,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACnF,IAAI,SAAS,GAAG,EAAE,GAChB,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,GACvB,IAAI,GACJ,iBAAiB,CAAC,IAAI,CAAC,GACzB,KAAK,GACP,KAAK,CAAC;AAEV;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,EAAE,GAChH,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,MAAM,GAC9E,oEAAoE,IAAI,QAAQ,GAChF,SAAS,GACX,SAAS,CAAC;AAEd;;;;GAIG;AACH,KAAK,0BAA0B,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EAAE,IAC7D,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,MAAM,GAC5E,2EAA2E,IAAI,QAAQ,GACvF,SAAS,CAAC;AAEhB;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS;IAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CAAE,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,MAAM,CAAC,SACzG,QAAQ,EAAE,GACR,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,MAAM,GAC9E,wEAAwE,IAAI,QAAQ,GACpF,SAAS,GACX,SAAS,CAAC;AAEd,KAAK,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;AAE7G;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,IACzG,CAAC,CAAC,WAAW,CAAC,SAAS,SAAS,CAAC,GAAG,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,GACvD,IAAI,SAAS;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GAClC,CAAC,CAAC,iBAAiB,CAAC,SAAS,IAAI,GAC/B,iGAAiG,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,+BAA+B,GACjL,CAAC,GACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,SAAS,KAAK,GAC1D,CAAC,GACD,CAAC,CAAC,iBAAiB,CAAC,SAAS,IAAI,GAC/B,iGAAiG,IAAI,CAAC,MAAM,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,+BAA+B,GACjM,qEAAqE,IAAI,CAAC,MAAM,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,+BAA+B,GAC3K,CAAC,CAAC"}
@@ -1,24 +1,25 @@
1
1
  /**
2
- * @param name - Should start with `'--'`
3
- * @returns - The transformed name E.g. `--input-dir` -> `InputDir`
2
+ * Converts a string to its corresponding boolean value if the string is "true" or "false" (case-insensitive).
3
+ *
4
+ * @param str - The input string to convert.
5
+ * @returns `true` if the input is "true", `false` if the input is "false", or the original string otherwise.
4
6
  */
5
- export declare function transformArg(name: string): string;
6
- /** - Reverse of `transformArg`. E.g. `InputDir` -> `--input-dir` , `i` -> `-i` */
7
- export declare function transformOptionToArg(name: string): string;
8
- /** - Check if an arg string is a short arg. E.g. `-i` -> `true` */
9
- export declare function isFlagArg(name: string): boolean;
10
- /** - Check if an arg string is a long arg. E.g. `--input-dir` -> `true` */
11
- export declare function isLongArg(name: string): boolean;
12
- /** - Check if an arg string is an options arg. E.g. `--input-dir` -> `true` , `-i` -> `true` */
13
- export declare function isOptionArg(name: string | boolean): boolean;
7
+ export declare function stringToBoolean(str: string): boolean | string;
14
8
  /**
15
- * - Transform option name to no name. E.g. `include` -> `noInclude`
16
- * - For short name like `-i` it will be ignored
9
+ * Returns the ordinal representation of a given zero-based index.
10
+ *
11
+ * For example, passing `0` returns `"1st"`, `1` returns `"2nd"`, and so on.
12
+ *
13
+ * Handles special cases for numbers ending in 11, 12, or 13 (e.g., `10` returns `"11th"`).
14
+ *
15
+ * @param index - The zero-based index to convert to an ordinal string.
16
+ * @returns The ordinal string representation (e.g., `"1st"`, `"2nd"`, `"3rd"`, `"4th"`, ...).
17
17
  */
18
- export declare function negateOption(name: string): string;
19
- /** - Convert string to boolean. E.g. `"true"` -> `true` , `"false"` -> `false` */
20
- export declare function stringToBoolean(str: string): boolean;
21
- export declare function getOrdinalPlacement(index: number): string;
22
- /** - Decouple flags E.g. `-rf` -> `-r, -f` */
23
- export declare function decoupleFlags(args: string[]): string[];
18
+ export declare function generateOrdinalSuffix(index: number): string;
19
+ /** New line */
20
+ export declare function ln(count: number): string;
21
+ /** Space */
22
+ export declare function indent(count: number): string;
23
+ /** Concat strings */
24
+ export declare function concat(...messages: string[]): string;
24
25
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAG3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBtD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAU7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED,eAAe;AACf,wBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,UAE/B;AAED,YAAY;AACZ,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,UAEnC;AAED,qBAAqB;AACrB,wBAAgB,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,UAG3C"}
@@ -0,0 +1,27 @@
1
+ import type * as Z4 from "zod/v4/core";
2
+ import type { Schema } from "./types.js";
3
+ /** - Safe parse a value against a schema */
4
+ export declare function safeParseSchema(schema: Schema, value: unknown): Z4.util.SafeParseError<unknown> | import("zod/v3").SafeParseSuccess<any> | import("zod/v3").SafeParseError<any>;
5
+ /** - Check if a schema is a boolean */
6
+ export declare function isBooleanSchema(schema: Schema): boolean;
7
+ /** - Get the default value of a schema */
8
+ export declare function schemaDefaultValue(schema: Schema): unknown | undefined;
9
+ /** - Get the description of a schema */
10
+ export declare function schemaDescription(schema: Schema): string | undefined;
11
+ /** - Check if a schema is optional */
12
+ export declare function isOptionalSchema(schema: Schema): schema is Z4.$ZodOptional;
13
+ /**
14
+ * A preprocessing function for Zod that converts a string to an array of strings.
15
+ *
16
+ * @param val - The value given by zod.
17
+ * @param sep - The separator to use when splitting the string. Defaults to ",".
18
+ */
19
+ export declare function stringToArray(val: unknown, sep?: string): unknown;
20
+ /**
21
+ * A preprocessing function for Zod that converts a string to a `Set` of strings.
22
+ *
23
+ * @param val - The value given by zod.
24
+ * @param sep - The separator to use when splitting the string. Defaults to ",".
25
+ */
26
+ export declare function stringToSet(val: unknown, sep?: string): unknown;
27
+ //# sourceMappingURL=zod-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-utils.d.ts","sourceRoot":"","sources":["../../src/zod-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,YAAY,CAAC;AAM7D,4CAA4C;AAC5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,mHAM7D;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMvD;AAyCD,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAMtE;AAyCD,wCAAwC;AACxC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpE;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC,YAAY,CAM1E;AAmCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,GAAE,MAAY,WAS5D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,GAAE,MAAY,WAQ1D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-args-parser",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "A strictly typed command-line arguments parser powered by Zod.",
5
5
  "author": "Ahmed ALABSI <alabsi91@gmail.com>",
6
6
  "license": "MIT",
@@ -45,9 +45,9 @@
45
45
  "@eslint/compat": "^1.3.2",
46
46
  "@eslint/js": "^9.34.0",
47
47
  "@types/babel__core": "^7.20.5",
48
- "@types/node": "^22.18.0",
48
+ "@types/node": "^24.3.0",
49
49
  "eslint": "^9.34.0",
50
- "eslint-config-prettier": "^10.1.5",
50
+ "eslint-config-prettier": "^10.1.8",
51
51
  "eslint-plugin-prettier": "^5.5.4",
52
52
  "glob": "^11.0.3",
53
53
  "globals": "^16.3.0",
@@ -55,10 +55,11 @@
55
55
  "prettier-plugin-jsdoc": "^1.3.3",
56
56
  "tsx": "^4.20.5",
57
57
  "typescript": "^5.9.2",
58
- "typescript-eslint": "^8.41.0"
58
+ "typescript-eslint": "^8.41.0",
59
+ "zod": "^4.1.5"
59
60
  },
60
61
  "peerDependencies": {
61
- "zod": "^3.25.0 || ^4.0.0",
62
- "chalk": "*"
62
+ "chalk": "*",
63
+ "zod": "^3.25.0 || ^4.0.0"
63
64
  }
64
65
  }
@@ -1,4 +1,4 @@
1
- import { transformOptionToArg } from "../utils.js";
1
+ import { transformOptionToArg } from "../parser/parse/parser-helpers.js";
2
2
 
3
3
  import type { Cli, Subcommand } from "../types.js";
4
4
 
@@ -1,4 +1,4 @@
1
- import { transformOptionToArg } from "../utils.js";
1
+ import { transformOptionToArg } from "../parser/parse/parser-helpers.js";
2
2
 
3
3
  import type { Cli, Subcommand } from "../types.js";
4
4
 
@@ -1,4 +1,4 @@
1
- import { transformOptionToArg } from "../utils.js";
1
+ import { transformOptionToArg } from "../parser/parse/parser-helpers.js";
2
2
 
3
3
  import type { Cli, Option, Subcommand } from "../types.js";
4
4
 
@@ -0,0 +1,38 @@
1
+ import { concat, indent, ln } from "../utils.js";
2
+
3
+ import type { ArgumentMetadata } from "../metadata/metadata-types.js";
4
+ import type { HelpMsgStyle } from "../types.js";
5
+
6
+ export function formatHelpMsgArguments(argsMetadata: ArgumentMetadata[], c: HelpMsgStyle, longest: number): string {
7
+ if (!argsMetadata.length) return "";
8
+
9
+ let msg = c.title(" ARGUMENTS") + ln(1);
10
+
11
+ for (const metadata of argsMetadata) {
12
+ const defaultStr =
13
+ typeof metadata.defaultValue !== "undefined" ? `(default: ${metadata.defaultValueAsString})` : "";
14
+
15
+ const spacing = longest + 2 - metadata.name.length;
16
+ const normalizeDesc = metadata.description.replace(/\n/g, "\n" + indent(longest + 6) + c.punctuation("└"));
17
+
18
+ msg += concat(
19
+ indent(2) + c.argument(metadata.name),
20
+ indent(spacing),
21
+ c.description(normalizeDesc),
22
+ (defaultStr ? c.default(defaultStr) : metadata.optional ? c.optional("(optional)") : "") + ln(1),
23
+ );
24
+
25
+ if (metadata.example) {
26
+ const normalizeExample = metadata.example.replace(/\n/g, "\n" + indent(longest + 16));
27
+ msg += concat(
28
+ indent(longest + 5),
29
+ c.punctuation("└") + c.exampleTitle("Example:"),
30
+ c.example(normalizeExample) + ln(1),
31
+ );
32
+ }
33
+ }
34
+
35
+ msg += ln(1);
36
+
37
+ return msg;
38
+ }