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,2 @@
1
+ import{stringToBoolean,stringToNumber}from"./string-to-primitive.js";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.js.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,2BAEzC,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.js.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.js";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.js.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,uBAExE,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.js";function defineArguments(e){return prepareDefinitionTypes(e),e}export{defineArguments};
2
+ //# sourceMappingURL=define-arguments.js.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,kBAIhC,SAASC,gBAA0DC,GAIxE,OADAF,uBAAuBE,GAChBA,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{generateCliHelpMessage}from"../help-message/generate-for-cli.js";import{generateSubcommandHelpMessage}from"../help-message/generate-for-subcommand.js";import{buildObjectContext}from"../parse/context/object-context-builder.js";import{safeParse,safeParseAsync}from"../parse/safe-parse.js";import{validate}from"../parse/validation/validate-context.js";import{prepareDefinitionTypes}from"../utilities.js";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.js.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,6CAC9BC,kCAAqC,oDACrCC,uBAA0B,oDAC1BC,UAAWC,mBAAsB,gCACjCC,aAAgB,iDAChBC,2BAA8B,kBAoChC,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.js";function defineOptions(e){return prepareDefinitionTypes(e),e}export{defineOptions};
2
+ //# sourceMappingURL=define-options.js.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,kBAIhC,SAASC,cAAgDC,GAM9D,OADAF,uBAAuBE,GAChBA,CACT,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{buildObjectContext}from"../parse/context/object-context-builder.js";import{validate}from"../parse/validation/validate-context.js";import{prepareDefinitionTypes}from"../utilities.js";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.js.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,oDAC1BC,aAAgB,iDAChBC,2BAA8B,kBAuBhC,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.js";import{findDuplicateStrings}from"../utilities.js";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.js.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.js";import{terminalMarkdown}from"./terminal-markdown.js";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.js.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,yBACpEC,qBAAwB,yBAK1B,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.js";import{terminalMarkdown}from"./terminal-markdown.js";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.js.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,yBACvDC,qBAAwB,yBAK1B,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.js";import{terminalMarkdown}from"./terminal-markdown.js";function formatHelpMessageCommands(n,e){if(0===n.length)return"";const{style:t,indentBeforeName:i,indentAfterName:o,indentBeforePlaceholder:r,newLineIndent:d,longest:s,commandsTitle:a,emptyLines:l,emptyLinesBeforeTitle:m,emptyLinesAfterTitle:c,markdownRenderer:p}=e;let f=ln(m)+indent(1)+t.title(a)+ln(1+c);const u=s+i+o+r+d;for(const e of n){if(e.hidden)continue;const n=e.aliases.concat([e.name]),d=subcommandPlaceholder(e);let a=e.description?t.description(e.description):terminalMarkdown(e.descriptionMarkdown,p,t.description);a=indentLines(a,u);const m=s-(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(m)+a+ln(1+l)}return f}export{formatHelpMessageCommands};
2
+ //# sourceMappingURL=format-subcommands.js.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,yBACtDC,qBAAwB,yBAK1B,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.js";import{indent,indentLines,ln,subcommandPlaceholder}from"../utilities.js";import{formatHelpMessageArguments}from"./format-arguments.js";import{formatHelpMessageOptions}from"./format-options.js";import{formatHelpMessageCommands}from"./format-subcommands.js";import{setPrintHelpOptionsDefaults}from"./set-defaults.js";import{helpMessageStyles}from"./styles.js";import{terminalMarkdown}from"./terminal-markdown.js";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.js.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.js";import{setPrintHelpOptionsDefaults}from"./set-defaults.js";import{helpMessageStyles}from"./styles.js";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.js.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,+BAC9BC,gCAAmC,2BACnCC,sBAAyB,cAK3B,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.js";import{generateSubcommandHelpMessage}from"./generate-for-subcommand.js";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.js.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,+BAC9BC,kCAAqC,+BAKvC,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.js";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.js.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,cAK3B,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.js.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.js.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.js";import{generateSubcommandHelpMessage}from"./help-message/generate-for-subcommand.js";import{printCliHelp,printSubcommandHelp}from"./help-message/print-help.js";import{HelpMessageStyle,helpMessageStyles}from"./help-message/styles.js";import{generateBashAutocompleteScript}from"./autocomplete-scripts/bash-autocomplete-script.js";import{generatePowerShellAutocompleteScript}from"./autocomplete-scripts/powershell-autocomplete-script.js";import{generateZshAutocompleteScript}from"./autocomplete-scripts/zsh-autocomplete-script.js";import{generateMarkdown}from"./markdown/generate-markdown.js";import{getArgumentsMetadata}from"./metadata/arguments-metadata.js";import{getCliMetadata}from"./metadata/cli-metadata.js";import{getOptionsMetadata}from"./metadata/options-metadata.js";import{getSubcommandsMetadata}from"./metadata/subcommands-metadata.js";import{defineArguments}from"./definitions/define-arguments.js";import{defineCLI}from"./definitions/define-cli.js";import{defineOptions}from"./definitions/define-options.js";import{defineSubcommand}from"./definitions/define-subcommand.js";import{coerce}from"./coerce/coerce-methods.js";export{HelpMessageStyle,coerce,defineArguments,defineCLI,defineOptions,defineSubcommand,generateBashAutocompleteScript,generateCliHelpMessage,generateMarkdown,generatePowerShellAutocompleteScript,generateSubcommandHelpMessage,generateZshAutocompleteScript,getArgumentsMetadata,getCliMetadata,getOptionsMetadata,getSubcommandsMetadata,helpMessageStyles,printCliHelp,printSubcommandHelp};
2
+ //# sourceMappingURL=index.js.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,4CAC9BC,kCAAqC,mDACrCC,aAAcC,wBAA2B,sCACzCC,iBAAkBC,sBAAyB,kCAE3CC,mCAAsC,4DACtCC,yCAA4C,kEAC5CC,kCAAqC,2DACrCC,qBAAwB,yCAExBC,yBAA4B,0CAC5BC,mBAAsB,oCACtBC,uBAA0B,wCAC1BC,2BAA8B,4CAE9BC,oBAAuB,2CACvBC,cAAiB,qCACjBC,kBAAqB,yCACrBC,qBAAwB,4CAExBC,WAAc,oC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{getCliMetadata}from"../metadata/cli-metadata.js";import{escapeHtmlTags,stripAnsi}from"../utilities.js";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.js.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.js";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.js.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,kBAKnD,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.js";import{getOptionsMetadata}from"./options-metadata.js";import{getSubcommandsMetadata}from"./subcommands-metadata.js";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.js.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,iCAC5BC,uBAA0B,+BAC1BC,2BAA8B,4BAKhC,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.js";import{defaultValueAndIsOptional,stringifyValue}from"../utilities.js";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.js.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,sCACjCC,0BAA2BC,mBAAsB,kBAKnD,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.js";import{getOptionsMetadata}from"./options-metadata.js";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.js.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,iCAC5BC,uBAA0B,wBAK5B,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":[]}
@@ -0,0 +1,2 @@
1
+ import{decoupleFlags,findOption,findSubcommandDefinition,isFlagArgument,isOptionArgument,transformOptionToArgument}from"../parser-utilities.js";function buildCliContext(o,e){const n=e.subcommands??[],t=new Set(n.flatMap(o=>[o.name,...o.aliases||[]]));o=decoupleFlags(o);const r={subcommand:void 0},i=()=>findSubcommandDefinition(r.subcommand,e);for(let e=0;e<o.length;e++){const n=o[e];if(0===e&&(r.subcommand=t.has(n)?n:void 0,r.subcommand))continue;const a=n.split("=").filter(Boolean),s=n.includes("="),u=a[0],p=a[1];if(isOptionArgument(u)){if(isFlagArgument(u)&&s)throw new Error(`flag arguments cannot be assigned using "=": "${n}"`);const t=i();if(!t)throw new Error(`unknown subcommand: "${r.subcommand}"`);if(!t.options){if(!r.subcommand)throw new Error(`options are not allowed here: "${u}"`);throw new Error(`subcommand "${r.subcommand}" does not accept options: "${u}"`)}const a=findOption(u,t.options);if(!a)throw new Error(`unknown option: "${u}"`);const[l,m]=a;if(r.options&&l in r.options)throw new Error(`duplicated option: "${u}"`);if(!m._preparedType)throw new Error(`internal error: missing prepared type for option "${l}"`);const{schema:c,optional:d,defaultValue:f,coerceTo:g}=m._preparedType,w=o[e+1];let h=s?p:w;if("boolean"===g){s||(h="true");u.startsWith("--no-")&&["true","false"].includes(h.toLowerCase())&&(h="true"===h?"false":"true")}if(void 0===h)throw new Error(`expected a value for "${u}" but got nothing`);if(!s&&isOptionArgument(h))throw new Error(`expected a value for "${u}" but got an argument "${w}"`);r.options??(r.options={}),r.options[l]={schema:c,optional:d,defaultValue:f,flag:u,stringValue:h,source:"terminal"},s||"boolean"===g||e++;continue}const l=i();if(l?.arguments){r.arguments??(r.arguments={});const o=Object.keys(r.arguments).length,e=Object.entries(l.arguments);if(o<e.length){const[t,i]=e[o];if(!i._preparedType)throw new Error(`internal error: missing prepared type for argument "${o}"`);const{schema:a,optional:s,defaultValue:u}=i._preparedType;r.arguments[t]={schema:a,optional:s,defaultValue:u,stringValue:n,source:"terminal"};continue}}if(!l?.allowPositionals){if(!r.subcommand)throw new Error(`unexpected argument "${n}": positionals arguments are not allowed here`);throw new Error(`unexpected argument "${n}": positionals arguments are not allowed for subcommand "${r.subcommand}"`)}r.positionals??(r.positionals=[]),r.positionals.push(n)}const a=i();if(!a)throw new Error(`unknown subcommand: "${r.subcommand}"`);if(a.options){r.options??(r.options={});for(const[o,e]of Object.entries(a.options)){if(o in r.options)continue;if(!e._preparedType)throw new Error(`internal error: missing prepared type for option "${o}"`);const{schema:n,optional:t,defaultValue:i}=e._preparedType;if(!t)throw new Error(`missing required option: ${transformOptionToArgument(o)}`);void 0!==i&&(r.options[o]={schema:n,optional:t,defaultValue:i,source:"default"})}}if(a.arguments){r.arguments??(r.arguments={});const o=Object.keys(r.arguments).length,e=Object.entries(a.arguments),n=e.length;if(o<n)for(let t=o;t<n;t++){const[o,n]=e[t];if(!n._preparedType)throw new Error(`internal error: missing prepared type for the argument "${o}"`);const{schema:i,optional:a,defaultValue:s}=n._preparedType;if(!a)throw new Error(`The argument "${o}" is required`);void 0!==s&&(r.arguments[o]={schema:i,optional:a,defaultValue:s,source:"default"})}}return a.allowPositionals&&(r.positionals??(r.positionals=[])),r}export{buildCliContext};
2
+ //# sourceMappingURL=cli-context-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["decoupleFlags","findOption","findSubcommandDefinition","isFlagArgument","isOptionArgument","transformOptionToArgument","buildCliContext","argv","cliDefinition","subcommandArray","subcommands","allSubcommands","Set","flatMap","c","name","aliases","context","subcommand","getCommandDefinition","index","length","argvItem","has","argumentAndValue","split","filter","Boolean","argumentWithEquals","includes","argument","argumentValue","Error","commandDefinition","options","nameOptionTuple","optionName","optionDefinition","_preparedType","schema","optional","defaultValue","coerceTo","nextArgument","optionValue","startsWith","toLowerCase","flag","stringValue","source","arguments","currentArgumentCount","Object","keys","argumentDefinitionEntries","entries","argumentDefinition","allowPositionals","positionals","push","argumentsDefinitionLength"],"sources":["../../../../src/parse/context/cli-context-builder.ts"],"sourcesContent":["import {\n decoupleFlags,\n findOption,\n findSubcommandDefinition,\n isFlagArgument,\n isOptionArgument,\n transformOptionToArgument,\n} from \"../parser-utilities.ts\";\n\nimport type { ContextWide } from \"../../types/context-types.ts\";\nimport type { Cli } from \"../../types/definitions-types.ts\";\n\n/**\n * Parse argv and create a cli context\n *\n * @throws {Error}\n */\nexport function buildCliContext(argv: string[], cliDefinition: Cli) {\n const subcommandArray = cliDefinition.subcommands ?? [];\n const allSubcommands = new Set<string>(subcommandArray.flatMap(c => [c.name, ...(c.aliases || [])]));\n\n // decouple flags E.g. `-rf` -> `-r, -f`\n argv = decoupleFlags(argv);\n\n const context: ContextWide = {\n subcommand: undefined,\n };\n\n /** Get the current subcommand definition or cli definition if subcommand name is `undefined` object */\n const getCommandDefinition = () => findSubcommandDefinition(context.subcommand, cliDefinition);\n\n for (let index = 0; index < argv.length; index++) {\n const argvItem = argv[index];\n\n // * Subcommand check\n if (index === 0) {\n context.subcommand = allSubcommands.has(argvItem) ? argvItem : undefined;\n\n // First argument is a subcommand. Skip to the next argument\n if (context.subcommand) continue;\n }\n\n // * Option check\n\n const argumentAndValue = argvItem.split(\"=\").filter(Boolean); // E.g --option=value -> [\"--option\", \"value\"]\n const argumentWithEquals = argvItem.includes(\"=\"); // E.g --option=value\n const argument = argumentAndValue[0];\n const argumentValue: string | undefined = argumentAndValue[1];\n\n if (isOptionArgument(argument)) {\n if (isFlagArgument(argument) && argumentWithEquals) {\n throw new Error(`flag arguments cannot be assigned using \"=\": \"${argvItem}\"`);\n }\n\n const commandDefinition = getCommandDefinition();\n if (!commandDefinition) {\n throw new Error(`unknown subcommand: \"${context.subcommand}\"`);\n }\n\n if (!commandDefinition.options) {\n if (!context.subcommand) {\n throw new Error(`options are not allowed here: \"${argument}\"`);\n }\n\n throw new Error(`subcommand \"${context.subcommand}\" does not accept options: \"${argument}\"`);\n }\n\n const nameOptionTuple = findOption(argument, commandDefinition.options);\n if (!nameOptionTuple) {\n throw new Error(`unknown option: \"${argument}\"`);\n }\n\n const [optionName, optionDefinition] = nameOptionTuple;\n\n if (context.options && optionName in context.options) {\n throw new Error(`duplicated option: \"${argument}\"`);\n }\n\n if (!optionDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for option \"${optionName}\"`);\n }\n\n const { schema, optional, defaultValue, coerceTo } = optionDefinition._preparedType;\n\n const nextArgument = argv[index + 1];\n\n let optionValue: string | boolean = argumentWithEquals ? argumentValue : nextArgument;\n\n // infer value for boolean options\n if (coerceTo === \"boolean\") {\n if (!argumentWithEquals) {\n optionValue = \"true\";\n }\n\n const isNegated = argument.startsWith(\"--no-\");\n\n if (isNegated && [\"true\", \"false\"].includes(optionValue.toLowerCase())) {\n optionValue = optionValue === \"true\" ? \"false\" : \"true\";\n }\n }\n\n if (optionValue === undefined) {\n throw new Error(`expected a value for \"${argument}\" but got nothing`);\n }\n\n if (!argumentWithEquals && isOptionArgument(optionValue)) {\n throw new Error(`expected a value for \"${argument}\" but got an argument \"${nextArgument}\"`);\n }\n\n context.options ??= {};\n context.options[optionName] = {\n schema,\n optional,\n defaultValue,\n flag: argument,\n stringValue: optionValue,\n source: \"terminal\",\n };\n\n // Skip to the next argument if it is the current option's value.\n if (!argumentWithEquals && coerceTo !== \"boolean\") {\n index++;\n }\n\n continue;\n }\n\n const commandDefinition = getCommandDefinition();\n\n // * Arguments check\n if (commandDefinition?.arguments) {\n context.arguments ??= {};\n\n const currentArgumentCount = Object.keys(context.arguments).length;\n const argumentDefinitionEntries = Object.entries(commandDefinition.arguments);\n\n // The current argument is a typed argument and not a positional\n if (currentArgumentCount < argumentDefinitionEntries.length) {\n const [name, argumentDefinition] = argumentDefinitionEntries[currentArgumentCount];\n\n if (!argumentDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for argument \"${currentArgumentCount}\"`);\n }\n\n const { schema, optional, defaultValue } = argumentDefinition._preparedType;\n\n context.arguments[name] = { schema, optional, defaultValue, stringValue: argvItem, source: \"terminal\" };\n continue;\n }\n }\n\n // The current argument is a positional and not a typed argument (when `allowPositionals` is enabled)\n if (commandDefinition?.allowPositionals) {\n context.positionals ??= [];\n context.positionals.push(argvItem);\n continue;\n }\n\n if (!context.subcommand) {\n throw new Error(`unexpected argument \"${argvItem}\": positionals arguments are not allowed here`);\n }\n\n throw new Error(\n `unexpected argument \"${argvItem}\": positionals arguments are not allowed for subcommand \"${context.subcommand}\"`,\n );\n }\n\n const commandDefinition = getCommandDefinition();\n if (!commandDefinition) {\n throw new Error(`unknown subcommand: \"${context.subcommand}\"`);\n }\n\n // Options\n if (commandDefinition.options) {\n context.options ??= {};\n\n for (const [name, optionDefinition] of Object.entries(commandDefinition.options)) {\n // option already added to the context (found during argument parsing)\n if (name in context.options) continue;\n\n if (!optionDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for option \"${name}\"`);\n }\n\n const { schema, optional, defaultValue } = optionDefinition._preparedType;\n\n if (optional) {\n // optional without default value\n if (defaultValue === undefined) {\n continue;\n }\n\n // optional with default value\n context.options[name] = { schema, optional, defaultValue, source: \"default\" };\n continue;\n }\n\n // required option\n throw new Error(`missing required option: ${transformOptionToArgument(name)}`);\n }\n }\n\n // Arguments\n if (commandDefinition.arguments) {\n context.arguments ??= {};\n\n const currentArgumentCount = Object.keys(context.arguments).length;\n\n const argumentDefinitionEntries = Object.entries(commandDefinition.arguments);\n const argumentsDefinitionLength = argumentDefinitionEntries.length;\n\n // missing arguments\n if (currentArgumentCount < argumentsDefinitionLength) {\n for (let index = currentArgumentCount; index < argumentsDefinitionLength; index++) {\n const [name, argumentDefinition] = argumentDefinitionEntries[index];\n\n if (!argumentDefinition._preparedType) {\n throw new Error(`internal error: missing prepared type for the argument \"${name}\"`);\n }\n\n const { schema, optional, defaultValue } = argumentDefinition._preparedType;\n\n if (optional) {\n // optional argument without default value\n if (defaultValue === undefined) {\n continue;\n }\n\n // optional argument with default value\n context.arguments[name] = { schema, optional, defaultValue, source: \"default\" };\n continue;\n }\n\n // required argument\n throw new Error(`The argument \"${name}\" is required`);\n }\n }\n }\n\n // make sure `positionals` is defined when `allowPositionals` is enabled\n if (commandDefinition.allowPositionals) {\n context.positionals ??= [];\n }\n\n return context;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ function buildObjectContext(o,e){const t={subcommand:"cliName"in e?void 0:e.name};return e.options&&buildForOptionsOrArguments(e.options,t,o.options,"options"),e.arguments&&buildForOptionsOrArguments(e.arguments,t,o.arguments,"arguments"),e.allowPositionals&&(t.positionals??(t.positionals=o.positionals)),t}function buildForOptionsOrArguments(o,e,t,n){const i=Object.entries(o);for(const[o,r]of i){if(!r._preparedType)throw new Error(`internal error: missing prepared type for ${n.slice(0,-1)} "${o}"`);const{schema:i,optional:s,defaultValue:a}=r._preparedType;if(t&&o in t){const r=t[o];e[n]??(e[n]={}),e[n][o]=void 0===r?{schema:i,optional:s,defaultValue:a,source:"default"}:{schema:i,optional:s,defaultValue:a,passedValue:r,source:"programmatic"};continue}if(!s)throw new Error(`the ${n.slice(0,-1)} "${o}" is required`);e[n]??(e[n]={}),e[n][o]={schema:i,optional:s,defaultValue:a,source:"default"}}}export{buildObjectContext};
2
+ //# sourceMappingURL=object-context-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["buildObjectContext","inputValues","commandDefinition","context","subcommand","name","options","buildForOptionsOrArguments","arguments","allowPositionals","positionals","definitionRecord","inputRecord","type","definitionEntries","Object","entries","definition","_preparedType","Error","slice","schema","optional","defaultValue","passedValue","source"],"sources":["../../../../src/parse/context/object-context-builder.ts"],"sourcesContent":["import type { ContextWide } from \"../../types/context-types.ts\";\nimport type { Argument, Cli, Option, Subcommand } from \"../../types/definitions-types.ts\";\nimport type { InputTypeWide } from \"../../types/io-types.ts\";\n\n/** @throws {Error} */\nexport function buildObjectContext(inputValues: InputTypeWide, commandDefinition: Subcommand | Cli) {\n const context: ContextWide = {\n subcommand: \"cliName\" in commandDefinition ? undefined : commandDefinition.name,\n };\n\n if (commandDefinition.options) {\n buildForOptionsOrArguments(commandDefinition.options, context, inputValues.options, \"options\");\n }\n\n if (commandDefinition.arguments) {\n buildForOptionsOrArguments(commandDefinition.arguments, context, inputValues.arguments, \"arguments\");\n }\n\n if (commandDefinition.allowPositionals) {\n context.positionals ??= inputValues.positionals;\n }\n\n return context;\n}\n\nfunction buildForOptionsOrArguments(\n definitionRecord: Record<string, Option> | Record<string, Argument>,\n context: ContextWide,\n inputRecord: Record<string, unknown> | undefined,\n type: \"options\" | \"arguments\",\n) {\n const definitionEntries = Object.entries(definitionRecord) as [string, Option][] | [string, Argument][];\n\n for (const [name, definition] of definitionEntries) {\n if (!definition._preparedType) {\n throw new Error(`internal error: missing prepared type for ${type.slice(0, -1)} \"${name}\"`);\n }\n\n const { schema, optional, defaultValue } = definition._preparedType;\n\n // Case the value is passed\n if (inputRecord && name in inputRecord) {\n const passedValue = inputRecord[name];\n\n context[type] ??= {};\n context[type][name] =\n passedValue === undefined\n ? { schema, optional, defaultValue, source: \"default\" }\n : { schema, optional, defaultValue, passedValue, source: \"programmatic\" };\n\n continue;\n }\n\n // case the value is not passed\n if (!optional) {\n throw new Error(`the ${type.slice(0, -1)} \"${name}\" is required`);\n }\n\n // case the value is optional\n context[type] ??= {};\n context[type][name] = { schema, optional, defaultValue, source: \"default\" };\n }\n}\n"],"mappings":"AAKO,SAASA,mBAAmBC,EAA4BC,GAC7D,MAAMC,EAAuB,CAC3BC,WAAY,YAAaF,OAAoB,EAAYA,EAAkBG,MAe7E,OAZIH,EAAkBI,SACpBC,2BAA2BL,EAAkBI,QAASH,EAASF,EAAYK,QAAS,WAGlFJ,EAAkBM,WACpBD,2BAA2BL,EAAkBM,UAAWL,EAASF,EAAYO,UAAW,aAGtFN,EAAkBO,mBACpBN,EAAQO,cAARP,EAAQO,YAAgBT,EAAYS,cAG/BP,CACT,CAEA,SAASI,2BACPI,EACAR,EACAS,EACAC,GAEA,MAAMC,EAAoBC,OAAOC,QAAQL,GAEzC,UAAYN,EAAMY,KAAeH,EAAmB,CAClD,IAAKG,EAAWC,cACd,MAAM,IAAIC,MAAM,6CAA6CN,EAAKO,MAAM,GAAG,OAAQf,MAGrF,MAAMgB,OAAEA,EAAAC,SAAQA,EAAAC,aAAUA,GAAiBN,EAAWC,cAGtD,GAAIN,GAAeP,KAAQO,EAAa,CACtC,MAAMY,EAAcZ,EAAYP,GAEhCF,EAAAU,KAAAV,EAAAU,GAAkB,CAAC,GACnBV,EAAQU,GAAMR,QACI,IAAhBmB,EACI,CAAEH,SAAQC,WAAUC,eAAcE,OAAQ,WAC1C,CAAEJ,SAAQC,WAAUC,eAAcC,cAAaC,OAAQ,gBAE7D,QACF,CAGA,IAAKH,EACH,MAAM,IAAIH,MAAM,OAAON,EAAKO,MAAM,GAAG,OAAQf,kBAI/CF,EAAAU,KAAAV,EAAAU,GAAkB,CAAC,GACnBV,EAAQU,GAAMR,GAAQ,CAAEgB,SAAQC,WAAUC,eAAcE,OAAQ,UAClE,CACF,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ function findSubcommandDefinition(e,n){return void 0===e?n:n.subcommands?n.subcommands.find(n=>n.name===e||e&&n.aliases&&n.aliases.includes(e)):void 0}function findOption(e,n){const t=optionArgumentToVariableNames(e),o=e.startsWith("--no-");return Object.entries(n).find(([e,n])=>{if(t.has(e))return!0;const a=n._preparedType&&"boolean"===n._preparedType.coerceTo;return!!(o&&a&&t.has(negateOption(e)))||!!n.aliases&&(!!n.aliases.some(e=>t.has(e))||!!(o&&a&&n.aliases.map(e=>negateOption(e)).some(e=>t.has(e))))})}function decoupleFlags(e){const n=/^-[a-z0-9]{2,}$/i,t=[];for(const o of e){if(!n.test(o)){t.push(o);continue}const e=o.slice(1).split("").map(e=>"-"+e);t.push(...e)}return t}function optionArgumentToVariableNames(e){if(!e.startsWith("-"))throw new Error(`invalid option name: ${e}`);e=(e=e.startsWith("--")?e.slice(2):e.slice(1)).toLowerCase();const n=new Set,t=e.replace(/-(.)/g,e=>e[1].toUpperCase());n.add(t),n.add(t.replace(/^(.)/,e=>e.toUpperCase()));const o=e.replace(/-(.)/g,e=>"_"+e[1]);return n.add(o),n.add(o.toUpperCase()),n}function isFlagArgument(e){return/^-[A-Za-z]$/.test(e)}function isLongArgument(e){return/^--[A-Za-z-]+[A-Za-z0-9]$/.test(e)}function isOptionArgument(e){return"string"==typeof e&&(isFlagArgument(e)||isLongArgument(e))}function negateOption(e){return"no"+e.replace(/^[a-z]/,e=>e.toUpperCase())}function transformOptionToArgument(e){return 1===e.length?`-${e.toLowerCase()}`:/^[a-z_]+$/.test(e)||/^[A-Z_]+$/.test(e)?`--${(e=e.replace(/_/g,"-")).toLowerCase()}`:`--${(e=e.replace(/[A-Z]/g,(e,n)=>n>0?"-"+e:e)).toLowerCase()}`}export{decoupleFlags,findOption,findSubcommandDefinition,isFlagArgument,isOptionArgument,negateOption,optionArgumentToVariableNames,transformOptionToArgument};
2
+ //# sourceMappingURL=parser-utilities.js.map