@pristine-ts/cli 1.0.439 → 2.0.1

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 (220) hide show
  1. package/dist/bin/pristine.cjs +7 -0
  2. package/dist/lib/cjs/bin.js +15 -1
  3. package/dist/lib/cjs/bin.js.map +1 -1
  4. package/dist/lib/cjs/bootstrap/app-module-loader.js +321 -0
  5. package/dist/lib/cjs/bootstrap/app-module-loader.js.map +1 -0
  6. package/dist/lib/cjs/bootstrap/bootstrap.js +31 -0
  7. package/dist/lib/cjs/bootstrap/bootstrap.js.map +1 -0
  8. package/dist/lib/cjs/bootstrap/build-manifest-checker.js +67 -0
  9. package/dist/lib/cjs/bootstrap/build-manifest-checker.js.map +1 -0
  10. package/dist/lib/cjs/bootstrap/build-manifest-reader.js +44 -0
  11. package/dist/lib/cjs/bootstrap/build-manifest-reader.js.map +1 -0
  12. package/dist/lib/cjs/bootstrap/build-manifest-staleness.enum.js +23 -0
  13. package/dist/lib/cjs/bootstrap/build-manifest-staleness.enum.js.map +1 -0
  14. package/dist/lib/cjs/bootstrap/build-manifest-writer.js +55 -0
  15. package/dist/lib/cjs/bootstrap/build-manifest-writer.js.map +1 -0
  16. package/dist/lib/cjs/bootstrap/build-manifest.js +31 -0
  17. package/dist/lib/cjs/bootstrap/build-manifest.js.map +1 -0
  18. package/dist/lib/cjs/bootstrap/build-runner.js +44 -0
  19. package/dist/lib/cjs/bootstrap/build-runner.js.map +1 -0
  20. package/dist/lib/cjs/bootstrap/build-staleness-prompt.js +90 -0
  21. package/dist/lib/cjs/bootstrap/build-staleness-prompt.js.map +1 -0
  22. package/dist/lib/cjs/bootstrap/dynamic-importer.js +43 -0
  23. package/dist/lib/cjs/bootstrap/dynamic-importer.js.map +1 -0
  24. package/dist/lib/cjs/bootstrap/init-prompt.js +127 -0
  25. package/dist/lib/cjs/bootstrap/init-prompt.js.map +1 -0
  26. package/dist/lib/cjs/bootstrap/loaded-app-module.js +29 -0
  27. package/dist/lib/cjs/bootstrap/loaded-app-module.js.map +1 -0
  28. package/dist/lib/cjs/bootstrap/loaded-plugin.js +22 -0
  29. package/dist/lib/cjs/bootstrap/loaded-plugin.js.map +1 -0
  30. package/dist/lib/cjs/bootstrap/plugin-loader.js +149 -0
  31. package/dist/lib/cjs/bootstrap/plugin-loader.js.map +1 -0
  32. package/dist/lib/cjs/bootstrap/source-hasher.js +41 -0
  33. package/dist/lib/cjs/bootstrap/source-hasher.js.map +1 -0
  34. package/dist/lib/cjs/cli.js +94 -111
  35. package/dist/lib/cjs/cli.js.map +1 -1
  36. package/dist/lib/cjs/cli.module.js +9 -1
  37. package/dist/lib/cjs/cli.module.js.map +1 -1
  38. package/dist/lib/cjs/commands/build-alias.command.js +50 -0
  39. package/dist/lib/cjs/commands/build-alias.command.js.map +1 -0
  40. package/dist/lib/cjs/commands/build.command.js +173 -0
  41. package/dist/lib/cjs/commands/build.command.js.map +1 -0
  42. package/dist/lib/cjs/commands/commands.js +15 -0
  43. package/dist/lib/cjs/commands/commands.js.map +1 -1
  44. package/dist/lib/cjs/commands/config-print.command.js +75 -0
  45. package/dist/lib/cjs/commands/config-print.command.js.map +1 -0
  46. package/dist/lib/cjs/commands/help-alias.command.js +52 -0
  47. package/dist/lib/cjs/commands/help-alias.command.js.map +1 -0
  48. package/dist/lib/cjs/commands/help.command.js +44 -10
  49. package/dist/lib/cjs/commands/help.command.js.map +1 -1
  50. package/dist/lib/cjs/commands/info-alias.command.js +50 -0
  51. package/dist/lib/cjs/commands/info-alias.command.js.map +1 -0
  52. package/dist/lib/cjs/commands/info.command.js +162 -0
  53. package/dist/lib/cjs/commands/info.command.js.map +1 -0
  54. package/dist/lib/cjs/commands/init-alias.command.js +51 -0
  55. package/dist/lib/cjs/commands/init-alias.command.js.map +1 -0
  56. package/dist/lib/cjs/commands/init.command-options.js +53 -0
  57. package/dist/lib/cjs/commands/init.command-options.js.map +1 -0
  58. package/dist/lib/cjs/commands/init.command.js +249 -0
  59. package/dist/lib/cjs/commands/init.command.js.map +1 -0
  60. package/dist/lib/cjs/commands/list-alias.command.js +50 -0
  61. package/dist/lib/cjs/commands/list-alias.command.js.map +1 -0
  62. package/dist/lib/cjs/commands/list.command.js +7 -1
  63. package/dist/lib/cjs/commands/list.command.js.map +1 -1
  64. package/dist/lib/cjs/commands/start-alias.command.js +51 -0
  65. package/dist/lib/cjs/commands/start-alias.command.js.map +1 -0
  66. package/dist/lib/cjs/commands/start.command-options.js +34 -0
  67. package/dist/lib/cjs/commands/start.command-options.js.map +1 -0
  68. package/dist/lib/cjs/commands/start.command.js +169 -0
  69. package/dist/lib/cjs/commands/start.command.js.map +1 -0
  70. package/dist/lib/cjs/commands/verify-alias.command.js +50 -0
  71. package/dist/lib/cjs/commands/verify-alias.command.js.map +1 -0
  72. package/dist/lib/cjs/commands/verify.command.js +71 -0
  73. package/dist/lib/cjs/commands/verify.command.js.map +1 -0
  74. package/dist/lib/cjs/config/config-loader.js +136 -0
  75. package/dist/lib/cjs/config/config-loader.js.map +1 -0
  76. package/dist/lib/cjs/config/config-provenance.enum.js +15 -0
  77. package/dist/lib/cjs/config/config-provenance.enum.js.map +1 -0
  78. package/dist/lib/cjs/config/config.js +22 -0
  79. package/dist/lib/cjs/config/config.js.map +1 -0
  80. package/dist/lib/cjs/config/define-config.js +18 -0
  81. package/dist/lib/cjs/config/define-config.js.map +1 -0
  82. package/dist/lib/cjs/config/pristine-config.interface.js +3 -0
  83. package/dist/lib/cjs/config/pristine-config.interface.js.map +1 -0
  84. package/dist/lib/cjs/config/resolved-pristine-config.js +25 -0
  85. package/dist/lib/cjs/config/resolved-pristine-config.js.map +1 -0
  86. package/dist/lib/cjs/event-handlers/cli.event-handler.js +69 -48
  87. package/dist/lib/cjs/event-handlers/cli.event-handler.js.map +1 -1
  88. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  89. package/dist/lib/esm/bin.js +15 -1
  90. package/dist/lib/esm/bin.js.map +1 -1
  91. package/dist/lib/esm/bootstrap/app-module-loader.js +315 -0
  92. package/dist/lib/esm/bootstrap/app-module-loader.js.map +1 -0
  93. package/dist/lib/esm/bootstrap/bootstrap.js +15 -0
  94. package/dist/lib/esm/bootstrap/bootstrap.js.map +1 -0
  95. package/dist/lib/esm/bootstrap/build-manifest-checker.js +61 -0
  96. package/dist/lib/esm/bootstrap/build-manifest-checker.js.map +1 -0
  97. package/dist/lib/esm/bootstrap/build-manifest-reader.js +38 -0
  98. package/dist/lib/esm/bootstrap/build-manifest-reader.js.map +1 -0
  99. package/dist/lib/esm/bootstrap/build-manifest-staleness.enum.js +20 -0
  100. package/dist/lib/esm/bootstrap/build-manifest-staleness.enum.js.map +1 -0
  101. package/dist/lib/esm/bootstrap/build-manifest-writer.js +49 -0
  102. package/dist/lib/esm/bootstrap/build-manifest-writer.js.map +1 -0
  103. package/dist/lib/esm/bootstrap/build-manifest.js +27 -0
  104. package/dist/lib/esm/bootstrap/build-manifest.js.map +1 -0
  105. package/dist/lib/esm/bootstrap/build-runner.js +41 -0
  106. package/dist/lib/esm/bootstrap/build-runner.js.map +1 -0
  107. package/dist/lib/esm/bootstrap/build-staleness-prompt.js +87 -0
  108. package/dist/lib/esm/bootstrap/build-staleness-prompt.js.map +1 -0
  109. package/dist/lib/esm/bootstrap/dynamic-importer.js +40 -0
  110. package/dist/lib/esm/bootstrap/dynamic-importer.js.map +1 -0
  111. package/dist/lib/esm/bootstrap/init-prompt.js +124 -0
  112. package/dist/lib/esm/bootstrap/init-prompt.js.map +1 -0
  113. package/dist/lib/esm/bootstrap/loaded-app-module.js +25 -0
  114. package/dist/lib/esm/bootstrap/loaded-app-module.js.map +1 -0
  115. package/dist/lib/esm/bootstrap/loaded-plugin.js +18 -0
  116. package/dist/lib/esm/bootstrap/loaded-plugin.js.map +1 -0
  117. package/dist/lib/esm/bootstrap/plugin-loader.js +143 -0
  118. package/dist/lib/esm/bootstrap/plugin-loader.js.map +1 -0
  119. package/dist/lib/esm/bootstrap/source-hasher.js +35 -0
  120. package/dist/lib/esm/bootstrap/source-hasher.js.map +1 -0
  121. package/dist/lib/esm/cli.js +109 -0
  122. package/dist/lib/esm/cli.js.map +1 -0
  123. package/dist/lib/esm/cli.module.js +7 -0
  124. package/dist/lib/esm/cli.module.js.map +1 -1
  125. package/dist/lib/esm/commands/build-alias.command.js +47 -0
  126. package/dist/lib/esm/commands/build-alias.command.js.map +1 -0
  127. package/dist/lib/esm/commands/build.command.js +167 -0
  128. package/dist/lib/esm/commands/build.command.js.map +1 -0
  129. package/dist/lib/esm/commands/commands.js +15 -0
  130. package/dist/lib/esm/commands/commands.js.map +1 -1
  131. package/dist/lib/esm/commands/config-print.command.js +69 -0
  132. package/dist/lib/esm/commands/config-print.command.js.map +1 -0
  133. package/dist/lib/esm/commands/help-alias.command.js +49 -0
  134. package/dist/lib/esm/commands/help-alias.command.js.map +1 -0
  135. package/dist/lib/esm/commands/help.command.js +44 -10
  136. package/dist/lib/esm/commands/help.command.js.map +1 -1
  137. package/dist/lib/esm/commands/info-alias.command.js +47 -0
  138. package/dist/lib/esm/commands/info-alias.command.js.map +1 -0
  139. package/dist/lib/esm/commands/info.command.js +156 -0
  140. package/dist/lib/esm/commands/info.command.js.map +1 -0
  141. package/dist/lib/esm/commands/init-alias.command.js +48 -0
  142. package/dist/lib/esm/commands/init-alias.command.js.map +1 -0
  143. package/dist/lib/esm/commands/init.command-options.js +49 -0
  144. package/dist/lib/esm/commands/init.command-options.js.map +1 -0
  145. package/dist/lib/esm/commands/init.command.js +243 -0
  146. package/dist/lib/esm/commands/init.command.js.map +1 -0
  147. package/dist/lib/esm/commands/list-alias.command.js +47 -0
  148. package/dist/lib/esm/commands/list-alias.command.js.map +1 -0
  149. package/dist/lib/esm/commands/list.command.js +8 -2
  150. package/dist/lib/esm/commands/list.command.js.map +1 -1
  151. package/dist/lib/esm/commands/start-alias.command.js +48 -0
  152. package/dist/lib/esm/commands/start-alias.command.js.map +1 -0
  153. package/dist/lib/esm/commands/start.command-options.js +30 -0
  154. package/dist/lib/esm/commands/start.command-options.js.map +1 -0
  155. package/dist/lib/esm/commands/start.command.js +166 -0
  156. package/dist/lib/esm/commands/start.command.js.map +1 -0
  157. package/dist/lib/esm/commands/verify-alias.command.js +47 -0
  158. package/dist/lib/esm/commands/verify-alias.command.js.map +1 -0
  159. package/dist/lib/esm/commands/verify.command.js +68 -0
  160. package/dist/lib/esm/commands/verify.command.js.map +1 -0
  161. package/dist/lib/esm/config/config-loader.js +130 -0
  162. package/dist/lib/esm/config/config-loader.js.map +1 -0
  163. package/dist/lib/esm/config/config-provenance.enum.js +12 -0
  164. package/dist/lib/esm/config/config-provenance.enum.js.map +1 -0
  165. package/dist/lib/esm/config/config.js +6 -0
  166. package/dist/lib/esm/config/config.js.map +1 -0
  167. package/dist/lib/esm/config/define-config.js +14 -0
  168. package/dist/lib/esm/config/define-config.js.map +1 -0
  169. package/dist/lib/esm/config/pristine-config.interface.js +2 -0
  170. package/dist/lib/esm/config/pristine-config.interface.js.map +1 -0
  171. package/dist/lib/esm/config/resolved-pristine-config.js +21 -0
  172. package/dist/lib/esm/config/resolved-pristine-config.js.map +1 -0
  173. package/dist/lib/esm/event-handlers/cli.event-handler.js +69 -48
  174. package/dist/lib/esm/event-handlers/cli.event-handler.js.map +1 -1
  175. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
  176. package/dist/types/bootstrap/app-module-loader.d.ts +83 -0
  177. package/dist/types/bootstrap/bootstrap.d.ts +14 -0
  178. package/dist/types/bootstrap/build-manifest-checker.d.ts +19 -0
  179. package/dist/types/bootstrap/build-manifest-reader.d.ts +14 -0
  180. package/dist/types/bootstrap/build-manifest-staleness.enum.d.ts +18 -0
  181. package/dist/types/bootstrap/build-manifest-writer.d.ts +19 -0
  182. package/dist/types/bootstrap/build-manifest.d.ts +29 -0
  183. package/dist/types/bootstrap/build-runner.d.ts +16 -0
  184. package/dist/types/bootstrap/build-staleness-prompt.d.ts +27 -0
  185. package/dist/types/bootstrap/dynamic-importer.d.ts +13 -0
  186. package/dist/types/bootstrap/init-prompt.d.ts +38 -0
  187. package/dist/types/bootstrap/loaded-app-module.d.ts +40 -0
  188. package/dist/types/bootstrap/loaded-plugin.d.ts +20 -0
  189. package/dist/types/bootstrap/plugin-loader.d.ts +35 -0
  190. package/dist/types/bootstrap/source-hasher.d.ts +15 -0
  191. package/dist/types/cli.d.ts +12 -0
  192. package/dist/types/cli.module.d.ts +3 -0
  193. package/dist/types/commands/build-alias.command.d.ts +15 -0
  194. package/dist/types/commands/build.command.d.ts +47 -0
  195. package/dist/types/commands/commands.d.ts +15 -0
  196. package/dist/types/commands/config-print.command.d.ts +18 -0
  197. package/dist/types/commands/help-alias.command.d.ts +17 -0
  198. package/dist/types/commands/help.command.d.ts +19 -1
  199. package/dist/types/commands/info-alias.command.d.ts +15 -0
  200. package/dist/types/commands/info.command.d.ts +41 -0
  201. package/dist/types/commands/init-alias.command.d.ts +16 -0
  202. package/dist/types/commands/init.command-options.d.ts +22 -0
  203. package/dist/types/commands/init.command.d.ts +60 -0
  204. package/dist/types/commands/list-alias.command.d.ts +15 -0
  205. package/dist/types/commands/list.command.d.ts +6 -0
  206. package/dist/types/commands/start-alias.command.d.ts +16 -0
  207. package/dist/types/commands/start.command-options.d.ts +11 -0
  208. package/dist/types/commands/start.command.d.ts +47 -0
  209. package/dist/types/commands/verify-alias.command.d.ts +15 -0
  210. package/dist/types/commands/verify.command.d.ts +24 -0
  211. package/dist/types/config/config-loader.d.ts +40 -0
  212. package/dist/types/config/config-provenance.enum.d.ts +10 -0
  213. package/dist/types/config/config.d.ts +5 -0
  214. package/dist/types/config/define-config.d.ts +14 -0
  215. package/dist/types/config/pristine-config.interface.d.ts +67 -0
  216. package/dist/types/config/resolved-pristine-config.d.ts +28 -0
  217. package/dist/types/event-handlers/cli.event-handler.d.ts +30 -3
  218. package/dist/types/interfaces/command.interface.d.ts +31 -3
  219. package/package.json +16 -12
  220. package/readme.md +1023 -17
