zod-args-parser 2.0.0-alpha.0 → 2.0.0-beta.1

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 -23
  490. package/lib/typescript/parser/validate/validate-type.d.ts.map +0 -1
  491. package/lib/typescript/parser/validate/validate.d.ts +0 -12
  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 -235
  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 -20
  508. package/src/parser/validate/validate.ts +0 -71
  509. package/src/types.ts +0 -365
  510. package/src/zod-utilities.ts +0 -214
@@ -0,0 +1,42 @@
1
+ import{transformOptionToArgument}from"../parse/parser-utilities.mjs";function generateZshAutocompleteScript(e){const t=e.subcommands??[],a=e=>{return e.options?String.raw`${e.name})
2
+ _arguments \
3
+ ${t=e,(t.options?Object.entries(t.options).map(([e,t])=>`'${transformOptionToArgument(e)}[${t.meta?.description??""}]'`):[]).join(" \\\n ")} \
4
+ '*: :_files' \
5
+ && ret=0
6
+ ;;`:"";var t};return String.raw`# Auto-generated by zod-args-parser
7
+
8
+ _${e.cliName}_autocomplete() {
9
+ local ret=1
10
+
11
+ _arguments -C \
12
+ '1: :_${e.cliName}_commands' \
13
+ '*:: :->subcmds' \
14
+ && ret=0
15
+
16
+ case $state in
17
+ subcmds)
18
+ case "$words[1]" in
19
+ ${t.map(e=>a(e)).filter(Boolean).join("\n ")}
20
+ *)
21
+ _arguments \
22
+ '*: :_files' \
23
+ && ret=0
24
+ ;;
25
+ esac
26
+ ;;
27
+ esac
28
+
29
+ return $ret
30
+ }
31
+
32
+ _${e.cliName}_commands() {
33
+ local -a commands=(
34
+ ${t.map(e=>`"${e.name}:${e.meta?.description??""}"`).join("\n ")}
35
+ )
36
+
37
+ _describe -t subcommands 'subcommand' commands
38
+ }
39
+
40
+ compdef _${e.cliName}_autocomplete ${e.cliName}
41
+ `}export{generateZshAutocompleteScript};
42
+ //# sourceMappingURL=zsh-autocomplete-script.mjs.map
@@ -0,0 +1 @@
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,gCAYnC,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":[]}
@@ -0,0 +1,2 @@
1
+ import{stringToBooleanArray,stringToNumberArray,stringToStringArray}from"./string-to-array.mjs";import{stringToBoolean,stringToNumber}from"./string-to-primitive.mjs";import{stringToBooleanSet,stringToNumberSet,stringToStringSet}from"./string-to-set.mjs";var string=r=>r;string.type="string";var boolean=r=>stringToBoolean(r);boolean.type="boolean";var number=r=>stringToNumber(r);number.type="number";var json=r=>{const n=n=>JSON.parse(n,r);return n.type="unknown",n},stringArray=r=>{const n=n=>stringToStringArray(n,r);return n.type="string[]",n},numberArray=r=>{const n=n=>stringToNumberArray(n,r);return n.type="number[]",n},booleanArray=r=>{const n=n=>stringToBooleanArray(n,r);return n.type="boolean[]",n},stringSet=r=>{const n=n=>stringToStringSet(n,r);return n.type="set<string>",n},numberSet=r=>{const n=n=>stringToNumberSet(n,r);return n.type="set<number>",n},booleanSet=r=>{const n=n=>stringToBooleanSet(n,r);return n.type="set<boolean>",n},coerce={string:string,boolean:boolean,number:number,stringArray:stringArray,numberArray:numberArray,booleanArray:booleanArray,stringSet:stringSet,numberSet:numberSet,booleanSet:booleanSet,json:json};export{coerce};
2
+ //# sourceMappingURL=coerce-methods.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stringToBooleanArray","stringToNumberArray","stringToStringArray","stringToBoolean","stringToNumber","stringToBooleanSet","stringToNumberSet","stringToStringSet","string","terminalInput","type","boolean","number","json","reviver","coerceMethod","JSON","parse","stringArray","separator","numberArray","booleanArray","stringSet","numberSet","booleanSet","coerce"],"sources":["../../../src/coerce/coerce-methods.ts"],"sourcesContent":["import { stringToBooleanArray, stringToNumberArray, stringToStringArray } from \"./string-to-array.ts\";\nimport { stringToBoolean, stringToNumber } from \"./string-to-primitive.ts\";\nimport { stringToBooleanSet, stringToNumberSet, stringToStringSet } from \"./string-to-set.ts\";\n\nimport type { CoerceMethod } from \"../types/types.ts\";\n\nconst string: CoerceMethod<string> = terminalInput => terminalInput;\nstring.type = \"string\";\n\nconst boolean: CoerceMethod<boolean> = terminalInput => stringToBoolean(terminalInput);\nboolean.type = \"boolean\";\n\nconst number: CoerceMethod<number> = terminalInput => stringToNumber(terminalInput);\nnumber.type = \"number\";\n\nconst json = <T>(reviver?: (this: any, key: string, value: any) => any): CoerceMethod<T> => {\n const coerceMethod: CoerceMethod<T> = terminalInput => JSON.parse(terminalInput, reviver) as T;\n coerceMethod.type = \"unknown\";\n return coerceMethod;\n};\n\nconst stringArray = (separator: string): CoerceMethod<string[]> => {\n const coerceMethod: CoerceMethod<string[]> = terminalInput => stringToStringArray(terminalInput, separator);\n coerceMethod.type = \"string[]\";\n return coerceMethod;\n};\n\nconst numberArray = (separator: string) => {\n const coerceMethod: CoerceMethod<number[]> = terminalInput => stringToNumberArray(terminalInput, separator);\n coerceMethod.type = \"number[]\";\n return coerceMethod;\n};\n\nconst booleanArray = (separator: string) => {\n const coerceMethod: CoerceMethod<boolean[]> = terminalInput => stringToBooleanArray(terminalInput, separator);\n coerceMethod.type = \"boolean[]\";\n return coerceMethod;\n};\n\nconst stringSet = (separator: string) => {\n const coerceMethod: CoerceMethod<Set<string>> = terminalInput => stringToStringSet(terminalInput, separator);\n coerceMethod.type = \"set<string>\";\n return coerceMethod;\n};\n\nconst numberSet = (separator: string) => {\n const coerceMethod: CoerceMethod<Set<number>> = terminalInput => stringToNumberSet(terminalInput, separator);\n coerceMethod.type = \"set<number>\";\n return coerceMethod;\n};\n\nconst booleanSet = (separator: string) => {\n const coerceMethod: CoerceMethod<Set<boolean>> = terminalInput => stringToBooleanSet(terminalInput, separator);\n coerceMethod.type = \"set<boolean>\";\n return coerceMethod;\n};\n\nexport const coerce = {\n string,\n boolean,\n number,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n stringArray,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n numberArray,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n booleanArray,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n stringSet,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n numberSet,\n /** @param separator - The separator to use to split the string. **Default** is `\",\"` */\n booleanSet,\n json,\n};\n"],"mappings":"OAASA,qBAAsBC,oBAAqBC,wBAA2B,+BACtEC,gBAAiBC,mBAAsB,mCACvCC,mBAAoBC,kBAAmBC,sBAAyB,sBAIzE,IAAMC,OAA+BC,GAAiBA,EACtDD,OAAOE,KAAO,SAEd,IAAMC,QAAiCF,GAAiBN,gBAAgBM,GACxEE,QAAQD,KAAO,UAEf,IAAME,OAA+BH,GAAiBL,eAAeK,GACrEG,OAAOF,KAAO,SAEd,IAAMG,KAAWC,IACf,MAAMC,EAAgCN,GAAiBO,KAAKC,MAAMR,EAAeK,GAEjF,OADAC,EAAaL,KAAO,UACbK,GAGHG,YAAeC,IACnB,MAAMJ,EAAuCN,GAAiBP,oBAAoBO,EAAeU,GAEjG,OADAJ,EAAaL,KAAO,WACbK,GAGHK,YAAeD,IACnB,MAAMJ,EAAuCN,GAAiBR,oBAAoBQ,EAAeU,GAEjG,OADAJ,EAAaL,KAAO,WACbK,GAGHM,aAAgBF,IACpB,MAAMJ,EAAwCN,GAAiBT,qBAAqBS,EAAeU,GAEnG,OADAJ,EAAaL,KAAO,YACbK,GAGHO,UAAaH,IACjB,MAAMJ,EAA0CN,GAAiBF,kBAAkBE,EAAeU,GAElG,OADAJ,EAAaL,KAAO,cACbK,GAGHQ,UAAaJ,IACjB,MAAMJ,EAA0CN,GAAiBH,kBAAkBG,EAAeU,GAElG,OADAJ,EAAaL,KAAO,cACbK,GAGHS,WAAcL,IAClB,MAAMJ,EAA2CN,GAAiBJ,mBAAmBI,EAAeU,GAEpG,OADAJ,EAAaL,KAAO,eACbK,GAGIU,OAAS,CACpBjB,cACAG,gBACAC,cAEAM,wBAEAE,wBAEAC,0BAEAC,oBAEAC,oBAEAC,sBACAX,kB","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{stringToBoolean,stringToNumber}from"./string-to-primitive.mjs";function stringToStringArray(r,n=","){return r.split(n).map(r=>r.trim()).filter(Boolean)}function stringToNumberArray(r,n=","){return stringToStringArray(r,n).map(r=>stringToNumber(r))}function stringToBooleanArray(r,n=","){return stringToStringArray(r,n).map(r=>stringToBoolean(r))}export{stringToBooleanArray,stringToNumberArray,stringToStringArray};
2
+ //# sourceMappingURL=string-to-array.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stringToBoolean","stringToNumber","stringToStringArray","stringValue","separator","split","map","s","trim","filter","Boolean","stringToNumberArray","element","stringToBooleanArray"],"sources":["../../../src/coerce/string-to-array.ts"],"sourcesContent":["import { stringToBoolean, stringToNumber } from \"./string-to-primitive.ts\";\n\nexport function stringToStringArray(stringValue: string, separator: string = \",\"): string[] {\n return stringValue\n .split(separator)\n .map(s => s.trim())\n .filter(Boolean);\n}\n\n/** @throws {TypeError} - Because of `stringToNumber` */\nexport function stringToNumberArray(stringValue: string, separator: string = \",\"): number[] {\n return stringToStringArray(stringValue, separator).map(element => stringToNumber(element));\n}\n\n/** @throws {TypeError} - Because of `stringToBoolean` */\nexport function stringToBooleanArray(stringValue: string, separator: string = \",\"): boolean[] {\n return stringToStringArray(stringValue, separator).map(element => stringToBoolean(element));\n}\n"],"mappings":"OAASA,gBAAiBC,mBAAsB,4BAEzC,SAASC,oBAAoBC,EAAqBC,EAAoB,KAC3E,OAAOD,EACJE,MAAMD,GACNE,IAAIC,GAAKA,EAAEC,QACXC,OAAOC,QACZ,CAGO,SAASC,oBAAoBR,EAAqBC,EAAoB,KAC3E,OAAOF,oBAAoBC,EAAaC,GAAWE,IAAIM,GAAWX,eAAeW,GACnF,CAGO,SAASC,qBAAqBV,EAAqBC,EAAoB,KAC5E,OAAOF,oBAAoBC,EAAaC,GAAWE,IAAIM,GAAWZ,gBAAgBY,GACpF,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ function stringToBoolean(r){if("true"===r.toLowerCase())return!0;if("false"===r.toLowerCase())return!1;throw new TypeError(`Invalid boolean value: ${r}`)}function stringToNumber(r){const e=r.trim();if(""===e||"+"===e||"-"===e)throw new TypeError(`Invalid number: "${r}"`);const n=Number(e);if(!Number.isFinite(n))throw new TypeError(`Invalid number: "${r}"`);return n}export{stringToBoolean,stringToNumber};
2
+ //# sourceMappingURL=string-to-primitive.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stringToBoolean","string","toLowerCase","TypeError","stringToNumber","trimmed","trim","result","Number","isFinite"],"sources":["../../../src/coerce/string-to-primitive.ts"],"sourcesContent":["/** @throws {TypeError} */\nexport function stringToBoolean(string: string): boolean {\n if (string.toLowerCase() === \"true\") {\n return true;\n }\n\n if (string.toLowerCase() === \"false\") {\n return false;\n }\n\n throw new TypeError(`Invalid boolean value: ${string}`);\n}\n\n/** @throws {TypeError} */\nexport function stringToNumber(string: string): number {\n const trimmed = string.trim();\n\n // Reject empty, whitespace-only, or signs without digits\n if (trimmed === \"\" || trimmed === \"+\" || trimmed === \"-\") {\n throw new TypeError(`Invalid number: \"${string}\"`);\n }\n\n const result = Number(trimmed);\n\n // Reject NaN, Infinity, and -Infinity\n if (!Number.isFinite(result)) {\n throw new TypeError(`Invalid number: \"${string}\"`);\n }\n\n return result;\n}\n"],"mappings":"AACO,SAASA,gBAAgBC,GAC9B,GAA6B,SAAzBA,EAAOC,cACT,OAAO,EAGT,GAA6B,UAAzBD,EAAOC,cACT,OAAO,EAGT,MAAM,IAAIC,UAAU,0BAA0BF,IAChD,CAGO,SAASG,eAAeH,GAC7B,MAAMI,EAAUJ,EAAOK,OAGvB,GAAgB,KAAZD,GAA8B,MAAZA,GAA+B,MAAZA,EACvC,MAAM,IAAIF,UAAU,oBAAoBF,MAG1C,MAAMM,EAASC,OAAOH,GAGtB,IAAKG,OAAOC,SAASF,GACnB,MAAM,IAAIJ,UAAU,oBAAoBF,MAG1C,OAAOM,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{stringToBooleanArray,stringToNumberArray,stringToStringArray}from"./string-to-array.mjs";function stringToStringSet(r,t=","){return new Set(stringToStringArray(r,t))}function stringToNumberSet(r,t=","){return new Set(stringToNumberArray(r,t))}function stringToBooleanSet(r,t=","){return new Set(stringToBooleanArray(r,t))}export{stringToBooleanSet,stringToNumberSet,stringToStringSet};
2
+ //# sourceMappingURL=string-to-set.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["stringToBooleanArray","stringToNumberArray","stringToStringArray","stringToStringSet","stringValue","separator","Set","stringToNumberSet","stringToBooleanSet"],"sources":["../../../src/coerce/string-to-set.ts"],"sourcesContent":["import { stringToBooleanArray, stringToNumberArray, stringToStringArray } from \"./string-to-array.ts\";\n\nexport function stringToStringSet(stringValue: string, separator: string = \",\"): Set<string> {\n return new Set(stringToStringArray(stringValue, separator));\n}\n\n/** @throws {TypeError} - Because of `stringToNumber` */\nexport function stringToNumberSet(stringValue: string, separator: string = \",\"): Set<number> {\n return new Set(stringToNumberArray(stringValue, separator));\n}\n\n/** @throws {TypeError} - Because of `stringToBoolean` */\nexport function stringToBooleanSet(stringValue: string, separator: string = \",\"): Set<boolean> {\n return new Set(stringToBooleanArray(stringValue, separator));\n}\n"],"mappings":"OAASA,qBAAsBC,oBAAqBC,wBAA2B,wBAExE,SAASC,kBAAkBC,EAAqBC,EAAoB,KACzE,OAAO,IAAIC,IAAIJ,oBAAoBE,EAAaC,GAClD,CAGO,SAASE,kBAAkBH,EAAqBC,EAAoB,KACzE,OAAO,IAAIC,IAAIL,oBAAoBG,EAAaC,GAClD,CAGO,SAASG,mBAAmBJ,EAAqBC,EAAoB,KAC1E,OAAO,IAAIC,IAAIN,qBAAqBI,EAAaC,GACnD,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{prepareDefinitionTypes}from"../utilities.mjs";function defineArguments(e){return prepareDefinitionTypes(e),e}export{defineArguments};
2
+ //# sourceMappingURL=define-arguments.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["prepareDefinitionTypes","defineArguments","arguments_"],"sources":["../../../src/definitions/define-arguments.ts"],"sourcesContent":["import { prepareDefinitionTypes } from \"../utilities.ts\";\n\nimport type { Argument } from \"../types/definitions-types.ts\";\n\nexport function defineArguments<const T extends Record<string, Argument>>(arguments_: {\n [K in keyof T]: T[K] & Argument<T[K][\"schema\"]>;\n}): { [K in keyof T]: Argument<T[K][\"schema\"]> } {\n prepareDefinitionTypes(arguments_);\n return arguments_;\n}\n"],"mappings":"OAASA,2BAA8B,mBAIhC,SAASC,gBAA0DC,GAIxE,OADAF,uBAAuBE,GAChBA,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{generateCliHelpMessage}from"../help-message/generate-for-cli.mjs";import{generateSubcommandHelpMessage}from"../help-message/generate-for-subcommand.mjs";import{buildObjectContext}from"../parse/context/object-context-builder.mjs";import{safeParse,safeParseAsync}from"../parse/safe-parse.mjs";import{validate}from"../parse/validation/validate-context.mjs";import{prepareDefinitionTypes}from"../utilities.mjs";function defineCLI(e){const n=e;if(prepareDefinitionTypes(n.options),prepareDefinitionTypes(n.arguments),n.subcommands)for(const e of Object.values(n.subcommands))prepareDefinitionTypes(e.options),prepareDefinitionTypes(e.arguments);const s={generateCliHelpMessage:e=>generateCliHelpMessage(n,e),generateSubcommandHelpMessage(e,s){const o=n.subcommands?.find(n=>n.name===e);if(!o)throw new Error(`Subcommand ${e} not found`);return generateSubcommandHelpMessage(o,s,n.cliName)}};if(Object.assign(n,s),n.subcommands)for(const e of n.subcommands)Object.assign(e,s);return Object.assign(n,{execute:e=>{if(e??(e={}),!n._onExecute)throw new Error("Action is not defined");const s=buildObjectContext(e,n),o=validate(s,n);if(n._onExecute)for(const e of n._onExecute)e(o)},onExecute:e=>(n._onExecute??(n._onExecute=[]),n._onExecute.push(e),()=>{const s=n._onExecute?.indexOf(e);!s||s<0||n._onExecute?.splice(s,1)}),run:e=>safeParse(e,n),runAsync:e=>safeParseAsync(e,n)})}export{defineCLI};
2
+ //# sourceMappingURL=define-cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateCliHelpMessage","generateSubcommandHelpMessage","buildObjectContext","safeParse","safeParseAsync","validate","prepareDefinitionTypes","defineCLI","input","cliSchema","options","arguments","subcommands","subcommand","Object","values","generateHelpMethods","subcommandName","foundSubcommand","find","s","name","Error","cliName","assign","subcommandSchema","execute","inputValues","_onExecute","context","validateResult","handler","onExecute","push","handlerIndex","indexOf","splice","run","stringOrArgv","runAsync"],"sources":["../../../src/definitions/define-cli.ts"],"sourcesContent":["import { generateCliHelpMessage } from \"../help-message/generate-for-cli.ts\";\nimport { generateSubcommandHelpMessage } from \"../help-message/generate-for-subcommand.ts\";\nimport { buildObjectContext } from \"../parse/context/object-context-builder.ts\";\nimport { safeParse, safeParseAsync } from \"../parse/safe-parse.ts\";\nimport { validate } from \"../parse/validation/validate-context.ts\";\nimport { prepareDefinitionTypes } from \"../utilities.ts\";\n\nimport type { Argument, Cli, Option, Subcommand } from \"../types/definitions-types.ts\";\nimport type { PrintHelpOptions } from \"../types/help-message-types.ts\";\nimport type { AttachedMethods, AttachedMethodsWide, ValidateMethods } from \"../types/types.ts\";\nimport type { Prettify } from \"../types/utilities-types.ts\";\n\ntype OptionsInput<T> =\n T extends Record<string, Option> ? { [OptionName in keyof T]: Option<T[OptionName][\"schema\"]> } : T;\n\ntype ArgumentsInput<T> =\n T extends Record<string, Argument> ? { [ArgumentName in keyof T]: Argument<T[ArgumentName][\"schema\"]> } : T;\n\ntype SubcommandsInput<T extends readonly [Subcommand, ...Subcommand[]]> = {\n [SubcommandIndex in keyof T]: {\n [K in keyof T[SubcommandIndex]]: T[SubcommandIndex][K] extends Record<string, Option>\n ? OptionsInput<T[SubcommandIndex][K]>\n : T[SubcommandIndex][K] extends Record<string, Argument>\n ? ArgumentsInput<T[SubcommandIndex][K]>\n : T[SubcommandIndex][K];\n } & Subcommand;\n};\n\n// This will prevent extra keys and enable jsdoc on hover\ntype CliInput<T extends Cli> = {\n [K in keyof T]: K extends keyof Cli\n ? T[K] extends readonly [Subcommand, ...Subcommand[]]\n ? SubcommandsInput<T[K]>\n : K extends \"options\"\n ? OptionsInput<T[K]>\n : K extends \"arguments\"\n ? ArgumentsInput<T[K]>\n : T[K]\n : never;\n};\n\nexport function defineCLI<T extends Cli>(input: CliInput<T> & Cli) {\n const cliSchema = input as Prettify<T & AttachedMethods<T> & ValidateMethods<T>>;\n\n prepareDefinitionTypes(cliSchema.options);\n prepareDefinitionTypes(cliSchema.arguments);\n\n if (cliSchema.subcommands) {\n for (const subcommand of Object.values(cliSchema.subcommands)) {\n prepareDefinitionTypes(subcommand.options);\n prepareDefinitionTypes(subcommand.arguments);\n }\n }\n\n const onExecute = (handler: (Cli[\"_onExecute\"] & {})[number]) => {\n cliSchema._onExecute ??= [];\n cliSchema._onExecute.push(handler);\n\n return () => {\n const handlerIndex = cliSchema._onExecute?.indexOf(handler);\n if (!handlerIndex || handlerIndex < 0) return;\n cliSchema._onExecute?.splice(handlerIndex, 1);\n };\n };\n\n const execute: AttachedMethodsWide[\"execute\"] = inputValues => {\n inputValues ??= {};\n if (!cliSchema._onExecute) throw new Error(\"Action is not defined\");\n const context = buildObjectContext(inputValues, cliSchema);\n const validateResult = validate(context, cliSchema);\n\n if (cliSchema._onExecute) {\n for (const handler of cliSchema._onExecute) {\n handler(validateResult);\n }\n }\n };\n\n // Add print methods for CLI schema and its subcommands\n const generateHelpMethods: Pick<AttachedMethodsWide, \"generateCliHelpMessage\" | \"generateSubcommandHelpMessage\"> = {\n generateCliHelpMessage(options?: PrintHelpOptions) {\n return generateCliHelpMessage(cliSchema, options);\n },\n generateSubcommandHelpMessage(subcommandName: string, options?: PrintHelpOptions) {\n const foundSubcommand = cliSchema.subcommands?.find(s => s.name === subcommandName);\n if (!foundSubcommand) throw new Error(`Subcommand ${subcommandName} not found`);\n return generateSubcommandHelpMessage(foundSubcommand, options, cliSchema.cliName);\n },\n };\n\n Object.assign(cliSchema, generateHelpMethods);\n\n if (cliSchema.subcommands) {\n for (const subcommandSchema of cliSchema.subcommands) {\n Object.assign(subcommandSchema, generateHelpMethods);\n }\n }\n\n return Object.assign(cliSchema, {\n execute,\n onExecute,\n run: (stringOrArgv: string | string[]) => safeParse(stringOrArgv, cliSchema),\n runAsync: (stringOrArgv: string | string[]) => safeParseAsync(stringOrArgv, cliSchema),\n });\n}\n"],"mappings":"OAASA,2BAA8B,8CAC9BC,kCAAqC,qDACrCC,uBAA0B,qDAC1BC,UAAWC,mBAAsB,iCACjCC,aAAgB,kDAChBC,2BAA8B,mBAoChC,SAASC,UAAyBC,GACvC,MAAMC,EAAYD,EAKlB,GAHAF,uBAAuBG,EAAUC,SACjCJ,uBAAuBG,EAAUE,WAE7BF,EAAUG,YACZ,UAAWC,KAAcC,OAAOC,OAAON,EAAUG,aAC/CN,uBAAuBO,EAAWH,SAClCJ,uBAAuBO,EAAWF,WAItC,MAyBMK,EAA6G,CACjHhB,uBAAuBU,GACdV,uBAAuBS,EAAWC,GAE3C,6BAAAT,CAA8BgB,EAAwBP,GACpD,MAAMQ,EAAkBT,EAAUG,aAAaO,KAAKC,GAAKA,EAAEC,OAASJ,GACpE,IAAKC,EAAiB,MAAM,IAAII,MAAM,cAAcL,eACpD,OAAOhB,8BAA8BiB,EAAiBR,EAASD,EAAUc,QAC3E,GAKF,GAFAT,OAAOU,OAAOf,EAAWO,GAErBP,EAAUG,YACZ,UAAWa,KAAoBhB,EAAUG,YACvCE,OAAOU,OAAOC,EAAkBT,GAIpC,OAAOF,OAAOU,OAAOf,EAAW,CAC9BiB,QAlC8CC,IAE9C,GADAA,MAAgB,CAAC,IACZlB,EAAUmB,WAAY,MAAM,IAAIN,MAAM,yBAC3C,MAAMO,EAAU3B,mBAAmByB,EAAalB,GAC1CqB,EAAiBzB,SAASwB,EAASpB,GAEzC,GAAIA,EAAUmB,WACZ,UAAWG,KAAWtB,EAAUmB,WAC9BG,EAAQD,IA2BZE,UA9CiBD,IACjBtB,EAAUmB,aAAVnB,EAAUmB,WAAe,IACzBnB,EAAUmB,WAAWK,KAAKF,GAEnB,KACL,MAAMG,EAAezB,EAAUmB,YAAYO,QAAQJ,IAC9CG,GAAgBA,EAAe,GACpCzB,EAAUmB,YAAYQ,OAAOF,EAAc,KAwC7CG,IAAMC,GAAoCnC,UAAUmC,EAAc7B,GAClE8B,SAAWD,GAAoClC,eAAekC,EAAc7B,IAEhF,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{prepareDefinitionTypes}from"../utilities.mjs";function defineOptions(e){return prepareDefinitionTypes(e),e}export{defineOptions};
2
+ //# sourceMappingURL=define-options.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["prepareDefinitionTypes","defineOptions","options"],"sources":["../../../src/definitions/define-options.ts"],"sourcesContent":["import { prepareDefinitionTypes } from \"../utilities.ts\";\n\nimport type { Option } from \"../types/definitions-types.ts\";\n\nexport function defineOptions<T extends Record<string, Option>>(options: {\n [K in keyof T]: T[K] & Option<T[K][\"schema\"]>;\n}): {\n [K in keyof T]: Option<T[K][\"schema\"]>;\n} {\n prepareDefinitionTypes(options);\n return options;\n}\n"],"mappings":"OAASA,2BAA8B,mBAIhC,SAASC,cAAgDC,GAM9D,OADAF,uBAAuBE,GAChBA,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{buildObjectContext}from"../parse/context/object-context-builder.mjs";import{validate}from"../parse/validation/validate-context.mjs";import{prepareDefinitionTypes}from"../utilities.mjs";function defineSubcommand(e){const t=e;prepareDefinitionTypes(t.options),prepareDefinitionTypes(t.arguments);return Object.assign(t,{onExecute:e=>(t._onExecute??(t._onExecute=[]),t._onExecute.push(e),()=>{const o=t._onExecute?.indexOf(e);!o||o<0||t._onExecute?.splice(o,1)}),execute:e=>{if(e??(e={}),!t._onExecute)throw new Error("Action is not defined");const o=buildObjectContext(e,t),n=validate(o,t);if(t._onExecute)for(const e of t._onExecute)e(n)}})}export{defineSubcommand};
2
+ //# sourceMappingURL=define-subcommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["buildObjectContext","validate","prepareDefinitionTypes","defineSubcommand","input","subcommandSchema","options","arguments","Object","assign","onExecute","handler","_onExecute","push","handlerIndex","indexOf","splice","execute","inputValues","Error","context","validateResult"],"sources":["../../../src/definitions/define-subcommand.ts"],"sourcesContent":["import { buildObjectContext } from \"../parse/context/object-context-builder.ts\";\nimport { validate } from \"../parse/validation/validate-context.ts\";\nimport { prepareDefinitionTypes } from \"../utilities.ts\";\n\nimport type { Argument, Option, Subcommand } from \"../types/definitions-types.ts\";\nimport type { AttachedMethods, AttachedMethodsWide } from \"../types/types.ts\";\nimport type { Prettify } from \"../types/utilities-types.ts\";\n\ntype OptionsInput<T> =\n T extends Record<string, Option> ? { [OptionName in keyof T]: Option<T[OptionName][\"schema\"]> } : T;\n\ntype ArgumentsInput<T> =\n T extends Record<string, Argument> ? { [ArgumentName in keyof T]: Argument<T[ArgumentName][\"schema\"]> } : T;\n\n// This will prevent extra keys and enable jsdoc on hover\ntype SubcommandInput<T extends Subcommand> = {\n [K in keyof T]: K extends keyof Subcommand\n ? K extends \"options\"\n ? OptionsInput<T[K]>\n : K extends \"arguments\"\n ? ArgumentsInput<T[K]>\n : T[K]\n : never;\n};\n\nexport function defineSubcommand<T extends Subcommand>(input: SubcommandInput<T> & Subcommand) {\n const subcommandSchema = input as Prettify<T & AttachedMethods<T>>;\n\n prepareDefinitionTypes(subcommandSchema.options);\n prepareDefinitionTypes(subcommandSchema.arguments);\n\n const onExecute = (handler: (Subcommand[\"_onExecute\"] & {})[number]) => {\n subcommandSchema._onExecute ??= [];\n subcommandSchema._onExecute.push(handler);\n\n return () => {\n const handlerIndex = subcommandSchema._onExecute?.indexOf(handler);\n if (!handlerIndex || handlerIndex < 0) return;\n subcommandSchema._onExecute?.splice(handlerIndex, 1);\n };\n };\n\n const execute: AttachedMethodsWide[\"execute\"] = inputValues => {\n inputValues ??= {};\n if (!subcommandSchema._onExecute) throw new Error(\"Action is not defined\");\n const context = buildObjectContext(inputValues, subcommandSchema);\n const validateResult = validate(context, subcommandSchema);\n\n if (subcommandSchema._onExecute) {\n for (const handler of subcommandSchema._onExecute) {\n handler(validateResult);\n }\n }\n };\n\n return Object.assign(subcommandSchema, { onExecute, execute });\n}\n"],"mappings":"OAASA,uBAA0B,qDAC1BC,aAAgB,kDAChBC,2BAA8B,mBAuBhC,SAASC,iBAAuCC,GACrD,MAAMC,EAAmBD,EAEzBF,uBAAuBG,EAAiBC,SACxCJ,uBAAuBG,EAAiBE,WA0BxC,OAAOC,OAAOC,OAAOJ,EAAkB,CAAEK,UAxBtBC,IACjBN,EAAiBO,aAAjBP,EAAiBO,WAAe,IAChCP,EAAiBO,WAAWC,KAAKF,GAE1B,KACL,MAAMG,EAAeT,EAAiBO,YAAYG,QAAQJ,IACrDG,GAAgBA,EAAe,GACpCT,EAAiBO,YAAYI,OAAOF,EAAc,KAiBFG,QAbJC,IAE9C,GADAA,MAAgB,CAAC,IACZb,EAAiBO,WAAY,MAAM,IAAIO,MAAM,yBAClD,MAAMC,EAAUpB,mBAAmBkB,EAAab,GAC1CgB,EAAiBpB,SAASmB,EAASf,GAEzC,GAAIA,EAAiBO,WACnB,UAAWD,KAAWN,EAAiBO,WACrCD,EAAQU,KAMhB,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{transformOptionToArgument}from"../parse/parser-utilities.mjs";import{findDuplicateStrings}from"../utilities.mjs";function validateCliDefinition(t){if(!t.cliName)throw new Error('invalid cli definition: "cliName" property is required.');validateOptions(t),validateArguments(t);const i=t.subcommands;if(!i)return;if(0===i.length)throw new Error(`invalid cli definition "${t.cliName}": "subcommands" property is optional but cannot be empty.`);const n=i.map(t=>t.name);if(n.some(t=>!t))throw new Error('invalid subcommand definition: subcommand\'s "name" property is required.');const e=findDuplicateStrings(n).map(t=>`"${t}"`);if(e.length>0)throw new Error(`invalid cli definition "${t.cliName}" has duplicated subcommands: ${e.join(", ")}.`);for(const t of i){if(t.aliases){const e=findDuplicateStrings(t.aliases).map(t=>`"${t}"`);if(e.length>0)throw new Error(`subcommand "${t.name}" has duplicated aliases: ${e.join(", ")}.`);for(const e of t.aliases){if(""===e)throw new Error(`subcommand "${t.name}" has an empty string alias.`);if(n.includes(e))throw new Error(`subcommand "${t.name}" alias "${e}" conflicts with another subcommand name.`);const o=i.filter(i=>i.name!==t.name&&i.aliases?.includes(e));if(o.length>0)throw new Error(`subcommand "${t.name}" alias "${e}" conflicts with another subcommand alias: "${o[0].name}".`)}}validateOptions(t),validateArguments(t)}}function validateOptions(t){if(!t.options)return;const i="cliName"in t,n=i?t.cliName:t.name,e=t=>new Error(`invalid ${i?"cli":"subcommand"} definition "${n}": ${t}`),o=Object.entries(t.options);if(0===o.length)throw e('"options" property is optional but cannot be empty.');for(const[i,n]of o){if(!n.schema)throw e(`the option "${i}" missing a required property: "schema".`);if(!n._preparedType)throw e(`internal error: missing prepared type for option "${i}".`);if(isNegatedOptionName(i))throw e(`the option "${i}" is a negated option name.`);if(t.arguments&&i in t.arguments)throw e(`the option "${i}" name conflicts with an argument name.`);if(n.aliases){const r=findDuplicateStrings(n.aliases);if(r.length>0)throw e(`the option "${i}" has duplicated aliases: ${r.join(", ")}.`);for(const r of n.aliases){if(""===r)throw e(`the option "${i}" has an empty string alias.`);if(isNegatedOptionName(r))throw e(`the alias "${r}" of the option "${i}" is a negated option name.`);if(t.options[r])throw e(`the alias "${r}" of the option "${i}" conflicts with another option name.`);if(t.arguments&&r in t.arguments)throw e(`the alias "${r}" of the option "${i}" conflicts with an argument name.`);const n=o.find(([t,n])=>t!==i&&n.aliases?.includes(r));if(n)throw e(`the alias "${r}" of the option "${i}" conflicts with another alias name of the option "${n[0]}".`)}}if(n.requires){if(n.requires.includes(i))throw e(`the option "${i}" cannot require itself.`);const o=findDuplicateStrings(n.requires).map(t=>`"${t}"`);if(o.length>0)throw e(`the option "${i}" has duplicate requires: ${o.join(", ")}.`);for(const o of n.requires){if(!(o in t.options||o in(t.arguments??[])))throw e(`the option "${i}" requires "${o}", but it does not exist.`)}}if(n.conflictWith){if(n.conflictWith.includes(i))throw e(`the option "${i}" cannot conflict itself.`);const o=findDuplicateStrings(n.conflictWith).map(t=>`"${t}"`);if(o.length>0)throw e(`the option "${i}" has duplicate conflicts: ${o.join(", ")}.`);for(const o of n.conflictWith){if(!(o in t.options||o in(t.arguments??[])))throw e(`the option "${i}" conflict with "${o}", but it does not exist.`)}}if(n.requires&&n.conflictWith){const t=new Set(n.requires),o=new Set(n.conflictWith),r=t.intersection(o),a=Array.from(r).map(t=>`"${t}"`);if(a.length>0){const t=a.length>1?"s":"";throw e(`the option "${i}" cannot require and conflict with the same name${t}: ${a.join(", ")}.`)}}}}function validateArguments(t){if(!t.arguments)return;const i="cliName"in t,n=i?t.cliName:t.name,e=t=>new Error(`invalid ${i?"cli":"subcommand"} definition "${n}": ${t}`);if(t.arguments){const i=Object.entries(t.arguments);if(0===i.length)throw e('"arguments" property is optional but cannot be empty.');for(const[n,[o,r]]of i.entries()){if(/^\d+$/.test(o))throw e(`the argument "${o}" name cannot be a number.`);if(!r._preparedType)throw e(`internal error: missing prepared type for argument "${o}".`);if(!r.schema)throw e(`the argument "${o}" missing a required property: "schema".`);if(t.options&&o in t.options)throw e(`the argument "${o}" name conflicts with an option name.`);if(r._preparedType.optional){if(t.allowPositionals)throw e(`the argument "${o}" cannot be optional when "allowPositionals" is enabled.`);if(n!==i.length-1)throw e(`the argument "${o}" cannot be optional unless it is the last argument.`);if(r.requires){if(r.requires.includes(o))throw e(`the argument "${o}" cannot require itself.`);const i=findDuplicateStrings(r.requires).map(t=>`"${t}"`);if(i.length>0)throw e(`the argument "${o}" has duplicate requires: ${i.join(", ")}.`);for(const i of r.requires){if(!(i in(t.options??{})||i in t.arguments))throw e(`the argument "${o}" requires "${i}", but it does not exist.`)}}if(r.conflictWith){if(r.conflictWith.includes(o))throw e(`the argument "${o}" cannot conflict itself.`);const i=findDuplicateStrings(r.conflictWith).map(t=>`"${t}"`);if(i.length>0)throw e(`the argument "${o}" has duplicate conflicts: ${i.join(", ")}.`);for(const i of r.conflictWith){if(!(i in(t.options??{})||i in t.arguments))throw e(`the argument "${o}" conflict with "${i}", but it does not exist.`)}}if(r.requires&&r.conflictWith){const t=new Set(r.requires),i=new Set(r.conflictWith),n=t.intersection(i),a=Array.from(n).map(t=>`"${t}"`);if(a.length>0){throw e(`the argument "${o}" cannot require and conflict with the same name${a.length>1?"s":""}: ${a.join(", ")}.`)}}}}}}function isNegatedOptionName(t){return transformOptionToArgument(t).startsWith("--no-")}export{validateCliDefinition};
2
+ //# sourceMappingURL=validate-cli-definition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["transformOptionToArgument","findDuplicateStrings","validateCliDefinition","cliDefinition","cliName","Error","validateOptions","validateArguments","subcommands","length","commandsNames","map","c","name","some","commandsNamesDuplicates","join","subcommand","aliases","aliasesDuplicates","alias","includes","aliasConflicts","filter","commandDefinition","options","isCli","createError","message","optionsDefinitionEntries","Object","entries","option","schema","_preparedType","isNegatedOptionName","arguments","findConflict","find","n","d","requires","duplicateRequires","required","conflictWith","conflict","requiresSet","Set","conflictsSet","intersection","intersectionArray","Array","from","s","argumentsDefinitionEntries","index","argument","test","optional","allowPositionals","startsWith"],"sources":["../../../src/definitions/validate-cli-definition.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\nimport { findDuplicateStrings } from \"../utilities.ts\";\n\nimport type { Cli, Subcommand } from \"../types/definitions-types.ts\";\n\n/** @throws {Error} If validation fails. */\nexport function validateCliDefinition(cliDefinition: Cli) {\n if (!cliDefinition.cliName) {\n throw new Error(`invalid cli definition: \"cliName\" property is required.`);\n }\n\n // validate cli options\n validateOptions(cliDefinition);\n\n // validate cli arguments\n validateArguments(cliDefinition);\n\n const subcommands = cliDefinition.subcommands;\n if (!subcommands) return; // ok\n\n // no empty subcommands array\n if (subcommands.length === 0) {\n throw new Error(\n `invalid cli definition \"${cliDefinition.cliName}\": \"subcommands\" property is optional but cannot be empty.`,\n );\n }\n\n const commandsNames = subcommands.map(c => c.name);\n\n // required subcommand name\n if (commandsNames.some(c => !c)) {\n throw new Error(`invalid subcommand definition: subcommand's \"name\" property is required.`);\n }\n\n // no duplicate subcommand names\n const commandsNamesDuplicates = findDuplicateStrings(commandsNames).map(c => `\"${c}\"`);\n if (commandsNamesDuplicates.length > 0) {\n throw new Error(\n `invalid cli definition \"${cliDefinition.cliName}\" has duplicated subcommands: ${commandsNamesDuplicates.join(\", \")}.`,\n );\n }\n\n for (const subcommand of subcommands) {\n // command aliases check\n if (subcommand.aliases) {\n // no duplicated aliases\n const aliasesDuplicates = findDuplicateStrings(subcommand.aliases).map(c => `\"${c}\"`);\n if (aliasesDuplicates.length > 0) {\n throw new Error(`subcommand \"${subcommand.name}\" has duplicated aliases: ${aliasesDuplicates.join(\", \")}.`);\n }\n\n for (const alias of subcommand.aliases) {\n // no empty alias\n if (alias === \"\") {\n throw new Error(`subcommand \"${subcommand.name}\" has an empty string alias.`);\n }\n\n // no conflict with subcommand name\n if (commandsNames.includes(alias)) {\n throw new Error(`subcommand \"${subcommand.name}\" alias \"${alias}\" conflicts with another subcommand name.`);\n }\n\n // no conflict with another alias\n const aliasConflicts = subcommands.filter(c => c.name !== subcommand.name && c.aliases?.includes(alias));\n if (aliasConflicts.length > 0) {\n throw new Error(\n `subcommand \"${subcommand.name}\" alias \"${alias}\" conflicts with another subcommand alias: \"${aliasConflicts[0].name}\".`,\n );\n }\n }\n }\n\n // validate subcommand options\n validateOptions(subcommand);\n\n // validate subcommand arguments\n validateArguments(subcommand);\n }\n}\n\nfunction validateOptions(commandDefinition: Cli | Subcommand) {\n if (!commandDefinition.options) return; // ok\n\n const isCli = \"cliName\" in commandDefinition;\n const name = isCli ? commandDefinition.cliName : commandDefinition.name;\n\n const createError = (message: string) => {\n return new Error(`invalid ${isCli ? \"cli\" : \"subcommand\"} definition \"${name}\": ${message}`);\n };\n\n const optionsDefinitionEntries = Object.entries(commandDefinition.options);\n\n // no empty options\n if (optionsDefinitionEntries.length === 0) {\n throw createError(`\"options\" property is optional but cannot be empty.`);\n }\n\n for (const [name, option] of optionsDefinitionEntries) {\n // required type\n if (!option.schema) {\n throw createError(`the option \"${name}\" missing a required property: \"schema\".`);\n }\n\n // should not happen\n if (!option._preparedType) {\n throw createError(`internal error: missing prepared type for option \"${name}\".`);\n }\n\n // no negated option name for boolean options\n if (isNegatedOptionName(name)) {\n throw createError(`the option \"${name}\" is a negated option name.`);\n }\n\n // no conflict with argument name\n if (commandDefinition.arguments && name in commandDefinition.arguments) {\n throw createError(`the option \"${name}\" name conflicts with an argument name.`);\n }\n\n if (option.aliases) {\n // no duplicate aliases\n const aliasesDuplicates = findDuplicateStrings(option.aliases);\n if (aliasesDuplicates.length > 0) {\n throw createError(`the option \"${name}\" has duplicated aliases: ${aliasesDuplicates.join(\", \")}.`);\n }\n\n for (const alias of option.aliases) {\n // no empty string aliases\n if (alias === \"\") {\n throw createError(`the option \"${name}\" has an empty string alias.`);\n }\n\n // no negated alias name for boolean options\n if (isNegatedOptionName(alias)) {\n throw createError(`the alias \"${alias}\" of the option \"${name}\" is a negated option name.`);\n }\n\n // no alias name should conflict with any option name\n if (commandDefinition.options[alias]) {\n throw createError(`the alias \"${alias}\" of the option \"${name}\" conflicts with another option name.`);\n }\n\n // no alias name should conflict with any argument name\n if (commandDefinition.arguments && alias in commandDefinition.arguments) {\n throw createError(`the alias \"${alias}\" of the option \"${name}\" conflicts with an argument name.`);\n }\n\n // no alias name should conflict with any other alias name\n const findConflict = optionsDefinitionEntries.find(([n, d]) => n !== name && d.aliases?.includes(alias));\n if (findConflict) {\n throw createError(\n `the alias \"${alias}\" of the option \"${name}\" conflicts with another alias name of the option \"${findConflict[0]}\".`,\n );\n }\n }\n }\n\n if (option.requires) {\n // no self require\n if (option.requires.includes(name)) {\n throw createError(`the option \"${name}\" cannot require itself.`);\n }\n\n // no duplicate requires\n const duplicateRequires = findDuplicateStrings(option.requires).map(required => `\"${required}\"`);\n if (duplicateRequires.length > 0) {\n throw createError(`the option \"${name}\" has duplicate requires: ${duplicateRequires.join(\", \")}.`);\n }\n\n // no unknown required name\n for (const required of option.requires) {\n const exits = required in commandDefinition.options || required in (commandDefinition.arguments ?? []);\n if (!exits) {\n throw createError(`the option \"${name}\" requires \"${required}\", but it does not exist.`);\n }\n }\n }\n\n if (option.conflictWith) {\n // no self conflict\n if (option.conflictWith.includes(name)) {\n throw createError(`the option \"${name}\" cannot conflict itself.`);\n }\n\n // no duplicate conflicts\n const duplicateRequires = findDuplicateStrings(option.conflictWith).map(conflict => `\"${conflict}\"`);\n if (duplicateRequires.length > 0) {\n throw createError(`the option \"${name}\" has duplicate conflicts: ${duplicateRequires.join(\", \")}.`);\n }\n\n // no unknown conflict name\n for (const required of option.conflictWith) {\n const exits = required in commandDefinition.options || required in (commandDefinition.arguments ?? []);\n if (!exits) {\n throw createError(`the option \"${name}\" conflict with \"${required}\", but it does not exist.`);\n }\n }\n }\n\n // no intersection between requires and conflicts\n if (option.requires && option.conflictWith) {\n const requiresSet = new Set(option.requires);\n const conflictsSet = new Set(option.conflictWith);\n\n const intersection = requiresSet.intersection(conflictsSet);\n const intersectionArray = Array.from(intersection).map(name => `\"${name}\"`);\n\n if (intersectionArray.length > 0) {\n const s = intersectionArray.length > 1 ? \"s\" : \"\";\n throw createError(\n `the option \"${name}\" cannot require and conflict with the same name${s}: ${intersectionArray.join(\", \")}.`,\n );\n }\n }\n }\n}\n\nfunction validateArguments(commandDefinition: Cli | Subcommand) {\n if (!commandDefinition.arguments) return; // ok\n\n const isCli = \"cliName\" in commandDefinition;\n const name = isCli ? commandDefinition.cliName : commandDefinition.name;\n\n const createError = (message: string) => {\n return new Error(`invalid ${isCli ? \"cli\" : \"subcommand\"} definition \"${name}\": ${message}`);\n };\n\n if (commandDefinition.arguments) {\n const argumentsDefinitionEntries = Object.entries(commandDefinition.arguments);\n\n // no empty arguments record\n if (argumentsDefinitionEntries.length === 0) {\n throw createError(`\"arguments\" property is optional but cannot be empty.`);\n }\n\n for (const [index, [name, argument]] of argumentsDefinitionEntries.entries()) {\n // no number key name\n if (/^\\d+$/.test(name)) {\n throw createError(`the argument \"${name}\" name cannot be a number.`);\n }\n\n // should not happen\n if (!argument._preparedType) {\n throw createError(`internal error: missing prepared type for argument \"${name}\".`);\n }\n\n // no missing type\n if (!argument.schema) {\n throw createError(`the argument \"${name}\" missing a required property: \"schema\".`);\n }\n\n // no conflicting option\n if (commandDefinition.options && name in commandDefinition.options) {\n throw createError(`the argument \"${name}\" name conflicts with an option name.`);\n }\n\n if (!argument._preparedType.optional) continue; // ok\n\n // no optional argument when \"allowPositionals\" is enabled\n if (commandDefinition.allowPositionals) {\n throw createError(`the argument \"${name}\" cannot be optional when \"allowPositionals\" is enabled.`);\n }\n\n // only last argument can be optional\n if (index !== argumentsDefinitionEntries.length - 1) {\n throw createError(`the argument \"${name}\" cannot be optional unless it is the last argument.`);\n }\n\n if (argument.requires) {\n // no self require\n if (argument.requires.includes(name)) {\n throw createError(`the argument \"${name}\" cannot require itself.`);\n }\n\n // no duplicate requires\n const duplicateRequires = findDuplicateStrings(argument.requires).map(required => `\"${required}\"`);\n if (duplicateRequires.length > 0) {\n throw createError(`the argument \"${name}\" has duplicate requires: ${duplicateRequires.join(\", \")}.`);\n }\n\n // no unknown require\n for (const required of argument.requires) {\n const exits = required in (commandDefinition.options ?? {}) || required in commandDefinition.arguments;\n if (!exits) {\n throw createError(`the argument \"${name}\" requires \"${required}\", but it does not exist.`);\n }\n }\n }\n\n if (argument.conflictWith) {\n // no self conflict\n if (argument.conflictWith.includes(name)) {\n throw createError(`the argument \"${name}\" cannot conflict itself.`);\n }\n\n // no duplicate conflicts\n const duplicateRequires = findDuplicateStrings(argument.conflictWith).map(conflict => `\"${conflict}\"`);\n if (duplicateRequires.length > 0) {\n throw createError(`the argument \"${name}\" has duplicate conflicts: ${duplicateRequires.join(\", \")}.`);\n }\n\n // no unknown conflict\n for (const required of argument.conflictWith) {\n const exits = required in (commandDefinition.options ?? {}) || required in commandDefinition.arguments;\n if (!exits) {\n throw createError(`the argument \"${name}\" conflict with \"${required}\", but it does not exist.`);\n }\n }\n }\n\n // no intersection between requires and conflicts\n if (argument.requires && argument.conflictWith) {\n const requiresSet = new Set(argument.requires);\n const conflictsSet = new Set(argument.conflictWith);\n\n const intersection = requiresSet.intersection(conflictsSet);\n const intersectionArray = Array.from(intersection).map(name => `\"${name}\"`);\n\n if (intersectionArray.length > 0) {\n const s = intersectionArray.length > 1 ? \"s\" : \"\";\n throw createError(\n `the argument \"${name}\" cannot require and conflict with the same name${s}: ${intersectionArray.join(\", \")}.`,\n );\n }\n }\n }\n }\n}\n\nfunction isNegatedOptionName(name: string) {\n return transformOptionToArgument(name).startsWith(\"--no-\");\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{indent,indentLines,insertAtEndOfFirstLine,ln,toKebabCase}from"../utilities.mjs";import{terminalMarkdown}from"./terminal-markdown.mjs";function formatHelpMessageArguments(e,n){if(0===e.length)return"";const{style:t,indentBeforeName:i,indentAfterName:r,indentBeforePlaceholder:a,newLineIndent:l,longest:o,argumentsTitle:d,defaultKeyword:s,optionalKeyword:m,exampleKeyword:p,emptyLines:f,emptyLinesBeforeTitle:u,emptyLinesAfterTitle:c,markdownRenderer:g,kebabCaseArgumentName:w}=n;let A=ln(u)+indent(1)+t.title(d)+ln(1+c);const L=o+i+r+a+l;for(const n of e){if(n.hidden)continue;let e=n.description?t.description(n.description):terminalMarkdown(n.descriptionMarkdown,g,t.description);e=indentLines(e,L);let l="";n.defaultValueAsString&&(l=t.default(s.replace("{{ value }}",n.defaultValueAsString))),n.optional&&!l&&(l=t.optional(m));const d=o-n.name.length;if(A+=indent(i)+t.argument(w?toKebabCase(n.name):n.name)+indent(a+r)+indent(d)+insertAtEndOfFirstLine(e,l)+ln(1+f),n.example){const e=indentLines(n.example,L+p.length+1);A+=indent(L)+t.exampleTitle(p)+indent(1)+t.example(e)+ln(1)}}return A}export{formatHelpMessageArguments};
2
+ //# sourceMappingURL=format-arguments.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["indent","indentLines","insertAtEndOfFirstLine","ln","toKebabCase","terminalMarkdown","formatHelpMessageArguments","argumentsMetadata","options","length","style","indentBeforeName","indentAfterName","indentBeforePlaceholder","newLineIndent","longest","argumentsTitle","defaultKeyword","optionalKeyword","exampleKeyword","emptyLines","emptyLinesBeforeTitle","emptyLinesAfterTitle","markdownRenderer","kebabCaseArgumentName","message","title","totalSpacing","metadata","hidden","description","descriptionMarkdown","defaultOrOptional","defaultValueAsString","default","replace","optional","spacing","name","argument","example","normalizeExample","exampleTitle"],"sources":["../../../src/help-message/format-arguments.ts"],"sourcesContent":["import { indent, indentLines, insertAtEndOfFirstLine, ln, toKebabCase } from \"../utilities.ts\";\nimport { terminalMarkdown } from \"./terminal-markdown.ts\";\n\nimport type { ArgumentMetadata } from \"../types/metadata-types.ts\";\nimport type { FormatOptions } from \"./generate-for-cli.ts\";\n\nexport function formatHelpMessageArguments(argumentsMetadata: ArgumentMetadata[], options: FormatOptions): string {\n if (argumentsMetadata.length === 0) return \"\";\n\n const {\n style,\n indentBeforeName,\n indentAfterName,\n indentBeforePlaceholder,\n newLineIndent,\n longest,\n argumentsTitle,\n defaultKeyword,\n optionalKeyword,\n exampleKeyword,\n emptyLines,\n emptyLinesBeforeTitle,\n emptyLinesAfterTitle,\n markdownRenderer,\n kebabCaseArgumentName,\n } = options;\n\n let message = ln(emptyLinesBeforeTitle) + indent(1) + style.title(argumentsTitle) + ln(1 + emptyLinesAfterTitle);\n\n // the space from the beginning to the start of the next column.\n const totalSpacing = longest + indentBeforeName + indentAfterName + indentBeforePlaceholder + newLineIndent;\n\n for (const metadata of argumentsMetadata) {\n if (metadata.hidden) continue;\n\n let description = metadata.description\n ? style.description(metadata.description)\n : terminalMarkdown(metadata.descriptionMarkdown, markdownRenderer, style.description);\n\n description = indentLines(description, totalSpacing);\n\n let defaultOrOptional = \"\";\n\n if (metadata.defaultValueAsString) {\n defaultOrOptional = style.default(defaultKeyword.replace(\"{{ value }}\", metadata.defaultValueAsString));\n }\n\n if (metadata.optional && !defaultOrOptional) {\n defaultOrOptional = style.optional(optionalKeyword);\n }\n\n const spacing = longest - metadata.name.length;\n\n message +=\n indent(indentBeforeName) +\n style.argument(kebabCaseArgumentName ? toKebabCase(metadata.name) : metadata.name) +\n indent(indentBeforePlaceholder + indentAfterName) +\n indent(spacing) +\n insertAtEndOfFirstLine(description, defaultOrOptional) +\n ln(1 + emptyLines);\n\n if (metadata.example) {\n const normalizeExample = indentLines(metadata.example, totalSpacing + exampleKeyword.length + 1); // +1 for the space after the keyword\n message +=\n indent(totalSpacing) + style.exampleTitle(exampleKeyword) + indent(1) + style.example(normalizeExample) + ln(1);\n }\n }\n\n return message;\n}\n"],"mappings":"OAASA,OAAQC,YAAaC,uBAAwBC,GAAIC,gBAAmB,0BACpEC,qBAAwB,0BAK1B,SAASC,2BAA2BC,EAAuCC,GAChF,GAAiC,IAA7BD,EAAkBE,OAAc,MAAO,GAE3C,MAAMC,MACJA,EAAAC,iBACAA,EAAAC,gBACAA,EAAAC,wBACAA,EAAAC,cACAA,EAAAC,QACAA,EAAAC,eACAA,EAAAC,eACAA,EAAAC,gBACAA,EAAAC,eACAA,EAAAC,WACAA,EAAAC,sBACAA,EAAAC,qBACAA,EAAAC,iBACAA,EAAAC,sBACAA,GACEhB,EAEJ,IAAIiB,EAAUtB,GAAGkB,GAAyBrB,OAAO,GAAKU,EAAMgB,MAAMV,GAAkBb,GAAG,EAAImB,GAG3F,MAAMK,EAAeZ,EAAUJ,EAAmBC,EAAkBC,EAA0BC,EAE9F,UAAWc,KAAYrB,EAAmB,CACxC,GAAIqB,EAASC,OAAQ,SAErB,IAAIC,EAAcF,EAASE,YACvBpB,EAAMoB,YAAYF,EAASE,aAC3BzB,iBAAiBuB,EAASG,oBAAqBR,EAAkBb,EAAMoB,aAE3EA,EAAc7B,YAAY6B,EAAaH,GAEvC,IAAIK,EAAoB,GAEpBJ,EAASK,uBACXD,EAAoBtB,EAAMwB,QAAQjB,EAAekB,QAAQ,cAAeP,EAASK,wBAG/EL,EAASQ,WAAaJ,IACxBA,EAAoBtB,EAAM0B,SAASlB,IAGrC,MAAMmB,EAAUtB,EAAUa,EAASU,KAAK7B,OAUxC,GARAgB,GACEzB,OAAOW,GACPD,EAAM6B,SAASf,EAAwBpB,YAAYwB,EAASU,MAAQV,EAASU,MAC7EtC,OAAOa,EAA0BD,GACjCZ,OAAOqC,GACPnC,uBAAuB4B,EAAaE,GACpC7B,GAAG,EAAIiB,GAELQ,EAASY,QAAS,CACpB,MAAMC,EAAmBxC,YAAY2B,EAASY,QAASb,EAAeR,EAAeV,OAAS,GAC9FgB,GACEzB,OAAO2B,GAAgBjB,EAAMgC,aAAavB,GAAkBnB,OAAO,GAAKU,EAAM8B,QAAQC,GAAoBtC,GAAG,EACjH,CACF,CAEA,OAAOsB,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{indent,indentLines,insertAtEndOfFirstLine,ln}from"../utilities.mjs";import{terminalMarkdown}from"./terminal-markdown.mjs";function formatHelpMessageOptions(e,n){if(0===e.length)return"";const{style:t,indentBeforeName:i,indentAfterName:o,indentBeforePlaceholder:l,newLineIndent:r,emptyLines:d,longest:s,exampleKeyword:a,optionalKeyword:p,defaultKeyword:m,optionsTitle:f,emptyLinesBeforeTitle:c,emptyLinesAfterTitle:u,markdownRenderer:g}=n;let A=ln(c)+indent(1)+t.title(f)+ln(1+u);const h=s+i+o+l+r;for(const n of e){if(n.hidden)continue;const e=[...n.aliasesAsArgs,n.nameAsArg],r=e.map(e=>t.option(e)).join(t.punctuation(", "));let f=n.description?t.description(n.description):terminalMarkdown(n.descriptionMarkdown,g,t.description);f=indentLines(f,h);let c="";n.defaultValueAsString&&(c=t.default(m.replace("{{ value }}",n.defaultValueAsString))),n.optional&&!c&&(c=t.optional(p));const u=s-(e.join(", ").length+n.placeholder.length);if(A+=indent(i)+r+indent(l)+t.placeholder(n.placeholder)+indent(o)+indent(u)+insertAtEndOfFirstLine(f,c)+ln(1+d),n.example){const e=indentLines(n.example,h+a.length+1);A+=indent(h)+t.exampleTitle(a)+indent(1)+t.example(e)+ln(1)}}return A}export{formatHelpMessageOptions};
2
+ //# sourceMappingURL=format-options.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["indent","indentLines","insertAtEndOfFirstLine","ln","terminalMarkdown","formatHelpMessageOptions","optionsMetadata","options","length","style","indentBeforeName","indentAfterName","indentBeforePlaceholder","newLineIndent","emptyLines","longest","exampleKeyword","optionalKeyword","defaultKeyword","optionsTitle","emptyLinesBeforeTitle","emptyLinesAfterTitle","markdownRenderer","message","title","totalSpacing","metadata","hidden","names","aliasesAsArgs","nameAsArg","coloredNames","map","name","option","join","punctuation","description","descriptionMarkdown","defaultOrOptional","defaultValueAsString","default","replace","optional","spacing","placeholder","example","normalizeExample","exampleTitle"],"sources":["../../../src/help-message/format-options.ts"],"sourcesContent":["import { indent, indentLines, insertAtEndOfFirstLine, ln } from \"../utilities.ts\";\nimport { terminalMarkdown } from \"./terminal-markdown.ts\";\n\nimport type { OptionMetadata } from \"../types/metadata-types.ts\";\nimport type { FormatOptions } from \"./generate-for-cli.ts\";\n\nexport function formatHelpMessageOptions(optionsMetadata: OptionMetadata[], options: FormatOptions): string {\n if (optionsMetadata.length === 0) return \"\";\n\n const {\n style,\n indentBeforeName,\n indentAfterName,\n indentBeforePlaceholder,\n newLineIndent,\n emptyLines,\n longest,\n exampleKeyword,\n optionalKeyword,\n defaultKeyword,\n optionsTitle,\n emptyLinesBeforeTitle,\n emptyLinesAfterTitle,\n markdownRenderer,\n } = options;\n\n let message = ln(emptyLinesBeforeTitle) + indent(1) + style.title(optionsTitle) + ln(1 + emptyLinesAfterTitle);\n\n // the space from the beginning to the start of the next column.\n const totalSpacing = longest + indentBeforeName + indentAfterName + indentBeforePlaceholder + newLineIndent;\n\n for (const metadata of optionsMetadata) {\n if (metadata.hidden) continue;\n\n const names = [...metadata.aliasesAsArgs, metadata.nameAsArg];\n const coloredNames = names.map(name => style.option(name)).join(style.punctuation(\", \"));\n\n let description = metadata.description\n ? style.description(metadata.description)\n : terminalMarkdown(metadata.descriptionMarkdown, markdownRenderer, style.description);\n\n description = indentLines(description, totalSpacing);\n\n let defaultOrOptional = \"\";\n\n if (metadata.defaultValueAsString) {\n defaultOrOptional = style.default(defaultKeyword.replace(\"{{ value }}\", metadata.defaultValueAsString));\n }\n\n if (metadata.optional && !defaultOrOptional) {\n defaultOrOptional = style.optional(optionalKeyword);\n }\n\n // space between the option and the description\n const optLength = names.join(\", \").length + metadata.placeholder.length;\n const spacing = longest - optLength;\n\n message +=\n indent(indentBeforeName) +\n coloredNames +\n indent(indentBeforePlaceholder) +\n style.placeholder(metadata.placeholder) +\n indent(indentAfterName) +\n indent(spacing) +\n insertAtEndOfFirstLine(description, defaultOrOptional) +\n ln(1 + emptyLines);\n\n if (metadata.example) {\n const normalizeExample = indentLines(metadata.example, totalSpacing + exampleKeyword.length + 1); // + 1 for the space after the keyword\n message +=\n indent(totalSpacing) + style.exampleTitle(exampleKeyword) + indent(1) + style.example(normalizeExample) + ln(1);\n }\n }\n\n return message;\n}\n"],"mappings":"OAASA,OAAQC,YAAaC,uBAAwBC,OAAU,0BACvDC,qBAAwB,0BAK1B,SAASC,yBAAyBC,EAAmCC,GAC1E,GAA+B,IAA3BD,EAAgBE,OAAc,MAAO,GAEzC,MAAMC,MACJA,EAAAC,iBACAA,EAAAC,gBACAA,EAAAC,wBACAA,EAAAC,cACAA,EAAAC,WACAA,EAAAC,QACAA,EAAAC,eACAA,EAAAC,gBACAA,EAAAC,eACAA,EAAAC,aACAA,EAAAC,sBACAA,EAAAC,qBACAA,EAAAC,iBACAA,GACEf,EAEJ,IAAIgB,EAAUpB,GAAGiB,GAAyBpB,OAAO,GAAKS,EAAMe,MAAML,GAAgBhB,GAAG,EAAIkB,GAGzF,MAAMI,EAAeV,EAAUL,EAAmBC,EAAkBC,EAA0BC,EAE9F,UAAWa,KAAYpB,EAAiB,CACtC,GAAIoB,EAASC,OAAQ,SAErB,MAAMC,EAAQ,IAAIF,EAASG,cAAeH,EAASI,WAC7CC,EAAeH,EAAMI,IAAIC,GAAQxB,EAAMyB,OAAOD,IAAOE,KAAK1B,EAAM2B,YAAY,OAElF,IAAIC,EAAcX,EAASW,YACvB5B,EAAM4B,YAAYX,EAASW,aAC3BjC,iBAAiBsB,EAASY,oBAAqBhB,EAAkBb,EAAM4B,aAE3EA,EAAcpC,YAAYoC,EAAaZ,GAEvC,IAAIc,EAAoB,GAEpBb,EAASc,uBACXD,EAAoB9B,EAAMgC,QAAQvB,EAAewB,QAAQ,cAAehB,EAASc,wBAG/Ed,EAASiB,WAAaJ,IACxBA,EAAoB9B,EAAMkC,SAAS1B,IAIrC,MACM2B,EAAU7B,GADEa,EAAMO,KAAK,MAAM3B,OAASkB,EAASmB,YAAYrC,QAajE,GAVAe,GACEvB,OAAOU,GACPqB,EACA/B,OAAOY,GACPH,EAAMoC,YAAYnB,EAASmB,aAC3B7C,OAAOW,GACPX,OAAO4C,GACP1C,uBAAuBmC,EAAaE,GACpCpC,GAAG,EAAIW,GAELY,EAASoB,QAAS,CACpB,MAAMC,EAAmB9C,YAAYyB,EAASoB,QAASrB,EAAeT,EAAeR,OAAS,GAC9Fe,GACEvB,OAAOyB,GAAgBhB,EAAMuC,aAAahC,GAAkBhB,OAAO,GAAKS,EAAMqC,QAAQC,GAAoB5C,GAAG,EACjH,CACF,CAEA,OAAOoB,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{indent,indentLines,ln,subcommandPlaceholder}from"../utilities.mjs";import{terminalMarkdown}from"./terminal-markdown.mjs";function formatHelpMessageCommands(n,e){if(0===n.length)return"";const{style:t,indentBeforeName:i,indentAfterName:o,indentBeforePlaceholder:r,newLineIndent:d,longest:m,commandsTitle:s,emptyLines:a,emptyLinesBeforeTitle:l,emptyLinesAfterTitle:c,markdownRenderer:p}=e;let f=ln(l)+indent(1)+t.title(s)+ln(1+c);const u=m+i+o+r+d;for(const e of n){if(e.hidden)continue;const n=e.aliases.concat([e.name]),d=subcommandPlaceholder(e);let s=e.description?t.description(e.description):terminalMarkdown(e.descriptionMarkdown,p,t.description);s=indentLines(s,u);const l=m-(n.join(", ").length+d.length),c=n.map(n=>t.command(n)).join(t.punctuation(", "));f+=indent(i)+c+indent(r)+t.placeholder(d)+indent(o)+indent(l)+s+ln(1+a)}return f}export{formatHelpMessageCommands};
2
+ //# sourceMappingURL=format-subcommands.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["indent","indentLines","ln","subcommandPlaceholder","terminalMarkdown","formatHelpMessageCommands","subcommandsMetadata","options","length","style","indentBeforeName","indentAfterName","indentBeforePlaceholder","newLineIndent","longest","commandsTitle","emptyLines","emptyLinesBeforeTitle","emptyLinesAfterTitle","markdownRenderer","message","title","totalSpacing","metadata","hidden","names","aliases","concat","name","placeholder","description","descriptionMarkdown","spacing","join","coloredNames","map","command","punctuation"],"sources":["../../../src/help-message/format-subcommands.ts"],"sourcesContent":["import { indent, indentLines, ln, subcommandPlaceholder } from \"../utilities.ts\";\nimport { terminalMarkdown } from \"./terminal-markdown.ts\";\n\nimport type { SubcommandMetadata } from \"../types/metadata-types.ts\";\nimport type { FormatOptions } from \"./generate-for-cli.ts\";\n\nexport function formatHelpMessageCommands(subcommandsMetadata: SubcommandMetadata[], options: FormatOptions): string {\n if (subcommandsMetadata.length === 0) return \"\";\n\n const {\n style,\n indentBeforeName,\n indentAfterName,\n indentBeforePlaceholder,\n newLineIndent,\n longest,\n commandsTitle,\n emptyLines,\n emptyLinesBeforeTitle,\n emptyLinesAfterTitle,\n markdownRenderer,\n } = options;\n\n let message = ln(emptyLinesBeforeTitle) + indent(1) + style.title(commandsTitle) + ln(1 + emptyLinesAfterTitle);\n\n // the space from the beginning to the start of the next column.\n const totalSpacing = longest + indentBeforeName + indentAfterName + indentBeforePlaceholder + newLineIndent;\n\n for (const metadata of subcommandsMetadata) {\n if (metadata.hidden) continue;\n\n const names = metadata.aliases.concat([metadata.name]);\n const placeholder = subcommandPlaceholder(metadata);\n\n let description = metadata.description\n ? style.description(metadata.description)\n : terminalMarkdown(metadata.descriptionMarkdown, markdownRenderer, style.description);\n\n description = indentLines(description, totalSpacing);\n\n const optLength = names.join(\", \").length + placeholder.length;\n const spacing = longest - optLength;\n\n const coloredNames = names.map(name => style.command(name)).join(style.punctuation(\", \"));\n\n message +=\n indent(indentBeforeName) +\n coloredNames +\n indent(indentBeforePlaceholder) +\n style.placeholder(placeholder) +\n indent(indentAfterName) +\n indent(spacing) +\n description +\n ln(1 + emptyLines);\n }\n\n return message;\n}\n"],"mappings":"OAASA,OAAQC,YAAaC,GAAIC,0BAA6B,0BACtDC,qBAAwB,0BAK1B,SAASC,0BAA0BC,EAA2CC,GACnF,GAAmC,IAA/BD,EAAoBE,OAAc,MAAO,GAE7C,MAAMC,MACJA,EAAAC,iBACAA,EAAAC,gBACAA,EAAAC,wBACAA,EAAAC,cACAA,EAAAC,QACAA,EAAAC,cACAA,EAAAC,WACAA,EAAAC,sBACAA,EAAAC,qBACAA,EAAAC,iBACAA,GACEZ,EAEJ,IAAIa,EAAUlB,GAAGe,GAAyBjB,OAAO,GAAKS,EAAMY,MAAMN,GAAiBb,GAAG,EAAIgB,GAG1F,MAAMI,EAAeR,EAAUJ,EAAmBC,EAAkBC,EAA0BC,EAE9F,UAAWU,KAAYjB,EAAqB,CAC1C,GAAIiB,EAASC,OAAQ,SAErB,MAAMC,EAAQF,EAASG,QAAQC,OAAO,CAACJ,EAASK,OAC1CC,EAAc1B,sBAAsBoB,GAE1C,IAAIO,EAAcP,EAASO,YACvBrB,EAAMqB,YAAYP,EAASO,aAC3B1B,iBAAiBmB,EAASQ,oBAAqBZ,EAAkBV,EAAMqB,aAE3EA,EAAc7B,YAAY6B,EAAaR,GAEvC,MACMU,EAAUlB,GADEW,EAAMQ,KAAK,MAAMzB,OAASqB,EAAYrB,QAGlD0B,EAAeT,EAAMU,IAAIP,GAAQnB,EAAM2B,QAAQR,IAAOK,KAAKxB,EAAM4B,YAAY,OAEnFjB,GACEpB,OAAOU,GACPwB,EACAlC,OAAOY,GACPH,EAAMoB,YAAYA,GAClB7B,OAAOW,GACPX,OAAOgC,GACPF,EACA5B,GAAG,EAAIc,EACX,CAEA,OAAOI,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{getCliMetadata}from"../metadata/cli-metadata.mjs";import{indent,indentLines,ln,subcommandPlaceholder}from"../utilities.mjs";import{formatHelpMessageArguments}from"./format-arguments.mjs";import{formatHelpMessageOptions}from"./format-options.mjs";import{formatHelpMessageCommands}from"./format-subcommands.mjs";import{setPrintHelpOptionsDefaults}from"./set-defaults.mjs";import{helpMessageStyles}from"./styles.mjs";import{terminalMarkdown}from"./terminal-markdown.mjs";function generateCliHelpMessage(e,t={}){const n=setPrintHelpOptionsDefaults(t),s={...helpMessageStyles.default,...n.style},a=getCliMetadata(e),o=e=>indent(1)+s.title(e);let i="",m=a.usage;if(m||(m=s.punctuation("$"),m+=a.name?s.description("",a.name):"",m+=a.subcommands.length>0?s.command("","[command]"):"",m+=a.options.length>0?s.option("","[options]"):"",m+=a.arguments.length>0?s.argument("","<arguments>"):"",m+=a.allowPositionals?s.argument("","<positionals>"):""),i+=o(n.usageTitle)+ln(1+n.emptyLinesAfterTitle),i+=indent(n.indentBeforeName)+m+ln(1),a.description||a.descriptionMarkdown){i+=ln(n.emptyLinesBeforeTitle)+o(n.descriptionTitle)+ln(1+n.emptyLinesAfterTitle);let e=a.description?s.description(a.description):terminalMarkdown(a.descriptionMarkdown,n.markdownRenderer,s.description);e=indentLines(e,n.indentBeforeName),i+=indent(n.indentBeforeName)+e+ln(1)}let l=0;const r=a.options;let p=0;for(const e of r){const t=[...e.aliasesAsArgs,e.nameAsArg].join(", ").length+e.placeholder.length;p=Math.max(t,p)}l=Math.max(p,l);const d=a.subcommands;let f=0;for(const e of d){const t=[...e.aliases,e.name].join(", "),n=subcommandPlaceholder(e),s=t.length+n.length;f=Math.max(s,f)}l=Math.max(f,l);const g=a.arguments;let c=0;for(const e of g)c=Math.max(e.name.length,c);l=Math.max(c,l);const u=Object.assign({...n},{style:s,longest:l});if(i+=formatHelpMessageOptions(r,u),i+=formatHelpMessageCommands(d,u),i+=formatHelpMessageArguments(g,u),a.example){i+=ln(n.emptyLinesBeforeTitle)+o(n.exampleTitle)+ln(1+n.emptyLinesAfterTitle);const e=indentLines(a.example,n.indentBeforeName);i+=indent(n.indentBeforeName)+s.example(e)}return i}export{generateCliHelpMessage};
2
+ //# sourceMappingURL=generate-for-cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getCliMetadata","indent","indentLines","ln","subcommandPlaceholder","formatHelpMessageArguments","formatHelpMessageOptions","formatHelpMessageCommands","setPrintHelpOptionsDefaults","helpMessageStyles","terminalMarkdown","generateCliHelpMessage","cliDefinition","printOptions","options","style","default","metadata","formatTitle","title","message","usage","punctuation","name","description","subcommands","length","command","option","arguments","argument","allowPositionals","usageTitle","emptyLinesAfterTitle","indentBeforeName","descriptionMarkdown","emptyLinesBeforeTitle","descriptionTitle","markdownRenderer","longest","optionsMetadata","longestOptionTitle","optLength","aliasesAsArgs","nameAsArg","join","placeholder","Math","max","subcommandsMetadata","longestSubcommandTitle","names","aliases","argumentsMetadata","longestArgumentTitle","formatOptions","Object","assign","example","exampleTitle","normalizeExample"],"sources":["../../../src/help-message/generate-for-cli.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/cli-metadata.ts\";\nimport { indent, indentLines, ln, subcommandPlaceholder } from \"../utilities.ts\";\nimport { formatHelpMessageArguments } from \"./format-arguments.ts\";\nimport { formatHelpMessageOptions } from \"./format-options.ts\";\nimport { formatHelpMessageCommands } from \"./format-subcommands.ts\";\nimport { setPrintHelpOptionsDefaults } from \"./set-defaults.ts\";\nimport { helpMessageStyles } from \"./styles.ts\";\nimport { terminalMarkdown } from \"./terminal-markdown.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\nimport type { HelpMessageStyleImpl, PrintHelpOptions } from \"../types/help-message-types.ts\";\n\nexport interface FormatOptions extends Required<PrintHelpOptions> {\n style: HelpMessageStyleImpl;\n longest: number;\n}\n\nexport function generateCliHelpMessage(cliDefinition: Cli, printOptions: PrintHelpOptions = {}): string {\n const options = setPrintHelpOptionsDefaults(printOptions);\n\n const style = { ...helpMessageStyles.default, ...options.style };\n\n const metadata = getCliMetadata(cliDefinition);\n\n const formatTitle = (title: string) => indent(1) + style.title(title);\n\n let message = \"\";\n\n // CLI usage\n let usage = metadata.usage;\n if (!usage) {\n usage = style.punctuation(\"$\");\n usage += metadata.name ? style.description(\"\", metadata.name) : \"\";\n usage += metadata.subcommands.length > 0 ? style.command(\"\", \"[command]\") : \"\";\n usage += metadata.options.length > 0 ? style.option(\"\", \"[options]\") : \"\";\n usage += metadata.arguments.length > 0 ? style.argument(\"\", \"<arguments>\") : \"\";\n usage += metadata.allowPositionals ? style.argument(\"\", \"<positionals>\") : \"\";\n }\n\n message += formatTitle(options.usageTitle) + ln(1 + options.emptyLinesAfterTitle);\n message += indent(options.indentBeforeName) + usage + ln(1);\n\n // CLI description\n if (metadata.description || metadata.descriptionMarkdown) {\n message +=\n ln(options.emptyLinesBeforeTitle) + formatTitle(options.descriptionTitle) + ln(1 + options.emptyLinesAfterTitle);\n\n let description = metadata.description\n ? style.description(metadata.description)\n : terminalMarkdown(metadata.descriptionMarkdown, options.markdownRenderer, style.description);\n\n description = indentLines(description, options.indentBeforeName);\n\n message += indent(options.indentBeforeName) + description + ln(1);\n }\n\n let longest = 0;\n\n // Prepare CLI options\n const optionsMetadata = metadata.options;\n\n let longestOptionTitle = 0;\n for (const metadata of optionsMetadata) {\n const names = [...metadata.aliasesAsArgs, metadata.nameAsArg].join(\", \");\n const optLength = names.length + metadata.placeholder.length;\n longestOptionTitle = Math.max(optLength, longestOptionTitle);\n }\n\n longest = Math.max(longestOptionTitle, longest);\n\n // Prepare CLI commands\n const subcommandsMetadata = metadata.subcommands;\n\n let longestSubcommandTitle = 0;\n for (const metadata of subcommandsMetadata) {\n const names = [...metadata.aliases, metadata.name].join(\", \");\n const placeholder = subcommandPlaceholder(metadata);\n const optLength = names.length + placeholder.length;\n longestSubcommandTitle = Math.max(optLength, longestSubcommandTitle);\n }\n\n longest = Math.max(longestSubcommandTitle, longest);\n\n // Prepare CLI arguments\n const argumentsMetadata = metadata.arguments;\n\n let longestArgumentTitle = 0;\n for (const argument of argumentsMetadata) {\n longestArgumentTitle = Math.max(argument.name.length, longestArgumentTitle);\n }\n\n longest = Math.max(longestArgumentTitle, longest);\n\n const formatOptions = Object.assign({ ...options }, { style, longest }) as FormatOptions;\n\n // CLI options\n message += formatHelpMessageOptions(optionsMetadata, formatOptions);\n\n // CLI commands\n message += formatHelpMessageCommands(subcommandsMetadata, formatOptions);\n\n // CLI arguments\n message += formatHelpMessageArguments(argumentsMetadata, formatOptions);\n\n // CLI example\n if (metadata.example) {\n message +=\n ln(options.emptyLinesBeforeTitle) + formatTitle(options.exampleTitle) + ln(1 + options.emptyLinesAfterTitle);\n const normalizeExample = indentLines(metadata.example, options.indentBeforeName);\n message += indent(options.indentBeforeName) + style.example(normalizeExample);\n }\n\n return message;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{generateCliHelpMessage}from"./generate-for-cli.mjs";import{setPrintHelpOptionsDefaults}from"./set-defaults.mjs";import{helpMessageStyles}from"./styles.mjs";function generateSubcommandHelpMessage(e,t={},s=""){setPrintHelpOptionsDefaults(t);const a={...helpMessageStyles.default,...t.style},n=e.meta??{};let o=n.usage;o||(o=a.punctuation("$"),o+=s?` ${s}`:"",o+=a.command("",e.name),o+=e.options?a.option(" [options]"):"",o+=e.arguments||e.allowPositionals?a.argument(" <arguments>"):"");const l={...e,cliName:e.name,meta:{usage:o,...n}};return generateCliHelpMessage(l,t)}export{generateSubcommandHelpMessage};
2
+ //# sourceMappingURL=generate-for-subcommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateCliHelpMessage","setPrintHelpOptionsDefaults","helpMessageStyles","generateSubcommandHelpMessage","commandDefinition","options","cliName","style","default","meta","usage","punctuation","command","name","option","arguments","allowPositionals","argument","asCliDefinition"],"sources":["../../../src/help-message/generate-for-subcommand.ts"],"sourcesContent":["import { generateCliHelpMessage } from \"./generate-for-cli.ts\";\nimport { setPrintHelpOptionsDefaults } from \"./set-defaults.ts\";\nimport { helpMessageStyles } from \"./styles.ts\";\n\nimport type { Cli, Subcommand } from \"../types/definitions-types.ts\";\nimport type { PrintHelpOptions } from \"../types/help-message-types.ts\";\n\nexport function generateSubcommandHelpMessage(\n commandDefinition: Subcommand,\n options: PrintHelpOptions = {},\n cliName = \"\",\n): string {\n setPrintHelpOptionsDefaults(options);\n\n const style = { ...helpMessageStyles.default, ...options.style };\n\n const meta = commandDefinition.meta ?? {};\n\n let usage = meta.usage;\n if (!usage) {\n usage = style.punctuation(\"$\");\n usage += cliName ? ` ${cliName}` : \"\";\n usage += style.command(\"\", commandDefinition.name);\n usage += commandDefinition.options ? style.option(\" [options]\") : \"\";\n usage += commandDefinition.arguments || commandDefinition.allowPositionals ? style.argument(\" <arguments>\") : \"\";\n }\n\n // convert to cli object without subcommands\n const asCliDefinition: Cli = { ...commandDefinition, cliName: commandDefinition.name, meta: { usage, ...meta } };\n\n return generateCliHelpMessage(asCliDefinition, options);\n}\n"],"mappings":"OAASA,2BAA8B,gCAC9BC,gCAAmC,4BACnCC,sBAAyB,eAK3B,SAASC,8BACdC,EACAC,EAA4B,CAAC,EAC7BC,EAAU,IAEVL,4BAA4BI,GAE5B,MAAME,EAAQ,IAAKL,kBAAkBM,WAAYH,EAAQE,OAEnDE,EAAOL,EAAkBK,MAAQ,CAAC,EAExC,IAAIC,EAAQD,EAAKC,MACZA,IACHA,EAAQH,EAAMI,YAAY,KAC1BD,GAASJ,EAAU,IAAIA,IAAY,GACnCI,GAASH,EAAMK,QAAQ,GAAIR,EAAkBS,MAC7CH,GAASN,EAAkBC,QAAUE,EAAMO,OAAO,cAAgB,GAClEJ,GAASN,EAAkBW,WAAaX,EAAkBY,iBAAmBT,EAAMU,SAAS,gBAAkB,IAIhH,MAAMC,EAAuB,IAAKd,EAAmBE,QAASF,EAAkBS,KAAMJ,KAAM,CAAEC,WAAUD,IAExG,OAAOT,uBAAuBkB,EAAiBb,EACjD,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{generateCliHelpMessage}from"./generate-for-cli.mjs";import{generateSubcommandHelpMessage}from"./generate-for-subcommand.mjs";function printCliHelp(e,n={}){console.log(generateCliHelpMessage(e,n))}function printSubcommandHelp(e,n={},o=""){console.log(generateSubcommandHelpMessage(e,n,o))}export{printCliHelp,printSubcommandHelp};
2
+ //# sourceMappingURL=print-help.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateCliHelpMessage","generateSubcommandHelpMessage","printCliHelp","cliDefinition","options","console","log","printSubcommandHelp","commandDefinition","cliName"],"sources":["../../../src/help-message/print-help.ts"],"sourcesContent":["import { generateCliHelpMessage } from \"./generate-for-cli.ts\";\nimport { generateSubcommandHelpMessage } from \"./generate-for-subcommand.ts\";\n\nimport type { Cli, Subcommand } from \"../types/definitions-types.ts\";\nimport type { PrintHelpOptions } from \"../types/help-message-types.ts\";\n\nexport function printCliHelp(cliDefinition: Cli, options: PrintHelpOptions = {}) {\n console.log(generateCliHelpMessage(cliDefinition, options));\n}\n\nexport function printSubcommandHelp(commandDefinition: Subcommand, options: PrintHelpOptions = {}, cliName = \"\") {\n console.log(generateSubcommandHelpMessage(commandDefinition, options, cliName));\n}\n"],"mappings":"OAASA,2BAA8B,gCAC9BC,kCAAqC,gCAKvC,SAASC,aAAaC,EAAoBC,EAA4B,CAAC,GAC5EC,QAAQC,IAAIN,uBAAuBG,EAAeC,GACpD,CAEO,SAASG,oBAAoBC,EAA+BJ,EAA4B,CAAC,EAAGK,EAAU,IAC3GJ,QAAQC,IAAIL,8BAA8BO,EAAmBJ,EAASK,GACxE,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{helpMessageStyles}from"./styles.mjs";function setPrintHelpOptionsDefaults(e){const t={...e};return t.style??(t.style=helpMessageStyles.default),t.markdownRenderer??(t.markdownRenderer="terminal"),t.kebabCaseArgumentName??(t.kebabCaseArgumentName=!0),t.indentBeforeName??(t.indentBeforeName=2),t.indentAfterName??(t.indentAfterName=4),t.indentBeforePlaceholder??(t.indentBeforePlaceholder=1),t.newLineIndent??(t.newLineIndent=0),t.emptyLines??(t.emptyLines=0),t.emptyLinesBeforeTitle??(t.emptyLinesBeforeTitle=1),t.emptyLinesAfterTitle??(t.emptyLinesAfterTitle=0),t.exampleKeyword??(t.exampleKeyword="Example"),t.optionalKeyword??(t.optionalKeyword="(optional)"),t.defaultKeyword??(t.defaultKeyword="(default: {{ value }})"),t.usageTitle??(t.usageTitle="USAGE"),t.descriptionTitle??(t.descriptionTitle="DESCRIPTION"),t.commandsTitle??(t.commandsTitle="COMMANDS"),t.optionsTitle??(t.optionsTitle="OPTIONS"),t.argumentsTitle??(t.argumentsTitle="ARGUMENTS"),t.exampleTitle??(t.exampleTitle="EXAMPLE"),t}export{setPrintHelpOptionsDefaults};
2
+ //# sourceMappingURL=set-defaults.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["helpMessageStyles","setPrintHelpOptionsDefaults","options","clone","style","default","markdownRenderer","kebabCaseArgumentName","indentBeforeName","indentAfterName","indentBeforePlaceholder","newLineIndent","emptyLines","emptyLinesBeforeTitle","emptyLinesAfterTitle","exampleKeyword","optionalKeyword","defaultKeyword","usageTitle","descriptionTitle","commandsTitle","optionsTitle","argumentsTitle","exampleTitle"],"sources":["../../../src/help-message/set-defaults.ts"],"sourcesContent":["import { helpMessageStyles } from \"./styles.ts\";\n\nimport type { PrintHelpOptions } from \"../types/help-message-types.ts\";\nimport type { FormatOptions } from \"./generate-for-cli.ts\";\n\nexport function setPrintHelpOptionsDefaults(options: PrintHelpOptions) {\n const clone = { ...options };\n\n clone.style ??= helpMessageStyles.default;\n clone.markdownRenderer ??= \"terminal\";\n clone.kebabCaseArgumentName ??= true;\n\n clone.indentBeforeName ??= 2;\n clone.indentAfterName ??= 4;\n clone.indentBeforePlaceholder ??= 1;\n clone.newLineIndent ??= 0;\n\n clone.emptyLines ??= 0;\n clone.emptyLinesBeforeTitle ??= 1;\n clone.emptyLinesAfterTitle ??= 0;\n\n clone.exampleKeyword ??= \"Example\";\n clone.optionalKeyword ??= \"(optional)\";\n clone.defaultKeyword ??= \"(default: {{ value }})\";\n\n clone.usageTitle ??= \"USAGE\";\n clone.descriptionTitle ??= \"DESCRIPTION\";\n clone.commandsTitle ??= \"COMMANDS\";\n clone.optionsTitle ??= \"OPTIONS\";\n clone.argumentsTitle ??= \"ARGUMENTS\";\n clone.exampleTitle ??= \"EXAMPLE\";\n\n return clone as Required<FormatOptions>;\n}\n"],"mappings":"OAASA,sBAAyB,eAK3B,SAASC,4BAA4BC,GAC1C,MAAMC,EAAQ,IAAKD,GA0BnB,OAxBAC,EAAMC,QAAND,EAAMC,MAAUJ,kBAAkBK,SAClCF,EAAMG,mBAANH,EAAMG,iBAAqB,YAC3BH,EAAMI,wBAANJ,EAAMI,uBAA0B,GAEhCJ,EAAMK,mBAANL,EAAMK,iBAAqB,GAC3BL,EAAMM,kBAANN,EAAMM,gBAAoB,GAC1BN,EAAMO,0BAANP,EAAMO,wBAA4B,GAClCP,EAAMQ,gBAANR,EAAMQ,cAAkB,GAExBR,EAAMS,aAANT,EAAMS,WAAe,GACrBT,EAAMU,wBAANV,EAAMU,sBAA0B,GAChCV,EAAMW,uBAANX,EAAMW,qBAAyB,GAE/BX,EAAMY,iBAANZ,EAAMY,eAAmB,WACzBZ,EAAMa,kBAANb,EAAMa,gBAAoB,cAC1Bb,EAAMc,iBAANd,EAAMc,eAAmB,0BAEzBd,EAAMe,aAANf,EAAMe,WAAe,SACrBf,EAAMgB,mBAANhB,EAAMgB,iBAAqB,eAC3BhB,EAAMiB,gBAANjB,EAAMiB,cAAkB,YACxBjB,EAAMkB,eAANlB,EAAMkB,aAAiB,WACvBlB,EAAMmB,iBAANnB,EAAMmB,eAAmB,aACzBnB,EAAMoB,eAANpB,EAAMoB,aAAiB,WAEhBpB,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ var __defProp=Object.defineProperty,__defNormalProp=(e,l,c)=>l in e?__defProp(e,l,{enumerable:!0,configurable:!0,writable:!0,value:c}):e[l]=c,__publicField=(e,l,c)=>__defNormalProp(e,"symbol"!=typeof l?l+"":l,c);import c from"chalk";var _HelpMessageStyle=class e{constructor(l,c){__publicField(this,"title",e.noColor),__publicField(this,"description",e.noColor),__publicField(this,"default",e.noColor),__publicField(this,"optional",e.noColor),__publicField(this,"exampleTitle",e.noColor),__publicField(this,"example",e.noColor),__publicField(this,"command",e.noColor),__publicField(this,"option",e.noColor),__publicField(this,"argument",e.noColor),__publicField(this,"placeholder",e.noColor),__publicField(this,"punctuation",e.noColor),c&&Object.assign(this,c),Object.assign(this,l)}};__publicField(_HelpMessageStyle,"noColor",(...e)=>e.join(" "));var HelpMessageStyle=_HelpMessageStyle,helpMessageStyles=Object.freeze({default:new HelpMessageStyle({title:c.bold.blue,description:c.white,default:c.dim.italic,optional:c.dim.italic,exampleTitle:c.yellow,example:c.dim,command:c.yellow,option:c.cyan,argument:c.green,placeholder:c.hex("#FF9800"),punctuation:c.white.dim}),dracula:new HelpMessageStyle({title:c.bold.hex("#BD93F9"),description:c.hex("#F8F8F2"),default:c.italic.hex("#6272A4"),optional:c.italic.hex("#6272A4"),exampleTitle:c.hex("#FFB86C"),example:c.hex("#6272A4"),command:c.hex("#50FA7B"),option:c.hex("#8BE9FD"),argument:c.hex("#FF79C6"),placeholder:c.hex("#F1FA8C"),punctuation:c.hex("#6272A4")}),solarizedDark:new HelpMessageStyle({title:c.bold.hex("#268BD2"),description:c.hex("#93A1A1"),default:c.italic.hex("#586E75"),optional:c.italic.hex("#586E75"),exampleTitle:c.hex("#B58900"),example:c.hex("#586E75"),command:c.hex("#2AA198"),option:c.hex("#268BD2"),argument:c.hex("#859900"),placeholder:c.hex("#CB4B16"),punctuation:c.hex("#657B83")}),nord:new HelpMessageStyle({title:c.bold.hex("#81A1C1"),description:c.hex("#D8DEE9"),default:c.italic.hex("#4C566A"),optional:c.italic.hex("#4C566A"),exampleTitle:c.hex("#EBCB8B"),example:c.hex("#4C566A"),command:c.hex("#A3BE8C"),option:c.hex("#88C0D0"),argument:c.hex("#BF616A"),placeholder:c.hex("#D08770"),punctuation:c.hex("#4C566A")}),html:new HelpMessageStyle({title:(...e)=>`<span style="color: #89dceb; font-weight: bold;">${escapeHTML(e.join(" "))}</span>`,description:(...e)=>`<span style="color: #cdd6e8;">${escapeHTML(e.join(" "))}</span>`,default:(...e)=>`<span style="color: #6c7086; font-style: italic;">${escapeHTML(e.join(" "))}</span>`,optional:(...e)=>`<span style="color: #6c7086; font-style: italic;">${escapeHTML(e.join(" "))}</span>`,exampleTitle:(...e)=>`<span style="color: #f9e2af;">${escapeHTML(e.join(" "))}</span>`,example:(...e)=>`<span style="color: #6c7086;">${escapeHTML(e.join(" "))}</span>`,command:(...e)=>`<span style="color: #f9e2af;">${escapeHTML(e.join(" "))}</span>`,option:(...e)=>`<span style="color: #17b85d;">${escapeHTML(e.join(" "))}</span>`,argument:(...e)=>`<span style="color: #00ff00;">${escapeHTML(e.join(" "))}</span>`,placeholder:(...e)=>`<span style="color: #db9518;">${escapeHTML(e.join(" "))}</span>`,punctuation:(...e)=>`<span style="color: #6c7086;">${escapeHTML(e.join(" "))}</span>`}),gruvboxDark:new HelpMessageStyle({title:c.bold.hex("#FABD2F"),description:c.hex("#EBDBB2"),default:c.italic.hex("#928374"),optional:c.italic.hex("#928374"),exampleTitle:c.hex("#FE8019"),example:c.hex("#928374"),command:c.hex("#B8BB26"),option:c.hex("#83A598"),argument:c.hex("#D3869B"),placeholder:c.hex("#FB4934"),punctuation:c.hex("#928374")}),monokai:new HelpMessageStyle({title:c.bold.hex("#AE81FF"),description:c.hex("#F8F8F2"),default:c.italic.hex("#75715E"),optional:c.italic.hex("#75715E"),exampleTitle:c.hex("#FD971F"),example:c.hex("#75715E"),command:c.hex("#A6E22E"),option:c.hex("#66D9EF"),argument:c.hex("#F92672"),placeholder:c.hex("#E6DB74"),punctuation:c.hex("#75715E")}),oneDark:new HelpMessageStyle({title:c.bold.hex("#61AFEF"),description:c.hex("#ABB2BF"),default:c.italic.hex("#5C6370"),optional:c.italic.hex("#5C6370"),exampleTitle:c.hex("#E5C07B"),example:c.hex("#5C6370"),command:c.hex("#98C379"),option:c.hex("#56B6C2"),argument:c.hex("#E06C75"),placeholder:c.hex("#C678DD"),punctuation:c.hex("#5C6370")}),catppuccin:new HelpMessageStyle({title:c.bold.hex("#89B4FA"),description:c.hex("#CDD6F4"),default:c.italic.hex("#6C7086"),optional:c.italic.hex("#6C7086"),exampleTitle:c.hex("#F9E2AF"),example:c.hex("#6C7086"),command:c.hex("#A6E3A1"),option:c.hex("#94E2D5"),argument:c.hex("#F38BA8"),placeholder:c.hex("#FAB387"),punctuation:c.hex("#585B70")}),noColors:new HelpMessageStyle({})});function escapeHTML(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}export{HelpMessageStyle,helpMessageStyles};
2
+ //# sourceMappingURL=styles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["c","_HelpMessageStyle","constructor","style","baseStyle","__publicField","this","noColor","Object","assign","text","join","HelpMessageStyle","helpMessageStyles","freeze","default","title","bold","blue","description","white","dim","italic","optional","exampleTitle","yellow","example","command","option","cyan","argument","green","placeholder","hex","punctuation","dracula","solarizedDark","nord","html","string","escapeHTML","gruvboxDark","monokai","oneDark","catppuccin","noColors","replace"],"sources":["../../../src/help-message/styles.ts"],"sourcesContent":["import c from \"chalk\";\n\nimport type { HelpMessageStyleImpl } from \"../types/help-message-types.ts\";\n\nexport class HelpMessageStyle implements HelpMessageStyleImpl {\n static noColor = (...text: unknown[]) => text.join(\" \");\n\n title = HelpMessageStyle.noColor;\n description = HelpMessageStyle.noColor;\n default = HelpMessageStyle.noColor;\n optional = HelpMessageStyle.noColor;\n exampleTitle = HelpMessageStyle.noColor;\n example = HelpMessageStyle.noColor;\n command = HelpMessageStyle.noColor;\n option = HelpMessageStyle.noColor;\n argument = HelpMessageStyle.noColor;\n placeholder = HelpMessageStyle.noColor;\n punctuation = HelpMessageStyle.noColor;\n\n constructor(style: Partial<HelpMessageStyleImpl>, baseStyle?: HelpMessageStyleImpl) {\n if (baseStyle) {\n Object.assign(this, baseStyle);\n }\n\n Object.assign(this, style);\n }\n}\n\nexport const helpMessageStyles = Object.freeze({\n default: new HelpMessageStyle({\n title: c.bold.blue,\n description: c.white,\n default: c.dim.italic,\n optional: c.dim.italic,\n exampleTitle: c.yellow,\n example: c.dim,\n command: c.yellow,\n option: c.cyan,\n argument: c.green,\n placeholder: c.hex(\"#FF9800\"),\n punctuation: c.white.dim,\n }),\n\n dracula: new HelpMessageStyle({\n title: c.bold.hex(\"#BD93F9\"),\n description: c.hex(\"#F8F8F2\"),\n default: c.italic.hex(\"#6272A4\"),\n optional: c.italic.hex(\"#6272A4\"),\n exampleTitle: c.hex(\"#FFB86C\"),\n example: c.hex(\"#6272A4\"),\n command: c.hex(\"#50FA7B\"),\n option: c.hex(\"#8BE9FD\"),\n argument: c.hex(\"#FF79C6\"),\n placeholder: c.hex(\"#F1FA8C\"),\n punctuation: c.hex(\"#6272A4\"),\n }),\n\n solarizedDark: new HelpMessageStyle({\n title: c.bold.hex(\"#268BD2\"),\n description: c.hex(\"#93A1A1\"),\n default: c.italic.hex(\"#586E75\"),\n optional: c.italic.hex(\"#586E75\"),\n exampleTitle: c.hex(\"#B58900\"),\n example: c.hex(\"#586E75\"),\n command: c.hex(\"#2AA198\"),\n option: c.hex(\"#268BD2\"),\n argument: c.hex(\"#859900\"),\n placeholder: c.hex(\"#CB4B16\"),\n punctuation: c.hex(\"#657B83\"),\n }),\n\n nord: new HelpMessageStyle({\n title: c.bold.hex(\"#81A1C1\"),\n description: c.hex(\"#D8DEE9\"),\n default: c.italic.hex(\"#4C566A\"),\n optional: c.italic.hex(\"#4C566A\"),\n exampleTitle: c.hex(\"#EBCB8B\"),\n example: c.hex(\"#4C566A\"),\n command: c.hex(\"#A3BE8C\"),\n option: c.hex(\"#88C0D0\"),\n argument: c.hex(\"#BF616A\"),\n placeholder: c.hex(\"#D08770\"),\n punctuation: c.hex(\"#4C566A\"),\n }),\n\n /**\n * - Wrap the output in a <pre> element to preserve whitespace.\n * - If using `descriptionMarkdown`, set `markdownRenderer` to `html` instead of `terminal`.\n */\n html: new HelpMessageStyle({\n title: (...string) => `<span style=\"color: #89dceb; font-weight: bold;\">${escapeHTML(string.join(\" \"))}</span>`,\n description: (...string) => `<span style=\"color: #cdd6e8;\">${escapeHTML(string.join(\" \"))}</span>`,\n default: (...string) => `<span style=\"color: #6c7086; font-style: italic;\">${escapeHTML(string.join(\" \"))}</span>`,\n optional: (...string) => `<span style=\"color: #6c7086; font-style: italic;\">${escapeHTML(string.join(\" \"))}</span>`,\n exampleTitle: (...string) => `<span style=\"color: #f9e2af;\">${escapeHTML(string.join(\" \"))}</span>`,\n example: (...string) => `<span style=\"color: #6c7086;\">${escapeHTML(string.join(\" \"))}</span>`,\n command: (...string) => `<span style=\"color: #f9e2af;\">${escapeHTML(string.join(\" \"))}</span>`,\n option: (...string) => `<span style=\"color: #17b85d;\">${escapeHTML(string.join(\" \"))}</span>`,\n argument: (...string) => `<span style=\"color: #00ff00;\">${escapeHTML(string.join(\" \"))}</span>`,\n placeholder: (...string) => `<span style=\"color: #db9518;\">${escapeHTML(string.join(\" \"))}</span>`,\n punctuation: (...string) => `<span style=\"color: #6c7086;\">${escapeHTML(string.join(\" \"))}</span>`,\n }),\n\n gruvboxDark: new HelpMessageStyle({\n title: c.bold.hex(\"#FABD2F\"),\n description: c.hex(\"#EBDBB2\"),\n default: c.italic.hex(\"#928374\"),\n optional: c.italic.hex(\"#928374\"),\n exampleTitle: c.hex(\"#FE8019\"),\n example: c.hex(\"#928374\"),\n command: c.hex(\"#B8BB26\"),\n option: c.hex(\"#83A598\"),\n argument: c.hex(\"#D3869B\"),\n placeholder: c.hex(\"#FB4934\"),\n punctuation: c.hex(\"#928374\"),\n }),\n\n monokai: new HelpMessageStyle({\n title: c.bold.hex(\"#AE81FF\"),\n description: c.hex(\"#F8F8F2\"),\n default: c.italic.hex(\"#75715E\"),\n optional: c.italic.hex(\"#75715E\"),\n exampleTitle: c.hex(\"#FD971F\"),\n example: c.hex(\"#75715E\"),\n command: c.hex(\"#A6E22E\"),\n option: c.hex(\"#66D9EF\"),\n argument: c.hex(\"#F92672\"),\n placeholder: c.hex(\"#E6DB74\"),\n punctuation: c.hex(\"#75715E\"),\n }),\n\n oneDark: new HelpMessageStyle({\n title: c.bold.hex(\"#61AFEF\"),\n description: c.hex(\"#ABB2BF\"),\n default: c.italic.hex(\"#5C6370\"),\n optional: c.italic.hex(\"#5C6370\"),\n exampleTitle: c.hex(\"#E5C07B\"),\n example: c.hex(\"#5C6370\"),\n command: c.hex(\"#98C379\"),\n option: c.hex(\"#56B6C2\"),\n argument: c.hex(\"#E06C75\"),\n placeholder: c.hex(\"#C678DD\"),\n punctuation: c.hex(\"#5C6370\"),\n }),\n\n catppuccin: new HelpMessageStyle({\n title: c.bold.hex(\"#89B4FA\"),\n description: c.hex(\"#CDD6F4\"),\n default: c.italic.hex(\"#6C7086\"),\n optional: c.italic.hex(\"#6C7086\"),\n exampleTitle: c.hex(\"#F9E2AF\"),\n example: c.hex(\"#6C7086\"),\n command: c.hex(\"#A6E3A1\"),\n option: c.hex(\"#94E2D5\"),\n argument: c.hex(\"#F38BA8\"),\n placeholder: c.hex(\"#FAB387\"),\n punctuation: c.hex(\"#585B70\"),\n }),\n\n noColors: new HelpMessageStyle({}),\n});\n\nfunction escapeHTML(string: string) {\n return string.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import c from"chalk";import{Marked,marked}from"marked";var markdownStyle={bold:c.bold,italic:c.italic,boldItalic:c.bold.italic,code:(...e)=>c.bgHex("#333333").whiteBright(` ${e.join(" ")} `),strikethrough:c.strikethrough,link:c.underline,listBullet:c.whiteBright,hr:c.dim,blockquote:(...e)=>c.dim.bold("┃ ")+c.dim(e.join("").replace(/\s\s\n/g," \n"+c.bold("┃ ")))};function styleCode(e){const t=e.split("\n"),r=Math.max(...t.map(e=>e.length)),n="┌"+"─".repeat(r+2)+"┐",a="└"+"─".repeat(r+2)+"┘",i=t.map(e=>c.dim("│ ")+c.dim(e).padEnd(r)+c.dim(" │")).join("\n");return[c.dim(n),i,c.dim(a)].join("\n")}var bullets=["•","◦","▪"],terminalRenderer={list(e){let t=0,r=e;for(;r.parent;)t++,r=r.parent;const n=e.ordered&&e.start?e.start:void 0;return"\n"+e.items.map(r=>this.listitem(Object.assign(r,{depth:t,parent:e,start:n}))).join("\n")},listitem(e){let t="";const r=e;for(const n of e.tokens)"list"===n.type&&(t+=this.parser.parse([Object.assign(n,{parent:r.parent})])),"tokens"in n&&Array.isArray(n.tokens)&&(t+=this.parser.parseInline(n.tokens));let n=" ".repeat(2*r.depth);if(r.task)return n+=r.checked?"☑ ":"☐ ",markdownStyle.listBullet(n)+t;if(void 0!==r.start){const e=r.parent.items.indexOf(r);return n+=r.start+e+". ",markdownStyle.listBullet(n)+t}return n+=bullets[r.depth%bullets.length]+" ",markdownStyle.listBullet(n)+t},link:e=>markdownStyle.link(e.text+" <"+e.href+">"),checkbox:({checked:e})=>e.toString(),code:e=>styleCode(e.text),codespan:({text:e})=>markdownStyle.code(e),def:({raw:e})=>e,del:({text:e})=>markdownStyle.strikethrough(e),paragraph({tokens:e}){return this.parser.parseInline(e)},blockquote:({text:e})=>markdownStyle.blockquote(e),strong({tokens:e}){return markdownStyle.bold(this.parser.parseInline(e))},em({tokens:e}){return markdownStyle.italic(this.parser.parseInline(e))},heading:({text:e})=>markdownStyle.bold(e)+"\n",text:e=>e.raw,space:e=>e.raw.replace(/\n+/g,"\n"),hr:()=>markdownStyle.hr("─".repeat(80)),br:()=>"\n"},terminalMarked=new Marked;function terminalMarkdown(e,t="terminal",r=(...e)=>e.join(" ")){if(!e)return"";if("terminal"===t)return r(terminalMarked.parse(e));return`<span class="_markdown">${marked.parse(e).trim()}</span>`}terminalMarked.use({renderer:terminalRenderer});export{terminalMarkdown};
2
+ //# sourceMappingURL=terminal-markdown.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["c","Marked","marked","markdownStyle","bold","italic","boldItalic","code","string","bgHex","whiteBright","join","strikethrough","link","underline","listBullet","hr","dim","blockquote","replace","styleCode","text","lines","split","width","Math","max","map","l","length","top","repeat","bottom","body","padEnd","bullets","terminalRenderer","list","token","depth","current","parent","start","ordered","items","item","this","listitem","Object","assign","itemCast","tokens","type","parser","parse","Array","isArray","parseInline","prefix","task","checked","findItemIndex","indexOf","href","checkbox","toString","codespan","def","raw","del","paragraph","strong","em","heading","space","br","terminalMarked","terminalMarkdown","renderer","ansiTextColor","trim","use"],"sources":["../../../src/help-message/terminal-markdown.ts"],"sourcesContent":["import c from \"chalk\";\nimport { Marked, type RendererObject, type Tokens, marked } from \"marked\";\n\nimport type { ColorFunctionType } from \"../types/help-message-types.ts\";\n\nconst markdownStyle: Record<string, ColorFunctionType> = {\n bold: c.bold,\n italic: c.italic,\n boldItalic: c.bold.italic,\n code: (...string) => c.bgHex(\"#333333\").whiteBright(` ${string.join(\" \")} `),\n strikethrough: c.strikethrough,\n link: c.underline,\n listBullet: c.whiteBright,\n hr: c.dim,\n blockquote: (...string) => c.dim.bold(\"┃ \") + c.dim(string.join(\"\").replace(/\\s\\s\\n/g, \" \\n\" + c.bold(\"┃ \"))),\n};\n\nfunction styleCode(text: string) {\n const lines = text.split(\"\\n\");\n const width = Math.max(...lines.map(l => l.length));\n const top = \"┌\" + \"─\".repeat(width + 2) + \"┐\";\n const bottom = \"└\" + \"─\".repeat(width + 2) + \"┘\";\n\n const body = lines.map(l => c.dim(\"│ \") + c.dim(l).padEnd(width) + c.dim(\" │\")).join(\"\\n\");\n\n return [c.dim(top), body, c.dim(bottom)].join(\"\\n\");\n}\n\nconst bullets = [\"•\", \"◦\", \"▪\"];\n\nconst terminalRenderer: RendererObject<string, string> = {\n list(token) {\n // figure out depth\n let depth = 0;\n let current = token as Tokens.List & { parent: Tokens.List };\n while (current.parent) {\n depth++;\n current = current.parent as Tokens.List & { parent: Tokens.List };\n }\n\n // for ordered lists\n const start = token.ordered && token.start ? token.start : undefined;\n\n const items = token.items.map(item => this.listitem(Object.assign(item, { depth, parent: token, start })));\n return \"\\n\" + items.join(\"\\n\");\n },\n listitem(item) {\n let string = \"\";\n\n const itemCast = item as Tokens.ListItem & { parent: Tokens.List; depth: number; start?: number };\n\n for (const token of item.tokens) {\n if (token.type === \"list\") {\n string += this.parser.parse([Object.assign(token, { parent: itemCast.parent })]);\n }\n\n if (\"tokens\" in token && Array.isArray(token.tokens)) {\n string += this.parser.parseInline(token.tokens);\n }\n }\n\n let prefix = \" \".repeat(itemCast.depth * 2);\n\n // Task\n if (itemCast.task) {\n prefix += itemCast.checked ? \"☑ \" : \"☐ \";\n return markdownStyle.listBullet(prefix) + string;\n }\n\n // Ordered\n if (itemCast.start !== undefined) {\n const findItemIndex = itemCast.parent.items.indexOf(itemCast);\n prefix += itemCast.start + findItemIndex + \". \";\n return markdownStyle.listBullet(prefix) + string;\n }\n\n // Unordered\n prefix += bullets[itemCast.depth % bullets.length] + \" \";\n return markdownStyle.listBullet(prefix) + string;\n },\n link(token) {\n return markdownStyle.link(token.text + \" \" + \"<\" + token.href + \">\");\n },\n checkbox({ checked }) {\n return checked.toString();\n },\n code(token) {\n return styleCode(token.text);\n },\n codespan({ text }) {\n return markdownStyle.code(text);\n },\n def({ raw }) {\n return raw;\n },\n del({ text }) {\n return markdownStyle.strikethrough(text);\n },\n paragraph({ tokens }) {\n return this.parser.parseInline(tokens);\n },\n blockquote({ text }) {\n return markdownStyle.blockquote(text);\n },\n strong({ tokens }) {\n return markdownStyle.bold(this.parser.parseInline(tokens));\n },\n em({ tokens }) {\n return markdownStyle.italic(this.parser.parseInline(tokens));\n },\n heading({ text }) {\n return markdownStyle.bold(text) + \"\\n\";\n },\n text(token) {\n return token.raw;\n },\n space(token) {\n return token.raw.replace(/\\n+/g, \"\\n\");\n },\n hr() {\n return markdownStyle.hr(\"─\".repeat(80));\n },\n br() {\n return \"\\n\";\n },\n};\n\nconst terminalMarked = new Marked();\nterminalMarked.use({ renderer: terminalRenderer });\n\nexport function terminalMarkdown(\n text: string,\n renderer: \"terminal\" | \"html\" = \"terminal\",\n ansiTextColor: ColorFunctionType = (...string) => string.join(\" \"),\n): string {\n if (!text) {\n return \"\";\n }\n\n if (renderer === \"terminal\") {\n return ansiTextColor(terminalMarked.parse(text) as string);\n }\n\n const htmlString = marked.parse(text) as string;\n\n return `<span class=\"_markdown\">${htmlString.trim()}</span>`;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{generateCliHelpMessage}from"./help-message/generate-for-cli.mjs";import{generateSubcommandHelpMessage}from"./help-message/generate-for-subcommand.mjs";import{printCliHelp,printSubcommandHelp}from"./help-message/print-help.mjs";import{HelpMessageStyle,helpMessageStyles}from"./help-message/styles.mjs";import{generateBashAutocompleteScript}from"./autocomplete-scripts/bash-autocomplete-script.mjs";import{generatePowerShellAutocompleteScript}from"./autocomplete-scripts/powershell-autocomplete-script.mjs";import{generateZshAutocompleteScript}from"./autocomplete-scripts/zsh-autocomplete-script.mjs";import{generateMarkdown}from"./markdown/generate-markdown.mjs";import{getArgumentsMetadata}from"./metadata/arguments-metadata.mjs";import{getCliMetadata}from"./metadata/cli-metadata.mjs";import{getOptionsMetadata}from"./metadata/options-metadata.mjs";import{getSubcommandsMetadata}from"./metadata/subcommands-metadata.mjs";import{defineArguments}from"./definitions/define-arguments.mjs";import{defineCLI}from"./definitions/define-cli.mjs";import{defineOptions}from"./definitions/define-options.mjs";import{defineSubcommand}from"./definitions/define-subcommand.mjs";import{coerce}from"./coerce/coerce-methods.mjs";export{HelpMessageStyle,coerce,defineArguments,defineCLI,defineOptions,defineSubcommand,generateBashAutocompleteScript,generateCliHelpMessage,generateMarkdown,generatePowerShellAutocompleteScript,generateSubcommandHelpMessage,generateZshAutocompleteScript,getArgumentsMetadata,getCliMetadata,getOptionsMetadata,getSubcommandsMetadata,helpMessageStyles,printCliHelp,printSubcommandHelp};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateCliHelpMessage","generateSubcommandHelpMessage","printCliHelp","printSubcommandHelp","HelpMessageStyle","helpMessageStyles","generateBashAutocompleteScript","generatePowerShellAutocompleteScript","generateZshAutocompleteScript","generateMarkdown","getArgumentsMetadata","getCliMetadata","getOptionsMetadata","getSubcommandsMetadata","defineArguments","defineCLI","defineOptions","defineSubcommand","coerce"],"sources":["../../src/index.ts"],"sourcesContent":["export { generateCliHelpMessage } from \"./help-message/generate-for-cli.ts\";\nexport { generateSubcommandHelpMessage } from \"./help-message/generate-for-subcommand.ts\";\nexport { printCliHelp, printSubcommandHelp } from \"./help-message/print-help.ts\";\nexport { HelpMessageStyle, helpMessageStyles } from \"./help-message/styles.ts\";\n\nexport { generateBashAutocompleteScript } from \"./autocomplete-scripts/bash-autocomplete-script.ts\";\nexport { generatePowerShellAutocompleteScript } from \"./autocomplete-scripts/powershell-autocomplete-script.ts\";\nexport { generateZshAutocompleteScript } from \"./autocomplete-scripts/zsh-autocomplete-script.ts\";\nexport { generateMarkdown } from \"./markdown/generate-markdown.ts\";\n\nexport { getArgumentsMetadata } from \"./metadata/arguments-metadata.ts\";\nexport { getCliMetadata } from \"./metadata/cli-metadata.ts\";\nexport { getOptionsMetadata } from \"./metadata/options-metadata.ts\";\nexport { getSubcommandsMetadata } from \"./metadata/subcommands-metadata.ts\";\n\nexport { defineArguments } from \"./definitions/define-arguments.ts\";\nexport { defineCLI } from \"./definitions/define-cli.ts\";\nexport { defineOptions } from \"./definitions/define-options.ts\";\nexport { defineSubcommand } from \"./definitions/define-subcommand.ts\";\n\nexport { coerce } from \"./coerce/coerce-methods.ts\";\n\nexport type * from \"./types/context-types.ts\";\nexport type * from \"./types/definitions-types.ts\";\nexport type * from \"./types/help-message-types.ts\";\nexport type * from \"./types/io-types.ts\";\nexport type * from \"./types/metadata-types.ts\";\nexport type * from \"./types/types.ts\";\n"],"mappings":"OAASA,2BAA8B,6CAC9BC,kCAAqC,oDACrCC,aAAcC,wBAA2B,uCACzCC,iBAAkBC,sBAAyB,mCAE3CC,mCAAsC,6DACtCC,yCAA4C,mEAC5CC,kCAAqC,4DACrCC,qBAAwB,0CAExBC,yBAA4B,2CAC5BC,mBAAsB,qCACtBC,uBAA0B,yCAC1BC,2BAA8B,6CAE9BC,oBAAuB,4CACvBC,cAAiB,sCACjBC,kBAAqB,0CACrBC,qBAAwB,6CAExBC,WAAc,qC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{getCliMetadata}from"../metadata/cli-metadata.mjs";import{escapeHtmlTags,stripAnsi}from"../utilities.mjs";function generateMarkdown(n){const e=getCliMetadata(n);let r="\x3c!-- Auto-generated by zod-args-parser --\x3e\n\n";return r+=`# ${e.name}\n\n`,e.description&&!e.descriptionMarkdown&&(r+=`${forceLineBreak(e.description)}\n`),e.descriptionMarkdown&&(r+=`${forceLineBreak(e.descriptionMarkdown)}\n`),e.example&&(r+=renderExamples(e.example)),e.options.length>0&&(r+="\n## Options:\n\n",r+=renderOptions(e.options,3)),e.arguments.length>0&&(r+="\n## Arguments:\n\n",r+=renderArguments(e.arguments,3)),e.subcommands.length>0&&(r+="\n## Subcommands:\n\n",r+=renderSubcommands(e.subcommands)),r=stripAnsi(r),r=escapeHtmlTags(r),r}function renderExamples(n){let e="\n**Example:**\n";return e+="\n",e+="```bash\n",e+=n,e+="\n```\n",e}function renderOptions(n=[],e){let r="";for(let t=0;t<n.length;t++){const o=n[t];if(o.hidden)continue;const a=[o.nameAsArg].concat(o.aliasesAsArgs).join(", "),i=o.placeholder&&` ${o.placeholder}`;r+=`${"#".repeat(e)} \`${a+i}\``,o.optional&&(r+=" _optional_"),r+="\n\n",o.description&&!o.descriptionMarkdown&&(r+=`${forceLineBreak(o.description)}\n`),o.descriptionMarkdown&&(r+=`${forceLineBreak(o.descriptionMarkdown)}\n`),void 0!==o.defaultValue&&(r+=`\n**default:** \`${o.defaultValueAsString}\`\n`),o.example&&(r+=renderExamples(o.example)),t<n.length-1&&(r+="\n")}return r}function renderArguments(n=[],e){let r="";for(let t=0;t<n.length;t++){const o=n[t];o.hidden||(r+=`${"#".repeat(e)} \`${o.name}\``,o.optional&&(r+=" _optional_"),r+="\n\n",o.description&&!o.descriptionMarkdown&&(r+=`${forceLineBreak(o.description)}\n`),o.descriptionMarkdown&&(r+=`${forceLineBreak(o.descriptionMarkdown)}\n`),void 0!==o.defaultValue&&(r+=`\n**default:** \`${o.defaultValueAsString}\`\n`),o.example&&(r+=renderExamples(o.example)),t<n.length-1&&(r+="\n"))}return r}function renderSubcommands(n){let e="";for(let r=0;r<n.length;r++){const t=n[r];if(t.hidden)continue;e+=`### ${[t.name].concat(t.aliases).join(", ")+(t.placeholder&&` ${t.placeholder}`)}\n\n`,t.description&&!t.descriptionMarkdown&&(e+=`${forceLineBreak(t.description)}\n`),t.descriptionMarkdown&&(e+=`${forceLineBreak(t.descriptionMarkdown)}\n`),t.example&&(e+=renderExamples(t.example)),t.options.length>0&&(e+="\n#### Options:\n\n",e+=renderOptions(t.options,4)),t.arguments.length>0&&(e+="\n#### Arguments:\n\n",e+=renderArguments(t.arguments,4)),r<n.length-1&&(e+="\n---\n\n")}return e}function forceLineBreak(n){return n.replace(/(\n+)/g," $1")}export{generateMarkdown};
2
+ //# sourceMappingURL=generate-markdown.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getCliMetadata","escapeHtmlTags","stripAnsi","generateMarkdown","cliDefinition","metadata","md","name","description","descriptionMarkdown","forceLineBreak","example","renderExamples","options","length","renderOptions","arguments","renderArguments","subcommands","renderSubcommands","examples","outString","optionsMetadata","h","index","hidden","aliases","nameAsArg","concat","aliasesAsArgs","join","placeholder","repeat","optional","defaultValue","defaultValueAsString","argumentsMetadata","subcommandsMetadata","string","replace"],"sources":["../../../src/markdown/generate-markdown.ts"],"sourcesContent":["import { getCliMetadata } from \"../metadata/cli-metadata.ts\";\nimport { escapeHtmlTags, stripAnsi } from \"../utilities.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\nimport type { ArgumentMetadata, OptionMetadata, SubcommandMetadata } from \"../types/metadata-types.ts\";\n\nexport function generateMarkdown(cliDefinition: Cli): string {\n const metadata = getCliMetadata(cliDefinition);\n\n let md = \"<!-- Auto-generated by zod-args-parser -->\\n\\n\";\n\n // Title\n md += `# ${metadata.name}\\n\\n`;\n\n // Description\n if (metadata.description && !metadata.descriptionMarkdown) {\n md += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n // Description Markdown\n if (metadata.descriptionMarkdown) {\n md += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n // Examples\n if (metadata.example) {\n md += renderExamples(metadata.example);\n }\n\n // Options\n if (metadata.options.length > 0) {\n md += \"\\n## Options:\\n\\n\";\n md += renderOptions(metadata.options, 3);\n }\n\n // Arguments\n if (metadata.arguments.length > 0) {\n md += \"\\n## Arguments:\\n\\n\";\n md += renderArguments(metadata.arguments, 3);\n }\n\n // Subcommands\n if (metadata.subcommands.length > 0) {\n md += \"\\n## Subcommands:\\n\\n\";\n md += renderSubcommands(metadata.subcommands);\n }\n\n md = stripAnsi(md);\n md = escapeHtmlTags(md);\n\n return md;\n}\n\nfunction renderExamples(examples: string) {\n let outString = \"\\n**Example:**\\n\";\n\n const lang = \"bash\";\n\n outString += \"\\n\";\n outString += \"```\" + lang + \"\\n\";\n outString += examples;\n outString += \"\\n```\\n\";\n\n return outString;\n}\n\nfunction renderOptions(optionsMetadata: OptionMetadata[] = [], h: number) {\n let outString = \"\";\n\n for (let index = 0; index < optionsMetadata.length; index++) {\n const metadata = optionsMetadata[index];\n if (metadata.hidden) continue;\n\n const aliases = [metadata.nameAsArg].concat(metadata.aliasesAsArgs).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outString += `${\"#\".repeat(h)} \\`${aliases + placeholder}\\``;\n\n if (metadata.optional) {\n outString += \" _optional_\";\n }\n\n outString += \"\\n\\n\";\n\n if (metadata.description && !metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n if (metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n if (metadata.defaultValue !== undefined) {\n outString += `\\n**default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (index < optionsMetadata.length - 1) {\n outString += \"\\n\";\n }\n }\n\n return outString;\n}\n\nfunction renderArguments(argumentsMetadata: ArgumentMetadata[] = [], h: number) {\n let outString = \"\";\n\n for (let index = 0; index < argumentsMetadata.length; index++) {\n const metadata = argumentsMetadata[index];\n if (metadata.hidden) continue;\n\n outString += `${\"#\".repeat(h)} \\`${metadata.name}\\``;\n\n if (metadata.optional) {\n outString += \" _optional_\";\n }\n\n outString += \"\\n\\n\";\n\n if (metadata.description && !metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n if (metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n if (metadata.defaultValue !== undefined) {\n outString += `\\n**default:** \\`${metadata.defaultValueAsString}\\`\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (index < argumentsMetadata.length - 1) {\n outString += \"\\n\";\n }\n }\n\n return outString;\n}\n\nfunction renderSubcommands(subcommandsMetadata: SubcommandMetadata[]) {\n let outString = \"\";\n\n for (let index = 0; index < subcommandsMetadata.length; index++) {\n const metadata = subcommandsMetadata[index];\n if (metadata.hidden) continue;\n\n const aliases = [metadata.name].concat(metadata.aliases).join(\", \");\n\n const placeholder = metadata.placeholder && ` ${metadata.placeholder}`;\n\n outString += `### ${aliases + placeholder}\\n\\n`;\n\n if (metadata.description && !metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.description)}\\n`;\n }\n\n if (metadata.descriptionMarkdown) {\n outString += `${forceLineBreak(metadata.descriptionMarkdown)}\\n`;\n }\n\n if (metadata.example) {\n outString += renderExamples(metadata.example);\n }\n\n if (metadata.options.length > 0) {\n outString += \"\\n#### Options:\\n\\n\";\n outString += renderOptions(metadata.options, 4);\n }\n\n if (metadata.arguments.length > 0) {\n outString += \"\\n#### Arguments:\\n\\n\";\n outString += renderArguments(metadata.arguments, 4);\n }\n\n if (index < subcommandsMetadata.length - 1) {\n outString += \"\\n---\\n\\n\";\n }\n }\n\n return outString;\n}\n\n/** Inserts two trailing spaces before newline. In Markdown, a newline that ends with two spaces forces a line break. */\nfunction forceLineBreak(string: string): string {\n return string.replace(/(\\n+)/g, \" $1\");\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{defaultValueAndIsOptional,stringifyValue}from"../utilities.mjs";function getArgumentsMetadata(e){const t=[];for(const[a,n]of Object.entries(e)){const e=n.meta??{},{optional:i,defaultValue:o}=n._preparedType??defaultValueAndIsOptional(n.schema);t.push({name:e.name??a,description:e.description??"",descriptionMarkdown:e.descriptionMarkdown??"",defaultValue:o,defaultValueAsString:e.default??stringifyValue(o)??"",optional:e.optional??i,example:e.example??"",schema:n.schema,hidden:e.hidden??!1})}return t}export{getArgumentsMetadata};
2
+ //# sourceMappingURL=arguments-metadata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["defaultValueAndIsOptional","stringifyValue","getArgumentsMetadata","argumentsDefinition","outputMetadata","name","argument","Object","entries","meta","optional","defaultValue","_preparedType","schema","push","description","descriptionMarkdown","defaultValueAsString","default","example","hidden"],"sources":["../../../src/metadata/arguments-metadata.ts"],"sourcesContent":["import { defaultValueAndIsOptional, stringifyValue } from \"../utilities.ts\";\n\nimport type { Argument } from \"../types/definitions-types.ts\";\nimport type { ArgumentMetadata } from \"../types/metadata-types.ts\";\n\nexport function getArgumentsMetadata(argumentsDefinition: Record<string, Argument>): ArgumentMetadata[] {\n const outputMetadata: ArgumentMetadata[] = [];\n\n for (const [name, argument] of Object.entries(argumentsDefinition)) {\n const meta = argument.meta ?? {};\n\n const { optional, defaultValue } = argument._preparedType ?? defaultValueAndIsOptional(argument.schema);\n\n outputMetadata.push({\n name: meta.name ?? name,\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n defaultValue,\n defaultValueAsString: meta.default ?? stringifyValue(defaultValue) ?? \"\",\n optional: meta.optional ?? optional,\n example: meta.example ?? \"\",\n schema: argument.schema,\n hidden: meta.hidden ?? false,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"OAASA,0BAA2BC,mBAAsB,mBAKnD,SAASC,qBAAqBC,GACnC,MAAMC,EAAqC,GAE3C,UAAYC,EAAMC,KAAaC,OAAOC,QAAQL,GAAsB,CAClE,MAAMM,EAAOH,EAASG,MAAQ,CAAC,GAEzBC,SAAEA,EAAAC,aAAUA,GAAiBL,EAASM,eAAiBZ,0BAA0BM,EAASO,QAEhGT,EAAeU,KAAK,CAClBT,KAAMI,EAAKJ,MAAQA,EACnBU,YAAaN,EAAKM,aAAe,GACjCC,oBAAqBP,EAAKO,qBAAuB,GACjDL,eACAM,qBAAsBR,EAAKS,SAAWjB,eAAeU,IAAiB,GACtED,SAAUD,EAAKC,UAAYA,EAC3BS,QAASV,EAAKU,SAAW,GACzBN,OAAQP,EAASO,OACjBO,OAAQX,EAAKW,SAAU,GAE3B,CAEA,OAAOhB,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{getArgumentsMetadata}from"./arguments-metadata.mjs";import{getOptionsMetadata}from"./options-metadata.mjs";import{getSubcommandsMetadata}from"./subcommands-metadata.mjs";function getCliMetadata(t){const a=t.subcommands??[],e=t.meta??{};return{name:t.cliName,description:e.description??"",descriptionMarkdown:e.descriptionMarkdown??"",usage:e.usage??"",example:e.example??"",allowPositionals:t.allowPositionals??!1,options:t.options?getOptionsMetadata(t.options):[],arguments:t.arguments?getArgumentsMetadata(t.arguments):[],subcommands:a?getSubcommandsMetadata(a):[]}}export{getCliMetadata};
2
+ //# sourceMappingURL=cli-metadata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","getCliMetadata","cliDefinition","subcommands","meta","name","cliName","description","descriptionMarkdown","usage","example","allowPositionals","options","arguments"],"sources":["../../../src/metadata/cli-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./arguments-metadata.ts\";\nimport { getOptionsMetadata } from \"./options-metadata.ts\";\nimport { getSubcommandsMetadata } from \"./subcommands-metadata.ts\";\n\nimport type { Cli } from \"../types/definitions-types.ts\";\nimport type { CliMetadata } from \"../types/metadata-types.ts\";\n\nexport function getCliMetadata(cliDefinition: Cli): CliMetadata {\n const subcommands = cliDefinition.subcommands ?? [];\n\n const meta = cliDefinition.meta ?? {};\n\n const outputMetadata: CliMetadata = {\n name: cliDefinition.cliName,\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n usage: meta.usage ?? \"\",\n example: meta.example ?? \"\",\n allowPositionals: cliDefinition.allowPositionals ?? false,\n options: cliDefinition.options ? getOptionsMetadata(cliDefinition.options) : [],\n arguments: cliDefinition.arguments ? getArgumentsMetadata(cliDefinition.arguments) : [],\n subcommands: subcommands ? getSubcommandsMetadata(subcommands) : [],\n };\n\n return outputMetadata;\n}\n"],"mappings":"OAASA,yBAA4B,kCAC5BC,uBAA0B,gCAC1BC,2BAA8B,6BAKhC,SAASC,eAAeC,GAC7B,MAAMC,EAAcD,EAAcC,aAAe,GAE3CC,EAAOF,EAAcE,MAAQ,CAAC,EAcpC,MAZoC,CAClCC,KAAMH,EAAcI,QACpBC,YAAaH,EAAKG,aAAe,GACjCC,oBAAqBJ,EAAKI,qBAAuB,GACjDC,MAAOL,EAAKK,OAAS,GACrBC,QAASN,EAAKM,SAAW,GACzBC,iBAAkBT,EAAcS,mBAAoB,EACpDC,QAASV,EAAcU,QAAUb,mBAAmBG,EAAcU,SAAW,GAC7EC,UAAWX,EAAcW,UAAYf,qBAAqBI,EAAcW,WAAa,GACrFV,YAAaA,EAAcH,uBAAuBG,GAAe,GAIrE,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{transformOptionToArgument}from"../parse/parser-utilities.mjs";import{defaultValueAndIsOptional,stringifyValue}from"../utilities.mjs";function getOptionsMetadata(e){const t=[];if(!e)return t;for(const[a,i]of Object.entries(e)){const e=i.aliases??[],n=i.meta??{},{optional:o,defaultValue:r}=i._preparedType??defaultValueAndIsOptional(i.schema);t.push({name:a,nameAsArg:transformOptionToArgument(a),aliases:e,aliasesAsArgs:e.map(e=>transformOptionToArgument(e)),placeholder:n.placeholder??"",description:n.description??"",descriptionMarkdown:n.descriptionMarkdown??"",optional:n.optional??o,example:n.example??"",defaultValue:r,defaultValueAsString:n.default??stringifyValue(r)??"",schema:i.schema,hidden:n.hidden??!1})}return t}export{getOptionsMetadata};
2
+ //# sourceMappingURL=options-metadata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["transformOptionToArgument","defaultValueAndIsOptional","stringifyValue","getOptionsMetadata","optionsDefinition","outputMetadata","optionName","option","Object","entries","aliases","meta","optional","defaultValue","_preparedType","schema","push","name","nameAsArg","aliasesAsArgs","map","alias","placeholder","description","descriptionMarkdown","example","defaultValueAsString","default","hidden"],"sources":["../../../src/metadata/options-metadata.ts"],"sourcesContent":["import { transformOptionToArgument } from \"../parse/parser-utilities.ts\";\nimport { defaultValueAndIsOptional, stringifyValue } from \"../utilities.ts\";\n\nimport type { Option } from \"../types/definitions-types.ts\";\nimport type { OptionMetadata } from \"../types/metadata-types.ts\";\n\nexport function getOptionsMetadata(optionsDefinition: Record<string, Option>): OptionMetadata[] {\n const outputMetadata: OptionMetadata[] = [];\n\n if (!optionsDefinition) {\n return outputMetadata;\n }\n\n for (const [optionName, option] of Object.entries(optionsDefinition)) {\n const aliases = option.aliases ?? [];\n const meta = option.meta ?? {};\n\n const { optional, defaultValue } = option._preparedType ?? defaultValueAndIsOptional(option.schema);\n\n outputMetadata.push({\n name: optionName,\n nameAsArg: transformOptionToArgument(optionName),\n aliases,\n aliasesAsArgs: aliases.map(alias => transformOptionToArgument(alias)),\n placeholder: meta.placeholder ?? \"\",\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n optional: meta.optional ?? optional,\n example: meta.example ?? \"\",\n defaultValue,\n defaultValueAsString: meta.default ?? stringifyValue(defaultValue) ?? \"\",\n schema: option.schema,\n hidden: meta.hidden ?? false,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"OAASA,8BAAiC,uCACjCC,0BAA2BC,mBAAsB,mBAKnD,SAASC,mBAAmBC,GACjC,MAAMC,EAAmC,GAEzC,IAAKD,EACH,OAAOC,EAGT,UAAYC,EAAYC,KAAWC,OAAOC,QAAQL,GAAoB,CACpE,MAAMM,EAAUH,EAAOG,SAAW,GAC5BC,EAAOJ,EAAOI,MAAQ,CAAC,GAEvBC,SAAEA,EAAAC,aAAUA,GAAiBN,EAAOO,eAAiBb,0BAA0BM,EAAOQ,QAE5FV,EAAeW,KAAK,CAClBC,KAAMX,EACNY,UAAWlB,0BAA0BM,GACrCI,UACAS,cAAeT,EAAQU,IAAIC,GAASrB,0BAA0BqB,IAC9DC,YAAaX,EAAKW,aAAe,GACjCC,YAAaZ,EAAKY,aAAe,GACjCC,oBAAqBb,EAAKa,qBAAuB,GACjDZ,SAAUD,EAAKC,UAAYA,EAC3Ba,QAASd,EAAKc,SAAW,GACzBZ,eACAa,qBAAsBf,EAAKgB,SAAWzB,eAAeW,IAAiB,GACtEE,OAAQR,EAAOQ,OACfa,OAAQjB,EAAKiB,SAAU,GAE3B,CAEA,OAAOvB,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{getArgumentsMetadata}from"./arguments-metadata.mjs";import{getOptionsMetadata}from"./options-metadata.mjs";function getSubcommandsMetadata(t){const a=[];if(!t||0===t.length)return a;for(const e of t){const t=e.options?getOptionsMetadata(e.options):[],o=e.arguments?getArgumentsMetadata(e.arguments):[],n=e.meta??{};a.push({name:e.name,aliases:e.aliases??[],description:n.description??"",descriptionMarkdown:n.descriptionMarkdown??"",placeholder:n.placeholder??"",usage:n.usage??"",example:n.example??"",allowPositionals:e.allowPositionals??!1,options:t,arguments:o,hidden:n.hidden??!1})}return a}export{getSubcommandsMetadata};
2
+ //# sourceMappingURL=subcommands-metadata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getArgumentsMetadata","getOptionsMetadata","getSubcommandsMetadata","commandDefinition","outputMetadata","length","subcommand","optionsMetadata","options","argumentsMetadata","arguments","meta","push","name","aliases","description","descriptionMarkdown","placeholder","usage","example","allowPositionals","hidden"],"sources":["../../../src/metadata/subcommands-metadata.ts"],"sourcesContent":["import { getArgumentsMetadata } from \"./arguments-metadata.ts\";\nimport { getOptionsMetadata } from \"./options-metadata.ts\";\n\nimport type { Subcommand } from \"../types/definitions-types.ts\";\nimport type { SubcommandMetadata } from \"../types/metadata-types.ts\";\n\nexport function getSubcommandsMetadata(commandDefinition: readonly Subcommand[]): SubcommandMetadata[] {\n const outputMetadata: SubcommandMetadata[] = [];\n\n if (!commandDefinition || commandDefinition.length === 0) {\n return outputMetadata;\n }\n\n for (const subcommand of commandDefinition) {\n const optionsMetadata = subcommand.options ? getOptionsMetadata(subcommand.options) : [];\n const argumentsMetadata = subcommand.arguments ? getArgumentsMetadata(subcommand.arguments) : [];\n const meta = subcommand.meta ?? {};\n\n outputMetadata.push({\n name: subcommand.name,\n aliases: subcommand.aliases ?? [],\n description: meta.description ?? \"\",\n descriptionMarkdown: meta.descriptionMarkdown ?? \"\",\n placeholder: meta.placeholder ?? \"\",\n usage: meta.usage ?? \"\",\n example: meta.example ?? \"\",\n allowPositionals: subcommand.allowPositionals ?? false,\n options: optionsMetadata,\n arguments: argumentsMetadata,\n hidden: meta.hidden ?? false,\n });\n }\n\n return outputMetadata;\n}\n"],"mappings":"OAASA,yBAA4B,kCAC5BC,uBAA0B,yBAK5B,SAASC,uBAAuBC,GACrC,MAAMC,EAAuC,GAE7C,IAAKD,GAAkD,IAA7BA,EAAkBE,OAC1C,OAAOD,EAGT,UAAWE,KAAcH,EAAmB,CAC1C,MAAMI,EAAkBD,EAAWE,QAAUP,mBAAmBK,EAAWE,SAAW,GAChFC,EAAoBH,EAAWI,UAAYV,qBAAqBM,EAAWI,WAAa,GACxFC,EAAOL,EAAWK,MAAQ,CAAC,EAEjCP,EAAeQ,KAAK,CAClBC,KAAMP,EAAWO,KACjBC,QAASR,EAAWQ,SAAW,GAC/BC,YAAaJ,EAAKI,aAAe,GACjCC,oBAAqBL,EAAKK,qBAAuB,GACjDC,YAAaN,EAAKM,aAAe,GACjCC,MAAOP,EAAKO,OAAS,GACrBC,QAASR,EAAKQ,SAAW,GACzBC,iBAAkBd,EAAWc,mBAAoB,EACjDZ,QAASD,EACTG,UAAWD,EACXY,OAAQV,EAAKU,SAAU,GAE3B,CAEA,OAAOjB,CACT,Q","ignoreList":[]}