@breadstone-infrastructure/utilities 0.0.12-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/Cli/Abstracts/ProgramCommandBase.d.ts +60 -0
  2. package/Cli/Abstracts/ProgramCommandBase.d.ts.map +1 -0
  3. package/Cli/Abstracts/ProgramCommandBase.js +64 -0
  4. package/Cli/Abstracts/ProgramCommandBase.js.map +1 -0
  5. package/Cli/Builders/ProgramBuilder.d.ts +39 -0
  6. package/Cli/Builders/ProgramBuilder.d.ts.map +1 -0
  7. package/Cli/Builders/ProgramBuilder.js +73 -0
  8. package/Cli/Builders/ProgramBuilder.js.map +1 -0
  9. package/Cli/Builders/ProgramCommandBuilder.d.ts +78 -0
  10. package/Cli/Builders/ProgramCommandBuilder.d.ts.map +1 -0
  11. package/Cli/Builders/ProgramCommandBuilder.js +147 -0
  12. package/Cli/Builders/ProgramCommandBuilder.js.map +1 -0
  13. package/Cli/Interfaces/IProgramArg.d.ts +11 -0
  14. package/Cli/Interfaces/IProgramArg.d.ts.map +1 -0
  15. package/Cli/Interfaces/IProgramArg.js +4 -0
  16. package/Cli/Interfaces/IProgramArg.js.map +1 -0
  17. package/Cli/Interfaces/IProgramArgOptions.d.ts +9 -0
  18. package/Cli/Interfaces/IProgramArgOptions.d.ts.map +1 -0
  19. package/Cli/Interfaces/IProgramArgOptions.js +4 -0
  20. package/Cli/Interfaces/IProgramArgOptions.js.map +1 -0
  21. package/Cli/Interfaces/IProgramArgs.d.ts +27 -0
  22. package/Cli/Interfaces/IProgramArgs.d.ts.map +1 -0
  23. package/Cli/Interfaces/IProgramArgs.js +4 -0
  24. package/Cli/Interfaces/IProgramArgs.js.map +1 -0
  25. package/Cli/Interfaces/IProgramCommand.d.ts +53 -0
  26. package/Cli/Interfaces/IProgramCommand.d.ts.map +1 -0
  27. package/Cli/Interfaces/IProgramCommand.js +4 -0
  28. package/Cli/Interfaces/IProgramCommand.js.map +1 -0
  29. package/Cli/Interfaces/IProgramCommands.d.ts +47 -0
  30. package/Cli/Interfaces/IProgramCommands.d.ts.map +1 -0
  31. package/Cli/Interfaces/IProgramCommands.js +4 -0
  32. package/Cli/Interfaces/IProgramCommands.js.map +1 -0
  33. package/Cli/Interfaces/IProgramConfig.d.ts +10 -0
  34. package/Cli/Interfaces/IProgramConfig.d.ts.map +1 -0
  35. package/Cli/Interfaces/IProgramConfig.js +3 -0
  36. package/Cli/Interfaces/IProgramConfig.js.map +1 -0
  37. package/Cli/Interfaces/IProgramInit.d.ts +14 -0
  38. package/Cli/Interfaces/IProgramInit.d.ts.map +1 -0
  39. package/Cli/Interfaces/IProgramInit.js +3 -0
  40. package/Cli/Interfaces/IProgramInit.js.map +1 -0
  41. package/Cli/Program.d.ts +97 -0
  42. package/Cli/Program.d.ts.map +1 -0
  43. package/Cli/Program.js +217 -0
  44. package/Cli/Program.js.map +1 -0
  45. package/Cli/ProgramArgs.d.ts +39 -0
  46. package/Cli/ProgramArgs.d.ts.map +1 -0
  47. package/Cli/ProgramArgs.js +83 -0
  48. package/Cli/ProgramArgs.js.map +1 -0
  49. package/Cli/ProgramCommandResult.d.ts +13 -0
  50. package/Cli/ProgramCommandResult.d.ts.map +1 -0
  51. package/Cli/ProgramCommandResult.js +3 -0
  52. package/Cli/ProgramCommandResult.js.map +1 -0
  53. package/Cli/ProgramCommands.d.ts +66 -0
  54. package/Cli/ProgramCommands.d.ts.map +1 -0
  55. package/Cli/ProgramCommands.js +173 -0
  56. package/Cli/ProgramCommands.js.map +1 -0
  57. package/Cli/ProgramConfig.d.ts +24 -0
  58. package/Cli/ProgramConfig.d.ts.map +1 -0
  59. package/Cli/ProgramConfig.js +51 -0
  60. package/Cli/ProgramConfig.js.map +1 -0
  61. package/Cli/ProgramDoneFn.d.ts +5 -0
  62. package/Cli/ProgramDoneFn.d.ts.map +1 -0
  63. package/Cli/ProgramDoneFn.js +3 -0
  64. package/Cli/ProgramDoneFn.js.map +1 -0
  65. package/Compiler/TypeScript.d.ts +19 -0
  66. package/Compiler/TypeScript.d.ts.map +1 -0
  67. package/Compiler/TypeScript.js +166 -0
  68. package/Compiler/TypeScript.js.map +1 -0
  69. package/DI/Container.d.ts +73 -0
  70. package/DI/Container.d.ts.map +1 -0
  71. package/DI/Container.js +143 -0
  72. package/DI/Container.js.map +1 -0
  73. package/DI/Inject.d.ts +11 -0
  74. package/DI/Inject.d.ts.map +1 -0
  75. package/DI/Inject.js +18 -0
  76. package/DI/Inject.js.map +1 -0
  77. package/Decorators/EnumerableDecorator.d.ts +6 -0
  78. package/Decorators/EnumerableDecorator.d.ts.map +1 -0
  79. package/Decorators/EnumerableDecorator.js +18 -0
  80. package/Decorators/EnumerableDecorator.js.map +1 -0
  81. package/Events/AsyncEventEmitter.d.ts +8 -0
  82. package/Events/AsyncEventEmitter.d.ts.map +1 -0
  83. package/Events/AsyncEventEmitter.js +37 -0
  84. package/Events/AsyncEventEmitter.js.map +1 -0
  85. package/IO/CustomElementManifest.d.ts +254 -0
  86. package/IO/CustomElementManifest.d.ts.map +1 -0
  87. package/IO/CustomElementManifest.js +56 -0
  88. package/IO/CustomElementManifest.js.map +1 -0
  89. package/IO/Directory.d.ts +78 -0
  90. package/IO/Directory.d.ts.map +1 -0
  91. package/IO/Directory.js +184 -0
  92. package/IO/Directory.js.map +1 -0
  93. package/IO/Encoding.d.ts +2 -0
  94. package/IO/Encoding.d.ts.map +1 -0
  95. package/IO/Encoding.js +3 -0
  96. package/IO/Encoding.js.map +1 -0
  97. package/IO/File.d.ts +148 -0
  98. package/IO/File.d.ts.map +1 -0
  99. package/IO/File.js +314 -0
  100. package/IO/File.js.map +1 -0
  101. package/IO/FileSystemInfo.d.ts +46 -0
  102. package/IO/FileSystemInfo.d.ts.map +1 -0
  103. package/IO/FileSystemInfo.js +129 -0
  104. package/IO/FileSystemInfo.js.map +1 -0
  105. package/IO/FileSystemWatcher.d.ts +49 -0
  106. package/IO/FileSystemWatcher.d.ts.map +1 -0
  107. package/IO/FileSystemWatcher.js +93 -0
  108. package/IO/FileSystemWatcher.js.map +1 -0
  109. package/IO/Glob.d.ts +35 -0
  110. package/IO/Glob.d.ts.map +1 -0
  111. package/IO/Glob.js +152 -0
  112. package/IO/Glob.js.map +1 -0
  113. package/IO/Json.d.ts +84 -0
  114. package/IO/Json.d.ts.map +1 -0
  115. package/IO/Json.js +114 -0
  116. package/IO/Json.js.map +1 -0
  117. package/IO/Path.d.ts +125 -0
  118. package/IO/Path.d.ts.map +1 -0
  119. package/IO/Path.js +283 -0
  120. package/IO/Path.js.map +1 -0
  121. package/IO/PcfControlManifest.d.ts +79 -0
  122. package/IO/PcfControlManifest.d.ts.map +1 -0
  123. package/IO/PcfControlManifest.js +93 -0
  124. package/IO/PcfControlManifest.js.map +1 -0
  125. package/IO/Reader/Interfaces/IFileReader.d.ts +30 -0
  126. package/IO/Reader/Interfaces/IFileReader.d.ts.map +1 -0
  127. package/IO/Reader/Interfaces/IFileReader.js +3 -0
  128. package/IO/Reader/Interfaces/IFileReader.js.map +1 -0
  129. package/IO/Reader/TextFileReader.d.ts +53 -0
  130. package/IO/Reader/TextFileReader.d.ts.map +1 -0
  131. package/IO/Reader/TextFileReader.js +167 -0
  132. package/IO/Reader/TextFileReader.js.map +1 -0
  133. package/IO/Resx.d.ts +49 -0
  134. package/IO/Resx.d.ts.map +1 -0
  135. package/IO/Resx.js +95 -0
  136. package/IO/Resx.js.map +1 -0
  137. package/IO/SymbolikLink.d.ts +6 -0
  138. package/IO/SymbolikLink.d.ts.map +1 -0
  139. package/IO/SymbolikLink.js +10 -0
  140. package/IO/SymbolikLink.js.map +1 -0
  141. package/IO/Template.d.ts +41 -0
  142. package/IO/Template.d.ts.map +1 -0
  143. package/IO/Template.js +71 -0
  144. package/IO/Template.js.map +1 -0
  145. package/IO/TemporaryDirectory.d.ts +28 -0
  146. package/IO/TemporaryDirectory.d.ts.map +1 -0
  147. package/IO/TemporaryDirectory.js +76 -0
  148. package/IO/TemporaryDirectory.js.map +1 -0
  149. package/IO/TemporaryFile.d.ts +28 -0
  150. package/IO/TemporaryFile.d.ts.map +1 -0
  151. package/IO/TemporaryFile.js +77 -0
  152. package/IO/TemporaryFile.js.map +1 -0
  153. package/IO/Writer/Interfaces/IFileWriter.d.ts +31 -0
  154. package/IO/Writer/Interfaces/IFileWriter.d.ts.map +1 -0
  155. package/IO/Writer/Interfaces/IFileWriter.js +4 -0
  156. package/IO/Writer/Interfaces/IFileWriter.js.map +1 -0
  157. package/IO/Writer/TextFileWriter.d.ts +56 -0
  158. package/IO/Writer/TextFileWriter.d.ts.map +1 -0
  159. package/IO/Writer/TextFileWriter.js +129 -0
  160. package/IO/Writer/TextFileWriter.js.map +1 -0
  161. package/IO/vNext/FileCache.d.ts +46 -0
  162. package/IO/vNext/FileCache.d.ts.map +1 -0
  163. package/IO/vNext/FileCache.js +94 -0
  164. package/IO/vNext/FileCache.js.map +1 -0
  165. package/IO/vNext/FileSystem.d.ts +107 -0
  166. package/IO/vNext/FileSystem.d.ts.map +1 -0
  167. package/IO/vNext/FileSystem.js +148 -0
  168. package/IO/vNext/FileSystem.js.map +1 -0
  169. package/IO/vNext/Interfaces/IFileCache.d.ts +56 -0
  170. package/IO/vNext/Interfaces/IFileCache.d.ts.map +1 -0
  171. package/IO/vNext/Interfaces/IFileCache.js +3 -0
  172. package/IO/vNext/Interfaces/IFileCache.js.map +1 -0
  173. package/IO/vNext/Interfaces/IFileSystem.d.ts +102 -0
  174. package/IO/vNext/Interfaces/IFileSystem.d.ts.map +1 -0
  175. package/IO/vNext/Interfaces/IFileSystem.js +4 -0
  176. package/IO/vNext/Interfaces/IFileSystem.js.map +1 -0
  177. package/Index.d.ts +62 -0
  178. package/Index.d.ts.map +1 -0
  179. package/Index.js +132 -0
  180. package/Index.js.map +1 -0
  181. package/Intl/Languages.d.ts +12 -0
  182. package/Intl/Languages.d.ts.map +1 -0
  183. package/Intl/Languages.js +865 -0
  184. package/Intl/Languages.js.map +1 -0
  185. package/LICENSE +21 -0
  186. package/Logging/Appenders/Abstracts/Appender.d.ts +21 -0
  187. package/Logging/Appenders/Abstracts/Appender.d.ts.map +1 -0
  188. package/Logging/Appenders/Abstracts/Appender.js +78 -0
  189. package/Logging/Appenders/Abstracts/Appender.js.map +1 -0
  190. package/Logging/Appenders/Interfaces/IAppender.d.ts +13 -0
  191. package/Logging/Appenders/Interfaces/IAppender.d.ts.map +1 -0
  192. package/Logging/Appenders/Interfaces/IAppender.js +4 -0
  193. package/Logging/Appenders/Interfaces/IAppender.js.map +1 -0
  194. package/Logging/Appenders/Interfaces/IAppenderConfig.d.ts +9 -0
  195. package/Logging/Appenders/Interfaces/IAppenderConfig.d.ts.map +1 -0
  196. package/Logging/Appenders/Interfaces/IAppenderConfig.js +3 -0
  197. package/Logging/Appenders/Interfaces/IAppenderConfig.js.map +1 -0
  198. package/Logging/Appenders/LogLevelAppender.d.ts +29 -0
  199. package/Logging/Appenders/LogLevelAppender.d.ts.map +1 -0
  200. package/Logging/Appenders/LogLevelAppender.js +102 -0
  201. package/Logging/Appenders/LogLevelAppender.js.map +1 -0
  202. package/Logging/Appenders/MessageAppender.d.ts +26 -0
  203. package/Logging/Appenders/MessageAppender.d.ts.map +1 -0
  204. package/Logging/Appenders/MessageAppender.js +91 -0
  205. package/Logging/Appenders/MessageAppender.js.map +1 -0
  206. package/Logging/Appenders/Styles/AppenderTerminalColors.d.ts +20 -0
  207. package/Logging/Appenders/Styles/AppenderTerminalColors.d.ts.map +1 -0
  208. package/Logging/Appenders/Styles/AppenderTerminalColors.js +4 -0
  209. package/Logging/Appenders/Styles/AppenderTerminalColors.js.map +1 -0
  210. package/Logging/Appenders/Styles/LogLevelAppenderStyle.d.ts +5 -0
  211. package/Logging/Appenders/Styles/LogLevelAppenderStyle.d.ts.map +1 -0
  212. package/Logging/Appenders/Styles/LogLevelAppenderStyle.js +3 -0
  213. package/Logging/Appenders/Styles/LogLevelAppenderStyle.js.map +1 -0
  214. package/Logging/Appenders/TagAppender.d.ts +25 -0
  215. package/Logging/Appenders/TagAppender.d.ts.map +1 -0
  216. package/Logging/Appenders/TagAppender.js +49 -0
  217. package/Logging/Appenders/TagAppender.js.map +1 -0
  218. package/Logging/Appenders/TimeStampAppender.d.ts +22 -0
  219. package/Logging/Appenders/TimeStampAppender.d.ts.map +1 -0
  220. package/Logging/Appenders/TimeStampAppender.js +44 -0
  221. package/Logging/Appenders/TimeStampAppender.js.map +1 -0
  222. package/Logging/Interfaces/ILogEntry.d.ts +13 -0
  223. package/Logging/Interfaces/ILogEntry.d.ts.map +1 -0
  224. package/Logging/Interfaces/ILogEntry.js +4 -0
  225. package/Logging/Interfaces/ILogEntry.js.map +1 -0
  226. package/Logging/Interfaces/ILogOptions.d.ts +17 -0
  227. package/Logging/Interfaces/ILogOptions.d.ts.map +1 -0
  228. package/Logging/Interfaces/ILogOptions.js +4 -0
  229. package/Logging/Interfaces/ILogOptions.js.map +1 -0
  230. package/Logging/Interfaces/ILoggerScope.d.ts +7 -0
  231. package/Logging/Interfaces/ILoggerScope.d.ts.map +1 -0
  232. package/Logging/Interfaces/ILoggerScope.js +3 -0
  233. package/Logging/Interfaces/ILoggerScope.js.map +1 -0
  234. package/Logging/Interfaces/ILoggerScopeConfig.d.ts +9 -0
  235. package/Logging/Interfaces/ILoggerScopeConfig.d.ts.map +1 -0
  236. package/Logging/Interfaces/ILoggerScopeConfig.js +4 -0
  237. package/Logging/Interfaces/ILoggerScopeConfig.js.map +1 -0
  238. package/Logging/LogLevel.d.ts +5 -0
  239. package/Logging/LogLevel.d.ts.map +1 -0
  240. package/Logging/LogLevel.js +3 -0
  241. package/Logging/LogLevel.js.map +1 -0
  242. package/Logging/Logger.d.ts +148 -0
  243. package/Logging/Logger.d.ts.map +1 -0
  244. package/Logging/Logger.js +326 -0
  245. package/Logging/Logger.js.map +1 -0
  246. package/Logging/LoggerConfig.d.ts +45 -0
  247. package/Logging/LoggerConfig.d.ts.map +1 -0
  248. package/Logging/LoggerConfig.js +83 -0
  249. package/Logging/LoggerConfig.js.map +1 -0
  250. package/Logging/LoggerScope.d.ts +16 -0
  251. package/Logging/LoggerScope.d.ts.map +1 -0
  252. package/Logging/LoggerScope.js +81 -0
  253. package/Logging/LoggerScope.js.map +1 -0
  254. package/Logging/LoggerSuppressor.d.ts +10 -0
  255. package/Logging/LoggerSuppressor.d.ts.map +1 -0
  256. package/Logging/LoggerSuppressor.js +43 -0
  257. package/Logging/LoggerSuppressor.js.map +1 -0
  258. package/Logging/LoggerUtils.d.ts +47 -0
  259. package/Logging/LoggerUtils.d.ts.map +1 -0
  260. package/Logging/LoggerUtils.js +102 -0
  261. package/Logging/LoggerUtils.js.map +1 -0
  262. package/Logging/vNext/ConsoleLogger.d.ts +56 -0
  263. package/Logging/vNext/ConsoleLogger.d.ts.map +1 -0
  264. package/Logging/vNext/ConsoleLogger.js +76 -0
  265. package/Logging/vNext/ConsoleLogger.js.map +1 -0
  266. package/Logging/vNext/Interfaces/ILogger.d.ts +38 -0
  267. package/Logging/vNext/Interfaces/ILogger.d.ts.map +1 -0
  268. package/Logging/vNext/Interfaces/ILogger.js +3 -0
  269. package/Logging/vNext/Interfaces/ILogger.js.map +1 -0
  270. package/Logging/vNext/LoggerExtensions.d.ts +79 -0
  271. package/Logging/vNext/LoggerExtensions.d.ts.map +1 -0
  272. package/Logging/vNext/LoggerExtensions.js +175 -0
  273. package/Logging/vNext/LoggerExtensions.js.map +1 -0
  274. package/Logging/vNext/Styles/Style.d.ts +9 -0
  275. package/Logging/vNext/Styles/Style.d.ts.map +1 -0
  276. package/Logging/vNext/Styles/Style.js +17 -0
  277. package/Logging/vNext/Styles/Style.js.map +1 -0
  278. package/Logging/vNext/Styles/StyleDirectives.d.ts +61 -0
  279. package/Logging/vNext/Styles/StyleDirectives.d.ts.map +1 -0
  280. package/Logging/vNext/Styles/StyleDirectives.js +118 -0
  281. package/Logging/vNext/Styles/StyleDirectives.js.map +1 -0
  282. package/System/Args.d.ts +20 -0
  283. package/System/Args.d.ts.map +1 -0
  284. package/System/Args.js +45 -0
  285. package/System/Args.js.map +1 -0
  286. package/System/Array.d.ts +41 -0
  287. package/System/Array.d.ts.map +1 -0
  288. package/System/Array.js +91 -0
  289. package/System/Array.js.map +1 -0
  290. package/System/Assign.d.ts +12 -0
  291. package/System/Assign.d.ts.map +1 -0
  292. package/System/Assign.js +40 -0
  293. package/System/Assign.js.map +1 -0
  294. package/System/Boolean.d.ts +20 -0
  295. package/System/Boolean.d.ts.map +1 -0
  296. package/System/Boolean.js +52 -0
  297. package/System/Boolean.js.map +1 -0
  298. package/System/Error.d.ts +9 -0
  299. package/System/Error.d.ts.map +1 -0
  300. package/System/Error.js +20 -0
  301. package/System/Error.js.map +1 -0
  302. package/System/Errors.d.ts +7 -0
  303. package/System/Errors.d.ts.map +1 -0
  304. package/System/Errors.js +18 -0
  305. package/System/Errors.js.map +1 -0
  306. package/System/Formatter.d.ts +4 -0
  307. package/System/Formatter.d.ts.map +1 -0
  308. package/System/Formatter.js +17 -0
  309. package/System/Formatter.js.map +1 -0
  310. package/System/Guard.d.ts +5 -0
  311. package/System/Guard.d.ts.map +1 -0
  312. package/System/Guard.js +29 -0
  313. package/System/Guard.js.map +1 -0
  314. package/System/Interfaces/IType.d.ts +7 -0
  315. package/System/Interfaces/IType.d.ts.map +1 -0
  316. package/System/Interfaces/IType.js +3 -0
  317. package/System/Interfaces/IType.js.map +1 -0
  318. package/System/Interfaces/IUnknown.d.ts +7 -0
  319. package/System/Interfaces/IUnknown.d.ts.map +1 -0
  320. package/System/Interfaces/IUnknown.js +3 -0
  321. package/System/Interfaces/IUnknown.js.map +1 -0
  322. package/System/List.d.ts +27 -0
  323. package/System/List.d.ts.map +1 -0
  324. package/System/List.js +84 -0
  325. package/System/List.js.map +1 -0
  326. package/System/Number.d.ts +10 -0
  327. package/System/Number.d.ts.map +1 -0
  328. package/System/Number.js +28 -0
  329. package/System/Number.js.map +1 -0
  330. package/System/Process.d.ts +30 -0
  331. package/System/Process.d.ts.map +1 -0
  332. package/System/Process.js +167 -0
  333. package/System/Process.js.map +1 -0
  334. package/System/Require.d.ts +8 -0
  335. package/System/Require.d.ts.map +1 -0
  336. package/System/Require.js +20 -0
  337. package/System/Require.js.map +1 -0
  338. package/System/Stopwatch.d.ts +19 -0
  339. package/System/Stopwatch.d.ts.map +1 -0
  340. package/System/Stopwatch.js +73 -0
  341. package/System/Stopwatch.js.map +1 -0
  342. package/System/String.d.ts +19 -0
  343. package/System/String.d.ts.map +1 -0
  344. package/System/String.js +177 -0
  345. package/System/String.js.map +1 -0
  346. package/System/Time.d.ts +7 -0
  347. package/System/Time.d.ts.map +1 -0
  348. package/System/Time.js +16 -0
  349. package/System/Time.js.map +1 -0
  350. package/System/Version.d.ts +20 -0
  351. package/System/Version.d.ts.map +1 -0
  352. package/System/Version.js +135 -0
  353. package/System/Version.js.map +1 -0
  354. package/Terminal/Terminal.d.ts +7 -0
  355. package/Terminal/Terminal.d.ts.map +1 -0
  356. package/Terminal/Terminal.js +21 -0
  357. package/Terminal/Terminal.js.map +1 -0
  358. package/Terminal/TerminalColorType.d.ts +2 -0
  359. package/Terminal/TerminalColorType.d.ts.map +1 -0
  360. package/Terminal/TerminalColorType.js +3 -0
  361. package/Terminal/TerminalColorType.js.map +1 -0
  362. package/Terminal/TerminalColors.d.ts +38 -0
  363. package/Terminal/TerminalColors.d.ts.map +1 -0
  364. package/Terminal/TerminalColors.js +151 -0
  365. package/Terminal/TerminalColors.js.map +1 -0
  366. package/Terminal/TerminalSymbolType.d.ts +2 -0
  367. package/Terminal/TerminalSymbolType.d.ts.map +1 -0
  368. package/Terminal/TerminalSymbolType.js +3 -0
  369. package/Terminal/TerminalSymbolType.js.map +1 -0
  370. package/Terminal/TerminalSymbols.d.ts +7 -0
  371. package/Terminal/TerminalSymbols.d.ts.map +1 -0
  372. package/Terminal/TerminalSymbols.js +30 -0
  373. package/Terminal/TerminalSymbols.js.map +1 -0
  374. package/package.json +26 -0
