@pristine-ts/cli 2.0.6 → 2.0.16

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 (342) hide show
  1. package/dist/lib/cjs/bin.js +0 -0
  2. package/dist/lib/cjs/bootstrap/app-module-cache.js +71 -0
  3. package/dist/lib/cjs/bootstrap/app-module-cache.js.map +1 -0
  4. package/dist/lib/cjs/bootstrap/app-module-discoverer.js +119 -0
  5. package/dist/lib/cjs/bootstrap/app-module-discoverer.js.map +1 -0
  6. package/dist/lib/cjs/bootstrap/app-module-discovery-candidate.js +21 -0
  7. package/dist/lib/cjs/bootstrap/app-module-discovery-candidate.js.map +1 -0
  8. package/dist/lib/cjs/bootstrap/app-module-discovery-reason.enum.js +15 -0
  9. package/dist/lib/cjs/bootstrap/app-module-discovery-reason.enum.js.map +1 -0
  10. package/dist/lib/cjs/bootstrap/app-module-prompt.js +78 -0
  11. package/dist/lib/cjs/bootstrap/app-module-prompt.js.map +1 -0
  12. package/dist/lib/cjs/bootstrap/build-runner.js +1 -1
  13. package/dist/lib/cjs/bootstrap/build-staleness-prompt.js +12 -13
  14. package/dist/lib/cjs/bootstrap/build-staleness-prompt.js.map +1 -1
  15. package/dist/lib/cjs/bootstrap/init-prompt.js +16 -47
  16. package/dist/lib/cjs/bootstrap/init-prompt.js.map +1 -1
  17. package/dist/lib/cjs/cli.configuration-keys.js +24 -0
  18. package/dist/lib/cjs/cli.configuration-keys.js.map +1 -0
  19. package/dist/lib/cjs/cli.js +23 -10
  20. package/dist/lib/cjs/cli.js.map +1 -1
  21. package/dist/lib/cjs/cli.module.js +41 -8
  22. package/dist/lib/cjs/cli.module.js.map +1 -1
  23. package/dist/lib/cjs/commands/build.command.js +15 -14
  24. package/dist/lib/cjs/commands/build.command.js.map +1 -1
  25. package/dist/lib/cjs/commands/commands.js +6 -0
  26. package/dist/lib/cjs/commands/commands.js.map +1 -1
  27. package/dist/lib/cjs/commands/config-init.command.js +133 -0
  28. package/dist/lib/cjs/commands/config-init.command.js.map +1 -0
  29. package/dist/lib/cjs/commands/config-print.command.js +16 -11
  30. package/dist/lib/cjs/commands/config-print.command.js.map +1 -1
  31. package/dist/lib/cjs/commands/help.command.js +17 -17
  32. package/dist/lib/cjs/commands/help.command.js.map +1 -1
  33. package/dist/lib/cjs/commands/info.command.js +26 -21
  34. package/dist/lib/cjs/commands/info.command.js.map +1 -1
  35. package/dist/lib/cjs/commands/init.command.js +22 -21
  36. package/dist/lib/cjs/commands/init.command.js.map +1 -1
  37. package/dist/lib/cjs/commands/list.command.js +6 -6
  38. package/dist/lib/cjs/commands/list.command.js.map +1 -1
  39. package/dist/lib/cjs/commands/logs-alias.command.js +49 -0
  40. package/dist/lib/cjs/commands/logs-alias.command.js.map +1 -0
  41. package/dist/lib/cjs/commands/logs.command-options.js +72 -0
  42. package/dist/lib/cjs/commands/logs.command-options.js.map +1 -0
  43. package/dist/lib/cjs/commands/logs.command.js +102 -0
  44. package/dist/lib/cjs/commands/logs.command.js.map +1 -0
  45. package/dist/lib/cjs/commands/requests-alias.command.js +49 -0
  46. package/dist/lib/cjs/commands/requests-alias.command.js.map +1 -0
  47. package/dist/lib/cjs/commands/requests.command-options.js +26 -0
  48. package/dist/lib/cjs/commands/requests.command-options.js.map +1 -0
  49. package/dist/lib/cjs/commands/requests.command.js +88 -0
  50. package/dist/lib/cjs/commands/requests.command.js.map +1 -0
  51. package/dist/lib/cjs/commands/start.command.js +12 -13
  52. package/dist/lib/cjs/commands/start.command.js.map +1 -1
  53. package/dist/lib/cjs/commands/trace-alias.command.js +49 -0
  54. package/dist/lib/cjs/commands/trace-alias.command.js.map +1 -0
  55. package/dist/lib/cjs/commands/trace.command-options.js +59 -0
  56. package/dist/lib/cjs/commands/trace.command-options.js.map +1 -0
  57. package/dist/lib/cjs/commands/trace.command.js +84 -0
  58. package/dist/lib/cjs/commands/trace.command.js.map +1 -0
  59. package/dist/lib/cjs/config/config-loader.js +34 -13
  60. package/dist/lib/cjs/config/config-loader.js.map +1 -1
  61. package/dist/lib/cjs/decorators/command-parameter.decorator.js +40 -0
  62. package/dist/lib/cjs/decorators/command-parameter.decorator.js.map +1 -0
  63. package/dist/lib/cjs/decorators/decorators.js +18 -0
  64. package/dist/lib/cjs/decorators/decorators.js.map +1 -0
  65. package/dist/lib/cjs/enums/cli-decorator-metadata-keyname.enum.js +14 -0
  66. package/dist/lib/cjs/enums/cli-decorator-metadata-keyname.enum.js.map +1 -0
  67. package/dist/lib/cjs/enums/enums.js +19 -0
  68. package/dist/lib/cjs/enums/enums.js.map +1 -0
  69. package/dist/lib/cjs/enums/exit-code.enum.js +9 -0
  70. package/dist/lib/cjs/enums/exit-code.enum.js.map +1 -0
  71. package/dist/lib/cjs/enums/terminal-key-name.enum.js +21 -0
  72. package/dist/lib/cjs/enums/terminal-key-name.enum.js.map +1 -0
  73. package/dist/lib/cjs/errors/cli-error-code.enum.js +11 -1
  74. package/dist/lib/cjs/errors/cli-error-code.enum.js.map +1 -1
  75. package/dist/lib/cjs/errors/errors.js +1 -0
  76. package/dist/lib/cjs/errors/errors.js.map +1 -1
  77. package/dist/lib/cjs/errors/prompt-cancelled.error.js +25 -0
  78. package/dist/lib/cjs/errors/prompt-cancelled.error.js.map +1 -0
  79. package/dist/lib/cjs/event-handlers/cli.event-handler.js +28 -70
  80. package/dist/lib/cjs/event-handlers/cli.event-handler.js.map +1 -1
  81. package/dist/lib/cjs/event-handlers/event-handlers.js +1 -0
  82. package/dist/lib/cjs/event-handlers/event-handlers.js.map +1 -1
  83. package/dist/lib/cjs/event-handlers/repl-start.event-handler.js +280 -0
  84. package/dist/lib/cjs/event-handlers/repl-start.event-handler.js.map +1 -0
  85. package/dist/lib/cjs/event-payloads/event-payloads.js +1 -0
  86. package/dist/lib/cjs/event-payloads/event-payloads.js.map +1 -1
  87. package/dist/lib/cjs/event-payloads/start-repl.event-payload.js +19 -0
  88. package/dist/lib/cjs/event-payloads/start-repl.event-payload.js.map +1 -0
  89. package/dist/lib/cjs/interfaces/interfaces.js +1 -0
  90. package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
  91. package/dist/lib/cjs/interfaces/terminal-key.interface.js +3 -0
  92. package/dist/lib/cjs/interfaces/terminal-key.interface.js.map +1 -0
  93. package/dist/lib/cjs/managers/cli-output.manager.js +45 -0
  94. package/dist/lib/cjs/managers/cli-output.manager.js.map +1 -0
  95. package/dist/lib/cjs/managers/cli-progress-bar.manager.js +49 -0
  96. package/dist/lib/cjs/managers/cli-progress-bar.manager.js.map +1 -0
  97. package/dist/lib/cjs/managers/cli-prompt.manager.js +265 -0
  98. package/dist/lib/cjs/managers/cli-prompt.manager.js.map +1 -0
  99. package/dist/lib/cjs/managers/cli-spinner.manager.js +93 -0
  100. package/dist/lib/cjs/managers/cli-spinner.manager.js.map +1 -0
  101. package/dist/lib/cjs/managers/managers.js +5 -1
  102. package/dist/lib/cjs/managers/managers.js.map +1 -1
  103. package/dist/lib/cjs/managers/repl-session.js +251 -0
  104. package/dist/lib/cjs/managers/repl-session.js.map +1 -0
  105. package/dist/lib/cjs/managers/shell.manager.js +25 -20
  106. package/dist/lib/cjs/managers/shell.manager.js.map +1 -1
  107. package/dist/lib/cjs/managers/terminal-key-reader.manager.js +99 -0
  108. package/dist/lib/cjs/managers/terminal-key-reader.manager.js.map +1 -0
  109. package/dist/lib/cjs/mappers/command-event.mapper.js +48 -8
  110. package/dist/lib/cjs/mappers/command-event.mapper.js.map +1 -1
  111. package/dist/lib/cjs/mappers/mappers.js +1 -0
  112. package/dist/lib/cjs/mappers/mappers.js.map +1 -1
  113. package/dist/lib/cjs/mappers/repl-start-event.mapper.js +80 -0
  114. package/dist/lib/cjs/mappers/repl-start-event.mapper.js.map +1 -0
  115. package/dist/lib/cjs/options/command-parameter.options.js +3 -0
  116. package/dist/lib/cjs/options/command-parameter.options.js.map +1 -0
  117. package/dist/lib/cjs/options/options.js +1 -0
  118. package/dist/lib/cjs/options/options.js.map +1 -1
  119. package/dist/lib/cjs/services/command-argument-resolver.js +62 -0
  120. package/dist/lib/cjs/services/command-argument-resolver.js.map +1 -0
  121. package/dist/lib/cjs/services/command-options-resolver.js +114 -0
  122. package/dist/lib/cjs/services/command-options-resolver.js.map +1 -0
  123. package/dist/lib/cjs/services/command-parameter-prompter.js +311 -0
  124. package/dist/lib/cjs/services/command-parameter-prompter.js.map +1 -0
  125. package/dist/lib/cjs/services/services.js +20 -0
  126. package/dist/lib/cjs/services/services.js.map +1 -0
  127. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  128. package/dist/lib/cjs/types/start-repl-event-response.type.js +13 -0
  129. package/dist/lib/cjs/types/start-repl-event-response.type.js.map +1 -0
  130. package/dist/lib/cjs/types/types.js +1 -0
  131. package/dist/lib/cjs/types/types.js.map +1 -1
  132. package/dist/lib/cjs/utils/boolean-answer-parser.js +25 -0
  133. package/dist/lib/cjs/utils/boolean-answer-parser.js.map +1 -0
  134. package/dist/lib/cjs/utils/pristine-argv.js +87 -0
  135. package/dist/lib/cjs/utils/pristine-argv.js.map +1 -0
  136. package/dist/lib/cjs/utils/terminal-key-decoder.js +71 -0
  137. package/dist/lib/cjs/utils/terminal-key-decoder.js.map +1 -0
  138. package/dist/lib/esm/bootstrap/app-module-cache.js +65 -0
  139. package/dist/lib/esm/bootstrap/app-module-cache.js.map +1 -0
  140. package/dist/lib/esm/bootstrap/app-module-discoverer.js +113 -0
  141. package/dist/lib/esm/bootstrap/app-module-discoverer.js.map +1 -0
  142. package/dist/lib/esm/bootstrap/app-module-discovery-candidate.js +17 -0
  143. package/dist/lib/esm/bootstrap/app-module-discovery-candidate.js.map +1 -0
  144. package/dist/lib/esm/bootstrap/app-module-discovery-reason.enum.js +12 -0
  145. package/dist/lib/esm/bootstrap/app-module-discovery-reason.enum.js.map +1 -0
  146. package/dist/lib/esm/bootstrap/app-module-prompt.js +75 -0
  147. package/dist/lib/esm/bootstrap/app-module-prompt.js.map +1 -0
  148. package/dist/lib/esm/bootstrap/build-runner.js +1 -1
  149. package/dist/lib/esm/bootstrap/build-staleness-prompt.js +12 -13
  150. package/dist/lib/esm/bootstrap/build-staleness-prompt.js.map +1 -1
  151. package/dist/lib/esm/bootstrap/init-prompt.js +16 -47
  152. package/dist/lib/esm/bootstrap/init-prompt.js.map +1 -1
  153. package/dist/lib/esm/cli.configuration-keys.js +21 -0
  154. package/dist/lib/esm/cli.configuration-keys.js.map +1 -0
  155. package/dist/lib/esm/cli.js +23 -10
  156. package/dist/lib/esm/cli.js.map +1 -1
  157. package/dist/lib/esm/cli.module.js +41 -8
  158. package/dist/lib/esm/cli.module.js.map +1 -1
  159. package/dist/lib/esm/commands/build.command.js +16 -15
  160. package/dist/lib/esm/commands/build.command.js.map +1 -1
  161. package/dist/lib/esm/commands/commands.js +6 -0
  162. package/dist/lib/esm/commands/commands.js.map +1 -1
  163. package/dist/lib/esm/commands/config-init.command.js +127 -0
  164. package/dist/lib/esm/commands/config-init.command.js.map +1 -0
  165. package/dist/lib/esm/commands/config-print.command.js +16 -11
  166. package/dist/lib/esm/commands/config-print.command.js.map +1 -1
  167. package/dist/lib/esm/commands/help.command.js +17 -17
  168. package/dist/lib/esm/commands/help.command.js.map +1 -1
  169. package/dist/lib/esm/commands/info.command.js +27 -22
  170. package/dist/lib/esm/commands/info.command.js.map +1 -1
  171. package/dist/lib/esm/commands/init.command.js +23 -22
  172. package/dist/lib/esm/commands/init.command.js.map +1 -1
  173. package/dist/lib/esm/commands/list.command.js +6 -6
  174. package/dist/lib/esm/commands/list.command.js.map +1 -1
  175. package/dist/lib/esm/commands/logs-alias.command.js +46 -0
  176. package/dist/lib/esm/commands/logs-alias.command.js.map +1 -0
  177. package/dist/lib/esm/commands/logs.command-options.js +68 -0
  178. package/dist/lib/esm/commands/logs.command-options.js.map +1 -0
  179. package/dist/lib/esm/commands/logs.command.js +99 -0
  180. package/dist/lib/esm/commands/logs.command.js.map +1 -0
  181. package/dist/lib/esm/commands/requests-alias.command.js +46 -0
  182. package/dist/lib/esm/commands/requests-alias.command.js.map +1 -0
  183. package/dist/lib/esm/commands/requests.command-options.js +22 -0
  184. package/dist/lib/esm/commands/requests.command-options.js.map +1 -0
  185. package/dist/lib/esm/commands/requests.command.js +85 -0
  186. package/dist/lib/esm/commands/requests.command.js.map +1 -0
  187. package/dist/lib/esm/commands/start.command.js +13 -14
  188. package/dist/lib/esm/commands/start.command.js.map +1 -1
  189. package/dist/lib/esm/commands/trace-alias.command.js +46 -0
  190. package/dist/lib/esm/commands/trace-alias.command.js.map +1 -0
  191. package/dist/lib/esm/commands/trace.command-options.js +55 -0
  192. package/dist/lib/esm/commands/trace.command-options.js.map +1 -0
  193. package/dist/lib/esm/commands/trace.command.js +81 -0
  194. package/dist/lib/esm/commands/trace.command.js.map +1 -0
  195. package/dist/lib/esm/config/config-loader.js +34 -13
  196. package/dist/lib/esm/config/config-loader.js.map +1 -1
  197. package/dist/lib/esm/decorators/command-parameter.decorator.js +36 -0
  198. package/dist/lib/esm/decorators/command-parameter.decorator.js.map +1 -0
  199. package/dist/lib/esm/decorators/decorators.js +2 -0
  200. package/dist/lib/esm/decorators/decorators.js.map +1 -0
  201. package/dist/lib/esm/enums/cli-decorator-metadata-keyname.enum.js +11 -0
  202. package/dist/lib/esm/enums/cli-decorator-metadata-keyname.enum.js.map +1 -0
  203. package/dist/lib/esm/enums/enums.js +3 -0
  204. package/dist/lib/esm/enums/enums.js.map +1 -0
  205. package/dist/lib/esm/enums/exit-code.enum.js +6 -0
  206. package/dist/lib/esm/enums/exit-code.enum.js.map +1 -0
  207. package/dist/lib/esm/enums/terminal-key-name.enum.js +18 -0
  208. package/dist/lib/esm/enums/terminal-key-name.enum.js.map +1 -0
  209. package/dist/lib/esm/errors/cli-error-code.enum.js +11 -1
  210. package/dist/lib/esm/errors/cli-error-code.enum.js.map +1 -1
  211. package/dist/lib/esm/errors/errors.js +1 -0
  212. package/dist/lib/esm/errors/errors.js.map +1 -1
  213. package/dist/lib/esm/errors/prompt-cancelled.error.js +21 -0
  214. package/dist/lib/esm/errors/prompt-cancelled.error.js.map +1 -0
  215. package/dist/lib/esm/event-handlers/cli.event-handler.js +29 -71
  216. package/dist/lib/esm/event-handlers/cli.event-handler.js.map +1 -1
  217. package/dist/lib/esm/event-handlers/event-handlers.js +1 -0
  218. package/dist/lib/esm/event-handlers/event-handlers.js.map +1 -1
  219. package/dist/lib/esm/event-handlers/repl-start.event-handler.js +244 -0
  220. package/dist/lib/esm/event-handlers/repl-start.event-handler.js.map +1 -0
  221. package/dist/lib/esm/event-payloads/event-payloads.js +1 -0
  222. package/dist/lib/esm/event-payloads/event-payloads.js.map +1 -1
  223. package/dist/lib/esm/event-payloads/start-repl.event-payload.js +15 -0
  224. package/dist/lib/esm/event-payloads/start-repl.event-payload.js.map +1 -0
  225. package/dist/lib/esm/interfaces/interfaces.js +1 -0
  226. package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
  227. package/dist/lib/esm/interfaces/terminal-key.interface.js +2 -0
  228. package/dist/lib/esm/interfaces/terminal-key.interface.js.map +1 -0
  229. package/dist/lib/esm/managers/cli-output.manager.js +42 -0
  230. package/dist/lib/esm/managers/cli-output.manager.js.map +1 -0
  231. package/dist/lib/esm/managers/cli-progress-bar.manager.js +46 -0
  232. package/dist/lib/esm/managers/cli-progress-bar.manager.js.map +1 -0
  233. package/dist/lib/esm/managers/cli-prompt.manager.js +229 -0
  234. package/dist/lib/esm/managers/cli-prompt.manager.js.map +1 -0
  235. package/dist/lib/esm/managers/cli-spinner.manager.js +90 -0
  236. package/dist/lib/esm/managers/cli-spinner.manager.js.map +1 -0
  237. package/dist/lib/esm/managers/managers.js +5 -1
  238. package/dist/lib/esm/managers/managers.js.map +1 -1
  239. package/dist/lib/esm/managers/repl-session.js +215 -0
  240. package/dist/lib/esm/managers/repl-session.js.map +1 -0
  241. package/dist/lib/esm/managers/shell.manager.js +26 -21
  242. package/dist/lib/esm/managers/shell.manager.js.map +1 -1
  243. package/dist/lib/esm/managers/terminal-key-reader.manager.js +96 -0
  244. package/dist/lib/esm/managers/terminal-key-reader.manager.js.map +1 -0
  245. package/dist/lib/esm/mappers/command-event.mapper.js +49 -9
  246. package/dist/lib/esm/mappers/command-event.mapper.js.map +1 -1
  247. package/dist/lib/esm/mappers/mappers.js +1 -0
  248. package/dist/lib/esm/mappers/mappers.js.map +1 -1
  249. package/dist/lib/esm/mappers/repl-start-event.mapper.js +77 -0
  250. package/dist/lib/esm/mappers/repl-start-event.mapper.js.map +1 -0
  251. package/dist/lib/esm/options/command-parameter.options.js +2 -0
  252. package/dist/lib/esm/options/command-parameter.options.js.map +1 -0
  253. package/dist/lib/esm/options/options.js +1 -0
  254. package/dist/lib/esm/options/options.js.map +1 -1
  255. package/dist/lib/esm/services/command-argument-resolver.js +59 -0
  256. package/dist/lib/esm/services/command-argument-resolver.js.map +1 -0
  257. package/dist/lib/esm/services/command-options-resolver.js +111 -0
  258. package/dist/lib/esm/services/command-options-resolver.js.map +1 -0
  259. package/dist/lib/esm/services/command-parameter-prompter.js +308 -0
  260. package/dist/lib/esm/services/command-parameter-prompter.js.map +1 -0
  261. package/dist/lib/esm/services/services.js +4 -0
  262. package/dist/lib/esm/services/services.js.map +1 -0
  263. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
  264. package/dist/lib/esm/types/start-repl-event-response.type.js +9 -0
  265. package/dist/lib/esm/types/start-repl-event-response.type.js.map +1 -0
  266. package/dist/lib/esm/types/types.js +1 -0
  267. package/dist/lib/esm/types/types.js.map +1 -1
  268. package/dist/lib/esm/utils/boolean-answer-parser.js +21 -0
  269. package/dist/lib/esm/utils/boolean-answer-parser.js.map +1 -0
  270. package/dist/lib/esm/utils/pristine-argv.js +50 -0
  271. package/dist/lib/esm/utils/pristine-argv.js.map +1 -0
  272. package/dist/lib/esm/utils/terminal-key-decoder.js +67 -0
  273. package/dist/lib/esm/utils/terminal-key-decoder.js.map +1 -0
  274. package/dist/types/bootstrap/app-module-cache.d.ts +15 -0
  275. package/dist/types/bootstrap/app-module-discoverer.d.ts +30 -0
  276. package/dist/types/bootstrap/app-module-discovery-candidate.d.ts +18 -0
  277. package/dist/types/bootstrap/app-module-discovery-reason.enum.d.ts +10 -0
  278. package/dist/types/bootstrap/app-module-prompt.d.ts +20 -0
  279. package/dist/types/bootstrap/build-runner.d.ts +1 -1
  280. package/dist/types/bootstrap/build-staleness-prompt.d.ts +3 -3
  281. package/dist/types/bootstrap/init-prompt.d.ts +5 -5
  282. package/dist/types/cli.configuration-keys.d.ts +32 -0
  283. package/dist/types/cli.d.ts +8 -4
  284. package/dist/types/cli.module.d.ts +4 -0
  285. package/dist/types/commands/build.command.d.ts +3 -3
  286. package/dist/types/commands/commands.d.ts +6 -0
  287. package/dist/types/commands/config-init.command.d.ts +18 -0
  288. package/dist/types/commands/config-print.command.d.ts +8 -3
  289. package/dist/types/commands/help.command.d.ts +3 -3
  290. package/dist/types/commands/info.command.d.ts +5 -3
  291. package/dist/types/commands/init.command.d.ts +3 -3
  292. package/dist/types/commands/list.command.d.ts +3 -3
  293. package/dist/types/commands/logs-alias.command.d.ts +14 -0
  294. package/dist/types/commands/logs.command-options.d.ts +38 -0
  295. package/dist/types/commands/logs.command.d.ts +31 -0
  296. package/dist/types/commands/requests-alias.command.d.ts +14 -0
  297. package/dist/types/commands/requests.command-options.d.ts +8 -0
  298. package/dist/types/commands/requests.command.d.ts +25 -0
  299. package/dist/types/commands/start.command.d.ts +3 -3
  300. package/dist/types/commands/trace-alias.command.d.ts +14 -0
  301. package/dist/types/commands/trace.command-options.d.ts +31 -0
  302. package/dist/types/commands/trace.command.d.ts +21 -0
  303. package/dist/types/config/config-loader.d.ts +15 -3
  304. package/dist/types/decorators/command-parameter.decorator.d.ts +30 -0
  305. package/dist/types/decorators/decorators.d.ts +1 -0
  306. package/dist/types/enums/cli-decorator-metadata-keyname.enum.d.ts +9 -0
  307. package/dist/types/enums/enums.d.ts +2 -0
  308. package/dist/types/enums/exit-code.enum.d.ts +4 -0
  309. package/dist/types/enums/terminal-key-name.enum.d.ts +16 -0
  310. package/dist/types/errors/cli-error-code.enum.d.ts +12 -2
  311. package/dist/types/errors/errors.d.ts +1 -0
  312. package/dist/types/errors/prompt-cancelled.error.d.ts +13 -0
  313. package/dist/types/event-handlers/cli.event-handler.d.ts +16 -15
  314. package/dist/types/event-handlers/event-handlers.d.ts +1 -0
  315. package/dist/types/event-handlers/repl-start.event-handler.d.ts +70 -0
  316. package/dist/types/event-payloads/event-payloads.d.ts +1 -0
  317. package/dist/types/event-payloads/start-repl.event-payload.d.ts +13 -0
  318. package/dist/types/interfaces/interfaces.d.ts +1 -0
  319. package/dist/types/interfaces/terminal-key.interface.d.ts +11 -0
  320. package/dist/types/managers/cli-output.manager.d.ts +21 -0
  321. package/dist/types/managers/cli-progress-bar.manager.d.ts +17 -0
  322. package/dist/types/managers/cli-prompt.manager.d.ts +79 -0
  323. package/dist/types/managers/cli-spinner.manager.d.ts +34 -0
  324. package/dist/types/managers/managers.d.ts +5 -1
  325. package/dist/types/managers/repl-session.d.ts +62 -0
  326. package/dist/types/managers/shell.manager.d.ts +3 -3
  327. package/dist/types/managers/terminal-key-reader.manager.d.ts +31 -0
  328. package/dist/types/mappers/command-event.mapper.d.ts +10 -1
  329. package/dist/types/mappers/mappers.d.ts +1 -0
  330. package/dist/types/mappers/repl-start-event.mapper.d.ts +28 -0
  331. package/dist/types/options/command-parameter.options.d.ts +29 -0
  332. package/dist/types/options/options.d.ts +1 -0
  333. package/dist/types/services/command-argument-resolver.d.ts +24 -0
  334. package/dist/types/services/command-options-resolver.d.ts +35 -0
  335. package/dist/types/services/command-parameter-prompter.d.ts +113 -0
  336. package/dist/types/services/services.d.ts +3 -0
  337. package/dist/types/types/start-repl-event-response.type.d.ts +10 -0
  338. package/dist/types/types/types.d.ts +1 -0
  339. package/dist/types/utils/boolean-answer-parser.d.ts +11 -0
  340. package/dist/types/utils/pristine-argv.d.ts +33 -0
  341. package/dist/types/utils/terminal-key-decoder.d.ts +28 -0
  342. package/package.json +16 -12
