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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/README.md +525 -588
  2. package/lib/cjs/autocomplete-scripts/bash-autocomplete-script.cjs +2 -0
  3. package/lib/cjs/autocomplete-scripts/bash-autocomplete-script.cjs.map +1 -0
  4. package/lib/cjs/autocomplete-scripts/powershell-autocomplete-script.cjs +2 -0
  5. package/lib/cjs/autocomplete-scripts/powershell-autocomplete-script.cjs.map +1 -0
  6. package/lib/cjs/autocomplete-scripts/zsh-autocomplete-script.cjs +42 -0
  7. package/lib/cjs/autocomplete-scripts/zsh-autocomplete-script.cjs.map +1 -0
  8. package/lib/cjs/coerce/coerce-methods.cjs +2 -0
  9. package/lib/cjs/coerce/coerce-methods.cjs.map +1 -0
  10. package/lib/cjs/coerce/string-to-array.cjs +2 -0
  11. package/lib/cjs/coerce/string-to-array.cjs.map +1 -0
  12. package/lib/cjs/coerce/string-to-primitive.cjs +2 -0
  13. package/lib/cjs/coerce/string-to-primitive.cjs.map +1 -0
  14. package/lib/cjs/coerce/string-to-set.cjs +2 -0
  15. package/lib/cjs/coerce/string-to-set.cjs.map +1 -0
  16. package/lib/cjs/definitions/define-arguments.cjs +2 -0
  17. package/lib/cjs/definitions/define-arguments.cjs.map +1 -0
  18. package/lib/cjs/definitions/define-cli.cjs +2 -0
  19. package/lib/cjs/definitions/define-cli.cjs.map +1 -0
  20. package/lib/cjs/definitions/define-options.cjs +2 -0
  21. package/lib/cjs/definitions/define-options.cjs.map +1 -0
  22. package/lib/cjs/definitions/define-subcommand.cjs +2 -0
  23. package/lib/cjs/definitions/define-subcommand.cjs.map +1 -0
  24. package/lib/cjs/definitions/validate-cli-definition.cjs +2 -0
  25. package/lib/cjs/definitions/validate-cli-definition.cjs.map +1 -0
  26. package/lib/cjs/help-message/format-arguments.cjs +2 -0
  27. package/lib/cjs/help-message/format-arguments.cjs.map +1 -0
  28. package/lib/cjs/help-message/format-options.cjs +2 -0
  29. package/lib/cjs/help-message/format-options.cjs.map +1 -0
  30. package/lib/cjs/help-message/format-subcommands.cjs +2 -0
  31. package/lib/cjs/help-message/format-subcommands.cjs.map +1 -0
  32. package/lib/cjs/help-message/generate-for-cli.cjs +2 -0
  33. package/lib/cjs/help-message/generate-for-cli.cjs.map +1 -0
  34. package/lib/cjs/help-message/generate-for-subcommand.cjs +2 -0
  35. package/lib/cjs/help-message/generate-for-subcommand.cjs.map +1 -0
  36. package/lib/cjs/help-message/print-help.cjs +2 -0
  37. package/lib/cjs/help-message/print-help.cjs.map +1 -0
  38. package/lib/cjs/help-message/set-defaults.cjs +2 -0
  39. package/lib/cjs/help-message/set-defaults.cjs.map +1 -0
  40. package/lib/cjs/help-message/styles.cjs +2 -0
  41. package/lib/cjs/help-message/styles.cjs.map +1 -0
  42. package/lib/cjs/help-message/terminal-markdown.cjs +2 -0
  43. package/lib/cjs/help-message/terminal-markdown.cjs.map +1 -0
  44. package/lib/cjs/index.cjs +2 -0
  45. package/lib/cjs/index.cjs.map +1 -0
  46. package/lib/cjs/markdown/generate-markdown.cjs +2 -0
  47. package/lib/cjs/markdown/generate-markdown.cjs.map +1 -0
  48. package/lib/cjs/metadata/arguments-metadata.cjs +2 -0
  49. package/lib/cjs/metadata/arguments-metadata.cjs.map +1 -0
  50. package/lib/cjs/metadata/cli-metadata.cjs +2 -0
  51. package/lib/cjs/metadata/cli-metadata.cjs.map +1 -0
  52. package/lib/cjs/metadata/options-metadata.cjs +2 -0
  53. package/lib/cjs/metadata/options-metadata.cjs.map +1 -0
  54. package/lib/cjs/metadata/subcommands-metadata.cjs +2 -0
  55. package/lib/cjs/metadata/subcommands-metadata.cjs.map +1 -0
  56. package/lib/cjs/parse/context/cli-context-builder.cjs +2 -0
  57. package/lib/cjs/parse/context/cli-context-builder.cjs.map +1 -0
  58. package/lib/cjs/parse/context/object-context-builder.cjs +2 -0
  59. package/lib/cjs/parse/context/object-context-builder.cjs.map +1 -0
  60. package/lib/cjs/parse/parser-utilities.cjs +2 -0
  61. package/lib/cjs/parse/parser-utilities.cjs.map +1 -0
  62. package/lib/cjs/parse/safe-parse.cjs +2 -0
  63. package/lib/cjs/parse/safe-parse.cjs.map +1 -0
  64. package/lib/cjs/parse/validation/validate-context.cjs +2 -0
  65. package/lib/cjs/parse/validation/validate-context.cjs.map +1 -0
  66. package/lib/cjs/parse/validation/validators/arguments.cjs +2 -0
  67. package/lib/cjs/parse/validation/validators/arguments.cjs.map +1 -0
  68. package/lib/cjs/parse/validation/validators/conflict.cjs +2 -0
  69. package/lib/cjs/parse/validation/validators/conflict.cjs.map +1 -0
  70. package/lib/cjs/parse/validation/validators/exclusive.cjs +2 -0
  71. package/lib/cjs/parse/validation/validators/exclusive.cjs.map +1 -0
  72. package/lib/cjs/parse/validation/validators/explicitly-passed.cjs +2 -0
  73. package/lib/cjs/parse/validation/validators/explicitly-passed.cjs.map +1 -0
  74. package/lib/cjs/parse/validation/validators/options.cjs +2 -0
  75. package/lib/cjs/parse/validation/validators/options.cjs.map +1 -0
  76. package/lib/cjs/parse/validation/validators/requires.cjs +2 -0
  77. package/lib/cjs/parse/validation/validators/requires.cjs.map +1 -0
  78. package/lib/cjs/utilities.cjs +2 -0
  79. package/lib/cjs/utilities.cjs.map +1 -0
  80. package/lib/esm/autocomplete-scripts/bash-autocomplete-script.js +2 -0
  81. package/lib/esm/autocomplete-scripts/bash-autocomplete-script.js.map +1 -0
  82. package/lib/esm/autocomplete-scripts/powershell-autocomplete-script.js +2 -0
  83. package/lib/esm/autocomplete-scripts/powershell-autocomplete-script.js.map +1 -0
  84. package/lib/esm/autocomplete-scripts/zsh-autocomplete-script.js +42 -0
  85. package/lib/esm/autocomplete-scripts/zsh-autocomplete-script.js.map +1 -0
  86. package/lib/esm/coerce/coerce-methods.js +2 -0
  87. package/lib/esm/coerce/coerce-methods.js.map +1 -0
  88. package/lib/esm/coerce/string-to-array.js +2 -0
  89. package/lib/esm/coerce/string-to-array.js.map +1 -0
  90. package/lib/esm/coerce/string-to-primitive.js +2 -0
  91. package/lib/esm/coerce/string-to-primitive.js.map +1 -0
  92. package/lib/esm/coerce/string-to-set.js +2 -0
  93. package/lib/esm/coerce/string-to-set.js.map +1 -0
  94. package/lib/esm/definitions/define-arguments.js +2 -0
  95. package/lib/esm/definitions/define-arguments.js.map +1 -0
  96. package/lib/esm/definitions/define-cli.js +2 -0
  97. package/lib/esm/definitions/define-cli.js.map +1 -0
  98. package/lib/esm/definitions/define-options.js +2 -0
  99. package/lib/esm/definitions/define-options.js.map +1 -0
  100. package/lib/esm/definitions/define-subcommand.js +2 -0
  101. package/lib/esm/definitions/define-subcommand.js.map +1 -0
  102. package/lib/esm/definitions/validate-cli-definition.js +2 -0
  103. package/lib/esm/definitions/validate-cli-definition.js.map +1 -0
  104. package/lib/esm/help-message/format-arguments.js +2 -0
  105. package/lib/esm/help-message/format-arguments.js.map +1 -0
  106. package/lib/esm/help-message/format-options.js +2 -0
  107. package/lib/esm/help-message/format-options.js.map +1 -0
  108. package/lib/esm/help-message/format-subcommands.js +2 -0
  109. package/lib/esm/help-message/format-subcommands.js.map +1 -0
  110. package/lib/esm/help-message/generate-for-cli.js +2 -0
  111. package/lib/esm/help-message/generate-for-cli.js.map +1 -0
  112. package/lib/esm/help-message/generate-for-subcommand.js +2 -0
  113. package/lib/esm/help-message/generate-for-subcommand.js.map +1 -0
  114. package/lib/esm/help-message/print-help.js +2 -0
  115. package/lib/esm/help-message/print-help.js.map +1 -0
  116. package/lib/esm/help-message/set-defaults.js +2 -0
  117. package/lib/esm/help-message/set-defaults.js.map +1 -0
  118. package/lib/esm/help-message/styles.js +2 -0
  119. package/lib/esm/help-message/styles.js.map +1 -0
  120. package/lib/esm/help-message/terminal-markdown.js +2 -0
  121. package/lib/esm/help-message/terminal-markdown.js.map +1 -0
  122. package/lib/esm/index.js +2 -0
  123. package/lib/esm/index.js.map +1 -0
  124. package/lib/esm/markdown/generate-markdown.js +2 -0
  125. package/lib/esm/markdown/generate-markdown.js.map +1 -0
  126. package/lib/esm/metadata/arguments-metadata.js +2 -0
  127. package/lib/esm/metadata/arguments-metadata.js.map +1 -0
  128. package/lib/esm/metadata/cli-metadata.js +2 -0
  129. package/lib/esm/metadata/cli-metadata.js.map +1 -0
  130. package/lib/esm/metadata/options-metadata.js +2 -0
  131. package/lib/esm/metadata/options-metadata.js.map +1 -0
  132. package/lib/esm/metadata/subcommands-metadata.js +2 -0
  133. package/lib/esm/metadata/subcommands-metadata.js.map +1 -0
  134. package/lib/esm/parse/context/cli-context-builder.js +2 -0
  135. package/lib/esm/parse/context/cli-context-builder.js.map +1 -0
  136. package/lib/esm/parse/context/object-context-builder.js +2 -0
  137. package/lib/esm/parse/context/object-context-builder.js.map +1 -0
  138. package/lib/esm/parse/parser-utilities.js +2 -0
  139. package/lib/esm/parse/parser-utilities.js.map +1 -0
  140. package/lib/esm/parse/safe-parse.js +2 -0
  141. package/lib/esm/parse/safe-parse.js.map +1 -0
  142. package/lib/esm/parse/validation/validate-context.js +2 -0
  143. package/lib/esm/parse/validation/validate-context.js.map +1 -0
  144. package/lib/esm/parse/validation/validators/arguments.js +2 -0
  145. package/lib/esm/parse/validation/validators/arguments.js.map +1 -0
  146. package/lib/esm/parse/validation/validators/conflict.js +2 -0
  147. package/lib/esm/parse/validation/validators/conflict.js.map +1 -0
  148. package/lib/esm/parse/validation/validators/exclusive.js +2 -0
  149. package/lib/esm/parse/validation/validators/exclusive.js.map +1 -0
  150. package/lib/esm/parse/validation/validators/explicitly-passed.js +2 -0
  151. package/lib/esm/parse/validation/validators/explicitly-passed.js.map +1 -0
  152. package/lib/esm/parse/validation/validators/options.js +2 -0
  153. package/lib/esm/parse/validation/validators/options.js.map +1 -0
  154. package/lib/esm/parse/validation/validators/requires.js +2 -0
  155. package/lib/esm/parse/validation/validators/requires.js.map +1 -0
  156. package/lib/esm/utilities.js +2 -0
  157. package/lib/esm/utilities.js.map +1 -0
  158. package/lib/iife/index.js +2 -0
  159. package/lib/iife/index.js.map +1 -0
  160. package/lib/mjs/autocomplete-scripts/bash-autocomplete-script.mjs +2 -0
  161. package/lib/mjs/autocomplete-scripts/bash-autocomplete-script.mjs.map +1 -0
  162. package/lib/mjs/autocomplete-scripts/powershell-autocomplete-script.mjs +2 -0
  163. package/lib/mjs/autocomplete-scripts/powershell-autocomplete-script.mjs.map +1 -0
  164. package/lib/mjs/autocomplete-scripts/zsh-autocomplete-script.mjs +42 -0
  165. package/lib/mjs/autocomplete-scripts/zsh-autocomplete-script.mjs.map +1 -0
  166. package/lib/mjs/coerce/coerce-methods.mjs +2 -0
  167. package/lib/mjs/coerce/coerce-methods.mjs.map +1 -0
  168. package/lib/mjs/coerce/string-to-array.mjs +2 -0
  169. package/lib/mjs/coerce/string-to-array.mjs.map +1 -0
  170. package/lib/mjs/coerce/string-to-primitive.mjs +2 -0
  171. package/lib/mjs/coerce/string-to-primitive.mjs.map +1 -0
  172. package/lib/mjs/coerce/string-to-set.mjs +2 -0
  173. package/lib/mjs/coerce/string-to-set.mjs.map +1 -0
  174. package/lib/mjs/definitions/define-arguments.mjs +2 -0
  175. package/lib/mjs/definitions/define-arguments.mjs.map +1 -0
  176. package/lib/mjs/definitions/define-cli.mjs +2 -0
  177. package/lib/mjs/definitions/define-cli.mjs.map +1 -0
  178. package/lib/mjs/definitions/define-options.mjs +2 -0
  179. package/lib/mjs/definitions/define-options.mjs.map +1 -0
  180. package/lib/mjs/definitions/define-subcommand.mjs +2 -0
  181. package/lib/mjs/definitions/define-subcommand.mjs.map +1 -0
  182. package/lib/mjs/definitions/validate-cli-definition.mjs +2 -0
  183. package/lib/mjs/definitions/validate-cli-definition.mjs.map +1 -0
  184. package/lib/mjs/help-message/format-arguments.mjs +2 -0
  185. package/lib/mjs/help-message/format-arguments.mjs.map +1 -0
  186. package/lib/mjs/help-message/format-options.mjs +2 -0
  187. package/lib/mjs/help-message/format-options.mjs.map +1 -0
  188. package/lib/mjs/help-message/format-subcommands.mjs +2 -0
  189. package/lib/mjs/help-message/format-subcommands.mjs.map +1 -0
  190. package/lib/mjs/help-message/generate-for-cli.mjs +2 -0
  191. package/lib/mjs/help-message/generate-for-cli.mjs.map +1 -0
  192. package/lib/mjs/help-message/generate-for-subcommand.mjs +2 -0
  193. package/lib/mjs/help-message/generate-for-subcommand.mjs.map +1 -0
  194. package/lib/mjs/help-message/print-help.mjs +2 -0
  195. package/lib/mjs/help-message/print-help.mjs.map +1 -0
  196. package/lib/mjs/help-message/set-defaults.mjs +2 -0
  197. package/lib/mjs/help-message/set-defaults.mjs.map +1 -0
  198. package/lib/mjs/help-message/styles.mjs +2 -0
  199. package/lib/mjs/help-message/styles.mjs.map +1 -0
  200. package/lib/mjs/help-message/terminal-markdown.mjs +2 -0
  201. package/lib/mjs/help-message/terminal-markdown.mjs.map +1 -0
  202. package/lib/mjs/index.mjs +2 -0
  203. package/lib/mjs/index.mjs.map +1 -0
  204. package/lib/mjs/markdown/generate-markdown.mjs +2 -0
  205. package/lib/mjs/markdown/generate-markdown.mjs.map +1 -0
  206. package/lib/mjs/metadata/arguments-metadata.mjs +2 -0
  207. package/lib/mjs/metadata/arguments-metadata.mjs.map +1 -0
  208. package/lib/mjs/metadata/cli-metadata.mjs +2 -0
  209. package/lib/mjs/metadata/cli-metadata.mjs.map +1 -0
  210. package/lib/mjs/metadata/options-metadata.mjs +2 -0
  211. package/lib/mjs/metadata/options-metadata.mjs.map +1 -0
  212. package/lib/mjs/metadata/subcommands-metadata.mjs +2 -0
  213. package/lib/mjs/metadata/subcommands-metadata.mjs.map +1 -0
  214. package/lib/mjs/parse/context/cli-context-builder.mjs +2 -0
  215. package/lib/mjs/parse/context/cli-context-builder.mjs.map +1 -0
  216. package/lib/mjs/parse/context/object-context-builder.mjs +2 -0
  217. package/lib/mjs/parse/context/object-context-builder.mjs.map +1 -0
  218. package/lib/mjs/parse/parser-utilities.mjs +2 -0
  219. package/lib/mjs/parse/parser-utilities.mjs.map +1 -0
  220. package/lib/mjs/parse/safe-parse.mjs +2 -0
  221. package/lib/mjs/parse/safe-parse.mjs.map +1 -0
  222. package/lib/mjs/parse/validation/validate-context.mjs +2 -0
  223. package/lib/mjs/parse/validation/validate-context.mjs.map +1 -0
  224. package/lib/mjs/parse/validation/validators/arguments.mjs +2 -0
  225. package/lib/mjs/parse/validation/validators/arguments.mjs.map +1 -0
  226. package/lib/mjs/parse/validation/validators/conflict.mjs +2 -0
  227. package/lib/mjs/parse/validation/validators/conflict.mjs.map +1 -0
  228. package/lib/mjs/parse/validation/validators/exclusive.mjs +2 -0
  229. package/lib/mjs/parse/validation/validators/exclusive.mjs.map +1 -0
  230. package/lib/mjs/parse/validation/validators/explicitly-passed.mjs +2 -0
  231. package/lib/mjs/parse/validation/validators/explicitly-passed.mjs.map +1 -0
  232. package/lib/mjs/parse/validation/validators/options.mjs +2 -0
  233. package/lib/mjs/parse/validation/validators/options.mjs.map +1 -0
  234. package/lib/mjs/parse/validation/validators/requires.mjs +2 -0
  235. package/lib/mjs/parse/validation/validators/requires.mjs.map +1 -0
  236. package/lib/mjs/utilities.mjs +2 -0
  237. package/lib/mjs/utilities.mjs.map +1 -0
  238. package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts +2 -2
  239. package/lib/typescript/autocomplete-scripts/bash-autocomplete-script.d.ts.map +1 -1
  240. package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts +2 -2
  241. package/lib/typescript/autocomplete-scripts/powershell-autocomplete-script.d.ts.map +1 -1
  242. package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts +2 -2
  243. package/lib/typescript/autocomplete-scripts/zsh-autocomplete-script.d.ts.map +1 -1
  244. package/lib/typescript/coerce/coerce-methods.d.ts +20 -0
  245. package/lib/typescript/coerce/coerce-methods.d.ts.map +1 -0
  246. package/lib/typescript/coerce/string-to-array.d.ts +6 -0
  247. package/lib/typescript/coerce/string-to-array.d.ts.map +1 -0
  248. package/lib/typescript/coerce/string-to-primitive.d.ts +5 -0
  249. package/lib/typescript/coerce/string-to-primitive.d.ts.map +1 -0
  250. package/lib/typescript/coerce/string-to-set.d.ts +6 -0
  251. package/lib/typescript/coerce/string-to-set.d.ts.map +1 -0
  252. package/lib/typescript/definitions/define-arguments.d.ts +7 -0
  253. package/lib/typescript/definitions/define-arguments.d.ts.map +1 -0
  254. package/lib/typescript/definitions/define-cli.d.ts +24 -0
  255. package/lib/typescript/definitions/define-cli.d.ts.map +1 -0
  256. package/lib/typescript/definitions/define-options.d.ts +7 -0
  257. package/lib/typescript/definitions/define-options.d.ts.map +1 -0
  258. package/lib/typescript/definitions/define-subcommand.d.ts +17 -0
  259. package/lib/typescript/definitions/define-subcommand.d.ts.map +1 -0
  260. package/lib/typescript/definitions/validate-cli-definition.d.ts +4 -0
  261. package/lib/typescript/definitions/validate-cli-definition.d.ts.map +1 -0
  262. package/lib/typescript/help-message/format-arguments.d.ts +3 -3
  263. package/lib/typescript/help-message/format-arguments.d.ts.map +1 -1
  264. package/lib/typescript/help-message/format-options.d.ts +3 -3
  265. package/lib/typescript/help-message/format-options.d.ts.map +1 -1
  266. package/lib/typescript/help-message/format-subcommands.d.ts +3 -3
  267. package/lib/typescript/help-message/format-subcommands.d.ts.map +1 -1
  268. package/lib/typescript/help-message/generate-for-cli.d.ts +8 -0
  269. package/lib/typescript/help-message/generate-for-cli.d.ts.map +1 -0
  270. package/lib/typescript/help-message/generate-for-subcommand.d.ts +4 -0
  271. package/lib/typescript/help-message/generate-for-subcommand.d.ts.map +1 -0
  272. package/lib/typescript/help-message/print-help.d.ts +5 -0
  273. package/lib/typescript/help-message/print-help.d.ts.map +1 -0
  274. package/lib/typescript/help-message/set-defaults.d.ts +4 -0
  275. package/lib/typescript/help-message/set-defaults.d.ts.map +1 -0
  276. package/lib/typescript/help-message/styles.d.ts +30 -106
  277. package/lib/typescript/help-message/styles.d.ts.map +1 -1
  278. package/lib/typescript/help-message/terminal-markdown.d.ts +3 -0
  279. package/lib/typescript/help-message/terminal-markdown.d.ts.map +1 -0
  280. package/lib/typescript/index.d.ts +23 -35
  281. package/lib/typescript/index.d.ts.map +1 -1
  282. package/lib/typescript/markdown/generate-markdown.d.ts +2 -2
  283. package/lib/typescript/markdown/generate-markdown.d.ts.map +1 -1
  284. package/lib/typescript/metadata/arguments-metadata.d.ts +4 -0
  285. package/lib/typescript/metadata/arguments-metadata.d.ts.map +1 -0
  286. package/lib/typescript/metadata/cli-metadata.d.ts +4 -0
  287. package/lib/typescript/metadata/cli-metadata.d.ts.map +1 -0
  288. package/lib/typescript/metadata/options-metadata.d.ts +4 -0
  289. package/lib/typescript/metadata/options-metadata.d.ts.map +1 -0
  290. package/lib/typescript/metadata/subcommands-metadata.d.ts +4 -0
  291. package/lib/typescript/metadata/subcommands-metadata.d.ts.map +1 -0
  292. package/lib/typescript/parse/context/cli-context-builder.d.ts +9 -0
  293. package/lib/typescript/parse/context/cli-context-builder.d.ts.map +1 -0
  294. package/lib/typescript/parse/context/object-context-builder.d.ts +6 -0
  295. package/lib/typescript/parse/context/object-context-builder.d.ts.map +1 -0
  296. package/lib/typescript/{parser/parse/parser-helpers.d.ts → parse/parser-utilities.d.ts} +18 -9
  297. package/lib/typescript/parse/parser-utilities.d.ts.map +1 -0
  298. package/lib/typescript/parse/safe-parse.d.ts +5 -0
  299. package/lib/typescript/parse/safe-parse.d.ts.map +1 -0
  300. package/lib/typescript/parse/validation/validate-context.d.ts +6 -0
  301. package/lib/typescript/parse/validation/validate-context.d.ts.map +1 -0
  302. package/lib/typescript/parse/validation/validators/arguments.d.ts +12 -0
  303. package/lib/typescript/parse/validation/validators/arguments.d.ts.map +1 -0
  304. package/lib/typescript/parse/validation/validators/conflict.d.ts +16 -0
  305. package/lib/typescript/parse/validation/validators/conflict.d.ts.map +1 -0
  306. package/lib/typescript/parse/validation/validators/exclusive.d.ts +16 -0
  307. package/lib/typescript/parse/validation/validators/exclusive.d.ts.map +1 -0
  308. package/lib/typescript/parse/validation/validators/explicitly-passed.d.ts +5 -0
  309. package/lib/typescript/parse/validation/validators/explicitly-passed.d.ts.map +1 -0
  310. package/lib/typescript/parse/validation/validators/options.d.ts +12 -0
  311. package/lib/typescript/parse/validation/validators/options.d.ts.map +1 -0
  312. package/lib/typescript/parse/validation/validators/requires.d.ts +18 -0
  313. package/lib/typescript/parse/validation/validators/requires.d.ts.map +1 -0
  314. package/lib/typescript/types/context-types.d.ts +135 -0
  315. package/lib/typescript/types/context-types.d.ts.map +1 -0
  316. package/lib/typescript/types/definitions-types.d.ts +294 -0
  317. package/lib/typescript/types/definitions-types.d.ts.map +1 -0
  318. package/lib/typescript/types/help-message-types.d.ts +134 -0
  319. package/lib/typescript/types/help-message-types.d.ts.map +1 -0
  320. package/lib/typescript/types/io-types.d.ts +96 -0
  321. package/lib/typescript/types/io-types.d.ts.map +1 -0
  322. package/lib/typescript/types/metadata-types.d.ts +75 -0
  323. package/lib/typescript/types/metadata-types.d.ts.map +1 -0
  324. package/lib/typescript/types/schema-types.d.ts +6 -0
  325. package/lib/typescript/types/schema-types.d.ts.map +1 -0
  326. package/lib/typescript/types/types.d.ts +61 -0
  327. package/lib/typescript/types/types.d.ts.map +1 -0
  328. package/lib/typescript/types/utilities-types.d.ts +17 -0
  329. package/lib/typescript/types/utilities-types.d.ts.map +1 -0
  330. package/lib/typescript/utilities.d.ts +24 -10
  331. package/lib/typescript/utilities.d.ts.map +1 -1
  332. package/package.json +29 -26
  333. package/src/autocomplete-scripts/bash-autocomplete-script.ts +13 -9
  334. package/src/autocomplete-scripts/powershell-autocomplete-script.ts +21 -13
  335. package/src/autocomplete-scripts/zsh-autocomplete-script.ts +27 -23
  336. package/src/coerce/coerce-methods.ts +75 -0
  337. package/src/coerce/string-to-array.ts +18 -0
  338. package/src/coerce/string-to-primitive.ts +31 -0
  339. package/src/coerce/string-to-set.ts +15 -0
  340. package/src/definitions/define-arguments.ts +10 -0
  341. package/src/definitions/define-cli.ts +105 -0
  342. package/src/definitions/define-options.ts +12 -0
  343. package/src/definitions/define-subcommand.ts +57 -0
  344. package/src/definitions/validate-cli-definition.ts +331 -0
  345. package/src/help-message/format-arguments.ts +57 -33
  346. package/src/help-message/format-options.ts +59 -34
  347. package/src/help-message/format-subcommands.ts +43 -21
  348. package/src/help-message/generate-for-cli.ts +114 -0
  349. package/src/help-message/generate-for-subcommand.ts +32 -0
  350. package/src/help-message/print-help.ts +13 -0
  351. package/src/help-message/set-defaults.ts +34 -0
  352. package/src/help-message/styles.ts +148 -103
  353. package/src/help-message/terminal-markdown.ts +147 -0
  354. package/src/index.ts +28 -97
  355. package/src/markdown/generate-markdown.ts +47 -58
  356. package/src/metadata/arguments-metadata.ts +28 -0
  357. package/src/metadata/cli-metadata.ts +26 -0
  358. package/src/metadata/options-metadata.ts +38 -0
  359. package/src/metadata/subcommands-metadata.ts +35 -0
  360. package/src/parse/context/cli-context-builder.ts +246 -0
  361. package/src/parse/context/object-context-builder.ts +63 -0
  362. package/src/{parser/parse/parser-helpers.ts → parse/parser-utilities.ts} +46 -25
  363. package/src/parse/safe-parse.ts +76 -0
  364. package/src/parse/validation/validate-context.ts +23 -0
  365. package/src/parse/validation/validators/arguments.ts +59 -0
  366. package/src/parse/validation/validators/conflict.ts +68 -0
  367. package/src/parse/validation/validators/exclusive.ts +70 -0
  368. package/src/parse/validation/validators/explicitly-passed.ts +15 -0
  369. package/src/parse/validation/validators/options.ts +59 -0
  370. package/src/parse/validation/validators/requires.ts +82 -0
  371. package/src/types/context-types.ts +171 -0
  372. package/src/types/definitions-types.ts +340 -0
  373. package/src/types/help-message-types.ts +153 -0
  374. package/src/types/io-types.ts +131 -0
  375. package/src/types/metadata-types.ts +104 -0
  376. package/src/types/schema-types.ts +9 -0
  377. package/src/types/types.ts +72 -0
  378. package/src/types/utilities-types.ts +26 -0
  379. package/src/utilities.ts +200 -23
  380. package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.cjs +0 -42
  381. package/lib/commonjs/autocomplete-scripts/bash-autocomplete-script.cjs.map +0 -1
  382. package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.cjs +0 -31
  383. package/lib/commonjs/autocomplete-scripts/powershell-autocomplete-script.cjs.map +0 -1
  384. package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.cjs +0 -41
  385. package/lib/commonjs/autocomplete-scripts/zsh-autocomplete-script.cjs.map +0 -1
  386. package/lib/commonjs/help-message/format-arguments.cjs +0 -1
  387. package/lib/commonjs/help-message/format-arguments.cjs.map +0 -1
  388. package/lib/commonjs/help-message/format-cli.cjs +0 -1
  389. package/lib/commonjs/help-message/format-cli.cjs.map +0 -1
  390. package/lib/commonjs/help-message/format-options.cjs +0 -1
  391. package/lib/commonjs/help-message/format-options.cjs.map +0 -1
  392. package/lib/commonjs/help-message/format-subcommands.cjs +0 -1
  393. package/lib/commonjs/help-message/format-subcommands.cjs.map +0 -1
  394. package/lib/commonjs/help-message/styles.cjs +0 -1
  395. package/lib/commonjs/help-message/styles.cjs.map +0 -1
  396. package/lib/commonjs/index.cjs +0 -1
  397. package/lib/commonjs/index.cjs.map +0 -1
  398. package/lib/commonjs/markdown/generate-markdown.cjs +0 -1
  399. package/lib/commonjs/markdown/generate-markdown.cjs.map +0 -1
  400. package/lib/commonjs/metadata/get-arguments-metadata.cjs +0 -1
  401. package/lib/commonjs/metadata/get-arguments-metadata.cjs.map +0 -1
  402. package/lib/commonjs/metadata/get-cli-metadata.cjs +0 -1
  403. package/lib/commonjs/metadata/get-cli-metadata.cjs.map +0 -1
  404. package/lib/commonjs/metadata/get-options-metadata.cjs +0 -1
  405. package/lib/commonjs/metadata/get-options-metadata.cjs.map +0 -1
  406. package/lib/commonjs/metadata/get-subcommands-metadata.cjs +0 -1
  407. package/lib/commonjs/metadata/get-subcommands-metadata.cjs.map +0 -1
  408. package/lib/commonjs/parser/parse/parse.cjs +0 -1
  409. package/lib/commonjs/parser/parse/parse.cjs.map +0 -1
  410. package/lib/commonjs/parser/parse/parser-helpers.cjs +0 -1
  411. package/lib/commonjs/parser/parse/parser-helpers.cjs.map +0 -1
  412. package/lib/commonjs/parser/safe-parse.cjs +0 -1
  413. package/lib/commonjs/parser/safe-parse.cjs.map +0 -1
  414. package/lib/commonjs/parser/unsafe-parse.cjs +0 -1
  415. package/lib/commonjs/parser/unsafe-parse.cjs.map +0 -1
  416. package/lib/commonjs/parser/validate/validate-type.cjs +0 -1
  417. package/lib/commonjs/parser/validate/validate-type.cjs.map +0 -1
  418. package/lib/commonjs/parser/validate/validate.cjs +0 -1
  419. package/lib/commonjs/parser/validate/validate.cjs.map +0 -1
  420. package/lib/commonjs/utilities.cjs +0 -1
  421. package/lib/commonjs/utilities.cjs.map +0 -1
  422. package/lib/commonjs/zod-utilities.cjs +0 -1
  423. package/lib/commonjs/zod-utilities.cjs.map +0 -1
  424. package/lib/module/autocomplete-scripts/bash-autocomplete-script.mjs +0 -42
  425. package/lib/module/autocomplete-scripts/bash-autocomplete-script.mjs.map +0 -1
  426. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs +0 -31
  427. package/lib/module/autocomplete-scripts/powershell-autocomplete-script.mjs.map +0 -1
  428. package/lib/module/autocomplete-scripts/zsh-autocomplete-script.mjs +0 -41
  429. package/lib/module/autocomplete-scripts/zsh-autocomplete-script.mjs.map +0 -1
  430. package/lib/module/help-message/format-arguments.mjs +0 -1
  431. package/lib/module/help-message/format-arguments.mjs.map +0 -1
  432. package/lib/module/help-message/format-cli.mjs +0 -1
  433. package/lib/module/help-message/format-cli.mjs.map +0 -1
  434. package/lib/module/help-message/format-options.mjs +0 -1
  435. package/lib/module/help-message/format-options.mjs.map +0 -1
  436. package/lib/module/help-message/format-subcommands.mjs +0 -1
  437. package/lib/module/help-message/format-subcommands.mjs.map +0 -1
  438. package/lib/module/help-message/styles.mjs +0 -1
  439. package/lib/module/help-message/styles.mjs.map +0 -1
  440. package/lib/module/index.mjs +0 -1
  441. package/lib/module/index.mjs.map +0 -1
  442. package/lib/module/markdown/generate-markdown.mjs +0 -1
  443. package/lib/module/markdown/generate-markdown.mjs.map +0 -1
  444. package/lib/module/metadata/get-arguments-metadata.mjs +0 -1
  445. package/lib/module/metadata/get-arguments-metadata.mjs.map +0 -1
  446. package/lib/module/metadata/get-cli-metadata.mjs +0 -1
  447. package/lib/module/metadata/get-cli-metadata.mjs.map +0 -1
  448. package/lib/module/metadata/get-options-metadata.mjs +0 -1
  449. package/lib/module/metadata/get-options-metadata.mjs.map +0 -1
  450. package/lib/module/metadata/get-subcommands-metadata.mjs +0 -1
  451. package/lib/module/metadata/get-subcommands-metadata.mjs.map +0 -1
  452. package/lib/module/parser/parse/parse.mjs +0 -1
  453. package/lib/module/parser/parse/parse.mjs.map +0 -1
  454. package/lib/module/parser/parse/parser-helpers.mjs +0 -1
  455. package/lib/module/parser/parse/parser-helpers.mjs.map +0 -1
  456. package/lib/module/parser/safe-parse.mjs +0 -1
  457. package/lib/module/parser/safe-parse.mjs.map +0 -1
  458. package/lib/module/parser/unsafe-parse.mjs +0 -1
  459. package/lib/module/parser/unsafe-parse.mjs.map +0 -1
  460. package/lib/module/parser/validate/validate-type.mjs +0 -1
  461. package/lib/module/parser/validate/validate-type.mjs.map +0 -1
  462. package/lib/module/parser/validate/validate.mjs +0 -1
  463. package/lib/module/parser/validate/validate.mjs.map +0 -1
  464. package/lib/module/utilities.mjs +0 -1
  465. package/lib/module/utilities.mjs.map +0 -1
  466. package/lib/module/zod-utilities.mjs +0 -1
  467. package/lib/module/zod-utilities.mjs.map +0 -1
  468. package/lib/typescript/help-message/format-cli.d.ts +0 -6
  469. package/lib/typescript/help-message/format-cli.d.ts.map +0 -1
  470. package/lib/typescript/metadata/get-arguments-metadata.d.ts +0 -4
  471. package/lib/typescript/metadata/get-arguments-metadata.d.ts.map +0 -1
  472. package/lib/typescript/metadata/get-cli-metadata.d.ts +0 -4
  473. package/lib/typescript/metadata/get-cli-metadata.d.ts.map +0 -1
  474. package/lib/typescript/metadata/get-options-metadata.d.ts +0 -4
  475. package/lib/typescript/metadata/get-options-metadata.d.ts.map +0 -1
  476. package/lib/typescript/metadata/get-subcommands-metadata.d.ts +0 -4
  477. package/lib/typescript/metadata/get-subcommands-metadata.d.ts.map +0 -1
  478. package/lib/typescript/metadata/metadata-types.d.ts +0 -80
  479. package/lib/typescript/metadata/metadata-types.d.ts.map +0 -1
  480. package/lib/typescript/parser/parse/parse-types.d.ts +0 -85
  481. package/lib/typescript/parser/parse/parse-types.d.ts.map +0 -1
  482. package/lib/typescript/parser/parse/parse.d.ts +0 -4
  483. package/lib/typescript/parser/parse/parse.d.ts.map +0 -1
  484. package/lib/typescript/parser/parse/parser-helpers.d.ts.map +0 -1
  485. package/lib/typescript/parser/safe-parse.d.ts +0 -4
  486. package/lib/typescript/parser/safe-parse.d.ts.map +0 -1
  487. package/lib/typescript/parser/unsafe-parse.d.ts +0 -4
  488. package/lib/typescript/parser/unsafe-parse.d.ts.map +0 -1
  489. package/lib/typescript/parser/validate/validate-type.d.ts +0 -22
  490. package/lib/typescript/parser/validate/validate-type.d.ts.map +0 -1
  491. package/lib/typescript/parser/validate/validate.d.ts +0 -11
  492. package/lib/typescript/parser/validate/validate.d.ts.map +0 -1
  493. package/lib/typescript/types.d.ts +0 -294
  494. package/lib/typescript/types.d.ts.map +0 -1
  495. package/lib/typescript/zod-utilities.d.ts +0 -28
  496. package/lib/typescript/zod-utilities.d.ts.map +0 -1
  497. package/src/help-message/format-cli.ts +0 -141
  498. package/src/metadata/get-arguments-metadata.ts +0 -25
  499. package/src/metadata/get-cli-metadata.ts +0 -23
  500. package/src/metadata/get-options-metadata.ts +0 -35
  501. package/src/metadata/get-subcommands-metadata.ts +0 -32
  502. package/src/metadata/metadata-types.ts +0 -114
  503. package/src/parser/parse/parse-types.ts +0 -89
  504. package/src/parser/parse/parse.ts +0 -230
  505. package/src/parser/safe-parse.ts +0 -103
  506. package/src/parser/unsafe-parse.ts +0 -98
  507. package/src/parser/validate/validate-type.ts +0 -21
  508. package/src/parser/validate/validate.ts +0 -66
  509. package/src/types.ts +0 -365
  510. package/src/zod-utilities.ts +0 -214