@@ -0,0 +1,47 @@
1
+ import type { IType } from '../../System/Interfaces/IType';
2
+ import type { ProgramCommandResult } from '../ProgramCommandResult';
3
+ import type { IProgramCommand } from './IProgramCommand';
4
+ /**
5
+ * Represents the program commands.
6
+ *
7
+ * @public
8
+ */
9
+ export interface IProgramCommands {
10
+ /**
11
+ * Registers a new command.
12
+ *
13
+ * @public
14
+ * @param commandName - The command name.
15
+ * @param commandType - The command type to register.
16
+ * @param commandInstanceFactory - The optional factory to instaiate the command.
17
+ */
18
+ register<TCommand extends IType<IProgramCommand>>(commandName: string, commandType: TCommand, commandInstanceFactory?: () => ConstructorParameters<TCommand>): this;
19
+ /**
20
+ * Initalizes all commands.
21
+ *
22
+ * @public
23
+ * @param command - The optional command to parse.
24
+ */
25
+ initalize(command?: string): Promise<void>;
26
+ /**
27
+ * Executes all commands.
28
+ *
29
+ * @public
30
+ */
31
+ execute(): Promise<ProgramCommandResult>;
32
+ /**
33
+ * Parses the command from argv.
34
+ *
35
+ * @public
36
+ * @param command - The optional command to parse.
37
+ * @param args - The optional arguments to parse.
38
+ */
39
+ parse(command?: string, args?: Array<string>): void;
40
+ /**
41
+ * Disposes all commands.
42
+ *
43
+ * @public
44
+ */
45
+ dispose(): Promise<void>;
46
+ }
47
+ //# sourceMappingURL=IProgramCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProgramCommands.d.ts","sourceRoot":"","sources":["../../../src/Cli/Interfaces/IProgramCommands.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAI7B;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,SAAS,KAAK,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,sBAAsB,CAAC,EAAE,MAAM,qBAAqB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEpK;;;;;OAKG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEzC;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAEpD;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAI5B"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=IProgramCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProgramCommands.js","sourceRoot":"","sources":["../../../src/Cli/Interfaces/IProgramCommands.ts"],"names":[],"mappings":";AAAA,kBAAkB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Represents the program configuration.
3
+ *
4
+ * @public
5
+ */
6
+ export interface IProgramConfig<TConfig extends Record<string, unknown>> {
7
+ readonly config: TConfig | undefined;
8
+ assign(value?: Partial<TConfig>): TConfig;
9
+ }
10
+ //# sourceMappingURL=IProgramConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProgramConfig.d.ts","sourceRoot":"","sources":["../../../src/Cli/Interfaces/IProgramConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAE7C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IProgramConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProgramConfig.js","sourceRoot":"","sources":["../../../src/Cli/Interfaces/IProgramConfig.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @public
3
+ */
4
+ export interface IProgramInit {
5
+ description?: string;
6
+ epilog?: string;
7
+ addHelp?: boolean;
8
+ prefixChars?: string;
9
+ prog?: string;
10
+ usage?: string;
11
+ version?: string;
12
+ debug?: boolean;
13
+ }
14
+ //# sourceMappingURL=IProgramInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProgramInit.d.ts","sourceRoot":"","sources":["../../../src/Cli/Interfaces/IProgramInit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAIzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,OAAO,CAAC;CAInB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IProgramInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProgramInit.js","sourceRoot":"","sources":["../../../src/Cli/Interfaces/IProgramInit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ import type { IProgramArgs } from './Interfaces/IProgramArgs';
2
+ import type { IProgramCommands } from './Interfaces/IProgramCommands';
3
+ import type { IProgramInit } from './Interfaces/IProgramInit';
4
+ import { ProgramConfig } from './ProgramConfig';
5
+ import type { ProgramDoneFn } from './ProgramDoneFn';
6
+ /**
7
+ * A abstract class for node.js cli's
8
+ *
9
+ * @public
10
+ * @abstract
11
+ */
12
+ export declare abstract class Program<TConfig extends Record<string, unknown> = Record<string, unknown>> {
13
+ private readonly _programmCommands;
14
+ private readonly _programmArgs;
15
+ private readonly _programmConfig;
16
+ private readonly _parser;
17
+ /**
18
+ * Creates an instance of program.
19
+ *
20
+ * @protected
21
+ */
22
+ protected constructor(init?: IProgramInit, commands?: IProgramCommands, args?: IProgramArgs);
23
+ /**
24
+ * Returns the program configuration.
25
+ *
26
+ * @public
27
+ * @readonly
28
+ */
29
+ get config(): ProgramConfig<TConfig>;
30
+ /**
31
+ * Returns the program commands.
32
+ *
33
+ * @public
34
+ * @readonly
35
+ */
36
+ get commands(): IProgramCommands;
37
+ /**
38
+ * Returns the program arguments.
39
+ *
40
+ * @public
41
+ * @readonly
42
+ */
43
+ get args(): IProgramArgs;
44
+ exit(code?: number): never;
45
+ /**
46
+ * The method parse all arguments form outside.
47
+ * After this method, all arguments should be presented.
48
+ *
49
+ * @public
50
+ * @virtual
51
+ * @returns {Program} The program instance
52
+ */
53
+ init(): Promise<this>;
54
+ /**
55
+ * The method observes errors an starts the process.
56
+ *
57
+ * @public
58
+ * @virtual
59
+ * @returns {Promise<number>} The process exit code.
60
+ */
61
+ run(): Promise<number>;
62
+ /**
63
+ * The abstract method will called after the run method
64
+ * This method should include your bussines logic
65
+ *
66
+ * @ignore
67
+ * @protected
68
+ * @virtual
69
+ * @param {ProgramDoneFn} done The done callback
70
+ * @returns {Promise<number>} The result code.
71
+ */
72
+ protected process(done: ProgramDoneFn): Promise<number>;
73
+ /**
74
+ * @ignore
75
+ * @protected
76
+ * @virtual
77
+ * @param {Error} error The error
78
+ * @param {string} stderr The stderr
79
+ * @returns {void}
80
+ */
81
+ protected onError(error: Error | null, stderr?: string, startedAt?: number): void;
82
+ /**
83
+ * @ignore
84
+ * @protected
85
+ * @virtual
86
+ * @param {string} stdout The stdout
87
+ * @returns {void}
88
+ */
89
+ protected onSuccess(stdout: string, startedAt: number): void;
90
+ /**
91
+ * Extract the command form argv.
92
+ *
93
+ * @private
94
+ */
95
+ private firstArgType;
96
+ }
97
+ //# sourceMappingURL=Program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Program.d.ts","sourceRoot":"","sources":["../../src/Cli/Program.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD;;;;;GAKG;AACH,8BAAsB,OAAO,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI3F,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAMzC;;;;OAIG;IACH,SAAS,aAAa,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,YAAY;IAoB3F;;;;;OAKG;IACH,IAAW,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,CAE1C;IAED;;;;;OAKG;IACH,IAAW,QAAQ,IAAI,gBAAgB,CAEtC;IAED;;;;;OAKG;IACH,IAAW,IAAI,IAAI,YAAY,CAE9B;IAMM,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK;IAIjC;;;;;;;OAOG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BlC;;;;;;OAMG;IACU,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAcnC;;;;;;;;;OASG;cACa,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAc7D;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAajF;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAa5D;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAmBvB"}
package/Cli/Program.js ADDED
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ // #region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Program = void 0;
5
+ const argparse_1 = require("argparse");
6
+ const String_1 = require("../System/String");
7
+ const Time_1 = require("../System/Time");
8
+ const TerminalColors_1 = require("../Terminal/TerminalColors");
9
+ const TerminalSymbols_1 = require("../Terminal/TerminalSymbols");
10
+ const ProgramArgs_1 = require("./ProgramArgs");
11
+ const ProgramCommands_1 = require("./ProgramCommands");
12
+ const ProgramConfig_1 = require("./ProgramConfig");
13
+ // #endregion
14
+ /**
15
+ * A abstract class for node.js cli's
16
+ *
17
+ * @public
18
+ * @abstract
19
+ */
20
+ class Program {
21
+ // #region Fields
22
+ _programmCommands;
23
+ _programmArgs;
24
+ _programmConfig;
25
+ _parser;
26
+ // #endregion
27
+ // #region Ctor
28
+ /**
29
+ * Creates an instance of program.
30
+ *
31
+ * @protected
32
+ */
33
+ constructor(init, commands, args) {
34
+ this._programmConfig = new ProgramConfig_1.ProgramConfig();
35
+ this._programmCommands = commands ?? new ProgramCommands_1.ProgramCommands(init);
36
+ this._programmArgs = args ?? new ProgramArgs_1.ProgramArgs();
37
+ this._parser = new argparse_1.ArgumentParser({
38
+ description: init?.description,
39
+ epilog: init?.epilog,
40
+ // eslint-disable-next-line camelcase
41
+ add_help: init?.addHelp,
42
+ // eslint-disable-next-line camelcase
43
+ prefix_chars: init?.prefixChars ?? '-',
44
+ prog: init?.prog,
45
+ usage: init?.usage
46
+ });
47
+ }
48
+ // #endregion
49
+ // #region Properties
50
+ /**
51
+ * Returns the program configuration.
52
+ *
53
+ * @public
54
+ * @readonly
55
+ */
56
+ get config() {
57
+ return this._programmConfig;
58
+ }
59
+ /**
60
+ * Returns the program commands.
61
+ *
62
+ * @public
63
+ * @readonly
64
+ */
65
+ get commands() {
66
+ return this._programmCommands;
67
+ }
68
+ /**
69
+ * Returns the program arguments.
70
+ *
71
+ * @public
72
+ * @readonly
73
+ */
74
+ get args() {
75
+ return this._programmArgs;
76
+ }
77
+ // #endregion
78
+ // #region Methods
79
+ exit(code) {
80
+ process.exit(code);
81
+ }
82
+ /**
83
+ * The method parse all arguments form outside.
84
+ * After this method, all arguments should be presented.
85
+ *
86
+ * @public
87
+ * @virtual
88
+ * @returns {Program} The program instance
89
+ */
90
+ async init() {
91
+ process.on('uncaughtException', (error) => {
92
+ this.onError(error);
93
+ });
94
+ process.on('unhandledRejection', (event) => {
95
+ this.onError(event);
96
+ });
97
+ if (this.firstArgType() === 'cmd') {
98
+ await this.commands.initalize();
99
+ this.commands.parse();
100
+ }
101
+ else {
102
+ // If a command is present, the program args not needed.
103
+ // Ensure that the program args already defined in the command args.
104
+ this.args.options.forEach((x) => {
105
+ if (typeof x.alias === 'string') {
106
+ this._parser.add_argument(x.alias, x.options);
107
+ }
108
+ else {
109
+ this._parser.add_argument(x.alias[0], x.alias[1], x.options);
110
+ }
111
+ });
112
+ const parsedArgs = this._parser.parse_args(process.argv);
113
+ this.config.assign(parsedArgs);
114
+ }
115
+ return this;
116
+ }
117
+ /**
118
+ * The method observes errors an starts the process.
119
+ *
120
+ * @public
121
+ * @virtual
122
+ * @returns {Promise<number>} The process exit code.
123
+ */
124
+ async run() {
125
+ const startedAt = Date.now();
126
+ return this.process((error, stdout, stderr) => {
127
+ if (error || stderr) {
128
+ this.onError(error, stderr, startedAt);
129
+ this.exit(1);
130
+ }
131
+ else {
132
+ this.onSuccess(stdout, startedAt);
133
+ this.exit(0);
134
+ }
135
+ });
136
+ }
137
+ /**
138
+ * The abstract method will called after the run method
139
+ * This method should include your bussines logic
140
+ *
141
+ * @ignore
142
+ * @protected
143
+ * @virtual
144
+ * @param {ProgramDoneFn} done The done callback
145
+ * @returns {Promise<number>} The result code.
146
+ */
147
+ async process(done) {
148
+ if (this.firstArgType() === 'cmd') {
149
+ const result = await this.commands.execute();
150
+ if (result.canceled && result.error.code !== 0) {
151
+ done(result.error, '', result.error.message);
152
+ return result.error.code ?? 1;
153
+ }
154
+ }
155
+ done(null, '', '');
156
+ return 0;
157
+ }
158
+ /**
159
+ * @ignore
160
+ * @protected
161
+ * @virtual
162
+ * @param {Error} error The error
163
+ * @param {string} stderr The stderr
164
+ * @returns {void}
165
+ */
166
+ onError(error, stderr, startedAt) {
167
+ const msg = stderr ?? error?.message ?? '';
168
+ if (msg) {
169
+ console.error(`${TerminalSymbols_1.TerminalSymbols.error} ${TerminalColors_1.TerminalColors.from(msg, 'red').toString()}`);
170
+ }
171
+ if (startedAt) {
172
+ console.error(`${String_1.StringExtensions.newLine}${String_1.StringExtensions.newLine}${TerminalSymbols_1.TerminalSymbols.error} ${TerminalColors_1.TerminalColors.from('Done.', 'red').toString()} ${TerminalColors_1.TerminalColors.from(`in ${Time_1.Time.humanize(Date.now() - startedAt)}s`, 'gray').toString()}`);
173
+ }
174
+ else {
175
+ console.error(`${String_1.StringExtensions.newLine}${String_1.StringExtensions.newLine}${TerminalSymbols_1.TerminalSymbols.error} ${TerminalColors_1.TerminalColors.from('Done.', 'red').toString()}`);
176
+ }
177
+ }
178
+ /**
179
+ * @ignore
180
+ * @protected
181
+ * @virtual
182
+ * @param {string} stdout The stdout
183
+ * @returns {void}
184
+ */
185
+ onSuccess(stdout, startedAt) {
186
+ const msg = stdout;
187
+ if (msg) {
188
+ console.info(`${TerminalSymbols_1.TerminalSymbols.success} ${TerminalColors_1.TerminalColors.from(msg, 'green').toString()}`);
189
+ }
190
+ if (startedAt) {
191
+ console.info(`${String_1.StringExtensions.newLine}${String_1.StringExtensions.newLine}${TerminalSymbols_1.TerminalSymbols.success} ${TerminalColors_1.TerminalColors.from('Done.', 'green').toString()} ${TerminalColors_1.TerminalColors.from(`in ${Time_1.Time.humanize(Date.now() - startedAt)}s`, 'gray').toString()}`);
192
+ }
193
+ else {
194
+ console.info(`${String_1.StringExtensions.newLine}${String_1.StringExtensions.newLine}${TerminalSymbols_1.TerminalSymbols.success} ${TerminalColors_1.TerminalColors.from('Done.', 'green').toString()}`);
195
+ }
196
+ }
197
+ /**
198
+ * Extract the command form argv.
199
+ *
200
+ * @private
201
+ */
202
+ firstArgType() {
203
+ const command = process.argv
204
+ .slice(2)
205
+ .splice(0, 1)
206
+ .join();
207
+ if (command !== '' && !command.startsWith('-')) {
208
+ return 'cmd';
209
+ }
210
+ if (command !== '' && command.startsWith('-')) {
211
+ return 'param';
212
+ }
213
+ return 'none';
214
+ }
215
+ }
216
+ exports.Program = Program;
217
+ //# sourceMappingURL=Program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Program.js","sourceRoot":"","sources":["../../src/Cli/Program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { IProgramArg } from './Interfaces/IProgramArg';
2
+ import type { IProgramArgs } from './Interfaces/IProgramArgs';
3
+ import type { IProgramArgOptions } from './Interfaces/IProgramArgOptions';
4
+ interface IProgrammOption {
5
+ alias: string | [string, string];
6
+ options: IProgramArgOptions;
7
+ }
8
+ /**
9
+ * @private
10
+ */
11
+ export declare class ProgramArgs implements IProgramArgs {
12
+ private readonly _argOptions;
13
+ /**
14
+ * Constructs a new instance of the `ProgramArgs` class.
15
+ *
16
+ * @public
17
+ */
18
+ constructor();
19
+ /**
20
+ * Returns the all registered options.
21
+ *
22
+ * @public
23
+ * @readonly
24
+ */
25
+ get options(): Array<IProgrammOption>;
26
+ /**
27
+ * Registers a new argument.
28
+ *
29
+ * @public
30
+ * @param args - The arguments to register.
31
+ */
32
+ register(...args: Array<IProgramArg>): this;
33
+ /**
34
+ * @public
35
+ */
36
+ toString(): string;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=ProgramArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgramArgs.d.ts","sourceRoot":"","sources":["../../src/Cli/ProgramArgs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAI1E,UAAU,eAAe;IACrB,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAI5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAMrD;;;;OAIG;;IASH;;;;;OAKG;IACH,IAAW,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC,CAE3C;IAMD;;;;;OAKG;IACI,QAAQ,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;IAQlD;;OAEG;IACI,QAAQ,IAAI,MAAM;CAkC5B"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/switch-exhaustiveness-check */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ProgramArgs = void 0;
5
+ // #region Imports
6
+ const String_1 = require("../System/String");
7
+ /**
8
+ * @private
9
+ */
10
+ class ProgramArgs {
11
+ // #region Fields
12
+ _argOptions;
13
+ // #endregion
14
+ // #region Ctor
15
+ /**
16
+ * Constructs a new instance of the `ProgramArgs` class.
17
+ *
18
+ * @public
19
+ */
20
+ constructor() {
21
+ this._argOptions = [];
22
+ }
23
+ // #endregion
24
+ // #region Methods
25
+ /**
26
+ * Returns the all registered options.
27
+ *
28
+ * @public
29
+ * @readonly
30
+ */
31
+ get options() {
32
+ return this._argOptions;
33
+ }
34
+ // #endregion
35
+ // #region Methods
36
+ /**
37
+ * Registers a new argument.
38
+ *
39
+ * @public
40
+ * @param args - The arguments to register.
41
+ */
42
+ register(...args) {
43
+ args.forEach((arg) => this._argOptions.push({
44
+ alias: arg.alias,
45
+ options: arg.options
46
+ }));
47
+ return this;
48
+ }
49
+ /**
50
+ * @public
51
+ */
52
+ toString() {
53
+ // @ts-ignore fix suppressImplicitAnyIndexErrors
54
+ const argumentKeys = this._argOptions.map((x) => x[0] ? x[0].pop() : '').map((x) => String_1.StringExtensions.firstCharToLowerCase((x ?? '').replace('--', '-')));
55
+ // @ts-ignore fix suppressImplicitAnyIndexErrors
56
+ const argumentOptions = this._argOptions.map((x) => x[1]);
57
+ const propertyKeys = argumentKeys.map((x) => String_1.StringExtensions.firstCharToLowerCase(x.replace('-', '')));
58
+ const argumentPropertyMapping = new Map();
59
+ // @ts-ignore fix suppressImplicitAnyIndexErrors
60
+ argumentKeys.forEach((_, i) => argumentPropertyMapping.set(argumentKeys[i], this[propertyKeys[i]]));
61
+ const argumentPropertyString = Array.from(argumentPropertyMapping.entries()).map((x, i) => {
62
+ const option = argumentOptions[i];
63
+ if (option) {
64
+ switch (typeof x[1]) {
65
+ case 'string':
66
+ return x[1] !== '' ? `${x[0]} ${x[1]}` : '';
67
+ case 'boolean':
68
+ return x[1] ? x[0] : '';
69
+ case 'number':
70
+ return x[1] > 0 ? `${x[0]} ${x[1]}` : '';
71
+ case 'object':
72
+ return JSON.stringify(x[1]);
73
+ default:
74
+ throw new Error(`Invalid argument type '${String(x[1])}'.`);
75
+ }
76
+ }
77
+ throw new Error();
78
+ });
79
+ return argumentPropertyString.join(' ');
80
+ }
81
+ }
82
+ exports.ProgramArgs = ProgramArgs;
83
+ //# sourceMappingURL=ProgramArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgramArgs.js","sourceRoot":"","sources":["../../src/Cli/ProgramArgs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @public
3
+ */
4
+ export type ProgramCommandResult<TResult = unknown> = {
5
+ canceled: true;
6
+ error: Error & {
7
+ code?: number;
8
+ };
9
+ } | {
10
+ canceled: false;
11
+ result: TResult;
12
+ };
13
+ //# sourceMappingURL=ProgramCommandResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgramCommandResult.d.ts","sourceRoot":"","sources":["../../src/Cli/ProgramCommandResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,GAAG,OAAO,IAAM;IACpD,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,KAAK,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC,GAAG;IACA,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ProgramCommandResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgramCommandResult.js","sourceRoot":"","sources":["../../src/Cli/ProgramCommandResult.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import type { IType } from '../System/Interfaces/IType';
2
+ import type { IProgramCommand } from './Interfaces/IProgramCommand';
3
+ import type { IProgramCommands } from './Interfaces/IProgramCommands';
4
+ import type { IProgramInit } from './Interfaces/IProgramInit';
5
+ import type { ProgramCommandResult } from './ProgramCommandResult';
6
+ /**
7
+ * @private
8
+ */
9
+ export declare class ProgramCommands implements IProgramCommands {
10
+ private readonly _commandTypes;
11
+ private readonly _commandInstances;
12
+ private readonly _parser;
13
+ private _currentCommand;
14
+ private _currentArgs;
15
+ /**
16
+ * Constructs a new instance of the `ProgramCommands` class.
17
+ *
18
+ * @public
19
+ */
20
+ constructor(init?: IProgramInit);
21
+ /**
22
+ * Register a command.
23
+ *
24
+ * @public
25
+ * @param commandName - The command name.
26
+ * @param commandType - The command type to register.
27
+ * @param commandInstanceFactory - The optional factory to instaiate the command.
28
+ */
29
+ register<TCommand extends IType<IProgramCommand>>(commandName: string, commandType: TCommand, commandInstanceFactory?: () => ConstructorParameters<TCommand>): this;
30
+ /**
31
+ * Initalize a command.
32
+ *
33
+ * @public
34
+ * @param command - The optional command to parse.
35
+ */
36
+ initalize(command?: string): Promise<void>;
37
+ /**
38
+ * Parse the command from argv.
39
+ *
40
+ * @public
41
+ * @param command - The optional command to parse.
42
+ * @param args - The optional arguments to parse.
43
+ */
44
+ parse(command?: string, args?: Array<string>): void;
45
+ /**
46
+ * Execute a command.
47
+ *
48
+ * @public
49
+ */
50
+ execute(): Promise<ProgramCommandResult>;
51
+ /**
52
+ * Dispose a command.
53
+ *
54
+ * @public
55
+ */
56
+ dispose(): Promise<void>;
57
+ private ensureCommand;
58
+ }
59
+ /**
60
+ * Converts object keys from snake_case to camelCase.
61
+ *
62
+ * @param obj - The object to be converted.
63
+ * @returns A new object with camelCase keys.
64
+ */
65
+ export declare function convertKeysToCamelCase(obj: Record<string, any>): Record<string, any>;
66
+ //# sourceMappingURL=ProgramCommands.d.ts.map