@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,114 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.CommandOptionsResolver = void 0;
22
+ const tsyringe_1 = require("tsyringe");
23
+ const common_1 = require("@pristine-ts/common");
24
+ const class_validator_1 = require("@pristine-ts/class-validator");
25
+ const data_mapping_1 = require("@pristine-ts/data-mapping");
26
+ const cli_module_keyname_1 = require("../cli.module.keyname");
27
+ const cli_error_code_enum_1 = require("../errors/cli-error-code.enum");
28
+ const command_parameter_prompter_1 = require("./command-parameter-prompter");
29
+ /**
30
+ * Resolves a typed, validated options instance from raw arguments: it fills any missing
31
+ * `@commandParameter` values by prompting, maps the result onto a real `optionsType`
32
+ * instance (prototype + decorator metadata intact, so `class-validator` finds its rules),
33
+ * and validates it.
34
+ *
35
+ * This is the reusable core behind command dispatch — `CommandArgumentResolver` delegates
36
+ * here — exposed so commands and dynamic flows can fill an options class from prompts on
37
+ * demand, including ones not tied to a registered command:
38
+ *
39
+ * ```ts
40
+ * constructor(private readonly optionsResolver: CommandOptionsResolver) {}
41
+ * // ...later, possibly choosing the class at runtime:
42
+ * const options = await this.optionsResolver.resolve(MyOptions, {region: "us"});
43
+ * ```
44
+ *
45
+ * Throws `UsageError` for mapping failures and `ValidationError` for validation failures —
46
+ * both carry structured `details` for `CliErrorReporter`.
47
+ */
48
+ let CommandOptionsResolver = class CommandOptionsResolver {
49
+ constructor(validator, dataMapper, commandParameterPrompter) {
50
+ this.validator = validator;
51
+ this.dataMapper = dataMapper;
52
+ this.commandParameterPrompter = commandParameterPrompter;
53
+ }
54
+ /**
55
+ * Prompts for any missing parameters declared on `optionsType`, then maps `rawArgs` (plus
56
+ * the prompted answers) onto a real instance and validates it. `rawArgs` seeds the values
57
+ * already known — anything absent that carries a `question` is asked for interactively.
58
+ */
59
+ resolve(optionsType_1) {
60
+ return __awaiter(this, arguments, void 0, function* (optionsType, rawArgs = {}) {
61
+ const preparedArgs = yield this.commandParameterPrompter.fillMissingParameters(optionsType, rawArgs);
62
+ let mapped;
63
+ try {
64
+ // `throwOnErrors: true` so a normalizer failure surfaces here instead of `autoMap`
65
+ // silently returning the source object (which would defeat validation downstream).
66
+ mapped = yield this.dataMapper.autoMap(preparedArgs, optionsType, new data_mapping_1.AutoDataMappingBuilderOptions({ throwOnErrors: true }));
67
+ }
68
+ catch (cause) {
69
+ throw new common_1.UsageError(`Failed to map arguments to '${optionsType.name}': ${cause.message}`, {
70
+ code: cli_error_code_enum_1.CliErrorCode.ArgumentMappingFailed,
71
+ cause: cause,
72
+ details: { targetType: optionsType.name },
73
+ });
74
+ }
75
+ const validationErrors = yield this.validator.validate(mapped);
76
+ if (validationErrors.length === 0) {
77
+ return mapped;
78
+ }
79
+ // Reshape the class-validator output into structured `details` the reporter can render
80
+ // line-by-line. Keeps the throw single-pass and the reporter format-agnostic.
81
+ const failures = {};
82
+ for (const error of validationErrors) {
83
+ const messages = [];
84
+ for (const constraintKey in error.constraints) {
85
+ // `@pristine-ts/class-validator` stores constraints as `{keyname, message}` objects
86
+ // rather than the plain strings vanilla class-validator uses. Extract the message
87
+ // when present, falling back to JSON for unknown shapes so we never print
88
+ // `[object Object]`.
89
+ const constraint = error.constraints[constraintKey];
90
+ const message = typeof constraint === "string"
91
+ ? constraint
92
+ : (constraint && typeof constraint === "object" && typeof constraint.message === "string")
93
+ ? constraint.message
94
+ : JSON.stringify(constraint);
95
+ messages.push(`[${constraintKey}] ${message}`);
96
+ }
97
+ failures[error.property] = messages;
98
+ }
99
+ throw new common_1.ValidationError("Argument validation failed", {
100
+ code: cli_error_code_enum_1.CliErrorCode.ArgumentValidationFailed,
101
+ details: failures,
102
+ });
103
+ });
104
+ }
105
+ };
106
+ exports.CommandOptionsResolver = CommandOptionsResolver;
107
+ exports.CommandOptionsResolver = CommandOptionsResolver = __decorate([
108
+ (0, tsyringe_1.injectable)(),
109
+ (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
110
+ __metadata("design:paramtypes", [class_validator_1.Validator,
111
+ data_mapping_1.DataMapper,
112
+ command_parameter_prompter_1.CommandParameterPrompter])
113
+ ], CommandOptionsResolver);
114
+ //# sourceMappingURL=command-options-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-options-resolver.js","sourceRoot":"","sources":["../../../../src/services/command-options-resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,uCAAoC;AAEpC,gDAA8E;AAC9E,kEAAuD;AACvD,4DAAoF;AACpF,8DAAuD;AACvD,uEAA2D;AAC3D,6EAAsE;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AAGI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YACmB,SAAoB,EACpB,UAAsB,EACtB,wBAAkD;QAFlD,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAY;QACtB,6BAAwB,GAAxB,wBAAwB,CAA0B;IAErE,CAAC;IAED;;;;OAIG;IACG,OAAO;6DAAI,WAAgC,EAAE,UAA+B,EAAE;YAClF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAErG,IAAI,MAAS,CAAC;YACd,IAAI,CAAC;gBACH,mFAAmF;gBACnF,mFAAmF;gBACnF,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,4CAA6B,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;YAC9H,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,mBAAU,CAClB,+BAA+B,WAAW,CAAC,IAAI,MAAO,KAAe,CAAC,OAAO,EAAE,EAC/E;oBACE,IAAI,EAAE,kCAAY,CAAC,qBAAqB;oBACxC,KAAK,EAAE,KAAc;oBACrB,OAAO,EAAE,EAAC,UAAU,EAAE,WAAW,CAAC,IAAI,EAAC;iBACxC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,uFAAuF;YACvF,8EAA8E;YAC9E,MAAM,QAAQ,GAA6B,EAAE,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,aAAa,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC9C,oFAAoF;oBACpF,kFAAkF;oBAClF,0EAA0E;oBAC1E,qBAAqB;oBACrB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;oBACpD,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ;wBAC5C,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAQ,UAAkB,CAAC,OAAO,KAAK,QAAQ,CAAC;4BACjG,CAAC,CAAE,UAAkB,CAAC,OAAO;4BAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;oBACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC,CAAC;gBACjD,CAAC;gBACD,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACtC,CAAC;YACD,MAAM,IAAI,wBAAe,CAAC,4BAA4B,EAAE;gBACtD,IAAI,EAAE,kCAAY,CAAC,wBAAwB;gBAC3C,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAA;AA9DY,wDAAsB;iCAAtB,sBAAsB;IAFlC,IAAA,qBAAU,GAAE;IACZ,IAAA,qBAAY,EAAC,qCAAgB,CAAC;qCAGC,2BAAS;QACR,yBAAU;QACI,qDAAwB;GAJ1D,sBAAsB,CA8DlC"}
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var CommandParameterPrompter_1;
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.CommandParameterPrompter = void 0;
26
+ require("reflect-metadata");
27
+ const tsyringe_1 = require("tsyringe");
28
+ const common_1 = require("@pristine-ts/common");
29
+ const metadata_1 = require("@pristine-ts/metadata");
30
+ const class_validator_1 = require("@pristine-ts/class-validator");
31
+ const data_mapping_1 = require("@pristine-ts/data-mapping");
32
+ const cli_module_keyname_1 = require("../cli.module.keyname");
33
+ const cli_configuration_keys_1 = require("../cli.configuration-keys");
34
+ const cli_prompt_manager_1 = require("../managers/cli-prompt.manager");
35
+ const cli_output_manager_1 = require("../managers/cli-output.manager");
36
+ const cli_decorator_metadata_keyname_enum_1 = require("../enums/cli-decorator-metadata-keyname.enum");
37
+ const cli_error_code_enum_1 = require("../errors/cli-error-code.enum");
38
+ const boolean_answer_parser_1 = require("../utils/boolean-answer-parser");
39
+ /**
40
+ * Applies a command's `@commandParameter` metadata to its raw, parsed arguments before they
41
+ * are mapped onto the options instance and validated. Two things happen here:
42
+ *
43
+ * 1. **Flag binding** — a parameter whose `flag` differs from its property name is copied
44
+ * from the flag key onto the property key, so the by-property-name data mapper picks it
45
+ * up. Two parameters resolving to the same flag is a programming error and throws.
46
+ * 2. **Interactive fill** — a parameter that is absent and declares a `question` is asked
47
+ * for interactively. Answers are rendered and checked against the property's declared
48
+ * type (booleans as `(y/n)`, enum-constrained values list their choices) and coerced +
49
+ * validated through the same mapper/validator the command pipeline uses, re-asking on an
50
+ * invalid answer. Gated by the `InteractiveParameters` configuration and only run against
51
+ * an interactive terminal; otherwise the absent value is left for validation to report.
52
+ *
53
+ * Parameters without a `@commandParameter` decorator are untouched, so commands that don't
54
+ * use it pay nothing.
55
+ */
56
+ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParameterPrompter {
57
+ constructor(cliPrompt, cliOutput, validator, dataMapper, interactiveParametersEnabled) {
58
+ this.cliPrompt = cliPrompt;
59
+ this.cliOutput = cliOutput;
60
+ this.validator = validator;
61
+ this.dataMapper = dataMapper;
62
+ this.interactiveParametersEnabled = interactiveParametersEnabled;
63
+ }
64
+ /**
65
+ * Returns a copy of `rawArgs` with aliased flags bound to their property and any missing,
66
+ * question-carrying parameters filled in interactively. The input object is never mutated
67
+ * — the original command event payload stays intact.
68
+ */
69
+ fillMissingParameters(optionsType, rawArgs) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ const args = Object.assign({}, rawArgs);
72
+ const parameters = this.collectParameters(optionsType);
73
+ if (parameters.length === 0) {
74
+ return args;
75
+ }
76
+ for (const { propertyKey, flag, options } of parameters) {
77
+ // Bind an aliased flag (`--flag`) onto the property name so the data mapper, which maps
78
+ // by property name, resolves it. Only when the flag was actually passed.
79
+ if (flag !== propertyKey && args[flag] !== undefined) {
80
+ args[propertyKey] = args[flag];
81
+ }
82
+ const isPassed = args[propertyKey] !== undefined || args[flag] !== undefined;
83
+ if (isPassed || options.question === undefined) {
84
+ continue;
85
+ }
86
+ // Absent + a question to ask. Skip silently when prompting is turned off or there is no
87
+ // interactive terminal to ask on — the missing value then falls through to validation.
88
+ if (this.interactiveParametersEnabled !== true || this.isInputInteractive() === false) {
89
+ continue;
90
+ }
91
+ const value = yield this.promptForValue(optionsType, propertyKey, options);
92
+ if (value !== undefined) {
93
+ args[propertyKey] = value;
94
+ }
95
+ }
96
+ return args;
97
+ });
98
+ }
99
+ /**
100
+ * Reads every `@commandParameter` off `optionsType`, resolving each to its effective flag
101
+ * and detecting two parameters that would claim the same flag (a programming error).
102
+ * @private
103
+ */
104
+ collectParameters(optionsType) {
105
+ var _a;
106
+ const properties = metadata_1.ClassMetadata.getInformation(optionsType).properties;
107
+ const parameters = [];
108
+ const propertyByFlag = new Map();
109
+ for (const propertyKey of properties) {
110
+ const options = metadata_1.PropertyMetadata.getMetadata(optionsType.prototype, propertyKey, cli_decorator_metadata_keyname_enum_1.CliDecoratorMetadataKeynameEnum.CommandParameter);
111
+ if (options === undefined) {
112
+ continue;
113
+ }
114
+ const flag = (_a = options.flag) !== null && _a !== void 0 ? _a : propertyKey;
115
+ const existing = propertyByFlag.get(flag);
116
+ if (existing !== undefined) {
117
+ throw new common_1.UsageError(`Command parameters '${existing}' and '${propertyKey}' on '${optionsType.name}' both bind to the flag '--${flag}'. Give one of them a distinct 'flag'.`, {
118
+ code: cli_error_code_enum_1.CliErrorCode.CommandParameterFlagConflict,
119
+ details: { targetType: optionsType.name, flag, properties: [existing, propertyKey] },
120
+ });
121
+ }
122
+ propertyByFlag.set(flag, propertyKey);
123
+ parameters.push({ propertyKey, flag, options });
124
+ }
125
+ return parameters;
126
+ }
127
+ /**
128
+ * Asks for a single parameter's value, rendering and validating it according to the
129
+ * property's declared type:
130
+ *
131
+ * - sensitive values are read with the input masked and never trimmed;
132
+ * - booleans render as `(y/n)` and accept y/yes/true/1 & n/no/false/0;
133
+ * - enum-constrained values (`@IsIn` / `@IsEnum`) list their choices;
134
+ * - every other answer is coerced (via the data mapper) and validated (via the validator)
135
+ * exactly as a typed flag would be, re-asking with the real constraint message when it
136
+ * doesn't pass.
137
+ *
138
+ * Returns the coerced value, or `undefined` when the user enters nothing or the attempt
139
+ * budget is exhausted — in which case the absent value falls through to validation.
140
+ * @private
141
+ */
142
+ promptForValue(optionsType, propertyKey, options) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ var _a, _b;
145
+ const sensitive = options.sensitive === true;
146
+ const isBoolean = sensitive === false && Reflect.getMetadata("design:type", optionsType.prototype, propertyKey) === Boolean;
147
+ const choices = (sensitive || isBoolean) ? undefined : this.getChoices(optionsType, propertyKey);
148
+ const prompt = this.formatQuestion(this.decorateQuestion((_a = options.question) !== null && _a !== void 0 ? _a : "", isBoolean, choices));
149
+ for (let attempt = 0; attempt < CommandParameterPrompter_1.MaxAttempts; attempt++) {
150
+ // Secrets go through the masked reader and are never trimmed (a password may legitimately
151
+ // contain surrounding whitespace); ordinary answers are trimmed.
152
+ const raw = sensitive
153
+ ? yield this.cliPrompt.readSecret(prompt)
154
+ : (yield this.cliPrompt.readLine(prompt)).trim();
155
+ // Nothing entered → leave the value unset so validation reports it (and a required
156
+ // field surfaces the same way it would have without a prompt).
157
+ if (raw.length === 0) {
158
+ return undefined;
159
+ }
160
+ if (isBoolean) {
161
+ const parsed = boolean_answer_parser_1.BooleanAnswerParser.parse(raw);
162
+ if (parsed === undefined) {
163
+ this.cliOutput.writeLine("Please answer yes (y) or no (n).");
164
+ continue;
165
+ }
166
+ return parsed;
167
+ }
168
+ const outcome = yield this.coerceAndValidate(optionsType, propertyKey, raw);
169
+ if (outcome.valid) {
170
+ return outcome.value;
171
+ }
172
+ for (const message of (_b = outcome.messages) !== null && _b !== void 0 ? _b : []) {
173
+ this.cliOutput.writeLine(message);
174
+ }
175
+ }
176
+ this.cliOutput.writeLine(`No valid value provided after ${CommandParameterPrompter_1.MaxAttempts} attempts.`);
177
+ return undefined;
178
+ });
179
+ }
180
+ /**
181
+ * Maps a single raw answer onto a probe instance of `optionsType` and validates just that
182
+ * property, returning the coerced value when it passes or the constraint messages when it
183
+ * doesn't. Reuses the same mapper + validator the command pipeline uses, so coercion and
184
+ * constraints behave identically whether a value was typed as a flag or answered here.
185
+ * @private
186
+ */
187
+ coerceAndValidate(optionsType, propertyKey, raw) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ let probe;
190
+ try {
191
+ probe = yield this.dataMapper.autoMap({ [propertyKey]: raw }, optionsType, new data_mapping_1.AutoDataMappingBuilderOptions({ throwOnErrors: false }));
192
+ }
193
+ catch (_a) {
194
+ return { valid: false, messages: [`'${raw}' could not be interpreted — please try again.`] };
195
+ }
196
+ const validationErrors = yield this.validator.validate(probe);
197
+ const propertyErrors = validationErrors.filter((error) => error.property === propertyKey);
198
+ if (propertyErrors.length === 0) {
199
+ return { valid: true, value: probe[propertyKey] };
200
+ }
201
+ return { valid: false, messages: this.describeErrors(propertyErrors) };
202
+ });
203
+ }
204
+ /**
205
+ * Flattens `class-validator`'s per-property constraint objects into plain, user-facing
206
+ * lines. `@pristine-ts/class-validator` stores each constraint as `{keyname, message}`
207
+ * rather than a bare string, so prefer `.message`, falling back so we never print
208
+ * `[object Object]`.
209
+ * @private
210
+ */
211
+ describeErrors(errors) {
212
+ const messages = [];
213
+ for (const error of errors) {
214
+ for (const key in error.constraints) {
215
+ const constraint = error.constraints[key];
216
+ const message = typeof constraint === "string"
217
+ ? constraint
218
+ : (constraint && typeof constraint === "object" && typeof constraint.message === "string")
219
+ ? constraint.message
220
+ : JSON.stringify(constraint);
221
+ messages.push(message);
222
+ }
223
+ }
224
+ return messages.length > 0 ? messages : ["Invalid value — please try again."];
225
+ }
226
+ /**
227
+ * The allowed values declared by an `@IsIn([...])` or `@IsEnum(Enum)` on the property, for
228
+ * display in the prompt. Reads `@pristine-ts/class-validator`'s stored validator instances
229
+ * defensively — any shape mismatch just yields no menu (validation still rejects bad input
230
+ * and re-asks). Returns undefined when the property isn't enum-constrained.
231
+ * @private
232
+ */
233
+ getChoices(optionsType, propertyKey) {
234
+ const validators = metadata_1.PropertyMetadata.getMetadata(optionsType.prototype, propertyKey, CommandParameterPrompter_1.ClassValidatorMetadataKey);
235
+ if (Array.isArray(validators) === false) {
236
+ return undefined;
237
+ }
238
+ for (const validator of validators) {
239
+ if (validator === null || validator === undefined || typeof validator.getConstraints !== "function") {
240
+ continue;
241
+ }
242
+ let constraints;
243
+ try {
244
+ constraints = validator.getConstraints();
245
+ }
246
+ catch (_a) {
247
+ continue;
248
+ }
249
+ if (Array.isArray(constraints === null || constraints === void 0 ? void 0 : constraints.possibleValues)) {
250
+ return constraints.possibleValues.map((value) => String(value));
251
+ }
252
+ if ((constraints === null || constraints === void 0 ? void 0 : constraints.entity) !== null && typeof (constraints === null || constraints === void 0 ? void 0 : constraints.entity) === "object") {
253
+ return Object.keys(constraints.entity).map((key) => String(constraints.entity[key]));
254
+ }
255
+ }
256
+ return undefined;
257
+ }
258
+ /**
259
+ * Appends a type hint to the question: `(y/n)` for booleans, `(a/b/c)` for enum choices.
260
+ * @private
261
+ */
262
+ decorateQuestion(question, isBoolean, choices) {
263
+ if (isBoolean) {
264
+ return `${question} (y/n)`;
265
+ }
266
+ if (choices !== undefined && choices.length > 0) {
267
+ return `${question} (${choices.join("/")})`;
268
+ }
269
+ return question;
270
+ }
271
+ /**
272
+ * Whether stdin is an interactive terminal. Pulled out so the gate is easy to reason about
273
+ * (and to stub in tests) — there is no point asking a question when input is piped or runs
274
+ * under CI, where a read would either hang or return EOF.
275
+ * @private
276
+ */
277
+ isInputInteractive() {
278
+ return process.stdin.isTTY === true;
279
+ }
280
+ /**
281
+ * Ensures the rendered question ends with a trailing space so the typed answer doesn't butt
282
+ * up against the prompt text.
283
+ * @private
284
+ */
285
+ formatQuestion(question) {
286
+ return question.endsWith(" ") ? question : `${question} `;
287
+ }
288
+ };
289
+ exports.CommandParameterPrompter = CommandParameterPrompter;
290
+ /**
291
+ * `@pristine-ts/class-validator` stores its instantiated validators (one per `@IsX`
292
+ * decorator) as an array under this property-metadata key. We read it only to surface enum
293
+ * choices in the prompt; all actual validation goes through `Validator`.
294
+ */
295
+ CommandParameterPrompter.ClassValidatorMetadataKey = "pristine-validator:validator";
296
+ /**
297
+ * How many times a single value is re-asked before giving up and letting the missing /
298
+ * invalid value fall through to the normal validation error. A bound (rather than an
299
+ * unbounded loop) keeps a misconfigured validator that can never pass from hanging the CLI.
300
+ */
301
+ CommandParameterPrompter.MaxAttempts = 5;
302
+ exports.CommandParameterPrompter = CommandParameterPrompter = CommandParameterPrompter_1 = __decorate([
303
+ (0, tsyringe_1.injectable)(),
304
+ (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
305
+ __param(4, (0, common_1.injectConfig)(cli_configuration_keys_1.CliConfigurationKeys.InteractiveParameters)),
306
+ __metadata("design:paramtypes", [cli_prompt_manager_1.CliPrompt,
307
+ cli_output_manager_1.CliOutput,
308
+ class_validator_1.Validator,
309
+ data_mapping_1.DataMapper, Boolean])
310
+ ], CommandParameterPrompter);
311
+ //# sourceMappingURL=command-parameter-prompter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-parameter-prompter.js","sourceRoot":"","sources":["../../../../src/services/command-parameter-prompter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./command-argument-resolver"), exports);
18
+ __exportStar(require("./command-options-resolver"), exports);
19
+ __exportStar(require("./command-parameter-prompter"), exports);
20
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../src/services/services.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,6DAA2C;AAC3C,+DAA6C"}