@pristine-ts/cli 2.0.7 → 2.0.17

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 (243) hide show
  1. package/dist/lib/cjs/bootstrap/build-staleness-prompt.js +12 -13
  2. package/dist/lib/cjs/bootstrap/build-staleness-prompt.js.map +1 -1
  3. package/dist/lib/cjs/bootstrap/init-prompt.js +16 -47
  4. package/dist/lib/cjs/bootstrap/init-prompt.js.map +1 -1
  5. package/dist/lib/cjs/cli.configuration-keys.js +24 -0
  6. package/dist/lib/cjs/cli.configuration-keys.js.map +1 -0
  7. package/dist/lib/cjs/cli.js +23 -10
  8. package/dist/lib/cjs/cli.js.map +1 -1
  9. package/dist/lib/cjs/cli.module.js +29 -1
  10. package/dist/lib/cjs/cli.module.js.map +1 -1
  11. package/dist/lib/cjs/commands/commands.js +6 -0
  12. package/dist/lib/cjs/commands/commands.js.map +1 -1
  13. package/dist/lib/cjs/commands/logs-alias.command.js +49 -0
  14. package/dist/lib/cjs/commands/logs-alias.command.js.map +1 -0
  15. package/dist/lib/cjs/commands/logs.command-options.js +72 -0
  16. package/dist/lib/cjs/commands/logs.command-options.js.map +1 -0
  17. package/dist/lib/cjs/commands/logs.command.js +102 -0
  18. package/dist/lib/cjs/commands/logs.command.js.map +1 -0
  19. package/dist/lib/cjs/commands/requests-alias.command.js +49 -0
  20. package/dist/lib/cjs/commands/requests-alias.command.js.map +1 -0
  21. package/dist/lib/cjs/commands/requests.command-options.js +26 -0
  22. package/dist/lib/cjs/commands/requests.command-options.js.map +1 -0
  23. package/dist/lib/cjs/commands/requests.command.js +88 -0
  24. package/dist/lib/cjs/commands/requests.command.js.map +1 -0
  25. package/dist/lib/cjs/commands/trace-alias.command.js +49 -0
  26. package/dist/lib/cjs/commands/trace-alias.command.js.map +1 -0
  27. package/dist/lib/cjs/commands/trace.command-options.js +59 -0
  28. package/dist/lib/cjs/commands/trace.command-options.js.map +1 -0
  29. package/dist/lib/cjs/commands/trace.command.js +84 -0
  30. package/dist/lib/cjs/commands/trace.command.js.map +1 -0
  31. package/dist/lib/cjs/config/config-loader.js +34 -13
  32. package/dist/lib/cjs/config/config-loader.js.map +1 -1
  33. package/dist/lib/cjs/decorators/command-parameter.decorator.js +40 -0
  34. package/dist/lib/cjs/decorators/command-parameter.decorator.js.map +1 -0
  35. package/dist/lib/cjs/decorators/decorators.js +18 -0
  36. package/dist/lib/cjs/decorators/decorators.js.map +1 -0
  37. package/dist/lib/cjs/enums/cli-decorator-metadata-keyname.enum.js +14 -0
  38. package/dist/lib/cjs/enums/cli-decorator-metadata-keyname.enum.js.map +1 -0
  39. package/dist/lib/cjs/enums/enums.js +19 -0
  40. package/dist/lib/cjs/enums/enums.js.map +1 -0
  41. package/dist/lib/cjs/enums/terminal-key-name.enum.js +21 -0
  42. package/dist/lib/cjs/enums/terminal-key-name.enum.js.map +1 -0
  43. package/dist/lib/cjs/errors/cli-error-code.enum.js +11 -1
  44. package/dist/lib/cjs/errors/cli-error-code.enum.js.map +1 -1
  45. package/dist/lib/cjs/errors/errors.js +1 -0
  46. package/dist/lib/cjs/errors/errors.js.map +1 -1
  47. package/dist/lib/cjs/errors/prompt-cancelled.error.js +25 -0
  48. package/dist/lib/cjs/errors/prompt-cancelled.error.js.map +1 -0
  49. package/dist/lib/cjs/event-handlers/cli.event-handler.js +21 -65
  50. package/dist/lib/cjs/event-handlers/cli.event-handler.js.map +1 -1
  51. package/dist/lib/cjs/event-handlers/event-handlers.js +1 -0
  52. package/dist/lib/cjs/event-handlers/event-handlers.js.map +1 -1
  53. package/dist/lib/cjs/event-handlers/repl-start.event-handler.js +280 -0
  54. package/dist/lib/cjs/event-handlers/repl-start.event-handler.js.map +1 -0
  55. package/dist/lib/cjs/event-payloads/event-payloads.js +1 -0
  56. package/dist/lib/cjs/event-payloads/event-payloads.js.map +1 -1
  57. package/dist/lib/cjs/event-payloads/start-repl.event-payload.js +19 -0
  58. package/dist/lib/cjs/event-payloads/start-repl.event-payload.js.map +1 -0
  59. package/dist/lib/cjs/interfaces/interfaces.js +1 -0
  60. package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
  61. package/dist/lib/cjs/interfaces/terminal-key.interface.js +3 -0
  62. package/dist/lib/cjs/interfaces/terminal-key.interface.js.map +1 -0
  63. package/dist/lib/cjs/managers/cli-prompt.manager.js +181 -15
  64. package/dist/lib/cjs/managers/cli-prompt.manager.js.map +1 -1
  65. package/dist/lib/cjs/managers/managers.js +1 -0
  66. package/dist/lib/cjs/managers/managers.js.map +1 -1
  67. package/dist/lib/cjs/managers/terminal-key-reader.manager.js +99 -0
  68. package/dist/lib/cjs/managers/terminal-key-reader.manager.js.map +1 -0
  69. package/dist/lib/cjs/mappers/command-event.mapper.js +48 -8
  70. package/dist/lib/cjs/mappers/command-event.mapper.js.map +1 -1
  71. package/dist/lib/cjs/mappers/mappers.js +1 -0
  72. package/dist/lib/cjs/mappers/mappers.js.map +1 -1
  73. package/dist/lib/cjs/mappers/repl-start-event.mapper.js +80 -0
  74. package/dist/lib/cjs/mappers/repl-start-event.mapper.js.map +1 -0
  75. package/dist/lib/cjs/options/command-parameter.options.js +3 -0
  76. package/dist/lib/cjs/options/command-parameter.options.js.map +1 -0
  77. package/dist/lib/cjs/options/options.js +1 -0
  78. package/dist/lib/cjs/options/options.js.map +1 -1
  79. package/dist/lib/cjs/services/command-argument-resolver.js +62 -0
  80. package/dist/lib/cjs/services/command-argument-resolver.js.map +1 -0
  81. package/dist/lib/cjs/services/command-options-resolver.js +114 -0
  82. package/dist/lib/cjs/services/command-options-resolver.js.map +1 -0
  83. package/dist/lib/cjs/services/command-parameter-prompter.js +311 -0
  84. package/dist/lib/cjs/services/command-parameter-prompter.js.map +1 -0
  85. package/dist/lib/cjs/services/services.js +20 -0
  86. package/dist/lib/cjs/services/services.js.map +1 -0
  87. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  88. package/dist/lib/cjs/types/start-repl-event-response.type.js +13 -0
  89. package/dist/lib/cjs/types/start-repl-event-response.type.js.map +1 -0
  90. package/dist/lib/cjs/types/types.js +1 -0
  91. package/dist/lib/cjs/types/types.js.map +1 -1
  92. package/dist/lib/cjs/utils/boolean-answer-parser.js +25 -0
  93. package/dist/lib/cjs/utils/boolean-answer-parser.js.map +1 -0
  94. package/dist/lib/cjs/utils/pristine-argv.js +87 -0
  95. package/dist/lib/cjs/utils/pristine-argv.js.map +1 -0
  96. package/dist/lib/cjs/utils/terminal-key-decoder.js +71 -0
  97. package/dist/lib/cjs/utils/terminal-key-decoder.js.map +1 -0
  98. package/dist/lib/esm/bootstrap/build-staleness-prompt.js +12 -13
  99. package/dist/lib/esm/bootstrap/build-staleness-prompt.js.map +1 -1
  100. package/dist/lib/esm/bootstrap/init-prompt.js +16 -47
  101. package/dist/lib/esm/bootstrap/init-prompt.js.map +1 -1
  102. package/dist/lib/esm/cli.configuration-keys.js +21 -0
  103. package/dist/lib/esm/cli.configuration-keys.js.map +1 -0
  104. package/dist/lib/esm/cli.js +23 -10
  105. package/dist/lib/esm/cli.js.map +1 -1
  106. package/dist/lib/esm/cli.module.js +29 -1
  107. package/dist/lib/esm/cli.module.js.map +1 -1
  108. package/dist/lib/esm/commands/commands.js +6 -0
  109. package/dist/lib/esm/commands/commands.js.map +1 -1
  110. package/dist/lib/esm/commands/logs-alias.command.js +46 -0
  111. package/dist/lib/esm/commands/logs-alias.command.js.map +1 -0
  112. package/dist/lib/esm/commands/logs.command-options.js +68 -0
  113. package/dist/lib/esm/commands/logs.command-options.js.map +1 -0
  114. package/dist/lib/esm/commands/logs.command.js +99 -0
  115. package/dist/lib/esm/commands/logs.command.js.map +1 -0
  116. package/dist/lib/esm/commands/requests-alias.command.js +46 -0
  117. package/dist/lib/esm/commands/requests-alias.command.js.map +1 -0
  118. package/dist/lib/esm/commands/requests.command-options.js +22 -0
  119. package/dist/lib/esm/commands/requests.command-options.js.map +1 -0
  120. package/dist/lib/esm/commands/requests.command.js +85 -0
  121. package/dist/lib/esm/commands/requests.command.js.map +1 -0
  122. package/dist/lib/esm/commands/trace-alias.command.js +46 -0
  123. package/dist/lib/esm/commands/trace-alias.command.js.map +1 -0
  124. package/dist/lib/esm/commands/trace.command-options.js +55 -0
  125. package/dist/lib/esm/commands/trace.command-options.js.map +1 -0
  126. package/dist/lib/esm/commands/trace.command.js +81 -0
  127. package/dist/lib/esm/commands/trace.command.js.map +1 -0
  128. package/dist/lib/esm/config/config-loader.js +34 -13
  129. package/dist/lib/esm/config/config-loader.js.map +1 -1
  130. package/dist/lib/esm/decorators/command-parameter.decorator.js +36 -0
  131. package/dist/lib/esm/decorators/command-parameter.decorator.js.map +1 -0
  132. package/dist/lib/esm/decorators/decorators.js +2 -0
  133. package/dist/lib/esm/decorators/decorators.js.map +1 -0
  134. package/dist/lib/esm/enums/cli-decorator-metadata-keyname.enum.js +11 -0
  135. package/dist/lib/esm/enums/cli-decorator-metadata-keyname.enum.js.map +1 -0
  136. package/dist/lib/esm/enums/enums.js +3 -0
  137. package/dist/lib/esm/enums/enums.js.map +1 -0
  138. package/dist/lib/esm/enums/terminal-key-name.enum.js +18 -0
  139. package/dist/lib/esm/enums/terminal-key-name.enum.js.map +1 -0
  140. package/dist/lib/esm/errors/cli-error-code.enum.js +11 -1
  141. package/dist/lib/esm/errors/cli-error-code.enum.js.map +1 -1
  142. package/dist/lib/esm/errors/errors.js +1 -0
  143. package/dist/lib/esm/errors/errors.js.map +1 -1
  144. package/dist/lib/esm/errors/prompt-cancelled.error.js +21 -0
  145. package/dist/lib/esm/errors/prompt-cancelled.error.js.map +1 -0
  146. package/dist/lib/esm/event-handlers/cli.event-handler.js +22 -66
  147. package/dist/lib/esm/event-handlers/cli.event-handler.js.map +1 -1
  148. package/dist/lib/esm/event-handlers/event-handlers.js +1 -0
  149. package/dist/lib/esm/event-handlers/event-handlers.js.map +1 -1
  150. package/dist/lib/esm/event-handlers/repl-start.event-handler.js +244 -0
  151. package/dist/lib/esm/event-handlers/repl-start.event-handler.js.map +1 -0
  152. package/dist/lib/esm/event-payloads/event-payloads.js +1 -0
  153. package/dist/lib/esm/event-payloads/event-payloads.js.map +1 -1
  154. package/dist/lib/esm/event-payloads/start-repl.event-payload.js +15 -0
  155. package/dist/lib/esm/event-payloads/start-repl.event-payload.js.map +1 -0
  156. package/dist/lib/esm/interfaces/interfaces.js +1 -0
  157. package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
  158. package/dist/lib/esm/interfaces/terminal-key.interface.js +2 -0
  159. package/dist/lib/esm/interfaces/terminal-key.interface.js.map +1 -0
  160. package/dist/lib/esm/managers/cli-prompt.manager.js +182 -16
  161. package/dist/lib/esm/managers/cli-prompt.manager.js.map +1 -1
  162. package/dist/lib/esm/managers/managers.js +1 -0
  163. package/dist/lib/esm/managers/managers.js.map +1 -1
  164. package/dist/lib/esm/managers/terminal-key-reader.manager.js +96 -0
  165. package/dist/lib/esm/managers/terminal-key-reader.manager.js.map +1 -0
  166. package/dist/lib/esm/mappers/command-event.mapper.js +49 -9
  167. package/dist/lib/esm/mappers/command-event.mapper.js.map +1 -1
  168. package/dist/lib/esm/mappers/mappers.js +1 -0
  169. package/dist/lib/esm/mappers/mappers.js.map +1 -1
  170. package/dist/lib/esm/mappers/repl-start-event.mapper.js +77 -0
  171. package/dist/lib/esm/mappers/repl-start-event.mapper.js.map +1 -0
  172. package/dist/lib/esm/options/command-parameter.options.js +2 -0
  173. package/dist/lib/esm/options/command-parameter.options.js.map +1 -0
  174. package/dist/lib/esm/options/options.js +1 -0
  175. package/dist/lib/esm/options/options.js.map +1 -1
  176. package/dist/lib/esm/services/command-argument-resolver.js +59 -0
  177. package/dist/lib/esm/services/command-argument-resolver.js.map +1 -0
  178. package/dist/lib/esm/services/command-options-resolver.js +111 -0
  179. package/dist/lib/esm/services/command-options-resolver.js.map +1 -0
  180. package/dist/lib/esm/services/command-parameter-prompter.js +308 -0
  181. package/dist/lib/esm/services/command-parameter-prompter.js.map +1 -0
  182. package/dist/lib/esm/services/services.js +4 -0
  183. package/dist/lib/esm/services/services.js.map +1 -0
  184. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
  185. package/dist/lib/esm/types/start-repl-event-response.type.js +9 -0
  186. package/dist/lib/esm/types/start-repl-event-response.type.js.map +1 -0
  187. package/dist/lib/esm/types/types.js +1 -0
  188. package/dist/lib/esm/types/types.js.map +1 -1
  189. package/dist/lib/esm/utils/boolean-answer-parser.js +21 -0
  190. package/dist/lib/esm/utils/boolean-answer-parser.js.map +1 -0
  191. package/dist/lib/esm/utils/pristine-argv.js +50 -0
  192. package/dist/lib/esm/utils/pristine-argv.js.map +1 -0
  193. package/dist/lib/esm/utils/terminal-key-decoder.js +67 -0
  194. package/dist/lib/esm/utils/terminal-key-decoder.js.map +1 -0
  195. package/dist/types/bootstrap/build-staleness-prompt.d.ts +3 -3
  196. package/dist/types/bootstrap/init-prompt.d.ts +5 -5
  197. package/dist/types/cli.configuration-keys.d.ts +32 -0
  198. package/dist/types/cli.d.ts +8 -4
  199. package/dist/types/cli.module.d.ts +4 -0
  200. package/dist/types/commands/commands.d.ts +6 -0
  201. package/dist/types/commands/logs-alias.command.d.ts +14 -0
  202. package/dist/types/commands/logs.command-options.d.ts +38 -0
  203. package/dist/types/commands/logs.command.d.ts +31 -0
  204. package/dist/types/commands/requests-alias.command.d.ts +14 -0
  205. package/dist/types/commands/requests.command-options.d.ts +8 -0
  206. package/dist/types/commands/requests.command.d.ts +25 -0
  207. package/dist/types/commands/trace-alias.command.d.ts +14 -0
  208. package/dist/types/commands/trace.command-options.d.ts +31 -0
  209. package/dist/types/commands/trace.command.d.ts +21 -0
  210. package/dist/types/config/config-loader.d.ts +15 -3
  211. package/dist/types/decorators/command-parameter.decorator.d.ts +30 -0
  212. package/dist/types/decorators/decorators.d.ts +1 -0
  213. package/dist/types/enums/cli-decorator-metadata-keyname.enum.d.ts +9 -0
  214. package/dist/types/enums/enums.d.ts +2 -0
  215. package/dist/types/enums/terminal-key-name.enum.d.ts +16 -0
  216. package/dist/types/errors/cli-error-code.enum.d.ts +12 -2
  217. package/dist/types/errors/errors.d.ts +1 -0
  218. package/dist/types/errors/prompt-cancelled.error.d.ts +13 -0
  219. package/dist/types/event-handlers/cli.event-handler.d.ts +16 -13
  220. package/dist/types/event-handlers/event-handlers.d.ts +1 -0
  221. package/dist/types/event-handlers/repl-start.event-handler.d.ts +70 -0
  222. package/dist/types/event-payloads/event-payloads.d.ts +1 -0
  223. package/dist/types/event-payloads/start-repl.event-payload.d.ts +13 -0
  224. package/dist/types/interfaces/interfaces.d.ts +1 -0
  225. package/dist/types/interfaces/terminal-key.interface.d.ts +11 -0
  226. package/dist/types/managers/cli-prompt.manager.d.ts +63 -6
  227. package/dist/types/managers/managers.d.ts +1 -0
  228. package/dist/types/managers/terminal-key-reader.manager.d.ts +31 -0
  229. package/dist/types/mappers/command-event.mapper.d.ts +10 -1
  230. package/dist/types/mappers/mappers.d.ts +1 -0
  231. package/dist/types/mappers/repl-start-event.mapper.d.ts +28 -0
  232. package/dist/types/options/command-parameter.options.d.ts +29 -0
  233. package/dist/types/options/options.d.ts +1 -0
  234. package/dist/types/services/command-argument-resolver.d.ts +24 -0
  235. package/dist/types/services/command-options-resolver.d.ts +35 -0
  236. package/dist/types/services/command-parameter-prompter.d.ts +113 -0
  237. package/dist/types/services/services.d.ts +3 -0
  238. package/dist/types/types/start-repl-event-response.type.d.ts +10 -0
  239. package/dist/types/types/types.d.ts +1 -0
  240. package/dist/types/utils/boolean-answer-parser.d.ts +11 -0
  241. package/dist/types/utils/pristine-argv.d.ts +33 -0
  242. package/dist/types/utils/terminal-key-decoder.d.ts +28 -0
  243. package/package.json +16 -12
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StartReplEventResponse = void 0;
4
+ const core_1 = require("@pristine-ts/core");
5
+ /**
6
+ * The response shape produced by `ReplStartEventHandler` when the interactive session
7
+ * ends (`/exit` or EOF). Carries the exit code the bin should pass to `process.exit`,
8
+ * surfaced through `ReplStartEventMapper.reverseMap`.
9
+ */
10
+ class StartReplEventResponse extends core_1.EventResponse {
11
+ }
12
+ exports.StartReplEventResponse = StartReplEventResponse;
13
+ //# sourceMappingURL=start-repl-event-response.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-repl-event-response.type.js","sourceRoot":"","sources":["../../../../src/types/start-repl-event-response.type.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAIhD;;;;GAIG;AACH,MAAa,sBAAuB,SAAQ,oBAAuD;CAClG;AADD,wDACC"}
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./command-event.type"), exports);
18
18
  __exportStar(require("./command-event-response.type"), exports);