@@ -0,0 +1,50 @@
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.VerifyAliasCommand = void 0;
22
+ const common_1 = require("@pristine-ts/common");
23
+ const tsyringe_1 = require("tsyringe");
24
+ const cli_module_keyname_1 = require("../cli.module.keyname");
25
+ const verify_command_1 = require("./verify.command");
26
+ /**
27
+ * Top-level alias for the framework-reserved `p:verify` command. Injects the delegate
28
+ * directly via standard DI.
29
+ */
30
+ let VerifyAliasCommand = class VerifyAliasCommand {
31
+ constructor(delegate) {
32
+ this.delegate = delegate;
33
+ this.optionsType = null;
34
+ this.name = "verify";
35
+ this.description = "Alias for p:verify.";
36
+ }
37
+ run(args) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ return this.delegate.run(args);
40
+ });
41
+ }
42
+ };
43
+ exports.VerifyAliasCommand = VerifyAliasCommand;
44
+ exports.VerifyAliasCommand = VerifyAliasCommand = __decorate([
45
+ (0, common_1.tag)(common_1.ServiceDefinitionTagEnum.Command),
46
+ (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
47
+ (0, tsyringe_1.injectable)(),
48
+ __metadata("design:paramtypes", [verify_command_1.VerifyCommand])
49
+ ], VerifyAliasCommand);
50
+ //# sourceMappingURL=verify-alias.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-alias.command.js","sourceRoot":"","sources":["../../../../src/commands/verify-alias.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,gDAAgF;AAChF,uCAAoC;AAGpC,8DAAuD;AACvD,qDAA+C;AAE/C;;;GAGG;AAII,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAK7B,YAA6B,QAAuB;QAAvB,aAAQ,GAAR,QAAQ,CAAe;QAJpD,gBAAW,GAAG,IAAI,CAAC;QACnB,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,qBAAqB,CAAC;IAGpC,CAAC;IAEK,GAAG,CAAC,IAAS;;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;KAAA;CACF,CAAA;AAXY,gDAAkB;6BAAlB,kBAAkB;IAH9B,IAAA,YAAG,EAAC,iCAAwB,CAAC,OAAO,CAAC;IACrC,IAAA,qBAAY,EAAC,qCAAgB,CAAC;IAC9B,IAAA,qBAAU,GAAE;qCAM4B,8BAAa;GALzC,kBAAkB,CAW9B"}
@@ -0,0 +1,71 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.VerifyCommand = void 0;
25
+ const common_1 = require("@pristine-ts/common");
26
+ const tsyringe_1 = require("tsyringe");
27
+ const core_1 = require("@pristine-ts/core");
28
+ const exit_code_enum_1 = require("../enums/exit-code.enum");
29
+ const cli_module_keyname_1 = require("../cli.module.keyname");
30
+ const app_module_loader_1 = require("../bootstrap/app-module-loader");
31
+ /**
32
+ * Verifies that the consumer's AppModule can be instantiated against its configuration.
33
+ * Builds a fresh throw-away kernel, runs every boot phase capturing per-phase outcomes,
34
+ * executes every embedder-registered `InstantiationTestInterface`, and routes the resulting
35
+ * report through the project's `LogHandlerInterface`.
36
+ *
37
+ * Note: this command runs after the CLI's own `kernel.start()` has succeeded, so it cannot
38
+ * be used to debug a configuration that is so broken the CLI can't start. For that case,
39
+ * call `kernel.verifyInstantiation(...)` directly from a small script that imports your
40
+ * AppModule.
41
+ */
42
+ let VerifyCommand = class VerifyCommand {
43
+ constructor(logHandler, appModuleLoader) {
44
+ this.logHandler = logHandler;
45
+ this.appModuleLoader = appModuleLoader;
46
+ this.optionsType = null;
47
+ this.name = "p:verify";
48
+ this.description = "Verify the AppModule boots cleanly and run all registered InstantiationTests.";
49
+ }
50
+ run(args) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const skipTests = (args === null || args === void 0 ? void 0 : args["skip-tests"]) === true || (args === null || args === void 0 ? void 0 : args.skipTests) === true;
53
+ const { appModule, configuration } = yield this.appModuleLoader.load();
54
+ const kernel = new core_1.Kernel();
55
+ const report = yield kernel.verifyInstantiation(appModule, configuration, {
56
+ runInstantiationTests: !skipTests,
57
+ });
58
+ report.log(this.logHandler);
59
+ return report.hasErrors ? exit_code_enum_1.ExitCodeEnum.Error : exit_code_enum_1.ExitCodeEnum.Success;
60
+ });
61
+ }
62
+ };
63
+ exports.VerifyCommand = VerifyCommand;
64
+ exports.VerifyCommand = VerifyCommand = __decorate([
65
+ (0, common_1.tag)(common_1.ServiceDefinitionTagEnum.Command),
66
+ (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
67
+ (0, tsyringe_1.injectable)(),
68
+ __param(0, (0, tsyringe_1.inject)("LogHandlerInterface")),
69
+ __metadata("design:paramtypes", [Object, app_module_loader_1.AppModuleLoader])
70
+ ], VerifyCommand);
71
+ //# sourceMappingURL=verify.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.command.js","sourceRoot":"","sources":["../../../../src/commands/verify.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAgF;AAChF,uCAA4C;AAC5C,4CAAyC;AAGzC,4DAAqD;AACrD,8DAAuD;AACvD,sEAA+D;AAE/D;;;;;;;;;;GAUG;AAII,IAAM,aAAa,GAAnB,MAAM,aAAa;IAKxB,YACiC,UAAgD,EAC9D,eAAgC;QADD,eAAU,GAAV,UAAU,CAAqB;QAC9D,oBAAe,GAAf,eAAe,CAAiB;QANnD,gBAAW,GAAG,IAAI,CAAC;QACnB,SAAI,GAAG,UAAU,CAAC;QAClB,gBAAW,GAAG,+EAA+E,CAAC;IAM9F,CAAC;IAEK,GAAG,CAAC,IAAS;;YACjB,MAAM,SAAS,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,YAAY,CAAC,MAAK,IAAI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAK,IAAI,CAAC;YAE5E,MAAM,EAAC,SAAS,EAAE,aAAa,EAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAErE,MAAM,MAAM,GAAG,IAAI,aAAM,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE;gBACxE,qBAAqB,EAAE,CAAC,SAAS;aAClC,CAAC,CAAC;YAEH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE5B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,6BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,6BAAY,CAAC,OAAO,CAAC;QACtE,CAAC;KAAA;CACF,CAAA;AAzBY,sCAAa;wBAAb,aAAa;IAHzB,IAAA,YAAG,EAAC,iCAAwB,CAAC,OAAO,CAAC;IACrC,IAAA,qBAAY,EAAC,qCAAgB,CAAC;IAC9B,IAAA,qBAAU,GAAE;IAOR,WAAA,IAAA,iBAAM,EAAC,qBAAqB,CAAC,CAAA;6CACI,mCAAe;GAPxC,aAAa,CAyBzB"}
@@ -0,0 +1,136 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.ConfigLoader = void 0;
25
+ const tsyringe_1 = require("tsyringe");
26
+ const fs_1 = __importDefault(require("fs"));
27
+ const path_1 = __importDefault(require("path"));
28
+ const config_provenance_enum_1 = require("./config-provenance.enum");
29
+ const resolved_pristine_config_1 = require("./resolved-pristine-config");
30
+ const dynamic_importer_1 = require("../bootstrap/dynamic-importer");
31
+ /**
32
+ * Loads `pristine.config.ts` (preferred) or `pristine.config.js` (escape hatch for
33
+ * pure-JS projects). Walks up from `process.cwd()` looking for the file, then loads it
34
+ * through `jiti` (for `.ts`) or Node's dynamic `import()` (for `.js`).
35
+ *
36
+ * Returns a `ResolvedPristineConfig` carrying the file path (when found) and per-field
37
+ * provenance, which `pristine p:config:print` uses to render an annotated dump.
38
+ */
39
+ let ConfigLoader = class ConfigLoader {
40
+ constructor(dynamicImporter) {
41
+ this.dynamicImporter = dynamicImporter;
42
+ /**
43
+ * File names searched for, in order. `.ts` is the canonical form — `defineConfig()`
44
+ * gives full IDE autocomplete and every Pristine project ships a TS toolchain anyway.
45
+ * `.js` is the escape hatch for the rare pure-JS project that cannot have a `.ts`
46
+ * file at the root.
47
+ */
48
+ this.configFileNames = [
49
+ "pristine.config.ts",
50
+ "pristine.config.js",
51
+ ];
52
+ }
53
+ load(options) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ var _a;
56
+ const startDir = (_a = options === null || options === void 0 ? void 0 : options.startDir) !== null && _a !== void 0 ? _a : process.cwd();
57
+ let configFilePath;
58
+ if ((options === null || options === void 0 ? void 0 : options.explicitPath) !== undefined) {
59
+ const abs = path_1.default.resolve(startDir, options.explicitPath);
60
+ if (fs_1.default.existsSync(abs) === false) {
61
+ throw new Error(`[pristine] Config file not found: '${options.explicitPath}' (resolved to '${abs}')`);
62
+ }
63
+ configFilePath = abs;
64
+ }
65
+ else {
66
+ configFilePath = this.findConfigFile(startDir);
67
+ }
68
+ if (configFilePath === undefined) {
69
+ return new resolved_pristine_config_1.ResolvedPristineConfig({}, undefined, {});
70
+ }
71
+ const config = yield this.importConfigFile(configFilePath);
72
+ const provenance = {};
73
+ for (const key of Object.keys(config)) {
74
+ provenance[key] = config_provenance_enum_1.ConfigProvenanceEnum.ConfigFile;
75
+ }
76
+ return new resolved_pristine_config_1.ResolvedPristineConfig(config, configFilePath, provenance);
77
+ });
78
+ }
79
+ /**
80
+ * Walks up from `startDir` looking for a config file with any of the supported names.
81
+ * Stops at the first match, returning the absolute path. Stops at the filesystem root
82
+ * without finding anything → returns undefined. Walking up matters in monorepos: a CLI
83
+ * invoked in `packages/foo/` should still find a `pristine.config.ts` at the repo root.
84
+ * @private
85
+ */
86
+ findConfigFile(startDir) {
87
+ let current = path_1.default.resolve(startDir);
88
+ while (true) {
89
+ for (const name of this.configFileNames) {
90
+ const candidate = path_1.default.join(current, name);
91
+ if (fs_1.default.existsSync(candidate) && fs_1.default.statSync(candidate).isFile()) {
92
+ return candidate;
93
+ }
94
+ }
95
+ const parent = path_1.default.dirname(current);
96
+ // path.dirname of root === root; we've hit the filesystem boundary.
97
+ if (parent === current)
98
+ return undefined;
99
+ current = parent;
100
+ }
101
+ }
102
+ /**
103
+ * Loads a config file from `absolutePath`. `.ts` goes through `jiti`; `.js` uses Node's
104
+ * native dynamic `import()`. Extracts the default export, falling back to a named
105
+ * `pristineConfig` export for users who prefer not to use `export default`.
106
+ * @private
107
+ */
108
+ importConfigFile(absolutePath) {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ var _a, _b, _c, _d;
111
+ const ext = path_1.default.extname(absolutePath).toLowerCase();
112
+ let loaded;
113
+ if (ext === ".ts") {
114
+ const jitiModule = yield this.dynamicImporter.import("jiti");
115
+ const createJiti = (_b = (_a = jitiModule.default) !== null && _a !== void 0 ? _a : jitiModule.createJiti) !== null && _b !== void 0 ? _b : jitiModule;
116
+ const jiti = createJiti(absolutePath, { interopDefault: true });
117
+ loaded = jiti(absolutePath);
118
+ }
119
+ else {
120
+ loaded = yield this.dynamicImporter.import(`file://${absolutePath}`);
121
+ }
122
+ const config = (_d = (_c = loaded === null || loaded === void 0 ? void 0 : loaded.default) !== null && _c !== void 0 ? _c : loaded === null || loaded === void 0 ? void 0 : loaded.pristineConfig) !== null && _d !== void 0 ? _d : loaded;
123
+ if (!config || typeof config !== "object") {
124
+ throw new Error(`[pristine] Config file at '${absolutePath}' did not export a valid configuration. ` +
125
+ `Use \`export default defineConfig({ ... })\` or \`export const pristineConfig = { ... }\`.`);
126
+ }
127
+ return config;
128
+ });
129
+ }
130
+ };
131
+ exports.ConfigLoader = ConfigLoader;
132
+ exports.ConfigLoader = ConfigLoader = __decorate([
133
+ (0, tsyringe_1.injectable)(),
134
+ __metadata("design:paramtypes", [dynamic_importer_1.DynamicImporter])
135
+ ], ConfigLoader);
136
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../../src/config/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigProvenanceEnum = void 0;
4
+ /**
5
+ * Where a resolved configuration value originated. Used by `pristine p:config:print` to
6
+ * annotate output so users can tell whether a value comes from their config file, a
7
+ * deprecated `package.json` field, or the CLI's built-in defaults.
8
+ */
9
+ var ConfigProvenanceEnum;
10
+ (function (ConfigProvenanceEnum) {
11
+ ConfigProvenanceEnum["ConfigFile"] = "config-file";
12
+ ConfigProvenanceEnum["PackageJsonDeprecated"] = "package-json-deprecated";
13
+ ConfigProvenanceEnum["Default"] = "default";
14
+ })(ConfigProvenanceEnum || (exports.ConfigProvenanceEnum = ConfigProvenanceEnum = {}));
15
+ //# sourceMappingURL=config-provenance.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-provenance.enum.js","sourceRoot":"","sources":["../../../../src/config/config-provenance.enum.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,kDAA0B,CAAA;IAC1B,yEAAiD,CAAA;IACjD,2CAAmB,CAAA;AACrB,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B"}
@@ -0,0 +1,22 @@
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("./config-loader"), exports);
18
+ __exportStar(require("./config-provenance.enum"), exports);
19
+ __exportStar(require("./define-config"), exports);
20
+ __exportStar(require("./pristine-config.interface"), exports);
21
+ __exportStar(require("./resolved-pristine-config"), exports);
22
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/config/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,2DAAyC;AACzC,kDAAgC;AAChC,8DAA4C;AAC5C,6DAA2C"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineConfig = void 0;
4
+ /**
5
+ * Identity helper that gives an authored `pristine.config.ts` full type checking and
6
+ * autocomplete. Implementation is intentionally trivial — the types do all the work.
7
+ *
8
+ * ```ts
9
+ * import {defineConfig} from "@pristine-ts/cli";
10
+ *
11
+ * export default defineConfig({
12
+ * appModule: { path: "dist/app.module.js" },
13
+ * });
14
+ * ```
15
+ */
16
+ const defineConfig = (config) => config;
17
+ exports.defineConfig = defineConfig;
18
+ //# sourceMappingURL=define-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-config.js","sourceRoot":"","sources":["../../../../src/config/define-config.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;GAWG;AACI,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAkB,EAAE,CAAC,MAAM,CAAC;AAAlE,QAAA,YAAY,gBAAsD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pristine-config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pristine-config.interface.js","sourceRoot":"","sources":["../../../../src/config/pristine-config.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvedPristineConfig = void 0;
4
+ /**
5
+ * A loaded `PristineConfig` augmented with discovery metadata. `ConfigLoader` returns this
6
+ * shape; the raw `PristineConfig` is what users author.
7
+ */
8
+ class ResolvedPristineConfig {
9
+ constructor(config,
10
+ /** Absolute path to the config file that was loaded, if any. */
11
+ configFilePath,
12
+ /**
13
+ * Per-top-level-field provenance markers, mainly for `pristine p:config:print`. Keys are
14
+ * top-level fields of `PristineConfig` (`appModule`, `build`, `start`, `plugins`,
15
+ * `kernelConfiguration`); values are the `ConfigProvenanceEnum` describing where each
16
+ * came from.
17
+ */
18
+ provenance) {
19
+ this.config = config;
20
+ this.configFilePath = configFilePath;
21
+ this.provenance = provenance;
22
+ }
23
+ }
24
+ exports.ResolvedPristineConfig = ResolvedPristineConfig;
25
+ //# sourceMappingURL=resolved-pristine-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolved-pristine-config.js","sourceRoot":"","sources":["../../../../src/config/resolved-pristine-config.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,sBAAsB;IACjC,YACkB,MAAsB;IACtC,gEAAgE;IAChD,cAAkC;IAClD;;;;;OAKG;IACa,UAAgD;QAThD,WAAM,GAAN,MAAM,CAAgB;QAEtB,mBAAc,GAAd,cAAc,CAAoB;QAOlC,eAAU,GAAV,UAAU,CAAsC;IAElE,CAAC;CACF;AAdD,wDAcC"}
@@ -24,76 +24,98 @@ Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.CliEventHandler = void 0;
25
25
  const tsyringe_1 = require("tsyringe");