@@ -1,60 +1,93 @@
1
- import chalk from "chalk";
2
- import type { HelpMessageStyle } from "../types.js";
1
+ import c from "chalk";
2
+
3
+ import type { HelpMessageStyleImpl } from "../types/help-message-types.ts";
4
+
5
+ export class HelpMessageStyle implements HelpMessageStyleImpl {
6
+ static noColor = (...text: unknown[]) => text.join(" ");
7
+
8
+ title = HelpMessageStyle.noColor;
9
+ description = HelpMessageStyle.noColor;
10
+ default = HelpMessageStyle.noColor;
11
+ optional = HelpMessageStyle.noColor;
12
+ exampleTitle = HelpMessageStyle.noColor;
13
+ example = HelpMessageStyle.noColor;
14
+ command = HelpMessageStyle.noColor;
15
+ option = HelpMessageStyle.noColor;
16
+ argument = HelpMessageStyle.noColor;
17
+ placeholder = HelpMessageStyle.noColor;
18
+ punctuation = HelpMessageStyle.noColor;
19
+
20
+ constructor(style: Partial<HelpMessageStyleImpl>, baseStyle?: HelpMessageStyleImpl) {
21
+ if (baseStyle) {
22
+ Object.assign(this, baseStyle);
23
+ }
24
+
25
+ Object.assign(this, style);
26
+ }
27
+ }
3
28
 
