zod-args-parser 1.0.16 → 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 (200) hide show
  1. package/README.md +598 -92
  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 +76 -186
  124. package/lib/typescript/types.d.ts.map +1 -1
  125. package/lib/typescript/utils.d.ts +20 -23
  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 +20 -19
  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 +6 -5
  141. package/src/metadata/get-cli-metadata.ts +4 -4
  142. package/src/metadata/get-options-metadata.ts +7 -5
  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 +99 -233
  153. package/src/utils.ts +31 -96
  154. package/src/zod-utils.ts +199 -0
  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/module/help-message/colors.js +0 -1
  170. package/lib/module/help-message/colors.js.map +0 -1
  171. package/lib/module/help-message/print-arguments.js +0 -1
  172. package/lib/module/help-message/print-arguments.js.map +0 -1
  173. package/lib/module/help-message/print-help-message.js +0 -1
  174. package/lib/module/help-message/print-help-message.js.map +0 -1
  175. package/lib/module/help-message/print-options.js +0 -1
  176. package/lib/module/help-message/print-options.js.map +0 -1
  177. package/lib/module/help-message/print-subcommands.js.map +0 -1
  178. package/lib/module/help-message/utils.js +0 -1
  179. package/lib/module/help-message/utils.js.map +0 -1
  180. package/lib/module/parser/parse.js +0 -1
  181. package/lib/module/parser/parse.js.map +0 -1
  182. package/lib/typescript/help-message/colors.d.ts +0 -17
  183. package/lib/typescript/help-message/colors.d.ts.map +0 -1
  184. package/lib/typescript/help-message/print-arguments.d.ts +0 -4
  185. package/lib/typescript/help-message/print-arguments.d.ts.map +0 -1
  186. package/lib/typescript/help-message/print-help-message.d.ts +0 -4
  187. package/lib/typescript/help-message/print-help-message.d.ts.map +0 -1
  188. package/lib/typescript/help-message/print-options.d.ts +0 -4
  189. package/lib/typescript/help-message/print-options.d.ts.map +0 -1
  190. package/lib/typescript/help-message/print-subcommands.d.ts +0 -4
  191. package/lib/typescript/help-message/print-subcommands.d.ts.map +0 -1
  192. package/lib/typescript/help-message/utils.d.ts +0 -13
  193. package/lib/typescript/help-message/utils.d.ts.map +0 -1
  194. package/lib/typescript/parser/parse.d.ts +0 -3
  195. package/lib/typescript/parser/parse.d.ts.map +0 -1
  196. package/src/help-message/colors.ts +0 -24
  197. package/src/help-message/print-arguments.ts +0 -35
  198. package/src/help-message/print-subcommands.ts +0 -28
  199. package/src/help-message/utils.ts +0 -31
  200. package/src/parser/parse.ts +0 -270
