zod-args-parser 2.0.0-beta.0 → 2.0.0-beta.2

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 (475) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +230 -289
  3. package/lib/esm/autocomplete-scripts/bash-autocomplete-script.js +74 -2
  4. package/lib/esm/autocomplete-scripts/bash-autocomplete-script.js.map +7 -1
  5. package/lib/esm/autocomplete-scripts/powershell-autocomplete-script.js +90 -2
  6. package/lib/esm/autocomplete-scripts/powershell-autocomplete-script.js.map +7 -1
  7. package/lib/esm/autocomplete-scripts/zsh-autocomplete-script.js +39 -13
  8. package/lib/esm/autocomplete-scripts/zsh-autocomplete-script.js.map +7 -1
  9. package/lib/esm/cli-error/cli-error.js +38 -0
  10. package/lib/esm/cli-error/cli-error.js.map +7 -0
  11. package/lib/esm/cli-error/error-cause.js +12 -0
  12. package/lib/esm/cli-error/error-cause.js.map +7 -0
  13. package/lib/esm/cli-error/error-code/definition-error-code.js +23 -0
  14. package/lib/esm/cli-error/error-code/definition-error-code.js.map +7 -0
  15. package/lib/esm/cli-error/error-code/internal-error-code.js +10 -0
  16. package/lib/esm/cli-error/error-code/internal-error-code.js.map +7 -0
  17. package/lib/esm/cli-error/error-code/parse-error-code.js +18 -0
  18. package/lib/esm/cli-error/error-code/parse-error-code.js.map +7 -0
  19. package/lib/esm/cli-error/error-code/validation-error-code.js +17 -0
  20. package/lib/esm/cli-error/error-code/validation-error-code.js.map +7 -0
  21. package/lib/esm/cli-error/error-message/definition-error-message.js +70 -0
  22. package/lib/esm/cli-error/error-message/definition-error-message.js.map +7 -0
  23. package/lib/esm/cli-error/error-message/internal-error-message.js +16 -0
  24. package/lib/esm/cli-error/error-message/internal-error-message.js.map +7 -0
  25. package/lib/esm/cli-error/error-message/parse-error-message.js +40 -0
  26. package/lib/esm/cli-error/error-message/parse-error-message.js.map +7 -0
  27. package/lib/esm/cli-error/error-message/validation-error-message.js +60 -0
  28. package/lib/esm/cli-error/error-message/validation-error-message.js.map +7 -0
  29. package/lib/esm/coerce/coerce-methods.js +197 -2
  30. package/lib/esm/coerce/coerce-methods.js.map +7 -1
  31. package/lib/esm/coerce/string-to-array.js +17 -2
  32. package/lib/esm/coerce/string-to-array.js.map +7 -1
  33. package/lib/esm/coerce/string-to-primitive.js +73 -2
  34. package/lib/esm/coerce/string-to-primitive.js.map +7 -1
  35. package/lib/esm/coerce/string-to-set.js +17 -2
  36. package/lib/esm/coerce/string-to-set.js.map +7 -1
  37. package/lib/esm/definitions/define-arguments.js +10 -2
  38. package/lib/esm/definitions/define-arguments.js.map +7 -1
  39. package/lib/esm/definitions/define-cli.js +89 -2
  40. package/lib/esm/definitions/define-cli.js.map +7 -1
  41. package/lib/esm/definitions/define-options.js +10 -2
  42. package/lib/esm/definitions/define-options.js.map +7 -1
  43. package/lib/esm/definitions/define-subcommand.js +56 -2
  44. package/lib/esm/definitions/define-subcommand.js.map +7 -1
  45. package/lib/esm/definitions/validate-cli-definition.js +360 -2
  46. package/lib/esm/definitions/validate-cli-definition.js.map +7 -1
  47. package/lib/esm/help-message/format-arguments.js +48 -2
  48. package/lib/esm/help-message/format-arguments.js.map +7 -1
  49. package/lib/esm/help-message/format-options.js +50 -2
  50. package/lib/esm/help-message/format-options.js.map +7 -1
  51. package/lib/esm/help-message/format-subcommands.js +37 -2
  52. package/lib/esm/help-message/format-subcommands.js.map +7 -1
  53. package/lib/esm/help-message/generate-for-cli.js +71 -2
  54. package/lib/esm/help-message/generate-for-cli.js.map +7 -1
  55. package/lib/esm/help-message/generate-for-subcommand.js +23 -2
  56. package/lib/esm/help-message/generate-for-subcommand.js.map +7 -1
  57. package/lib/esm/help-message/print-help.js +14 -2
  58. package/lib/esm/help-message/print-help.js.map +7 -1
  59. package/lib/esm/help-message/set-defaults.js +29 -2
  60. package/lib/esm/help-message/set-defaults.js.map +7 -1
  61. package/lib/esm/help-message/styles.js +154 -2
  62. package/lib/esm/help-message/styles.js.map +7 -1
  63. package/lib/esm/help-message/terminal-markdown.js +121 -2
  64. package/lib/esm/help-message/terminal-markdown.js.map +7 -1
  65. package/lib/esm/index.js +52 -2
  66. package/lib/esm/index.js.map +7 -1
  67. package/lib/esm/markdown/generate-markdown.js +153 -2
  68. package/lib/esm/markdown/generate-markdown.js.map +7 -1
  69. package/lib/esm/metadata/arguments-metadata.js +26 -2
  70. package/lib/esm/metadata/arguments-metadata.js.map +7 -1
  71. package/lib/esm/metadata/cli-metadata.js +24 -2
  72. package/lib/esm/metadata/cli-metadata.js.map +7 -1
  73. package/lib/esm/metadata/options-metadata.js +35 -2
  74. package/lib/esm/metadata/options-metadata.js.map +7 -1
  75. package/lib/esm/metadata/subcommands-metadata.js +32 -2
  76. package/lib/esm/metadata/subcommands-metadata.js.map +7 -1
  77. package/lib/esm/parse/context/cli-context-builder.js +283 -2
  78. package/lib/esm/parse/context/cli-context-builder.js.map +7 -1
  79. package/lib/esm/parse/context/object-context-builder.js +62 -2
  80. package/lib/esm/parse/context/object-context-builder.js.map +7 -1
  81. package/lib/esm/parse/parser-utilities.js +108 -2
  82. package/lib/esm/parse/parser-utilities.js.map +7 -1
  83. package/lib/esm/parse/safe-parse.js +57 -2
  84. package/lib/esm/parse/safe-parse.js.map +7 -1
  85. package/lib/esm/parse/validation/validate-context.js +17 -2
  86. package/lib/esm/parse/validation/validate-context.js.map +7 -1
  87. package/lib/esm/parse/validation/validators/arguments.js +67 -2
  88. package/lib/esm/parse/validation/validators/arguments.js.map +7 -1
  89. package/lib/esm/parse/validation/validators/conflict.js +38 -2
  90. package/lib/esm/parse/validation/validators/conflict.js.map +7 -1
  91. package/lib/esm/parse/validation/validators/exclusive.js +39 -2
  92. package/lib/esm/parse/validation/validators/exclusive.js.map +7 -1
  93. package/lib/esm/parse/validation/validators/explicitly-passed.js +18 -2
  94. package/lib/esm/parse/validation/validators/explicitly-passed.js.map +7 -1
  95. package/lib/esm/parse/validation/validators/options.js +67 -2
  96. package/lib/esm/parse/validation/validators/options.js.map +7 -1
  97. package/lib/esm/parse/validation/validators/requires.js +43 -2
  98. package/lib/esm/parse/validation/validators/requires.js.map +7 -1
  99. package/lib/esm/utilities/parse-argv.js +61 -0
  100. package/lib/esm/utilities/parse-argv.js.map +7 -0
  101. package/lib/esm/utilities/schema-utilities.js +57 -0
  102. package/lib/esm/utilities/schema-utilities.js.map +7 -0
  103. package/lib/esm/utilities/utilities.js +122 -0
  104. package/lib/esm/utilities/utilities.js.map +7 -0
  105. package/lib/iife/index.js +1 -1
  106. package/lib/iife/index.js.map +1 -1
  107. package/lib/mjs/autocomplete-scripts/bash-autocomplete-script.mjs +74 -2
  108. package/lib/mjs/autocomplete-scripts/bash-autocomplete-script.mjs.map +7 -1
  109. package/lib/mjs/autocomplete-scripts/powershell-autocomplete-script.mjs +90 -2
  110. package/lib/mjs/autocomplete-scripts/powershell-autocomplete-script.mjs.map +7 -1
  111. package/lib/mjs/autocomplete-scripts/zsh-autocomplete-script.mjs +39 -13
  112. package/lib/mjs/autocomplete-scripts/zsh-autocomplete-script.mjs.map +7 -1
  113. package/lib/mjs/cli-error/cli-error.mjs +38 -0
  114. package/lib/mjs/cli-error/cli-error.mjs.map +7 -0
  115. package/lib/mjs/cli-error/error-cause.mjs +12 -0
  116. package/lib/mjs/cli-error/error-cause.mjs.map +7 -0
  117. package/lib/mjs/cli-error/error-code/definition-error-code.mjs +23 -0
  118. package/lib/mjs/cli-error/error-code/definition-error-code.mjs.map +7 -0
  119. package/lib/mjs/cli-error/error-code/internal-error-code.mjs +10 -0
  120. package/lib/mjs/cli-error/error-code/internal-error-code.mjs.map +7 -0
  121. package/lib/mjs/cli-error/error-code/parse-error-code.mjs +18 -0
  122. package/lib/mjs/cli-error/error-code/parse-error-code.mjs.map +7 -0
  123. package/lib/mjs/cli-error/error-code/validation-error-code.mjs +17 -0
  124. package/lib/mjs/cli-error/error-code/validation-error-code.mjs.map +7 -0
  125. package/lib/mjs/cli-error/error-message/definition-error-message.mjs +70 -0
  126. package/lib/mjs/cli-error/error-message/definition-error-message.mjs.map +7 -0
  127. package/lib/mjs/cli-error/error-message/internal-error-message.mjs +16 -0
  128. package/lib/mjs/cli-error/error-message/internal-error-message.mjs.map +7 -0
  129. package/lib/mjs/cli-error/error-message/parse-error-message.mjs +40 -0
  130. package/lib/mjs/cli-error/error-message/parse-error-message.mjs.map +7 -0
  131. package/lib/mjs/cli-error/error-message/validation-error-message.mjs +60 -0
  132. package/lib/mjs/cli-error/error-message/validation-error-message.mjs.map +7 -0
  133. package/lib/mjs/coerce/coerce-methods.mjs +197 -2
  134. package/lib/mjs/coerce/coerce-methods.mjs.map +7 -1
  135. package/lib/mjs/coerce/string-to-array.mjs +17 -2
  136. package/lib/mjs/coerce/string-to-array.mjs.map +7 -1
  137. package/lib/mjs/coerce/string-to-primitive.mjs +73 -2
  138. package/lib/mjs/coerce/string-to-primitive.mjs.map +7 -1
  139. package/lib/mjs/coerce/string-to-set.mjs +17 -2
  140. package/lib/mjs/coerce/string-to-set.mjs.map +7 -1
  141. package/lib/mjs/definitions/define-arguments.mjs +10 -2
  142. package/lib/mjs/definitions/define-arguments.mjs.map +7 -1
  143. package/lib/mjs/definitions/define-cli.mjs +89 -2
  144. package/lib/mjs/definitions/define-cli.mjs.map +7 -1
  145. package/lib/mjs/definitions/define-options.mjs +10 -2
  146. package/lib/mjs/definitions/define-options.mjs.map +7 -1
  147. package/lib/mjs/definitions/define-subcommand.mjs +56 -2
  148. package/lib/mjs/definitions/define-subcommand.mjs.map +7 -1
  149. package/lib/mjs/definitions/validate-cli-definition.mjs +360 -2
  150. package/lib/mjs/definitions/validate-cli-definition.mjs.map +7 -1
  151. package/lib/mjs/help-message/format-arguments.mjs +48 -2
  152. package/lib/mjs/help-message/format-arguments.mjs.map +7 -1
  153. package/lib/mjs/help-message/format-options.mjs +50 -2
  154. package/lib/mjs/help-message/format-options.mjs.map +7 -1
  155. package/lib/mjs/help-message/format-subcommands.mjs +37 -2
  156. package/lib/mjs/help-message/format-subcommands.mjs.map +7 -1
  157. package/lib/mjs/help-message/generate-for-cli.mjs +71 -2
  158. package/lib/mjs/help-message/generate-for-cli.mjs.map +7 -1
  159. package/lib/mjs/help-message/generate-for-subcommand.mjs +23 -2
  160. package/lib/mjs/help-message/generate-for-subcommand.mjs.map +7 -1
  161. package/lib/mjs/help-message/print-help.mjs +14 -2
  162. package/lib/mjs/help-message/print-help.mjs.map +7 -1
  163. package/lib/mjs/help-message/set-defaults.mjs +29 -2
  164. package/lib/mjs/help-message/set-defaults.mjs.map +7 -1
  165. package/lib/mjs/help-message/styles.mjs +154 -2
  166. package/lib/mjs/help-message/styles.mjs.map +7 -1
  167. package/lib/mjs/help-message/terminal-markdown.mjs +121 -2
  168. package/lib/mjs/help-message/terminal-markdown.mjs.map +7 -1
  169. package/lib/mjs/index.mjs +52 -2
  170. package/lib/mjs/index.mjs.map +7 -1
  171. package/lib/mjs/markdown/generate-markdown.mjs +153 -2
  172. package/lib/mjs/markdown/generate-markdown.mjs.map +7 -1
  173. package/lib/mjs/metadata/arguments-metadata.mjs +26 -2
  174. package/lib/mjs/metadata/arguments-metadata.mjs.map +7 -1
  175. package/lib/mjs/metadata/cli-metadata.mjs +24 -2
  176. package/lib/mjs/metadata/cli-metadata.mjs.map +7 -1
  177. package/lib/mjs/metadata/options-metadata.mjs +35 -2
  178. package/lib/mjs/metadata/options-metadata.mjs.map +7 -1
  179. package/lib/mjs/metadata/subcommands-metadata.mjs +32 -2
  180. package/lib/mjs/metadata/subcommands-metadata.mjs.map +7 -1
  181. package/lib/mjs/parse/context/cli-context-builder.mjs +283 -2
  182. package/lib/mjs/parse/context/cli-context-builder.mjs.map +7 -1
  183. package/lib/mjs/parse/context/object-context-builder.mjs +62 -2
  184. package/lib/mjs/parse/context/object-context-builder.mjs.map +7 -1
  185. package/lib/mjs/parse/parser-utilities.mjs +108 -2
  186. package/lib/mjs/parse/parser-utilities.mjs.map +7 -1
  187. package/lib/mjs/parse/safe-parse.mjs +57 -2
  188. package/lib/mjs/parse/safe-parse.mjs.map +7 -1
  189. package/lib/mjs/parse/validation/validate-context.mjs +17 -2
  190. package/lib/mjs/parse/validation/validate-context.mjs.map +7 -1
  191. package/lib/mjs/parse/validation/validators/arguments.mjs +67 -2
  192. package/lib/mjs/parse/validation/validators/arguments.mjs.map +7 -1
  193. package/lib/mjs/parse/validation/validators/conflict.mjs +38 -2
  194. package/lib/mjs/parse/validation/validators/conflict.mjs.map +7 -1
  195. package/lib/mjs/parse/validation/validators/exclusive.mjs +39 -2
  196. package/lib/mjs/parse/validation/validators/exclusive.mjs.map +7 -1
  197. package/lib/mjs/parse/validation/validators/explicitly-passed.mjs +18 -2
  198. package/lib/mjs/parse/validation/validators/explicitly-passed.mjs.map +7 -1
  199. package/lib/mjs/parse/validation/validators/options.mjs +67 -2
  200. package/lib/mjs/parse/validation/validators/options.mjs.map +7 -1
  201. package/lib/mjs/parse/validation/validators/requires.mjs +43 -2
  202. package/lib/mjs/parse/validation/validators/requires.mjs.map +7 -1
  203. package/lib/mjs/utilities/parse-argv.mjs +61 -0
  204. package/lib/mjs/utilities/parse-argv.mjs.map +7 -0
  205. package/lib/mjs/utilities/schema-utilities.mjs +57 -0
  206. package/lib/mjs/utilities/schema-utilities.mjs.map +7 -0
  207. package/lib/mjs/utilities/utilities.mjs +122 -0
  208. package/lib/mjs/utilities/utilities.mjs.map +7 -0
  209. package/lib/{typescript → types}/autocomplete-scripts/bash-autocomplete-script.d.ts.map +1 -1
  210. package/lib/types/autocomplete-scripts/powershell-autocomplete-script.d.ts +15 -0
  211. package/lib/{typescript → types}/autocomplete-scripts/powershell-autocomplete-script.d.ts.map +1 -1
  212. package/lib/types/autocomplete-scripts/zsh-autocomplete-script.d.ts +4 -0
  213. package/lib/{typescript → types}/autocomplete-scripts/zsh-autocomplete-script.d.ts.map +1 -1
  214. package/lib/types/cli-error/cli-error.d.ts +152 -0
  215. package/lib/types/cli-error/cli-error.d.ts.map +1 -0
  216. package/lib/types/cli-error/error-cause.d.ts +5 -0
  217. package/lib/types/cli-error/error-cause.d.ts.map +1 -0
  218. package/lib/types/cli-error/error-code/definition-error-code.d.ts +5 -0
  219. package/lib/types/cli-error/error-code/definition-error-code.d.ts.map +1 -0
  220. package/lib/types/cli-error/error-code/internal-error-code.d.ts +5 -0
  221. package/lib/types/cli-error/error-code/internal-error-code.d.ts.map +1 -0
  222. package/lib/types/cli-error/error-code/parse-error-code.d.ts +5 -0
  223. package/lib/types/cli-error/error-code/parse-error-code.d.ts.map +1 -0
  224. package/lib/types/cli-error/error-code/validation-error-code.d.ts +5 -0
  225. package/lib/types/cli-error/error-code/validation-error-code.d.ts.map +1 -0
  226. package/lib/types/cli-error/error-message/definition-error-message.d.ts +3 -0
  227. package/lib/types/cli-error/error-message/definition-error-message.d.ts.map +1 -0
  228. package/lib/types/cli-error/error-message/internal-error-message.d.ts +3 -0
  229. package/lib/types/cli-error/error-message/internal-error-message.d.ts.map +1 -0
  230. package/lib/types/cli-error/error-message/parse-error-message.d.ts +3 -0
  231. package/lib/types/cli-error/error-message/parse-error-message.d.ts.map +1 -0
  232. package/lib/types/cli-error/error-message/validation-error-message.d.ts +3 -0
  233. package/lib/types/cli-error/error-message/validation-error-message.d.ts.map +1 -0
  234. package/lib/types/coerce/coerce-methods.d.ts +122 -0
  235. package/lib/types/coerce/coerce-methods.d.ts.map +1 -0
  236. package/lib/{typescript → types}/coerce/string-to-array.d.ts +2 -2
  237. package/lib/types/coerce/string-to-array.d.ts.map +1 -0
  238. package/lib/types/coerce/string-to-primitive.d.ts +21 -0
  239. package/lib/types/coerce/string-to-primitive.d.ts.map +1 -0
  240. package/lib/{typescript → types}/coerce/string-to-set.d.ts +2 -2
  241. package/lib/{typescript → types}/coerce/string-to-set.d.ts.map +1 -1
  242. package/lib/{typescript → types}/definitions/define-cli.d.ts +2 -6
  243. package/lib/types/definitions/define-cli.d.ts.map +1 -0
  244. package/lib/{typescript → types}/definitions/define-subcommand.d.ts +2 -4
  245. package/lib/types/definitions/define-subcommand.d.ts.map +1 -0
  246. package/lib/{typescript → types}/definitions/validate-cli-definition.d.ts +1 -1
  247. package/lib/types/definitions/validate-cli-definition.d.ts.map +1 -0
  248. package/lib/{typescript → types}/help-message/terminal-markdown.d.ts.map +1 -1
  249. package/lib/{typescript → types}/index.d.ts +7 -0
  250. package/lib/{typescript → types}/index.d.ts.map +1 -1
  251. package/lib/{typescript → types}/metadata/arguments-metadata.d.ts.map +1 -1
  252. package/lib/{typescript → types}/metadata/options-metadata.d.ts.map +1 -1
  253. package/lib/{typescript → types}/parse/context/cli-context-builder.d.ts +1 -1
  254. package/lib/{typescript → types}/parse/context/cli-context-builder.d.ts.map +1 -1
  255. package/lib/{typescript → types}/parse/context/object-context-builder.d.ts +1 -1
  256. package/lib/types/parse/context/object-context-builder.d.ts.map +1 -0
  257. package/lib/{typescript → types}/parse/parser-utilities.d.ts +9 -0
  258. package/lib/{typescript → types}/parse/parser-utilities.d.ts.map +1 -1
  259. package/lib/{typescript → types}/parse/safe-parse.d.ts.map +1 -1
  260. package/lib/{typescript → types}/parse/validation/validate-context.d.ts +1 -1
  261. package/lib/{typescript → types}/parse/validation/validate-context.d.ts.map +1 -1
  262. package/lib/{typescript → types}/parse/validation/validators/arguments.d.ts +1 -1
  263. package/lib/{typescript → types}/parse/validation/validators/arguments.d.ts.map +1 -1
  264. package/lib/{typescript → types}/parse/validation/validators/conflict.d.ts +3 -3
  265. package/lib/{typescript → types}/parse/validation/validators/conflict.d.ts.map +1 -1
  266. package/lib/{typescript → types}/parse/validation/validators/exclusive.d.ts +3 -3
  267. package/lib/{typescript → types}/parse/validation/validators/exclusive.d.ts.map +1 -1
  268. package/lib/{typescript → types}/parse/validation/validators/options.d.ts +1 -1
  269. package/lib/{typescript → types}/parse/validation/validators/options.d.ts.map +1 -1
  270. package/lib/{typescript → types}/parse/validation/validators/requires.d.ts +3 -3
  271. package/lib/{typescript → types}/parse/validation/validators/requires.d.ts.map +1 -1
  272. package/lib/{typescript → types}/types/definitions-types.d.ts +35 -4
  273. package/lib/types/types/definitions-types.d.ts.map +1 -0
  274. package/lib/types/types/error-types.d.ts +275 -0
  275. package/lib/types/types/error-types.d.ts.map +1 -0
  276. package/lib/{typescript → types}/types/io-types.d.ts +1 -1
  277. package/lib/types/types/types.d.ts +146 -0
  278. package/lib/types/types/types.d.ts.map +1 -0
  279. package/lib/{typescript → types}/types/utilities-types.d.ts +0 -2
  280. package/lib/{typescript → types}/types/utilities-types.d.ts.map +1 -1
  281. package/lib/types/utilities/parse-argv.d.ts +3 -0
  282. package/lib/types/utilities/parse-argv.d.ts.map +1 -0
  283. package/lib/types/utilities/schema-utilities.d.ts +15 -0
  284. package/lib/types/utilities/schema-utilities.d.ts.map +1 -0
  285. package/lib/{typescript → types/utilities}/utilities.d.ts +12 -15
  286. package/lib/types/utilities/utilities.d.ts.map +1 -0
  287. package/package.json +7 -7
  288. package/src/autocomplete-scripts/bash-autocomplete-script.ts +14 -12
  289. package/src/autocomplete-scripts/powershell-autocomplete-script.ts +67 -33
  290. package/src/autocomplete-scripts/zsh-autocomplete-script.ts +39 -31
  291. package/src/cli-error/cli-error.ts +44 -0
  292. package/src/cli-error/error-cause.ts +10 -0
  293. package/src/cli-error/error-code/definition-error-code.ts +21 -0
  294. package/src/cli-error/error-code/internal-error-code.ts +8 -0
  295. package/src/cli-error/error-code/parse-error-code.ts +16 -0
  296. package/src/cli-error/error-code/validation-error-code.ts +15 -0
  297. package/src/cli-error/error-message/definition-error-message.ts +144 -0
  298. package/src/cli-error/error-message/internal-error-message.ts +19 -0
  299. package/src/cli-error/error-message/parse-error-message.ts +76 -0
  300. package/src/cli-error/error-message/validation-error-message.ts +104 -0
  301. package/src/coerce/coerce-methods.ts +194 -39
  302. package/src/coerce/string-to-array.ts +2 -2
  303. package/src/coerce/string-to-primitive.ts +72 -13
  304. package/src/coerce/string-to-set.ts +2 -2
  305. package/src/definitions/define-arguments.ts +1 -1
  306. package/src/definitions/define-cli.ts +65 -30
  307. package/src/definitions/define-options.ts +1 -1
  308. package/src/definitions/define-subcommand.ts +47 -17
  309. package/src/definitions/validate-cli-definition.ts +287 -172
  310. package/src/help-message/format-arguments.ts +1 -1
  311. package/src/help-message/format-options.ts +1 -1
  312. package/src/help-message/format-subcommands.ts +1 -1
  313. package/src/help-message/generate-for-cli.ts +1 -1
  314. package/src/help-message/terminal-markdown.ts +3 -4
  315. package/src/index.ts +16 -0
  316. package/src/markdown/generate-markdown.ts +5 -4
  317. package/src/metadata/arguments-metadata.ts +2 -1
  318. package/src/metadata/options-metadata.ts +2 -1
  319. package/src/parse/context/cli-context-builder.ts +166 -39
  320. package/src/parse/context/object-context-builder.ts +37 -11
  321. package/src/parse/parser-utilities.ts +24 -10
  322. package/src/parse/safe-parse.ts +3 -6
  323. package/src/parse/validation/validate-context.ts +1 -1
  324. package/src/parse/validation/validators/arguments.ts +42 -14
  325. package/src/parse/validation/validators/conflict.ts +11 -20
  326. package/src/parse/validation/validators/exclusive.ts +16 -25
  327. package/src/parse/validation/validators/options.ts +40 -12
  328. package/src/parse/validation/validators/requires.ts +11 -20
  329. package/src/types/definitions-types.ts +36 -8
  330. package/src/types/error-types.ts +326 -0
  331. package/src/types/io-types.ts +1 -1
  332. package/src/types/types.ts +100 -7
  333. package/src/types/utilities-types.ts +0 -10
  334. package/src/utilities/parse-argv.ts +79 -0
  335. package/src/utilities/schema-utilities.ts +72 -0
  336. package/src/{utilities.ts → utilities/utilities.ts} +25 -138
  337. package/lib/cjs/autocomplete-scripts/bash-autocomplete-script.cjs +0 -2
  338. package/lib/cjs/autocomplete-scripts/bash-autocomplete-script.cjs.map +0 -1
  339. package/lib/cjs/autocomplete-scripts/powershell-autocomplete-script.cjs +0 -2
  340. package/lib/cjs/autocomplete-scripts/powershell-autocomplete-script.cjs.map +0 -1
  341. package/lib/cjs/autocomplete-scripts/zsh-autocomplete-script.cjs +0 -42
  342. package/lib/cjs/autocomplete-scripts/zsh-autocomplete-script.cjs.map +0 -1
  343. package/lib/cjs/coerce/coerce-methods.cjs +0 -2
  344. package/lib/cjs/coerce/coerce-methods.cjs.map +0 -1
  345. package/lib/cjs/coerce/string-to-array.cjs +0 -2
  346. package/lib/cjs/coerce/string-to-array.cjs.map +0 -1
  347. package/lib/cjs/coerce/string-to-primitive.cjs +0 -2
  348. package/lib/cjs/coerce/string-to-primitive.cjs.map +0 -1
  349. package/lib/cjs/coerce/string-to-set.cjs +0 -2
  350. package/lib/cjs/coerce/string-to-set.cjs.map +0 -1
  351. package/lib/cjs/definitions/define-arguments.cjs +0 -2
  352. package/lib/cjs/definitions/define-arguments.cjs.map +0 -1
  353. package/lib/cjs/definitions/define-cli.cjs +0 -2
  354. package/lib/cjs/definitions/define-cli.cjs.map +0 -1
  355. package/lib/cjs/definitions/define-options.cjs +0 -2
  356. package/lib/cjs/definitions/define-options.cjs.map +0 -1
  357. package/lib/cjs/definitions/define-subcommand.cjs +0 -2
  358. package/lib/cjs/definitions/define-subcommand.cjs.map +0 -1
  359. package/lib/cjs/definitions/validate-cli-definition.cjs +0 -2
  360. package/lib/cjs/definitions/validate-cli-definition.cjs.map +0 -1
  361. package/lib/cjs/help-message/format-arguments.cjs +0 -2
  362. package/lib/cjs/help-message/format-arguments.cjs.map +0 -1
  363. package/lib/cjs/help-message/format-options.cjs +0 -2
  364. package/lib/cjs/help-message/format-options.cjs.map +0 -1
  365. package/lib/cjs/help-message/format-subcommands.cjs +0 -2
  366. package/lib/cjs/help-message/format-subcommands.cjs.map +0 -1
  367. package/lib/cjs/help-message/generate-for-cli.cjs +0 -2
  368. package/lib/cjs/help-message/generate-for-cli.cjs.map +0 -1
  369. package/lib/cjs/help-message/generate-for-subcommand.cjs +0 -2
  370. package/lib/cjs/help-message/generate-for-subcommand.cjs.map +0 -1
  371. package/lib/cjs/help-message/print-help.cjs +0 -2
  372. package/lib/cjs/help-message/print-help.cjs.map +0 -1
  373. package/lib/cjs/help-message/set-defaults.cjs +0 -2
  374. package/lib/cjs/help-message/set-defaults.cjs.map +0 -1
  375. package/lib/cjs/help-message/styles.cjs +0 -2
  376. package/lib/cjs/help-message/styles.cjs.map +0 -1
  377. package/lib/cjs/help-message/terminal-markdown.cjs +0 -2
  378. package/lib/cjs/help-message/terminal-markdown.cjs.map +0 -1
  379. package/lib/cjs/index.cjs +0 -2
  380. package/lib/cjs/index.cjs.map +0 -1
  381. package/lib/cjs/markdown/generate-markdown.cjs +0 -2
  382. package/lib/cjs/markdown/generate-markdown.cjs.map +0 -1
  383. package/lib/cjs/metadata/arguments-metadata.cjs +0 -2
  384. package/lib/cjs/metadata/arguments-metadata.cjs.map +0 -1
  385. package/lib/cjs/metadata/cli-metadata.cjs +0 -2
  386. package/lib/cjs/metadata/cli-metadata.cjs.map +0 -1
  387. package/lib/cjs/metadata/options-metadata.cjs +0 -2
  388. package/lib/cjs/metadata/options-metadata.cjs.map +0 -1
  389. package/lib/cjs/metadata/subcommands-metadata.cjs +0 -2
  390. package/lib/cjs/metadata/subcommands-metadata.cjs.map +0 -1
  391. package/lib/cjs/parse/context/cli-context-builder.cjs +0 -2
  392. package/lib/cjs/parse/context/cli-context-builder.cjs.map +0 -1
  393. package/lib/cjs/parse/context/object-context-builder.cjs +0 -2
  394. package/lib/cjs/parse/context/object-context-builder.cjs.map +0 -1
  395. package/lib/cjs/parse/parser-utilities.cjs +0 -2
  396. package/lib/cjs/parse/parser-utilities.cjs.map +0 -1
  397. package/lib/cjs/parse/safe-parse.cjs +0 -2
  398. package/lib/cjs/parse/safe-parse.cjs.map +0 -1
  399. package/lib/cjs/parse/validation/validate-context.cjs +0 -2
  400. package/lib/cjs/parse/validation/validate-context.cjs.map +0 -1
  401. package/lib/cjs/parse/validation/validators/arguments.cjs +0 -2
  402. package/lib/cjs/parse/validation/validators/arguments.cjs.map +0 -1
  403. package/lib/cjs/parse/validation/validators/conflict.cjs +0 -2
  404. package/lib/cjs/parse/validation/validators/conflict.cjs.map +0 -1
  405. package/lib/cjs/parse/validation/validators/exclusive.cjs +0 -2
  406. package/lib/cjs/parse/validation/validators/exclusive.cjs.map +0 -1
  407. package/lib/cjs/parse/validation/validators/explicitly-passed.cjs +0 -2
  408. package/lib/cjs/parse/validation/validators/explicitly-passed.cjs.map +0 -1
  409. package/lib/cjs/parse/validation/validators/options.cjs +0 -2
  410. package/lib/cjs/parse/validation/validators/options.cjs.map +0 -1
  411. package/lib/cjs/parse/validation/validators/requires.cjs +0 -2
  412. package/lib/cjs/parse/validation/validators/requires.cjs.map +0 -1
  413. package/lib/cjs/utilities.cjs +0 -2
  414. package/lib/cjs/utilities.cjs.map +0 -1
  415. package/lib/esm/utilities.js +0 -2
  416. package/lib/esm/utilities.js.map +0 -1
  417. package/lib/mjs/utilities.mjs +0 -2
  418. package/lib/mjs/utilities.mjs.map +0 -1
  419. package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts +0 -14
  420. package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts +0 -11
  421. package/lib/typescript/coerce/coerce-methods.d.ts +0 -20
  422. package/lib/typescript/coerce/coerce-methods.d.ts.map +0 -1
  423. package/lib/typescript/coerce/string-to-array.d.ts.map +0 -1
  424. package/lib/typescript/coerce/string-to-primitive.d.ts +0 -5
  425. package/lib/typescript/coerce/string-to-primitive.d.ts.map +0 -1
  426. package/lib/typescript/definitions/define-cli.d.ts.map +0 -1
  427. package/lib/typescript/definitions/define-subcommand.d.ts.map +0 -1
  428. package/lib/typescript/definitions/validate-cli-definition.d.ts.map +0 -1
  429. package/lib/typescript/parse/context/object-context-builder.d.ts.map +0 -1
  430. package/lib/typescript/types/definitions-types.d.ts.map +0 -1
  431. package/lib/typescript/types/types.d.ts +0 -61
  432. package/lib/typescript/types/types.d.ts.map +0 -1
  433. package/lib/typescript/utilities.d.ts.map +0 -1
  434. /package/lib/{typescript → types}/autocomplete-scripts/bash-autocomplete-script.d.ts +0 -0
  435. /package/lib/{typescript → types}/definitions/define-arguments.d.ts +0 -0
  436. /package/lib/{typescript → types}/definitions/define-arguments.d.ts.map +0 -0
  437. /package/lib/{typescript → types}/definitions/define-options.d.ts +0 -0
  438. /package/lib/{typescript → types}/definitions/define-options.d.ts.map +0 -0
  439. /package/lib/{typescript → types}/help-message/format-arguments.d.ts +0 -0
  440. /package/lib/{typescript → types}/help-message/format-arguments.d.ts.map +0 -0
  441. /package/lib/{typescript → types}/help-message/format-options.d.ts +0 -0
  442. /package/lib/{typescript → types}/help-message/format-options.d.ts.map +0 -0
  443. /package/lib/{typescript → types}/help-message/format-subcommands.d.ts +0 -0
  444. /package/lib/{typescript → types}/help-message/format-subcommands.d.ts.map +0 -0
  445. /package/lib/{typescript → types}/help-message/generate-for-cli.d.ts +0 -0
  446. /package/lib/{typescript → types}/help-message/generate-for-cli.d.ts.map +0 -0
  447. /package/lib/{typescript → types}/help-message/generate-for-subcommand.d.ts +0 -0
  448. /package/lib/{typescript → types}/help-message/generate-for-subcommand.d.ts.map +0 -0
  449. /package/lib/{typescript → types}/help-message/print-help.d.ts +0 -0
  450. /package/lib/{typescript → types}/help-message/print-help.d.ts.map +0 -0
  451. /package/lib/{typescript → types}/help-message/set-defaults.d.ts +0 -0
  452. /package/lib/{typescript → types}/help-message/set-defaults.d.ts.map +0 -0
  453. /package/lib/{typescript → types}/help-message/styles.d.ts +0 -0
  454. /package/lib/{typescript → types}/help-message/styles.d.ts.map +0 -0
  455. /package/lib/{typescript → types}/help-message/terminal-markdown.d.ts +0 -0
  456. /package/lib/{typescript → types}/markdown/generate-markdown.d.ts +0 -0
  457. /package/lib/{typescript → types}/markdown/generate-markdown.d.ts.map +0 -0
  458. /package/lib/{typescript → types}/metadata/arguments-metadata.d.ts +0 -0
  459. /package/lib/{typescript → types}/metadata/cli-metadata.d.ts +0 -0
  460. /package/lib/{typescript → types}/metadata/cli-metadata.d.ts.map +0 -0
  461. /package/lib/{typescript → types}/metadata/options-metadata.d.ts +0 -0
  462. /package/lib/{typescript → types}/metadata/subcommands-metadata.d.ts +0 -0
  463. /package/lib/{typescript → types}/metadata/subcommands-metadata.d.ts.map +0 -0
  464. /package/lib/{typescript → types}/parse/safe-parse.d.ts +0 -0
  465. /package/lib/{typescript → types}/parse/validation/validators/explicitly-passed.d.ts +0 -0
  466. /package/lib/{typescript → types}/parse/validation/validators/explicitly-passed.d.ts.map +0 -0
  467. /package/lib/{typescript → types}/types/context-types.d.ts +0 -0
  468. /package/lib/{typescript → types}/types/context-types.d.ts.map +0 -0
  469. /package/lib/{typescript → types}/types/help-message-types.d.ts +0 -0
  470. /package/lib/{typescript → types}/types/help-message-types.d.ts.map +0 -0
  471. /package/lib/{typescript → types}/types/io-types.d.ts.map +0 -0
  472. /package/lib/{typescript → types}/types/metadata-types.d.ts +0 -0
  473. /package/lib/{typescript → types}/types/metadata-types.d.ts.map +0 -0
  474. /package/lib/{typescript → types}/types/schema-types.d.ts +0 -0
  475. /package/lib/{typescript → types}/types/schema-types.d.ts.map +0 -0