19
+ __exportStar(require("./start-repl-event-response.type"), exports);
19
20
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,gEAA8C"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,gEAA8C;AAC9C,mEAAiD"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BooleanAnswerParser = void 0;
4
+ /**
5
+ * Interprets a free-text answer as a boolean the way traditional CLIs do — accepting
6
+ * `y`/`yes`/`true`/`1` and `n`/`no`/`false`/`0` (case-insensitive, surrounding whitespace
7
+ * ignored). Returns `undefined` for anything unrecognized so callers can re-ask.
8
+ *
9
+ * Shared by `CliPrompt.confirm` (yes/no prompts) and `CommandParameterPrompter` (typed
10
+ * boolean parameters) so both accept exactly the same set of answers.
11
+ */
12
+ class BooleanAnswerParser {
13
+ static parse(raw) {
14
+ const normalized = raw.trim().toLowerCase();
15
+ if (normalized === "y" || normalized === "yes" || normalized === "true" || normalized === "1") {
16
+ return true;
17
+ }
18
+ if (normalized === "n" || normalized === "no" || normalized === "false" || normalized === "0") {
19
+ return false;
20
+ }
21
+ return undefined;
22
+ }
23
+ }
24
+ exports.BooleanAnswerParser = BooleanAnswerParser;
25
+ //# sourceMappingURL=boolean-answer-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean-answer-parser.js","sourceRoot":"","sources":["../../../../src/utils/boolean-answer-parser.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,MAAa,mBAAmB;IAC9B,MAAM,CAAC,KAAK,CAAC,GAAW;QACtB,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YAC9F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YAC9F,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAXD,kDAWC"}
@@ -0,0 +1,87 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PristineArgv = void 0;
37
+ const path = __importStar(require("path"));
38
+ /**
39
+ * Parses an argv array — typically `process.argv` — to locate the pristine bin and
40
+ * extract the user-typed arguments that follow it.
41
+ *
42
+ * Why scan rather than positional-index: argv shape is runtime-dependent. Node and Bun
43
+ * happen to put `[executable, scriptPath, ...userArgs]` today, but a different runtime
44
+ * (or a launcher that prepends flags before the script) can violate that. Locating the
45
+ * bin by name — an element whose basename (stripped of any extension like `.cjs` /
46
+ * `.js` / `.mjs`) is `pristine` — is robust across:
47
+ *
48
+ * - global installs (`pristine repl` → argv contains `/usr/local/.../pristine.cjs`)
49
+ * - local installs (`./node_modules/.bin/pristine`)
50
+ * - `npx pristine`
51
+ * - direct `node dist/bin/pristine.cjs`
52
+ * - alternative runtimes that may shape argv differently
53
+ * - the synthetic argv the REPL handler builds for each typed line
54
+ *
55
+ * Stateless after construction; instantiate per parse.
56
+ */
57
+ class PristineArgv {
58
+ constructor(rawArgv) {
59
+ const binIndex = rawArgv.findIndex(arg => PristineArgv.isPristineBin(arg));
60
+ if (binIndex === -1) {
61
+ this.scriptPath = "";
62
+ this.userArgs = [];
63
+ return;
64
+ }
65
+ const scriptPath = rawArgv[binIndex];
66
+ this.scriptPath = typeof scriptPath === "string" ? scriptPath : "";
67
+ this.userArgs = rawArgv
68
+ .slice(binIndex + 1)
69
+ .filter((arg) => typeof arg === "string");
70
+ }
71
+ /**
72
+ * True when the argv was recognizable as a pristine invocation (the bin token was
73
+ * located). Mappers short-circuit `supportsMapping` on this.
74
+ */
75
+ get isValid() {
76
+ return this.scriptPath !== "";
77
+ }
78
+ static isPristineBin(arg) {
79
+ if (typeof arg !== "string") {
80
+ return false;
81
+ }
82
+ return path.basename(arg, path.extname(arg)) === PristineArgv.BIN_NAME;
83
+ }
84
+ }
85
+ exports.PristineArgv = PristineArgv;
86
+ PristineArgv.BIN_NAME = "pristine";
87
+ //# sourceMappingURL=pristine-argv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pristine-argv.js","sourceRoot":"","sources":["../../../../src/utils/pristine-argv.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAE7B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,YAAY;IASvB,YAAY,OAA2B;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,QAAQ,GAAG,OAAO;aACpB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;aACnB,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC;IAChC,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,GAAY;QACvC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,YAAY,CAAC,QAAQ,CAAC;IACzE,CAAC;;AApCH,oCAqCC;AApCyB,qBAAQ,GAAG,UAAU,CAAC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalKeyDecoder = void 0;
4
+ const terminal_key_name_enum_1 = require("../enums/terminal-key-name.enum");
5
+ /**
6
+ * Translates the raw bytes Node delivers from a raw-mode stdin into structured
7
+ * {@link TerminalKey}s. Pure and static so it can be unit-tested without a real TTY.
8
+ *
9
+ * A single `data` chunk can carry more than one keystroke (notably a paste, or fast
10
+ * typing), so this returns an array. Control and escape sequences are recognized as one
11
+ * key each; a run of printable characters is split into one `Character` key per character
12
+ * so callers (masked input, menus) can echo and handle them uniformly.
13
+ */
14
+ class TerminalKeyDecoder {
15
+ /**
16
+ * Decodes a raw stdin chunk into the keys it represents.
17
+ *
18
+ * - A recognized control byte / escape sequence that spans the whole chunk → one key.
19
+ * - An unrecognized escape sequence (starts with ESC) → a single `Other` key, rather
20
+ * than splitting it into bogus printable characters.
21
+ * - Anything else → one key per character, with non-printable control bytes mapped to
22
+ * `Other` so they're ignored rather than echoed.
23
+ */
24
+ static decode(data) {
25
+ const whole = TerminalKeyDecoder.decodeControl(data);
26
+ if (whole !== undefined) {
27
+ return [whole];
28
+ }
29
+ if (data.charCodeAt(0) === 0x1b) {
30
+ return [{ name: terminal_key_name_enum_1.TerminalKeyName.Other, sequence: data }];
31
+ }
32
+ const keys = [];
33
+ for (const character of data) {
34
+ const control = TerminalKeyDecoder.decodeControl(character);
35
+ if (control !== undefined) {
36
+ keys.push(control);
37
+ }
38
+ else if (character.charCodeAt(0) < 0x20) {
39
+ keys.push({ name: terminal_key_name_enum_1.TerminalKeyName.Other, sequence: character });
40
+ }
41
+ else {
42
+ keys.push({ name: terminal_key_name_enum_1.TerminalKeyName.Character, sequence: character });
43
+ }
44
+ }
45
+ return keys;
46
+ }
47
+ /**
48
+ * Maps a single recognized control byte or escape sequence to its key, or `undefined`
49
+ * when the input isn't one we handle.
50
+ * @private
51
+ */
52
+ static decodeControl(sequence) {
53
+ switch (sequence) {
54
+ case "\x1b[A":
55
+ return { name: terminal_key_name_enum_1.TerminalKeyName.Up, sequence };
56
+ case "\x1b[B":
57
+ return { name: terminal_key_name_enum_1.TerminalKeyName.Down, sequence };
58
+ case "\r":
59
+ case "\n":
60
+ return { name: terminal_key_name_enum_1.TerminalKeyName.Enter, sequence };
61
+ case "\x7f":
62
+ case "\b":
63
+ return { name: terminal_key_name_enum_1.TerminalKeyName.Backspace, sequence };
64
+ case "\x03":
65
+ return { name: terminal_key_name_enum_1.TerminalKeyName.CtrlC, sequence };
66
+ }
67
+ return undefined;
68
+ }
69
+ }
70
+ exports.TerminalKeyDecoder = TerminalKeyDecoder;
71
+ //# sourceMappingURL=terminal-key-decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-key-decoder.js","sourceRoot":"","sources":["../../../../src/utils/terminal-key-decoder.ts"],"names":[],"mappings":";;;AACA,4EAAgE;AAEhE;;;;;;;;GAQG;AACH,MAAa,kBAAkB;IAC7B;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,IAAY;QACxB,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,EAAC,IAAI,EAAE,wCAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,wCAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,wCAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,aAAa,CAAC,QAAgB;QAC3C,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,EAAC,IAAI,EAAE,wCAAe,CAAC,EAAE,EAAE,QAAQ,EAAC,CAAC;YAC9C,KAAK,QAAQ;gBACX,OAAO,EAAC,IAAI,EAAE,wCAAe,CAAC,IAAI,EAAE,QAAQ,EAAC,CAAC;YAChD,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,OAAO,EAAC,IAAI,EAAE,wCAAe,CAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;YACjD,KAAK,MAAM,CAAC;YACZ,KAAK,IAAI;gBACP,OAAO,EAAC,IAAI,EAAE,wCAAe,CAAC,SAAS,EAAE,QAAQ,EAAC,CAAC;YACrD,KAAK,MAAM;gBACT,OAAO,EAAC,IAAI,EAAE,wCAAe,CAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;QACnD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAxDD,gDAwDC"}
@@ -18,7 +18,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
18
18
  };