@@ -0,0 +1,90 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ var CliSpinner_1;
14
+ import { inject, injectable } from "tsyringe";
15
+ import { moduleScoped } from "@pristine-ts/common";
16
+ import { CliModuleKeyname } from "../cli.module.keyname";
17
+ import { clearLine, cursorTo } from "node:readline";
18
+ /**
19
+ * Animated spinner for indicating long-running work in a TTY. Hides the cursor while
20
+ * spinning, redraws the current line every 80ms, and routes the completion message
21
+ * through the injected `LogHandler` so success/failure rendering matches the rest of
22
+ * the framework.
23
+ *
24
+ * Avoid emitting other output (especially LogHandler narration) while the spinner is
25
+ * active — concurrent writes will fight the spinner's line clearing and produce visual
26
+ * artifacts.
27
+ */
28
+ let CliSpinner = CliSpinner_1 = class CliSpinner {
29
+ constructor(logHandler) {
30
+ this.logHandler = logHandler;
31
+ this.spinnerInterval = null;
32
+ this.isSpinning = false;
33
+ }
34
+ /**
35
+ * Starts the spinner with the given label. Subsequent calls are no-ops until `stop()`
36
+ * is invoked.
37
+ */
38
+ start(message) {
39
+ if (this.isSpinning)
40
+ return;
41
+ this.isSpinning = true;
42
+ let i = 0;
43
+ process.stdout.write(CliSpinner_1.HIDE_CURSOR);
44
+ this.spinnerInterval = setInterval(() => {
45
+ clearLine(process.stdout, 0);
46
+ cursorTo(process.stdout, 0);
47
+ const frame = CliSpinner_1.FRAMES[i = (i + 1) % CliSpinner_1.FRAMES.length];
48
+ process.stdout.write(`${CliSpinner_1.CYAN}${frame}${CliSpinner_1.RESET} ${message}`);
49
+ }, CliSpinner_1.FRAME_INTERVAL_MS);
50
+ }
51
+ /**
52
+ * Stops the spinner, restores the cursor, and optionally emits a final completion
53
+ * message. `success` controls whether the message is rendered as a success log
54
+ * (`logHandler.success`) or an error log (`logHandler.error`).
55
+ */
56
+ stop(message, success = true) {
57
+ if (!this.isSpinning)
58
+ return;
59
+ if (this.spinnerInterval) {
60
+ clearInterval(this.spinnerInterval);
61
+ this.spinnerInterval = null;
62
+ }
63
+ this.isSpinning = false;
64
+ clearLine(process.stdout, 0);
65
+ cursorTo(process.stdout, 0);
66
+ process.stdout.write(CliSpinner_1.SHOW_CURSOR);
67
+ if (message) {
68
+ if (success) {
69
+ this.logHandler.success(message);
70
+ }
71
+ else {
72
+ this.logHandler.error(message);
73
+ }
74
+ }
75
+ }
76
+ };
77
+ CliSpinner.FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
78
+ CliSpinner.FRAME_INTERVAL_MS = 80;
79
+ CliSpinner.CYAN = "\x1b[36m";
80
+ CliSpinner.RESET = "\x1b[0m";
81
+ CliSpinner.HIDE_CURSOR = "\x1B[?25l";
82
+ CliSpinner.SHOW_CURSOR = "\x1B[?25h";
83
+ CliSpinner = CliSpinner_1 = __decorate([
84
+ injectable(),
85
+ moduleScoped(CliModuleKeyname),
86
+ __param(0, inject("LogHandlerInterface")),
87
+ __metadata("design:paramtypes", [Object])
88
+ ], CliSpinner);
89
+ export { CliSpinner };
90
+ //# sourceMappingURL=cli-spinner.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-spinner.manager.js","sourceRoot":"","sources":["../../../../src/managers/cli-spinner.manager.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
- export * from "./console.manager";
1
+ export * from "./cli-output.manager";
2
+ export * from "./cli-progress-bar.manager";
3
+ export * from "./cli-prompt.manager";
4
+ export * from "./cli-spinner.manager";
5
+ export * from "./terminal-key-reader.manager";
2
6
  export * from "./shell.manager";