@@ -1 +1 @@
1
- import{getOptionsMetadata}from"./get-options-metadata.js";import{getArgumentsMetadata}from"./get-arguments-metadata.js";import{getSubcommandsMetadata}from"./get-subcommands-metadata.js";export function getCliMetadata(inputData){const[cli,...subcommands]=inputData;const outputMetadata={name:cli.cliName,description:cli.description??"",placeholder:cli.placeholder??"",usage:cli.usage??"",example:cli.example??"",allowPositional:cli.allowPositional??false,options:cli.options?getOptionsMetadata(cli.options):[],arguments:cli.arguments?getArgumentsMetadata(cli.arguments):[],subcommands:subcommands?getSubcommandsMetadata(subcommands):[]};return outputMetadata;}
1
+ import{getArgumentsMetadata}from"./get-arguments-metadata.js";import{getOptionsMetadata}from"./get-options-metadata.js";import{getSubcommandsMetadata}from"./get-subcommands-metadata.js";export function getCliMetadata(inputData){const[cli,...subcommands]=inputData;const outputMetadata={name:cli.cliName,description:cli.description??"",usage:cli.usage??"",example:cli.example??"",allowPositional:cli.allowPositional??false,options:cli.options?getOptionsMetadata(cli.options):[],arguments:cli.arguments?getArgumentsMetadata(cli.arguments):[],subcommands:subcommands?getSubcommandsMetadata(subcommands):[]};return outputMetadata;}
@@ -1 +1 @@
1
- {"version":3,"names":["getOptionsMetadata","getArgumentsMetadata","getSubcommandsMetadata","getCliMetadata","inputData","cli","subcommands","outputMetadata","name","cliName","description","placeholder","usage","example","allowPositional","options","arguments"],"sourceRoot":"../../../src/metadata","sources":["get-cli-metadata.ts"],"sourcesContent":["import { getOptionsMetadata } from \"./get-options-metadata.js\";\nimport { getArgumentsMetadata } from \"./get-arguments-metadata.js\";\nimport { getSubcommandsMetadata } from \"./get-subcommands-metadata.js\";\n\nimport type { Cli, CliMetadata, Subcommand } from \"../types.js\";\n\nexport function getCliMetadata(inputData: [Cli, ...Subcommand[]]): CliMetadata {\n const [cli, ...subcommands] = inputData;\n\n const outputMetadata: CliMetadata = {\n name: cli.cliName,\n description: cli.description ?? \"\",\n placeholder: cli.placeholder ?? \"\",\n usage: cli.usage ?? \"\",\n example: cli.example ?? \"\",\n allowPositional: cli.allowPositional ?? false,\n options: cli.options ? getOptionsMetadata(cli.options) : [],\n arguments: cli.arguments ? getArgumentsMetadata(cli.arguments) : [],\n subcommands: subcommands ? getSubcommandsMetadata(subcommands) : [],\n };\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,kBAAkB,KAAQ,2BAA2B,CAC9D,OAASC,oBAAoB,KAAQ,6BAA6B,CAClE,OAASC,sBAAsB,KAAQ,+BAA+B,CAItE,MAAO,SAAS,CAAAC,cAAcA,CAACC,SAAiC,CAAe,CAC7E,KAAM,CAACC,GAAG,CAAE,GAAGC,WAAW,CAAC,CAAGF,SAAS,CAEvC,KAAM,CAAAG,cAA2B,CAAG,CAClCC,IAAI,CAAEH,GAAG,CAACI,OAAO,CACjBC,WAAW,CAAEL,GAAG,CAACK,WAAW,EAAI,EAAE,CAClCC,WAAW,CAAEN,GAAG,CAACM,WAAW,EAAI,EAAE,CAClCC,KAAK,CAAEP,GAAG,CAACO,KAAK,EAAI,EAAE,CACtBC,OAAO,CAAER,GAAG,CAACQ,OAAO,EAAI,EAAE,CAC1BC,eAAe,CAAET,GAAG,CAACS,eAAe,EAAI,KAAK,CAC7CC,OAAO,CAAEV,GAAG,CAACU,OAAO,CAAGf,kBAAkB,CAACK,GAAG,CAACU,OAAO,CAAC,CAAG,EAAE,CAC3DC,SAAS,CAAEX,GAAG,CAACW,SAAS,CAAGf,oBAAoB,CAACI,GAAG,CAACW,SAAS,CAAC,CAAG,EAAE,CACnEV,WAAW,CAAEA,WAAW,CAAGJ,sBAAsB,CAACI,WAAW,CAAC,CAAG,EACnE,CAAC,CAED,MAAO,CAAAC,cAAc,CACvB","ignoreList":[]}
1
+ {"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","getCliMetadata","inputData","cli","subcommands","outputMetadata","name","cliName","description","usage","example","allowPositional","options","arguments"],"sourceRoot":"../../../src/metadata","sources":["get-cli-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./get-arguments-metadata.js\";\nimport { getOptionsMetadata } from \"./get-options-metadata.js\";\nimport { getSubcommandsMetadata } from \"./get-subcommands-metadata.js\";\n\nimport type { Cli, Subcommand } from \"../types.js\";\nimport type { CliMetadata } from \"./metadata-types.js\";\n\nexport function getCliMetadata(inputData: readonly [Cli, ...Subcommand[]]): CliMetadata {\n const [cli, ...subcommands] = inputData;\n\n const outputMetadata: CliMetadata = {\n name: cli.cliName,\n description: cli.description ?? \"\",\n usage: cli.usage ?? \"\",\n example: cli.example ?? \"\",\n allowPositional: cli.allowPositional ?? false,\n options: cli.options ? getOptionsMetadata(cli.options) : [],\n arguments: cli.arguments ? getArgumentsMetadata(cli.arguments) : [],\n subcommands: subcommands ? getSubcommandsMetadata(subcommands) : [],\n };\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,oBAAoB,KAAQ,6BAA6B,CAClE,OAASC,kBAAkB,KAAQ,2BAA2B,CAC9D,OAASC,sBAAsB,KAAQ,+BAA+B,CAKtE,MAAO,SAAS,CAAAC,cAAcA,CAACC,SAA0C,CAAe,CACtF,KAAM,CAACC,GAAG,CAAE,GAAGC,WAAW,CAAC,CAAGF,SAAS,CAEvC,KAAM,CAAAG,cAA2B,CAAG,CAClCC,IAAI,CAAEH,GAAG,CAACI,OAAO,CACjBC,WAAW,CAAEL,GAAG,CAACK,WAAW,EAAI,EAAE,CAClCC,KAAK,CAAEN,GAAG,CAACM,KAAK,EAAI,EAAE,CACtBC,OAAO,CAAEP,GAAG,CAACO,OAAO,EAAI,EAAE,CAC1BC,eAAe,CAAER,GAAG,CAACQ,eAAe,EAAI,KAAK,CAC7CC,OAAO,CAAET,GAAG,CAACS,OAAO,CAAGb,kBAAkB,CAACI,GAAG,CAACS,OAAO,CAAC,CAAG,EAAE,CAC3DC,SAAS,CAAEV,GAAG,CAACU,SAAS,CAAGf,oBAAoB,CAACK,GAAG,CAACU,SAAS,CAAC,CAAG,EAAE,CACnET,WAAW,CAAEA,WAAW,CAAGJ,sBAAsB,CAACI,WAAW,CAAC,CAAG,EACnE,CAAC,CAED,MAAO,CAAAC,cAAc,CACvB","ignoreList":[]}
@@ -1 +1 @@
1
- import{getDefaultValueFromSchema,transformOptionToArg}from"../utils.js";export function getOptionsMetadata(options){const outputMetadata=[];if(!options||!options.length)return outputMetadata;for(const option of options){const defaultValue=getDefaultValueFromSchema(option.type);const aliases=option.aliases??[];outputMetadata.push({name:option.name,nameAsArg:transformOptionToArg(option.name),aliases,aliasesAsArgs:aliases.map(transformOptionToArg),placeholder:option.placeholder??"",description:option.description??option.type.description??"",optional:option.type.isOptional(),example:option.example??"",defaultValue,defaultValueAsString:JSON.stringify(defaultValue),type:option.type});}return outputMetadata;}
1
+ import{transformOptionToArg}from"../parser/parse/parser-helpers.js";import{isOptionalSchema,schemaDefaultValue,schemaDescription}from"../zod-utils.js";export function getOptionsMetadata(options){const outputMetadata=[];if(!options||!options.length)return outputMetadata;for(const option of options){const defaultValue=schemaDefaultValue(option.type);const aliases=option.aliases??[];outputMetadata.push({name:option.name,nameAsArg:transformOptionToArg(option.name),aliases,aliasesAsArgs:aliases.map(transformOptionToArg),placeholder:option.placeholder??"",description:option.description??schemaDescription(option.type)??"",optional:isOptionalSchema(option.type),example:option.example??"",defaultValue,defaultValueAsString:JSON.stringify(defaultValue),type:option.type});}return outputMetadata;}
@@ -1 +1 @@
1
- {"version":3,"names":["getDefaultValueFromSchema","transformOptionToArg","getOptionsMetadata","options","outputMetadata","length","option","defaultValue","type","aliases","push","name","nameAsArg","aliasesAsArgs","map","placeholder","description","optional","isOptional","example","defaultValueAsString","JSON","stringify"],"sourceRoot":"../../../src/metadata","sources":["get-options-metadata.ts"],"sourcesContent":["import { getDefaultValueFromSchema, transformOptionToArg } from \"../utils.js\";\n\nimport type { Option, OptionMetadata } from \"../types.js\";\n\nexport function getOptionsMetadata(options: Option[]): OptionMetadata[] {\n const outputMetadata: OptionMetadata[] = [];\n\n if (!options || !options.length) return outputMetadata;\n\n for (const option of options) {\n const defaultValue = getDefaultValueFromSchema(option.type);\n const aliases = option.aliases ?? [];\n\n outputMetadata.push({\n name: option.name,\n nameAsArg: transformOptionToArg(option.name),\n aliases,\n aliasesAsArgs: aliases.map(transformOptionToArg),\n placeholder: option.placeholder ?? \"\",\n description: option.description ?? option.type.description ?? \"\",\n optional: option.type.isOptional(),\n example: option.example ?? \"\",\n defaultValue,\n defaultValueAsString: JSON.stringify(defaultValue),\n type: option.type,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,yBAAyB,CAAEC,oBAAoB,KAAQ,aAAa,CAI7E,MAAO,SAAS,CAAAC,kBAAkBA,CAACC,OAAiB,CAAoB,CACtE,KAAM,CAAAC,cAAgC,CAAG,EAAE,CAE3C,GAAI,CAACD,OAAO,EAAI,CAACA,OAAO,CAACE,MAAM,CAAE,MAAO,CAAAD,cAAc,CAEtD,IAAK,KAAM,CAAAE,MAAM,GAAI,CAAAH,OAAO,CAAE,CAC5B,KAAM,CAAAI,YAAY,CAAGP,yBAAyB,CAACM,MAAM,CAACE,IAAI,CAAC,CAC3D,KAAM,CAAAC,OAAO,CAAGH,MAAM,CAACG,OAAO,EAAI,EAAE,CAEpCL,cAAc,CAACM,IAAI,CAAC,CAClBC,IAAI,CAAEL,MAAM,CAACK,IAAI,CACjBC,SAAS,CAAEX,oBAAoB,CAACK,MAAM,CAACK,IAAI,CAAC,CAC5CF,OAAO,CACPI,aAAa,CAAEJ,OAAO,CAACK,GAAG,CAACb,oBAAoB,CAAC,CAChDc,WAAW,CAAET,MAAM,CAACS,WAAW,EAAI,EAAE,CACrCC,WAAW,CAAEV,MAAM,CAACU,WAAW,EAAIV,MAAM,CAACE,IAAI,CAACQ,WAAW,EAAI,EAAE,CAChEC,QAAQ,CAAEX,MAAM,CAACE,IAAI,CAACU,UAAU,CAAC,CAAC,CAClCC,OAAO,CAAEb,MAAM,CAACa,OAAO,EAAI,EAAE,CAC7BZ,YAAY,CACZa,oBAAoB,CAAEC,IAAI,CAACC,SAAS,CAACf,YAAY,CAAC,CAClDC,IAAI,CAAEF,MAAM,CAACE,IACf,CAAC,CAAC,CACJ,CAEA,MAAO,CAAAJ,cAAc,CACvB","ignoreList":[]}
1
+ {"version":3,"names":["transformOptionToArg","isOptionalSchema","schemaDefaultValue","schemaDescription","getOptionsMetadata","options","outputMetadata","length","option","defaultValue","type","aliases","push","name","nameAsArg","aliasesAsArgs","map","placeholder","description","optional","example","defaultValueAsString","JSON","stringify"],"sourceRoot":"../../../src/metadata","sources":["get-options-metadata.ts"],"sourcesContent":["import { transformOptionToArg } from \"../parser/parse/parser-helpers.js\";\nimport { isOptionalSchema, schemaDefaultValue, schemaDescription } from \"../zod-utils.js\";\n\nimport type { Option } from \"../types.js\";\nimport type { OptionMetadata } from \"./metadata-types.js\";\n\nexport function getOptionsMetadata(options: Option[]): OptionMetadata[] {\n const outputMetadata: OptionMetadata[] = [];\n\n if (!options || !options.length) return outputMetadata;\n\n for (const option of options) {\n const defaultValue = schemaDefaultValue(option.type);\n const aliases = option.aliases ?? [];\n\n outputMetadata.push({\n name: option.name,\n nameAsArg: transformOptionToArg(option.name),\n aliases,\n aliasesAsArgs: aliases.map(transformOptionToArg),\n placeholder: option.placeholder ?? \"\",\n description: option.description ?? schemaDescription(option.type) ?? \"\",\n optional: isOptionalSchema(option.type),\n example: option.example ?? \"\",\n defaultValue,\n defaultValueAsString: JSON.stringify(defaultValue),\n type: option.type,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,oBAAoB,KAAQ,mCAAmC,CACxE,OAASC,gBAAgB,CAAEC,kBAAkB,CAAEC,iBAAiB,KAAQ,iBAAiB,CAKzF,MAAO,SAAS,CAAAC,kBAAkBA,CAACC,OAAiB,CAAoB,CACtE,KAAM,CAAAC,cAAgC,CAAG,EAAE,CAE3C,GAAI,CAACD,OAAO,EAAI,CAACA,OAAO,CAACE,MAAM,CAAE,MAAO,CAAAD,cAAc,CAEtD,IAAK,KAAM,CAAAE,MAAM,GAAI,CAAAH,OAAO,CAAE,CAC5B,KAAM,CAAAI,YAAY,CAAGP,kBAAkB,CAACM,MAAM,CAACE,IAAI,CAAC,CACpD,KAAM,CAAAC,OAAO,CAAGH,MAAM,CAACG,OAAO,EAAI,EAAE,CAEpCL,cAAc,CAACM,IAAI,CAAC,CAClBC,IAAI,CAAEL,MAAM,CAACK,IAAI,CACjBC,SAAS,CAAEd,oBAAoB,CAACQ,MAAM,CAACK,IAAI,CAAC,CAC5CF,OAAO,CACPI,aAAa,CAAEJ,OAAO,CAACK,GAAG,CAAChB,oBAAoB,CAAC,CAChDiB,WAAW,CAAET,MAAM,CAACS,WAAW,EAAI,EAAE,CACrCC,WAAW,CAAEV,MAAM,CAACU,WAAW,EAAIf,iBAAiB,CAACK,MAAM,CAACE,IAAI,CAAC,EAAI,EAAE,CACvES,QAAQ,CAAElB,gBAAgB,CAACO,MAAM,CAACE,IAAI,CAAC,CACvCU,OAAO,CAAEZ,MAAM,CAACY,OAAO,EAAI,EAAE,CAC7BX,YAAY,CACZY,oBAAoB,CAAEC,IAAI,CAACC,SAAS,CAACd,YAAY,CAAC,CAClDC,IAAI,CAAEF,MAAM,CAACE,IACf,CAAC,CAAC,CACJ,CAEA,MAAO,CAAAJ,cAAc,CACvB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","subcommands","outputMetadata","length","subcommand","optionsMetadata","options","argumentsMetadata","arguments","push","name","aliases","description","placeholder","usage","example","allowPositional"],"sourceRoot":"../../../src/metadata","sources":["get-subcommands-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./get-arguments-metadata.js\";\nimport { getOptionsMetadata } from \"./get-options-metadata.js\";\n\nimport type { Subcommand, SubcommandMetadata } from \"../types.js\";\n\nexport function getSubcommandsMetadata(subcommands: Subcommand[]): SubcommandMetadata[] {\n const outputMetadata: SubcommandMetadata[] = [];\n\n if (!subcommands || !subcommands.length) return outputMetadata;\n\n for (const subcommand of subcommands) {\n const optionsMetadata = subcommand.options ? getOptionsMetadata(subcommand.options) : [];\n const argumentsMetadata = subcommand.arguments ? getArgumentsMetadata(subcommand.arguments) : [];\n\n outputMetadata.push({\n name: subcommand.name,\n aliases: subcommand.aliases ?? [],\n description: subcommand.description ?? \"\",\n placeholder: subcommand.placeholder ?? \"\",\n usage: subcommand.usage ?? \"\",\n example: subcommand.example ?? \"\",\n allowPositional: subcommand.allowPositional ?? false,\n options: optionsMetadata,\n arguments: argumentsMetadata,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,oBAAoB,KAAQ,6BAA6B,CAClE,OAASC,kBAAkB,KAAQ,2BAA2B,CAI9D,MAAO,SAAS,CAAAC,sBAAsBA,CAACC,WAAyB,CAAwB,CACtF,KAAM,CAAAC,cAAoC,CAAG,EAAE,CAE/C,GAAI,CAACD,WAAW,EAAI,CAACA,WAAW,CAACE,MAAM,CAAE,MAAO,CAAAD,cAAc,CAE9D,IAAK,KAAM,CAAAE,UAAU,GAAI,CAAAH,WAAW,CAAE,CACpC,KAAM,CAAAI,eAAe,CAAGD,UAAU,CAACE,OAAO,CAAGP,kBAAkB,CAACK,UAAU,CAACE,OAAO,CAAC,CAAG,EAAE,CACxF,KAAM,CAAAC,iBAAiB,CAAGH,UAAU,CAACI,SAAS,CAAGV,oBAAoB,CAACM,UAAU,CAACI,SAAS,CAAC,CAAG,EAAE,CAEhGN,cAAc,CAACO,IAAI,CAAC,CAClBC,IAAI,CAAEN,UAAU,CAACM,IAAI,CACrBC,OAAO,CAAEP,UAAU,CAACO,OAAO,EAAI,EAAE,CACjCC,WAAW,CAAER,UAAU,CAACQ,WAAW,EAAI,EAAE,CACzCC,WAAW,CAAET,UAAU,CAACS,WAAW,EAAI,EAAE,CACzCC,KAAK,CAAEV,UAAU,CAACU,KAAK,EAAI,EAAE,CAC7BC,OAAO,CAAEX,UAAU,CAACW,OAAO,EAAI,EAAE,CACjCC,eAAe,CAAEZ,UAAU,CAACY,eAAe,EAAI,KAAK,CACpDV,OAAO,CAAED,eAAe,CACxBG,SAAS,CAAED,iBACb,CAAC,CAAC,CACJ,CAEA,MAAO,CAAAL,cAAc,CACvB","ignoreList":[]}
1
+ {"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","subcommands","outputMetadata","length","subcommand","optionsMetadata","options","argumentsMetadata","arguments","push","name","aliases","description","placeholder","usage","example","allowPositional"],"sourceRoot":"../../../src/metadata","sources":["get-subcommands-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./get-arguments-metadata.js\";\nimport { getOptionsMetadata } from \"./get-options-metadata.js\";\n\nimport type { Subcommand } from \"../types.js\";\nimport type { SubcommandMetadata } from \"./metadata-types.js\";\n\nexport function getSubcommandsMetadata(subcommands: Subcommand[]): SubcommandMetadata[] {\n const outputMetadata: SubcommandMetadata[] = [];\n\n if (!subcommands || !subcommands.length) return outputMetadata;\n\n for (const subcommand of subcommands) {\n const optionsMetadata = subcommand.options ? getOptionsMetadata(subcommand.options) : [];\n const argumentsMetadata = subcommand.arguments ? getArgumentsMetadata(subcommand.arguments) : [];\n\n outputMetadata.push({\n name: subcommand.name,\n aliases: subcommand.aliases ?? [],\n description: subcommand.description ?? \"\",\n placeholder: subcommand.placeholder ?? \"\",\n usage: subcommand.usage ?? \"\",\n example: subcommand.example ?? \"\",\n allowPositional: subcommand.allowPositional ?? false,\n options: optionsMetadata,\n arguments: argumentsMetadata,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"AAAA,OAASA,oBAAoB,KAAQ,6BAA6B,CAClE,OAASC,kBAAkB,KAAQ,2BAA2B,CAK9D,MAAO,SAAS,CAAAC,sBAAsBA,CAACC,WAAyB,CAAwB,CACtF,KAAM,CAAAC,cAAoC,CAAG,EAAE,CAE/C,GAAI,CAACD,WAAW,EAAI,CAACA,WAAW,CAACE,MAAM,CAAE,MAAO,CAAAD,cAAc,CAE9D,IAAK,KAAM,CAAAE,UAAU,GAAI,CAAAH,WAAW,CAAE,CACpC,KAAM,CAAAI,eAAe,CAAGD,UAAU,CAACE,OAAO,CAAGP,kBAAkB,CAACK,UAAU,CAACE,OAAO,CAAC,CAAG,EAAE,CACxF,KAAM,CAAAC,iBAAiB,CAAGH,UAAU,CAACI,SAAS,CAAGV,oBAAoB,CAACM,UAAU,CAACI,SAAS,CAAC,CAAG,EAAE,CAEhGN,cAAc,CAACO,IAAI,CAAC,CAClBC,IAAI,CAAEN,UAAU,CAACM,IAAI,CACrBC,OAAO,CAAEP,UAAU,CAACO,OAAO,EAAI,EAAE,CACjCC,WAAW,CAAER,UAAU,CAACQ,WAAW,EAAI,EAAE,CACzCC,WAAW,CAAET,UAAU,CAACS,WAAW,EAAI,EAAE,CACzCC,KAAK,CAAEV,UAAU,CAACU,KAAK,EAAI,EAAE,CAC7BC,OAAO,CAAEX,UAAU,CAACW,OAAO,EAAI,EAAE,CACjCC,eAAe,CAAEZ,UAAU,CAACY,eAAe,EAAI,KAAK,CACpDV,OAAO,CAAED,eAAe,CACxBG,SAAS,CAAED,iBACb,CAAC,CAAC,CACJ,CAEA,MAAO,CAAAL,cAAc,CACvB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ import{generateOrdinalSuffix}from"../../utils.js";import{isBooleanSchema,isOptionalSchema,schemaDefaultValue}from"../../zod-utils.js";import{decoupleFlags,findOption,findSubcommand,isFlagArg,isOptionArg,transformOptionToArg}from"./parser-helpers.js";export function parse(argv,...params){const subcommandArr=params;const allSubcommands=new Set(subcommandArr.flatMap(c=>[c.name,...(c.aliases||[])]));argv=decoupleFlags(argv);const results={subcommand:undefined,options:{}};const getSubcommandObj=()=>findSubcommand(results.subcommand,subcommandArr);for(let i=0;i<argv.length;i++){const arg=argv[i];if(i===0){results.subcommand=allSubcommands.has(arg)?arg:undefined;const subcommandObj=getSubcommandObj();if(subcommandObj&&subcommandObj.allowPositional){results.positional=[];}if(subcommandObj&&subcommandObj.arguments?.length){results.arguments=[];}if(results.subcommand)continue;}const argAndValue=arg.split("=").filter(Boolean);const argWithEquals=arg.includes("=");const argument=argAndValue[0];const argValue=argAndValue[1];if(isOptionArg(argument)){if(isFlagArg(argument)&&argWithEquals){throw new Error(`Flag arguments cannot be assigned using "=": "${arg}"`,{cause:"zod-args-parser"});}const subcommandObj=getSubcommandObj();if(!subcommandObj){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"});}if(!subcommandObj.options){if(!results.subcommand){throw new Error(`Error: options are not allowed here: "${argument}"`,{cause:"zod-args-parser"});}throw new Error(`Error: subcommand "${results.subcommand}" does not allow options: "${argument}"`,{cause:"zod-args-parser"});}const option=findOption(argument,subcommandObj.options);if(!option){throw new Error(`Unknown option: "${argument}"`,{cause:"zod-args-parser"});}if(option.name in results.options){throw new Error(`Duplicated option: "${argument}"`,{cause:"zod-args-parser"});}const isTypeBoolean=isBooleanSchema(option.type);const nextArg=argv[i+1];let optionValue=argWithEquals?argValue:nextArg;if(isTypeBoolean&&!argWithEquals){optionValue="true";}if(typeof optionValue==="undefined"){throw new Error(`Expected a value for "${argument}" but got nothing`,{cause:"zod-args-parser"});}if(!argWithEquals&&isOptionArg(optionValue)){throw new Error(`Expected a value for "${argument}" but got an argument "${nextArg}"`,{cause:"zod-args-parser"});}results.options[option.name]={name:option.name,schema:option.type,flag:argument,rawValue:optionValue.toString(),source:"cli"};if(!argWithEquals&&!isTypeBoolean){i++;}continue;}const subcommandObj=getSubcommandObj();if(subcommandObj?.arguments?.length){if(!results.arguments){results.arguments=[];}const currentArgCount=results.arguments.length;if(currentArgCount<subcommandObj.arguments.length){const argType=subcommandObj.arguments[currentArgCount].type;results.arguments.push({schema:argType,rawValue:arg,source:"cli"});continue;}}if(subcommandObj?.allowPositional){if(!results.positional){results.positional=[];}results.positional.push(arg);continue;}if(!results.subcommand){throw new Error(`Unexpected argument "${arg}": positional arguments are not allowed here`,{cause:"zod-args-parser"});}throw new Error(`Unexpected argument "${arg}": positional arguments are not allowed for subcommand "${results.subcommand}"`,{cause:"zod-args-parser"});}const subcommandObj=getSubcommandObj();if(!subcommandObj){throw new Error(`Unknown subcommand: "${results.subcommand}"`,{cause:"zod-args-parser"});}if(subcommandObj.options?.length){for(const option of subcommandObj.options){if(option.name in results.options)continue;const optional=isOptionalSchema(option.type);const defaultValue=schemaDefaultValue(option.type);if(optional){if(typeof defaultValue==="undefined"){continue;}results.options[option.name]={name:option.name,schema:option.type,source:"default"};continue;}throw new Error(`Missing required option: ${transformOptionToArg(option.name)}`,{cause:"zod-args-parser"});}}if(subcommandObj.arguments?.length){const currentArgCount=results.arguments?.length??0;const subcommandArgCount=subcommandObj.arguments.length;if(currentArgCount<subcommandArgCount){for(let i=currentArgCount;i<subcommandArgCount;i++){const argumentType=subcommandObj.arguments[i].type;const optional=isOptionalSchema(argumentType);const defaultValue=schemaDefaultValue(argumentType);if(optional){if(typeof defaultValue==="undefined"){continue;}if(!results.arguments)results.arguments=[];results.arguments.push({schema:argumentType,source:"default"});continue;}throw new Error(`the ${generateOrdinalSuffix(i)} argument is required: "${subcommandObj.arguments[i].name}"`,{cause:"zod-args-parser"});}}}return results;}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateOrdinalSuffix","isBooleanSchema","isOptionalSchema","schemaDefaultValue","decoupleFlags","findOption","findSubcommand","isFlagArg","isOptionArg","transformOptionToArg","parse","argv","params","subcommandArr","allSubcommands","Set","flatMap","c","name","aliases","results","subcommand","undefined","options","getSubcommandObj","i","length","arg","has","subcommandObj","allowPositional","positional","arguments","argAndValue","split","filter","Boolean","argWithEquals","includes","argument","argValue","Error","cause","option","isTypeBoolean","type","nextArg","optionValue","schema","flag","rawValue","toString","source","currentArgCount","argType","push","optional","defaultValue","subcommandArgCount","argumentType"],"sourceRoot":"../../../../src/parser/parse","sources":["parse.ts"],"sourcesContent":["import { generateOrdinalSuffix } from \"../../utils.js\";\nimport { isBooleanSchema, isOptionalSchema, schemaDefaultValue } from \"../../zod-utils.js\";\nimport {\n decoupleFlags,\n findOption,\n findSubcommand,\n isFlagArg,\n isOptionArg,\n transformOptionToArg,\n} from \"./parser-helpers.js\";\n\nimport type { Cli, Subcommand } from \"../../types.js\";\nimport type { ParseCtx } from \"./parse-types.js\";\n\nexport function parse(argv: string[], ...params: [Cli, ...Subcommand[]]) {\n const subcommandArr = params as Subcommand[];\n const allSubcommands = new Set<string>(subcommandArr.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n argv = decoupleFlags(argv); // decouple flags E.g. `-rf` -> `-r, -f`\n\n const results: ParseCtx = {\n subcommand: undefined,\n options: {},\n };\n\n /** - Get current subcommand object */\n const getSubcommandObj = () => findSubcommand(results.subcommand, subcommandArr);\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n\n // * Subcommand check\n if (i === 0) {\n results.subcommand = allSubcommands.has(arg) ? arg : undefined;\n\n // add positional and arguments arrays\n const subcommandObj = getSubcommandObj();\n if (subcommandObj && subcommandObj.allowPositional) {\n results.positional = [];\n }\n\n if (subcommandObj && subcommandObj.arguments?.length) {\n results.arguments = [];\n }\n\n // First argument is a subcommand. Skip to the next argument\n if (results.subcommand) continue;\n }\n\n // * Option check\n\n // Check for `--option=value` or `--option value`\n const argAndValue = arg.split(\"=\").filter(Boolean);\n const argWithEquals = arg.includes(\"=\");\n const argument = argAndValue[0];\n const argValue: string | undefined = argAndValue[1];\n\n if (isOptionArg(argument)) {\n if (isFlagArg(argument) && argWithEquals) {\n throw new Error(`Flag arguments cannot be assigned using \"=\": \"${arg}\"`, { cause: \"zod-args-parser\" });\n }\n\n const subcommandObj = getSubcommandObj();\n if (!subcommandObj) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (!subcommandObj.options) {\n if (!results.subcommand) {\n throw new Error(`Error: options are not allowed here: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n throw new Error(`Error: subcommand \"${results.subcommand}\" does not allow options: \"${argument}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n const option = findOption(argument, subcommandObj.options);\n if (!option) {\n throw new Error(`Unknown option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n if (option.name in results.options) {\n throw new Error(`Duplicated option: \"${argument}\"`, { cause: \"zod-args-parser\" });\n }\n\n const isTypeBoolean = isBooleanSchema(option.type);\n const nextArg = argv[i + 1];\n\n let optionValue: string | boolean = argWithEquals ? argValue : nextArg;\n\n // infer value for boolean options\n if (isTypeBoolean && !argWithEquals) {\n optionValue = \"true\";\n }\n\n if (typeof optionValue === \"undefined\") {\n throw new Error(`Expected a value for \"${argument}\" but got nothing`, { cause: \"zod-args-parser\" });\n }\n\n if (!argWithEquals && isOptionArg(optionValue)) {\n throw new Error(`Expected a value for \"${argument}\" but got an argument \"${nextArg}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results.options[option.name] = {\n name: option.name,\n schema: option.type,\n flag: argument,\n rawValue: optionValue.toString(),\n source: \"cli\",\n };\n\n // Skip to the next argument if it is the current option’s value.\n if (!argWithEquals && !isTypeBoolean) {\n i++;\n }\n\n continue;\n }\n\n const subcommandObj = getSubcommandObj();\n\n // * Arguments check\n if (subcommandObj?.arguments?.length) {\n if (!results.arguments) {\n results.arguments = [];\n }\n\n const currentArgCount = results.arguments.length;\n\n // Any extra arguments are possibly positional\n if (currentArgCount < subcommandObj.arguments.length) {\n const argType = subcommandObj.arguments[currentArgCount].type;\n results.arguments.push({\n schema: argType,\n rawValue: arg,\n source: \"cli\",\n });\n continue;\n }\n }\n\n // * Positional check\n if (subcommandObj?.allowPositional) {\n if (!results.positional) {\n results.positional = [];\n }\n\n results.positional.push(arg);\n continue;\n }\n\n // * Unexpected\n if (!results.subcommand) {\n throw new Error(`Unexpected argument \"${arg}\": positional arguments are not allowed here`, {\n cause: \"zod-args-parser\",\n });\n }\n\n throw new Error(\n `Unexpected argument \"${arg}\": positional arguments are not allowed for subcommand \"${results.subcommand}\"`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n // * Check for missing options - set defaults - add `source`\n const subcommandObj = getSubcommandObj();\n if (!subcommandObj) {\n throw new Error(`Unknown subcommand: \"${results.subcommand}\"`, { cause: \"zod-args-parser\" });\n }\n\n // Options\n if (subcommandObj.options?.length) {\n for (const option of subcommandObj.options) {\n // option already exists\n if (option.name in results.options) continue;\n\n const optional = isOptionalSchema(option.type);\n const defaultValue = schemaDefaultValue(option.type);\n\n if (optional) {\n if (typeof defaultValue === \"undefined\") {\n continue;\n }\n\n results.options[option.name] = { name: option.name, schema: option.type, source: \"default\" };\n continue;\n }\n\n throw new Error(`Missing required option: ${transformOptionToArg(option.name)}`, { cause: \"zod-args-parser\" });\n }\n }\n\n // Arguments\n if (subcommandObj.arguments?.length) {\n const currentArgCount = results.arguments?.length ?? 0;\n const subcommandArgCount = subcommandObj.arguments.length;\n\n // missing arguments\n if (currentArgCount < subcommandArgCount) {\n for (let i = currentArgCount; i < subcommandArgCount; i++) {\n const argumentType = subcommandObj.arguments[i].type;\n const optional = isOptionalSchema(argumentType);\n const defaultValue = schemaDefaultValue(argumentType);\n\n if (optional) {\n if (typeof defaultValue === \"undefined\") {\n continue;\n }\n\n if (!results.arguments) results.arguments = [];\n\n results.arguments.push({ schema: argumentType, source: \"default\" });\n continue;\n }\n\n throw new Error(`the ${generateOrdinalSuffix(i)} argument is required: \"${subcommandObj.arguments[i].name}\"`, {\n cause: \"zod-args-parser\",\n });\n }\n }\n }\n\n return results;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export function findSubcommand(subCmdName,subcommandArr){return subcommandArr.find(c=>{if(c.name===subCmdName){return true;}return subCmdName&&c.aliases&&c.aliases.includes(subCmdName);});}export function findOption(optionArg,options){const validVarNames=optionArgToVarNames(optionArg);const isNegative=optionArg.startsWith("--no-");const option=options.find(o=>{if(validVarNames.has(o.name)){return true;}if(isNegative&&validVarNames.has(negateOption(o.name))){return true;}if(!o.aliases){return false;}if(o.aliases.some(a=>validVarNames.has(a))){return true;}if(isNegative&&o.aliases.map(negateOption).some(a=>validVarNames.has(a))){return true;}return false;});return option;}export function decoupleFlags(args){const flagsRe=/^-[a-z0-9]{2,}$/i;const result=[];for(let i=0;i<args.length;i++){const arg=args[i];const isCoupled=flagsRe.test(arg);if(!isCoupled){result.push(arg);continue;}const decoupledArr=arg.substring(1).split("").map(c=>"-"+c);result.push(...decoupledArr);}return result;}export function optionArgToVarNames(name){if(!name.startsWith("-")){throw new Error(`[parseArgOptionName] Invalid arg name: ${name}`,{cause:"zod-args-parser"});}name=name.startsWith("--")?name.substring(2):name.substring(1);name=name.toLowerCase();const results=new Set();const camelCase=name.replace(/-(.)/g,m=>m[1].toUpperCase());results.add(camelCase);results.add(camelCase.replace(/^(.)/,m=>m.toUpperCase()));const snake_case=name.replace(/-(.)/g,g=>"_"+g[1]);results.add(snake_case);results.add(snake_case.toUpperCase());return results;}export function isFlagArg(name){return /^-[A-Za-z]$/.test(name);}function isLongArg(name){return /^--[A-Za-z-]+[A-Za-z0-9]$/.test(name);}export function isOptionArg(name){if(typeof name!=="string"){return false;}return isFlagArg(name)||isLongArg(name);}export function negateOption(name){if(name.length===1){return name;}return"no"+name.replace(/^[a-z]/,g=>g.toUpperCase());}export function transformOptionToArg(name){if(name.length===1){return`-${name.toLowerCase()}`;}if(name.includes("_")||/[A-Z]+$/.test(name)){name=name.replace(/_/g,"-");return`--${name.toLowerCase()}`;}name=name.replace(/[A-Z]/g,(m,i)=>i?"-"+m:m);return`--${name.toLowerCase()}`;}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["findSubcommand","subCmdName","subcommandArr","find","c","name","aliases","includes","findOption","optionArg","options","validVarNames","optionArgToVarNames","isNegative","startsWith","option","o","has","negateOption","some","a","map","decoupleFlags","args","flagsRe","result","i","length","arg","isCoupled","test","push","decoupledArr","substring","split","Error","cause","toLowerCase","results","Set","camelCase","replace","m","toUpperCase","add","snake_case","g","isFlagArg","isLongArg","isOptionArg","transformOptionToArg"],"sourceRoot":"../../../../src/parser/parse","sources":["parser-helpers.ts"],"sourcesContent":["import type { Option, Subcommand } from \"../../types.js\";\n\n/**\n * Retrieves a subcommand object from an array of subcommands by matching the provided subcommand name against the\n * subcommand's name or its aliases.\n *\n * @param subCmdName - The name or alias of the subcommand to search for.\n * @param subcommandArr - An array of `Subcommand` objects to search within.\n * @returns The matching `Subcommand` object if found; otherwise, `undefined`.\n */\nexport function findSubcommand(subCmdName: string | undefined, subcommandArr: Subcommand[]): Subcommand | undefined {\n return subcommandArr.find(c => {\n // match for undefined too\n if (c.name === subCmdName) {\n return true;\n }\n\n // match for aliases\n return subCmdName && c.aliases && c.aliases.includes(subCmdName);\n });\n}\n\n/**\n * Finds and returns an `Option` object from the provided list that matches the given argument string.\n *\n * The function supports matching by option name, aliases, and their negated forms (e.g., `--no-` prefix).\n *\n * @param optionArg - The argument string to match (e.g., `--foo`, `--no-bar`, `-f`).\n * @param options - An array of `Option` objects to search through.\n * @returns The matching `Option` object if found; otherwise, `undefined`.\n */\nexport function findOption(optionArg: string, options: [Option, ...Option[]]): Option | undefined {\n const validVarNames = optionArgToVarNames(optionArg);\n const isNegative = optionArg.startsWith(\"--no-\");\n\n const option = options.find(o => {\n if (validVarNames.has(o.name)) {\n return true;\n }\n\n if (isNegative && validVarNames.has(negateOption(o.name))) {\n return true;\n }\n\n if (!o.aliases) {\n return false;\n }\n\n if (o.aliases.some(a => validVarNames.has(a))) {\n return true;\n }\n\n if (isNegative && o.aliases.map(negateOption).some(a => validVarNames.has(a))) {\n return true;\n }\n\n return false;\n });\n\n return option;\n}\n\n/** - Decouple flags E.g. `-rf` -> `-r, -f` */\nexport function decoupleFlags(args: string[]): string[] {\n const flagsRe = /^-[a-z0-9]{2,}$/i;\n\n const result = [];\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const isCoupled = flagsRe.test(arg);\n\n if (!isCoupled) {\n result.push(arg);\n continue;\n }\n\n const decoupledArr = arg\n .substring(1)\n .split(\"\")\n .map(c => \"-\" + c);\n\n result.push(...decoupledArr);\n }\n\n return result;\n}\n\n/**\n * - Transforms an option argument name to a valid JavaScript variable name\n *\n * @param name - Should start with `'--'` or `'-'`\n */\nexport function optionArgToVarNames(name: string): Set<string> {\n if (!name.startsWith(\"-\")) {\n throw new Error(`[parseArgOptionName] Invalid arg name: ${name}`, { cause: \"zod-args-parser\" });\n }\n\n name = name.startsWith(\"--\") ? name.substring(2) : name.substring(1); // remove prefix\n name = name.toLowerCase(); // lowercase\n\n const results = new Set<string>();\n\n // camelCase\n const camelCase = name.replace(/-(.)/g, m => m[1].toUpperCase());\n results.add(camelCase);\n\n // PascalCase (UpperCamelCase)\n results.add(camelCase.replace(/^(.)/, m => m.toUpperCase()));\n\n // snake_case\n const snake_case = name.replace(/-(.)/g, g => \"_\" + g[1]);\n results.add(snake_case);\n\n // SCREAMING_SNAKE_CASE\n results.add(snake_case.toUpperCase());\n\n return results;\n}\n\n/** - Check if an arg string is a short arg. E.g. `-i` -> `true` */\nexport function isFlagArg(name: string): boolean {\n return /^-[A-Za-z]$/.test(name);\n}\n\n/** - Check if an arg string is a long arg. E.g. `--input-dir` -> `true` */\nfunction isLongArg(name: string): boolean {\n return /^--[A-Za-z-]+[A-Za-z0-9]$/.test(name);\n}\n\n/** - Check if an arg string is an options arg. E.g. `--input-dir` -> `true` , `-i` -> `true` */\nexport function isOptionArg(name: string | boolean): boolean {\n if (typeof name !== \"string\") {\n return false;\n }\n\n return isFlagArg(name) || isLongArg(name);\n}\n\n/**\n * - Transform option name to no name. E.g. `include` -> `noInclude`\n * - For short name like `-i` it will be ignored\n */\nexport function negateOption(name: string): string {\n if (name.length === 1) {\n return name;\n }\n\n return \"no\" + name.replace(/^[a-z]/, g => g.toUpperCase());\n}\n\n/** - Reverse of `transformArg`. E.g. `InputDir` -> `--input-dir` , `i` -> `-i` */\nexport function transformOptionToArg(name: string): string {\n // single letter option name\n if (name.length === 1) {\n return `-${name.toLowerCase()}`;\n }\n\n // snake_case, SCREAMING_SNAKE_CASE\n if (name.includes(\"_\") || /[A-Z]+$/.test(name)) {\n name = name.replace(/_/g, \"-\");\n return `--${name.toLowerCase()}`;\n }\n\n // camelCase, PascalCase\n name = name.replace(/[A-Z]/g, (m, i) => (i ? \"-\" + m : m)); // add \"-\" before camel case letters except for the first letter\n return `--${name.toLowerCase()}`;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- import*as help from"../help-message/print-help-message.js";import{parse}from"./parse.js";export function safeParse(argsv,...params){const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const printCliHelp=opt=>help.printCliHelp(params,opt);const printSubcommandHelp=(subcommandStr,opt)=>{const subcommand=subcommandArr.find(c=>c.name===subcommandStr);if(!subcommand)return console.error(`Cannot print help for subcommand "${subcommandStr}" as it does not exist`);help.printSubcommandHelp(subcommand,opt,cliOptions.cliName);};try{const data=parse(argsv,...params);delete data.printCliHelp;delete data.printSubcommandHelp;return{success:true,data:data,printCliHelp,printSubcommandHelp};}catch(e){return{success:false,error:e,printCliHelp,printSubcommandHelp};}}
1
+ import*as help from"../help-message/format-cli.js";import{findSubcommand}from"./parse/parser-helpers.js";import{unsafeParse,unsafeParseAsync}from"./unsafe-parse.js";export function safeParse(argsv,...params){const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const printCliHelp=style=>help.printCliHelp(params,style);const printSubcommandHelp=(subCmdName,style)=>{const subcommand=findSubcommand(subCmdName,subcommandArr);if(!subcommand){return console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`);}help.printSubcommandHelp(subcommand,style,cliOptions.cliName);};try{const data=unsafeParse(argsv,...params);delete data.printCliHelp;delete data.printSubcommandHelp;return{success:true,data:data,printCliHelp,printSubcommandHelp};}catch(e){if(!(e instanceof Error)||e.cause!=="zod-args-parser")throw e;return{success:false,error:e,printCliHelp,printSubcommandHelp};}}export async function safeParseAsync(argsv,...params){const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const printCliHelp=style=>help.printCliHelp(params,style);const printSubcommandHelp=(subCmdName,style)=>{const subcommand=findSubcommand(subCmdName,subcommandArr);if(!subcommand){return console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`);}help.printSubcommandHelp(subcommand,style,cliOptions.cliName);};try{const data=await unsafeParseAsync(argsv,...params);delete data.printCliHelp;delete data.printSubcommandHelp;return{success:true,data:data,printCliHelp,printSubcommandHelp};}catch(e){if(!(e instanceof Error)||e.cause!=="zod-args-parser")throw e;return{success:false,error:e,printCliHelp,printSubcommandHelp};}}
@@ -1 +1 @@
1
- {"version":3,"names":["help","parse","safeParse","argsv","params","cliOptions","subcommandArr","printCliHelp","opt","printSubcommandHelp","subcommandStr","subcommand","find","c","name","console","error","cliName","data","success","e"],"sourceRoot":"../../../src/parser","sources":["safe-parse.ts"],"sourcesContent":["import * as help from \"../help-message/print-help-message.js\";\nimport { parse } from \"./parse.js\";\n\nimport type { Cli, NoSubcommand, PrintMethods, SafeParseResult, Subcommand } from \"../types.js\";\n\nexport function safeParse<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...params: [U, ...T]\n): SafeParseResult<[...T, NoSubcommand & U]> {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as Subcommand[];\n\n type PrintTypes = PrintMethods<T[number][\"name\"]>;\n type PrintCli = PrintTypes[\"printCliHelp\"];\n type PrintSubcommand = PrintTypes[\"printSubcommandHelp\"];\n\n const printCliHelp: PrintCli = opt => help.printCliHelp(params, opt);\n const printSubcommandHelp: PrintSubcommand = (subcommandStr, opt) => {\n const subcommand = subcommandArr.find(c => c.name === subcommandStr);\n if (!subcommand) return console.error(`Cannot print help for subcommand \"${subcommandStr}\" as it does not exist`);\n help.printSubcommandHelp(subcommand, opt, cliOptions.cliName);\n };\n\n try {\n const data = parse(argsv, ...params);\n // @ts-expect-error The operand of a 'delete' operator must be optional.\n delete data.printCliHelp;\n // @ts-expect-errorThe operand of a 'delete' operator must be optional.\n delete data.printSubcommandHelp;\n\n return {\n success: true,\n data: data as Omit<typeof data, \"printCliHelp\" | \"printSubcommandHelp\">,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n } catch (e) {\n return {\n success: false,\n error: e as Error,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n }\n}\n"],"mappings":"AAAA,MAAO,GAAK,CAAAA,IAAI,KAAM,uCAAuC,CAC7D,OAASC,KAAK,KAAQ,YAAY,CAIlC,MAAO,SAAS,CAAAC,SAASA,CACvBC,KAAe,CACf,GAAGC,MAAiB,CACuB,CAC3C,KAAM,CAAAC,UAAU,CAAI,SAAS,EAAI,CAAAD,MAAM,CAAC,CAAC,CAAC,CAAGA,MAAM,CAAC,CAAC,CAAC,CAAG,CAAC,CAAO,CACjE,KAAM,CAAAE,aAAa,CAAGF,MAAsB,CAM5C,KAAM,CAAAG,YAAsB,CAAGC,GAAG,EAAIR,IAAI,CAACO,YAAY,CAACH,MAAM,CAAEI,GAAG,CAAC,CACpE,KAAM,CAAAC,mBAAoC,CAAGA,CAACC,aAAa,CAAEF,GAAG,GAAK,CACnE,KAAM,CAAAG,UAAU,CAAGL,aAAa,CAACM,IAAI,CAACC,CAAC,EAAIA,CAAC,CAACC,IAAI,GAAKJ,aAAa,CAAC,CACpE,GAAI,CAACC,UAAU,CAAE,MAAO,CAAAI,OAAO,CAACC,KAAK,CAAC,qCAAqCN,aAAa,wBAAwB,CAAC,CACjHV,IAAI,CAACS,mBAAmB,CAACE,UAAU,CAAEH,GAAG,CAAEH,UAAU,CAACY,OAAO,CAAC,CAC/D,CAAC,CAED,GAAI,CACF,KAAM,CAAAC,IAAI,CAAGjB,KAAK,CAACE,KAAK,CAAE,GAAGC,MAAM,CAAC,CAEpC,MAAO,CAAAc,IAAI,CAACX,YAAY,CAExB,MAAO,CAAAW,IAAI,CAACT,mBAAmB,CAE/B,MAAO,CACLU,OAAO,CAAE,IAAI,CACbD,IAAI,CAAEA,IAAiE,CACvEX,YAAY,CACZE,mBACF,CAAC,CACH,CAAE,MAAOW,CAAC,CAAE,CACV,MAAO,CACLD,OAAO,CAAE,KAAK,CACdH,KAAK,CAAEI,CAAU,CACjBb,YAAY,CACZE,mBACF,CAAC,CACH,CACF","ignoreList":[]}
1
+ {"version":3,"names":["help","findSubcommand","unsafeParse","unsafeParseAsync","safeParse","argsv","params","cliOptions","subcommandArr","printCliHelp","style","printSubcommandHelp","subCmdName","subcommand","console","error","cliName","data","success","e","Error","cause","safeParseAsync"],"sourceRoot":"../../../src/parser","sources":["safe-parse.ts"],"sourcesContent":["import * as help from \"../help-message/format-cli.js\";\nimport { findSubcommand } from \"./parse/parser-helpers.js\";\nimport { unsafeParse, unsafeParseAsync } from \"./unsafe-parse.js\";\n\nimport type { Cli, NoSubcommand, PrintMethods, SafeParseResult, Subcommand } from \"../types.js\";\n\nexport function safeParse<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...params: [U, ...T]\n): SafeParseResult<[...T, NoSubcommand & U]> {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as Subcommand[];\n\n type PrintTypes = PrintMethods<T[number][\"name\"]>;\n type PrintCli = PrintTypes[\"printCliHelp\"];\n type PrintSubcommand = PrintTypes[\"printSubcommandHelp\"];\n\n const printCliHelp: PrintCli = style => help.printCliHelp(params, style);\n\n const printSubcommandHelp: PrintSubcommand = (subCmdName, style) => {\n const subcommand = findSubcommand(subCmdName, subcommandArr);\n if (!subcommand) {\n return console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n }\n\n help.printSubcommandHelp(subcommand, style, cliOptions.cliName);\n };\n\n try {\n const data = unsafeParse(argsv, ...params);\n // @ts-expect-error The operand of a 'delete' operator must be optional.\n delete data.printCliHelp;\n // @ts-expect-errorThe operand of a 'delete' operator must be optional.\n delete data.printSubcommandHelp;\n\n return {\n success: true,\n data: data as Omit<typeof data, \"printCliHelp\" | \"printSubcommandHelp\">,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n } catch (e) {\n if (!(e instanceof Error) || e.cause !== \"zod-args-parser\") throw e;\n return {\n success: false,\n error: e as Error,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n }\n}\n\nexport async function safeParseAsync<T extends Subcommand[], U extends Cli>(\n argsv: string[],\n ...params: [U, ...T]\n): Promise<SafeParseResult<[...T, NoSubcommand & U]>> {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as Subcommand[];\n\n type PrintTypes = PrintMethods<T[number][\"name\"]>;\n type PrintCli = PrintTypes[\"printCliHelp\"];\n type PrintSubcommand = PrintTypes[\"printSubcommandHelp\"];\n\n const printCliHelp: PrintCli = style => help.printCliHelp(params, style);\n\n const printSubcommandHelp: PrintSubcommand = (subCmdName, style) => {\n const subcommand = findSubcommand(subCmdName, subcommandArr);\n if (!subcommand) {\n return console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n }\n\n help.printSubcommandHelp(subcommand, style, cliOptions.cliName);\n };\n\n try {\n const data = await unsafeParseAsync(argsv, ...params);\n // @ts-expect-error The operand of a 'delete' operator must be optional.\n delete data.printCliHelp;\n // @ts-expect-errorThe operand of a 'delete' operator must be optional.\n delete data.printSubcommandHelp;\n\n return {\n success: true,\n data: data as Omit<typeof data, \"printCliHelp\" | \"printSubcommandHelp\">,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n } catch (e) {\n if (!(e instanceof Error) || e.cause !== \"zod-args-parser\") throw e;\n return {\n success: false,\n error: e as Error,\n printCliHelp,\n printSubcommandHelp,\n } as SafeParseResult<[...T, NoSubcommand & U]>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ import*as help from"../help-message/format-cli.js";import{findSubcommand}from"./parse/parser-helpers.js";import{validate}from"./validate/validate.js";import{parse}from"./parse/parse.js";export function unsafeParse(argv,...params){const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const parsedData=parse(argv,...params);const subcommandObj=findSubcommand(parsedData.subcommand,subcommandArr);if(!subcommandObj){throw new Error(`Subcommand "${parsedData.subcommand}" does not exist`,{cause:"zod-args-parser"});}if(subcommandObj.preValidation){subcommandObj.preValidation(parsedData);}const validateResult=validate(parsedData);Object.assign(validateResult,{printCliHelp(style){help.printCliHelp(params,style);},printSubcommandHelp(subCmdName,style){const subcommandObj=findSubcommand(subCmdName,subcommandArr);if(!subcommandObj){console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`);return;}help.printSubcommandHelp(subcommandObj,style,cliOptions.cliName);}});if(subcommandObj.action){subcommandObj.action(validateResult);}return validateResult;}export async function unsafeParseAsync(argv,...params){const cliOptions="cliName"in params[0]?params[0]:{};const subcommandArr=params;const parsedData=parse(argv,...params);const subcommandObj=findSubcommand(parsedData.subcommand,subcommandArr);if(!subcommandObj){throw new Error(`Subcommand "${parsedData.subcommand}" does not exist`,{cause:"zod-args-parser"});}if(subcommandObj.preValidation){await subcommandObj.preValidation(parsedData);}const validateResult=validate(parsedData);Object.assign(validateResult,{printCliHelp(style){help.printCliHelp(params,style);},printSubcommandHelp(subCmdName,style){const subcommandObj=findSubcommand(subCmdName,subcommandArr);if(!subcommandObj){console.error(`Cannot print help for subcommand "${subCmdName}" as it does not exist`);return;}help.printSubcommandHelp(subcommandObj,style,cliOptions.cliName);}});if(subcommandObj.action){await subcommandObj.action(validateResult);}return validateResult;}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["help","findSubcommand","validate","parse","unsafeParse","argv","params","cliOptions","subcommandArr","parsedData","subcommandObj","subcommand","Error","cause","preValidation","validateResult","Object","assign","printCliHelp","style","printSubcommandHelp","subCmdName","console","error","cliName","action","unsafeParseAsync"],"sourceRoot":"../../../src/parser","sources":["unsafe-parse.ts"],"sourcesContent":["import * as help from \"../help-message/format-cli.js\";\nimport { findSubcommand } from \"./parse/parser-helpers.js\";\nimport { validate } from \"./validate/validate.js\";\nimport { parse } from \"./parse/parse.js\";\n\nimport type { Cli, NoSubcommand, HelpMsgStyle, Subcommand, UnsafeParseResult } from \"../types.js\";\n\nexport function unsafeParse<T extends Subcommand[], U extends Cli>(\n argv: string[],\n ...params: [U, ...T]\n): UnsafeParseResult<[...T, NoSubcommand & U]> {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as unknown as T;\n\n // Parse\n const parsedData = parse(argv, ...params);\n\n const subcommandObj = findSubcommand(parsedData.subcommand, subcommandArr);\n if (!subcommandObj) {\n throw new Error(`Subcommand \"${parsedData.subcommand}\" does not exist`, { cause: \"zod-args-parser\" });\n }\n\n // Fire preValidation hook\n if (subcommandObj.preValidation) {\n subcommandObj.preValidation(parsedData);\n }\n\n // Validate\n const validateResult = validate(parsedData);\n\n Object.assign(validateResult, {\n printCliHelp(style?: Partial<HelpMsgStyle>) {\n help.printCliHelp(params, style);\n },\n printSubcommandHelp(subCmdName: string, style?: Partial<HelpMsgStyle>) {\n const subcommandObj = findSubcommand(subCmdName, subcommandArr);\n if (!subcommandObj) {\n console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n return;\n }\n\n help.printSubcommandHelp(subcommandObj, style, cliOptions.cliName);\n },\n });\n\n // Fire action\n if (subcommandObj.action) {\n subcommandObj.action(validateResult);\n }\n\n return validateResult as UnsafeParseResult<[...T, NoSubcommand & U]>;\n}\n\nexport async function unsafeParseAsync<T extends Subcommand[], U extends Cli>(\n argv: string[],\n ...params: [U, ...T]\n): Promise<UnsafeParseResult<[...T, NoSubcommand & U]>> {\n const cliOptions = (\"cliName\" in params[0] ? params[0] : {}) as U;\n const subcommandArr = params as unknown as T;\n\n // Parse\n const parsedData = parse(argv, ...params);\n\n const subcommandObj = findSubcommand(parsedData.subcommand, subcommandArr);\n if (!subcommandObj) {\n throw new Error(`Subcommand \"${parsedData.subcommand}\" does not exist`, { cause: \"zod-args-parser\" });\n }\n\n // Fire preValidation hook\n if (subcommandObj.preValidation) {\n await subcommandObj.preValidation(parsedData);\n }\n\n // Validate\n const validateResult = validate(parsedData);\n\n Object.assign(validateResult, {\n printCliHelp(style?: Partial<HelpMsgStyle>) {\n help.printCliHelp(params, style);\n },\n printSubcommandHelp(subCmdName: string, style?: Partial<HelpMsgStyle>) {\n const subcommandObj = findSubcommand(subCmdName, subcommandArr);\n if (!subcommandObj) {\n console.error(`Cannot print help for subcommand \"${subCmdName}\" as it does not exist`);\n return;\n }\n\n help.printSubcommandHelp(subcommandObj, style, cliOptions.cliName);\n },\n });\n\n // Fire action\n if (subcommandObj.action) {\n await subcommandObj.action(validateResult);\n }\n\n return validateResult as UnsafeParseResult<[...T, NoSubcommand & U]>;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src/parser/validate","sources":["validate-type.ts"],"sourcesContent":["import type { Argument, Option, Prettify, Schema, Subcommand, ToOptional, ZodInfer } from \"../../types.js\";\nimport type { ParseResult } from \"../parse/parse-types.js\";\n\ntype OptionsArr2RecordType<T extends Option[] | undefined> = T extends Option[]\n ? ToOptional<{ [K in T[number][\"name\"]]: ZodInfer<Extract<T[number], { name: K }>[\"type\"]> }>\n : object;\n\ntype ArgumentsArr2ArrType<T extends Argument[] | undefined> = T extends Argument[]\n ? { [K in keyof T]: T[K] extends { type: Schema } ? ZodInfer<T[K][\"type\"]> : never }\n : never;\n\nexport type ValidateResult<S extends Partial<Subcommand>[]> = {\n [K in keyof S]: Prettify<\n {\n subcommand: S[K][\"name\"] extends string ? S[K][\"name\"] : undefined;\n arguments: ArgumentsArr2ArrType<S[K][\"arguments\"]>;\n positional: S[K][\"allowPositional\"] extends true ? string[] : never;\n ctx: ParseResult<S>;\n } & OptionsArr2RecordType<S[K][\"options\"]>\n >;\n}[number];\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1 @@
1
+ import{prettifyError}from"zod/v4";import{generateOrdinalSuffix,stringToBoolean}from"../../utils.js";import{isBooleanSchema,safeParseSchema}from"../../zod-utils.js";export function validate(parsedData){const results={subcommand:parsedData.subcommand,positional:parsedData.positional,ctx:parsedData};for(const[optionName,{schema,rawValue,flag}]of Object.entries(parsedData.options)){let optionsValue=rawValue;if(flag&&rawValue&&isBooleanSchema(schema)){const booleanValue=stringToBoolean(rawValue);if(typeof booleanValue==="boolean"){const isNegated=flag.startsWith("--no");optionsValue=isNegated?!booleanValue:booleanValue;}}const res=safeParseSchema(schema,optionsValue);if(!res.success){throw new Error(`Invalid value "${rawValue}" for "${flag}": ${prettifyError(res.error)}`,{cause:"zod-args-parser"});}results[optionName]=res.data;}if(parsedData.arguments){if(!results.arguments)results.arguments=[];for(const{schema,rawValue}of parsedData.arguments){const argValue=rawValue&&isBooleanSchema(schema)?stringToBoolean(rawValue):rawValue;const res=safeParseSchema(schema,argValue);if(!res.success){throw new Error(`The ${generateOrdinalSuffix(results.arguments.length)} argument "${rawValue}" is invalid: ${prettifyError(res.error)}`,{cause:"zod-args-parser"});}results.arguments.push(res.data);}}return results;}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["prettifyError","generateOrdinalSuffix","stringToBoolean","isBooleanSchema","safeParseSchema","validate","parsedData","results","subcommand","positional","ctx","optionName","schema","rawValue","flag","Object","entries","options","optionsValue","booleanValue","isNegated","startsWith","res","success","Error","error","cause","data","arguments","argValue","length","push"],"sourceRoot":"../../../../src/parser/validate","sources":["validate.ts"],"sourcesContent":["import { prettifyError } from \"zod/v4\";\n\nimport { generateOrdinalSuffix, stringToBoolean } from \"../../utils.js\";\nimport { isBooleanSchema, safeParseSchema } from \"../../zod-utils.js\";\n\nimport type { ParseCtx } from \"../parse/parse-types.js\";\n\n/** The return result object temporarily type. used inside the `parse` function */\ntype ResultsTempType = Record<string, unknown> & {\n subcommand: string | undefined;\n positional?: string[];\n arguments?: unknown[];\n ctx: ParseCtx;\n};\n\nexport function validate(parsedData: ParseCtx) {\n const results: ResultsTempType = {\n subcommand: parsedData.subcommand,\n positional: parsedData.positional,\n ctx: parsedData,\n };\n\n // validate options\n for (const [optionName, { schema, rawValue, flag }] of Object.entries(parsedData.options)) {\n let optionsValue: string | boolean | undefined = rawValue;\n\n // infer boolean value if possible\n if (flag && rawValue && isBooleanSchema(schema)) {\n const booleanValue = stringToBoolean(rawValue);\n if (typeof booleanValue === \"boolean\") {\n const isNegated = flag.startsWith(\"--no\");\n optionsValue = isNegated ? !booleanValue : booleanValue;\n }\n }\n\n const res = safeParseSchema(schema, optionsValue);\n if (!res.success) {\n throw new Error(`Invalid value \"${rawValue}\" for \"${flag}\": ${prettifyError(res.error)}`, {\n cause: \"zod-args-parser\",\n });\n }\n\n results[optionName] = res.data;\n }\n\n // validate arguments\n if (parsedData.arguments) {\n if (!results.arguments) results.arguments = [];\n\n for (const { schema, rawValue } of parsedData.arguments) {\n const argValue = rawValue && isBooleanSchema(schema) ? stringToBoolean(rawValue) : rawValue;\n\n const res = safeParseSchema(schema, argValue);\n if (!res.success) {\n throw new Error(\n `The ${generateOrdinalSuffix(results.arguments.length)} argument \"${rawValue}\" is invalid: ${prettifyError(res.error)}`,\n { cause: \"zod-args-parser\" },\n );\n }\n\n results.arguments.push(res.data);\n }\n }\n\n return results;\n}\n"],"mappings":"AAAA,OAASA,aAAa,KAAQ,QAAQ,CAEtC,OAASC,qBAAqB,CAAEC,eAAe,KAAQ,gBAAgB,CACvE,OAASC,eAAe,CAAEC,eAAe,KAAQ,oBAAoB,CAYrE,MAAO,SAAS,CAAAC,QAAQA,CAACC,UAAoB,CAAE,CAC7C,KAAM,CAAAC,OAAwB,CAAG,CAC/BC,UAAU,CAAEF,UAAU,CAACE,UAAU,CACjCC,UAAU,CAAEH,UAAU,CAACG,UAAU,CACjCC,GAAG,CAAEJ,UACP,CAAC,CAGD,IAAK,KAAM,CAACK,UAAU,CAAE,CAAEC,MAAM,CAAEC,QAAQ,CAAEC,IAAK,CAAC,CAAC,EAAI,CAAAC,MAAM,CAACC,OAAO,CAACV,UAAU,CAACW,OAAO,CAAC,CAAE,CACzF,GAAI,CAAAC,YAA0C,CAAGL,QAAQ,CAGzD,GAAIC,IAAI,EAAID,QAAQ,EAAIV,eAAe,CAACS,MAAM,CAAC,CAAE,CAC/C,KAAM,CAAAO,YAAY,CAAGjB,eAAe,CAACW,QAAQ,CAAC,CAC9C,GAAI,MAAO,CAAAM,YAAY,GAAK,SAAS,CAAE,CACrC,KAAM,CAAAC,SAAS,CAAGN,IAAI,CAACO,UAAU,CAAC,MAAM,CAAC,CACzCH,YAAY,CAAGE,SAAS,CAAG,CAACD,YAAY,CAAGA,YAAY,CACzD,CACF,CAEA,KAAM,CAAAG,GAAG,CAAGlB,eAAe,CAACQ,MAAM,CAAEM,YAAY,CAAC,CACjD,GAAI,CAACI,GAAG,CAACC,OAAO,CAAE,CAChB,KAAM,IAAI,CAAAC,KAAK,CAAC,kBAAkBX,QAAQ,UAAUC,IAAI,MAAMd,aAAa,CAACsB,GAAG,CAACG,KAAK,CAAC,EAAE,CAAE,CACxFC,KAAK,CAAE,iBACT,CAAC,CAAC,CACJ,CAEAnB,OAAO,CAACI,UAAU,CAAC,CAAGW,GAAG,CAACK,IAAI,CAChC,CAGA,GAAIrB,UAAU,CAACsB,SAAS,CAAE,CACxB,GAAI,CAACrB,OAAO,CAACqB,SAAS,CAAErB,OAAO,CAACqB,SAAS,CAAG,EAAE,CAE9C,IAAK,KAAM,CAAEhB,MAAM,CAAEC,QAAS,CAAC,EAAI,CAAAP,UAAU,CAACsB,SAAS,CAAE,CACvD,KAAM,CAAAC,QAAQ,CAAGhB,QAAQ,EAAIV,eAAe,CAACS,MAAM,CAAC,CAAGV,eAAe,CAACW,QAAQ,CAAC,CAAGA,QAAQ,CAE3F,KAAM,CAAAS,GAAG,CAAGlB,eAAe,CAACQ,MAAM,CAAEiB,QAAQ,CAAC,CAC7C,GAAI,CAACP,GAAG,CAACC,OAAO,CAAE,CAChB,KAAM,IAAI,CAAAC,KAAK,CACb,OAAOvB,qBAAqB,CAACM,OAAO,CAACqB,SAAS,CAACE,MAAM,CAAC,cAAcjB,QAAQ,iBAAiBb,aAAa,CAACsB,GAAG,CAACG,KAAK,CAAC,EAAE,CACvH,CAAEC,KAAK,CAAE,iBAAkB,CAC7B,CAAC,CACH,CAEAnB,OAAO,CAACqB,SAAS,CAACG,IAAI,CAACT,GAAG,CAACK,IAAI,CAAC,CAClC,CACF,CAEA,MAAO,CAAApB,OAAO,CAChB","ignoreList":[]}
@@ -1 +1 @@
1
- import assert from"node:assert";import{z}from"zod";export function transformArg(name){assert(name.startsWith("-"),`[transformArg] Invalid arg name: ${name}`);name=name.startsWith("--")?name.substring(2):name.substring(1);return name.replace(/-([a-z])/g,g=>g[1].toUpperCase());}export function transformOptionToArg(name){name=name.replace(/^[A-Z]/g,g=>g.toLowerCase());if(name.length===1)return`-${name}`;return`--${name.replace(/[A-Z]/g,g=>"-"+g.toLowerCase())}`;}export function isFlagArg(name){return /^-[A-Z-a-z]$/.test(name);}export function isLongArg(name){return /^--[A-Z-a-z-]+[A-Z-a-z]$/.test(name);}export function isOptionArg(name){if(typeof name!=="string")return false;return isFlagArg(name)||isLongArg(name);}export function noName(name){if(name.length===1)return name;return"no"+name.replace(/^[a-z]/,g=>g.toUpperCase());}export function stringToBoolean(str){if(str.toLowerCase()==="true")return true;if(str.toLowerCase()==="false")return false;throw new Error(`[stringToBoolean] Invalid boolean value: "${str}"; Expected "true" or "false"`);}export function getOrdinalPlacement(index){if(index<0)return"";const suffixes=["th","st","nd","rd"];const lastDigit=index%10;const lastTwoDigits=index%100;const suffix=lastDigit===1&&lastTwoDigits!==11?suffixes[1]:lastDigit===2&&lastTwoDigits!==12?suffixes[2]:lastDigit===3&&lastTwoDigits!==13?suffixes[3]:suffixes[0];return`${index+1}${suffix}`;}export function isBooleanSchema(schema){let type=schema;while(type){if(type instanceof z.ZodBoolean){return true;}if(type instanceof z.ZodLiteral){return type.value===true||type.value===false;}type=type._def.innerType;}return false;}export function getDefaultValueFromSchema(schema){let type=schema;while(type){if(type instanceof z.ZodDefault){const defaultValue=type._def.defaultValue();return defaultValue;}type=type._def.innerType;}return undefined;}export function decoupleFlags(args){const flagsRe=/^-[a-z]{2,}$/i;const result=[];for(let i=0;i<args.length;i++){const arg=args[i];const isCoupled=flagsRe.test(arg);if(!isCoupled){result.push(arg);continue;}const decoupledArr=arg.substring(1).split("").map(c=>"-"+c);result.push(...decoupledArr);}return result;}
1
+ export function stringToBoolean(str){if(str.toLowerCase()==="true"){return true;}if(str.toLowerCase()==="false"){return false;}return str;}export function generateOrdinalSuffix(index){if(index<0)return"";const suffixes=["th","st","nd","rd"];const lastDigit=index%10;const lastTwoDigits=index%100;const suffix=lastDigit===1&&lastTwoDigits!==11?suffixes[1]:lastDigit===2&&lastTwoDigits!==12?suffixes[2]:lastDigit===3&&lastTwoDigits!==13?suffixes[3]:suffixes[0];return`${index+1}${suffix}`;}export function ln(count){return"\n".repeat(count);}export function indent(count){return" ".repeat(count);}export function concat(...messages){return messages.join(" ");}
@@ -1 +1 @@
1
- {"version":3,"names":["assert","z","transformArg","name","startsWith","substring","replace","g","toUpperCase","transformOptionToArg","toLowerCase","length","isFlagArg","test","isLongArg","isOptionArg","noName","stringToBoolean","str","Error","getOrdinalPlacement","index","suffixes","lastDigit","lastTwoDigits","suffix","isBooleanSchema","schema","type","ZodBoolean","ZodLiteral","value","_def","innerType","getDefaultValueFromSchema","ZodDefault","defaultValue","undefined","decoupleFlags","args","flagsRe","result","i","arg","isCoupled","push","decoupledArr","split","map","c"],"sourceRoot":"../../src","sources":["utils.ts"],"sourcesContent":["import assert from \"node:assert\";\nimport { z } from \"zod\";\n\n/**\n * @param name - Should start with `'--'`\n * @returns - The transformed name E.g. `--input-dir` -> `InputDir`\n */\nexport function transformArg(name: string): string {\n assert(name.startsWith(\"-\"), `[transformArg] Invalid arg name: ${name}`);\n name = name.startsWith(\"--\") ? name.substring(2) : name.substring(1);\n return name.replace(/-([a-z])/g, g => g[1].toUpperCase());\n}\n\n/** - Reverse of `transformArg`. E.g. `InputDir` -> `--input-dir` , `i` -> `-i` */\nexport function transformOptionToArg(name: string): string {\n name = name.replace(/^[A-Z]/g, g => g.toLowerCase()); // first letter always lower case\n if (name.length === 1) return `-${name}`;\n return `--${name.replace(/[A-Z]/g, g => \"-\" + g.toLowerCase())}`;\n}\n\n/** - Check if an arg string is a short arg. E.g. `-i` -> `true` */\nexport function isFlagArg(name: string): boolean {\n return /^-[A-Z-a-z]$/.test(name);\n}\n\n/** - Check if an arg string is a long arg. E.g. `--input-dir` -> `true` */\nexport function isLongArg(name: string): boolean {\n return /^--[A-Z-a-z-]+[A-Z-a-z]$/.test(name);\n}\n\n/** - Check if an arg string is an options arg. E.g. `--input-dir` -> `true` , `-i` -> `true` */\nexport function isOptionArg(name: string | boolean): boolean {\n if (typeof name !== \"string\") return false;\n return isFlagArg(name) || isLongArg(name);\n}\n\n/**\n * - Transform option name to no name. E.g. `include` -> `noInclude`\n * - For short name like `-i` it will be ignored\n */\nexport function noName(name: string): string {\n if (name.length === 1) return name;\n return \"no\" + name.replace(/^[a-z]/, g => g.toUpperCase());\n}\n\n/** - Convert string to boolean. E.g. `\"true\"` -> `true` , `\"false\"` -> `false` */\nexport function stringToBoolean(str: string): boolean {\n if (str.toLowerCase() === \"true\") return true;\n if (str.toLowerCase() === \"false\") return false;\n throw new Error(`[stringToBoolean] Invalid boolean value: \"${str}\"; Expected \"true\" or \"false\"`);\n}\n\nexport function getOrdinalPlacement(index: number): string {\n if (index < 0) return \"\";\n\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const lastDigit = index % 10;\n const lastTwoDigits = index % 100;\n\n const suffix =\n lastDigit === 1 && lastTwoDigits !== 11\n ? suffixes[1]\n : lastDigit === 2 && lastTwoDigits !== 12\n ? suffixes[2]\n : lastDigit === 3 && lastTwoDigits !== 13\n ? suffixes[3]\n : suffixes[0];\n\n return `${index + 1}${suffix}`;\n}\n\n/** - Check if a schema is a boolean */\nexport function isBooleanSchema(schema: z.ZodTypeAny): boolean {\n let type = schema;\n while (type) {\n if (type instanceof z.ZodBoolean) {\n return true;\n }\n\n if (type instanceof z.ZodLiteral) {\n return type.value === true || type.value === false;\n }\n\n type = type._def.innerType;\n }\n\n return false;\n}\n\nexport function getDefaultValueFromSchema(schema: z.ZodTypeAny): unknown | undefined {\n let type = schema;\n while (type) {\n if (type instanceof z.ZodDefault) {\n const defaultValue = type._def.defaultValue();\n return defaultValue;\n }\n\n type = type._def.innerType;\n }\n\n return undefined;\n}\n\n/** - Decouple flags E.g. `-rf` -> `-r, -f` */\nexport function decoupleFlags(args: string[]): string[] {\n const flagsRe = /^-[a-z]{2,}$/i;\n\n const result = [];\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const isCoupled = flagsRe.test(arg);\n\n if (!isCoupled) {\n result.push(arg);\n continue;\n }\n\n const decoupledArr = arg\n .substring(1)\n .split(\"\")\n .map(c => \"-\" + c);\n\n result.push(...decoupledArr);\n }\n\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["stringToBoolean","str","toLowerCase","generateOrdinalSuffix","index","suffixes","lastDigit","lastTwoDigits","suffix","ln","count","repeat","indent","concat","messages","join"],"sourceRoot":"../../src","sources":["utils.ts"],"sourcesContent":["/**\n * Converts a string to its corresponding boolean value if the string is \"true\" or \"false\" (case-insensitive).\n *\n * @param str - The input string to convert.\n * @returns `true` if the input is \"true\", `false` if the input is \"false\", or the original string otherwise.\n */\nexport function stringToBoolean(str: string): boolean | string {\n if (str.toLowerCase() === \"true\") {\n return true;\n }\n\n if (str.toLowerCase() === \"false\") {\n return false;\n }\n\n return str;\n}\n\n/**\n * Returns the ordinal representation of a given zero-based index.\n *\n * For example, passing `0` returns `\"1st\"`, `1` returns `\"2nd\"`, and so on.\n *\n * Handles special cases for numbers ending in 11, 12, or 13 (e.g., `10` returns `\"11th\"`).\n *\n * @param index - The zero-based index to convert to an ordinal string.\n * @returns The ordinal string representation (e.g., `\"1st\"`, `\"2nd\"`, `\"3rd\"`, `\"4th\"`, ...).\n */\nexport function generateOrdinalSuffix(index: number): string {\n if (index < 0) return \"\";\n\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const lastDigit = index % 10;\n const lastTwoDigits = index % 100;\n\n const suffix =\n lastDigit === 1 && lastTwoDigits !== 11\n ? suffixes[1]\n : lastDigit === 2 && lastTwoDigits !== 12\n ? suffixes[2]\n : lastDigit === 3 && lastTwoDigits !== 13\n ? suffixes[3]\n : suffixes[0];\n\n return `${index + 1}${suffix}`;\n}\n\n/** New line */\nexport function ln(count: number) {\n return \"\\n\".repeat(count);\n}\n\n/** Space */\nexport function indent(count: number) {\n return \" \".repeat(count);\n}\n\n/** Concat strings */\nexport function concat(...messages: string[]) {\n // messages = messages.filter(Boolean);\n return messages.join(\" \");\n}\n"],"mappings":"AAMA,MAAO,SAAS,CAAAA,eAAeA,CAACC,GAAW,CAAoB,CAC7D,GAAIA,GAAG,CAACC,WAAW,CAAC,CAAC,GAAK,MAAM,CAAE,CAChC,MAAO,KAAI,CACb,CAEA,GAAID,GAAG,CAACC,WAAW,CAAC,CAAC,GAAK,OAAO,CAAE,CACjC,MAAO,MAAK,CACd,CAEA,MAAO,CAAAD,GAAG,CACZ,CAYA,MAAO,SAAS,CAAAE,qBAAqBA,CAACC,KAAa,CAAU,CAC3D,GAAIA,KAAK,CAAG,CAAC,CAAE,MAAO,EAAE,CAExB,KAAM,CAAAC,QAAQ,CAAG,CAAC,IAAI,CAAE,IAAI,CAAE,IAAI,CAAE,IAAI,CAAC,CACzC,KAAM,CAAAC,SAAS,CAAGF,KAAK,CAAG,EAAE,CAC5B,KAAM,CAAAG,aAAa,CAAGH,KAAK,CAAG,GAAG,CAEjC,KAAM,CAAAI,MAAM,CACVF,SAAS,GAAK,CAAC,EAAIC,aAAa,GAAK,EAAE,CACnCF,QAAQ,CAAC,CAAC,CAAC,CACXC,SAAS,GAAK,CAAC,EAAIC,aAAa,GAAK,EAAE,CACrCF,QAAQ,CAAC,CAAC,CAAC,CACXC,SAAS,GAAK,CAAC,EAAIC,aAAa,GAAK,EAAE,CACrCF,QAAQ,CAAC,CAAC,CAAC,CACXA,QAAQ,CAAC,CAAC,CAAC,CAErB,MAAO,GAAGD,KAAK,CAAG,CAAC,GAAGI,MAAM,EAAE,CAChC,CAGA,MAAO,SAAS,CAAAC,EAAEA,CAACC,KAAa,CAAE,CAChC,MAAO,IAAI,CAACC,MAAM,CAACD,KAAK,CAAC,CAC3B,CAGA,MAAO,SAAS,CAAAE,MAAMA,CAACF,KAAa,CAAE,CACpC,MAAO,GAAG,CAACC,MAAM,CAACD,KAAK,CAAC,CAC1B,CAGA,MAAO,SAAS,CAAAG,MAAMA,CAAC,GAAGC,QAAkB,CAAE,CAE5C,MAAO,CAAAA,QAAQ,CAACC,IAAI,CAAC,GAAG,CAAC,CAC3B","ignoreList":[]}
@@ -0,0 +1 @@
1
+ import{ZodBoolean,ZodDefault,ZodEffects}from"zod/v3";import{safeParse}from"zod/v4/core";function isV4Schema(schema){return"_zod"in schema;}export function safeParseSchema(schema,value){if(isV4Schema(schema)){return safeParse(schema,value);}return schema.safeParse(value);}export function isBooleanSchema(schema){if(isV4Schema(schema)){return isBooleanV4Schema(schema);}return isBooleanV3Schema(schema);}function isBooleanV4Schema(schema){let def=schema._zod.def;while(def){if(def.type==="boolean"){return true;}if(isV4DefPipe(def)){return isBooleanV4Schema(def.out);}if(!isV4DefWithInnerType(def)){return false;}def=def.innerType._zod.def;}return false;}function isBooleanV3Schema(schema){let type=schema;while(type){if(type instanceof ZodBoolean){return true;}if(type instanceof ZodEffects){return isBooleanV3Schema(type._def.schema);}type=type._def.innerType;}return false;}export function schemaDefaultValue(schema){if(isV4Schema(schema)){return schemaV4DefaultValue(schema);}return schemaV3DefaultValue(schema);}function schemaV4DefaultValue(schema){let def=schema._zod.def;while(def){if(isDefaultV4Def(def)){return def.defaultValue;}if(isV4DefPipe(def)){return schemaV4DefaultValue(def.out);}if(!isV4DefWithInnerType(def)){return undefined;}def=def.innerType._zod.def;}return undefined;}function schemaV3DefaultValue(schema){let type=schema;while(type){if(type instanceof ZodDefault){return type._def.defaultValue();}if(type instanceof ZodEffects){return schemaV3DefaultValue(type._def.schema);}type=type._def.innerType;}return undefined;}export function schemaDescription(schema){if(isV4Schema(schema)){if(!("meta"in schema)||typeof schema.meta!=="function")return;return schema.meta()?.description;}return schema.description;}export function isOptionalSchema(schema){if(isV4Schema(schema)){return schema._zod.def.type==="optional"||schema._zod.def.type==="default";}return schema.isOptional();}function isDefaultV4Def(def){return def.type==="default";}function isV4DefWithInnerType(def){return new Set(["default","prefault","optional","nonoptional","nullable","success","catch","readonly","promise"]).has(def.type);}function isV4DefPipe(def){return def.type==="pipe";}export function stringToArray(val,sep=","){if(typeof val==="string"){return val.split(sep).map(s=>s.trim()).filter(Boolean);}return val;}export function stringToSet(val,sep=","){const maybeArray=stringToArray(val,sep);if(Array.isArray(maybeArray)){return new Set(maybeArray);}return val;}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ZodBoolean","ZodDefault","ZodEffects","safeParse","isV4Schema","schema","safeParseSchema","value","isBooleanSchema","isBooleanV4Schema","isBooleanV3Schema","def","_zod","type","isV4DefPipe","out","isV4DefWithInnerType","innerType","_def","schemaDefaultValue","schemaV4DefaultValue","schemaV3DefaultValue","isDefaultV4Def","defaultValue","undefined","schemaDescription","meta","description","isOptionalSchema","isOptional","Set","has","stringToArray","val","sep","split","map","s","trim","filter","Boolean","stringToSet","maybeArray","Array","isArray"],"sourceRoot":"../../src","sources":["zod-utils.ts"],"sourcesContent":["import { ZodBoolean, ZodDefault, ZodEffects } from \"zod/v3\";\nimport { safeParse } from \"zod/v4/core\";\n\nimport type * as Z4 from \"zod/v4/core\";\nimport type { Schema, SchemaV3, SchemaV4 } from \"./types.js\";\n\nfunction isV4Schema(schema: Schema): schema is SchemaV4 {\n return \"_zod\" in schema;\n}\n\n/** - Safe parse a value against a schema */\nexport function safeParseSchema(schema: Schema, value: unknown) {\n if (isV4Schema(schema)) {\n return safeParse(schema, value);\n }\n\n return schema.safeParse(value);\n}\n\n/** - Check if a schema is a boolean */\nexport function isBooleanSchema(schema: Schema): boolean {\n if (isV4Schema(schema)) {\n return isBooleanV4Schema(schema);\n }\n\n return isBooleanV3Schema(schema);\n}\n\nfunction isBooleanV4Schema(schema: SchemaV4): boolean {\n let def = schema._zod.def;\n\n while (def) {\n if (def.type === \"boolean\") {\n return true;\n }\n\n if (isV4DefPipe(def)) {\n return isBooleanV4Schema(def.out);\n }\n\n if (!isV4DefWithInnerType(def)) {\n return false;\n }\n\n def = def.innerType._zod.def;\n }\n\n return false;\n}\n\nfunction isBooleanV3Schema(schema: SchemaV3): boolean {\n let type = schema;\n while (type) {\n if (type instanceof ZodBoolean) {\n return true;\n }\n\n if (type instanceof ZodEffects) {\n return isBooleanV3Schema(type._def.schema);\n }\n\n type = type._def.innerType;\n }\n\n return false;\n}\n\n/** - Get the default value of a schema */\nexport function schemaDefaultValue(schema: Schema): unknown | undefined {\n if (isV4Schema(schema)) {\n return schemaV4DefaultValue(schema);\n }\n\n return schemaV3DefaultValue(schema);\n}\n\nfunction schemaV4DefaultValue(schema: SchemaV4): unknown | undefined {\n let def = schema._zod.def;\n\n while (def) {\n if (isDefaultV4Def(def)) {\n return def.defaultValue;\n }\n\n if (isV4DefPipe(def)) {\n return schemaV4DefaultValue(def.out);\n }\n\n if (!isV4DefWithInnerType(def)) {\n return undefined;\n }\n\n def = def.innerType._zod.def;\n }\n\n return undefined;\n}\n\nfunction schemaV3DefaultValue(schema: SchemaV3): unknown | undefined {\n let type = schema;\n while (type) {\n if (type instanceof ZodDefault) {\n return type._def.defaultValue();\n }\n\n if (type instanceof ZodEffects) {\n return schemaV3DefaultValue(type._def.schema);\n }\n\n type = type._def.innerType;\n }\n\n return undefined;\n}\n\n/** - Get the description of a schema */\nexport function schemaDescription(schema: Schema): string | undefined {\n if (isV4Schema(schema)) {\n if (!(\"meta\" in schema) || typeof schema.meta !== \"function\") return;\n return schema.meta()?.description;\n }\n\n return schema.description;\n}\n\n/** - Check if a schema is optional */\nexport function isOptionalSchema(schema: Schema): schema is Z4.$ZodOptional {\n if (isV4Schema(schema)) {\n return schema._zod.def.type === \"optional\" || schema._zod.def.type === \"default\";\n }\n\n return schema.isOptional();\n}\n\nfunction isDefaultV4Def(def: Z4.$ZodTypeDef): def is Z4.$ZodDefaultDef {\n return def.type === \"default\";\n}\n\ntype SchemaWithInnerType =\n | Z4.$ZodDefaultDef\n | Z4.$ZodPrefaultDef\n | Z4.$ZodOptionalDef\n | Z4.$ZodNonOptionalDef\n | Z4.$ZodNullableDef\n | Z4.$ZodSuccessDef\n | Z4.$ZodCatchDef\n | Z4.$ZodReadonlyDef\n | Z4.$ZodPromiseDef;\n\nfunction isV4DefWithInnerType(def: Z4.$ZodTypeDef): def is SchemaWithInnerType {\n return new Set([\n \"default\",\n \"prefault\",\n \"optional\",\n \"nonoptional\",\n \"nullable\",\n \"success\",\n \"catch\",\n \"readonly\",\n \"promise\",\n ]).has(def.type);\n}\n\nfunction isV4DefPipe(def: Z4.$ZodTypeDef): def is Z4.$ZodPipeDef {\n return def.type === \"pipe\";\n}\n\n/**\n * A preprocessing function for Zod that converts a string to an array of strings.\n *\n * @param val - The value given by zod.\n * @param sep - The separator to use when splitting the string. Defaults to \",\".\n */\nexport function stringToArray(val: unknown, sep: string = \",\") {\n if (typeof val === \"string\") {\n return val\n .split(sep)\n .map(s => s.trim())\n .filter(Boolean);\n }\n\n return val;\n}\n\n/**\n * A preprocessing function for Zod that converts a string to a `Set` of strings.\n *\n * @param val - The value given by zod.\n * @param sep - The separator to use when splitting the string. Defaults to \",\".\n */\nexport function stringToSet(val: unknown, sep: string = \",\") {\n const maybeArray = stringToArray(val, sep);\n\n if (Array.isArray(maybeArray)) {\n return new Set(maybeArray);\n }\n\n return val;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { ArgumentMetadata } from "../metadata/metadata-types.js";
2
+ import type { HelpMsgStyle } from "../types.js";
3
+ export declare function formatHelpMsgArguments(argsMetadata: ArgumentMetadata[], c: HelpMsgStyle, longest: number): string;
4
+ //# sourceMappingURL=format-arguments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-arguments.d.ts","sourceRoot":"","sources":["../../../src/help-message/format-arguments.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgCjH"}
@@ -0,0 +1,6 @@
1
+ import type { Cli, HelpMsgStyle, Subcommand } from "../types.js";
2
+ export declare function formatCliHelpMsg(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>): string;
3
+ export declare function formatSubcommandHelpMsg(subcommand: Subcommand, printStyle?: Partial<HelpMsgStyle>, cliName?: string): string;
4
+ export declare function printCliHelp(params: readonly [Cli, ...Subcommand[]], style?: Partial<HelpMsgStyle>): void;
5
+ export declare function printSubcommandHelp(subcommand: Subcommand, style?: Partial<HelpMsgStyle>, cliName?: string): void;
6
+ //# sourceMappingURL=format-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-cli.d.ts","sourceRoot":"","sources":["../../../src/help-message/format-cli.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAoF/G;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,SAAK,UAiB/G;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,QAElG;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,SAAK,QAEtG"}
@@ -0,0 +1,4 @@
1
+ import type { OptionMetadata } from "../metadata/metadata-types.js";
2
+ import type { HelpMsgStyle } from "../types.js";
3
+ export declare function formatHelpMsgOptions(optionsMetadata: OptionMetadata[], c: HelpMsgStyle, longest: number): string;
4
+ //# sourceMappingURL=format-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-options.d.ts","sourceRoot":"","sources":["../../../src/help-message/format-options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAoChH"}
@@ -0,0 +1,4 @@
1
+ import type { SubcommandMetadata } from "../metadata/metadata-types.js";
2
+ import type { HelpMsgStyle } from "../types.js";
3
+ export declare function formatHelpMsgCommands(subcommandsMetadata: SubcommandMetadata[], c: HelpMsgStyle, longest: number): string;
4
+ //# sourceMappingURL=format-subcommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-subcommands.d.ts","sourceRoot":"","sources":["../../../src/help-message/format-subcommands.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,qBAAqB,CACnC,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,MAAM,GACd,MAAM,CA2BR"}
@@ -0,0 +1,108 @@
1
+ export declare const helpMsgStyles: Readonly<{
2
+ default: {
3
+ title: import("chalk").ChalkInstance;
4
+ description: import("chalk").ChalkInstance;
5
+ default: import("chalk").ChalkInstance;
6
+ optional: import("chalk").ChalkInstance;
7
+ exampleTitle: import("chalk").ChalkInstance;
8
+ example: import("chalk").ChalkInstance;
9
+ command: import("chalk").ChalkInstance;
10
+ option: import("chalk").ChalkInstance;
11
+ argument: import("chalk").ChalkInstance;
12
+ placeholder: import("chalk").ChalkInstance;
13
+ punctuation: import("chalk").ChalkInstance;
14
+ };
15
+ dracula: {
16
+ title: import("chalk").ChalkInstance;
17
+ description: import("chalk").ChalkInstance;
18
+ default: import("chalk").ChalkInstance;
19
+ optional: import("chalk").ChalkInstance;
20
+ exampleTitle: import("chalk").ChalkInstance;
21
+ example: import("chalk").ChalkInstance;
22
+ command: import("chalk").ChalkInstance;
23
+ option: import("chalk").ChalkInstance;
24
+ argument: import("chalk").ChalkInstance;
25
+ placeholder: import("chalk").ChalkInstance;
26
+ punctuation: import("chalk").ChalkInstance;
27
+ };
28
+ solarizedDark: {
29
+ title: import("chalk").ChalkInstance;
30
+ description: import("chalk").ChalkInstance;
31
+ default: import("chalk").ChalkInstance;
32
+ optional: import("chalk").ChalkInstance;
33
+ exampleTitle: import("chalk").ChalkInstance;
34
+ example: import("chalk").ChalkInstance;
35
+ command: import("chalk").ChalkInstance;
36
+ option: import("chalk").ChalkInstance;
37
+ argument: import("chalk").ChalkInstance;
38
+ placeholder: import("chalk").ChalkInstance;
39
+ punctuation: import("chalk").ChalkInstance;
40
+ };
41
+ nord: {
42
+ title: import("chalk").ChalkInstance;
43
+ description: import("chalk").ChalkInstance;
44
+ default: import("chalk").ChalkInstance;
45
+ optional: import("chalk").ChalkInstance;
46
+ exampleTitle: import("chalk").ChalkInstance;
47
+ example: import("chalk").ChalkInstance;
48
+ command: import("chalk").ChalkInstance;
49
+ option: import("chalk").ChalkInstance;
50
+ argument: import("chalk").ChalkInstance;
51
+ placeholder: import("chalk").ChalkInstance;
52
+ punctuation: import("chalk").ChalkInstance;
53
+ };
54
+ html: {
55
+ title: (...str: unknown[]) => string;
56
+ description: (...str: unknown[]) => string;
57
+ default: (...str: unknown[]) => string;
58
+ optional: (...str: unknown[]) => string;
59
+ exampleTitle: (...str: unknown[]) => string;
60
+ example: (...str: unknown[]) => string;
61
+ command: (...str: unknown[]) => string;
62
+ option: (...str: unknown[]) => string;
63
+ argument: (...str: unknown[]) => string;
64
+ placeholder: (...str: unknown[]) => string;
65
+ punctuation: (...str: unknown[]) => string;
66
+ };
67
+ gruvboxDark: {
68
+ title: import("chalk").ChalkInstance;
69
+ description: import("chalk").ChalkInstance;
70
+ default: import("chalk").ChalkInstance;
71
+ optional: import("chalk").ChalkInstance;
72
+ exampleTitle: import("chalk").ChalkInstance;
73
+ example: import("chalk").ChalkInstance;
74
+ command: import("chalk").ChalkInstance;
75
+ option: import("chalk").ChalkInstance;
76
+ argument: import("chalk").ChalkInstance;
77
+ placeholder: import("chalk").ChalkInstance;
78
+ punctuation: import("chalk").ChalkInstance;
79
+ };
80
+ monokai: {
81
+ title: import("chalk").ChalkInstance;
82
+ description: import("chalk").ChalkInstance;
83
+ default: import("chalk").ChalkInstance;
84
+ optional: import("chalk").ChalkInstance;
85
+ exampleTitle: import("chalk").ChalkInstance;
86
+ example: import("chalk").ChalkInstance;
87
+ command: import("chalk").ChalkInstance;
88
+ option: import("chalk").ChalkInstance;
89
+ argument: import("chalk").ChalkInstance;
90
+ placeholder: import("chalk").ChalkInstance;
91
+ punctuation: import("chalk").ChalkInstance;
92
+ };
93
+ oneDark: {
94
+ title: import("chalk").ChalkInstance;
95
+ description: import("chalk").ChalkInstance;
96
+ default: import("chalk").ChalkInstance;
97
+ optional: import("chalk").ChalkInstance;
98
+ exampleTitle: import("chalk").ChalkInstance;
99
+ example: import("chalk").ChalkInstance;
100
+ command: import("chalk").ChalkInstance;
101
+ option: import("chalk").ChalkInstance;
102
+ argument: import("chalk").ChalkInstance;
103
+ placeholder: import("chalk").ChalkInstance;
104
+ punctuation: import("chalk").ChalkInstance;
105
+ };
106
+ readonly noColors: any;
107
+ }>;
108
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/help-message/styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgHe,CAAC"}
@@ -1,40 +1,28 @@
1
- import type { ActionFn, Argument, CheckDuplicatedOptions, Cli, Option, Prettify, Subcommand } from "./types.js";
2
- /**
3
- * - Insures that there is no extra keys in `obj` compared to `shape`
4
- * - Also checks objects in arrays useful for the keys `options` and `arguments`
5
- */
6
- type Exact<Obj extends object, Shape extends object> = {
7
- [K in keyof Obj]: K extends keyof Shape ? Obj[K] extends infer ObjArr extends object[] ? Required<Shape>[K] extends infer ShapeArr extends object[] ? ExactObjArr<ObjArr, ShapeArr[number]> : Obj[K] : Obj[K] : never;
8
- };
9
- /** - Insures that there is no extra keys in `obj` compared to `shape` */
10
- type ExactKeys<T extends object, U extends object> = {
11
- [K in keyof T]: K extends keyof U ? T[K] : never;
12
- };
13
- /** - Insures that there is no extra keys in the objects in an array compared to `shape` */
14
- type ExactObjArr<ObjArr extends object[], ShapeObj extends object> = {
15
- [K in keyof ObjArr]: ExactKeys<ObjArr[K], ShapeObj>;
16
- };
17
- /**
18
- * - Insures that there are no duplicated options
19
- * - Disallow extra keys
20
- */
21
- type CliInput<T extends Cli> = CheckDuplicatedOptions<T> extends T ? Exact<T, Cli> : CheckDuplicatedOptions<T>;
22
- export declare function createCli<const T extends Cli>(input: CliInput<T>): Prettify<CliInput<T> & ActionFn<T>>;
1
+ import type { ActionsFn, Argument, CheckArgumentsOptional, CheckDuplicatedArguments, CheckDuplicatedOptions, Cli, Option, Prettify, Subcommand } from "./types.js";
23
2
  /**
24
3
  * - Insures that there are no duplicated options
25
- * - Disallow extra keys
4
+ * - Insures that there are no duplicated arguments
5
+ * - Insures that only the last argument is optional
6
+ * - Insures no optional arguments are allowed when `allowPositional` is enabled
26
7
  */
27
- type SubcommandInput<T extends Subcommand> = CheckDuplicatedOptions<T> extends T ? Exact<T, Subcommand> : CheckDuplicatedOptions<T>;
28
- export declare function createSubcommand<const T extends Subcommand>(input: SubcommandInput<T>): Prettify<SubcommandInput<T> & ActionFn<T>>;
8
+ type CheckCliSubcommandInput<T extends Cli | Subcommand> = CheckDuplicatedOptions<T> extends infer Err extends string ? Err : CheckDuplicatedArguments<T> extends infer Err extends string ? Err : CheckArgumentsOptional<T> extends infer Err extends string ? Err : T;
9
+ export declare function createCli<const T extends Cli>(input: CheckCliSubcommandInput<T>): Prettify<typeof input & ActionsFn<T>>;
10
+ export declare function createSubcommand<const T extends Subcommand>(input: CheckCliSubcommandInput<T>): Prettify<typeof input & ActionsFn<T>>;
29
11
  /** - Insures that there are no duplicated options */
30
12
  type CheckOptionsInput<T extends Option[]> = CheckDuplicatedOptions<{
31
13
  options: T;
32
14
  }> extends infer Err extends string ? Err : T;
33
15
  export declare function createOptions<const T extends [Option, ...Option[]]>(options: CheckOptionsInput<T>): CheckOptionsInput<T>;
34
- export declare function createArguments<const T extends [Argument, ...Argument[]]>(args: T): T;
35
- export { printCliHelp, printSubcommandHelp } from "./help-message/print-help-message.js";
36
- export { parse } from "./parser/parse.js";
37
- export { safeParse } from "./parser/safe-parse.js";
16
+ /** - Insures that only the last argument is optional */
17
+ type CheckArgumentsInput<T extends Argument[]> = CheckArgumentsOptional<{
18
+ arguments: T;
19
+ }> extends infer Err extends string ? Err : T;
20
+ export declare function createArguments<const T extends [Argument, ...Argument[]]>(args: CheckArgumentsInput<T>): CheckArgumentsInput<T>;
21
+ export { formatCliHelpMsg, printCliHelp, formatSubcommandHelpMsg, printSubcommandHelp, } from "./help-message/format-cli.js";
22
+ export { helpMsgStyles } from "./help-message/styles.js";
23
+ export { unsafeParse as parse, unsafeParseAsync as parseAsync } from "./parser/unsafe-parse.js";
24
+ export { safeParse, safeParseAsync } from "./parser/safe-parse.js";
25
+ export { isOptionalSchema, schemaDefaultValue, stringToArray, stringToSet } from "./zod-utils.js";
38
26
  export { generateBashAutocompleteScript } from "./autocomplete-scripts/bash-autocomplete-script.js";
39
27
  export { generatePowerShellAutocompleteScript } from "./autocomplete-scripts/powershell-autocomplete-script.js";
40
28
  export { generateZshAutocompleteScript } from "./autocomplete-scripts/zsh-autocomplete-script.js";
@@ -44,4 +32,5 @@ export { getOptionsMetadata } from "./metadata/get-options-metadata.js";
44
32
  export { getSubcommandsMetadata } from "./metadata/get-subcommands-metadata.js";
45
33
  export { generateMarkdown } from "./markdown/generate-markdown.js";
46
34
  export type * from "./types.js";
35
+ export type * from "./metadata/metadata-types.js";
47
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,GAAG,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,KAAK,uBAAuB,CAAC,CAAC,SAAS,GAAG,GAAG,UAAU,IACrD,sBAAsB,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,MAAM,GACtD,GAAG,GACH,wBAAwB,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,MAAM,GAC1D,GAAG,GACH,sBAAsB,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,MAAM,GACxD,GAAG,GACH,CAAC,CAAC;AAEZ,wBAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAWV,QAAQ,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAC1G;AAED,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAWxB,QAAQ,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAC1G;AAED,qDAAqD;AACrD,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,IACvC,sBAAsB,CAAC;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC,SAAS,MAAM,GAAG,SAAS,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AAEpF,wBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,wBAEjG;AAED,wDAAwD;AACxD,KAAK,mBAAmB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAC3C,sBAAsB,CAAC;IAAE,SAAS,EAAE,CAAC,CAAA;CAAE,CAAC,SAAS,MAAM,GAAG,SAAS,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AAEtF,wBAAgB,eAAe,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,0BAEtG;AAED,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,gBAAgB,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElG,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,oCAAoC,EAAE,MAAM,0DAA0D,CAAC;AAChH,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAElG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,8BAA8B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-markdown.d.ts","sourceRoot":"","sources":["../../../src/markdown/generate-markdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAoB,GAAG,EAAkB,UAAU,EAAsB,MAAM,aAAa,CAAC;AAEzG,wBAAgB,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,CAqC1E"}
1
+ {"version":3,"file":"generate-markdown.d.ts","sourceRoot":"","sources":["../../../src/markdown/generate-markdown.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,CAqC1E"}