@villedemontreal/caporal 3.1.7

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 (425) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -0
  3. package/dist/src/__tests__/issue-163.spec.d.ts +2 -0
  4. package/dist/src/__tests__/issue-163.spec.d.ts.map +1 -0
  5. package/dist/src/__tests__/issue-163.spec.js +17 -0
  6. package/dist/src/__tests__/issue-163.spec.js.map +1 -0
  7. package/dist/src/argument/__tests__/argument.spec.d.ts +2 -0
  8. package/dist/src/argument/__tests__/argument.spec.d.ts.map +1 -0
  9. package/dist/src/argument/__tests__/argument.spec.js +85 -0
  10. package/dist/src/argument/__tests__/argument.spec.js.map +1 -0
  11. package/dist/src/argument/find.d.ts +8 -0
  12. package/dist/src/argument/find.d.ts.map +1 -0
  13. package/dist/src/argument/find.js +11 -0
  14. package/dist/src/argument/find.js.map +1 -0
  15. package/dist/src/argument/index.d.ts +13 -0
  16. package/dist/src/argument/index.d.ts.map +1 -0
  17. package/dist/src/argument/index.js +27 -0
  18. package/dist/src/argument/index.js.map +1 -0
  19. package/dist/src/argument/synopsis.d.ts +19 -0
  20. package/dist/src/argument/synopsis.d.ts.map +1 -0
  21. package/dist/src/argument/synopsis.js +39 -0
  22. package/dist/src/argument/synopsis.js.map +1 -0
  23. package/dist/src/argument/validate.d.ts +43 -0
  24. package/dist/src/argument/validate.d.ts.map +1 -0
  25. package/dist/src/argument/validate.js +127 -0
  26. package/dist/src/argument/validate.js.map +1 -0
  27. package/dist/src/autocomplete/__fixtures__/prog-autocomplete.d.ts +3 -0
  28. package/dist/src/autocomplete/__fixtures__/prog-autocomplete.d.ts.map +1 -0
  29. package/dist/src/autocomplete/__fixtures__/prog-autocomplete.js +24 -0
  30. package/dist/src/autocomplete/__fixtures__/prog-autocomplete.js.map +1 -0
  31. package/dist/src/autocomplete/__tests__/autocomplete.spec.d.ts +2 -0
  32. package/dist/src/autocomplete/__tests__/autocomplete.spec.d.ts.map +1 -0
  33. package/dist/src/autocomplete/__tests__/autocomplete.spec.js +119 -0
  34. package/dist/src/autocomplete/__tests__/autocomplete.spec.js.map +1 -0
  35. package/dist/src/autocomplete/index.d.ts +20 -0
  36. package/dist/src/autocomplete/index.d.ts.map +1 -0
  37. package/dist/src/autocomplete/index.js +172 -0
  38. package/dist/src/autocomplete/index.js.map +1 -0
  39. package/dist/src/autocomplete/types.d.ts +26 -0
  40. package/dist/src/autocomplete/types.d.ts.map +1 -0
  41. package/dist/src/autocomplete/types.js +3 -0
  42. package/dist/src/autocomplete/types.js.map +1 -0
  43. package/dist/src/command/__fixtures__/example-cmd.d.ts +8 -0
  44. package/dist/src/command/__fixtures__/example-cmd.d.ts.map +1 -0
  45. package/dist/src/command/__fixtures__/example-cmd.js +10 -0
  46. package/dist/src/command/__fixtures__/example-cmd.js.map +1 -0
  47. package/dist/src/command/__tests__/command.spec.d.ts +2 -0
  48. package/dist/src/command/__tests__/command.spec.d.ts.map +1 -0
  49. package/dist/src/command/__tests__/command.spec.js +510 -0
  50. package/dist/src/command/__tests__/command.spec.js.map +1 -0
  51. package/dist/src/command/__tests__/find.spec.d.ts +2 -0
  52. package/dist/src/command/__tests__/find.spec.d.ts.map +1 -0
  53. package/dist/src/command/__tests__/find.spec.js +31 -0
  54. package/dist/src/command/__tests__/find.spec.js.map +1 -0
  55. package/dist/src/command/__tests__/import.spec.d.ts +2 -0
  56. package/dist/src/command/__tests__/import.spec.d.ts.map +1 -0
  57. package/dist/src/command/__tests__/import.spec.js +17 -0
  58. package/dist/src/command/__tests__/import.spec.js.map +1 -0
  59. package/dist/src/command/__tests__/scan.spec.d.ts +2 -0
  60. package/dist/src/command/__tests__/scan.spec.d.ts.map +1 -0
  61. package/dist/src/command/__tests__/scan.spec.js +20 -0
  62. package/dist/src/command/__tests__/scan.spec.js.map +1 -0
  63. package/dist/src/command/find.d.ts +8 -0
  64. package/dist/src/command/find.d.ts.map +1 -0
  65. package/dist/src/command/find.js +47 -0
  66. package/dist/src/command/find.js.map +1 -0
  67. package/dist/src/command/import.d.ts +7 -0
  68. package/dist/src/command/import.d.ts.map +1 -0
  69. package/dist/src/command/import.js +47 -0
  70. package/dist/src/command/import.js.map +1 -0
  71. package/dist/src/command/index.d.ts +211 -0
  72. package/dist/src/command/index.d.ts.map +1 -0
  73. package/dist/src/command/index.js +374 -0
  74. package/dist/src/command/index.js.map +1 -0
  75. package/dist/src/command/scan.d.ts +4 -0
  76. package/dist/src/command/scan.d.ts.map +1 -0
  77. package/dist/src/command/scan.js +31 -0
  78. package/dist/src/command/scan.js.map +1 -0
  79. package/dist/src/command/validate-call.d.ts +8 -0
  80. package/dist/src/command/validate-call.d.ts.map +1 -0
  81. package/dist/src/command/validate-call.js +13 -0
  82. package/dist/src/command/validate-call.js.map +1 -0
  83. package/dist/src/config/index.d.ts +7 -0
  84. package/dist/src/config/index.d.ts.map +1 -0
  85. package/dist/src/config/index.js +24 -0
  86. package/dist/src/config/index.js.map +1 -0
  87. package/dist/src/error/__tests__/fatal.spec.d.ts +2 -0
  88. package/dist/src/error/__tests__/fatal.spec.d.ts.map +1 -0
  89. package/dist/src/error/__tests__/fatal.spec.js +34 -0
  90. package/dist/src/error/__tests__/fatal.spec.js.map +1 -0
  91. package/dist/src/error/action.d.ts +9 -0
  92. package/dist/src/error/action.d.ts.map +1 -0
  93. package/dist/src/error/action.js +16 -0
  94. package/dist/src/error/action.js.map +1 -0
  95. package/dist/src/error/base.d.ts +11 -0
  96. package/dist/src/error/base.d.ts.map +1 -0
  97. package/dist/src/error/base.js +18 -0
  98. package/dist/src/error/base.js.map +1 -0
  99. package/dist/src/error/fatal.d.ts +10 -0
  100. package/dist/src/error/fatal.d.ts.map +1 -0
  101. package/dist/src/error/fatal.js +27 -0
  102. package/dist/src/error/fatal.js.map +1 -0
  103. package/dist/src/error/index.d.ts +18 -0
  104. package/dist/src/error/index.d.ts.map +1 -0
  105. package/dist/src/error/index.js +34 -0
  106. package/dist/src/error/index.js.map +1 -0
  107. package/dist/src/error/invalid-validator.d.ts +10 -0
  108. package/dist/src/error/invalid-validator.d.ts.map +1 -0
  109. package/dist/src/error/invalid-validator.js +15 -0
  110. package/dist/src/error/invalid-validator.js.map +1 -0
  111. package/dist/src/error/missing-argument.d.ts +11 -0
  112. package/dist/src/error/missing-argument.d.ts.map +1 -0
  113. package/dist/src/error/missing-argument.js +20 -0
  114. package/dist/src/error/missing-argument.js.map +1 -0
  115. package/dist/src/error/missing-flag.d.ts +11 -0
  116. package/dist/src/error/missing-flag.d.ts.map +1 -0
  117. package/dist/src/error/missing-flag.js +20 -0
  118. package/dist/src/error/missing-flag.js.map +1 -0
  119. package/dist/src/error/multi-validation.d.ts +10 -0
  120. package/dist/src/error/multi-validation.d.ts.map +1 -0
  121. package/dist/src/error/multi-validation.js +26 -0
  122. package/dist/src/error/multi-validation.js.map +1 -0
  123. package/dist/src/error/no-action.d.ts +10 -0
  124. package/dist/src/error/no-action.d.ts.map +1 -0
  125. package/dist/src/error/no-action.js +22 -0
  126. package/dist/src/error/no-action.js.map +1 -0
  127. package/dist/src/error/option-synopsis-syntax.d.ts +9 -0
  128. package/dist/src/error/option-synopsis-syntax.d.ts.map +1 -0
  129. package/dist/src/error/option-synopsis-syntax.js +15 -0
  130. package/dist/src/error/option-synopsis-syntax.js.map +1 -0
  131. package/dist/src/error/too-many-arguments.d.ts +11 -0
  132. package/dist/src/error/too-many-arguments.d.ts.map +1 -0
  133. package/dist/src/error/too-many-arguments.js +25 -0
  134. package/dist/src/error/too-many-arguments.js.map +1 -0
  135. package/dist/src/error/unknown-command.d.ts +13 -0
  136. package/dist/src/error/unknown-command.d.ts.map +1 -0
  137. package/dist/src/error/unknown-command.js +44 -0
  138. package/dist/src/error/unknown-command.js.map +1 -0
  139. package/dist/src/error/unknown-option.d.ts +13 -0
  140. package/dist/src/error/unknown-option.d.ts.map +1 -0
  141. package/dist/src/error/unknown-option.js +40 -0
  142. package/dist/src/error/unknown-option.js.map +1 -0
  143. package/dist/src/error/validation.d.ts +17 -0
  144. package/dist/src/error/validation.d.ts.map +1 -0
  145. package/dist/src/error/validation.js +49 -0
  146. package/dist/src/error/validation.js.map +1 -0
  147. package/dist/src/help/__tests__/help.spec.d.ts +2 -0
  148. package/dist/src/help/__tests__/help.spec.d.ts.map +1 -0
  149. package/dist/src/help/__tests__/help.spec.js +130 -0
  150. package/dist/src/help/__tests__/help.spec.js.map +1 -0
  151. package/dist/src/help/__tests__/utils.spec.d.ts +2 -0
  152. package/dist/src/help/__tests__/utils.spec.d.ts.map +1 -0
  153. package/dist/src/help/__tests__/utils.spec.js +16 -0
  154. package/dist/src/help/__tests__/utils.spec.js.map +1 -0
  155. package/dist/src/help/index.d.ts +47 -0
  156. package/dist/src/help/index.d.ts.map +1 -0
  157. package/dist/src/help/index.js +131 -0
  158. package/dist/src/help/index.js.map +1 -0
  159. package/dist/src/help/templates/command.d.ts +7 -0
  160. package/dist/src/help/templates/command.d.ts.map +1 -0
  161. package/dist/src/help/templates/command.js +23 -0
  162. package/dist/src/help/templates/command.js.map +1 -0
  163. package/dist/src/help/templates/custom.d.ts +7 -0
  164. package/dist/src/help/templates/custom.d.ts.map +1 -0
  165. package/dist/src/help/templates/custom.js +24 -0
  166. package/dist/src/help/templates/custom.js.map +1 -0
  167. package/dist/src/help/templates/header.d.ts +7 -0
  168. package/dist/src/help/templates/header.d.ts.map +1 -0
  169. package/dist/src/help/templates/header.js +16 -0
  170. package/dist/src/help/templates/header.js.map +1 -0
  171. package/dist/src/help/templates/index.d.ts +10 -0
  172. package/dist/src/help/templates/index.d.ts.map +1 -0
  173. package/dist/src/help/templates/index.js +26 -0
  174. package/dist/src/help/templates/index.js.map +1 -0
  175. package/dist/src/help/templates/program.d.ts +7 -0
  176. package/dist/src/help/templates/program.d.ts.map +1 -0
  177. package/dist/src/help/templates/program.js +18 -0
  178. package/dist/src/help/templates/program.js.map +1 -0
  179. package/dist/src/help/templates/usage.d.ts +7 -0
  180. package/dist/src/help/templates/usage.d.ts.map +1 -0
  181. package/dist/src/help/templates/usage.js +19 -0
  182. package/dist/src/help/templates/usage.js.map +1 -0
  183. package/dist/src/help/types.d.ts +53 -0
  184. package/dist/src/help/types.d.ts.map +1 -0
  185. package/dist/src/help/types.js +3 -0
  186. package/dist/src/help/types.js.map +1 -0
  187. package/dist/src/help/utils.d.ts +9 -0
  188. package/dist/src/help/utils.d.ts.map +1 -0
  189. package/dist/src/help/utils.js +92 -0
  190. package/dist/src/help/utils.js.map +1 -0
  191. package/dist/src/index.d.ts +90 -0
  192. package/dist/src/index.d.ts.map +1 -0
  193. package/dist/src/index.js +111 -0
  194. package/dist/src/index.js.map +1 -0
  195. package/dist/src/logger/__tests__/logger.spec.d.ts +2 -0
  196. package/dist/src/logger/__tests__/logger.spec.d.ts.map +1 -0
  197. package/dist/src/logger/__tests__/logger.spec.js +56 -0
  198. package/dist/src/logger/__tests__/logger.spec.js.map +1 -0
  199. package/dist/src/logger/index.d.ts +6 -0
  200. package/dist/src/logger/index.d.ts.map +1 -0
  201. package/dist/src/logger/index.js +128 -0
  202. package/dist/src/logger/index.js.map +1 -0
  203. package/dist/src/option/__tests__/global.spec.d.ts +2 -0
  204. package/dist/src/option/__tests__/global.spec.d.ts.map +1 -0
  205. package/dist/src/option/__tests__/global.spec.js +121 -0
  206. package/dist/src/option/__tests__/global.spec.js.map +1 -0
  207. package/dist/src/option/__tests__/option.spec.d.ts +2 -0
  208. package/dist/src/option/__tests__/option.spec.d.ts.map +1 -0
  209. package/dist/src/option/__tests__/option.spec.js +111 -0
  210. package/dist/src/option/__tests__/option.spec.js.map +1 -0
  211. package/dist/src/option/find.d.ts +14 -0
  212. package/dist/src/option/find.d.ts.map +1 -0
  213. package/dist/src/option/find.js +17 -0
  214. package/dist/src/option/find.js.map +1 -0
  215. package/dist/src/option/index.d.ts +65 -0
  216. package/dist/src/option/index.d.ts.map +1 -0
  217. package/dist/src/option/index.js +230 -0
  218. package/dist/src/option/index.js.map +1 -0
  219. package/dist/src/option/mapping.d.ts +7 -0
  220. package/dist/src/option/mapping.d.ts.map +1 -0
  221. package/dist/src/option/mapping.js +21 -0
  222. package/dist/src/option/mapping.js.map +1 -0
  223. package/dist/src/option/utils.d.ts +35 -0
  224. package/dist/src/option/utils.d.ts.map +1 -0
  225. package/dist/src/option/utils.js +139 -0
  226. package/dist/src/option/utils.js.map +1 -0
  227. package/dist/src/option/validate.d.ts +15 -0
  228. package/dist/src/option/validate.d.ts.map +1 -0
  229. package/dist/src/option/validate.js +63 -0
  230. package/dist/src/option/validate.js.map +1 -0
  231. package/dist/src/parser/__tests__/parser.spec.d.ts +2 -0
  232. package/dist/src/parser/__tests__/parser.spec.d.ts.map +1 -0
  233. package/dist/src/parser/__tests__/parser.spec.js +343 -0
  234. package/dist/src/parser/__tests__/parser.spec.js.map +1 -0
  235. package/dist/src/parser/index.d.ts +17 -0
  236. package/dist/src/parser/index.d.ts.map +1 -0
  237. package/dist/src/parser/index.js +299 -0
  238. package/dist/src/parser/index.js.map +1 -0
  239. package/dist/src/program/__tests__/program.spec.d.ts +2 -0
  240. package/dist/src/program/__tests__/program.spec.d.ts.map +1 -0
  241. package/dist/src/program/__tests__/program.spec.js +261 -0
  242. package/dist/src/program/__tests__/program.spec.js.map +1 -0
  243. package/dist/src/program/index.d.ts +349 -0
  244. package/dist/src/program/index.d.ts.map +1 -0
  245. package/dist/src/program/index.js +584 -0
  246. package/dist/src/program/index.js.map +1 -0
  247. package/dist/src/types.d.ts +396 -0
  248. package/dist/src/types.d.ts.map +1 -0
  249. package/dist/src/types.js +51 -0
  250. package/dist/src/types.js.map +1 -0
  251. package/dist/src/utils/__tests__/fs.spec.d.ts +2 -0
  252. package/dist/src/utils/__tests__/fs.spec.d.ts.map +1 -0
  253. package/dist/src/utils/__tests__/fs.spec.js +14 -0
  254. package/dist/src/utils/__tests__/fs.spec.js.map +1 -0
  255. package/dist/src/utils/__tests__/levenshtein.spec.d.ts +2 -0
  256. package/dist/src/utils/__tests__/levenshtein.spec.d.ts.map +1 -0
  257. package/dist/src/utils/__tests__/levenshtein.spec.js +18 -0
  258. package/dist/src/utils/__tests__/levenshtein.spec.js.map +1 -0
  259. package/dist/src/utils/__tests__/suggest.spec.d.ts +2 -0
  260. package/dist/src/utils/__tests__/suggest.spec.d.ts.map +1 -0
  261. package/dist/src/utils/__tests__/suggest.spec.js +31 -0
  262. package/dist/src/utils/__tests__/suggest.spec.js.map +1 -0
  263. package/dist/src/utils/colorize.d.ts +2 -0
  264. package/dist/src/utils/colorize.d.ts.map +1 -0
  265. package/dist/src/utils/colorize.js +27 -0
  266. package/dist/src/utils/colorize.js.map +1 -0
  267. package/dist/src/utils/fs.d.ts +2 -0
  268. package/dist/src/utils/fs.d.ts.map +1 -0
  269. package/dist/src/utils/fs.js +19 -0
  270. package/dist/src/utils/fs.js.map +1 -0
  271. package/dist/src/utils/levenshtein.d.ts +6 -0
  272. package/dist/src/utils/levenshtein.d.ts.map +1 -0
  273. package/dist/src/utils/levenshtein.js +32 -0
  274. package/dist/src/utils/levenshtein.js.map +1 -0
  275. package/dist/src/utils/suggest.d.ts +15 -0
  276. package/dist/src/utils/suggest.d.ts.map +1 -0
  277. package/dist/src/utils/suggest.js +49 -0
  278. package/dist/src/utils/suggest.js.map +1 -0
  279. package/dist/src/utils/version.d.ts +2 -0
  280. package/dist/src/utils/version.d.ts.map +1 -0
  281. package/dist/src/utils/version.js +21 -0
  282. package/dist/src/utils/version.js.map +1 -0
  283. package/dist/src/utils/web/autocomplete.d.ts +12 -0
  284. package/dist/src/utils/web/autocomplete.d.ts.map +1 -0
  285. package/dist/src/utils/web/autocomplete.js +12 -0
  286. package/dist/src/utils/web/autocomplete.js.map +1 -0
  287. package/dist/src/utils/web/process.d.ts +15 -0
  288. package/dist/src/utils/web/process.d.ts.map +1 -0
  289. package/dist/src/utils/web/process.js +29 -0
  290. package/dist/src/utils/web/process.js.map +1 -0
  291. package/dist/src/validator/__tests__/array.spec.d.ts +2 -0
  292. package/dist/src/validator/__tests__/array.spec.d.ts.map +1 -0
  293. package/dist/src/validator/__tests__/array.spec.js +34 -0
  294. package/dist/src/validator/__tests__/array.spec.js.map +1 -0
  295. package/dist/src/validator/__tests__/caporal.spec.d.ts +2 -0
  296. package/dist/src/validator/__tests__/caporal.spec.d.ts.map +1 -0
  297. package/dist/src/validator/__tests__/caporal.spec.js +86 -0
  298. package/dist/src/validator/__tests__/caporal.spec.js.map +1 -0
  299. package/dist/src/validator/__tests__/function.spec.d.ts +2 -0
  300. package/dist/src/validator/__tests__/function.spec.d.ts.map +1 -0
  301. package/dist/src/validator/__tests__/function.spec.js +42 -0
  302. package/dist/src/validator/__tests__/function.spec.js.map +1 -0
  303. package/dist/src/validator/__tests__/regexp.spec.d.ts +2 -0
  304. package/dist/src/validator/__tests__/regexp.spec.d.ts.map +1 -0
  305. package/dist/src/validator/__tests__/regexp.spec.js +34 -0
  306. package/dist/src/validator/__tests__/regexp.spec.js.map +1 -0
  307. package/dist/src/validator/__tests__/utils.spec.d.ts +2 -0
  308. package/dist/src/validator/__tests__/utils.spec.d.ts.map +1 -0
  309. package/dist/src/validator/__tests__/utils.spec.js +66 -0
  310. package/dist/src/validator/__tests__/utils.spec.js.map +1 -0
  311. package/dist/src/validator/__tests__/validate.spec.d.ts +2 -0
  312. package/dist/src/validator/__tests__/validate.spec.d.ts.map +1 -0
  313. package/dist/src/validator/__tests__/validate.spec.js +25 -0
  314. package/dist/src/validator/__tests__/validate.spec.js.map +1 -0
  315. package/dist/src/validator/array.d.ts +14 -0
  316. package/dist/src/validator/array.d.ts.map +1 -0
  317. package/dist/src/validator/array.js +29 -0
  318. package/dist/src/validator/array.js.map +1 -0
  319. package/dist/src/validator/caporal.d.ts +25 -0
  320. package/dist/src/validator/caporal.d.ts.map +1 -0
  321. package/dist/src/validator/caporal.js +89 -0
  322. package/dist/src/validator/caporal.js.map +1 -0
  323. package/dist/src/validator/function.d.ts +7 -0
  324. package/dist/src/validator/function.d.ts.map +1 -0
  325. package/dist/src/validator/function.js +27 -0
  326. package/dist/src/validator/function.js.map +1 -0
  327. package/dist/src/validator/regexp.d.ts +14 -0
  328. package/dist/src/validator/regexp.d.ts.map +1 -0
  329. package/dist/src/validator/regexp.js +31 -0
  330. package/dist/src/validator/regexp.js.map +1 -0
  331. package/dist/src/validator/utils.d.ts +14 -0
  332. package/dist/src/validator/utils.d.ts.map +1 -0
  333. package/dist/src/validator/utils.js +81 -0
  334. package/dist/src/validator/utils.js.map +1 -0
  335. package/dist/src/validator/validate.d.ts +7 -0
  336. package/dist/src/validator/validate.d.ts.map +1 -0
  337. package/dist/src/validator/validate.js +29 -0
  338. package/dist/src/validator/validate.js.map +1 -0
  339. package/dist/tsconfig.tsbuildinfo +1 -0
  340. package/package.json +75 -0
  341. package/src/__tests__/issue-163.spec.ts +18 -0
  342. package/src/argument/__tests__/argument.spec.ts +84 -0
  343. package/src/argument/find.ts +11 -0
  344. package/src/argument/index.ts +35 -0
  345. package/src/argument/synopsis.ts +41 -0
  346. package/src/argument/validate.ts +176 -0
  347. package/src/autocomplete/__fixtures__/prog-autocomplete.ts +24 -0
  348. package/src/autocomplete/__tests__/autocomplete.spec.ts +129 -0
  349. package/src/autocomplete/index.ts +225 -0
  350. package/src/autocomplete/types.ts +29 -0
  351. package/src/command/__fixtures__/example-cmd.ts +14 -0
  352. package/src/command/__tests__/command.spec.ts +621 -0
  353. package/src/command/__tests__/find.spec.ts +32 -0
  354. package/src/command/__tests__/import.spec.ts +14 -0
  355. package/src/command/__tests__/scan.spec.ts +16 -0
  356. package/src/command/find.ts +57 -0
  357. package/src/command/import.ts +13 -0
  358. package/src/command/index.ts +458 -0
  359. package/src/command/scan.ts +30 -0
  360. package/src/command/validate-call.ts +19 -0
  361. package/src/config/index.ts +26 -0
  362. package/src/error/__tests__/fatal.spec.ts +38 -0
  363. package/src/error/action.ts +13 -0
  364. package/src/error/base.ts +20 -0
  365. package/src/error/fatal.ts +25 -0
  366. package/src/error/index.ts +17 -0
  367. package/src/error/invalid-validator.ts +12 -0
  368. package/src/error/missing-argument.ts +16 -0
  369. package/src/error/missing-flag.ts +16 -0
  370. package/src/error/multi-validation.ts +22 -0
  371. package/src/error/no-action.ts +19 -0
  372. package/src/error/option-synopsis-syntax.ts +12 -0
  373. package/src/error/too-many-arguments.ts +28 -0
  374. package/src/error/unknown-command.ts +41 -0
  375. package/src/error/unknown-option.ts +40 -0
  376. package/src/error/validation.ts +80 -0
  377. package/src/help/__tests__/__snapshots__/help.spec.ts.snap +334 -0
  378. package/src/help/__tests__/help.spec.ts +144 -0
  379. package/src/help/__tests__/utils.spec.ts +14 -0
  380. package/src/help/index.ts +107 -0
  381. package/src/help/templates/command.ts +27 -0
  382. package/src/help/templates/custom.ts +25 -0
  383. package/src/help/templates/header.ts +19 -0
  384. package/src/help/templates/index.ts +9 -0
  385. package/src/help/templates/program.ts +21 -0
  386. package/src/help/templates/usage.ts +24 -0
  387. package/src/help/types.ts +57 -0
  388. package/src/help/utils.ts +109 -0
  389. package/src/index.ts +93 -0
  390. package/src/logger/__tests__/logger.spec.ts +65 -0
  391. package/src/logger/index.ts +97 -0
  392. package/src/option/__tests__/global.spec.ts +141 -0
  393. package/src/option/__tests__/option.spec.ts +115 -0
  394. package/src/option/find.ts +17 -0
  395. package/src/option/index.ts +280 -0
  396. package/src/option/mapping.ts +17 -0
  397. package/src/option/utils.ts +141 -0
  398. package/src/option/validate.ts +80 -0
  399. package/src/parser/__tests__/parser.spec.ts +371 -0
  400. package/src/parser/index.ts +383 -0
  401. package/src/program/__tests__/program.spec.ts +316 -0
  402. package/src/program/index.ts +676 -0
  403. package/src/types.ts +432 -0
  404. package/src/utils/__tests__/fs.spec.ts +14 -0
  405. package/src/utils/__tests__/levenshtein.spec.ts +16 -0
  406. package/src/utils/__tests__/suggest.spec.ts +30 -0
  407. package/src/utils/colorize.ts +21 -0
  408. package/src/utils/fs.ts +13 -0
  409. package/src/utils/levenshtein.ts +28 -0
  410. package/src/utils/suggest.ts +52 -0
  411. package/src/utils/version.ts +14 -0
  412. package/src/utils/web/autocomplete.ts +19 -0
  413. package/src/utils/web/process.ts +24 -0
  414. package/src/validator/__tests__/array.spec.ts +41 -0
  415. package/src/validator/__tests__/caporal.spec.ts +132 -0
  416. package/src/validator/__tests__/function.spec.ts +52 -0
  417. package/src/validator/__tests__/regexp.spec.ts +38 -0
  418. package/src/validator/__tests__/utils.spec.ts +67 -0
  419. package/src/validator/__tests__/validate.spec.ts +24 -0
  420. package/src/validator/array.ts +31 -0
  421. package/src/validator/caporal.ts +104 -0
  422. package/src/validator/function.ts +31 -0
  423. package/src/validator/regexp.ts +34 -0
  424. package/src/validator/utils.ts +84 -0
  425. package/src/validator/validate.ts +38 -0
