@bemoje/cli 0.0.4 → 0.0.5

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 (707) hide show
  1. package/.eslintrc.json +5 -0
  2. package/.swcrc +32 -0
  3. package/dist/cjs/arg/ArgumentBuilder.js +45 -0
  4. package/dist/cjs/arg/ArgumentBuilder.js.map +1 -0
  5. package/dist/cjs/arg/ArgumentParserSelector.js +15 -0
  6. package/dist/cjs/arg/ArgumentParserSelector.js.map +1 -0
  7. package/dist/cjs/arg/ArgumentReader.js +38 -0
  8. package/dist/cjs/arg/ArgumentReader.js.map +1 -0
  9. package/dist/cjs/arg/ArgumentValidatorSelector.js +16 -0
  10. package/dist/cjs/arg/ArgumentValidatorSelector.js.map +1 -0
  11. package/dist/cjs/cmd/CLI.js +16 -0
  12. package/dist/cjs/cmd/CLI.js.map +1 -0
  13. package/dist/cjs/cmd/CommandBuilder.js +1098 -0
  14. package/dist/cjs/cmd/CommandBuilder.js.map +1 -0
  15. package/dist/cjs/cmd/CommandBuilderMetaData.js +43 -0
  16. package/dist/cjs/cmd/CommandBuilderMetaData.js.map +1 -0
  17. package/dist/cjs/cmd/CommandFeatureSelector.js +112 -0
  18. package/dist/cjs/cmd/CommandFeatureSelector.js.map +1 -0
  19. package/dist/cjs/cmd/DefaultHelpConfig.js +141 -0
  20. package/dist/cjs/cmd/DefaultHelpConfig.js.map +1 -0
  21. package/dist/cjs/cmd/asdas.js +27 -0
  22. package/dist/cjs/cmd/asdas.js.map +1 -0
  23. package/dist/cjs/core/OutputManager.js +99 -0
  24. package/dist/cjs/core/OutputManager.js.map +1 -0
  25. package/dist/cjs/core/ParserSelector.js +36 -0
  26. package/dist/cjs/core/ParserSelector.js.map +1 -0
  27. package/dist/cjs/core/ValidatorSelector.js +36 -0
  28. package/dist/cjs/core/ValidatorSelector.js.map +1 -0
  29. package/dist/cjs/core/splitCombinedArgvShorts.js +15 -0
  30. package/dist/cjs/core/splitCombinedArgvShorts.js.map +1 -0
  31. package/dist/cjs/db/AbstractJsonFileSection.js +190 -0
  32. package/dist/cjs/db/AbstractJsonFileSection.js.map +1 -0
  33. package/dist/cjs/db/AppDataSection.js +48 -0
  34. package/dist/cjs/db/AppDataSection.js.map +1 -0
  35. package/dist/cjs/db/ConfigSection.js +71 -0
  36. package/dist/cjs/db/ConfigSection.js.map +1 -0
  37. package/dist/cjs/db/JsonFile.js +55 -0
  38. package/dist/cjs/db/JsonFile.js.map +1 -0
  39. package/dist/cjs/db/PresetsSection.js +92 -0
  40. package/dist/cjs/db/PresetsSection.js.map +1 -0
  41. package/dist/cjs/index.js +120 -0
  42. package/dist/cjs/index.js.map +1 -0
  43. package/dist/cjs/opt/OptionArgumentParserSelector.js +16 -0
  44. package/dist/cjs/opt/OptionArgumentParserSelector.js.map +1 -0
  45. package/dist/cjs/opt/OptionArgumentValidatorSelector.js +19 -0
  46. package/dist/cjs/opt/OptionArgumentValidatorSelector.js.map +1 -0
  47. package/dist/cjs/opt/OptionBuilder.js +88 -0
  48. package/dist/cjs/opt/OptionBuilder.js.map +1 -0
  49. package/dist/cjs/opt/OptionHelpers.js +57 -0
  50. package/dist/cjs/opt/OptionHelpers.js.map +1 -0
  51. package/dist/cjs/opt/OptionReader.js +66 -0
  52. package/dist/cjs/opt/OptionReader.js.map +1 -0
  53. package/dist/cjs/proto/overrideCommanderPrototype.js +37 -0
  54. package/dist/cjs/proto/overrideCommanderPrototype.js.map +1 -0
  55. package/dist/cjs/types/IConfig.js +3 -0
  56. package/dist/cjs/types/IConfig.js.map +1 -0
  57. package/dist/cjs/types/IPreset.js +3 -0
  58. package/dist/cjs/types/IPreset.js.map +1 -0
  59. package/dist/cjs/util/array/arrLast.js +21 -0
  60. package/dist/cjs/util/array/arrLast.js.map +1 -0
  61. package/dist/cjs/util/array/arrSome.js +26 -0
  62. package/dist/cjs/util/array/arrSome.js.map +1 -0
  63. package/dist/cjs/util/array/types/ArrayPredicate.js +3 -0
  64. package/dist/cjs/util/array/types/ArrayPredicate.js.map +1 -0
  65. package/dist/cjs/util/db/JsonDB.js +145 -0
  66. package/dist/cjs/util/db/JsonDB.js.map +1 -0
  67. package/dist/cjs/util/errors/ErrorParser.js +164 -0
  68. package/dist/cjs/util/errors/ErrorParser.js.map +1 -0
  69. package/dist/cjs/util/fs/promptUserEditInTextEditor/IGetUserInputFromEditorOptions.js +3 -0
  70. package/dist/cjs/util/fs/promptUserEditInTextEditor/IGetUserInputFromEditorOptions.js.map +1 -0
  71. package/dist/cjs/util/fs/promptUserEditInTextEditor/promptUserEditInTextEditorSync.js +32 -0
  72. package/dist/cjs/util/fs/promptUserEditInTextEditor/promptUserEditInTextEditorSync.js.map +1 -0
  73. package/dist/cjs/util/fs/promptUserEditInTextEditor/promptUserEditJsonInTextEditorSync.js +25 -0
  74. package/dist/cjs/util/fs/promptUserEditInTextEditor/promptUserEditJsonInTextEditorSync.js.map +1 -0
  75. package/dist/cjs/util/fs/readFile/readFileSafeSync.js +28 -0
  76. package/dist/cjs/util/fs/readFile/readFileSafeSync.js.map +1 -0
  77. package/dist/cjs/util/fs/readFile/readFileSync.js +20 -0
  78. package/dist/cjs/util/fs/readFile/readFileSync.js.map +1 -0
  79. package/dist/cjs/util/fs/readJsonFile/readJsonFileSafeSync.js +24 -0
  80. package/dist/cjs/util/fs/readJsonFile/readJsonFileSafeSync.js.map +1 -0
  81. package/dist/cjs/util/fs/removeFile/removeFile.js +6 -0
  82. package/dist/cjs/util/fs/removeFile/removeFile.js.map +1 -0
  83. package/dist/cjs/util/fs/tempFile/tempFileSync.js +28 -0
  84. package/dist/cjs/util/fs/tempFile/tempFileSync.js.map +1 -0
  85. package/dist/cjs/util/fs/types/IReadJsonFileOptions.js +3 -0
  86. package/dist/cjs/util/fs/types/IReadJsonFileOptions.js.map +1 -0
  87. package/dist/cjs/util/fs/writeFile/writeFileSafeSync.js +6 -0
  88. package/dist/cjs/util/fs/writeFile/writeFileSafeSync.js.map +1 -0
  89. package/dist/cjs/util/fs/writeFile/writeFileSync.js +6 -0
  90. package/dist/cjs/util/fs/writeFile/writeFileSync.js.map +1 -0
  91. package/dist/cjs/util/fs/writeJsonFile/writeJsonFileSafe.js +6 -0
  92. package/dist/cjs/util/fs/writeJsonFile/writeJsonFileSafe.js.map +1 -0
  93. package/dist/cjs/util/function/MethodDisabler.js +94 -0
  94. package/dist/cjs/util/function/MethodDisabler.js.map +1 -0
  95. package/dist/cjs/util/function/funSetName.js +21 -0
  96. package/dist/cjs/util/function/funSetName.js.map +1 -0
  97. package/dist/cjs/util/node/execInherit.js +19 -0
  98. package/dist/cjs/util/node/execInherit.js.map +1 -0
  99. package/dist/cjs/util/node/formatTableForTerminal.js +21 -0
  100. package/dist/cjs/util/node/formatTableForTerminal.js.map +1 -0
  101. package/dist/cjs/util/object/arrAssign.js +6 -0
  102. package/dist/cjs/util/object/arrAssign.js.map +1 -0
  103. package/dist/cjs/util/object/createArrayMerger.js +20 -0
  104. package/dist/cjs/util/object/createArrayMerger.js.map +1 -0
  105. package/dist/cjs/util/object/createObjectMerger.js +20 -0
  106. package/dist/cjs/util/object/createObjectMerger.js.map +1 -0
  107. package/dist/cjs/util/object/objAssign.js +6 -0
  108. package/dist/cjs/util/object/objAssign.js.map +1 -0
  109. package/dist/cjs/util/object/objUpdatePropertyDescriptors.js +28 -0
  110. package/dist/cjs/util/object/objUpdatePropertyDescriptors.js.map +1 -0
  111. package/dist/cjs/util/object/realizeLazyProperty.js +14 -0
  112. package/dist/cjs/util/object/realizeLazyProperty.js.map +1 -0
  113. package/dist/cjs/util/object/setNonEnumerable.js +25 -0
  114. package/dist/cjs/util/object/setNonEnumerable.js.map +1 -0
  115. package/dist/cjs/util/os/defaultOpenInEditorCommand.js +18 -0
  116. package/dist/cjs/util/os/defaultOpenInEditorCommand.js.map +1 -0
  117. package/dist/cjs/util/os/isOSX.js +13 -0
  118. package/dist/cjs/util/os/isOSX.js.map +1 -0
  119. package/dist/cjs/util/os/isVsCodeInstalled.js +19 -0
  120. package/dist/cjs/util/os/isVsCodeInstalled.js.map +1 -0
  121. package/dist/cjs/util/os/isWindows.js +16 -0
  122. package/dist/cjs/util/os/isWindows.js.map +1 -0
  123. package/dist/cjs/util/path/getTempDataPath.js +20 -0
  124. package/dist/cjs/util/path/getTempDataPath.js.map +1 -0
  125. package/dist/cjs/util/regex/regexEscapeString.js +18 -0
  126. package/dist/cjs/util/regex/regexEscapeString.js.map +1 -0
  127. package/dist/cjs/util/string/strEnsureStartsWith.js +19 -0
  128. package/dist/cjs/util/string/strEnsureStartsWith.js.map +1 -0
  129. package/dist/cjs/util/string/strFirstCharToUpperCase.js +16 -0
  130. package/dist/cjs/util/string/strFirstCharToUpperCase.js.map +1 -0
  131. package/dist/cjs/util/string/strIsLowerCase.js +18 -0
  132. package/dist/cjs/util/string/strIsLowerCase.js.map +1 -0
  133. package/dist/cjs/util/string/strIsUpperCase.js +18 -0
  134. package/dist/cjs/util/string/strIsUpperCase.js.map +1 -0
  135. package/dist/cjs/util/string/strSplitCamelCase.js +55 -0
  136. package/dist/cjs/util/string/strSplitCamelCase.js.map +1 -0
  137. package/dist/cjs/util/string-parsers/createBooleanParser.js +21 -0
  138. package/dist/cjs/util/string-parsers/createBooleanParser.js.map +1 -0
  139. package/dist/cjs/util/string-parsers/createTypedListParser.js +22 -0
  140. package/dist/cjs/util/string-parsers/createTypedListParser.js.map +1 -0
  141. package/dist/cjs/util/string-parsers/parseBoolean.js +15 -0
  142. package/dist/cjs/util/string-parsers/parseBoolean.js.map +1 -0
  143. package/dist/cjs/util/string-parsers/parseInteger.js +17 -0
  144. package/dist/cjs/util/string-parsers/parseInteger.js.map +1 -0
  145. package/dist/cjs/util/string-parsers/parseNumber.js +13 -0
  146. package/dist/cjs/util/string-parsers/parseNumber.js.map +1 -0
  147. package/dist/cjs/util/string-parsers/parseString.js +8 -0
  148. package/dist/cjs/util/string-parsers/parseString.js.map +1 -0
  149. package/dist/cjs/util/types/Any.js +3 -0
  150. package/dist/cjs/util/types/Any.js.map +1 -0
  151. package/dist/cjs/util/types/DeepArray.js +3 -0
  152. package/dist/cjs/util/types/DeepArray.js.map +1 -0
  153. package/dist/cjs/util/types/DeepObject.js +3 -0
  154. package/dist/cjs/util/types/DeepObject.js.map +1 -0
  155. package/dist/cjs/util/types/JsonArray.js +3 -0
  156. package/dist/cjs/util/types/JsonArray.js.map +1 -0
  157. package/dist/cjs/util/types/JsonDefinedPrimitive.js +6 -0
  158. package/dist/cjs/util/types/JsonDefinedPrimitive.js.map +1 -0
  159. package/dist/cjs/util/types/JsonObject.js +3 -0
  160. package/dist/cjs/util/types/JsonObject.js.map +1 -0
  161. package/dist/cjs/util/types/JsonRawPrimitive.js +3 -0
  162. package/dist/cjs/util/types/JsonRawPrimitive.js.map +1 -0
  163. package/dist/cjs/util/types/JsonValue.js +3 -0
  164. package/dist/cjs/util/types/JsonValue.js.map +1 -0
  165. package/dist/cjs/util/types/ObjectKey.js +3 -0
  166. package/dist/cjs/util/types/ObjectKey.js.map +1 -0
  167. package/dist/cjs/util/types/TConstructor.js +3 -0
  168. package/dist/cjs/util/types/TConstructor.js.map +1 -0
  169. package/dist/cjs/util/types/TFunction.js +3 -0
  170. package/dist/cjs/util/types/TFunction.js.map +1 -0
  171. package/dist/cjs/util/types/TFunctionNoNew.js +3 -0
  172. package/dist/cjs/util/types/TFunctionNoNew.js.map +1 -0
  173. package/dist/cjs/util/types/TPlainObject.js +3 -0
  174. package/dist/cjs/util/types/TPlainObject.js.map +1 -0
  175. package/dist/cjs/util/types/TPrimitive.js +3 -0
  176. package/dist/cjs/util/types/TPrimitive.js.map +1 -0
  177. package/dist/cjs/util/types/TStringParser.js +3 -0
  178. package/dist/cjs/util/types/TStringParser.js.map +1 -0
  179. package/dist/cjs/util/types/TValidator.js +3 -0
  180. package/dist/cjs/util/types/TValidator.js.map +1 -0
  181. package/dist/cjs/util/validation/createTypedArrayValidator.js +26 -0
  182. package/dist/cjs/util/validation/createTypedArrayValidator.js.map +1 -0
  183. package/dist/cjs/util/validation/ensureThat.js +12 -0
  184. package/dist/cjs/util/validation/ensureThat.js.map +1 -0
  185. package/dist/cjs/util/validation/isArray.js +5 -0
  186. package/dist/cjs/util/validation/isArray.js.map +1 -0
  187. package/dist/cjs/util/validation/isBoolean.js +8 -0
  188. package/dist/cjs/util/validation/isBoolean.js.map +1 -0
  189. package/dist/cjs/util/validation/isFunction.js +17 -0
  190. package/dist/cjs/util/validation/isFunction.js.map +1 -0
  191. package/dist/cjs/util/validation/isNamedFunction.js +11 -0
  192. package/dist/cjs/util/validation/isNamedFunction.js.map +1 -0
  193. package/dist/cjs/util/validation/isNamedFunctionArray.js +9 -0
  194. package/dist/cjs/util/validation/isNamedFunctionArray.js.map +1 -0
  195. package/dist/cjs/util/validation/isObject.js +22 -0
  196. package/dist/cjs/util/validation/isObject.js.map +1 -0
  197. package/dist/cjs/util/validation/isPlainObject.js +19 -0
  198. package/dist/cjs/util/validation/isPlainObject.js.map +1 -0
  199. package/dist/cjs/util/validation/isPrimitive.js +18 -0
  200. package/dist/cjs/util/validation/isPrimitive.js.map +1 -0
  201. package/dist/cjs/util/validation/isString.js +8 -0
  202. package/dist/cjs/util/validation/isString.js.map +1 -0
  203. package/dist/cjs/util/validation/isStringArray.js +12 -0
  204. package/dist/cjs/util/validation/isStringArray.js.map +1 -0
  205. package/dist/cjs/util/validation/isStringWithNoSpacesOrDashes.js +9 -0
  206. package/dist/cjs/util/validation/isStringWithNoSpacesOrDashes.js.map +1 -0
  207. package/dist/cjs/util/validation/numbers/isInteger.js +17 -0
  208. package/dist/cjs/util/validation/numbers/isInteger.js.map +1 -0
  209. package/dist/cjs/util/validation/numbers/isValidNumber.js +22 -0
  210. package/dist/cjs/util/validation/numbers/isValidNumber.js.map +1 -0
  211. package/dist/esm/arg/ArgumentBuilder.js +41 -0
  212. package/dist/esm/arg/ArgumentBuilder.js.map +1 -0
  213. package/dist/esm/arg/ArgumentParserSelector.js +11 -0
  214. package/dist/esm/arg/ArgumentParserSelector.js.map +1 -0
  215. package/dist/esm/arg/ArgumentReader.js +34 -0
  216. package/dist/esm/arg/ArgumentReader.js.map +1 -0
  217. package/dist/esm/arg/ArgumentValidatorSelector.js +12 -0
  218. package/dist/esm/arg/ArgumentValidatorSelector.js.map +1 -0
  219. package/dist/esm/cmd/CLI.js +12 -0
  220. package/dist/esm/cmd/CLI.js.map +1 -0
  221. package/dist/esm/cmd/CommandBuilder.js +1091 -0
  222. package/dist/esm/cmd/CommandBuilder.js.map +1 -0
  223. package/dist/esm/cmd/CommandBuilderMetaData.js +39 -0
  224. package/dist/esm/cmd/CommandBuilderMetaData.js.map +1 -0
  225. package/dist/esm/cmd/CommandFeatureSelector.js +108 -0
  226. package/dist/esm/cmd/CommandFeatureSelector.js.map +1 -0
  227. package/dist/esm/cmd/DefaultHelpConfig.js +135 -0
  228. package/dist/esm/cmd/DefaultHelpConfig.js.map +1 -0
  229. package/dist/esm/cmd/asdas.js +25 -0
  230. package/dist/esm/cmd/asdas.js.map +1 -0
  231. package/dist/esm/core/OutputManager.js +92 -0
  232. package/dist/esm/core/OutputManager.js.map +1 -0
  233. package/dist/esm/core/ParserSelector.js +32 -0
  234. package/dist/esm/core/ParserSelector.js.map +1 -0
  235. package/dist/esm/core/ValidatorSelector.js +32 -0
  236. package/dist/esm/core/ValidatorSelector.js.map +1 -0
  237. package/dist/esm/core/splitCombinedArgvShorts.js +11 -0
  238. package/dist/esm/core/splitCombinedArgvShorts.js.map +1 -0
  239. package/dist/esm/db/AbstractJsonFileSection.js +186 -0
  240. package/dist/esm/db/AbstractJsonFileSection.js.map +1 -0
  241. package/dist/esm/db/AppDataSection.js +44 -0
  242. package/dist/esm/db/AppDataSection.js.map +1 -0
  243. package/dist/esm/db/ConfigSection.js +67 -0
  244. package/dist/esm/db/ConfigSection.js.map +1 -0
  245. package/dist/esm/db/JsonFile.js +51 -0
  246. package/dist/esm/db/JsonFile.js.map +1 -0
  247. package/dist/esm/db/PresetsSection.js +88 -0
  248. package/dist/esm/db/PresetsSection.js.map +1 -0
  249. package/dist/esm/index.js +104 -0
  250. package/dist/esm/index.js.map +1 -0
  251. package/dist/esm/opt/OptionArgumentParserSelector.js +12 -0
  252. package/dist/esm/opt/OptionArgumentParserSelector.js.map +1 -0
  253. package/dist/esm/opt/OptionArgumentValidatorSelector.js +15 -0
  254. package/dist/esm/opt/OptionArgumentValidatorSelector.js.map +1 -0
  255. package/dist/esm/opt/OptionBuilder.js +84 -0
  256. package/dist/esm/opt/OptionBuilder.js.map +1 -0
  257. package/dist/esm/opt/OptionHelpers.js +54 -0
  258. package/dist/esm/opt/OptionHelpers.js.map +1 -0
  259. package/dist/esm/opt/OptionReader.js +62 -0
  260. package/dist/esm/opt/OptionReader.js.map +1 -0
  261. package/dist/esm/proto/overrideCommanderPrototype.js +34 -0
  262. package/dist/esm/proto/overrideCommanderPrototype.js.map +1 -0
  263. package/dist/esm/types/IConfig.js +2 -0
  264. package/dist/esm/types/IConfig.js.map +1 -0
  265. package/dist/esm/types/IPreset.js +2 -0
  266. package/dist/esm/types/IPreset.js.map +1 -0
  267. package/dist/esm/util/array/arrLast.js +17 -0
  268. package/dist/esm/util/array/arrLast.js.map +1 -0
  269. package/dist/esm/util/array/arrSome.js +22 -0
  270. package/dist/esm/util/array/arrSome.js.map +1 -0
  271. package/dist/esm/util/array/types/ArrayPredicate.js +2 -0
  272. package/dist/esm/util/array/types/ArrayPredicate.js.map +1 -0
  273. package/dist/esm/util/db/JsonDB.js +141 -0
  274. package/dist/esm/util/db/JsonDB.js.map +1 -0
  275. package/dist/esm/util/errors/ErrorParser.js +154 -0
  276. package/dist/esm/util/errors/ErrorParser.js.map +1 -0
  277. package/dist/esm/util/fs/promptUserEditInTextEditor/IGetUserInputFromEditorOptions.js +2 -0
  278. package/dist/esm/util/fs/promptUserEditInTextEditor/IGetUserInputFromEditorOptions.js.map +1 -0
  279. package/dist/esm/util/fs/promptUserEditInTextEditor/promptUserEditInTextEditorSync.js +28 -0
  280. package/dist/esm/util/fs/promptUserEditInTextEditor/promptUserEditInTextEditorSync.js.map +1 -0
  281. package/dist/esm/util/fs/promptUserEditInTextEditor/promptUserEditJsonInTextEditorSync.js +21 -0
  282. package/dist/esm/util/fs/promptUserEditInTextEditor/promptUserEditJsonInTextEditorSync.js.map +1 -0
  283. package/dist/esm/util/fs/readFile/readFileSafeSync.js +21 -0
  284. package/dist/esm/util/fs/readFile/readFileSafeSync.js.map +1 -0
  285. package/dist/esm/util/fs/readFile/readFileSync.js +13 -0
  286. package/dist/esm/util/fs/readFile/readFileSync.js.map +1 -0
  287. package/dist/esm/util/fs/readJsonFile/readJsonFileSafeSync.js +17 -0
  288. package/dist/esm/util/fs/readJsonFile/readJsonFileSafeSync.js.map +1 -0
  289. package/dist/esm/util/fs/removeFile/removeFile.js +2 -0
  290. package/dist/esm/util/fs/removeFile/removeFile.js.map +1 -0
  291. package/dist/esm/util/fs/tempFile/tempFileSync.js +21 -0
  292. package/dist/esm/util/fs/tempFile/tempFileSync.js.map +1 -0
  293. package/dist/esm/util/fs/types/IReadJsonFileOptions.js +2 -0
  294. package/dist/esm/util/fs/types/IReadJsonFileOptions.js.map +1 -0
  295. package/dist/esm/util/fs/writeFile/writeFileSafeSync.js +2 -0
  296. package/dist/esm/util/fs/writeFile/writeFileSafeSync.js.map +1 -0
  297. package/dist/esm/util/fs/writeFile/writeFileSync.js +2 -0
  298. package/dist/esm/util/fs/writeFile/writeFileSync.js.map +1 -0
  299. package/dist/esm/util/fs/writeJsonFile/writeJsonFileSafe.js +2 -0
  300. package/dist/esm/util/fs/writeJsonFile/writeJsonFileSafe.js.map +1 -0
  301. package/dist/esm/util/function/MethodDisabler.js +90 -0
  302. package/dist/esm/util/function/MethodDisabler.js.map +1 -0
  303. package/dist/esm/util/function/funSetName.js +17 -0
  304. package/dist/esm/util/function/funSetName.js.map +1 -0
  305. package/dist/esm/util/node/execInherit.js +15 -0
  306. package/dist/esm/util/node/execInherit.js.map +1 -0
  307. package/dist/esm/util/node/formatTableForTerminal.js +14 -0
  308. package/dist/esm/util/node/formatTableForTerminal.js.map +1 -0
  309. package/dist/esm/util/object/arrAssign.js +3 -0
  310. package/dist/esm/util/object/arrAssign.js.map +1 -0
  311. package/dist/esm/util/object/createArrayMerger.js +16 -0
  312. package/dist/esm/util/object/createArrayMerger.js.map +1 -0
  313. package/dist/esm/util/object/createObjectMerger.js +16 -0
  314. package/dist/esm/util/object/createObjectMerger.js.map +1 -0
  315. package/dist/esm/util/object/objAssign.js +3 -0
  316. package/dist/esm/util/object/objAssign.js.map +1 -0
  317. package/dist/esm/util/object/objUpdatePropertyDescriptors.js +24 -0
  318. package/dist/esm/util/object/objUpdatePropertyDescriptors.js.map +1 -0
  319. package/dist/esm/util/object/realizeLazyProperty.js +10 -0
  320. package/dist/esm/util/object/realizeLazyProperty.js.map +1 -0
  321. package/dist/esm/util/object/setNonEnumerable.js +21 -0
  322. package/dist/esm/util/object/setNonEnumerable.js.map +1 -0
  323. package/dist/esm/util/os/defaultOpenInEditorCommand.js +14 -0
  324. package/dist/esm/util/os/defaultOpenInEditorCommand.js.map +1 -0
  325. package/dist/esm/util/os/isOSX.js +9 -0
  326. package/dist/esm/util/os/isOSX.js.map +1 -0
  327. package/dist/esm/util/os/isVsCodeInstalled.js +15 -0
  328. package/dist/esm/util/os/isVsCodeInstalled.js.map +1 -0
  329. package/dist/esm/util/os/isWindows.js +12 -0
  330. package/dist/esm/util/os/isWindows.js.map +1 -0
  331. package/dist/esm/util/path/getTempDataPath.js +13 -0
  332. package/dist/esm/util/path/getTempDataPath.js.map +1 -0
  333. package/dist/esm/util/regex/regexEscapeString.js +14 -0
  334. package/dist/esm/util/regex/regexEscapeString.js.map +1 -0
  335. package/dist/esm/util/string/strEnsureStartsWith.js +15 -0
  336. package/dist/esm/util/string/strEnsureStartsWith.js.map +1 -0
  337. package/dist/esm/util/string/strFirstCharToUpperCase.js +12 -0
  338. package/dist/esm/util/string/strFirstCharToUpperCase.js.map +1 -0
  339. package/dist/esm/util/string/strIsLowerCase.js +14 -0
  340. package/dist/esm/util/string/strIsLowerCase.js.map +1 -0
  341. package/dist/esm/util/string/strIsUpperCase.js +14 -0
  342. package/dist/esm/util/string/strIsUpperCase.js.map +1 -0
  343. package/dist/esm/util/string/strSplitCamelCase.js +51 -0
  344. package/dist/esm/util/string/strSplitCamelCase.js.map +1 -0
  345. package/dist/esm/util/string-parsers/createBooleanParser.js +17 -0
  346. package/dist/esm/util/string-parsers/createBooleanParser.js.map +1 -0
  347. package/dist/esm/util/string-parsers/createTypedListParser.js +18 -0
  348. package/dist/esm/util/string-parsers/createTypedListParser.js.map +1 -0
  349. package/dist/esm/util/string-parsers/parseBoolean.js +12 -0
  350. package/dist/esm/util/string-parsers/parseBoolean.js.map +1 -0
  351. package/dist/esm/util/string-parsers/parseInteger.js +13 -0
  352. package/dist/esm/util/string-parsers/parseInteger.js.map +1 -0
  353. package/dist/esm/util/string-parsers/parseNumber.js +9 -0
  354. package/dist/esm/util/string-parsers/parseNumber.js.map +1 -0
  355. package/dist/esm/util/string-parsers/parseString.js +4 -0
  356. package/dist/esm/util/string-parsers/parseString.js.map +1 -0
  357. package/dist/esm/util/types/Any.js +2 -0
  358. package/dist/esm/util/types/Any.js.map +1 -0
  359. package/dist/esm/util/types/DeepArray.js +2 -0
  360. package/dist/esm/util/types/DeepArray.js.map +1 -0
  361. package/dist/esm/util/types/DeepObject.js +2 -0
  362. package/dist/esm/util/types/DeepObject.js.map +1 -0
  363. package/dist/esm/util/types/JsonArray.js +2 -0
  364. package/dist/esm/util/types/JsonArray.js.map +1 -0
  365. package/dist/esm/util/types/JsonDefinedPrimitive.js +5 -0
  366. package/dist/esm/util/types/JsonDefinedPrimitive.js.map +1 -0
  367. package/dist/esm/util/types/JsonObject.js +2 -0
  368. package/dist/esm/util/types/JsonObject.js.map +1 -0
  369. package/dist/esm/util/types/JsonRawPrimitive.js +2 -0
  370. package/dist/esm/util/types/JsonRawPrimitive.js.map +1 -0
  371. package/dist/esm/util/types/JsonValue.js +2 -0
  372. package/dist/esm/util/types/JsonValue.js.map +1 -0
  373. package/dist/esm/util/types/ObjectKey.js +2 -0
  374. package/dist/esm/util/types/ObjectKey.js.map +1 -0
  375. package/dist/esm/util/types/TConstructor.js +2 -0
  376. package/dist/esm/util/types/TConstructor.js.map +1 -0
  377. package/dist/esm/util/types/TFunction.js +2 -0
  378. package/dist/esm/util/types/TFunction.js.map +1 -0
  379. package/dist/esm/util/types/TFunctionNoNew.js +2 -0
  380. package/dist/esm/util/types/TFunctionNoNew.js.map +1 -0
  381. package/dist/esm/util/types/TPlainObject.js +2 -0
  382. package/dist/esm/util/types/TPlainObject.js.map +1 -0
  383. package/dist/esm/util/types/TPrimitive.js +2 -0
  384. package/dist/esm/util/types/TPrimitive.js.map +1 -0
  385. package/dist/esm/util/types/TStringParser.js +2 -0
  386. package/dist/esm/util/types/TStringParser.js.map +1 -0
  387. package/dist/esm/util/types/TValidator.js +2 -0
  388. package/dist/esm/util/types/TValidator.js.map +1 -0
  389. package/dist/esm/util/validation/createTypedArrayValidator.js +22 -0
  390. package/dist/esm/util/validation/createTypedArrayValidator.js.map +1 -0
  391. package/dist/esm/util/validation/ensureThat.js +8 -0
  392. package/dist/esm/util/validation/ensureThat.js.map +1 -0
  393. package/dist/esm/util/validation/isArray.js +2 -0
  394. package/dist/esm/util/validation/isArray.js.map +1 -0
  395. package/dist/esm/util/validation/isBoolean.js +4 -0
  396. package/dist/esm/util/validation/isBoolean.js.map +1 -0
  397. package/dist/esm/util/validation/isFunction.js +13 -0
  398. package/dist/esm/util/validation/isFunction.js.map +1 -0
  399. package/dist/esm/util/validation/isNamedFunction.js +7 -0
  400. package/dist/esm/util/validation/isNamedFunction.js.map +1 -0
  401. package/dist/esm/util/validation/isNamedFunctionArray.js +5 -0
  402. package/dist/esm/util/validation/isNamedFunctionArray.js.map +1 -0
  403. package/dist/esm/util/validation/isObject.js +18 -0
  404. package/dist/esm/util/validation/isObject.js.map +1 -0
  405. package/dist/esm/util/validation/isPlainObject.js +15 -0
  406. package/dist/esm/util/validation/isPlainObject.js.map +1 -0
  407. package/dist/esm/util/validation/isPrimitive.js +14 -0
  408. package/dist/esm/util/validation/isPrimitive.js.map +1 -0
  409. package/dist/esm/util/validation/isString.js +4 -0
  410. package/dist/esm/util/validation/isString.js.map +1 -0
  411. package/dist/esm/util/validation/isStringArray.js +8 -0
  412. package/dist/esm/util/validation/isStringArray.js.map +1 -0
  413. package/dist/esm/util/validation/isStringWithNoSpacesOrDashes.js +5 -0
  414. package/dist/esm/util/validation/isStringWithNoSpacesOrDashes.js.map +1 -0
  415. package/dist/esm/util/validation/numbers/isInteger.js +14 -0
  416. package/dist/esm/util/validation/numbers/isInteger.js.map +1 -0
  417. package/dist/esm/util/validation/numbers/isValidNumber.js +18 -0
  418. package/dist/esm/util/validation/numbers/isValidNumber.js.map +1 -0
  419. package/{src → dist/types}/arg/ArgumentBuilder.d.ts +1 -1
  420. package/{src → dist/types}/arg/ArgumentParserSelector.d.ts +2 -2
  421. package/{src → dist/types}/arg/ArgumentReader.d.ts +3 -3
  422. package/{src → dist/types}/arg/ArgumentValidatorSelector.d.ts +2 -2
  423. package/dist/types/cmd/CLI.d.ts +2 -0
  424. package/{src → dist/types}/cmd/CommandBuilder.d.ts +26 -28
  425. package/{src → dist/types}/cmd/CommandBuilderMetaData.d.ts +7 -7
  426. package/{src → dist/types}/cmd/CommandFeatureSelector.d.ts +1 -1
  427. package/dist/types/cmd/DefaultHelpConfig.d.ts +28 -0
  428. package/dist/types/cmd/asdas.d.ts +6 -0
  429. package/{src → dist/types}/core/OutputManager.d.ts +1 -1
  430. package/{src → dist/types}/core/ParserSelector.d.ts +3 -3
  431. package/{src → dist/types}/core/ValidatorSelector.d.ts +2 -2
  432. package/{src → dist/types}/db/AbstractJsonFileSection.d.ts +3 -3
  433. package/{src → dist/types}/db/AppDataSection.d.ts +1 -1
  434. package/{src → dist/types}/db/ConfigSection.d.ts +4 -4
  435. package/{src → dist/types}/db/PresetsSection.d.ts +2 -2
  436. package/{src → dist/types}/index.d.ts +1 -0
  437. package/{src → dist/types}/opt/OptionArgumentParserSelector.d.ts +1 -1
  438. package/{src → dist/types}/opt/OptionArgumentValidatorSelector.d.ts +2 -2
  439. package/{src → dist/types}/opt/OptionBuilder.d.ts +2 -1
  440. package/{src → dist/types}/opt/OptionHelpers.d.ts +2 -2
  441. package/{src → dist/types}/opt/OptionReader.d.ts +7 -7
  442. package/dist/types/proto/overrideCommanderPrototype.d.ts +8 -0
  443. package/{src → dist/types}/types/IConfig.d.ts +3 -3
  444. package/{src → dist/types}/types/IPreset.d.ts +4 -3
  445. package/{src → dist/types}/util/db/JsonDB.d.ts +2 -2
  446. package/{src → dist/types}/util/fs/promptUserEditInTextEditor/promptUserEditInTextEditorSync.d.ts +1 -1
  447. package/{src → dist/types}/util/fs/promptUserEditInTextEditor/promptUserEditJsonInTextEditorSync.d.ts +1 -1
  448. package/{src → dist/types}/util/fs/readJsonFile/readJsonFileSafeSync.d.ts +1 -1
  449. package/{src → dist/types}/util/fs/tempFile/tempFileSync.d.ts +1 -1
  450. package/{src → dist/types}/util/function/MethodDisabler.d.ts +3 -3
  451. package/{src → dist/types}/util/object/createObjectMerger.d.ts +1 -1
  452. package/{src → dist/types}/util/object/objUpdatePropertyDescriptors.d.ts +1 -1
  453. package/{src → dist/types}/util/object/setNonEnumerable.d.ts +1 -1
  454. package/{src → dist/types}/util/string-parsers/createTypedListParser.d.ts +1 -1
  455. package/{src → dist/types}/util/types/DeepArray.d.ts +2 -2
  456. package/{src → dist/types}/util/types/DeepObject.d.ts +2 -2
  457. package/{src → dist/types}/util/types/JsonArray.d.ts +2 -2
  458. package/{src → dist/types}/util/types/JsonObject.d.ts +2 -2
  459. package/{src → dist/types}/util/types/JsonRawPrimitive.d.ts +1 -1
  460. package/{src → dist/types}/util/types/JsonValue.d.ts +3 -3
  461. package/{src → dist/types}/util/types/TConstructor.d.ts +1 -1
  462. package/dist/types/util/types/TFunction.d.ts +4 -0
  463. package/{src → dist/types}/util/types/TFunctionNoNew.d.ts +1 -1
  464. package/{src → dist/types}/util/types/TPlainObject.d.ts +1 -1
  465. package/dist/types/util/types/TValidator.d.ts +2 -0
  466. package/{src → dist/types}/util/validation/ensureThat.d.ts +2 -2
  467. package/{src → dist/types}/util/validation/isFunction.d.ts +1 -1
  468. package/{src → dist/types}/util/validation/isNamedFunction.d.ts +1 -1
  469. package/{src → dist/types}/util/validation/isPlainObject.d.ts +2 -2
  470. package/{src → dist/types}/util/validation/isPrimitive.d.ts +1 -1
  471. package/jest.config.ts +11 -0
  472. package/notes/tsc.md +1 -0
  473. package/package.json +13 -6
  474. package/project.json +43 -0
  475. package/scripts/_example/CommandBuilder.example.ts +96 -0
  476. package/scripts/_example/CommandBuilder.example2.ts +31 -0
  477. package/scripts/_example/CommandBuilder.example3.ts +20 -0
  478. package/scripts/_example/bFindIn.ts +207 -0
  479. package/scripts/currentBemojeUtils.txt +41 -0
  480. package/scripts/rollupUtils.ts +184 -0
  481. package/src/arg/ArgumentBuilder.test.ts +102 -0
  482. package/src/arg/ArgumentBuilder.ts +47 -0
  483. package/src/arg/ArgumentParserSelector.test.ts +53 -0
  484. package/src/arg/ArgumentParserSelector.ts +14 -0
  485. package/src/arg/ArgumentReader.test.ts +60 -0
  486. package/src/arg/ArgumentReader.ts +33 -0
  487. package/src/arg/ArgumentValidatorSelector.test.ts +80 -0
  488. package/src/arg/ArgumentValidatorSelector.ts +14 -0
  489. package/src/cmd/CLI.test.ts +14 -0
  490. package/src/cmd/CLI.ts +13 -0
  491. package/src/cmd/CommandBuilder.test.ts +611 -0
  492. package/src/cmd/CommandBuilder.ts +1175 -0
  493. package/src/cmd/CommandBuilderMetaData.test.ts +54 -0
  494. package/src/cmd/CommandBuilderMetaData.ts +44 -0
  495. package/src/cmd/CommandFeatureSelector.test.ts +185 -0
  496. package/src/cmd/CommandFeatureSelector.ts +113 -0
  497. package/src/cmd/DefaultHelpConfig.test.ts +22 -0
  498. package/src/cmd/DefaultHelpConfig.ts +141 -0
  499. package/src/cmd/asdas.ts +40 -0
  500. package/src/core/OutputManager.test.ts +129 -0
  501. package/src/core/OutputManager.ts +103 -0
  502. package/src/core/ParserSelector.test.ts +7 -0
  503. package/src/core/ParserSelector.ts +38 -0
  504. package/src/core/ValidatorSelector.test.ts +7 -0
  505. package/src/core/ValidatorSelector.ts +38 -0
  506. package/src/core/splitCombinedArgvShorts.test.ts +9 -0
  507. package/src/core/splitCombinedArgvShorts.ts +10 -0
  508. package/src/db/AbstractJsonFileSection.test.ts +274 -0
  509. package/src/db/AbstractJsonFileSection.ts +218 -0
  510. package/src/db/AppDataSection.test.ts +69 -0
  511. package/src/db/AppDataSection.ts +46 -0
  512. package/src/db/ConfigSection.test.ts +95 -0
  513. package/src/db/ConfigSection.ts +74 -0
  514. package/src/db/JsonFile.test.ts +56 -0
  515. package/src/db/JsonFile.ts +52 -0
  516. package/src/db/PresetsSection.test.ts +130 -0
  517. package/src/db/PresetsSection.ts +92 -0
  518. package/src/index.ts +103 -0
  519. package/src/opt/OptionArgumentParserSelector.test.ts +54 -0
  520. package/src/opt/OptionArgumentParserSelector.ts +14 -0
  521. package/src/opt/OptionArgumentValidatorSelector.test.ts +90 -0
  522. package/src/opt/OptionArgumentValidatorSelector.ts +16 -0
  523. package/src/opt/OptionBuilder.test.ts +229 -0
  524. package/src/opt/OptionBuilder.ts +85 -0
  525. package/src/opt/OptionHelpers.test.ts +229 -0
  526. package/src/opt/OptionHelpers.ts +57 -0
  527. package/src/opt/OptionReader.test.ts +106 -0
  528. package/src/opt/OptionReader.ts +61 -0
  529. package/src/proto/overrideCommanderPrototype.ts +42 -0
  530. package/src/types/IConfig.ts +25 -0
  531. package/src/types/IPreset.ts +16 -0
  532. package/src/util/array/arrLast.test.ts +25 -0
  533. package/src/util/array/arrLast.ts +15 -0
  534. package/src/util/array/arrSome.test.ts +78 -0
  535. package/src/util/array/arrSome.ts +23 -0
  536. package/src/util/array/types/ArrayPredicate.ts +10 -0
  537. package/src/util/db/JsonDB.test.ts +214 -0
  538. package/src/util/db/JsonDB.ts +138 -0
  539. package/src/util/errors/ErrorParser.ts +165 -0
  540. package/src/util/fs/promptUserEditInTextEditor/IGetUserInputFromEditorOptions.ts +15 -0
  541. package/src/util/fs/promptUserEditInTextEditor/promptUserEditInTextEditorSync.ts +30 -0
  542. package/src/util/fs/promptUserEditInTextEditor/promptUserEditJsonInTextEditorSync.ts +25 -0
  543. package/src/util/fs/readFile/readFileSafeSync.ts +20 -0
  544. package/src/util/fs/readFile/readFileSync.ts +13 -0
  545. package/src/util/fs/readJsonFile/readJsonFileSafeSync.ts +17 -0
  546. package/src/util/fs/removeFile/removeFile.ts +1 -0
  547. package/src/util/fs/tempFile/tempFileSync.ts +21 -0
  548. package/src/util/fs/types/IReadJsonFileOptions.ts +1 -0
  549. package/src/util/fs/writeFile/writeFileSafeSync.ts +1 -0
  550. package/src/util/fs/writeFile/writeFileSync.ts +1 -0
  551. package/src/util/fs/writeJsonFile/writeJsonFileSafe.ts +1 -0
  552. package/src/util/function/MethodDisabler.test.ts +112 -0
  553. package/src/util/function/MethodDisabler.ts +94 -0
  554. package/src/util/function/funSetName.test.ts +12 -0
  555. package/src/util/function/funSetName.ts +16 -0
  556. package/src/util/node/execInherit.ts +14 -0
  557. package/src/util/node/formatTableForTerminal.ts +12 -0
  558. package/src/util/object/arrAssign.ts +3 -0
  559. package/src/util/object/createArrayMerger.test.ts +11 -0
  560. package/src/util/object/createArrayMerger.ts +15 -0
  561. package/src/util/object/createObjectMerger.test.ts +11 -0
  562. package/src/util/object/createObjectMerger.ts +17 -0
  563. package/src/util/object/objAssign.ts +3 -0
  564. package/src/util/object/objUpdatePropertyDescriptors.test.ts +40 -0
  565. package/src/util/object/objUpdatePropertyDescriptors.ts +29 -0
  566. package/src/util/object/realizeLazyProperty.ts +9 -0
  567. package/src/util/object/setNonEnumerable.test.ts +63 -0
  568. package/src/util/object/setNonEnumerable.ts +22 -0
  569. package/src/util/os/defaultOpenInEditorCommand.ts +14 -0
  570. package/src/util/os/isOSX.ts +9 -0
  571. package/src/util/os/isVsCodeInstalled.test.ts +7 -0
  572. package/src/util/os/isVsCodeInstalled.ts +14 -0
  573. package/src/util/os/isWindows.ts +12 -0
  574. package/src/util/path/getTempDataPath.test.ts +9 -0
  575. package/src/util/path/getTempDataPath.ts +14 -0
  576. package/src/util/regex/regexEscapeString.test.ts +35 -0
  577. package/src/util/regex/regexEscapeString.ts +13 -0
  578. package/src/util/string/strEnsureStartsWith.test.ts +13 -0
  579. package/src/util/string/strEnsureStartsWith.ts +14 -0
  580. package/src/util/string/strFirstCharToUpperCase.test.ts +33 -0
  581. package/src/util/string/strFirstCharToUpperCase.ts +11 -0
  582. package/src/util/string/strIsLowerCase.test.ts +42 -0
  583. package/src/util/string/strIsLowerCase.ts +13 -0
  584. package/src/util/string/strIsUpperCase.test.ts +48 -0
  585. package/src/util/string/strIsUpperCase.ts +13 -0
  586. package/src/util/string/strSplitCamelCase.test.ts +54 -0
  587. package/src/util/string/strSplitCamelCase.ts +51 -0
  588. package/src/util/string-parsers/createBooleanParser.test.ts +58 -0
  589. package/src/util/string-parsers/createBooleanParser.ts +21 -0
  590. package/src/util/string-parsers/createTypedListParser.test.ts +19 -0
  591. package/src/util/string-parsers/createTypedListParser.ts +19 -0
  592. package/src/util/string-parsers/parseBoolean.test.ts +30 -0
  593. package/src/util/string-parsers/parseBoolean.ts +12 -0
  594. package/src/util/string-parsers/parseInteger.test.ts +52 -0
  595. package/src/util/string-parsers/parseInteger.ts +9 -0
  596. package/src/util/string-parsers/parseNumber.test.ts +53 -0
  597. package/src/util/string-parsers/parseNumber.ts +6 -0
  598. package/src/util/string-parsers/parseString.test.ts +7 -0
  599. package/src/util/string-parsers/parseString.ts +3 -0
  600. package/src/util/types/Any.ts +2 -0
  601. package/src/util/types/DeepArray.ts +12 -0
  602. package/src/util/types/DeepObject.ts +16 -0
  603. package/src/util/types/JsonArray.ts +8 -0
  604. package/src/util/types/JsonDefinedPrimitive.ts +5 -0
  605. package/src/util/types/JsonObject.ts +8 -0
  606. package/src/util/types/JsonRawPrimitive.ts +7 -0
  607. package/src/util/types/JsonValue.ts +14 -0
  608. package/src/util/types/ObjectKey.ts +1 -0
  609. package/src/util/types/TConstructor.ts +6 -0
  610. package/src/util/types/TFunction.ts +5 -0
  611. package/src/util/types/TFunctionNoNew.ts +3 -0
  612. package/src/util/types/TPlainObject.ts +4 -0
  613. package/src/util/types/TPrimitive.ts +1 -0
  614. package/src/util/types/TStringParser.ts +1 -0
  615. package/src/util/types/TValidator.ts +3 -0
  616. package/src/util/validation/createTypedArrayValidator.test.ts +34 -0
  617. package/src/util/validation/createTypedArrayValidator.ts +25 -0
  618. package/src/util/validation/ensureThat.test.ts +37 -0
  619. package/src/util/validation/ensureThat.ts +14 -0
  620. package/src/util/validation/isArray.test.ts +7 -0
  621. package/src/util/validation/isArray.ts +1 -0
  622. package/src/util/validation/isBoolean.test.ts +31 -0
  623. package/src/util/validation/isBoolean.ts +3 -0
  624. package/src/util/validation/isFunction.test.ts +54 -0
  625. package/src/util/validation/isFunction.ts +14 -0
  626. package/src/util/validation/isNamedFunction.test.ts +28 -0
  627. package/src/util/validation/isNamedFunction.ts +8 -0
  628. package/src/util/validation/isNamedFunctionArray.test.ts +14 -0
  629. package/src/util/validation/isNamedFunctionArray.ts +5 -0
  630. package/src/util/validation/isObject.test.ts +57 -0
  631. package/src/util/validation/isObject.ts +17 -0
  632. package/src/util/validation/isPlainObject.test.ts +21 -0
  633. package/src/util/validation/isPlainObject.ts +14 -0
  634. package/src/util/validation/isPrimitive.ts +15 -0
  635. package/src/util/validation/isString.test.ts +23 -0
  636. package/src/util/validation/isString.ts +3 -0
  637. package/src/util/validation/isStringArray.test.ts +24 -0
  638. package/src/util/validation/isStringArray.ts +8 -0
  639. package/src/util/validation/isStringWithNoSpacesOrDashes.test.ts +28 -0
  640. package/src/util/validation/isStringWithNoSpacesOrDashes.ts +5 -0
  641. package/src/util/validation/numbers/isInteger.test.ts +25 -0
  642. package/src/util/validation/numbers/isInteger.ts +13 -0
  643. package/src/util/validation/numbers/isValidNumber.test.ts +20 -0
  644. package/src/util/validation/numbers/isValidNumber.ts +17 -0
  645. package/tsconfig.json +32 -0
  646. package/tsconfig.lib.json +18 -0
  647. package/tsconfig.spec.json +10 -0
  648. package/index.cjs.d.ts +0 -1
  649. package/index.cjs.js +0 -3231
  650. package/index.esm.js +0 -3119
  651. package/src/cmd/CLI.d.ts +0 -2
  652. package/src/cmd/DefaultHelpConfig.d.ts +0 -2
  653. package/src/proto/overrideCommanderPrototype.d.ts +0 -8
  654. package/src/util/types/TFunction.d.ts +0 -4
  655. package/src/util/types/TValidator.d.ts +0 -1
  656. /package/{src → dist/types}/core/splitCombinedArgvShorts.d.ts +0 -0
  657. /package/{src → dist/types}/db/JsonFile.d.ts +0 -0
  658. /package/{src → dist/types}/util/array/arrLast.d.ts +0 -0
  659. /package/{src → dist/types}/util/array/arrSome.d.ts +0 -0
  660. /package/{src → dist/types}/util/array/types/ArrayPredicate.d.ts +0 -0
  661. /package/{src → dist/types}/util/errors/ErrorParser.d.ts +0 -0
  662. /package/{src → dist/types}/util/fs/promptUserEditInTextEditor/IGetUserInputFromEditorOptions.d.ts +0 -0
  663. /package/{src → dist/types}/util/fs/readFile/readFileSafeSync.d.ts +0 -0
  664. /package/{src → dist/types}/util/fs/readFile/readFileSync.d.ts +0 -0
  665. /package/{src → dist/types}/util/fs/removeFile/removeFile.d.ts +0 -0
  666. /package/{src → dist/types}/util/fs/types/IReadJsonFileOptions.d.ts +0 -0
  667. /package/{src → dist/types}/util/fs/writeFile/writeFileSafeSync.d.ts +0 -0
  668. /package/{src → dist/types}/util/fs/writeFile/writeFileSync.d.ts +0 -0
  669. /package/{src → dist/types}/util/fs/writeJsonFile/writeJsonFileSafe.d.ts +0 -0
  670. /package/{src → dist/types}/util/function/funSetName.d.ts +0 -0
  671. /package/{src → dist/types}/util/node/execInherit.d.ts +0 -0
  672. /package/{src → dist/types}/util/node/formatTableForTerminal.d.ts +0 -0
  673. /package/{src → dist/types}/util/object/arrAssign.d.ts +0 -0
  674. /package/{src → dist/types}/util/object/createArrayMerger.d.ts +0 -0
  675. /package/{src → dist/types}/util/object/objAssign.d.ts +0 -0
  676. /package/{src → dist/types}/util/object/realizeLazyProperty.d.ts +0 -0
  677. /package/{src → dist/types}/util/os/defaultOpenInEditorCommand.d.ts +0 -0
  678. /package/{src → dist/types}/util/os/isOSX.d.ts +0 -0
  679. /package/{src → dist/types}/util/os/isVsCodeInstalled.d.ts +0 -0
  680. /package/{src → dist/types}/util/os/isWindows.d.ts +0 -0
  681. /package/{src → dist/types}/util/path/getTempDataPath.d.ts +0 -0
  682. /package/{src → dist/types}/util/regex/regexEscapeString.d.ts +0 -0
  683. /package/{src → dist/types}/util/string/strEnsureStartsWith.d.ts +0 -0
  684. /package/{src → dist/types}/util/string/strFirstCharToUpperCase.d.ts +0 -0
  685. /package/{src → dist/types}/util/string/strIsLowerCase.d.ts +0 -0
  686. /package/{src → dist/types}/util/string/strIsUpperCase.d.ts +0 -0
  687. /package/{src → dist/types}/util/string/strSplitCamelCase.d.ts +0 -0
  688. /package/{src → dist/types}/util/string-parsers/createBooleanParser.d.ts +0 -0
  689. /package/{src → dist/types}/util/string-parsers/parseBoolean.d.ts +0 -0
  690. /package/{src → dist/types}/util/string-parsers/parseInteger.d.ts +0 -0
  691. /package/{src → dist/types}/util/string-parsers/parseNumber.d.ts +0 -0
  692. /package/{src → dist/types}/util/string-parsers/parseString.d.ts +0 -0
  693. /package/{src → dist/types}/util/types/Any.d.ts +0 -0
  694. /package/{src → dist/types}/util/types/JsonDefinedPrimitive.d.ts +0 -0
  695. /package/{src → dist/types}/util/types/ObjectKey.d.ts +0 -0
  696. /package/{src → dist/types}/util/types/TPrimitive.d.ts +0 -0
  697. /package/{src → dist/types}/util/types/TStringParser.d.ts +0 -0
  698. /package/{src → dist/types}/util/validation/createTypedArrayValidator.d.ts +0 -0
  699. /package/{src → dist/types}/util/validation/isArray.d.ts +0 -0
  700. /package/{src → dist/types}/util/validation/isBoolean.d.ts +0 -0
  701. /package/{src → dist/types}/util/validation/isNamedFunctionArray.d.ts +0 -0
  702. /package/{src → dist/types}/util/validation/isObject.d.ts +0 -0
  703. /package/{src → dist/types}/util/validation/isString.d.ts +0 -0
  704. /package/{src → dist/types}/util/validation/isStringArray.d.ts +0 -0
  705. /package/{src → dist/types}/util/validation/isStringWithNoSpacesOrDashes.d.ts +0 -0
  706. /package/{src → dist/types}/util/validation/numbers/isInteger.d.ts +0 -0
  707. /package/{src → dist/types}/util/validation/numbers/isValidNumber.d.ts +0 -0