4
29
  export const helpMessageStyles = Object.freeze({
5
- default: {
6
- title: chalk.bold.blue,
7
- description: chalk.white,
8
- default: chalk.dim.italic,
9
- optional: chalk.dim.italic,
10
- exampleTitle: chalk.yellow,
11
- example: chalk.dim,
12
- command: chalk.yellow,
13
- option: chalk.cyan,
14
- argument: chalk.green,
15
- placeholder: chalk.hex("#FF9800"),
16
- punctuation: chalk.white.dim,
17
- },
18
- dracula: {
19
- title: chalk.bold.hex("#BD93F9"),
20
- description: chalk.hex("#F8F8F2"),
21
- default: chalk.italic.hex("#6272A4"),
22
- optional: chalk.italic.hex("#6272A4"),
23
- exampleTitle: chalk.hex("#FFB86C"),
24
- example: chalk.hex("#6272A4"),
25
- command: chalk.hex("#50FA7B"),
26
- option: chalk.hex("#8BE9FD"),
27
- argument: chalk.hex("#FF79C6"),
28
- placeholder: chalk.hex("#F1FA8C"),
29
- punctuation: chalk.hex("#6272A4"),
30
- },
31
- solarizedDark: {
32
- title: chalk.bold.hex("#268BD2"),
33
- description: chalk.hex("#93A1A1"),
34
- default: chalk.italic.hex("#586E75"),
35
- optional: chalk.italic.hex("#586E75"),
36
- exampleTitle: chalk.hex("#B58900"),
37
- example: chalk.hex("#586E75"),
38
- command: chalk.hex("#2AA198"),
39
- option: chalk.hex("#268BD2"),
40
- argument: chalk.hex("#859900"),
41
- placeholder: chalk.hex("#CB4B16"),
42
- punctuation: chalk.hex("#657B83"),
43
- },
44
- nord: {
45
- title: chalk.bold.hex("#81A1C1"),
46
- description: chalk.hex("#D8DEE9"),
47
- default: chalk.italic.hex("#4C566A"),
48
- optional: chalk.italic.hex("#4C566A"),
49
- exampleTitle: chalk.hex("#EBCB8B"),
50
- example: chalk.hex("#4C566A"),
51
- command: chalk.hex("#A3BE8C"),
52
- option: chalk.hex("#88C0D0"),
53
- argument: chalk.hex("#BF616A"),
54
- placeholder: chalk.hex("#D08770"),
55
- punctuation: chalk.hex("#4C566A"),
56
- },
57
- html: {
30
+ default: new HelpMessageStyle({
31
+ title: c.bold.blue,
32
+ description: c.white,
33
+ default: c.dim.italic,
34
+ optional: c.dim.italic,
35
+ exampleTitle: c.yellow,
36
+ example: c.dim,
37
+ command: c.yellow,
38
+ option: c.cyan,
39
+ argument: c.green,
40
+ placeholder: c.hex("#FF9800"),
41
+ punctuation: c.white.dim,
42
+ }),
43
+
44
+ dracula: new HelpMessageStyle({
45
+ title: c.bold.hex("#BD93F9"),
46
+ description: c.hex("#F8F8F2"),
47
+ default: c.italic.hex("#6272A4"),
48
+ optional: c.italic.hex("#6272A4"),
49
+ exampleTitle: c.hex("#FFB86C"),
50
+ example: c.hex("#6272A4"),
51
+ command: c.hex("#50FA7B"),
52
+ option: c.hex("#8BE9FD"),
53
+ argument: c.hex("#FF79C6"),
54
+ placeholder: c.hex("#F1FA8C"),
55
+ punctuation: c.hex("#6272A4"),
56
+ }),
57
+
58
+ solarizedDark: new HelpMessageStyle({
59
+ title: c.bold.hex("#268BD2"),
60
+ description: c.hex("#93A1A1"),
61
+ default: c.italic.hex("#586E75"),
62
+ optional: c.italic.hex("#586E75"),
63
+ exampleTitle: c.hex("#B58900"),
64
+ example: c.hex("#586E75"),
65
+ command: c.hex("#2AA198"),
66
+ option: c.hex("#268BD2"),
67
+ argument: c.hex("#859900"),
68
+ placeholder: c.hex("#CB4B16"),
69
+ punctuation: c.hex("#657B83"),
70
+ }),
71
+
72
+ nord: new HelpMessageStyle({
73
+ title: c.bold.hex("#81A1C1"),
74
+ description: c.hex("#D8DEE9"),
75
+ default: c.italic.hex("#4C566A"),
76
+ optional: c.italic.hex("#4C566A"),
77
+ exampleTitle: c.hex("#EBCB8B"),
78
+ example: c.hex("#4C566A"),
79
+ command: c.hex("#A3BE8C"),
80
+ option: c.hex("#88C0D0"),
81
+ argument: c.hex("#BF616A"),
82
+ placeholder: c.hex("#D08770"),
83
+ punctuation: c.hex("#4C566A"),
84
+ }),
85
+
86
+ /**
87
+ * - Wrap the output in a <pre> element to preserve whitespace.
88
+ * - If using `descriptionMarkdown`, set `markdownRenderer` to `html` instead of `terminal`.
89
+ */
90
+ html: new HelpMessageStyle({
58
91
  title: (...string) => `<span style="color: #89dceb; font-weight: bold;">${escapeHTML(string.join(" "))}</span>`,
59
92
  description: (...string) => `<span style="color: #cdd6e8;">${escapeHTML(string.join(" "))}</span>`,
60
93
  default: (...string) => `<span style="color: #6c7086; font-style: italic;">${escapeHTML(string.join(" "))}</span>`,
@@ -66,54 +99,66 @@ export const helpMessageStyles = Object.freeze({
66
99
  argument: (...string) => `<span style="color: #00ff00;">${escapeHTML(string.join(" "))}</span>`,
67
100
  placeholder: (...string) => `<span style="color: #db9518;">${escapeHTML(string.join(" "))}</span>`,
68
101
  punctuation: (...string) => `<span style="color: #6c7086;">${escapeHTML(string.join(" "))}</span>`,
69
- },
70
- gruvboxDark: {
71
- title: chalk.bold.hex("#FABD2F"),
72
- description: chalk.hex("#EBDBB2"),
73
- default: chalk.italic.hex("#928374"),
74
- optional: chalk.italic.hex("#928374"),
75
- exampleTitle: chalk.hex("#FE8019"),
76
- example: chalk.hex("#928374"),
77
- command: chalk.hex("#B8BB26"),
78
- option: chalk.hex("#83A598"),
79
- argument: chalk.hex("#D3869B"),
80
- placeholder: chalk.hex("#FB4934"),
81
- punctuation: chalk.hex("#928374"),
82
- },
83
- monokai: {
84
- title: chalk.bold.hex("#AE81FF"),
85
- description: chalk.hex("#F8F8F2"),
86
- default: chalk.italic.hex("#75715E"),
87
- optional: chalk.italic.hex("#75715E"),
88
- exampleTitle: chalk.hex("#FD971F"),
89
- example: chalk.hex("#75715E"),
90
- command: chalk.hex("#A6E22E"),
91
- option: chalk.hex("#66D9EF"),
92
- argument: chalk.hex("#F92672"),
93
- placeholder: chalk.hex("#E6DB74"),
94
- punctuation: chalk.hex("#75715E"),
95
- },
96
- oneDark: {
97
- title: chalk.bold.hex("#61AFEF"),
98
- description: chalk.hex("#ABB2BF"),
99
- default: chalk.italic.hex("#5C6370"),
100
- optional: chalk.italic.hex("#5C6370"),
101
- exampleTitle: chalk.hex("#E5C07B"),
102
- example: chalk.hex("#5C6370"),
103
- command: chalk.hex("#98C379"),
104
- option: chalk.hex("#56B6C2"),
105
- argument: chalk.hex("#E06C75"),
106
- placeholder: chalk.hex("#C678DD"),
107
- punctuation: chalk.hex("#5C6370"),
108
- },
109
- get noColors() {
110
- return new Proxy(this.default, {
111
- get() {
112
- return (...string: string[]) => string.join(" ");
113
- },
114
- }) as HelpMessageStyle;
115
- },
116
- }) satisfies Record<string, HelpMessageStyle>;
102
+ }),
103
+
104
+ gruvboxDark: new HelpMessageStyle({
105
+ title: c.bold.hex("#FABD2F"),
106
+ description: c.hex("#EBDBB2"),
107
+ default: c.italic.hex("#928374"),
108
+ optional: c.italic.hex("#928374"),
109
+ exampleTitle: c.hex("#FE8019"),
110
+ example: c.hex("#928374"),
111
+ command: c.hex("#B8BB26"),
112
+ option: c.hex("#83A598"),
113
+ argument: c.hex("#D3869B"),
114
+ placeholder: c.hex("#FB4934"),
115
+ punctuation: c.hex("#928374"),
116
+ }),
117
+
118
+ monokai: new HelpMessageStyle({
119
+ title: c.bold.hex("#AE81FF"),
120
+ description: c.hex("#F8F8F2"),
121
+ default: c.italic.hex("#75715E"),
122
+ optional: c.italic.hex("#75715E"),
123
+ exampleTitle: c.hex("#FD971F"),
124
+ example: c.hex("#75715E"),
125
+ command: c.hex("#A6E22E"),
126
+ option: c.hex("#66D9EF"),
127
+ argument: c.hex("#F92672"),
128
+ placeholder: c.hex("#E6DB74"),
129
+ punctuation: c.hex("#75715E"),
130
+ }),
131
+
132
+ oneDark: new HelpMessageStyle({
133
+ title: c.bold.hex("#61AFEF"),
134
+ description: c.hex("#ABB2BF"),
135
+ default: c.italic.hex("#5C6370"),
136
+ optional: c.italic.hex("#5C6370"),
137
+ exampleTitle: c.hex("#E5C07B"),
138
+ example: c.hex("#5C6370"),
139
+ command: c.hex("#98C379"),
140
+ option: c.hex("#56B6C2"),
141
+ argument: c.hex("#E06C75"),
142
+ placeholder: c.hex("#C678DD"),
143
+ punctuation: c.hex("#5C6370"),
144
+ }),
145
+
146
+ catppuccin: new HelpMessageStyle({
147
+ title: c.bold.hex("#89B4FA"),
148
+ description: c.hex("#CDD6F4"),
149
+ default: c.italic.hex("#6C7086"),
150
+ optional: c.italic.hex("#6C7086"),
151
+ exampleTitle: c.hex("#F9E2AF"),
152
+ example: c.hex("#6C7086"),
153
+ command: c.hex("#A6E3A1"),
154
+ option: c.hex("#94E2D5"),
155
+ argument: c.hex("#F38BA8"),
156
+ placeholder: c.hex("#FAB387"),
157
+ punctuation: c.hex("#585B70"),
158
+ }),
159
+
160
+ noColors: new HelpMessageStyle({}),
161
+ });
117
162
 