@@ -0,0 +1,584 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Program = void 0;
7
+ /**
8
+ * @packageDocumentation
9
+ * @module caporal/program
10
+ */
11
+ const events_1 = require("events");
12
+ const fs_1 = __importDefault(require("fs"));
13
+ const path_1 = __importDefault(require("path"));
14
+ const kebabCase_1 = __importDefault(require("lodash/kebabCase"));
15
+ const mapKeys_1 = __importDefault(require("lodash/mapKeys"));
16
+ const command_1 = require("../command");
17
+ const find_1 = require("../command/find");
18
+ const scan_1 = require("../command/scan");
19
+ const config_1 = require("../config");
20
+ const error_1 = require("../error");
21
+ const help_1 = require("../help");
22
+ const logger_1 = require("../logger");
23
+ const option_1 = require("../option");
24
+ const parser_1 = require("../parser");
25
+ const types_1 = require("../types");
26
+ const version_1 = require("../utils/version");
27
+ const LOG_LEVEL_ENV_VAR = "CAPORAL_LOG_LEVEL";
28
+ // const SUPPORTED_SHELL = ["bash", "zsh", "fish"]
29
+ /**
30
+ * Program class
31
+ *
32
+ * @noInheritDoc
33
+ */
34
+ class Program extends events_1.EventEmitter {
35
+ /**
36
+ * Program constructor.
37
+ * - Detects the "bin" name from process argv
38
+ * - Detects the version from package.json
39
+ * - Set up the help command
40
+ * @ignore
41
+ */
42
+ constructor() {
43
+ super();
44
+ this.commands = [];
45
+ this._programmaticMode = false;
46
+ /**
47
+ * Number validator. Check that the value looks like a numeric one
48
+ * and cast the provided value to a javascript `Number`.
49
+ */
50
+ this.NUMBER = types_1.CaporalValidator.NUMBER;
51
+ /**
52
+ * String validator. Mainly used to make sure the value is a string,
53
+ * and prevent Caporal auto-casting of numerical values and boolean
54
+ * strings like `true` or `false`.
55
+ */
56
+ this.STRING = types_1.CaporalValidator.STRING;
57
+ /**
58
+ * Array validator. Convert any provided value to an array. If a string is provided,
59
+ * this validator will try to split it by commas.
60
+ */
61
+ this.ARRAY = types_1.CaporalValidator.ARRAY;
62
+ /**
63
+ * Boolean validator. Check that the value looks like a boolean.
64
+ * It accepts values like `true`, `false`, `yes`, `no`, `0`, and `1`
65
+ * and will auto-cast those values to `true` or `false`.
66
+ */
67
+ this.BOOLEAN = types_1.CaporalValidator.BOOLEAN;
68
+ this._bin = path_1.default.basename(process.argv[1]);
69
+ this._version = (0, version_1.detectVersion)();
70
+ this._config = (0, config_1.createConfigurator)({
71
+ strictArgsCount: true,
72
+ strictOptions: true,
73
+ autoCast: true,
74
+ logLevelEnvVar: LOG_LEVEL_ENV_VAR,
75
+ });
76
+ this.setupHelpCommand();
77
+ this.setupErrorHandlers();
78
+ }
79
+ /**
80
+ * @internal
81
+ */
82
+ setupErrorHandlers() {
83
+ process.once("unhandledRejection", (err) => {
84
+ if (this._programmaticMode) {
85
+ throw err;
86
+ }
87
+ else {
88
+ this.emit("error", err);
89
+ }
90
+ });
91
+ this.on("error", error_1.fatalError);
92
+ }
93
+ /**
94
+ * The program-command is the command attached directly to the program,
95
+ * meaning there is no command-keyword used to trigger it.
96
+ * Mainly used for programs executing only one possible action.
97
+ *
98
+ * @internal
99
+ */
100
+ get progCommand() {
101
+ if (this._progCommand === undefined) {
102
+ this._progCommand = (0, command_1.createCommand)(this, command_1.PROG_CMD, "");
103
+ }
104
+ return this._progCommand;
105
+ }
106
+ /**
107
+ * Setup the help command
108
+ */
109
+ setupHelpCommand() {
110
+ return this.command(command_1.HELP_CMD, "Get help about a specific command")
111
+ .argument("[command]", "Command name to get help for. If the command does not exist, global help will be displayed.")
112
+ .action(async (actionParams) => {
113
+ const { args } = actionParams;
114
+ const command = args.command
115
+ ? await (0, find_1.findCommand)(this, [args.command])
116
+ : undefined;
117
+ // eslint-disable-next-line no-console
118
+ (0, option_1.showHelp)({ ...actionParams, command });
119
+ return -1;
120
+ })
121
+ .hide();
122
+ }
123
+ /**
124
+ * Customize program help. Can be called multiple times to add more paragraphs and/or sections.
125
+ *
126
+ * @param text Help contents
127
+ * @param options Display options
128
+ */
129
+ help(text, options = {}) {
130
+ (0, help_1.customizeHelp)(this, text, options);
131
+ return this;
132
+ }
133
+ /**
134
+ * Toggle strict mode.
135
+ * Shortcut to calling: `.configure({ strictArgsCount: strict, strictOptions: strict })`.
136
+ * By default, the program is strict, so if you want to disable strict checking,
137
+ * just call `.strict(false)`. This setting can be overridden at the command level.
138
+ *
139
+ * @param strict boolean enabled flag
140
+ */
141
+ strict(strict = true) {
142
+ return this.configure({
143
+ strictArgsCount: strict,
144
+ strictOptions: strict,
145
+ });
146
+ }
147
+ /**
148
+ * Configure some behavioral properties.
149
+ *
150
+ * @param props properties to set/update
151
+ */
152
+ configure(props) {
153
+ this._config.set(props);
154
+ return this;
155
+ }
156
+ /**
157
+ * Get a configuration property value. {@link ProgramConfig Possible keys}.
158
+ *
159
+ * @param key Property
160
+ * @internal
161
+ */
162
+ getConfigProperty(key) {
163
+ return this._config.get(key);
164
+ }
165
+ /**
166
+ * Return a reformatted synopsis string
167
+ *
168
+ * @internal
169
+ */
170
+ async getSynopsis() {
171
+ return (this.getBin() +
172
+ " " +
173
+ ((await this.hasCommands()) ? "<command> " : "") +
174
+ "[ARGUMENTS...] [OPTIONS...]").trim();
175
+ }
176
+ /**
177
+ * Return the discovery path, if set
178
+ *
179
+ * @internal
180
+ */
181
+ get discoveryPath() {
182
+ return this._discoveryPath;
183
+ }
184
+ /**
185
+ * Return the program version
186
+ *
187
+ * @internal
188
+ */
189
+ getVersion() {
190
+ return this._version;
191
+ }
192
+ /**
193
+ * Set the version fo your program.
194
+ * You won't likely use this method as Caporal tries to guess it from your package.json
195
+ */
196
+ version(ver) {
197
+ this._version = ver;
198
+ return this;
199
+ }
200
+ /**
201
+ * Set the program name. If not set, the filename minus the extension will be used.
202
+ */
203
+ name(name) {
204
+ this._name = name;
205
+ return this;
206
+ }
207
+ /**
208
+ * Return the program name.
209
+ *
210
+ * @internal
211
+ */
212
+ getName() {
213
+ return this._name;
214
+ }
215
+ /**
216
+ * Return the program description.
217
+ *
218
+ * @internal
219
+ */
220
+ getDescription() {
221
+ return this._description;
222
+ }
223
+ /**
224
+ * Set the program description displayed in help.
225
+ */
226
+ description(desc) {
227
+ this._description = desc;
228
+ return this;
229
+ }
230
+ /**
231
+ * Get the bin name (the name of your executable).
232
+ *
233
+ * @internal
234
+ */
235
+ getBin() {
236
+ return this._bin;
237
+ }
238
+ /**
239
+ * Sets the executable name. By default, it's auto-detected from the filename of your program.
240
+ *
241
+ * @param name Executable name
242
+ * @example
243
+ * ```ts
244
+ * program.bin('myprog')
245
+ * ```
246
+ */
247
+ bin(name) {
248
+ this._bin = name;
249
+ return this;
250
+ }
251
+ /**
252
+ * Set a custom logger for your program.
253
+ * Your logger should implement the {@link Logger} interface.
254
+ */
255
+ logger(logger) {
256
+ (0, logger_1.setLogger)(logger);
257
+ return this;
258
+ }
259
+ /**
260
+ * Get the configured logger instance
261
+ */
262
+ getLogger() {
263
+ return (0, logger_1.getLogger)();
264
+ }
265
+ /**
266
+ * Disable a global option. Will warn if the global option
267
+ * does not exist of has already been disabled.
268
+ *
269
+ * @param name Name, short, or long notation of the option to disable.
270
+ */
271
+ disableGlobalOption(name) {
272
+ const disabled = (0, option_1.disableGlobalOption)(name);
273
+ if (!disabled) {
274
+ logger_1.logger.warn("Cannot disable global option %s. Either the global option does not exist or has already been disabled.");
275
+ }
276
+ return this;
277
+ }
278
+ /**
279
+ * Returns the list of all commands registered
280
+ * - By default, Caporal creates one: the "help" command
281
+ * - When calling argument() or action() on the program instance,
282
+ * Caporal also create what is called the "program command", which
283
+ * is a command directly attach to the program, usually used
284
+ * in mono-command programs.
285
+ * @internal
286
+ */
287
+ getCommands() {
288
+ return this.commands;
289
+ }
290
+ /**
291
+ * Add a command to the program.
292
+ *
293
+ * @param name Command name
294
+ * @param description Command description
295
+ * @example
296
+ * ```ts
297
+ * program.command('order', 'Order some food')
298
+ * ```
299
+ */
300
+ command(name, description, config = {}) {
301
+ const cmd = (0, command_1.createCommand)(this, name, description, config);
302
+ this.commands.push(cmd);
303
+ return cmd;
304
+ }
305
+ /**
306
+ * Check if the program has user-defined commands.
307
+ *
308
+ * @internal
309
+ * @private
310
+ */
311
+ async hasCommands() {
312
+ return (await this.getAllCommands()).length > 1;
313
+ }
314
+ /**
315
+ * @internal
316
+ */
317
+ async getAllCommands() {
318
+ const discoveredCommands = await this.scanCommands();
319
+ return [...this.commands, ...discoveredCommands];
320
+ }
321
+ /**
322
+ * Return the log level override, if any is provided using
323
+ * the right environment variable.
324
+ *
325
+ * @internal
326
+ * @private
327
+ */
328
+ getLogLevelOverride() {
329
+ return process.env[this.getConfigProperty("logLevelEnvVar")];
330
+ }
331
+ /**
332
+ * Enable or disable auto casting of arguments & options at the program level.
333
+ *
334
+ * @param enabled
335
+ */
336
+ cast(enabled) {
337
+ return this.configure({ autoCast: enabled });
338
+ }
339
+ /**
340
+ * Sets a *unique* action for the *entire* program.
341
+ *
342
+ * @param {Function} action - Action to run
343
+ */
344
+ action(action) {
345
+ this.progCommand.action(action);
346
+ return this;
347
+ }
348
+ /**
349
+ * Add an argument to the *unique* command of the program.
350
+ */
351
+ argument(synopsis, description, options = {}) {
352
+ return this.progCommand.argument(synopsis, description, options);
353
+ }
354
+ /**
355
+ * Add an option to the *unique* command of the program,
356
+ * or add a global option to the program when `options.global`
357
+ * is set to `true`.
358
+ *
359
+ * @param synopsis Option synopsis like '-f, --force', or '-f, --file \<file\>', or '--with-openssl [path]'
360
+ * @param description Option description
361
+ * @param options Additional parameters
362
+ */
363
+ option(synopsis, description, options = {}) {
364
+ if (options.global) {
365
+ const opt = (0, option_1.createOption)(synopsis, description, options);
366
+ (0, option_1.addGlobalOption)(opt, options.action);
367
+ }
368
+ else {
369
+ this.progCommand.option(synopsis, description, options);
370
+ }
371
+ return this;
372
+ }
373
+ /**
374
+ * Discover commands from a specified path.
375
+ *
376
+ * Commands must be organized into files (one command per file) in a file tree like:
377
+ *
378
+ * ```sh
379
+ * └── commands
380
+ * ├── config
381
+ * │ ├── set.ts
382
+ * │ └── unset.ts
383
+ * ├── create
384
+ * │ ├── job.ts
385
+ * │ └── service.ts
386
+ * ├── create.ts
387
+ * ├── describe.ts
388
+ * └── get.ts
389
+ * ```
390
+ *
391
+ * The code above shows a short example of `kubectl` commands and subcommands.
392
+ * In this case, Caporal will generate the following commands:
393
+ *
394
+ * - kubectl get [args...] [options...]
395
+ * - kubectl config set [args...] [options...]
396
+ * - kubectl config unset [args...] [options...]
397
+ * - kubectl create [args...] [options...]
398
+ * - kubectl create job [args...] [options...]
399
+ * - kubectl create service [args...] [options...]
400
+ * - kubectl describe [args...] [options...]
401
+ * - kubectl get [args...] [options...]
402
+ *
403
+ * Notice how the `config` command has a mandatory subcommand associated,
404
+ * hence cannot be called without a subcommand, contrary to the `create` command.
405
+ * This is why there is no `config.ts` in the tree.
406
+ *
407
+ * @param path
408
+ */
409
+ discover(dirPath) {
410
+ let stat;
411
+ try {
412
+ stat = fs_1.default.statSync(dirPath);
413
+ // eslint-disable-next-line no-empty
414
+ }
415
+ catch (e) { }
416
+ if (!stat || !stat.isDirectory()) {
417
+ throw new Error("Caporal setup error: parameter `dirPath` of discover() should be a directory");
418
+ }
419
+ this._discoveryPath = dirPath;
420
+ return this;
421
+ }
422
+ /**
423
+ * Do a full scan of the discovery path to get all existing commands
424
+ * This should only be used to generate the full list of command,
425
+ * as for help rendering
426
+ *
427
+ * @private
428
+ */
429
+ async scanCommands() {
430
+ if (this._discoveryPath === undefined) {
431
+ return [];
432
+ }
433
+ if (this._discoveredCommands) {
434
+ return this._discoveredCommands;
435
+ }
436
+ this._discoveredCommands = await (0, scan_1.scanCommands)(this, this._discoveryPath);
437
+ return this._discoveredCommands;
438
+ }
439
+ /* istanbul ignore next */
440
+ /**
441
+ * Reset all commands
442
+ *
443
+ * @internal
444
+ */
445
+ reset() {
446
+ this.commands = [];
447
+ this._progCommand = undefined;
448
+ this.setupHelpCommand();
449
+ return this;
450
+ }
451
+ /**
452
+ * Run the program by parsing command line arguments.
453
+ * Caporal will automatically detect command line arguments from `process.argv` values,
454
+ * but it can be overridden by providing the `argv` parameter. It returns a Promise
455
+ * of the value returned by the *Action* triggered.
456
+ *
457
+ * ::: warning Be careful
458
+ * This method returns a `Promise`. You'll usually ignore the returned promise and call run() like this:
459
+ *
460
+ * ```ts
461
+ * [...]
462
+ * program.action(...)
463
+ * program.run()
464
+ * ```
465
+ *
466
+ * If you do add some `.catch()` handler to it, Caporal won't display any potential errors
467
+ * that the promise could reject, and will let you the responsibility to do it.
468
+ * :::
469
+ *
470
+ * @param argv Command line arguments to parse, default to `process.argv.slice(2)`.
471
+ */
472
+ async run(argv) {
473
+ if (!argv) {
474
+ // used on web playground
475
+ if (process.env.CAPORAL_CMD_LINE) {
476
+ argv = process.env.CAPORAL_CMD_LINE.split(" ").slice(1);
477
+ // defaut value for common usage
478
+ }
479
+ else {
480
+ argv = process.argv.slice(2);
481
+ }
482
+ }
483
+ /*
484
+ Search for the command from args, then, if a default command exists,
485
+ take it, otherwise take the command attached to the program,
486
+ and lastly the help command/
487
+ */
488
+ const cmd = await this.findCommand(argv);
489
+ // parse command line args
490
+ const result = (0, parser_1.parseArgv)(cmd?.getParserConfig(), argv);
491
+ /*
492
+ Run command with parsed args.
493
+ We are forced to catch a potential error to prevent the rejected
494
+ promise to propagate un in the stack.
495
+ */
496
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
497
+ return this._run(result, cmd); /*
498
+ .catch((e) => e) */
499
+ }
500
+ /**
501
+ * Try to find the executed command from argv
502
+ * If command cannot be found from argv, return the default command if any,
503
+ * then the program-command if any, or finally `undefined`.
504
+ * If argv is empty, and there is no defaultCommand or progCommand
505
+ * use the help command
506
+ *
507
+ * @param argv
508
+ */
509
+ async findCommand(argv) {
510
+ const cmd = await (0, find_1.findCommand)(this, argv);
511
+ if (cmd) {
512
+ return cmd;
513
+ }
514
+ /**
515
+ * If we've been asked for help (and only help) and there is no progCommand,
516
+ * so we should return undefined in order for the help command to display
517
+ * the global help.
518
+ * Fixes this particular use case: Fixes this particular use case:
519
+ * https://github.com/mattallty/Caporal.js/issues/196
520
+ */
521
+ if (argv.every((arg) => arg === "--help") && !this._progCommand) {
522
+ return undefined;
523
+ }
524
+ return this.defaultCommand || this._progCommand;
525
+ }
526
+ /**
527
+ * Run a command, providing parsed data
528
+ *
529
+ * @param result
530
+ * @param cmd
531
+ * @internal
532
+ */
533
+ async _run(result, cmd) {
534
+ // Override logger level via ENV if needed
535
+ const loggerLevel = this.getLogLevelOverride();
536
+ if (loggerLevel && Object.keys(logger_1.logger.levels).includes(loggerLevel)) {
537
+ logger_1.logger.level = loggerLevel;
538
+ }
539
+ // try to run the command
540
+ // try {
541
+ if (!cmd) {
542
+ // we may not have any associated command, but some global options may have been passed
543
+ // process them, if any
544
+ // Process any global options
545
+ const processedResult = { ...result, errors: [], args: {} };
546
+ const shouldStop = await (0, option_1.processGlobalOptions)(processedResult, this);
547
+ if (shouldStop) {
548
+ this.emit("run");
549
+ return -1;
550
+ }
551
+ // todo: use case: "git unknown-command some args" will display "unknown command 'git'"
552
+ // but should display "unknown command 'git unknown-command'"
553
+ throw new error_1.UnknownOrUnspecifiedCommandError(this, result.rawArgv[0]);
554
+ }
555
+ const ret = await cmd.run(result);
556
+ this.emit("run", ret);
557
+ return ret;
558
+ }
559
+ /**
560
+ * Programmatic usage. Execute input command with given arguments & options
561
+ *
562
+ * Not ideal regarding type casting etc.
563
+ *
564
+ * @param args argv array
565
+ * @param options options object
566
+ * @param ddash double dash array
567
+ * @public
568
+ */
569
+ async exec(args, options = {}, ddash = []) {
570
+ this._programmaticMode = true;
571
+ const cmd = await this.findCommand(args);
572
+ options = (0, mapKeys_1.default)(options, (v, key) => (0, kebabCase_1.default)(key));
573
+ return this._run({
574
+ args,
575
+ options,
576
+ line: args.join(" "),
577
+ rawOptions: options,
578
+ rawArgv: args,
579
+ ddash,
580
+ }, cmd);
581
+ }
582
+ }
583
+ exports.Program = Program;
584
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/program/index.ts"],"names":[],"mappings":"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"}