@@ -0,0 +1,1098 @@
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.CommandBuilder = void 0;
7
+ /* eslint-disable @typescript-eslint/ban-types */
8
+ const ansi_colors_1 = __importDefault(require("ansi-colors"));
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const is_async_function_1 = __importDefault(require("is-async-function"));
11
+ const os_1 = __importDefault(require("os"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const ArgumentBuilder_1 = require("../arg/ArgumentBuilder");
14
+ const arrAssign_1 = require("../util/object/arrAssign");
15
+ const arrLast_1 = require("../util/array/arrLast");
16
+ const arrSome_1 = require("../util/array/arrSome");
17
+ const CommandBuilderMetaData_1 = require("./CommandBuilderMetaData");
18
+ const overrideCommanderPrototype_1 = require("../proto/overrideCommanderPrototype");
19
+ const CommandFeatureSelector_1 = require("./CommandFeatureSelector");
20
+ const DefaultHelpConfig_1 = require("./DefaultHelpConfig");
21
+ const ensureThat_1 = require("../util/validation/ensureThat");
22
+ const formatTableForTerminal_1 = require("../util/node/formatTableForTerminal");
23
+ const isArray_1 = require("../util/validation/isArray");
24
+ const isObject_1 = require("../util/validation/isObject");
25
+ const isString_1 = require("../util/validation/isString");
26
+ const isStringArray_1 = require("../util/validation/isStringArray");
27
+ const isStringWithNoSpacesOrDashes_1 = require("../util/validation/isStringWithNoSpacesOrDashes");
28
+ const JsonFile_1 = require("../db/JsonFile");
29
+ const objAssign_1 = require("../util/object/objAssign");
30
+ const OptionBuilder_1 = require("../opt/OptionBuilder");
31
+ const OptionHelpers_1 = require("../opt/OptionHelpers");
32
+ const OutputManager_1 = require("../core/OutputManager");
33
+ const realizeLazyProperty_1 = require("../util/object/realizeLazyProperty");
34
+ const removeFile_1 = require("../util/fs/removeFile/removeFile");
35
+ const setNonEnumerable_1 = require("../util/object/setNonEnumerable");
36
+ const splitCombinedArgvShorts_1 = require("../core/splitCombinedArgvShorts");
37
+ const extra_typings_1 = require("@commander-js/extra-typings");
38
+ /**
39
+ * Wrapper around the @see Command class, for more intuitive construction.
40
+ */
41
+ class CommandBuilder {
42
+ static dataDirectory = path_1.default.join(os_1.default.homedir(), 'config', 'cli');
43
+ features = new CommandFeatureSelector_1.CommandFeatureSelector(this);
44
+ parent = null;
45
+ $;
46
+ meta = new CommandBuilderMetaData_1.CommandBuilderMetaData();
47
+ get db() {
48
+ return (0, realizeLazyProperty_1.realizeLazyProperty)(this, 'db', new JsonFile_1.JsonFile(this));
49
+ }
50
+ constructor(name, callback, parent, isNative = false) {
51
+ this.meta.isNative = isNative;
52
+ this.$ = new extra_typings_1.Command(name);
53
+ overrideCommanderPrototype_1.commanderBackRefs.set(this.$, this);
54
+ if (parent) {
55
+ this.parent = parent;
56
+ this.parent.meta.subcommands.push(this);
57
+ this.parent.$.addCommand(this.$);
58
+ }
59
+ this.initializeHelp();
60
+ if (callback)
61
+ callback.call(this, this);
62
+ if (this.parent) {
63
+ this.$.copyInheritedSettings(this.parent.$);
64
+ this.features.inheritFrom(this.parent.features);
65
+ this.inheritParentHiddenGlobals();
66
+ }
67
+ if (!this.meta.isNative) {
68
+ this.assertCommandNameNotReserved(this.name);
69
+ this.addUtilCommands();
70
+ }
71
+ if (this.isRoot) {
72
+ for (const child of this.getChildrenIterator({ includeSelf: true })) {
73
+ if (child.features.isAutoAssignSubCommandAliasesEnabled) {
74
+ child.assignSubCommandAliases();
75
+ if (!child.meta.isNative) {
76
+ child.assertNoDuplicateCommandNames();
77
+ }
78
+ }
79
+ if (child.features.isAutoAssignMissingOptionFlagsEnabled) {
80
+ child.assignMissingOptionFlags();
81
+ if (!child.meta.isNative) {
82
+ child.assertNoDuplicateOptionNames();
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ setRecommended() {
89
+ this.enableBuiltinOptions({ debug: true, disableStderr: true, disableStdout: true });
90
+ this.autoAssignMissingOptionFlags();
91
+ this.autoAssignSubCommandAliases();
92
+ this.presetsEnabled();
93
+ }
94
+ deleteDataFile() {
95
+ const filepath = this.dataFilepath;
96
+ if (fs_extra_1.default.existsSync(filepath))
97
+ (0, removeFile_1.removeFile)(filepath);
98
+ }
99
+ version(string) {
100
+ this.$.version(string);
101
+ const opt = this.options.find((o) => o.attributeName() === 'version');
102
+ if (opt)
103
+ this.meta.globalOptions.push(opt);
104
+ return this;
105
+ }
106
+ description(...lines) {
107
+ const description = lines.join('\n');
108
+ const summary = description.split(/(\. ?|\n|$)/)[0];
109
+ this.$.summary(summary + '.');
110
+ this.$.description(description);
111
+ return this;
112
+ }
113
+ alias(alias) {
114
+ this.assertCommandNameNotReserved(alias);
115
+ this.$.alias(alias);
116
+ return this;
117
+ }
118
+ aliases(...aliases) {
119
+ aliases.forEach((alias) => this.assertCommandNameNotReserved(alias));
120
+ this.$.aliases(aliases);
121
+ return this;
122
+ }
123
+ enableBuiltinOptions(options) {
124
+ if (!options || options.debug)
125
+ this.globalOption('-D, --debug', 'Output debugging information.');
126
+ if (!options || options.disableColor)
127
+ this.globalOption('-C, --disable-color', 'Disable color in terminal output.');
128
+ if (!options || options.disableStderr)
129
+ this.globalOption('-E, --disable-stderr', 'Mute all output to stderr.');
130
+ if (!options || options.disableStdout)
131
+ this.globalOption('-O, --disable-stdout', 'Mute all output to stdout.');
132
+ return this;
133
+ }
134
+ argument(name, cb) {
135
+ const ins = new ArgumentBuilder_1.ArgumentBuilder(this, name);
136
+ this.$.addArgument(ins.$);
137
+ if (typeof cb === 'function') {
138
+ cb(ins, this);
139
+ }
140
+ else if (typeof cb === 'string') {
141
+ ins.description(cb);
142
+ }
143
+ return this;
144
+ }
145
+ option(flags, cb) {
146
+ const ins = new OptionBuilder_1.OptionBuilder(this, flags);
147
+ if (this.hasIdenticalParentOption(ins.$))
148
+ return this;
149
+ this.$.addOption(ins.$);
150
+ if (typeof cb === 'function') {
151
+ cb(ins, this);
152
+ }
153
+ else if (typeof cb === 'string') {
154
+ ins.description(cb);
155
+ }
156
+ return this;
157
+ }
158
+ globalOption(flags, cb) {
159
+ return this.option(flags, (ins) => {
160
+ const opt = ins.$;
161
+ this.meta.globalOptions.push(opt);
162
+ if (typeof cb === 'function') {
163
+ cb(ins, this);
164
+ }
165
+ else if (typeof cb === 'string') {
166
+ ins.description(cb);
167
+ }
168
+ if (opt.hidden)
169
+ this.meta.hiddenGlobalOptions.add(opt);
170
+ });
171
+ }
172
+ command(name, cb) {
173
+ new CommandBuilder(name, cb, this);
174
+ return this;
175
+ }
176
+ nativeCommand(name, cb) {
177
+ new CommandBuilder(name, cb, this, true);
178
+ return this;
179
+ }
180
+ action(fn) {
181
+ const isAsync = (0, is_async_function_1.default)(fn) || /^\(.+\) ?=> ?tslib_1\.__awaiter\(/.test(fn.toString().trim());
182
+ Object.defineProperty(this.meta, 'actionHandler', { value: fn, configurable: false, writable: false });
183
+ this.initializeActionWrapper(isAsync);
184
+ return this;
185
+ }
186
+ errorHandler(fn) {
187
+ Object.defineProperty(this.meta, 'errorHandler', { value: fn, configurable: true });
188
+ return this;
189
+ }
190
+ appData(key, value) {
191
+ this.features.appData(true);
192
+ this.db.appData.defineProperty(key, value);
193
+ return this;
194
+ }
195
+ config(key, entry) {
196
+ this.features.config(true);
197
+ this.db.config.defineProperty(key, entry);
198
+ return this;
199
+ }
200
+ preset(name, preset) {
201
+ this.features.presets();
202
+ this.meta.presetOptionKeys.push(name);
203
+ this.db.presets.defineProperty(name, {
204
+ description: preset.description,
205
+ presets: preset.presets ?? [],
206
+ args: preset.args ?? [],
207
+ options: preset.options ?? {},
208
+ });
209
+ return this;
210
+ }
211
+ presetsEnabled(boolean = true) {
212
+ this.features.presets(boolean);
213
+ return this;
214
+ }
215
+ autoAssignMissingOptionFlags(boolean = true) {
216
+ this.features.autoAssignMissingOptionFlags(boolean);
217
+ return this;
218
+ }
219
+ autoAssignSubCommandAliases(boolean = true) {
220
+ this.features.autoAssignSubCommandAliases(boolean);
221
+ return this;
222
+ }
223
+ allowExcessArguments(bool = true) {
224
+ this.$.allowExcessArguments(bool);
225
+ return this;
226
+ }
227
+ allowUnknownOption(bool = true) {
228
+ this.$.allowUnknownOption(bool);
229
+ return this;
230
+ }
231
+ /**
232
+ * Register callback to use as replacement for calling process.exit.
233
+ */
234
+ exitOverride(callback) {
235
+ this.$.exitOverride(callback);
236
+ return this;
237
+ }
238
+ throwInsteadOfProcessExit() {
239
+ const onErr = (err) => {
240
+ throw err;
241
+ };
242
+ this.exitOverride(onErr);
243
+ this.errorHandler(onErr);
244
+ }
245
+ /**
246
+ * Add hook for life cycle event.
247
+ */
248
+ hook(event, listener) {
249
+ this.$.hook(event, listener);
250
+ return this;
251
+ }
252
+ /**
253
+ * You can customise the help by overriding Help properties using configureHelp(),
254
+ * or with a subclass of Help by overriding createHelp().
255
+ */
256
+ configureHelp(configuration) {
257
+ this.$.configureHelp(configuration);
258
+ return this;
259
+ }
260
+ /**
261
+ * Display the help or a custom message after an error occurs.
262
+ */
263
+ showHelpAfterError(displayHelp) {
264
+ this.$.showHelpAfterError(displayHelp);
265
+ return this;
266
+ }
267
+ /**
268
+ * Display suggestion of similar commands for unknown commands, or options for unknown options.
269
+ */
270
+ showSuggestionAfterError(displaySuggestion) {
271
+ this.$.showSuggestionAfterError(displaySuggestion);
272
+ return this;
273
+ }
274
+ /**
275
+ * Add additional text to be displayed with the built-in help.
276
+ *
277
+ * Position is 'before' or 'after' to affect just this command,
278
+ * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.
279
+ */
280
+ addHelpText(position, text) {
281
+ this.$.addHelpText(position, text);
282
+ return this;
283
+ }
284
+ throwCommanderError(message, exitCode = 1, type = 'error') {
285
+ throw new extra_typings_1.CommanderError(exitCode, type, message);
286
+ }
287
+ hideGlobalOptions(...names) {
288
+ const globals = this.getGlobalOptions();
289
+ names = names.length ? names : globals.map((opt) => opt.attributeName());
290
+ for (const name of names) {
291
+ if (!name)
292
+ continue;
293
+ let found = false;
294
+ for (const opt of globals) {
295
+ if (opt.attributeName() === name) {
296
+ this.meta.hiddenGlobalOptions.add(opt);
297
+ found = true;
298
+ break;
299
+ }
300
+ }
301
+ if (!found)
302
+ this.throwCommanderError(`Unknown global option name: ${name} for command, ${this.name}`);
303
+ }
304
+ return this;
305
+ }
306
+ unhideGlobalOptions(...names) {
307
+ const globals = this.getGlobalOptions();
308
+ names = names.length ? names : globals.map((opt) => opt.attributeName());
309
+ for (const name of names) {
310
+ if (!name)
311
+ continue;
312
+ let found = false;
313
+ for (const opt of globals) {
314
+ if (opt.attributeName() === name) {
315
+ this.meta.hiddenGlobalOptions.delete(opt);
316
+ found = true;
317
+ break;
318
+ }
319
+ }
320
+ if (!found)
321
+ this.throwCommanderError(`Unknown global option name: ${name} for command, ${this.name}`);
322
+ }
323
+ return this;
324
+ }
325
+ /**
326
+ * Set the directory for searching for executable subcommands of this command.
327
+ */
328
+ executableDir(path) {
329
+ this.$.executableDir(path);
330
+ return this;
331
+ }
332
+ /**
333
+ * Store option value.
334
+ */
335
+ setOptionValue(key, value) {
336
+ this.$.setOptionValue(key, value);
337
+ return this;
338
+ }
339
+ /**
340
+ * Store option value and where the value came from.
341
+ */
342
+ setOptionValueWithSource(key, value, source) {
343
+ this.$.setOptionValueWithSource(key, value, source);
344
+ return this;
345
+ }
346
+ setDataFilepath(filepath) {
347
+ Object.defineProperty(this, 'dataFilepath', { value: filepath });
348
+ if (Object.hasOwn(this, 'db') && Object.hasOwn(this.db, 'db')) {
349
+ this.db.db.setFilepath(filepath);
350
+ }
351
+ }
352
+ /**
353
+ * Display error message and exit (or call exitOverride).
354
+ */
355
+ outputError(message, options) {
356
+ this.$.error(message, options);
357
+ }
358
+ /**
359
+ * Output help information for this command.
360
+ */
361
+ outputHelp() {
362
+ console.log(this.getRenderedHelp());
363
+ }
364
+ /**
365
+ * Display error message and exit (or call exitOverride).
366
+ */
367
+ outputDebugMessage(event, getProps = () => ({})) {
368
+ OutputManager_1.OutputManager.getInstance().outputDebug(() => ({ event, cmd: this.getPrefixString(), ...getProps() }));
369
+ }
370
+ parseArguments(args) {
371
+ const last = this.arguments.length - 1;
372
+ return args.map((arg, i) => {
373
+ if (!arg)
374
+ return arg;
375
+ const parse = this.meta.argParsers[i > last ? last : i];
376
+ return parse ? (Array.isArray(arg) ? arg.map(parse) : parse(arg)) : arg;
377
+ });
378
+ }
379
+ /**
380
+ * Parses (and validates) options using the parsers defined in the command builder.
381
+ */
382
+ parseOptions(opts) {
383
+ for (const [key, value] of Object.entries(opts)) {
384
+ const parse = this.meta.optParsers[key];
385
+ opts[key] = parse ? (Array.isArray(value) ? value.map(parse) : parse(value)) : value;
386
+ }
387
+ return opts;
388
+ }
389
+ /**
390
+ * Validate ALREADY PARSED args using the validators defined in the command builder.
391
+ */
392
+ assertValidArguments(parsedArgs) {
393
+ const last = this.arguments.length - 1;
394
+ parsedArgs.forEach((arg, i) => {
395
+ if (arg == null)
396
+ return;
397
+ const index = i > last ? last : i;
398
+ const validators = this.meta.argValidators[index];
399
+ if (!validators)
400
+ return;
401
+ for (const isValid of validators) {
402
+ (0, ensureThat_1.ensureThat)(arg, isValid, { Err: extra_typings_1.InvalidArgumentError });
403
+ }
404
+ });
405
+ return parsedArgs;
406
+ }
407
+ /**
408
+ * Validate ALREADY PARSED options using the validators defined in the command builder.
409
+ */
410
+ assertValidOptions(parsedOptions) {
411
+ for (const [key, value] of Object.entries(parsedOptions)) {
412
+ if (!this.meta.optValidators[key])
413
+ continue;
414
+ if (value == null)
415
+ continue;
416
+ for (const isValid of this.meta.optValidators[key]) {
417
+ (0, ensureThat_1.ensureThat)(value, isValid);
418
+ }
419
+ }
420
+ return parsedOptions;
421
+ }
422
+ assertValidPreset(key, preset) {
423
+ const { description, presets, args, options } = preset;
424
+ (0, ensureThat_1.ensureThat)(key, isStringWithNoSpacesOrDashes_1.isStringWithNoSpacesOrDashes);
425
+ (0, ensureThat_1.ensureThat)(description, isString_1.isString);
426
+ (0, ensureThat_1.ensureThat)(presets, isStringArray_1.isStringArray);
427
+ (0, ensureThat_1.ensureThat)(args, isArray_1.isArray);
428
+ this.assertPresetArgsOptional(args);
429
+ this.assertValidArguments(args);
430
+ (0, ensureThat_1.ensureThat)(options, isObject_1.isObject);
431
+ this.assertValidOptions(options);
432
+ }
433
+ get name() {
434
+ return this.$.name();
435
+ }
436
+ /**
437
+ * Get the command at the root of the command tree.
438
+ */
439
+ get root() {
440
+ if (this.isRoot)
441
+ return this;
442
+ return this.getAncestors().pop();
443
+ }
444
+ get isRoot() {
445
+ return !this.parent;
446
+ }
447
+ get arguments() {
448
+ return this.$.registeredArguments;
449
+ }
450
+ get options() {
451
+ return this.$.options;
452
+ }
453
+ get commander() {
454
+ return this.$;
455
+ }
456
+ get hasGrandChildren() {
457
+ return this.meta.subcommands.some((sub) => !!sub.meta.subcommands.length);
458
+ }
459
+ /**
460
+ * Returns whether a command's last argument is variadic.
461
+ */
462
+ get isLastArgVariadic() {
463
+ if (!this.arguments.length)
464
+ return false;
465
+ return (0, arrLast_1.arrLast)(this.arguments).variadic;
466
+ }
467
+ get dataFilepath() {
468
+ return path_1.default.join(CommandBuilder.dataDirectory, this.root.name + '.json');
469
+ }
470
+ /**
471
+ * Get the executable search directory.
472
+ */
473
+ getExecutableDir() {
474
+ return this.$.executableDir();
475
+ }
476
+ /**
477
+ * Retrieve option value.
478
+ */
479
+ getOptionValue(key) {
480
+ return this.$.getOptionValue(key);
481
+ }
482
+ /**
483
+ * Get source of option value.
484
+ */
485
+ getOptionValueSource(key) {
486
+ return this.$.getOptionValueSource(key);
487
+ }
488
+ /**
489
+ * Get source of option value. See also .optsWithGlobals().
490
+ */
491
+ getOptionValueSourceWithGlobals(key) {
492
+ return this.$.getOptionValueSourceWithGlobals(key);
493
+ }
494
+ getActionHandler() {
495
+ return this.meta.actionHandler;
496
+ }
497
+ getDescription() {
498
+ return this.$.description();
499
+ }
500
+ getSummary() {
501
+ return this.$.summary();
502
+ }
503
+ getVersion() {
504
+ return this.$.version();
505
+ }
506
+ getAlias() {
507
+ return this.$.alias();
508
+ }
509
+ getAliases() {
510
+ return this.$.aliases();
511
+ }
512
+ /**
513
+ * Get a commands prefix array based on all its parent/ancestor commands.
514
+ */
515
+ getPrefixArray() {
516
+ return this.getAncestors({ includeSelf: true })
517
+ .reverse()
518
+ .map((node) => node.name);
519
+ }
520
+ /**
521
+ * Get a commands prefix string based on all its parent/ancestor commands.
522
+ */
523
+ getPrefixString() {
524
+ return this.getPrefixArray().join(' ');
525
+ }
526
+ getGlobalOptions() {
527
+ const result = [];
528
+ for (const anc of this.getAncestors({ includeSelf: true }).reverse()) {
529
+ for (const gopt of anc.meta.globalOptions) {
530
+ if (!this.meta.hiddenGlobalOptions.has(gopt)) {
531
+ result.push(gopt);
532
+ }
533
+ }
534
+ }
535
+ return result;
536
+ }
537
+ getOwnAndGlobalOptions() {
538
+ return this.options.concat(this.getGlobalOptions());
539
+ }
540
+ *getChildrenIterator(options) {
541
+ if (options?.includeSelf)
542
+ yield this;
543
+ for (const sub of this.meta.subcommands) {
544
+ yield sub;
545
+ yield* sub.getChildrenIterator();
546
+ }
547
+ }
548
+ getChildren(options) {
549
+ return [...this.getChildrenIterator(options)];
550
+ }
551
+ *getAncestorsIterator(options) {
552
+ if (options?.includeSelf)
553
+ yield this;
554
+ let node = this.parent;
555
+ while (node) {
556
+ yield node;
557
+ node = node.parent;
558
+ }
559
+ }
560
+ /**
561
+ * Get a command's ancestors, optionally starting from the command itself.
562
+ */
563
+ getAncestors(options) {
564
+ return [...this.getAncestorsIterator(options)];
565
+ }
566
+ *getSiblingsIterator() {
567
+ if (!this.parent)
568
+ return;
569
+ for (const sub of this.parent.meta.subcommands) {
570
+ if (sub === this)
571
+ continue;
572
+ yield sub;
573
+ }
574
+ }
575
+ /**
576
+ * Returns an array of sibling CommandBuilder objects.
577
+ */
578
+ getSiblings() {
579
+ return [...this.getSiblingsIterator()];
580
+ }
581
+ getClosestNonNativeParent() {
582
+ for (const anc of this.getAncestorsIterator({ includeSelf: true })) {
583
+ if (!anc.meta.isNative)
584
+ return anc;
585
+ }
586
+ this.throwCommanderError('No non-native parent found');
587
+ }
588
+ getRenderedHelp() {
589
+ return this.$.helpInformation();
590
+ }
591
+ getOptsWithGlobalsParsed() {
592
+ return this.parseOptions(this.$.optsWithGlobals());
593
+ }
594
+ getParsedValidArgsOptsWithPresets() {
595
+ const [presetArgs, presetOpts, presetOrder] = this.getPresetArgsAndOpts();
596
+ const args = this.getParsedValidArgsWithPresets(presetArgs);
597
+ const opts = this.getParsedValidOptsWithPresets(presetOpts);
598
+ this.debugLogArgsOpts(args, opts, presetArgs, presetOpts, presetOrder);
599
+ return [args, opts];
600
+ }
601
+ getParsedValidArgsWithPresets(presetArgs) {
602
+ const result = (0, arrAssign_1.arrAssign)([], ...presetArgs, this.parseArguments(this.$.args));
603
+ this.combineVariadicArgs(result);
604
+ this.assertValidArguments(result);
605
+ return this.padArgsWithUndefinedUntilExpectedLength(result);
606
+ }
607
+ getParsedValidOptsWithPresets(presetOpts) {
608
+ const parsed = this.getOptsWithGlobalsParsed();
609
+ const opts = presetOpts.length ? (0, objAssign_1.objAssign)({}, ...presetOpts, parsed) : parsed;
610
+ this.deleteOptionsWithDefaultOrNoValue(opts);
611
+ this.assertValidOptions(opts);
612
+ return opts;
613
+ }
614
+ getPresetArgsAndOpts() {
615
+ if (!this.features.isPresetsEnabled)
616
+ return [[], [], []];
617
+ const presets = this.db.presets.getAll();
618
+ const opts = this.$.optsWithGlobals();
619
+ const selectedPresets = Object.keys(presets).filter((name) => opts[name] === true);
620
+ const presetOrder = Object.keys(opts).filter((key) => selectedPresets.includes(key));
621
+ const presetArgs = presetOrder.map((name) => presets[name].args);
622
+ const presetOpts = presetOrder.map((name) => presets[name].options);
623
+ return [presetArgs, presetOpts, presetOrder];
624
+ }
625
+ combineVariadicArgs(result) {
626
+ if (this.isLastArgVariadic && result.length && !Array.isArray((0, arrLast_1.arrLast)(result))) {
627
+ const rest = result.splice(this.arguments.length - 1);
628
+ result.push(rest.filter((arg) => arg != null));
629
+ }
630
+ return result;
631
+ }
632
+ debugLogArgsOpts(args, opts, presetArgs, presetOpts, presetOrder) {
633
+ if (opts['debug']) {
634
+ if (this.features.isPresetsEnabled) {
635
+ this.outputDebugMessage('parsePresets', () => ({ presetOrder, presetArgs, presetOpts }));
636
+ }
637
+ this.outputDebugMessage('parseArgsOpts', () => {
638
+ return {
639
+ args,
640
+ opts,
641
+ command: [this.root.name, ...this.meta.rawArgs].join(' '),
642
+ };
643
+ });
644
+ }
645
+ }
646
+ deleteOptionsWithDefaultOrNoValue(opts) {
647
+ const names = new Set(this.getOwnAndGlobalOptions().map((o) => o.attributeName()));
648
+ for (const [key, value] of Object.entries(opts)) {
649
+ if (!names.has(key) || value === false || value == null) {
650
+ (0, setNonEnumerable_1.setNonEnumerable)(opts, key);
651
+ }
652
+ }
653
+ for (const key of this.meta.presetOptionKeys) {
654
+ if (Object.hasOwn(opts, key)) {
655
+ (0, setNonEnumerable_1.setNonEnumerable)(opts, key);
656
+ }
657
+ }
658
+ return opts;
659
+ }
660
+ handleOutputOptions() {
661
+ const opts = this.$.optsWithGlobals();
662
+ const om = OutputManager_1.OutputManager.getInstance().reset();
663
+ if (opts['disableColor'])
664
+ om.colors.enabled = false;
665
+ if (opts['disableStderr'])
666
+ om.stderr.disable();
667
+ if (opts['disableStdout'])
668
+ om.stdout.disable();
669
+ if (opts['debug']) {
670
+ om.debug.enable();
671
+ om.drainDebugMessageQueue();
672
+ }
673
+ }
674
+ padArgsWithUndefinedUntilExpectedLength(args) {
675
+ while (args.length < this.arguments.length)
676
+ args.push(undefined);
677
+ return args;
678
+ }
679
+ assertPresetArgsOptional(args) {
680
+ args.forEach((arg, i) => {
681
+ if (arg != null && i < this.arguments.length && this.arguments[i].required) {
682
+ this.throwCommanderError(`Cannot preset required arguments.`);
683
+ }
684
+ });
685
+ }
686
+ addUtilCommands() {
687
+ if (!this.hasGrandChildren &&
688
+ !this.features.isConfigEnabled &&
689
+ !this.features.isPresetsEnabled &&
690
+ !this.features.isAppDataEnabled) {
691
+ return;
692
+ }
693
+ this.nativeCommand('util', (u) => {
694
+ const cmd = u.getClosestNonNativeParent();
695
+ u.alias('u');
696
+ u.description('Utility commands.');
697
+ if (cmd.features.isConfigEnabled) {
698
+ u.nativeCommand('config', createConfigCommand);
699
+ }
700
+ if (cmd.features.isPresetsEnabled && cmd.meta.hasCustomActionHandler) {
701
+ u.nativeCommand('presets', createPresetsCommand);
702
+ }
703
+ if (cmd.hasGrandChildren) {
704
+ u.nativeCommand('list', createUtilListCommand);
705
+ }
706
+ if (cmd.features.isConfigEnabled || cmd.features.isPresetsEnabled || cmd.features.isAppDataEnabled) {
707
+ u.nativeCommand('filepath', createUtilFilepathCommand);
708
+ }
709
+ function createUtilFilepathCommand(f) {
710
+ f.alias('f');
711
+ f.description('Print filepath to JSON file containing user data, eg. config and presets.');
712
+ f.action(async () => console.log(cmd.dataFilepath));
713
+ }
714
+ function createUtilListCommand(l) {
715
+ l.alias('l');
716
+ l.description('List nested subcommands.');
717
+ l.option('--all', 'Include utility commands.');
718
+ l.action(async (opts) => {
719
+ const filter = opts.all
720
+ ? undefined
721
+ : (prefix) => {
722
+ return !/ (config|presets|util)( .+)?$/gi.test(prefix);
723
+ };
724
+ const table = [];
725
+ for (const c of cmd.getChildrenIterator({ includeSelf: true })) {
726
+ const prefix = c.getPrefixString();
727
+ if (filter && !filter(prefix))
728
+ continue;
729
+ table.push([prefix, c.getSummary()]);
730
+ }
731
+ const ansi = table.map((row) => {
732
+ const arr = row[0].split(' ');
733
+ const last = arr.pop();
734
+ let col = ansi_colors_1.default.magenta;
735
+ if (row[1].startsWith('[Preset]')) {
736
+ col = ansi_colors_1.default.green;
737
+ }
738
+ else if (/ (util|config|presets) /.test(row[0])) {
739
+ col = ansi_colors_1.default.gray;
740
+ }
741
+ else if (/ (util|config|presets)/.test(row[0])) {
742
+ col = ansi_colors_1.default.dim;
743
+ }
744
+ row[0] = arr.map(ansi_colors_1.default.dim).concat(col(last)).join(' ');
745
+ return row;
746
+ });
747
+ console.log((0, formatTableForTerminal_1.formatTableForTerminal)(ansi, ['Command', 'Summary']));
748
+ });
749
+ }
750
+ function createPresetsCommand(p) {
751
+ const db = cmd.db.presets;
752
+ p.alias('p');
753
+ p.description('Edit presets in your text editor', '', 'A preset consists of pre-set arguments and/or options for a command.', 'Additionally, a preset can have other presets as dependencies.', 'When running the command, multiple presets can be stacked.', 'Required arguments cannot be pre-set.');
754
+ p.nativeCommand('edit', (e) => {
755
+ e.alias('e');
756
+ e.description('Edit as JSON in a text editor.');
757
+ e.option('--editor [cmd]', 'The command to launch your preferred text editor.');
758
+ e.action(async (opts) => {
759
+ db.edit(opts.editor);
760
+ console.info(db.getAll());
761
+ });
762
+ });
763
+ p.nativeCommand('list', (l) => {
764
+ l.alias('l');
765
+ l.description('List all presets.');
766
+ l.action(async () => console.dir(db.getAll(), { depth: null }));
767
+ });
768
+ for (const [key, preset] of Object.entries(db.getAll())) {
769
+ if (key === 'defaults')
770
+ continue;
771
+ cmd.option(`--${key}`, (o) => {
772
+ o.description('[Preset]: ' + preset.description);
773
+ const implied = { defaults: true };
774
+ const recurse = (preset) => {
775
+ if (implied[preset])
776
+ return;
777
+ implied[preset] = true;
778
+ db.get(preset).presets.forEach((k) => recurse(k));
779
+ };
780
+ recurse(key);
781
+ o.implies(implied);
782
+ });
783
+ }
784
+ }
785
+ function createConfigCommand(c) {
786
+ const db = cmd.db.config;
787
+ c.alias('c');
788
+ c.description('Manage configuration file.');
789
+ c.nativeCommand('edit', (e) => {
790
+ e.alias('e');
791
+ e.description('Edit as JSON in a text editor.');
792
+ e.option('--editor [cmd]', 'The command to launch your preferred text editor.');
793
+ e.action(async (opts) => {
794
+ db.edit(opts.editor);
795
+ console.info(db.getAll());
796
+ });
797
+ });
798
+ c.nativeCommand('list', (l) => {
799
+ l.alias('l');
800
+ l.description('Print entire config with details.');
801
+ l.action(async () => {
802
+ const result = db.keys.map((key) => ({
803
+ key,
804
+ description: db.descriptions[key],
805
+ value: db.get(key),
806
+ defaultValue: db.defaultValues,
807
+ }));
808
+ console.dir(result, { depth: null });
809
+ });
810
+ });
811
+ c.nativeCommand('get', (g) => {
812
+ g.alias('g');
813
+ g.description('Print value(s) from the config.');
814
+ g.argument('[key]', 'The key to print the value of. Omit to print all values.');
815
+ g.action(async (key) => console.log(key ? db.get(key) : db.getAll()));
816
+ });
817
+ c.nativeCommand('set', (s) => {
818
+ s.alias('s');
819
+ s.description('Set a value in the config.');
820
+ s.argument('<key>', 'The key to set the value of.');
821
+ s.argument('<value>', 'The new value.');
822
+ s.action(async (key, val) => {
823
+ const parse = db.parsers[key];
824
+ const value = typeof parse === 'function' ? parse(val) : val;
825
+ db.set(key, value);
826
+ console.info({ [key]: value });
827
+ });
828
+ });
829
+ c.nativeCommand('reset', (r) => {
830
+ r.alias('r');
831
+ r.description('Reset to defaults.');
832
+ r.argument('[key]', 'The key for which to reset the value. Omit to reset entire config.');
833
+ r.action(async (key) => {
834
+ if (key)
835
+ db.reset(key);
836
+ else
837
+ db.resetAll();
838
+ console.info(db.getAll());
839
+ });
840
+ });
841
+ /*
842
+ config.option('--editor [cmd]', (o) => {
843
+ o.description('The command to launch your preferred text editor.')
844
+ })
845
+ config.argument('[action]', (a) => {
846
+ a.description('The action to perform.')
847
+ a.choices(['edit', 'list', 'get', 'set', 'reset'])
848
+ a.default('edit')
849
+ })
850
+ config.argument('[key]', (a) => {
851
+ a.description('Property key (if applicable)')
852
+ })
853
+ config.argument('[value]', (a) => {
854
+ a.description('Value to set (if applicable)')
855
+ })
856
+ config.action(
857
+ async (action: string, key: string, value: string, opts: { editor: string }, config: CommandBuilder) => {
858
+ const cmd = config.getClosestNonNativeParent()
859
+ const cfg = cmd.db.config
860
+ if (!action || action === 'edit') {
861
+ cfg.edit(opts.editor)
862
+ return console.info(cfg.getAll())
863
+ } else if (action === 'list') {
864
+ return console.dir(
865
+ cfg.keys.map((key: string) => {
866
+ return {
867
+ key,
868
+ description: cfg.descriptions[key],
869
+ value: cfg.get(key),
870
+ defaultValue: cfg.defaultValues,
871
+ }
872
+ })
873
+ )
874
+ } else if (action === 'get') {
875
+ if (key) return console.log(cfg.get(key))
876
+ else return console.log(cfg.getAll())
877
+ } else if (action === 'set') {
878
+ const from = cfg.get(key)
879
+ const parse = cfg.parsers[key]
880
+ const to = typeof parse === 'function' ? cfg.parsers[key](value) : value
881
+ cfg.set(key, to)
882
+ return console.info({ changed: key, from, to })
883
+ } else if (action === 'reset') {
884
+ if (key) cfg.reset(key)
885
+ else cfg.resetAll()
886
+ return console.info(cfg.getAll())
887
+ }
888
+ }
889
+ )*/
890
+ }
891
+ });
892
+ }
893
+ /**
894
+ * Makes aliases for the command.
895
+ * The idea is to be able to navigate the command tree by only typing the first letter(s) of the command names.
896
+ *
897
+ * Example: A command 'cola' would get these aliases: ['c', 'co', 'col'].
898
+ * However, if there are namespace clashes with sibling subcommands that start with the same letter,
899
+ * eg. like 'cola' and 'coal' where the first two letters clash, cola's aliases are reduced to only ['col'] and similarly for 'coal'.
900
+ *
901
+ * This method creates the aliases, ensuring there are no clashes with sublings, why it is important that the
902
+ * entire command tree is built before invoking this method.
903
+ */
904
+ assignSubCommandAliases() {
905
+ if (this.getAlias() || this.name.length <= 1)
906
+ return this;
907
+ const sibAliases = this.getSiblings()
908
+ .map((sib) => sib.getAliases())
909
+ .flat();
910
+ for (let i = 0; i < this.name.length - 1; i++) {
911
+ let cmdAlias = this.name.substring(0, i + 1);
912
+ let isClash = (0, arrSome_1.arrSome)(sibAliases, (sibAlias) => {
913
+ return cmdAlias === sibAlias;
914
+ });
915
+ if (isClash && i === 0) {
916
+ cmdAlias = cmdAlias.charAt(0).toUpperCase();
917
+ isClash = (0, arrSome_1.arrSome)(sibAliases, (sibAlias) => {
918
+ return cmdAlias === sibAlias;
919
+ });
920
+ }
921
+ if (isClash)
922
+ continue;
923
+ this.alias(cmdAlias);
924
+ return this;
925
+ }
926
+ return this;
927
+ }
928
+ /**
929
+ * Automatically set 'short' and 'long' names to options that don't have one assigned yet.
930
+ *
931
+ * First, it tries to assign a short name based on the first letter of the option's attribute name
932
+ * Both lower and upper case are tried. If these is not available, the next letter of the option name is tried.
933
+ *
934
+ * If none of the letters of the option name are available, the option is skipped until all other
935
+ * options have had letters from their names attempted assigned.
936
+ * Those that remain are assigned the first available letter of the alphabet + 0-9.
937
+ * If there are 64 options for the command and no more alphanumeric characters are available,
938
+ * the option is not assigned a short name.
939
+ */
940
+ assignMissingOptionFlags() {
941
+ const taken = new Set();
942
+ for (const anc of this.getAncestorsIterator({ includeSelf: true })) {
943
+ anc.options.forEach((opt) => {
944
+ if (!opt.short)
945
+ return;
946
+ taken.add(opt.short.replace(/^-/g, ''));
947
+ });
948
+ }
949
+ const failed = new Set();
950
+ // assign letter from option name
951
+ this.options.forEach((opt) => {
952
+ if (opt.short)
953
+ return;
954
+ const name = opt.attributeName();
955
+ for (let c = 0; c < name.length; c++) {
956
+ let char = name.charAt(c).toLowerCase();
957
+ if (taken.has(char)) {
958
+ char = char.toUpperCase();
959
+ if (taken.has(char))
960
+ continue;
961
+ }
962
+ OptionHelpers_1.OptionHelpers.setShort(opt, char);
963
+ taken.add(char);
964
+ return;
965
+ }
966
+ failed.add(opt);
967
+ });
968
+ // assign random alphanumeric character.
969
+ const name = 'abcdefghijklmnopqrstuvwxyz1234567890';
970
+ failed.forEach((opt) => {
971
+ for (let c = 0; c < name.length; c++) {
972
+ let char = name.charAt(c);
973
+ if (taken.has(char)) {
974
+ char = char.toUpperCase();
975
+ if (taken.has(char))
976
+ continue;
977
+ }
978
+ OptionHelpers_1.OptionHelpers.setShort(opt, char);
979
+ taken.add(char);
980
+ return;
981
+ }
982
+ });
983
+ }
984
+ assertNoDuplicateCommandNames() {
985
+ const names = this.$.commands.map((sub) => sub.aliases().concat(sub.name())).flat();
986
+ if (names.length !== new Set(names).size) {
987
+ this.throwCommanderError(`Duplicate subcommand names/aliases found for command, ${this.name}: ${names.join(', ')}`);
988
+ }
989
+ }
990
+ hasIdenticalParentOption(option) {
991
+ const flags = option.flags;
992
+ for (const anc of this.getAncestorsIterator({ includeSelf: true })) {
993
+ for (const opt of anc.$.options) {
994
+ if (flags === opt.flags) {
995
+ return true;
996
+ }
997
+ }
998
+ }
999
+ return false;
1000
+ }
1001
+ assertNoDuplicateOptionNames() {
1002
+ const throwErr = (cmd, opt, anc) => {
1003
+ this.throwCommanderError(`Duplicate option names > cmd: ${cmd.name}, ${anc ? `anc: ${anc.name}, ` : ''}opt: ${opt}`);
1004
+ };
1005
+ const set = new Set();
1006
+ for (const opt of this.options) {
1007
+ if (opt.name() === 'help')
1008
+ continue;
1009
+ if (opt.short) {
1010
+ if (set.has(opt.short))
1011
+ throwErr(this, opt.short);
1012
+ set.add(opt.short);
1013
+ }
1014
+ if (opt.long) {
1015
+ if (set.has(opt.long))
1016
+ throwErr(this, opt.long);
1017
+ set.add(opt.long);
1018
+ }
1019
+ if (opt.attributeName()) {
1020
+ if (set.has(opt.attributeName()))
1021
+ throwErr(this, opt.attributeName());
1022
+ set.add(opt.attributeName());
1023
+ }
1024
+ }
1025
+ for (const anc of this.getAncestorsIterator()) {
1026
+ for (const opt of anc.$.options) {
1027
+ if (opt.short && set.has(opt.short)) {
1028
+ if (opt.short !== 'V')
1029
+ continue;
1030
+ throwErr(this, opt.short, anc);
1031
+ }
1032
+ if (opt.long && set.has(opt.long)) {
1033
+ throwErr(this, opt.long, anc);
1034
+ }
1035
+ if (opt.attributeName() && set.has(opt.attributeName())) {
1036
+ throwErr(this, opt.attributeName(), anc);
1037
+ }
1038
+ }
1039
+ }
1040
+ }
1041
+ initializeActionWrapper(isAsync = false) {
1042
+ if (isAsync) {
1043
+ this.$.action(async () => {
1044
+ try {
1045
+ this.handleOutputOptions();
1046
+ const [args, opts] = this.getParsedValidArgsOptsWithPresets();
1047
+ if (opts['help'])
1048
+ return this.outputHelp();
1049
+ const owg = this.$.optsWithGlobals();
1050
+ await this.meta.actionHandler.call(this, ...args, opts, this);
1051
+ }
1052
+ catch (error) {
1053
+ this.meta.errorHandler.call(this, error, this);
1054
+ }
1055
+ });
1056
+ }
1057
+ else {
1058
+ this.$.action(() => {
1059
+ try {
1060
+ this.handleOutputOptions();
1061
+ const [args, opts] = this.getParsedValidArgsOptsWithPresets();
1062
+ if (opts['help'])
1063
+ return this.outputHelp();
1064
+ const owg = this.$.optsWithGlobals();
1065
+ this.meta.actionHandler.call(this, ...args, opts, this);
1066
+ }
1067
+ catch (error) {
1068
+ this.meta.errorHandler.call(this, error, this);
1069
+ }
1070
+ });
1071
+ }
1072
+ }
1073
+ initializeHelp() {
1074
+ if (this.isRoot)
1075
+ this.globalOption('-h, --help', 'show help');
1076
+ this.$.addHelpCommand('?', 'show help');
1077
+ this.$.configureHelp(DefaultHelpConfig_1.DefaultHelpConfig);
1078
+ }
1079
+ inheritParentHiddenGlobals() {
1080
+ if (!this.parent)
1081
+ return;
1082
+ for (const opt of this.parent.meta.hiddenGlobalOptions) {
1083
+ this.meta.hiddenGlobalOptions.add(opt);
1084
+ }
1085
+ }
1086
+ assertCommandNameNotReserved(name) {
1087
+ if (this.isRoot)
1088
+ return;
1089
+ if (this.meta.isNative)
1090
+ return;
1091
+ if (name === 'u' || name === 'util') {
1092
+ this.throwCommanderError(`Name '${name}' is reserved and is not available as name or alias.`);
1093
+ }
1094
+ }
1095
+ }
1096
+ exports.CommandBuilder = CommandBuilder;
1097
+ process.argv = (0, splitCombinedArgvShorts_1.splitCombinedArgvShorts)(process.argv.slice());
1098
+ //# sourceMappingURL=CommandBuilder.js.map