19
19
  import { injectable } from "tsyringe";
20
20
  import { BuildManifestStalenessEnum } from "./build-manifest-staleness.enum";
21
- import { DynamicImporter } from "./dynamic-importer";
21
+ import { CliPrompt } from "../managers/cli-prompt.manager";
22
+ import { PromptCancelledError } from "../errors/prompt-cancelled.error";
22
23
  /**
23
24
  * When the build manifest is stale (source edited, output missing, etc.), `AppModuleLoader`
24
25
  * stops the load and consults this prompt. In a TTY, asks the user whether to run
@@ -29,8 +30,8 @@ import { DynamicImporter } from "./dynamic-importer";
29
30
  * this class stays small and testable.
30
31
  */
31
32
  let BuildStalenessPrompt = class BuildStalenessPrompt {
32
- constructor(dynamicImporter) {
33
- this.dynamicImporter = dynamicImporter;
33
+ constructor(cliPrompt) {
34
+ this.cliPrompt = cliPrompt;
34
35
  this.promptMessage = "Run `pristine build` now to refresh?";
35
36
  }
36
37
  isInteractive() {
@@ -64,24 +65,22 @@ let BuildStalenessPrompt = class BuildStalenessPrompt {
64
65
  */
65
66
  prompt(reason) {
66
67
  return __awaiter(this, void 0, void 0, function* () {
67
- const inquirer = yield this.dynamicImporter.import("@inquirer/prompts");
68
- const confirm = inquirer.confirm;
69
68
  try {
70
- return yield confirm({
71
- message: `${this.describe(reason)}\n ${this.promptMessage}`,
72
- default: true,
73
- });
69
+ return yield this.cliPrompt.confirm(`${this.describe(reason)}\n ${this.promptMessage}`, true);
74
70
  }
75
- catch (_a) {
76
- // @inquirer throws on Ctrl+C. Treat as a clean cancellation.
77
- return undefined;
71
+ catch (error) {
72
+ if (error instanceof PromptCancelledError) {
73
+ // Ctrl+C — treat as a clean cancellation so the caller can exit with the explanation.
74
+ return undefined;
75
+ }
76
+ throw error;
78
77
  }
79
78
  });
80
79
  }
81
80
  };
82
81
  BuildStalenessPrompt = __decorate([
83
82
  injectable(),
84
- __metadata("design:paramtypes", [DynamicImporter])
83
+ __metadata("design:paramtypes", [CliPrompt])
85
84
  ], BuildStalenessPrompt);
86
85
  export { BuildStalenessPrompt };
87
86
  //# sourceMappingURL=build-staleness-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-staleness-prompt.js","sourceRoot":"","sources":["../../../../src/bootstrap/build-staleness-prompt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,0BAA0B,EAAC,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;;GAQG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAG/B,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAF5C,kBAAa,GAAW,sCAAsC,CAAC;IAGhF,CAAC;IAED,aAAa;QACX,OAAO,OAAO,CAAE,OAAO,CAAC,MAAc,CAAC,KAAK,CAAC,IAAI,OAAO,CAAE,OAAO,CAAC,KAAa,CAAC,KAAK,CAAC,CAAC;IACzF,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAkC;QACzC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,0BAA0B,CAAC,OAAO;gBACrC,OAAO,6EAA6E,CAAC;YACvF,KAAK,0BAA0B,CAAC,iBAAiB;gBAC/C,OAAO,gIAAgI,CAAC;YAC1I,KAAK,0BAA0B,CAAC,iBAAiB;gBAC/C,OAAO,qIAAqI,CAAC;YAC/I,KAAK,0BAA0B,CAAC,oBAAoB;gBAClD,OAAO,4FAA4F,CAAC;YACtG,KAAK,0BAA0B,CAAC,aAAa;gBAC3C,OAAO,uFAAuF,CAAC;YACjG,KAAK,0BAA0B,CAAC,KAAK;gBACnC,oFAAoF;gBACpF,iBAAiB;gBACjB,OAAO,+BAA+B,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;OAGG;IACG,MAAM,CAAC,MAAkC;;YAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACxE,MAAM,OAAO,GAAsC,QAAQ,CAAC,OAAO,CAAC;YAEpE,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC;oBACnB,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE;oBAC5D,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,WAAM,CAAC;gBACP,6DAA6D;gBAC7D,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;KAAA;CACF,CAAA;AAnDY,oBAAoB;IADhC,UAAU,EAAE;qCAImC,eAAe;GAHlD,oBAAoB,CAmDhC"}
1
+ {"version":3,"file":"build-staleness-prompt.js","sourceRoot":"","sources":["../../../../src/bootstrap/build-staleness-prompt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,0BAA0B,EAAC,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAC,SAAS,EAAC,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AAEtE;;;;;;;;GAQG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAG/B,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAFhC,kBAAa,GAAW,sCAAsC,CAAC;IAGhF,CAAC;IAED,aAAa;QACX,OAAO,OAAO,CAAE,OAAO,CAAC,MAAc,CAAC,KAAK,CAAC,IAAI,OAAO,CAAE,OAAO,CAAC,KAAa,CAAC,KAAK,CAAC,CAAC;IACzF,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAkC;QACzC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,0BAA0B,CAAC,OAAO;gBACrC,OAAO,6EAA6E,CAAC;YACvF,KAAK,0BAA0B,CAAC,iBAAiB;gBAC/C,OAAO,gIAAgI,CAAC;YAC1I,KAAK,0BAA0B,CAAC,iBAAiB;gBAC/C,OAAO,qIAAqI,CAAC;YAC/I,KAAK,0BAA0B,CAAC,oBAAoB;gBAClD,OAAO,4FAA4F,CAAC;YACtG,KAAK,0BAA0B,CAAC,aAAa;gBAC3C,OAAO,uFAAuF,CAAC;YACjG,KAAK,0BAA0B,CAAC,KAAK;gBACnC,oFAAoF;gBACpF,iBAAiB;gBACjB,OAAO,+BAA+B,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;;OAGG;IACG,MAAM,CAAC,MAAkC;;YAC7C,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;YACjG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;oBAC1C,sFAAsF;oBACtF,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;KAAA;CACF,CAAA;AAhDY,oBAAoB;IADhC,UAAU,EAAE;qCAI6B,SAAS;GAHtC,oBAAoB,CAgDhC"}
@@ -17,10 +17,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
17
17
  });
18
18
  };
19
19
  import { injectable } from "tsyringe";
20
- import { DynamicImporter } from "./dynamic-importer";
20
+ import { CliPrompt } from "../managers/cli-prompt.manager";
21
21
  /**
22
- * Interactive Q&A for `pristine init`. Lazy-loads `@inquirer/prompts` so the dep cost is
23
- * only paid when actually prompting (the same pattern as `BuildStalenessPrompt` uses).
22
+ * Interactive Q&A for `pristine init`. Prompts through {@link CliPrompt}, the CLI's native
23
+ * (no third-party dependency) terminal-prompt manager.
24
24
  *
25
25
  * Each method takes a "current value" so callers can pre-fill answers from CLI flags and
26
26
  * only prompt for the gaps. Returning the same value the user passed in is intentional —
@@ -28,8 +28,8 @@ import { DynamicImporter } from "./dynamic-importer";
28
28
  * prompt.
29
29
  */
30
30
  let InitPrompt = class InitPrompt {
31
- constructor(dynamicImporter) {
32
- this.dynamicImporter = dynamicImporter;
31
+ constructor(cliPrompt) {
32
+ this.cliPrompt = cliPrompt;
33
33
  this.defaultSourcePath = "src/app.module.ts";
34
34
  this.defaultOutputPath = "dist/app.module.js";
35
35
  this.defaultTsconfig = "tsconfig.json";
@@ -42,83 +42,52 @@ let InitPrompt = class InitPrompt {
42
42
  return __awaiter(this, void 0, void 0, function* () {
43
43
  if (current !== undefined)
44
44
  return current;
45
- const inquirer = yield this.dynamicImporter.import("@inquirer/prompts");
46
- const input = inquirer.input;
47
- return input({
48
- message: "Where does your AppModule source file live?",
49
- default: this.defaultSourcePath,
50
- });
45
+ return this.cliPrompt.input("Where does your AppModule source file live?", this.defaultSourcePath);
51
46
  });
52
47
  }
53
48
  askOutputPath(current) {
54
49
  return __awaiter(this, void 0, void 0, function* () {
55
50
  if (current !== undefined)
56
51
  return current;
57
- const inquirer = yield this.dynamicImporter.import("@inquirer/prompts");
58
- const input = inquirer.input;
59
- return input({
60
- message: "Where should the compiled AppModule output land?",
61
- default: this.defaultOutputPath,
62
- });
52
+ return this.cliPrompt.input("Where should the compiled AppModule output land?", this.defaultOutputPath);
63
53
  });
64
54
  }
65
55
  askTsconfig(current) {
66
56
  return __awaiter(this, void 0, void 0, function* () {
67
57
  if (current !== undefined)
68
58
  return current;
69
- const inquirer = yield this.dynamicImporter.import("@inquirer/prompts");
70
- const input = inquirer.input;
71
- return input({
72
- message: "Which tsconfig should `pristine build` use?",
73
- default: this.defaultTsconfig,
74
- });
59
+ return this.cliPrompt.input("Which tsconfig should `pristine build` use?", this.defaultTsconfig);
75
60
  });
76
61
  }
77
62
  askFormat(current) {
78
63
  return __awaiter(this, void 0, void 0, function* () {
79
64
  if (current !== undefined)
80
65
  return current;
81
- const inquirer = yield this.dynamicImporter.import("@inquirer/prompts");
82
- const select = inquirer.select;
83
- return select({
84
- message: "Which build format do you want?",
85
- choices: [
86
- { name: "esm (modern, recommended)", value: "esm" },
87
- { name: "cjs (CommonJS)", value: "cjs" },
88
- { name: "both (publish ESM + CJS)", value: "both" },
89
- ],
90
- default: this.defaultFormat,
91
- });
66
+ return this.cliPrompt.select("Which build format do you want?", [
67
+ { name: "esm (modern, recommended)", value: "esm" },
68
+ { name: "cjs (CommonJS)", value: "cjs" },
69
+ { name: "both (publish ESM + CJS)", value: "both" },
70
+ ], this.defaultFormat);
92
71
  });
93
72
  }
94
73
  askScaffoldSource(current, sourcePath) {
95
74
  return __awaiter(this, void 0, void 0, function* () {
96
75
  if (current !== undefined)
97
76
  return current;
98
- const inquirer = yield this.dynamicImporter.import("@inquirer/prompts");
99
- const confirm = inquirer.confirm;
100
- return confirm({
101
- message: `Scaffold a starter AppModule at ${sourcePath}?`,
102
- default: true,
103
- });
77
+ return this.cliPrompt.confirm(`Scaffold a starter AppModule at ${sourcePath}?`, true);
104
78
  });
105
79
  }
106
80
  askWritePackageScripts(current) {
107
81
  return __awaiter(this, void 0, void 0, function* () {
108
82
  if (current !== undefined)
109
83
  return current;
110
- const inquirer = yield this.dynamicImporter.import("@inquirer/prompts");
111
- const confirm = inquirer.confirm;
112
- return confirm({
113
- message: "Add `build`, `start`, `verify` scripts to package.json (only ones that don't already exist)?",
114
- default: true,
115
- });
84
+ return this.cliPrompt.confirm("Add `build`, `start`, `verify` scripts to package.json (only ones that don't already exist)?", true);
116
85
  });
117
86
  }
118
87
  };
119
88
  InitPrompt = __decorate([
120
89
  injectable(),
121
- __metadata("design:paramtypes", [DynamicImporter])
90
+ __metadata("design:paramtypes", [CliPrompt])
122
91
  ], InitPrompt);
123
92
  export { InitPrompt };
124
93
  //# sourceMappingURL=init-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-prompt.js","sourceRoot":"","sources":["../../../../src/bootstrap/init-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-prompt.js","sourceRoot":"","sources":["../../../../src/bootstrap/init-prompt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,SAAS,EAAC,MAAM,gCAAgC,CAAC;AAgBzD;;;;;;;;GAQG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAU;IAMrB,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QALhC,sBAAiB,GAAW,mBAAmB,CAAC;QAChD,sBAAiB,GAAW,oBAAoB,CAAC;QACjD,oBAAe,GAAW,eAAe,CAAC;QAC1C,kBAAa,GAA2B,KAAK,CAAC;IAG/D,CAAC;IAED,aAAa;QACX,OAAO,OAAO,CAAE,OAAO,CAAC,MAAc,CAAC,KAAK,CAAC,IAAI,OAAO,CAAE,OAAO,CAAC,KAAa,CAAC,KAAK,CAAC,CAAC;IACzF,CAAC;IAEK,aAAa,CAAC,OAA2B;;YAC7C,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,6CAA6C,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrG,CAAC;KAAA;IAEK,aAAa,CAAC,OAA2B;;YAC7C,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kDAAkD,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1G,CAAC;KAAA;IAEK,WAAW,CAAC,OAA2B;;YAC3C,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,6CAA6C,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACnG,CAAC;KAAA;IAEK,SAAS,CAAC,OAA2C;;YACzD,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAC1B,iCAAiC,EACjC;gBACE,EAAC,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAC;gBAClD,EAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAC;gBACvC,EAAC,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAC;aAClD,EACD,IAAI,CAAC,aAAa,CACnB,CAAC;QACJ,CAAC;KAAA;IAEK,iBAAiB,CAAC,OAA4B,EAAE,UAAkB;;YACtE,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mCAAmC,UAAU,GAAG,EAAE,IAAI,CAAC,CAAC;QACxF,CAAC;KAAA;IAEK,sBAAsB,CAAC,OAA4B;;YACvD,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,8FAA8F,EAC9F,IAAI,CACL,CAAC;QACJ,CAAC;KAAA;CACF,CAAA;AArDY,UAAU;IADtB,UAAU,EAAE;qCAO6B,SAAS;GANtC,UAAU,CAqDtB"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Typed configuration keys for `@pristine-ts/cli`. Use these constants with `@injectConfig`
3
+ * for autocomplete + rename safety, instead of typing the parameter name as a string.
4
+ *
5
+ * ```ts
6
+ * import {injectConfig} from "@pristine-ts/common";
7
+ * import {CliConfigurationKeys} from "@pristine-ts/cli";
8
+ *
9
+ * constructor(@injectConfig(CliConfigurationKeys.InteractiveParameters) enabled: boolean) {}
10
+ * ```
11
+ */
12
+ export const CliConfigurationKeys = {
13
+ /**
14
+ * Whether the CLI may interactively ask for missing command parameters that declare a
15
+ * `question` (via `@commandParameter`). Defaults to `true`; set it to `false` to disable
16
+ * all such prompting (e.g. in CI). Prompting is also skipped automatically whenever the
17
+ * input is not an interactive terminal, regardless of this value.
18
+ */
19
+ InteractiveParameters: "pristine.cli.interactiveParameters",
20
+ };
21
+ //# sourceMappingURL=cli.configuration-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.configuration-keys.js","sourceRoot":"","sources":["../../../src/cli.configuration-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC;;;;;OAKG;IACH,qBAAqB,EAAE,oCAAoC;CACnD,CAAC"}
@@ -21,6 +21,8 @@ import { SourceHasher } from "./bootstrap/source-hasher";
21
21
  import { ConfigLoader } from "./config/config-loader";
22
22
  import { CliModule } from "./cli.module";
23
23
  import { CliErrorReporter } from "./reporters/cli-error.reporter";
24
+ import { CliPrompt } from "./managers/cli-prompt.manager";
25
+ import { TerminalKeyReader } from "./managers/terminal-key-reader.manager";
24
26
  /**
25
27
  * Boots the CLI: discovers the consumer's AppModule, starts the kernel, and dispatches
26
28
  * `process.argv` to whichever command matches. Returns the process exit code rather than
@@ -61,11 +63,17 @@ export class Cli {
61
63
  // and the alias commands can register signal handlers and resolve their delegates.
62
64
  this.kernel.container.registerInstance(Kernel, this.kernel);
63
65
  this.warnOnCommandCollisions();
64
- yield this.kernel.handle(process.argv, { keyname: ExecutionContextKeynameEnum.Cli, context: null });
65
- // The CLI event handler calls `process.exit(exitCode)` itself after the command runs,
66
- // so this return is only reached if the dispatcher somehow resolves without exiting —
67
- // treat that as a success exit.
68
- return 0;
66
+ // Uniform dispatch: every argv shape flows through `kernel.handle(argv, {keyname:
67
+ // Cli})`. The mapping layer picks the right payload:
68
+ // - `[node, pristine, <command>, ...]` `CommandEventMapper` `CliEventHandler`
69
+ // runs the command and returns its exit code (no `process.exit`; exiting is
70
+ // `bin.ts`'s job).
71
+ // - `[node, pristine]` or `[node, pristine, repl, ...]` → `ReplStartEventMapper`
72
+ // → `ReplStartEventHandler` runs the interactive session and resolves with the
73
+ // exit code on `/exit` or EOF.
74
+ // No if-REPL branch needed here — the REPL is just another event handler.
75
+ const exitCode = yield this.kernel.handle(process.argv, { keyname: ExecutionContextKeynameEnum.Cli, context: null });
76
+ return typeof exitCode === "number" ? exitCode : 0;
69
77
  }
70
78
  catch (error) {
71
79
  return yield this.reportFatalError(error);
@@ -133,11 +141,15 @@ export class Cli {
133
141
  });
134
142
  }
135
143
  /**
136
- * Builds a synthetic outer AppModule that imports both the user's AppModule and CliModule.
144
+ * Builds a synthetic outer AppModule that imports the user's AppModule plus `CliModule`
145
+ * — so the CLI's own commands are always registered when the bin is the entry point.
146
+ * `CliModule` itself imports `ObservabilityModule`, so the logs/traces store travels
147
+ * along without being named here.
148
+ *
137
149
  * The wrap is unconditional — the kernel dedupes module imports by keyname, so adding
138
- * CliModule on top of a graph that already contains it is a no-op rather than an error
139
- * or duplicate registration. Cheaper than walking the user's import tree to detect the
140
- * already-present case.
150
+ * `CliModule` on top of a graph that already contains it is a no-op rather than an
151
+ * error or duplicate registration. Cheaper than walking the user's import tree to
152
+ * detect the already-present case.
141
153
  */
142
154
  wrapWithCliModule(appModule) {
143
155
  var _a;
@@ -160,7 +172,8 @@ export class Cli {
160
172
  const sourceHasher = new SourceHasher();
161
173
  const buildManifestReader = new BuildManifestReader();
162
174
  const buildManifestChecker = new BuildManifestChecker(sourceHasher);
163
- const buildStalenessPrompt = new BuildStalenessPrompt(dynamicImporter);
175
+ const cliPrompt = new CliPrompt(new TerminalKeyReader());
176
+ const buildStalenessPrompt = new BuildStalenessPrompt(cliPrompt);
164
177
  const buildRunner = new BuildRunner();
165
178
  return new AppModuleLoader(configLoader, pluginLoader, dynamicImporter, buildManifestReader, buildManifestChecker, buildStalenessPrompt, buildRunner);
166
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,15 @@ import { CoreModule } from "@pristine-ts/core";
3
3
  import { ValidationModule } from "@pristine-ts/validation";
4
4
  import { LoggingModule, LoggingModuleKeyname, OutputModeEnum, SeverityEnum } from "@pristine-ts/logging";
5
5
  import { DataMappingModule } from "@pristine-ts/data-mapping";
6
+ import { ObservabilityModule } from "@pristine-ts/observability";
7
+ import { BooleanResolver, EnvironmentVariableResolver } from "@pristine-ts/configuration";
8
+ import { CliConfigurationKeys } from "./cli.configuration-keys";
6
9
  export * from "./bootstrap/bootstrap";
10
+ export * from "./cli.configuration-keys";
7
11
  export * from "./commands/commands";
8
12
  export * from "./config/config";
13
+ export * from "./decorators/decorators";
14
+ export * from "./enums/enums";
9
15
  export * from "./errors/errors";
10
16
  export * from "./event-handlers/event-handlers";
11
17
  export * from "./event-payloads/event-payloads";
@@ -14,6 +20,7 @@ export * from "./managers/managers";
14
20
  export * from "./mappers/mappers";
15
21
  export * from "./options/options";
16
22
  export * from "./reporters/cli-error.reporter";
23
+ export * from "./services/services";
17
24
  export * from "./types/types";
18
25
  // Re-export the `Cli` entrypoint so `bin.ts` (and any other downstream entry script) can
19
26
  // invoke `new (require('@pristine-ts/cli').Cli)().bootstrap()` to load the same physical
@@ -22,11 +29,32 @@ export * from "./types/types";
22
29
  export { Cli } from "./cli";
23
30
  export const CliModule = {
24
31
  keyname: CliModuleKeyname,
25
- configurationDefinitions: [],
32
+ configurationDefinitions: [
33
+ /**
34
+ * Whether the CLI may interactively ask for missing command parameters that declare a
35
+ * `question` via `@commandParameter`. Defaults to enabled; turn it off (here, in
36
+ * `pristine.config.ts`, or via the env var below) to keep the CLI non-interactive.
37
+ * Prompting is also skipped automatically whenever stdin is not an interactive terminal.
38
+ */
39
+ {
40
+ parameterName: CliConfigurationKeys.InteractiveParameters,
41
+ isRequired: false,
42
+ defaultValue: true,
43
+ defaultResolvers: [
44
+ new BooleanResolver(new EnvironmentVariableResolver("PRISTINE_CLI_INTERACTIVE_PARAMETERS")),
45
+ ],
46
+ },
47
+ ],
26
48
  importModules: [
27
49
  CoreModule,
28
50
  DataMappingModule,
29
51
  LoggingModule,
52
+ // `ObservabilityModule` travels with the CLI: it backs the `logs`/`trace`/`requests`
53
+ // commands and the `pristine start` capture. Importing it here (rather than only
54
+ // wrapping it in `Cli.bootstrap`) guarantees its configuration keys are registered
55
+ // wherever `CliModule` is loaded — including when another module (e.g. `HttpModule`)
56
+ // pulls `CliModule` in transitively — so observability's `@injectConfig` always resolves.
57
+ ObservabilityModule,
30
58
  ValidationModule,
31
59
  ],
32
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cli.module.js","sourceRoot":"","sources":["../../../src/cli.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAA;AAE3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAE9B,yFAAyF;AACzF,yFAAyF;AACzF,mFAAmF;AACnF,oFAAoF;AACpF,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,SAAS,GAAoB;IACxC,OAAO,EAAE,gBAAgB;IACzB,wBAAwB,EAAE,EAAE;IAC5B,aAAa,EAAE;QACb,UAAU;QACV,iBAAiB;QACjB,aAAa;QACb,gBAAgB;KACjB;IACD;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,EAAE;QACd,CAAC,oBAAoB,GAAG,0BAA0B,CAAC,EAAE,cAAc,CAAC,MAAM;QAC1E,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,EAAE,YAAY,CAAC,IAAI;KAC7E;CACF,CAAA"}
1
+ {"version":3,"file":"cli.module.js","sourceRoot":"","sources":["../../../src/cli.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAC,eAAe,EAAE,2BAA2B,EAAC,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAE9D,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAE9B,yFAAyF;AACzF,yFAAyF;AACzF,mFAAmF;AACnF,oFAAoF;AACpF,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,SAAS,GAAoB;IACxC,OAAO,EAAE,gBAAgB;IACzB,wBAAwB,EAAE;QACxB;;;;;WAKG;QACH;YACE,aAAa,EAAE,oBAAoB,CAAC,qBAAqB;YACzD,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE;gBAChB,IAAI,eAAe,CAAC,IAAI,2BAA2B,CAAC,qCAAqC,CAAC,CAAC;aAC5F;SACF;KACF;IACD,aAAa,EAAE;QACb,UAAU;QACV,iBAAiB;QACjB,aAAa;QACb,qFAAqF;QACrF,iFAAiF;QACjF,mFAAmF;QACnF,qFAAqF;QACrF,0FAA0F;QAC1F,mBAAmB;QACnB,gBAAgB;KACjB;IACD;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,EAAE;QACd,CAAC,oBAAoB,GAAG,0BAA0B,CAAC,EAAE,cAAc,CAAC,MAAM;QAC1E,CAAC,oBAAoB,GAAG,gCAAgC,CAAC,EAAE,YAAY,CAAC,IAAI;KAC7E;CACF,CAAA"}
@@ -10,9 +10,15 @@ export * from "./init.command";
10
10
  export * from "./init.command-options";
11
11
  export * from "./list-alias.command";
12
12
  export * from "./list.command";
13
+ export * from "./logs-alias.command";
14
+ export * from "./logs.command";
15
+ export * from "./requests-alias.command";
16
+ export * from "./requests.command";
13
17
  export * from "./start-alias.command";
14
18
  export * from "./start.command";
15
19
  export * from "./start.command-options";
20
+ export * from "./trace-alias.command";
21
+ export * from "./trace.command";
16
22
  export * from "./verify-alias.command";
17
23
  export * from "./verify.command";
18
24
  //# sourceMappingURL=commands.js.map