26
26
  const command_event_payload_1 = require("../event-payloads/command.event-payload");
27
- const command_event_response_type_1 = require("../types/command-event-response.type");
28
27
  const common_1 = require("@pristine-ts/common");
29
28
  const command_not_found_error_1 = require("../errors/command-not-found.error");
30
29
  const class_validator_1 = require("@pristine-ts/class-validator");
31
30
  const console_manager_1 = require("../managers/console.manager");
32
31
  const exit_code_enum_1 = require("../enums/exit-code.enum");
33
32
  const cli_module_keyname_1 = require("../cli.module.keyname");
34
- const data_mapping_common_1 = require("@pristine-ts/data-mapping-common");
33
+ const class_transformer_1 = require("class-transformer");
35
34
  let CliEventHandler = class CliEventHandler {
36
- constructor(logHandler, validator, consoleManager, dataMapper, commands) {
35
+ constructor(logHandler, validator, consoleManager, commands) {
37
36
  this.logHandler = logHandler;
38
37
  this.validator = validator;
39
38
  this.consoleManager = consoleManager;
40
- this.dataMapper = dataMapper;
41
39
  this.commands = commands;
42
40
  }
43
41
  handle(event) {
44
42
  return __awaiter(this, void 0, void 0, function* () {
45
- // Check if a command is matched
46
- const command = this.commands.find(command => command.name === event.payload.name);
43
+ var _a;
44
+ const command = this.commands.find(c => c.name === event.payload.name);
47
45
  if (command === undefined) {
48
46
  throw new command_not_found_error_1.CommandNotFoundError(event.payload.name);
49
47
  }
50
- let mappedArguments;
51
- if (event.payload.arguments !== undefined) {
52
- try {
53
- mappedArguments = yield this.dataMapper.autoMap(event.payload.arguments, command.optionsType, new data_mapping_common_1.AutoDataMappingBuilderOptions({
54
- isOptionalDefaultValue: true,
55
- excludeExtraneousValues: false,
56
- }));
57
- }
58
- catch (e) {
59
- // Trying without the arguments being mapped.
60
- mappedArguments = event.payload.arguments;
61
- }
48
+ const resolution = yield this.resolveArgs(command, (_a = event.payload.arguments) !== null && _a !== void 0 ? _a : {});
49
+ if (resolution.exitCode !== undefined) {
50
+ // Mapping or validation failed. Already-rendered errors are on the console.
51
+ this.logExitStatus(event.payload.name, resolution.exitCode);
52
+ process.exit(resolution.exitCode);
53
+ }
54
+ const exitCode = yield command.run(resolution.args);
55
+ this.logExitStatus(event.payload.name, exitCode);
56
+ process.exit(exitCode);
57
+ });
58
+ }
59
+ /**
60
+ * Maps `rawArgs` (the parsed argv shape produced by `CommandEventMapper`) into a typed
61
+ * instance of `command.optionsType`, then runs `class-validator` against the instance.
62
+ *
63
+ * For commands that opt out of typed options (`optionsType === null`), passes the raw
64
+ * args through unchanged — the legacy escape hatch for commands that want to handle
65
+ * argv parsing themselves.
66
+ *
67
+ * Mapping or validation failures print the underlying error to the console and return an
68
+ * `exitCode` so the caller can exit non-zero. Success returns the typed instance under
69
+ * `args`. The two are mutually exclusive — see `ResolvedCommandArgs`.
70
+ */
71
+ resolveArgs(command, rawArgs) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ if (command.optionsType === null) {
74
+ return { args: rawArgs };
62
75
  }
63
- // Validates if all the conditions are respected in the expected type.
64
- const errors = yield this.validator.validate(mappedArguments);
65
- if (errors.length !== 0) {
66
- // list the errors and return
67
- errors.forEach(error => {
68
- this.consoleManager.writeLine("Errors with argument '" + error.property + "'. The following constraints failed:");
69
- for (const constraint in error.constraints) {
70
- const message = error.constraints[constraint];
71
- this.consoleManager.writeLine("/t/t- [" + constraint + "]: " + message);
72
- }
73
- });
74
- return new command_event_response_type_1.CommandEventResponse(event, exit_code_enum_1.ExitCodeEnum.Error);
76
+ let mapped;
77
+ try {
78
+ // class-transformer's plainToInstance is what produces a real instance of the
79
+ // options class (with the prototype, decorator metadata, and class-validator hooks
80
+ // intact). DataMapper.autoMap would return a plain object instead, which causes
81
+ // class-validator to silently report no errors because it can't find decorator
82
+ // metadata on a non-instance — exactly the bug this rewrite fixes.
83
+ mapped = (0, class_transformer_1.plainToInstance)(command.optionsType, rawArgs);
75
84
  }
76
- // Execute the command
77
- const exitCode = yield command.run(
78
- // @ts-ignore Needs to be ignored since we know we are casting it into the expected type.
79
- mappedArguments);
80
- // Log the status and the command
81
- let status;
82
- switch (exitCode) {
83
- case exit_code_enum_1.ExitCodeEnum.Success:
84
- status = "Success";
85
- break;
86
- default:
87
- status = "Error";
88
- break;
85
+ catch (error) {
86
+ this.consoleManager.writeError(`Failed to map CLI arguments to '${command.optionsType.name}': ${error.message}`);
87
+ return { exitCode: exit_code_enum_1.ExitCodeEnum.Error };
89
88
  }
90
- this.consoleManager.writeLine(`[status:'${status}', code:'${exitCode}'] - Command '` + event.payload.name + "' exited.");
91
- process.exit(exitCode);
89
+ const validationErrors = yield this.validator.validate(mapped);
90
+ if (validationErrors.length === 0) {
91
+ return { args: mapped };
92
+ }
93
+ for (const error of validationErrors) {
94
+ this.consoleManager.writeLine(`Errors with argument '${error.property}'. The following constraints failed:`);
95
+ for (const constraintKey in error.constraints) {
96
+ // `@pristine-ts/class-validator` stores constraints as `{keyname, message}` objects
97
+ // rather than the plain strings vanilla class-validator uses. Extract the message
98
+ // when present, falling back to JSON for unknown shapes so we never print
99
+ // `[object Object]`.
100
+ const constraint = error.constraints[constraintKey];
101
+ const message = typeof constraint === "string"
102
+ ? constraint
103
+ : (constraint && typeof constraint === "object" && typeof constraint.message === "string")
104
+ ? constraint.message
105
+ : JSON.stringify(constraint);
106
+ this.consoleManager.writeLine(`\t- [${constraintKey}]: ${message}`);
107
+ }
108
+ }
109
+ return { exitCode: exit_code_enum_1.ExitCodeEnum.Error };
92
110
  });
93
111
  }
94
112
  supports(event) {
95
113
  return event.payload instanceof command_event_payload_1.CommandEventPayload;
96
114
  }
115
+ logExitStatus(commandName, exitCode) {
116
+ const status = exitCode === exit_code_enum_1.ExitCodeEnum.Success ? "Success" : "Error";
117
+ this.consoleManager.writeLine(`[status:'${status}', code:'${exitCode}'] - Command '${commandName}' exited.`);
118
+ }
97
119
  };
98
120
  exports.CliEventHandler = CliEventHandler;
99
121
  exports.CliEventHandler = CliEventHandler = __decorate([
@@ -101,9 +123,8 @@ exports.CliEventHandler = CliEventHandler = __decorate([
101
123
  (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
102
124
  (0, tsyringe_1.injectable)(),
103
125
  __param(0, (0, tsyringe_1.inject)("LogHandlerInterface")),
104
- __param(4, (0, tsyringe_1.injectAll)(common_1.ServiceDefinitionTagEnum.Command)),
126
+ __param(3, (0, tsyringe_1.injectAll)(common_1.ServiceDefinitionTagEnum.Command)),
105
127
  __metadata("design:paramtypes", [Object, class_validator_1.Validator,
106
- console_manager_1.ConsoleManager,
107
- data_mapping_common_1.DataMapper, Array])
128
+ console_manager_1.ConsoleManager, Array])
108
129
  ], CliEventHandler);
109
130
  //# sourceMappingURL=cli.event-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cli.event-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cli.event-handler.ts"],"names":[],"mappings":"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"}