118
163
  function escapeHTML(string: string) {
119
164
  return string.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
@@ -0,0 +1,147 @@
1
+ import c from "chalk";
2
+ import { Marked, type RendererObject, type Tokens, marked } from "marked";
3
+
4
+ import type { ColorFunctionType } from "../types/help-message-types.ts";
5
+
6
+ const markdownStyle: Record<string, ColorFunctionType> = {
7
+ bold: c.bold,
8
+ italic: c.italic,
9
+ boldItalic: c.bold.italic,
10
+ code: (...string) => c.bgHex("#333333").whiteBright(` ${string.join(" ")} `),
11
+ strikethrough: c.strikethrough,
12
+ link: c.underline,
13
+ listBullet: c.whiteBright,
14
+ hr: c.dim,
15
+ blockquote: (...string) => c.dim.bold("┃ ") + c.dim(string.join("").replace(/\s\s\n/g, " \n" + c.bold("┃ "))),
16
+ };
17
+
18
+ function styleCode(text: string) {
19
+ const lines = text.split("\n");
20
+ const width = Math.max(...lines.map(l => l.length));
21
+ const top = "┌" + "─".repeat(width + 2) + "┐";
22
+ const bottom = "└" + "─".repeat(width + 2) + "┘";
23
+
24
+ const body = lines.map(l => c.dim("│ ") + c.dim(l).padEnd(width) + c.dim(" │")).join("\n");
25
+
26
+ return [c.dim(top), body, c.dim(bottom)].join("\n");
27
+ }
28
+
29
+ const bullets = ["•", "◦", "▪"];
30
+
31
+ const terminalRenderer: RendererObject<string, string> = {
32
+ list(token) {
33
+ // figure out depth
34
+ let depth = 0;
35
+ let current = token as Tokens.List & { parent: Tokens.List };
36
+ while (current.parent) {
37
+ depth++;
38
+ current = current.parent as Tokens.List & { parent: Tokens.List };
39
+ }
40
+
41
+ // for ordered lists
42
+ const start = token.ordered && token.start ? token.start : undefined;
43
+
44
+ const items = token.items.map(item => this.listitem(Object.assign(item, { depth, parent: token, start })));
45
+ return "\n" + items.join("\n");
46
+ },
47
+ listitem(item) {
48
+ let string = "";
49
+
50
+ const itemCast = item as Tokens.ListItem & { parent: Tokens.List; depth: number; start?: number };
51
+
52
+ for (const token of item.tokens) {
53
+ if (token.type === "list") {
54
+ string += this.parser.parse([Object.assign(token, { parent: itemCast.parent })]);
55
+ }
56
+
57
+ if ("tokens" in token && Array.isArray(token.tokens)) {
58
+ string += this.parser.parseInline(token.tokens);
59
+ }
60
+ }
61
+
62
+ let prefix = " ".repeat(itemCast.depth * 2);
63
+
64
+ // Task
65
+ if (itemCast.task) {
66
+ prefix += itemCast.checked ? "☑ " : "☐ ";
67
+ return markdownStyle.listBullet(prefix) + string;
68
+ }
69
+
70
+ // Ordered
71
+ if (itemCast.start !== undefined) {
72
+ const findItemIndex = itemCast.parent.items.indexOf(itemCast);
73
+ prefix += itemCast.start + findItemIndex + ". ";
74
+ return markdownStyle.listBullet(prefix) + string;
75
+ }
76
+
77
+ // Unordered
78
+ prefix += bullets[itemCast.depth % bullets.length] + " ";
79
+ return markdownStyle.listBullet(prefix) + string;
80
+ },
81
+ link(token) {
82
+ return markdownStyle.link(token.text + " " + "<" + token.href + ">");
83
+ },
84
+ checkbox({ checked }) {
85
+ return checked.toString();
86
+ },
87
+ code(token) {
88
+ return styleCode(token.text);
89
+ },
90
+ codespan({ text }) {
91
+ return markdownStyle.code(text);
92
+ },
93
+ def({ raw }) {
94
+ return raw;
95
+ },
96
+ del({ text }) {
97
+ return markdownStyle.strikethrough(text);
98
+ },
99
+ paragraph({ tokens }) {
100
+ return this.parser.parseInline(tokens);
101
+ },
102
+ blockquote({ text }) {
103
+ return markdownStyle.blockquote(text);
104
+ },
105
+ strong({ tokens }) {
106
+ return markdownStyle.bold(this.parser.parseInline(tokens));
107
+ },
108
+ em({ tokens }) {
109
+ return markdownStyle.italic(this.parser.parseInline(tokens));
110
+ },
111
+ heading({ text }) {
112
+ return markdownStyle.bold(text) + "\n";
113
+ },
114
+ text(token) {
115
+ return token.raw;
116
+ },
117
+ space(token) {
118
+ return token.raw.replace(/\n+/g, "\n");
119
+ },
120
+ hr() {
121
+ return markdownStyle.hr("─".repeat(80));
122
+ },
123
+ br() {
124
+ return "\n";
125
+ },
126
+ };
127
+
128
+ const terminalMarked = new Marked();
129
+ terminalMarked.use({ renderer: terminalRenderer });
130
+
131
+ export function terminalMarkdown(
132
+ text: string,
133
+ renderer: "terminal" | "html" = "terminal",
134
+ ansiTextColor: ColorFunctionType = (...string) => string.join(" "),
135
+ ): string {
136
+ if (!text) {
137
+ return "";
138
+ }
139
+
140
+ if (renderer === "terminal") {
141
+ return ansiTextColor(terminalMarked.parse(text) as string);
142
+ }
143
+
144
+ const htmlString = marked.parse(text) as string;
145
+
146
+ return `<span class="_markdown">${htmlString.trim()}</span>`;
147
+ }
package/src/index.ts CHANGED
@@ -1,97 +1,28 @@
1
- import type {
2
- ActionsFunctions,
3
- Argument,
4
- CheckArgumentsOptional,
5
- CheckDuplicatedArguments,
6
- CheckDuplicatedOptions,
7
- Cli,
8
- Option,
9
- Prettify,
10
- Subcommand,
11
- } from "./types.js";
12
-
13
- /**
14
- * - Insures that there are no duplicated options
15
- * - Insures that there are no duplicated arguments
16
- * - Insures that only the last argument is optional
17
- * - Insures no optional arguments are allowed when `allowPositional` is enabled
18
- */
19
- type CheckCliSubcommandInput<T extends Cli | Subcommand> =
20
- CheckDuplicatedOptions<T> extends infer Error extends string
21
- ? Error
22
- : CheckDuplicatedArguments<T> extends infer Error extends string
23
- ? Error
24
- : CheckArgumentsOptional<T> extends infer Error extends string
25
- ? Error
26
- : T;
27
-
28
- export function createCli<const T extends Cli>(input: CheckCliSubcommandInput<T>) {
29
- const setAction = (action: (data: any) => any) => {
30
- if (typeof input === "string") return;
31
- input.action = action;
32
- };
33
-
34
- const setPreValidationHook = (hook: (context: any) => any) => {
35
- if (typeof input === "string") return;
36
- input.preValidation = hook;
37
- };
38
-
39
- return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFunctions<T>>;
40
- }
41
-
42
- export function createSubcommand<const T extends Subcommand>(input: CheckCliSubcommandInput<T>) {
43
- const setAction = (action: (data: any) => any) => {
44
- if (typeof input === "string") return;
45
- input.action = action as T["action"];
46
- };
47
-
48
- const setPreValidationHook = (hook: (context: any) => any) => {
49
- if (typeof input === "string") return;
50
- input.preValidation = hook;
51
- };
52
-
53
- return Object.assign(input, { setAction, setPreValidationHook }) as Prettify<typeof input & ActionsFunctions<T>>;
54
- }
55
-
56
- /** - Insures that there are no duplicated options */
57
- type CheckOptionsInput<T extends Option[]> =
58
- CheckDuplicatedOptions<{ options: T }> extends infer Error extends string ? Error : T;
59
-
60
- export function createOptions<const T extends [Option, ...Option[]]>(options: CheckOptionsInput<T>) {
61
- return options;
62
- }
63
-
64
- /** - Insures that only the last argument is optional */
65
- type CheckArgumentsInput<T extends Argument[]> =
66
- CheckArgumentsOptional<{ arguments: T }> extends infer Error extends string ? Error : T;
67
-
68
- export function createArguments<const T extends [Argument, ...Argument[]]>(arguments_: CheckArgumentsInput<T>) {
69
- return arguments_;
70
- }
71
-
72
- export {
73
- formatCliHelpMessage as formatCliHelpMsg,
74
- formatSubcommandHelpMessage as formatSubcommandHelpMsg,
75
- printCliHelp,
76
- printSubcommandHelp,
77
- } from "./help-message/format-cli.js";
78
- export { helpMessageStyles } from "./help-message/styles.js";
79
-
80
- export { safeParse, safeParseAsync } from "./parser/safe-parse.js";
81
- export { unsafeParse as parse, unsafeParseAsync as parseAsync } from "./parser/unsafe-parse.js";
82
-
83
- export { isOptionalSchema, schemaDefaultValue, stringToArray, stringToSet } from "./zod-utilities.js";
84
-
85
- export { generateBashAutocompleteScript } from "./autocomplete-scripts/bash-autocomplete-script.js";
86
- export { generatePowerShellAutocompleteScript } from "./autocomplete-scripts/powershell-autocomplete-script.js";
87
- export { generateZshAutocompleteScript } from "./autocomplete-scripts/zsh-autocomplete-script.js";
88
-
89
- export { getArgumentsMetadata } from "./metadata/get-arguments-metadata.js";
90
- export { getCliMetadata } from "./metadata/get-cli-metadata.js";
91
- export { getOptionsMetadata } from "./metadata/get-options-metadata.js";
92
- export { getSubcommandsMetadata } from "./metadata/get-subcommands-metadata.js";
93
-
94
- export { generateMarkdown } from "./markdown/generate-markdown.js";
95
-
96
- export type * from "./metadata/metadata-types.js";
97
- export type * from "./types.js";
1
+ export { generateCliHelpMessage } from "./help-message/generate-for-cli.ts";
2
+ export { generateSubcommandHelpMessage } from "./help-message/generate-for-subcommand.ts";
3
+ export { printCliHelp, printSubcommandHelp } from "./help-message/print-help.ts";
4
+ export { HelpMessageStyle, helpMessageStyles } from "./help-message/styles.ts";
5
+
6
+ export { generateBashAutocompleteScript } from "./autocomplete-scripts/bash-autocomplete-script.ts";
7
+ export { generatePowerShellAutocompleteScript } from "./autocomplete-scripts/powershell-autocomplete-script.ts";
8
+ export { generateZshAutocompleteScript } from "./autocomplete-scripts/zsh-autocomplete-script.ts";
9
+ export { generateMarkdown } from "./markdown/generate-markdown.ts";
10
+
11
+ export { getArgumentsMetadata } from "./metadata/arguments-metadata.ts";
12
+ export { getCliMetadata } from "./metadata/cli-metadata.ts";
13
+ export { getOptionsMetadata } from "./metadata/options-metadata.ts";
14
+ export { getSubcommandsMetadata } from "./metadata/subcommands-metadata.ts";
15
+
16
+ export { defineArguments } from "./definitions/define-arguments.ts";
17
+ export { defineCLI } from "./definitions/define-cli.ts";
18
+ export { defineOptions } from "./definitions/define-options.ts";
19
+ export { defineSubcommand } from "./definitions/define-subcommand.ts";
20
+
21
+ export { coerce } from "./coerce/coerce-methods.ts";
22
+
23
+ export type * from "./types/context-types.ts";
24
+ export type * from "./types/definitions-types.ts";
25
+ export type * from "./types/help-message-types.ts";
26
+ export type * from "./types/io-types.ts";
27
+ export type * from "./types/metadata-types.ts";
28
+ export type * from "./types/types.ts";