@@ -1,2 +1,74 @@
1
- import{transformOptionToArgument}from"../parse/parser-utilities.js";function generateBashAutocompleteScript(n){const o=n.subcommands??[],e={};for(const n of o)e[n.name]={options:n.options?Object.keys(n.options).map(n=>transformOptionToArgument(n)):[],aliases:n.aliases??[]};let t="";for(const[n,{options:o,aliases:s}]of Object.entries(e))t+=` ${n}${s.length>0?"|":""}${s.join("|")})\n`,t+=` opts="${o.join(" ")}"\n`,t+=" ;;\n";if(n.options?.length){t+=' "-"*)\n',t+=` opts="${(n.options?Object.keys(n.options).map(n=>transformOptionToArgument(n)):[]).join(" ")}"\n`,t+=" ;;\n"}return`# Auto-generated by zod-args-parser\n\n_${n.cliName}_autocomplete() {\n local cur prev commands opts subcommand used_opts filtered_opts\n\n cur="\${COMP_WORDS[COMP_CWORD]}"\n prev="\${COMP_WORDS[COMP_CWORD-1]}"\n subcommand="\${COMP_WORDS[1]}"\n\n commands="${Object.keys(e).join(" ")}"\n\n case "$subcommand" in\n${t}\n esac\n\n used_opts=""\n if [[ " \${commands[@]} " =~ " $subcommand " ]]; then\n for word in "\${COMP_WORDS[@]:2}"; do\n if [[ "$word" =~ ^- ]]; then\n used_opts+=" $word"\n fi\n done\n fi\n\n if [[ -n "$opts" ]]; then\n filtered_opts=""\n for opt in $opts; do\n if [[ ! " $used_opts " =~ " $opt " ]]; then\n filtered_opts+="$opt "\n fi\n done\n COMPREPLY=( $(compgen -W "$filtered_opts" -- "$cur") )\n return\n fi\n\n if [[ "\${COMP_CWORD}" -eq 1 ]]; then\n COMPREPLY=( $(compgen -W "$commands" -- "$cur") )\n fi\n}\n\ncomplete -F _${n.cliName}_autocomplete ${n.cliName}\n`}export{generateBashAutocompleteScript};
2
- //# sourceMappingURL=bash-autocomplete-script.js.map
1
+ // src/autocomplete-scripts/bash-autocomplete-script.ts
2
+ import { transformOptionToArgument } from "../parse/parser-utilities.js";
3
+ function generateBashAutocompleteScript(cliDefinition) {
4
+ const subcommands = cliDefinition.subcommands ?? [];
5
+ const mappedCommands = {};
6
+ for (const subcommand of subcommands) {
7
+ mappedCommands[subcommand.name] = {
8
+ options: subcommand.options ? Object.keys(subcommand.options).map((key) => transformOptionToArgument(key)) : [],
9
+ aliases: subcommand.aliases ?? []
10
+ };
11
+ }
12
+ let switchCase = "";
13
+ for (const [name, { options, aliases }] of Object.entries(mappedCommands)) {
14
+ const caseNames = [name, ...aliases];
15
+ switchCase += ` ${caseNames.join("|")})
16
+ `;
17
+ switchCase += ` opts="${options.join(" ")}"
18
+ `;
19
+ switchCase += " ;;\n";
20
+ }
21
+ const globalOptions = cliDefinition.options ? Object.keys(cliDefinition.options).map((key) => transformOptionToArgument(key)) : [];
22
+ if (globalOptions.length > 0) {
23
+ switchCase += ` *)
24
+ `;
25
+ switchCase += ` opts="${globalOptions.join(" ")}"
26
+ `;
27
+ switchCase += " ;;\n";
28
+ }
29
+ return `# Auto-generated by zod-args-parser
30
+
31
+ _${cliDefinition.cliName}_autocomplete() {
32
+ local cur prev commands opts subcommand used_opts filtered_opts
33
+
34
+ cur="\${COMP_WORDS[COMP_CWORD]}"
35
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
36
+ subcommand="\${COMP_WORDS[1]}"
37
+
38
+ commands="${Object.keys(mappedCommands).join(" ")}"
39
+
40
+ case "$subcommand" in
41
+ ${switchCase} esac
42
+
43
+ used_opts=""
44
+ if [[ " \${commands[@]} " =~ " $subcommand " ]]; then
45
+ for word in "\${COMP_WORDS[@]:2}"; do
46
+ if [[ "$word" =~ ^- ]]; then
47
+ used_opts+=" $word"
48
+ fi
49
+ done
50
+ fi
51
+
52
+ if [[ -n "$opts" ]]; then
53
+ filtered_opts=""
54
+ for opt in $opts; do
55
+ if [[ ! " $used_opts " =~ " $opt " ]]; then
56
+ filtered_opts+="$opt "
57
+ fi
58
+ done
59
+ COMPREPLY=( $(compgen -W "$filtered_opts" -- "$cur") )
60
+ return
61
+ fi
62
+
63
+ if [[ "\${COMP_CWORD}" -eq 1 ]]; then
64
+ COMPREPLY=( $(compgen -W "$commands" -- "$cur") )
65
+ fi
66
+ }
67
+
68
+ complete -F _${cliDefinition.cliName}_autocomplete ${cliDefinition.cliName}
69
+ `;
70
+ }
71
+ export {
72
+ generateBashAutocompleteScript
73
+ };
74
+ //# sourceMappingURL=bash-autocomplete-script.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["transformOptionToArgument","generateBashAutocompleteScript","cliDefinition","subcommands","mappedCommands","subcommand","name","options","Object","keys","map","key","aliases","switchCase","entries","length","join","cliName"],"sources":["../../../src/autocomplete-scripts/bash-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\n\n/**\n * - Generate bash autocomplete script for your CLI\n * - The generated script should be added to your `.bash_profile` or `.bashrc` file:\n *\n * - Run: `nano $HOME/.bash_profile` or `nano $HOME/.bashrc`\n * - Add the following line: `source <generated script path>`\n * - Save and reopen bash to take effect\n */\nexport function generateBashAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n\n type MappedCommands = Record<string, { options: string[]; aliases: string[] }>;\n\n const mappedCommands: MappedCommands = {};\n\n for (const subcommand of subcommands) {\n mappedCommands[subcommand.name] = {\n options: subcommand.options ? Object.keys(subcommand.options).map(key => transformOptionToArgument(key)) : [],\n aliases: subcommand.aliases ?? [],\n };\n }\n\n let switchCase = \"\";\n for (const [key, { options, aliases }] of Object.entries(mappedCommands)) {\n switchCase += ` ${key}${aliases.length > 0 ? \"|\" : \"\"}${aliases.join(\"|\")})\\n`;\n switchCase += ` opts=\"${options.join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n if (cliDefinition.options?.length) {\n const optionsNames = cliDefinition.options\n ? Object.keys(cliDefinition.options).map(key => transformOptionToArgument(key))\n : [];\n switchCase += ` \"-\"*)\\n`;\n switchCase += ` opts=\"${optionsNames.join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n return `# Auto-generated by zod-args-parser\n\n_${cliDefinition.cliName}_autocomplete() {\n local cur prev commands opts subcommand used_opts filtered_opts\n\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n subcommand=\"\\${COMP_WORDS[1]}\"\n\n commands=\"${Object.keys(mappedCommands).join(\" \")}\"\n\n case \"$subcommand\" in\n${switchCase}\n esac\n\n used_opts=\"\"\n if [[ \" \\${commands[@]} \" =~ \" $subcommand \" ]]; then\n for word in \"\\${COMP_WORDS[@]:2}\"; do\n if [[ \"$word\" =~ ^- ]]; then\n used_opts+=\" $word\"\n fi\n done\n fi\n\n if [[ -n \"$opts\" ]]; then\n filtered_opts=\"\"\n for opt in $opts; do\n if [[ ! \" $used_opts \" =~ \" $opt \" ]]; then\n filtered_opts+=\"$opt \"\n fi\n done\n COMPREPLY=( $(compgen -W \"$filtered_opts\" -- \"$cur\") )\n return\n fi\n\n if [[ \"\\${COMP_CWORD}\" -eq 1 ]]; then\n COMPREPLY=( $(compgen -W \"$commands\" -- \"$cur\") )\n fi\n}\n\ncomplete -F _${cliDefinition.cliName}_autocomplete ${cliDefinition.cliName}\n`;\n}\n"],"mappings":"OAASA,8BAAiC,+BAYnC,SAASC,+BAA+BC,GAC7C,MAAMC,EAAcD,EAAcC,aAAe,GAI3CC,EAAiC,CAAC,EAExC,UAAWC,KAAcF,EACvBC,EAAeC,EAAWC,MAAQ,CAChCC,QAASF,EAAWE,QAAUC,OAAOC,KAAKJ,EAAWE,SAASG,IAAIC,GAAOX,0BAA0BW,IAAQ,GAC3GC,QAASP,EAAWO,SAAW,IAInC,IAAIC,EAAa,GACjB,UAAYF,GAAKJ,QAAEA,EAAAK,QAASA,MAAcJ,OAAOM,QAAQV,GACvDS,GAAc,OAAOF,IAAMC,EAAQG,OAAS,EAAI,IAAM,KAAKH,EAAQI,KAAK,UACxEH,GAAc,eAAeN,EAAQS,KAAK,UAC1CH,GAAc,aAGhB,GAAIX,EAAcK,SAASQ,OAAQ,CAIjCF,GAAc,cACdA,GAAc,gBAJOX,EAAcK,QAC/BC,OAAOC,KAAKP,EAAcK,SAASG,IAAIC,GAAOX,0BAA0BW,IACxE,IAEsCK,KAAK,UAC/CH,GAAc,YAChB,CAEA,MAAO,2CAENX,EAAce,6NAOHT,OAAOC,KAAKL,GAAgBY,KAAK,qCAG7CH,6lBA4BaX,EAAce,wBAAwBf,EAAce,WAEnE,Q","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/autocomplete-scripts/bash-autocomplete-script.ts"],
4
+ "sourcesContent": ["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\n\n/**\n * - Generate bash autocomplete script for your CLI\n * - The generated script should be added to your `.bash_profile` or `.bashrc` file:\n *\n * - Run: `nano $HOME/.bash_profile` or `nano $HOME/.bashrc`\n * - Add the following line: `source <generated script path>`\n * - Save and reopen bash to take effect\n */\nexport function generateBashAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n type MappedCommands = Record<string, { options: string[]; aliases: string[] }>;\n\n // Map subcommands to options + aliases\n const mappedCommands: MappedCommands = {};\n for (const subcommand of subcommands) {\n mappedCommands[subcommand.name] = {\n options: subcommand.options ? Object.keys(subcommand.options).map(key => transformOptionToArgument(key)) : [],\n aliases: subcommand.aliases ?? [],\n };\n }\n\n // Generate switch-case block for subcommands + aliases\n let switchCase = \"\";\n for (const [name, { options, aliases }] of Object.entries(mappedCommands)) {\n const caseNames = [name, ...aliases];\n switchCase += ` ${caseNames.join(\"|\")})\\n`;\n switchCase += ` opts=\"${options.join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n // Include global CLI options in a default case\n const globalOptions = cliDefinition.options\n ? Object.keys(cliDefinition.options).map(key => transformOptionToArgument(key))\n : [];\n\n if (globalOptions.length > 0) {\n switchCase += ` *)\\n`;\n switchCase += ` opts=\"${globalOptions.join(\" \")}\"\\n`;\n switchCase += \" ;;\\n\";\n }\n\n return `# Auto-generated by zod-args-parser\n\n_${cliDefinition.cliName}_autocomplete() {\n local cur prev commands opts subcommand used_opts filtered_opts\n\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n subcommand=\"\\${COMP_WORDS[1]}\"\n\n commands=\"${Object.keys(mappedCommands).join(\" \")}\"\n\n case \"$subcommand\" in\n${switchCase} esac\n\n used_opts=\"\"\n if [[ \" \\${commands[@]} \" =~ \" $subcommand \" ]]; then\n for word in \"\\${COMP_WORDS[@]:2}\"; do\n if [[ \"$word\" =~ ^- ]]; then\n used_opts+=\" $word\"\n fi\n done\n fi\n\n if [[ -n \"$opts\" ]]; then\n filtered_opts=\"\"\n for opt in $opts; do\n if [[ ! \" $used_opts \" =~ \" $opt \" ]]; then\n filtered_opts+=\"$opt \"\n fi\n done\n COMPREPLY=( $(compgen -W \"$filtered_opts\" -- \"$cur\") )\n return\n fi\n\n if [[ \"\\${COMP_CWORD}\" -eq 1 ]]; then\n COMPREPLY=( $(compgen -W \"$commands\" -- \"$cur\") )\n fi\n}\n\ncomplete -F _${cliDefinition.cliName}_autocomplete ${cliDefinition.cliName}\n`;\n}\n"],
5
+ "mappings": ";AAAA,SAAS,iCAAiC;AAYnC,SAAS,+BAA+B,eAA4B;AACzE,QAAM,cAAc,cAAc,eAAe,CAAC;AAIlD,QAAM,iBAAiC,CAAC;AACxC,aAAW,cAAc,aAAa;AACpC,mBAAe,WAAW,IAAI,IAAI;AAAA,MAChC,SAAS,WAAW,UAAU,OAAO,KAAK,WAAW,OAAO,EAAE,IAAI,SAAO,0BAA0B,GAAG,CAAC,IAAI,CAAC;AAAA,MAC5G,SAAS,WAAW,WAAW,CAAC;AAAA,IAClC;AAAA,EACF;AAGA,MAAI,aAAa;AACjB,aAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,CAAC,KAAK,OAAO,QAAQ,cAAc,GAAG;AACzE,UAAM,YAAY,CAAC,MAAM,GAAG,OAAO;AACnC,kBAAc,OAAO,UAAU,KAAK,GAAG,CAAC;AAAA;AACxC,kBAAc,eAAe,QAAQ,KAAK,GAAG,CAAC;AAAA;AAC9C,kBAAc;AAAA,EAChB;AAGA,QAAM,gBAAgB,cAAc,UAChC,OAAO,KAAK,cAAc,OAAO,EAAE,IAAI,SAAO,0BAA0B,GAAG,CAAC,IAC5E,CAAC;AAEL,MAAI,cAAc,SAAS,GAAG;AAC5B,kBAAc;AAAA;AACd,kBAAc,eAAe,cAAc,KAAK,GAAG,CAAC;AAAA;AACpD,kBAAc;AAAA,EAChB;AAEA,SAAO;AAAA;AAAA,GAEN,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOV,OAAO,KAAK,cAAc,EAAE,KAAK,GAAG,CAAC;AAAA;AAAA;AAAA,EAGjD,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eA2BG,cAAc,OAAO,iBAAiB,cAAc,OAAO;AAAA;AAE1E;",
6
+ "names": []
7
+ }
@@ -1,2 +1,90 @@
1
- import{transformOptionToArgument}from"../parse/parser-utilities.js";function generatePowerShellAutocompleteScript(e){const n=e.subcommands??[],t=e.meta??{},o={};for(const e of n)o[e.name]={options:e.options?Object.keys(e.options).map(e=>transformOptionToArgument(e)):[],aliases:e.aliases??[]};const a=Object.keys(o).map(e=>`'${e}'`).join(", "),m=(e.options?Object.keys(e.options).map(e=>transformOptionToArgument(e)):[]).map(e=>`'${e}'`).join(", ");let r="switch ($subcommand) {\n";for(const[e,{options:n,aliases:t}]of Object.entries(o)){const o=n.map(e=>`'${e}'`).join(", ");r+=` '${e}' { @(${o}) }\n`;for(const e of t)r+=` '${e}' { @(${o}) }\n`}r+=` default { @(${m}) }\n }`;const s=t.description??t.descriptionMarkdown;let i="";return s&&(i=`<#\n.DESCRIPTION\n${s}\n${t.example?`\n.EXAMPLE\n${t.example}`:""}\n#>`),`# Auto-generated by zod-args-parser\n\n${i}\nfunction ${e.cliName} {\n param(\n [Parameter(Position = 0, Mandatory = $false)]\n [string]$subcommand,\n [Parameter(Position = 1, ValueFromRemainingArguments = $true)]\n [string[]]$arguments\n )\n $scriptPath = (Get-Command '${e.cliName}.ps1').Source\n if ($scriptPath) {\n $argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }\n & $scriptPath @argumentList\n return\n }\n Write-Error "Could not find '${e.cliName}.ps1' script"\n}\n\nRegister-ArgumentCompleter -CommandName '${e.cliName}' -ParameterName 'subcommand' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommands = @(${a}${a&&m?", ":""}${m})\n $subcommands | Where-Object { $_ -like "$wordToComplete*" }\n}\n\nRegister-ArgumentCompleter -CommandName '${e.cliName}' -ParameterName 'arguments' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommand = $commandAst.CommandElements[1].Value\n $arguments = ${r}\n $arguments | Where-Object { $_ -like "$wordToComplete*" }\n}`}export{generatePowerShellAutocompleteScript};
2
- //# sourceMappingURL=powershell-autocomplete-script.js.map
1
+ // src/autocomplete-scripts/powershell-autocomplete-script.ts
2
+ import { transformOptionToArgument } from "../parse/parser-utilities.js";
3
+ function generatePowerShellAutocompleteScript(cliDefinition) {
4
+ const subcommands = cliDefinition.subcommands ?? [];
5
+ const meta = cliDefinition.meta ?? {};
6
+ const mappedCommands = {};
7
+ for (const subcommand of subcommands) {
8
+ const options = [];
9
+ if (subcommand.options) {
10
+ for (const key of Object.keys(subcommand.options)) {
11
+ options.push(transformOptionToArgument(key));
12
+ }
13
+ }
14
+ const aliases = subcommand.aliases ?? [];
15
+ mappedCommands[subcommand.name] = { options, aliases };
16
+ }
17
+ const subcommandsString = Object.keys(mappedCommands).map((key) => `'${key}'`).join(", ");
18
+ const cliOptions = [];
19
+ if (cliDefinition.options) {
20
+ for (const key of Object.keys(cliDefinition.options)) {
21
+ cliOptions.push(transformOptionToArgument(key));
22
+ }
23
+ }
24
+ const cliOptionsString = cliOptions.map((opt) => `'${opt}'`).join(", ");
25
+ let switchCase = "switch ($subcommand) {\n";
26
+ for (const commandName in mappedCommands) {
27
+ const data = mappedCommands[commandName];
28
+ const optionsString = data.options.map((opt) => `'${opt}'`).join(", ");
29
+ switchCase += ` '${commandName}' { @(${optionsString}) }
30
+ `;
31
+ for (const alias of data.aliases) {
32
+ switchCase += ` '${alias}' { @(${optionsString}) }
33
+ `;
34
+ }
35
+ }
36
+ switchCase += ` default { @(${cliOptionsString}) }
37
+ }`;
38
+ let commentBlock = "";
39
+ if (meta.description || meta.example) {
40
+ commentBlock = "<#\n";
41
+ if (meta.description || meta.descriptionMarkdown) {
42
+ commentBlock += `.DESCRIPTION
43
+ ${meta.description ?? meta.descriptionMarkdown}
44
+
45
+ `;
46
+ }
47
+ if (meta.example) {
48
+ commentBlock += `.EXAMPLE
49
+ ${meta.example}
50
+ `;
51
+ }
52
+ commentBlock += "#>";
53
+ }
54
+ const cliName = cliDefinition.cliName;
55
+ return `# Auto-generated by zod-args-parser
56
+
57
+ ${commentBlock}
58
+ function ${cliName} {
59
+ param(
60
+ [Parameter(Position = 0, Mandatory = $false)]
61
+ [string]$subcommand,
62
+ [Parameter(Position = 1, ValueFromRemainingArguments = $true)]
63
+ [string[]]$arguments
64
+ )
65
+ $scriptPath = (Get-Command '${cliName}.ps1').Source
66
+ if ($scriptPath) {
67
+ $argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }
68
+ & $scriptPath @argumentList
69
+ return
70
+ }
71
+ Write-Error "Could not find '${cliName}.ps1' script"
72
+ }
73
+
74
+ Register-ArgumentCompleter -CommandName '${cliName}' -ParameterName 'subcommand' -ScriptBlock {
75
+ param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
76
+ $subcommands = @(${subcommandsString}${subcommandsString && cliOptionsString ? ", " : ""}${cliOptionsString})
77
+ $subcommands | Where-Object { $_ -like "$wordToComplete*" }
78
+ }
79
+
80
+ Register-ArgumentCompleter -CommandName '${cliName}' -ParameterName 'arguments' -ScriptBlock {
81
+ param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
82
+ $subcommand = $commandAst.CommandElements[1].Value
83
+ $arguments = ${switchCase}
84
+ $arguments | Where-Object { $_ -like "$wordToComplete*" }
85
+ }`;
86
+ }
87
+ export {
88
+ generatePowerShellAutocompleteScript
89
+ };
90
+ //# sourceMappingURL=powershell-autocomplete-script.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["transformOptionToArgument","generatePowerShellAutocompleteScript","cliDefinition","subcommands","meta","mappedCommands","subcommand","name","options","Object","keys","map","key","aliases","subcommandsString","join","cliOptionsString","option","switchCase","entries","optionsString","a","description","descriptionMarkdown","functionInfo","example","cliName"],"sources":["../../../src/autocomplete-scripts/powershell-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\n\n/**\n * - Generates a PowerShell autocomplete script for your CLI.\n * - The script assumes that your CLI is available as a `.ps1` file in the environment variable. For example:\n * `cliName.ps1`.\n * - This should return a path to your script: `(Get-Command <cliName>.ps1).Source`\n * - The generated script should be added to your `profile.ps1` file:\n *\n * - Run: `notepad $profile`\n * - Add the following line: `. \"<generated script path>\"`\n * - Save and reopen powershell to take effect\n */\nexport function generatePowerShellAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n const meta = cliDefinition.meta ?? {};\n\n type MappedCommands = Record<string, { options: string[]; aliases: string[] }>;\n\n const mappedCommands: MappedCommands = {};\n\n for (const subcommand of subcommands) {\n mappedCommands[subcommand.name] = {\n options: subcommand.options ? Object.keys(subcommand.options).map(key => transformOptionToArgument(key)) : [],\n aliases: subcommand.aliases ?? [],\n };\n }\n\n const subcommandsString = Object.keys(mappedCommands)\n .map(key => `'${key}'`)\n .join(\", \");\n\n const optionsNames = cliDefinition.options\n ? Object.keys(cliDefinition.options).map(key => transformOptionToArgument(key))\n : [];\n const cliOptionsString = optionsNames.map(option => `'${option}'`).join(\", \");\n\n let switchCase = \"switch ($subcommand) {\\n\";\n for (const [key, { options, aliases }] of Object.entries(mappedCommands)) {\n const optionsString = options.map(option => `'${option}'`).join(\", \");\n switchCase += ` '${key}' { @(${optionsString}) }\\n`;\n for (const a of aliases) {\n switchCase += ` '${a}' { @(${optionsString}) }\\n`;\n }\n }\n switchCase += ` default { @(${cliOptionsString}) }\\n }`;\n\n const description = meta.description ?? meta.descriptionMarkdown;\n\n let functionInfo = \"\";\n if (description) {\n functionInfo = `<#\\n.DESCRIPTION\\n${description}\\n${meta.example ? `\\n.EXAMPLE\\n${meta.example}` : \"\"}\\n#>`;\n }\n\n return `# Auto-generated by zod-args-parser\n\n${functionInfo}\nfunction ${cliDefinition.cliName} {\n param(\n [Parameter(Position = 0, Mandatory = $false)]\n [string]$subcommand,\n [Parameter(Position = 1, ValueFromRemainingArguments = $true)]\n [string[]]$arguments\n )\n $scriptPath = (Get-Command '${cliDefinition.cliName}.ps1').Source\n if ($scriptPath) {\n $argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }\n & $scriptPath @argumentList\n return\n }\n Write-Error \"Could not find '${cliDefinition.cliName}.ps1' script\"\n}\n\nRegister-ArgumentCompleter -CommandName '${cliDefinition.cliName}' -ParameterName 'subcommand' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommands = @(${subcommandsString}${subcommandsString && cliOptionsString ? \", \" : \"\"}${cliOptionsString})\n $subcommands | Where-Object { $_ -like \"$wordToComplete*\" }\n}\n\nRegister-ArgumentCompleter -CommandName '${cliDefinition.cliName}' -ParameterName 'arguments' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommand = $commandAst.CommandElements[1].Value\n $arguments = ${switchCase}\n $arguments | Where-Object { $_ -like \"$wordToComplete*\" }\n}`;\n}\n"],"mappings":"OAASA,8BAAiC,+BAenC,SAASC,qCAAqCC,GACnD,MAAMC,EAAcD,EAAcC,aAAe,GAC3CC,EAAOF,EAAcE,MAAQ,CAAC,EAI9BC,EAAiC,CAAC,EAExC,UAAWC,KAAcH,EACvBE,EAAeC,EAAWC,MAAQ,CAChCC,QAASF,EAAWE,QAAUC,OAAOC,KAAKJ,EAAWE,SAASG,IAAIC,GAAOZ,0BAA0BY,IAAQ,GAC3GC,QAASP,EAAWO,SAAW,IAInC,MAAMC,EAAoBL,OAAOC,KAAKL,GACnCM,IAAIC,GAAO,IAAIA,MACfG,KAAK,MAKFC,GAHed,EAAcM,QAC/BC,OAAOC,KAAKR,EAAcM,SAASG,IAAIC,GAAOZ,0BAA0BY,IACxE,IACkCD,IAAIM,GAAU,IAAIA,MAAWF,KAAK,MAExE,IAAIG,EAAa,2BACjB,UAAYN,GAAKJ,QAAEA,EAAAK,QAASA,MAAcJ,OAAOU,QAAQd,GAAiB,CACxE,MAAMe,EAAgBZ,EAAQG,IAAIM,GAAU,IAAIA,MAAWF,KAAK,MAChEG,GAAc,YAAYN,UAAYQ,SACtC,UAAWC,KAAKR,EACdK,GAAc,YAAYG,UAAUD,QAExC,CACAF,GAAc,uBAAuBF,cAErC,MAAMM,EAAclB,EAAKkB,aAAelB,EAAKmB,oBAE7C,IAAIC,EAAe,GAKnB,OAJIF,IACFE,EAAe,qBAAqBF,MAAgBlB,EAAKqB,QAAU,eAAerB,EAAKqB,UAAY,UAG9F,0CAEPD,eACStB,EAAcwB,4PAOSxB,EAAcwB,2QAMbxB,EAAcwB,uEAGNxB,EAAcwB,0KAElCZ,IAAoBA,GAAqBE,EAAmB,KAAO,KAAKA,sHAIpDd,EAAcwB,6NAGtCR,qEAGnB,Q","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/autocomplete-scripts/powershell-autocomplete-script.ts"],
4
+ "sourcesContent": ["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\n\n/**\n * Generates a PowerShell autocomplete script for a CLI.\n *\n * Instructions:\n *\n * - Ensure your CLI is available as a `.ps1` file in your environment. e.g., `cliName.ps1`.\n * - Add the generated script to your `profile.ps1` file:\n *\n * 1. Run: `notepad $profile`\n * 2. Add: `. \"<generated script path>\"`\n * 3. Save and reopen PowerShell\n */\nexport function generatePowerShellAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n const meta = cliDefinition.meta ?? {};\n\n interface CommandData {\n options: string[];\n aliases: string[];\n }\n\n const mappedCommands: Record<string, CommandData> = {};\n\n // Map subcommands to their options and aliases\n for (const subcommand of subcommands) {\n const options: string[] = [];\n if (subcommand.options) {\n for (const key of Object.keys(subcommand.options)) {\n options.push(transformOptionToArgument(key));\n }\n }\n\n const aliases: string[] = subcommand.aliases ?? [];\n mappedCommands[subcommand.name] = { options, aliases };\n }\n\n // Prepare string representations for subcommands and CLI global options\n const subcommandsString = Object.keys(mappedCommands)\n .map(key => `'${key}'`)\n .join(\", \");\n\n const cliOptions: string[] = [];\n if (cliDefinition.options) {\n for (const key of Object.keys(cliDefinition.options)) {\n cliOptions.push(transformOptionToArgument(key));\n }\n }\n\n const cliOptionsString = cliOptions.map(opt => `'${opt}'`).join(\", \");\n\n // Build the switch-case mapping subcommands/aliases to their options\n let switchCase = \"switch ($subcommand) {\\n\";\n for (const commandName in mappedCommands) {\n const data = mappedCommands[commandName];\n const optionsString = data.options.map(opt => `'${opt}'`).join(\", \");\n\n // Primary subcommand\n switchCase += ` '${commandName}' { @(${optionsString}) }\\n`;\n\n // Aliases\n for (const alias of data.aliases) {\n switchCase += ` '${alias}' { @(${optionsString}) }\\n`;\n }\n }\n\n // Default case returns global CLI options\n switchCase += ` default { @(${cliOptionsString}) }\\n }`;\n\n // Optional comment block with description/example\n let commentBlock = \"\";\n if (meta.description || meta.example) {\n commentBlock = \"<#\\n\";\n\n if (meta.description || meta.descriptionMarkdown) {\n commentBlock += `.DESCRIPTION\\n${meta.description ?? meta.descriptionMarkdown}\\n\\n`;\n }\n\n if (meta.example) {\n commentBlock += `.EXAMPLE\\n${meta.example}\\n`;\n }\n\n commentBlock += \"#>\";\n }\n\n const cliName = cliDefinition.cliName;\n\n return `# Auto-generated by zod-args-parser\n\n${commentBlock}\nfunction ${cliName} {\n param(\n [Parameter(Position = 0, Mandatory = $false)]\n [string]$subcommand,\n [Parameter(Position = 1, ValueFromRemainingArguments = $true)]\n [string[]]$arguments\n )\n $scriptPath = (Get-Command '${cliName}.ps1').Source\n if ($scriptPath) {\n $argumentList = @($subcommand) + ($arguments | Where-Object { $_ -notin '--', '--%' }) | Where-Object { $_ -ne '' }\n & $scriptPath @argumentList\n return\n }\n Write-Error \"Could not find '${cliName}.ps1' script\"\n}\n\nRegister-ArgumentCompleter -CommandName '${cliName}' -ParameterName 'subcommand' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommands = @(${subcommandsString}${subcommandsString && cliOptionsString ? \", \" : \"\"}${cliOptionsString})\n $subcommands | Where-Object { $_ -like \"$wordToComplete*\" }\n}\n\nRegister-ArgumentCompleter -CommandName '${cliName}' -ParameterName 'arguments' -ScriptBlock {\n param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)\n $subcommand = $commandAst.CommandElements[1].Value\n $arguments = ${switchCase}\n $arguments | Where-Object { $_ -like \"$wordToComplete*\" }\n}`;\n}\n"],
5
+ "mappings": ";AAAA,SAAS,iCAAiC;AAgBnC,SAAS,qCAAqC,eAA4B;AAC/E,QAAM,cAAc,cAAc,eAAe,CAAC;AAClD,QAAM,OAAO,cAAc,QAAQ,CAAC;AAOpC,QAAM,iBAA8C,CAAC;AAGrD,aAAW,cAAc,aAAa;AACpC,UAAM,UAAoB,CAAC;AAC3B,QAAI,WAAW,SAAS;AACtB,iBAAW,OAAO,OAAO,KAAK,WAAW,OAAO,GAAG;AACjD,gBAAQ,KAAK,0BAA0B,GAAG,CAAC;AAAA,MAC7C;AAAA,IACF;AAEA,UAAM,UAAoB,WAAW,WAAW,CAAC;AACjD,mBAAe,WAAW,IAAI,IAAI,EAAE,SAAS,QAAQ;AAAA,EACvD;AAGA,QAAM,oBAAoB,OAAO,KAAK,cAAc,EACjD,IAAI,SAAO,IAAI,GAAG,GAAG,EACrB,KAAK,IAAI;AAEZ,QAAM,aAAuB,CAAC;AAC9B,MAAI,cAAc,SAAS;AACzB,eAAW,OAAO,OAAO,KAAK,cAAc,OAAO,GAAG;AACpD,iBAAW,KAAK,0BAA0B,GAAG,CAAC;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,mBAAmB,WAAW,IAAI,SAAO,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI;AAGpE,MAAI,aAAa;AACjB,aAAW,eAAe,gBAAgB;AACxC,UAAM,OAAO,eAAe,WAAW;AACvC,UAAM,gBAAgB,KAAK,QAAQ,IAAI,SAAO,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI;AAGnE,kBAAc,YAAY,WAAW,SAAS,aAAa;AAAA;AAG3D,eAAW,SAAS,KAAK,SAAS;AAChC,oBAAc,YAAY,KAAK,SAAS,aAAa;AAAA;AAAA,IACvD;AAAA,EACF;AAGA,gBAAc,uBAAuB,gBAAgB;AAAA;AAGrD,MAAI,eAAe;AACnB,MAAI,KAAK,eAAe,KAAK,SAAS;AACpC,mBAAe;AAEf,QAAI,KAAK,eAAe,KAAK,qBAAqB;AAChD,sBAAgB;AAAA,EAAiB,KAAK,eAAe,KAAK,mBAAmB;AAAA;AAAA;AAAA,IAC/E;AAEA,QAAI,KAAK,SAAS;AAChB,sBAAgB;AAAA,EAAa,KAAK,OAAO;AAAA;AAAA,IAC3C;AAEA,oBAAgB;AAAA,EAClB;AAEA,QAAM,UAAU,cAAc;AAE9B,SAAO;AAAA;AAAA,EAEP,YAAY;AAAA,WACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAOgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAMN,OAAO;AAAA;AAAA;AAAA,2CAGC,OAAO;AAAA;AAAA,uBAE3B,iBAAiB,GAAG,qBAAqB,mBAAmB,OAAO,EAAE,GAAG,gBAAgB;AAAA;AAAA;AAAA;AAAA,2CAIpE,OAAO;AAAA;AAAA;AAAA,mBAG/B,UAAU;AAAA;AAAA;AAG7B;",
6
+ "names": []
7
+ }
@@ -1,25 +1,47 @@
1
- import{transformOptionToArgument}from"../parse/parser-utilities.js";function generateZshAutocompleteScript(e){const t=e.subcommands??[],a=e=>{return e.options?String.raw`${e.name})
1
+ // src/autocomplete-scripts/zsh-autocomplete-script.ts
2
+ import { transformOptionToArgument } from "../parse/parser-utilities.js";
3
+ function generateZshAutocompleteScript(cliDefinition) {
4
+ const subcommands = cliDefinition.subcommands ?? [];
5
+ const generateArguments = (command) => {
6
+ if (!command.options) return "";
7
+ const arguments_ = Object.entries(command.options).map(([name, option]) => {
8
+ const description = option.meta?.description ?? "";
9
+ return `'${transformOptionToArgument(name)}[${description}]'`;
10
+ });
11
+ return arguments_.join(" \\\n ");
12
+ };
13
+ const generateSubcommandCase = (subcommand) => {
14
+ return String.raw`${subcommand.name})
2
15
  _arguments \
3
- ${t=e,(t.options?Object.entries(t.options).map(([e,t])=>`'${transformOptionToArgument(e)}[${t.meta?.description??""}]'`):[]).join(" \\\n ")} \
16
+ ${generateArguments(subcommand)} \
4
17
  '*: :_files' \
5
18
  && ret=0
6
- ;;`:"";var t};return String.raw`# Auto-generated by zod-args-parser
19
+ ;;`;
20
+ };
21
+ const subcommandCases = subcommands.map((cmd) => generateSubcommandCase(cmd)).filter(Boolean).join("\n ");
22
+ const commandDescriptions = subcommands.map((sub) => `"${sub.name}:${sub.meta?.description ?? ""}"`).join("\n ");
23
+ const globalOptions = cliDefinition.options ? Object.entries(cliDefinition.options).map(([name, option]) => {
24
+ const description = option.meta?.description ?? "";
25
+ return `'${transformOptionToArgument(name)}[${description}]'`;
26
+ }).join(" \\\n ") : "";
27
+ const cliName = cliDefinition.cliName;
28
+ return String.raw`# Auto-generated by zod-args-parser
7
29
 
8
- _${e.cliName}_autocomplete() {
30
+ _${cliName}_autocomplete() {
9
31
  local ret=1
10
32
 
11
33
  _arguments -C \
12
- '1: :_${e.cliName}_commands' \
34
+ '1: :_${cliName}_commands' \
13
35
  '*:: :->subcmds' \
14
36
  && ret=0
15
37
 
16
38
  case $state in
17
39
  subcmds)
18
40
  case "$words[1]" in
19
- ${t.map(e=>a(e)).filter(Boolean).join("\n ")}
41
+ ${subcommandCases}
20
42
  *)
21
43
  _arguments \
22
- '*: :_files' \
44
+ ${globalOptions ? globalOptions + " \\\n " : ""}'*: :_files' \
23
45
  && ret=0
24
46
  ;;
25
47
  esac
@@ -28,15 +50,19 @@ _${e.cliName}_autocomplete() {
28
50
 
29
51
  return $ret
30
52
  }
31
-
32
- _${e.cliName}_commands() {
53
+
54
+ _${cliName}_commands() {
33
55
  local -a commands=(
34
- ${t.map(e=>`"${e.name}:${e.meta?.description??""}"`).join("\n ")}
56
+ ${commandDescriptions}
35
57
  )
36
58
 
37
59
  _describe -t subcommands 'subcommand' commands
38
60
  }
39
61
 
40
- compdef _${e.cliName}_autocomplete ${e.cliName}
41
- `}export{generateZshAutocompleteScript};
42
- //# sourceMappingURL=zsh-autocomplete-script.js.map
62
+ compdef _${cliName}_autocomplete ${cliName}
63
+ `;
64
+ }
65
+ export {
66
+ generateZshAutocompleteScript
67
+ };
68
+ //# sourceMappingURL=zsh-autocomplete-script.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["transformOptionToArgument","generateZshAutocompleteScript","cliDefinition","subcommands","genSubCommand","subcommand","options","String","raw","name","command","Object","entries","map","value","meta","description","join","cliName","subCommand","filter","Boolean"],"sources":["../../../src/autocomplete-scripts/zsh-autocomplete-script.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli, Subcommand } from \"../types/definitions-types.ts\";\n\n/**\n * - Generates a ZSH autocomplete script for your CLI.\n * - The generated script should be added to your `~/.zshrc` or `~/.zsh_profile` file:\n *\n * - Run: `nano $HOME/.zshrc` or `nano $HOME/.zsh_profile`\n * - Add the following line: `source <generated script path>`\n * - Save and reopen zsh to take effect\n */\nexport function generateZshAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n\n const genArguments = (command: Subcommand) => {\n const optionsNameDesc = command.options\n ? Object.entries(command.options).map(\n ([name, value]) => `'${transformOptionToArgument(name)}[${value.meta?.description ?? \"\"}]'`,\n )\n : [];\n\n return optionsNameDesc.join(\" \\\\\\n \");\n };\n\n const genSubCommand = (subcommand: Subcommand) => {\n const options = subcommand.options;\n if (!options) return \"\";\n return String.raw`${subcommand.name})\n _arguments \\\n ${genArguments(subcommand)} \\\n '*: :_files' \\\n && ret=0\n ;;`;\n };\n\n return String.raw`# Auto-generated by zod-args-parser\n\n_${cliDefinition.cliName}_autocomplete() {\n local ret=1\n\n _arguments -C \\\n '1: :_${cliDefinition.cliName}_commands' \\\n '*:: :->subcmds' \\\n && ret=0\n\n case $state in\n subcmds)\n case \"$words[1]\" in\n ${subcommands\n .map(subCommand => genSubCommand(subCommand))\n .filter(Boolean)\n .join(\"\\n \")}\n *)\n _arguments \\\n '*: :_files' \\\n && ret=0\n ;;\n esac\n ;;\n esac\n\n return $ret\n}\n \n_${cliDefinition.cliName}_commands() {\n local -a commands=(\n ${subcommands.map(subcommand => `\"${subcommand.name}:${subcommand.meta?.description ?? \"\"}\"`).join(\"\\n \")}\n )\n\n _describe -t subcommands 'subcommand' commands\n}\n\ncompdef _${cliDefinition.cliName}_autocomplete ${cliDefinition.cliName}\n`;\n}\n"],"mappings":"OAASA,8BAAiC,+BAYnC,SAASC,8BAA8BC,GAC5C,MAAMC,EAAcD,EAAcC,aAAe,GAY3CC,EAAiBC,IAErB,OADgBA,EAAWC,QAEpBC,OAAOC,GAAA,GAAMH,EAAWI;;cAbXC,EAeGL,GAdCK,EAAQJ,QAC5BK,OAAOC,QAAQF,EAAQJ,SAASO,IAC9B,EAAEJ,EAAMK,KAAW,IAAId,0BAA0BS,MAASK,EAAMC,MAAMC,aAAe,QAEvF,IAEmBC,KAAK;;;cAKP,GAZF,IAACP,GAqBtB,OAAOH,OAAOC,GAAA;;GAEbN,EAAcgB;;;;YAILhB,EAAcgB;;;;;;;UAOhBf,EACCU,IAAIM,GAAcf,EAAce,IAChCC,OAAOC,SACPJ,KAAK;;;;;;;;;;;;;GAabf,EAAcgB;;MAEXf,EAAYU,IAAIR,GAAc,IAAIA,EAAWI,QAAQJ,EAAWU,MAAMC,aAAe,OAAOC,KAAK;;;;;;WAM5Ff,EAAcgB,wBAAwBhB,EAAcgB;CAE/D,Q","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/autocomplete-scripts/zsh-autocomplete-script.ts"],
4
+ "sourcesContent": ["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\n\nimport type { Cli, Subcommand } from \"../types/definitions-types.ts\";\n\n/** Generates a Zsh autocomplete script for a CLI, including global options when no subcommand is provided. */\nexport function generateZshAutocompleteScript(cliDefinition: Cli): string {\n const subcommands = cliDefinition.subcommands ?? [];\n\n /** Generate the argument strings for a subcommand Format: 'option[description]' */\n const generateArguments = (command: Subcommand) => {\n if (!command.options) return \"\";\n const arguments_ = Object.entries(command.options).map(([name, option]) => {\n const description = option.meta?.description ?? \"\";\n return `'${transformOptionToArgument(name)}[${description}]'`;\n });\n return arguments_.join(\" \\\\\\n \");\n };\n\n /** Generate a case block for a subcommand */\n const generateSubcommandCase = (subcommand: Subcommand) => {\n return String.raw`${subcommand.name})\n _arguments \\\n ${generateArguments(subcommand)} \\\n '*: :_files' \\\n && ret=0\n ;;`;\n };\n\n const subcommandCases = subcommands\n .map(cmd => generateSubcommandCase(cmd))\n .filter(Boolean)\n .join(\"\\n \");\n\n const commandDescriptions = subcommands.map(sub => `\"${sub.name}:${sub.meta?.description ?? \"\"}\"`).join(\"\\n \");\n\n // Global CLI options (only used when no subcommand is provided)\n const globalOptions = cliDefinition.options\n ? Object.entries(cliDefinition.options)\n .map(([name, option]) => {\n const description = option.meta?.description ?? \"\";\n return `'${transformOptionToArgument(name)}[${description}]'`;\n })\n .join(\" \\\\\\n \")\n : \"\";\n\n const cliName = cliDefinition.cliName;\n\n return String.raw`# Auto-generated by zod-args-parser\n\n_${cliName}_autocomplete() {\n local ret=1\n\n _arguments -C \\\n '1: :_${cliName}_commands' \\\n '*:: :->subcmds' \\\n && ret=0\n\n case $state in\n subcmds)\n case \"$words[1]\" in\n ${subcommandCases}\n *)\n _arguments \\\n ${globalOptions ? globalOptions + \" \\\\\\n \" : \"\"}'*: :_files' \\\n && ret=0\n ;;\n esac\n ;;\n esac\n\n return $ret\n}\n\n_${cliName}_commands() {\n local -a commands=(\n ${commandDescriptions}\n )\n\n _describe -t subcommands 'subcommand' commands\n}\n\ncompdef _${cliName}_autocomplete ${cliName}\n`;\n}\n"],
5
+ "mappings": ";AAAA,SAAS,iCAAiC;AAKnC,SAAS,8BAA8B,eAA4B;AACxE,QAAM,cAAc,cAAc,eAAe,CAAC;AAGlD,QAAM,oBAAoB,CAAC,YAAwB;AACjD,QAAI,CAAC,QAAQ,QAAS,QAAO;AAC7B,UAAM,aAAa,OAAO,QAAQ,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,MAAM;AACzE,YAAM,cAAc,OAAO,MAAM,eAAe;AAChD,aAAO,IAAI,0BAA0B,IAAI,CAAC,IAAI,WAAW;AAAA,IAC3D,CAAC;AACD,WAAO,WAAW,KAAK,mBAAmB;AAAA,EAC5C;AAGA,QAAM,yBAAyB,CAAC,eAA2B;AACzD,WAAO,OAAO,MAAM,WAAW,IAAI;AAAA;AAAA,cAEzB,kBAAkB,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA,EAIzC;AAEA,QAAM,kBAAkB,YACrB,IAAI,SAAO,uBAAuB,GAAG,CAAC,EACtC,OAAO,OAAO,EACd,KAAK,YAAY;AAEpB,QAAM,sBAAsB,YAAY,IAAI,SAAO,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,eAAe,EAAE,GAAG,EAAE,KAAK,QAAQ;AAGhH,QAAM,gBAAgB,cAAc,UAChC,OAAO,QAAQ,cAAc,OAAO,EACjC,IAAI,CAAC,CAAC,MAAM,MAAM,MAAM;AACvB,UAAM,cAAc,OAAO,MAAM,eAAe;AAChD,WAAO,IAAI,0BAA0B,IAAI,CAAC,IAAI,WAAW;AAAA,EAC3D,CAAC,EACA,KAAK,mBAAmB,IAC3B;AAEJ,QAAM,UAAU,cAAc;AAE9B,SAAO,OAAO;AAAA;AAAA,GAEb,OAAO;AAAA;AAAA;AAAA;AAAA,YAIE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOT,eAAe;AAAA;AAAA;AAAA,cAGX,gBAAgB,gBAAgB,sBAAsB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUnE,OAAO;AAAA;AAAA,MAEJ,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAMd,OAAO,iBAAiB,OAAO;AAAA;AAE1C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,38 @@
1
+ // src/cli-error/cli-error.ts
2
+ import { ErrorCause } from "./error-cause.js";
3
+ import { definitionErrorMessage } from "./error-message/definition-error-message.js";
4
+ import { internalErrorMessage } from "./error-message/internal-error-message.js";
5
+ import { parseErrorMessage } from "./error-message/parse-error-message.js";
6
+ import { validationErrorMessage } from "./error-message/validation-error-message.js";
7
+ var CliError = class _CliError extends Error {
8
+ code;
9
+ cause;
10
+ context;
11
+ constructor(options) {
12
+ super(options.message ?? _CliError.errorMessage(options));
13
+ this.cause = options.cause;
14
+ this.code = options.code;
15
+ this.context = options.context;
16
+ }
17
+ static errorMessage(options) {
18
+ const defaultErrorMessage = "unknown error";
19
+ if (options.cause === ErrorCause.Internal) {
20
+ return internalErrorMessage(options) ?? defaultErrorMessage;
21
+ }
22
+ if (options.cause === ErrorCause.Parse) {
23
+ return parseErrorMessage(options) ?? defaultErrorMessage;
24
+ }
25
+ if (options.cause === ErrorCause.Definition) {
26
+ return definitionErrorMessage(options) ?? defaultErrorMessage;
27
+ }
28
+ if (options.cause === ErrorCause.Validation) {
29
+ return validationErrorMessage(options) ?? defaultErrorMessage;
30
+ }
31
+ const executiveCheck = options;
32
+ return executiveCheck;
33
+ }
34
+ };
35
+ export {
36
+ CliError
37
+ };
38
+ //# sourceMappingURL=cli-error.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/cli-error/cli-error.ts"],
4
+ "sourcesContent": ["import { ErrorCause } from \"./error-cause.ts\";\nimport { definitionErrorMessage } from \"./error-message/definition-error-message.ts\";\nimport { internalErrorMessage } from \"./error-message/internal-error-message.ts\";\nimport { parseErrorMessage } from \"./error-message/parse-error-message.ts\";\nimport { validationErrorMessage } from \"./error-message/validation-error-message.ts\";\n\nimport type { CliErrorImpl, CliErrorOptionUnion } from \"../types/error-types.ts\";\n\nexport class CliError extends Error implements CliErrorImpl {\n readonly code;\n readonly cause;\n readonly context;\n\n constructor(options: CliErrorOptionUnion) {\n super(options.message ?? CliError.errorMessage(options));\n\n this.cause = options.cause;\n this.code = options.code;\n this.context = options.context;\n }\n\n static errorMessage(options: CliErrorOptionUnion): string {\n const defaultErrorMessage = \"unknown error\";\n\n if (options.cause === ErrorCause.Internal) {\n return internalErrorMessage(options) ?? defaultErrorMessage;\n }\n\n if (options.cause === ErrorCause.Parse) {\n return parseErrorMessage(options) ?? defaultErrorMessage;\n }\n\n if (options.cause === ErrorCause.Definition) {\n return definitionErrorMessage(options) ?? defaultErrorMessage;\n }\n\n if (options.cause === ErrorCause.Validation) {\n return validationErrorMessage(options) ?? defaultErrorMessage;\n }\n\n const executiveCheck: never = options;\n return executiveCheck;\n }\n}\n"],
5
+ "mappings": ";AAAA,SAAS,kBAAkB;AAC3B,SAAS,8BAA8B;AACvC,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAClC,SAAS,8BAA8B;AAIhC,IAAM,WAAN,MAAM,kBAAiB,MAA8B;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,SAA8B;AACxC,UAAM,QAAQ,WAAW,UAAS,aAAa,OAAO,CAAC;AAEvD,SAAK,QAAQ,QAAQ;AACrB,SAAK,OAAO,QAAQ;AACpB,SAAK,UAAU,QAAQ;AAAA,EACzB;AAAA,EAEA,OAAO,aAAa,SAAsC;AACxD,UAAM,sBAAsB;AAE5B,QAAI,QAAQ,UAAU,WAAW,UAAU;AACzC,aAAO,qBAAqB,OAAO,KAAK;AAAA,IAC1C;AAEA,QAAI,QAAQ,UAAU,WAAW,OAAO;AACtC,aAAO,kBAAkB,OAAO,KAAK;AAAA,IACvC;AAEA,QAAI,QAAQ,UAAU,WAAW,YAAY;AAC3C,aAAO,uBAAuB,OAAO,KAAK;AAAA,IAC5C;AAEA,QAAI,QAAQ,UAAU,WAAW,YAAY;AAC3C,aAAO,uBAAuB,OAAO,KAAK;AAAA,IAC5C;AAEA,UAAM,iBAAwB;AAC9B,WAAO;AAAA,EACT;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ // src/cli-error/error-cause.ts
2
+ import { Enum } from "../utilities/utilities.js";
3
+ var ErrorCause = Enum({
4
+ Internal: void 0,
5
+ Parse: void 0,
6
+ Validation: void 0,
7
+ Definition: void 0
8
+ });
9
+ export {
10
+ ErrorCause
11
+ };
12
+ //# sourceMappingURL=error-cause.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/cli-error/error-cause.ts"],
4
+ "sourcesContent": ["import { Enum } from \"../utilities/utilities.ts\";\n\nimport type { ErrorCauseI } from \"../types/error-types.ts\";\n\nexport const ErrorCause: { [K in keyof ErrorCauseI]: K } = Enum({\n Internal: undefined,\n Parse: undefined,\n Validation: undefined,\n Definition: undefined,\n});\n"],
5
+ "mappings": ";AAAA,SAAS,YAAY;AAId,IAAM,aAA8C,KAAK;AAAA,EAC9D,UAAU;AAAA,EACV,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AACd,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ // src/cli-error/error-code/definition-error-code.ts
2
+ import { Enum } from "../../utilities/utilities.js";
3
+ var DefinitionErrorCode = Enum({
4
+ MissingSchema: void 0,
5
+ EmptyDefinitionGroup: void 0,
6
+ MissingDefinitionName: void 0,
7
+ InvalidDefinitionOptionName: void 0,
8
+ InvalidDefinitionArgumentName: void 0,
9
+ InvalidOptionalArgumentDefinition: void 0,
10
+ DuplicateDefinitionName: void 0,
11
+ EmptyStringAliasName: void 0,
12
+ SelfRequire: void 0,
13
+ UnknownRequireName: void 0,
14
+ SelfConflict: void 0,
15
+ UnknownConflictName: void 0,
16
+ DefinitionRequiresConflictOverlap: void 0,
17
+ MissingOnExecute: void 0,
18
+ SubcommandHelpNotFound: void 0
19
+ });
20
+ export {
21
+ DefinitionErrorCode
22
+ };
23
+ //# sourceMappingURL=definition-error-code.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/cli-error/error-code/definition-error-code.ts"],
4
+ "sourcesContent": ["import { Enum } from \"../../utilities/utilities.ts\";\n\nimport type { DefinitionErrorI } from \"../../types/error-types.ts\";\n\nexport const DefinitionErrorCode: { [K in keyof DefinitionErrorI]: K } = Enum({\n MissingSchema: undefined,\n EmptyDefinitionGroup: undefined,\n MissingDefinitionName: undefined,\n InvalidDefinitionOptionName: undefined,\n InvalidDefinitionArgumentName: undefined,\n InvalidOptionalArgumentDefinition: undefined,\n DuplicateDefinitionName: undefined,\n EmptyStringAliasName: undefined,\n SelfRequire: undefined,\n UnknownRequireName: undefined,\n SelfConflict: undefined,\n UnknownConflictName: undefined,\n DefinitionRequiresConflictOverlap: undefined,\n MissingOnExecute: undefined,\n SubcommandHelpNotFound: undefined,\n});\n"],
5
+ "mappings": ";AAAA,SAAS,YAAY;AAId,IAAM,sBAA4D,KAAK;AAAA,EAC5E,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,6BAA6B;AAAA,EAC7B,+BAA+B;AAAA,EAC/B,mCAAmC;AAAA,EACnC,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,mCAAmC;AAAA,EACnC,kBAAkB;AAAA,EAClB,wBAAwB;AAC1B,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ // src/cli-error/error-code/internal-error-code.ts
2
+ import { Enum } from "../../utilities/utilities.js";
3
+ var InternalErrorCode = Enum({
4
+ MissingPreparedTypes: void 0,
5
+ CannotFindCliDefinition: void 0
6
+ });
7
+ export {
8
+ InternalErrorCode
9
+ };
10
+ //# sourceMappingURL=internal-error-code.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/cli-error/error-code/internal-error-code.ts"],
4
+ "sourcesContent": ["import { Enum } from \"../../utilities/utilities.ts\";\n\nimport type { InternalErrorI } from \"../../types/error-types.ts\";\n\nexport const InternalErrorCode: { [K in keyof InternalErrorI]: K } = Enum({\n MissingPreparedTypes: undefined,\n CannotFindCliDefinition: undefined,\n});\n"],
5
+ "mappings": ";AAAA,SAAS,YAAY;AAId,IAAM,oBAAwD,KAAK;AAAA,EACxE,sBAAsB;AAAA,EACtB,yBAAyB;AAC3B,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,18 @@
1
+ // src/cli-error/error-code/parse-error-code.ts
2
+ import { Enum } from "../../utilities/utilities.js";
3
+ var ParseErrorCode = Enum({
4
+ UnknownSubcommand: void 0,
5
+ CommandWithoutOptions: void 0,
6
+ UnknownOption: void 0,
7
+ DuplicateOptionProvided: void 0,
8
+ InvalidNegationForNonBooleanOption: void 0,
9
+ PositionalArgumentNotAllowed: void 0,
10
+ MissingRequiredOption: void 0,
11
+ MissingRequiredArgument: void 0,
12
+ OptionMissingValue: void 0,
13
+ FlagAssignedValue: void 0
14
+ });
15
+ export {
16
+ ParseErrorCode
17
+ };
18
+ //# sourceMappingURL=parse-error-code.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/cli-error/error-code/parse-error-code.ts"],
4
+ "sourcesContent": ["import { Enum } from \"../../utilities/utilities.ts\";\n\nimport type { ParseErrorI } from \"../../types/error-types.ts\";\n\nexport const ParseErrorCode: { [K in keyof ParseErrorI]: K } = Enum({\n UnknownSubcommand: undefined,\n CommandWithoutOptions: undefined,\n UnknownOption: undefined,\n DuplicateOptionProvided: undefined,\n InvalidNegationForNonBooleanOption: undefined,\n PositionalArgumentNotAllowed: undefined,\n MissingRequiredOption: undefined,\n MissingRequiredArgument: undefined,\n OptionMissingValue: undefined,\n FlagAssignedValue: undefined,\n});\n"],
5
+ "mappings": ";AAAA,SAAS,YAAY;AAId,IAAM,iBAAkD,KAAK;AAAA,EAClE,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,oCAAoC;AAAA,EACpC,8BAA8B;AAAA,EAC9B,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,mBAAmB;AACrB,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ // src/cli-error/error-code/validation-error-code.ts
2
+ import { Enum } from "../../utilities/utilities.js";
3
+ var ValidationErrorCode = Enum({
4
+ NoOptionsToValidate: void 0,
5
+ NoArgumentsToValidate: void 0,
6
+ UnknownOptionValidation: void 0,
7
+ UnknownArgumentValidation: void 0,
8
+ SchemaValidationFailed: void 0,
9
+ MutuallyExclusiveConflict: void 0,
10
+ RequiredDependencyMissing: void 0,
11
+ AsyncSchemaNotSupported: void 0,
12
+ CoercionFailed: void 0
13
+ });
14
+ export {
15
+ ValidationErrorCode
16
+ };
17
+ //# sourceMappingURL=validation-error-code.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/cli-error/error-code/validation-error-code.ts"],
4
+ "sourcesContent": ["import { Enum } from \"../../utilities/utilities.ts\";\n\nimport type { ValidationErrorI } from \"../../types/error-types.ts\";\n\nexport const ValidationErrorCode: { [K in keyof ValidationErrorI]: K } = Enum({\n NoOptionsToValidate: undefined,\n NoArgumentsToValidate: undefined,\n UnknownOptionValidation: undefined,\n UnknownArgumentValidation: undefined,\n SchemaValidationFailed: undefined,\n MutuallyExclusiveConflict: undefined,\n RequiredDependencyMissing: undefined,\n AsyncSchemaNotSupported: undefined,\n CoercionFailed: undefined,\n});\n"],
5
+ "mappings": ";AAAA,SAAS,YAAY;AAId,IAAM,sBAA4D,KAAK;AAAA,EAC5E,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,gBAAgB;AAClB,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,70 @@
1
+ // src/cli-error/error-message/definition-error-message.ts
2
+ import { DefinitionErrorCode } from "../error-code/definition-error-code.js";
3
+ function definitionErrorMessage({ code, context }) {
4
+ if (code === DefinitionErrorCode.MissingDefinitionName) {
5
+ const propertyName = context.commandKind === "command" ? "cliName" : "name";
6
+ return `invalid ${context.commandKind} definition: "${propertyName}" property is required.`;
7
+ }
8
+ if (code === DefinitionErrorCode.EmptyDefinitionGroup) {
9
+ return `invalid ${context.commandKind} definition "${context.commandName}": "${context.kind}" property is optional but cannot be empty.`;
10
+ }
11
+ if (code === DefinitionErrorCode.MissingSchema) {
12
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" is missing the "schema" property.`;
13
+ }
14
+ if (code === DefinitionErrorCode.InvalidDefinitionOptionName) {
15
+ if (context.negatedAliasName) {
16
+ return `invalid ${context.commandKind} definition "${context.commandName}": the option "${context.optionName}" has the alias "${context.negatedAliasName}" which cannot be named as a negated option.`;
17
+ }
18
+ return `invalid ${context.commandKind} definition "${context.commandName}": the option "${context.optionName}" cannot be named as a negated option.`;
19
+ }
20
+ if (code === DefinitionErrorCode.InvalidDefinitionArgumentName) {
21
+ return `invalid ${context.commandKind} definition "${context.commandName}": the argument "${context.name}" cannot be a number..`;
22
+ }
23
+ if (code === DefinitionErrorCode.DuplicateDefinitionName) {
24
+ const foundIn = context.foundInName ? `conflict with the ${context.foundInKind} "${context.foundInName}" alias name` : `conflict with other ${context.foundInKind} name`;
25
+ if (context.duplicatedAlias) {
26
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" has the alias "${context.duplicatedAlias}" which ${foundIn}.`;
27
+ }
28
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" name ${foundIn}.`;
29
+ }
30
+ if (code === DefinitionErrorCode.EmptyStringAliasName) {
31
+ if (context.optionName) {
32
+ return `invalid ${context.commandKind} definition "${context.commandName}": the option "${context.optionName}" has an empty string alias name.`;
33
+ }
34
+ return `invalid ${context.commandKind} definition "${context.commandName}": empty string alias name is not allowed.`;
35
+ }
36
+ if (code === DefinitionErrorCode.SelfRequire) {
37
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" cannot require itself.`;
38
+ }
39
+ if (code === DefinitionErrorCode.UnknownRequireName) {
40
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" requires a non-existent name "${context.requiredName}".`;
41
+ }
42
+ if (code === DefinitionErrorCode.SelfConflict) {
43
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" cannot conflict with itself.`;
44
+ }
45
+ if (code === DefinitionErrorCode.UnknownConflictName) {
46
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" conflicts with a non-existent name "${context.requiredName}".`;
47
+ }
48
+ if (code === DefinitionErrorCode.DefinitionRequiresConflictOverlap) {
49
+ const s = context.intersectedNames.length > 1 ? "s" : "";
50
+ return `invalid ${context.commandKind} definition "${context.commandName}": the ${context.kind} "${context.name}" has overlapping 'requires' and 'conflictsWith' name${s}: ` + context.intersectedNames.join(", ");
51
+ }
52
+ if (code === DefinitionErrorCode.InvalidOptionalArgumentDefinition) {
53
+ if (context.allowPositionals) {
54
+ return `invalid ${context.commandKind} definition "${context.commandName}": the argument "${context.name}" cannot be optional when "allowPositionals" is enabled.`;
55
+ }
56
+ return `invalid ${context.commandKind} definition "${context.commandName}": the argument "${context.name}" cannot be optional unless it is the last argument.`;
57
+ }
58
+ if (code === DefinitionErrorCode.MissingOnExecute) {
59
+ return `trying to execute ${context.commandKind} "${context.commandName}" which does not have an "onExecute" handler.`;
60
+ }
61
+ if (code === DefinitionErrorCode.SubcommandHelpNotFound) {
62
+ return `cannot generate help message for subcommand "${context.subcommandName}" because it does not exist in CLI "${context.cliName}".`;
63
+ }
64
+ const executiveCheck = code;
65
+ return executiveCheck;
66
+ }
67
+ export {
68
+ definitionErrorMessage
69
+ };
70
+ //# sourceMappingURL=definition-error-message.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/cli-error/error-message/definition-error-message.ts"],
4
+ "sourcesContent": ["import { DefinitionErrorCode } from \"../error-code/definition-error-code.ts\";\n\nimport type { CliErrorOptionByCause } from \"../../types/error-types.ts\";\n\nexport function definitionErrorMessage({ code, context }: CliErrorOptionByCause<\"Definition\">) {\n if (code === DefinitionErrorCode.MissingDefinitionName) {\n const propertyName = context.commandKind === \"command\" ? \"cliName\" : \"name\";\n return `invalid ${context.commandKind} definition: \"${propertyName}\" property is required.`;\n }\n\n if (code === DefinitionErrorCode.EmptyDefinitionGroup) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `\"${context.kind}\" property is optional but cannot be empty.`\n );\n }\n\n if (code === DefinitionErrorCode.MissingSchema) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" is missing the \"schema\" property.`\n );\n }\n\n if (code === DefinitionErrorCode.InvalidDefinitionOptionName) {\n if (context.negatedAliasName) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the option \"${context.optionName}\" has the alias \"${context.negatedAliasName}\" which cannot be named as a negated option.`\n );\n }\n\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the option \"${context.optionName}\" cannot be named as a negated option.`\n );\n }\n\n if (code === DefinitionErrorCode.InvalidDefinitionArgumentName) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the argument \"${context.name}\" cannot be a number..`\n );\n }\n\n if (code === DefinitionErrorCode.DuplicateDefinitionName) {\n const foundIn = context.foundInName\n ? `conflict with the ${context.foundInKind} \"${context.foundInName}\" alias name`\n : `conflict with other ${context.foundInKind} name`;\n\n if (context.duplicatedAlias) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" has the alias \"${context.duplicatedAlias}\" which ${foundIn}.`\n );\n }\n\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" name ${foundIn}.`\n );\n }\n\n if (code === DefinitionErrorCode.EmptyStringAliasName) {\n if (context.optionName) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the option \"${context.optionName}\" has an empty string alias name.`\n );\n }\n\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` + `empty string alias name is not allowed.`\n );\n }\n\n if (code === DefinitionErrorCode.SelfRequire) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" cannot require itself.`\n );\n }\n\n if (code === DefinitionErrorCode.UnknownRequireName) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" requires a non-existent name \"${context.requiredName}\".`\n );\n }\n\n if (code === DefinitionErrorCode.SelfConflict) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" cannot conflict with itself.`\n );\n }\n\n if (code === DefinitionErrorCode.UnknownConflictName) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" conflicts with a non-existent name \"${context.requiredName}\".`\n );\n }\n\n if (code === DefinitionErrorCode.DefinitionRequiresConflictOverlap) {\n const s = context.intersectedNames.length > 1 ? \"s\" : \"\";\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the ${context.kind} \"${context.name}\" has overlapping 'requires' and 'conflictsWith' name${s}: ` +\n context.intersectedNames.join(\", \")\n );\n }\n\n if (code === DefinitionErrorCode.InvalidOptionalArgumentDefinition) {\n if (context.allowPositionals) {\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the argument \"${context.name}\" cannot be optional when \"allowPositionals\" is enabled.`\n );\n }\n\n return (\n `invalid ${context.commandKind} definition \"${context.commandName}\": ` +\n `the argument \"${context.name}\" cannot be optional unless it is the last argument.`\n );\n }\n\n if (code === DefinitionErrorCode.MissingOnExecute) {\n return (\n `trying to execute ${context.commandKind} \"${context.commandName}\" ` +\n `which does not have an \"onExecute\" handler.`\n );\n }\n\n if (code === DefinitionErrorCode.SubcommandHelpNotFound) {\n return (\n `cannot generate help message for subcommand \"${context.subcommandName}\" ` +\n `because it does not exist in CLI \"${context.cliName}\".`\n );\n }\n\n const executiveCheck: never = code;\n return executiveCheck;\n}\n"],
5
+ "mappings": ";AAAA,SAAS,2BAA2B;AAI7B,SAAS,uBAAuB,EAAE,MAAM,QAAQ,GAAwC;AAC7F,MAAI,SAAS,oBAAoB,uBAAuB;AACtD,UAAM,eAAe,QAAQ,gBAAgB,YAAY,YAAY;AACrE,WAAO,WAAW,QAAQ,WAAW,iBAAiB,YAAY;AAAA,EACpE;AAEA,MAAI,SAAS,oBAAoB,sBAAsB;AACrD,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,OAC7D,QAAQ,IAAI;AAAA,EAEpB;AAEA,MAAI,SAAS,oBAAoB,eAAe;AAC9C,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI;AAAA,EAExC;AAEA,MAAI,SAAS,oBAAoB,6BAA6B;AAC5D,QAAI,QAAQ,kBAAkB;AAC5B,aACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,kBAClD,QAAQ,UAAU,oBAAoB,QAAQ,gBAAgB;AAAA,IAEjF;AAEA,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,kBAClD,QAAQ,UAAU;AAAA,EAErC;AAEA,MAAI,SAAS,oBAAoB,+BAA+B;AAC9D,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,oBAChD,QAAQ,IAAI;AAAA,EAEjC;AAEA,MAAI,SAAS,oBAAoB,yBAAyB;AACxD,UAAM,UAAU,QAAQ,cACpB,qBAAqB,QAAQ,WAAW,KAAK,QAAQ,WAAW,iBAChE,uBAAuB,QAAQ,WAAW;AAE9C,QAAI,QAAQ,iBAAiB;AAC3B,aACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI,oBAAoB,QAAQ,eAAe,WAAW,OAAO;AAAA,IAErG;AAEA,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI,UAAU,OAAO;AAAA,EAEzD;AAEA,MAAI,SAAS,oBAAoB,sBAAsB;AACrD,QAAI,QAAQ,YAAY;AACtB,aACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,kBAClD,QAAQ,UAAU;AAAA,IAErC;AAEA,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW;AAAA,EAErE;AAEA,MAAI,SAAS,oBAAoB,aAAa;AAC5C,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI;AAAA,EAExC;AAEA,MAAI,SAAS,oBAAoB,oBAAoB;AACnD,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI,mCAAmC,QAAQ,YAAY;AAAA,EAE/F;AAEA,MAAI,SAAS,oBAAoB,cAAc;AAC7C,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI;AAAA,EAExC;AAEA,MAAI,SAAS,oBAAoB,qBAAqB;AACpD,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI,yCAAyC,QAAQ,YAAY;AAAA,EAErG;AAEA,MAAI,SAAS,oBAAoB,mCAAmC;AAClE,UAAM,IAAI,QAAQ,iBAAiB,SAAS,IAAI,MAAM;AACtD,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,UAC1D,QAAQ,IAAI,KAAK,QAAQ,IAAI,wDAAwD,CAAC,OAC7F,QAAQ,iBAAiB,KAAK,IAAI;AAAA,EAEtC;AAEA,MAAI,SAAS,oBAAoB,mCAAmC;AAClE,QAAI,QAAQ,kBAAkB;AAC5B,aACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,oBAChD,QAAQ,IAAI;AAAA,IAEjC;AAEA,WACE,WAAW,QAAQ,WAAW,gBAAgB,QAAQ,WAAW,oBAChD,QAAQ,IAAI;AAAA,EAEjC;AAEA,MAAI,SAAS,oBAAoB,kBAAkB;AACjD,WACE,qBAAqB,QAAQ,WAAW,KAAK,QAAQ,WAAW;AAAA,EAGpE;AAEA,MAAI,SAAS,oBAAoB,wBAAwB;AACvD,WACE,gDAAgD,QAAQ,cAAc,uCACjC,QAAQ,OAAO;AAAA,EAExD;AAEA,QAAM,iBAAwB;AAC9B,SAAO;AACT;",
6
+ "names": []
7
+ }