3
7
  //# sourceMappingURL=managers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,215 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ var ReplSession_1;
20
+ import * as readline from "node:readline";
21
+ import { injectable } from "tsyringe";
22
+ import { ExitCode, moduleScoped, ServiceDefinitionTagEnum } from "@pristine-ts/common";
23
+ import { ExecutionContextKeynameEnum } from "@pristine-ts/core";
24
+ import { ObservabilityStoreReader } from "@pristine-ts/observability";
25
+ import { CliOutput } from "./cli-output.manager";
26
+ import { CliModuleKeyname } from "../cli.module.keyname";
27
+ /**
28
+ * The interactive `pristine` console — launched when the bin is invoked with no command
29
+ * (or `pristine repl`). It keeps the kernel booted for the whole session, so every
30
+ * command runs instantly with no per-invocation boot cost.
31
+ *
32
+ * Slash-prefixed commands dispatch through the *same* path as a one-shot
33
+ * `pristine <command>` invocation — `kernel.handle(argv, {keyname: Cli})` — so the REPL
34
+ * and the command line resolve, validate and run commands identically. (This works
35
+ * because `CliEventHandler` returns the exit code instead of calling `process.exit`.)
36
+ * Plus the session verbs `/help`, `/clear`, `/exit`. Tab-completion is driven by the live
37
+ * command registry and by recent trace ids for `/trace` / `/logs`.
38
+ *
39
+ * The kernel is **not** a constructor dependency — `ReplSession` is a driver *of* the
40
+ * kernel, so the running kernel is handed to `start()` by whoever owns it (`Cli`). Only
41
+ * genuine collaborator services are injected.
42
+ */
43
+ let ReplSession = ReplSession_1 = class ReplSession {
44
+ constructor(cliOutput, storeReader) {
45
+ this.cliOutput = cliOutput;
46
+ this.storeReader = storeReader;
47
+ this.commands = [];
48
+ }
49
+ /**
50
+ * Runs the read-eval-print loop until `/exit` or EOF (Ctrl-D). Resolves with the exit
51
+ * code the bin should return.
52
+ *
53
+ * @param kernel The already-started kernel this session drives — passed in by the
54
+ * caller that owns it, rather than injected.
55
+ */
56
+ start(kernel) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ this.commands = this.resolveCommands(kernel);
59
+ this.printBanner();
60
+ const rl = readline.createInterface({
61
+ input: process.stdin,
62
+ output: process.stdout,
63
+ prompt: ReplSession_1.PROMPT,
64
+ completer: (line) => this.complete(line),
65
+ });
66
+ return new Promise((resolve) => {
67
+ rl.prompt();
68
+ rl.on("line", (line) => {
69
+ const trimmed = line.trim();
70
+ if (trimmed.length === 0) {
71
+ rl.prompt();
72
+ return;
73
+ }
74
+ // Pause input while a command runs so its own SIGINT handling (e.g. `logs -f`)
75
+ // owns Ctrl-C, and so a second line can't interleave mid-dispatch.
76
+ rl.pause();
77
+ void this.handleLine(trimmed, kernel).then((shouldExit) => {
78
+ if (shouldExit) {
79
+ rl.close();
80
+ return;
81
+ }
82
+ rl.resume();
83
+ rl.prompt();
84
+ });
85
+ });
86
+ // Ctrl-C at an idle prompt clears the line rather than killing the session.
87
+ rl.on("SIGINT", () => {
88
+ this.cliOutput.writeLine("(type /exit to quit)");
89
+ rl.prompt();
90
+ });
91
+ rl.on("close", () => {
92
+ void this.shutdown(kernel).then(() => resolve(ExitCode.Success));
93
+ });
94
+ });
95
+ });
96
+ }
97
+ /**
98
+ * Handles one input line. Returns true when the session should end.
99
+ */
100
+ handleLine(input, kernel) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ const withoutSlash = input.startsWith("/") ? input.slice(1) : input;
103
+ const tokens = withoutSlash.split(/\s+/).filter(token => token.length > 0);
104
+ const name = tokens[0];
105
+ const rest = tokens.slice(1);
106
+ if (name === "exit" || name === "quit") {
107
+ return true;
108
+ }
109
+ if (name === "clear") {
110
+ console.clear();
111
+ return false;
112
+ }
113
+ if (name === "help") {
114
+ this.printHelp();
115
+ return false;
116
+ }
117
+ try {
118
+ // Dispatch through the exact same path as a one-shot `pristine <command>`: a
119
+ // synthetic argv handed to `kernel.handle` with the `Cli` execution context. The
120
+ // kernel maps it, `CliEventHandler` resolves + validates + runs it and returns the
121
+ // exit code (no `process.exit`), so the loop survives. An unknown command throws
122
+ // `CommandNotFoundError`, caught below.
123
+ yield kernel.handle(["node", "repl", name, ...rest], { keyname: ExecutionContextKeynameEnum.Cli, context: null });
124
+ }
125
+ catch (error) {
126
+ this.cliOutput.writeLine(`Error: ${error instanceof Error ? error.message : String(error)}`);
127
+ }
128
+ return false;
129
+ });
130
+ }
131
+ /**
132
+ * Readline completer. Completes `/`-prefixed command names and session verbs; for
133
+ * `/trace` and `/logs` it completes the trailing token with recent trace ids.
134
+ */
135
+ complete(line) {
136
+ const traceIdMatch = /^\/(trace|logs)\s+(\S*)$/.exec(line);
137
+ if (traceIdMatch !== null) {
138
+ const partial = traceIdMatch[2];
139
+ const hits = this.storeReader.recentTraceIds(ReplSession_1.TRACE_ID_COMPLETION_LIMIT)
140
+ .filter(id => id.startsWith(partial));
141
+ return [hits, partial];
142
+ }
143
+ const candidates = [
144
+ ...this.commands.map(command => `/${command.name}`),
145
+ ...ReplSession_1.SESSION_VERBS,
146
+ ];
147
+ const hits = candidates.filter(candidate => candidate.startsWith(line));
148
+ return [hits.length > 0 ? hits : candidates, line];
149
+ }
150
+ printBanner() {
151
+ this.cliOutput.writeLine("Pristine — interactive console");
152
+ this.cliOutput.writeLine("Type /help for commands, /exit to quit.");
153
+ this.cliOutput.writeLine("");
154
+ }
155
+ printHelp() {
156
+ var _a;
157
+ this.cliOutput.writeLine("Session:");
158
+ this.cliOutput.writeLine(" /help show this message");
159
+ this.cliOutput.writeLine(" /clear clear the screen");
160
+ this.cliOutput.writeLine(" /exit leave the console");
161
+ this.cliOutput.writeLine("");
162
+ this.cliOutput.writeLine("Commands (also runnable as `pristine <name>`):");
163
+ const sorted = [...this.commands].sort((a, b) => a.name.localeCompare(b.name));
164
+ const longest = sorted.reduce((max, command) => Math.max(max, command.name.length), 0);
165
+ for (const command of sorted) {
166
+ const padded = `/${command.name}`.padEnd(longest + 3, " ");
167
+ this.cliOutput.writeLine(` ${padded}${(_a = command.description) !== null && _a !== void 0 ? _a : ""}`);
168
+ }
169
+ }
170
+ shutdown(kernel) {
171
+ return __awaiter(this, void 0, void 0, function* () {
172
+ try {
173
+ yield kernel.stop();
174
+ }
175
+ catch (_a) {
176
+ // Best-effort — we're leaving the process anyway.
177
+ }
178
+ });
179
+ }
180
+ /**
181
+ * Enumerates every registered command.
182
+ *
183
+ * Resolved from a dedicated child container with the `CurrentChildContainer` token
184
+ * registered — some commands (`HelpCommand`, `ListCommand`) inject that token, which
185
+ * only the kernel's per-event child containers carry. The one-shot path gets it for
186
+ * free because `CliEventHandler` runs inside such a child container; the REPL builds an
187
+ * equivalent one once for the whole session.
188
+ *
189
+ * `resolveAll`, justified: this is framework REPL infrastructure resolved at session
190
+ * start, mirroring `Cli.warnOnCommandCollisions`. Enumerating every `Command`-tagged
191
+ * service is inherently a container-introspection operation with no constructor seam.
192
+ */
193
+ resolveCommands(kernel) {
194
+ try {
195
+ const childContainer = kernel.container.createChildContainer();
196
+ childContainer.registerInstance(ServiceDefinitionTagEnum.CurrentChildContainer, childContainer);
197
+ return childContainer.resolveAll(ServiceDefinitionTagEnum.Command);
198
+ }
199
+ catch (error) {
200
+ process.stderr.write(`[repl] could not load commands: ${error instanceof Error ? error.message : String(error)}\n`);
201
+ return [];
202
+ }
203
+ }
204
+ };
205
+ ReplSession.PROMPT = "pristine ❯ ";
206
+ ReplSession.SESSION_VERBS = ["/help", "/clear", "/exit"];
207
+ ReplSession.TRACE_ID_COMPLETION_LIMIT = 25;
208
+ ReplSession = ReplSession_1 = __decorate([
209
+ injectable(),
210
+ moduleScoped(CliModuleKeyname),
211
+ __metadata("design:paramtypes", [CliOutput,
212
+ ObservabilityStoreReader])
213
+ ], ReplSession);
214
+ export { ReplSession };
215
+ //# sourceMappingURL=repl-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl-session.js","sourceRoot":"","sources":["../../../../src/managers/repl-session.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAC,2BAA2B,EAAS,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AAGI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAOtB,YACmB,SAAoB,EACpB,WAAqC;QADrC,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAA0B;QAJhD,aAAQ,GAA4B,EAAE,CAAC;IAM/C,CAAC;IAED;;;;;;OAMG;IACG,KAAK,CAAC,MAAc;;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,aAAW,CAAC,MAAM;gBAC1B,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;aACjD,CAAC,CAAC;YAEH,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;gBACrC,EAAE,CAAC,MAAM,EAAE,CAAC;gBAEZ,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;oBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACzB,EAAE,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO;oBACT,CAAC;oBAED,+EAA+E;oBAC/E,mEAAmE;oBACnE,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;wBACxD,IAAI,UAAU,EAAE,CAAC;4BACf,EAAE,CAAC,KAAK,EAAE,CAAC;4BACX,OAAO;wBACT,CAAC;wBACD,EAAE,CAAC,MAAM,EAAE,CAAC;wBACZ,EAAE,CAAC,MAAM,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,4EAA4E;gBAC5E,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACnB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;oBACjD,EAAE,CAAC,MAAM,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBAClB,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACW,UAAU,CAAC,KAAa,EAAE,MAAc;;YACpD,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACpE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC;gBACH,6EAA6E;gBAC7E,iFAAiF;gBACjF,mFAAmF;gBACnF,iFAAiF;gBACjF,wCAAwC;gBACxC,MAAM,MAAM,CAAC,MAAM,CACjB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAC/B,EAAC,OAAO,EAAE,2BAA2B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAC,CAC1D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/F,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAED;;;OAGG;IACK,QAAQ,CAAC,IAAY;QAC3B,MAAM,YAAY,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,aAAW,CAAC,yBAAyB,CAAC;iBAChF,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,UAAU,GAAG;YACjB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACnD,GAAG,aAAW,CAAC,aAAa;SAC7B,CAAC;QACF,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,SAAS;;QACf,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,MAAM,GAAG,MAAA,OAAO,CAAC,WAAW,mCAAI,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEa,QAAQ,CAAC,MAAc;;YACnC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;YAAC,WAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;KAAA;IAED;;;;;;;;;;;;OAYG;IACK,eAAe,CAAC,MAAc;QACpC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YAC/D,cAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;YAChG,OAAO,cAAc,CAAC,UAAU,CAAwB,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpH,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;;AA/KuB,kBAAM,GAAG,aAAa,AAAhB,CAAiB;AACvB,yBAAa,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,AAA/B,CAAgC;AAC7C,qCAAyB,GAAG,EAAE,AAAL,CAAM;AAH5C,WAAW;IAFvB,UAAU,EAAE;IACZ,YAAY,CAAC,gBAAgB,CAAC;qCASC,SAAS;QACP,wBAAwB;GAT7C,WAAW,CAiLvB"}
@@ -7,14 +7,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
10
13
  import { exec, spawn } from "child_process";
11
- import { ConsoleManager } from "./console.manager";
12
- import { injectable } from "tsyringe";
14
+ import { inject, injectable } from "tsyringe";
13
15
  import { PathManager } from "@pristine-ts/core";
14
16
  import { DateUtil } from "@pristine-ts/common";
15
17
  let ShellManager = class ShellManager {
16
- constructor(consoleManager, pathManager, dateUtil) {
17
- this.consoleManager = consoleManager;
18
+ constructor(logHandler, pathManager, dateUtil) {
19
+ this.logHandler = logHandler;
18
20
  this.pathManager = pathManager;
19
21
  this.dateUtil = dateUtil;
20
22
  }
@@ -34,42 +36,45 @@ let ShellManager = class ShellManager {
34
36
  finalCommand = "cd " + absoluteDirectory + " && " + command;
35
37
  }
36
38
  const start = new Date();
39
+ // Pretty/Simple output modes already render a timestamp; pass the command alone and
40
+ // let the formatter handle the prefix. `outputTimeBeforeExecutingCommand` is now a
41
+ // pass/skip flag — when false we still emit the command if stdout is enabled.
37
42
  if (outputTimeBeforeExecutingCommand) {
38
- this.consoleManager.writeLine(start.toISOString() + ": " + finalCommand);
43
+ this.logHandler.info(finalCommand);
39
44
  }
40
- else {
41
- outputStdout && this.consoleManager.writeLine(finalCommand);
45
+ else if (outputStdout) {
46
+ this.logHandler.info(finalCommand);
42
47
  }
43
48
  if (streamStdout) {
44
49
  const child = spawn(finalCommand, [], { shell: true, env });
45
50
  child.stdout.on('data', (data) => {
46
- outputStdout && this.consoleManager.writeLine(`${data}`);
51
+ outputStdout && this.logHandler.info(`${data}`);
47
52
  });
48
53
  child.stderr.on('data', (data) => {
49
- outputStderr && this.consoleManager.writeLine(`Stderr: ${data}`);
54
+ outputStderr && this.logHandler.warning(`Stderr: ${data}`);
50
55
  });
51
56
  child.on("error", (error) => {
52
- outputStdout && this.consoleManager.writeLine(`Error: ${error.message}`);
57
+ this.logHandler.error(`Error: ${error.message}`);
53
58
  return reject(error);
54
59
  });
55
60
  child.on("exit", (code) => {
56
- outputStdout && this.consoleManager.writeLine(`Exit (code: ${code}).`);
61
+ outputStdout && this.logHandler.info(`Exit (code: ${code}).`);
57
62
  if (code !== 0) {
58
63
  return reject(code);
59
64
  }
60
65
  if (outputDuration) {
61
66
  const end = new Date();
62
67
  const duration = end.getTime() - start.getTime();
63
- this.consoleManager.writeLine(`Executed in: ${this.dateUtil.formatDuration(duration)}`);
68
+ this.logHandler.info(`Executed in: ${this.dateUtil.formatDuration(duration)}`);
64
69
  }
65
70
  return resolve(code + "");
66
71
  });
67
72
  child.on("disconnect", () => {
68
- outputStdout && this.consoleManager.writeLine(`Disconnect.`);
73
+ outputStdout && this.logHandler.warning(`Disconnect.`);
69
74
  return reject("Disconnected");
70
75
  });
71
76
  child.on('close', (code) => {
72
- outputStdout && this.consoleManager.writeLine(`Command exited with code ${code}`);
77
+ outputStdout && this.logHandler.info(`Command exited with code ${code}`);
73
78
  if (code !== 0) {
74
79
  return reject(code);
75
80
  }
@@ -77,7 +82,7 @@ let ShellManager = class ShellManager {
77
82
  if (outputDuration) {
78
83
  const end = new Date();
79
84
  const duration = end.getTime() - start.getTime();
80
- this.consoleManager.writeLine(`Executed in: ${this.dateUtil.formatDuration(duration)}`);
85
+ this.logHandler.info(`Executed in: ${this.dateUtil.formatDuration(duration)}`);
81
86
  }
82
87
  return resolve(code + "");
83
88
  });
@@ -86,17 +91,17 @@ let ShellManager = class ShellManager {
86
91
  }
87
92
  return exec(finalCommand, { env, maxBuffer: options === null || options === void 0 ? void 0 : options.maxBuffer }, (error, stdout, stderr) => {
88
93
  if (error && error.code) {
89
- outputStderr && this.consoleManager.writeLine("Error: " + error.message);
94
+ outputStderr && this.logHandler.error("Error: " + error.message);
90
95
  }
91
96
  if (stderr) {
92
- outputStderr && this.consoleManager.writeLine("Stderr: " + stderr);
97
+ outputStderr && this.logHandler.warning("Stderr: " + stderr);
93
98
  }
94
- outputStdout && this.consoleManager.writeLine(stdout);
99
+ outputStdout && this.logHandler.info(stdout);
95
100
  // Output the duration in human readable format
96
101
  if (outputDuration) {
97
102
  const end = new Date();
98
103
  const duration = end.getTime() - start.getTime();
99
- this.consoleManager.writeLine(`Executed in: ${this.dateUtil.formatDuration(duration)}`);
104
+ this.logHandler.info(`Executed in: ${this.dateUtil.formatDuration(duration)}`);
100
105
  }
101
106
  if (error && error.code) {
102
107
  return reject(error);
@@ -111,8 +116,8 @@ let ShellManager = class ShellManager {
111
116
  };
112
117
  ShellManager = __decorate([
113
118
  injectable(),
114
- __metadata("design:paramtypes", [ConsoleManager,
115
- PathManager,
119
+ __param(0, inject("LogHandlerInterface")),
120
+ __metadata("design:paramtypes", [Object, PathManager,
116
121
  DateUtil])
117
122
  ], ShellManager);
118
123
  export { ShellManager };
@@ -1 +1 @@
1
- {"version":3,"file":"shell.manager.js","sourceRoot":"","sources":["../../../../src/managers/shell.manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.manager.js","sourceRoot":"","sources":["../../../../src/managers/shell.manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { injectable } from "tsyringe";
8
+ import { moduleScoped } from "@pristine-ts/common";
9
+ import { CliModuleKeyname } from "../cli.module.keyname";
10
+ import { TerminalKeyName } from "../enums/terminal-key-name.enum";
11
+ import { TerminalKeyDecoder } from "../utils/terminal-key-decoder";
12
+ import { PromptCancelledError } from "../errors/prompt-cancelled.error";
13
+ /**
14
+ * Owns the raw-mode keystroke reading the interactive prompts need (arrow-key `select`,
15
+ * masked `readSecret`) — the one place in the CLI that flips stdin into raw mode. Node's
16
+ * stock `readline` is line-buffered and echoes input, so it can't drive an arrow-key menu
17
+ * or suppress a password's characters; this reads keys one at a time instead.
18
+ *
19
+ * Two responsibilities are handled centrally so callers don't each reimplement them:
20
+ * - **Cancellation:** `Ctrl+C` rejects the read with {@link PromptCancelledError}.
21
+ * - **Terminal restore:** raw mode is entered on start and restored in every exit path,
22
+ * so a thrown handler or a cancellation never leaves the terminal in raw mode.
23
+ *
24
+ * The `input`/`output` fields default to the process streams and exist as a seam so tests
25
+ * can drive synthetic keystrokes without a real TTY.
26
+ */
27
+ let TerminalKeyReader = class TerminalKeyReader {
28
+ constructor() {
29
+ this.input = process.stdin;
30
+ this.output = process.stdout;
31
+ }
32
+ /**
33
+ * Whether both stdin and stdout are interactive terminals. Raw-mode reading is only
34
+ * meaningful on a real TTY; callers fall back (or skip prompting) when this is false.
35
+ */
36
+ isInteractive() {
37
+ return Boolean(this.input.isTTY) && Boolean(this.output.isTTY);
38
+ }
39
+ /**
40
+ * Reads keystrokes in raw mode, handing each decoded {@link TerminalKey} to `onKey` until
41
+ * `onKey` ends the read by invoking its `resolve` callback with the result. Resolves to
42
+ * that value; rejects with {@link PromptCancelledError} on `Ctrl+C`. Raw mode is entered
43
+ * on start and restored to its prior state in every exit path.
44
+ */
45
+ read(onKey) {
46
+ const input = this.input;
47
+ const wasRaw = input.isRaw === true;
48
+ return new Promise((resolve, reject) => {
49
+ let settled = false;
50
+ const cleanup = () => {
51
+ input.removeListener("data", onData);
52
+ if (input.isTTY && typeof input.setRawMode === "function") {
53
+ input.setRawMode(wasRaw);
54
+ }
55
+ input.pause();
56
+ };
57
+ const settle = (run) => {
58
+ if (settled) {
59
+ return;
60
+ }
61
+ settled = true;
62
+ cleanup();
63
+ run();
64
+ };
65
+ const onData = (data) => {
66
+ for (const key of TerminalKeyDecoder.decode(data.toString())) {
67
+ if (key.name === TerminalKeyName.CtrlC) {
68
+ settle(() => reject(new PromptCancelledError()));
69
+ return;
70
+ }
71
+ try {
72
+ onKey(key, (value) => settle(() => resolve(value)));
73
+ }
74
+ catch (error) {
75
+ settle(() => reject(error));
76
+ return;
77
+ }
78
+ if (settled) {
79
+ return;
80
+ }
81
+ }
82
+ };
83
+ if (input.isTTY && typeof input.setRawMode === "function") {
84
+ input.setRawMode(true);
85
+ }
86
+ input.resume();
87
+ input.on("data", onData);
88
+ });
89
+ }
90
+ };
91
+ TerminalKeyReader = __decorate([
92
+ injectable(),
93
+ moduleScoped(CliModuleKeyname)
94
+ ], TerminalKeyReader);
95
+ export { TerminalKeyReader };
96
+ //# sourceMappingURL=terminal-key-reader.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-key-reader.manager.js","sourceRoot":"","sources":["../../../../src/managers/terminal-key-reader.manager.ts"],"names":[],"mappings":"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"}