@pristine-ts/cli 1.0.440 → 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 -13
  220. package/readme.md +1023 -17
@@ -0,0 +1,156 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import fs from "fs";
20
+ import os from "os";
21
+ import path from "path";
22
+ import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
23
+ import { injectable } from "tsyringe";
24
+ import { ConsoleManager } from "../managers/console.manager";
25
+ import { ExitCodeEnum } from "../enums/exit-code.enum";
26
+ import { CliModuleKeyname } from "../cli.module.keyname";
27
+ import { ConfigLoader } from "../config/config-loader";
28
+ import { AppModuleLoader } from "../bootstrap/app-module-loader";
29
+ /**
30
+ * Diagnostic command. Prints framework version, runtime environment, resolved config +
31
+ * AppModule locations, the recursively-resolved list of imported modules, and the list of
32
+ * loaded plugins. Designed for support tickets and "is my project picking up what I think
33
+ * it's picking up?" sanity checks.
34
+ *
35
+ * Does not boot a fresh kernel — it inspects what *would* be loaded by re-running the
36
+ * loader cascade, so it remains useful even when the AppModule is broken in a way that
37
+ * prevents `kernel.start()`.
38
+ */
39
+ let InfoCommand = class InfoCommand {
40
+ constructor(consoleManager, configLoader, appModuleLoader) {
41
+ this.consoleManager = consoleManager;
42
+ this.configLoader = configLoader;
43
+ this.appModuleLoader = appModuleLoader;
44
+ this.optionsType = null;
45
+ this.name = "p:info";
46
+ this.description = "Print framework version, runtime environment, and the loaded module graph.";
47
+ /**
48
+ * Resolved at command construction time so `pristine info` reports the version of the cli
49
+ * that's actually running, not whatever happens to live in the user's project root. The
50
+ * package.json sits four levels up from dist/lib/cjs/commands/.
51
+ */
52
+ this.cliPackageJsonPath = path.resolve(__dirname, "..", "..", "..", "..", "package.json");
53
+ }
54
+ run(args) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ this.printRuntimeBanner();
57
+ yield this.printConfigSection();
58
+ return this.printAppModuleSection();
59
+ });
60
+ }
61
+ printRuntimeBanner() {
62
+ this.consoleManager.writeLine("Pristine CLI");
63
+ this.consoleManager.writeLine(` Version: ${this.readCliVersion()}`);
64
+ this.consoleManager.writeLine(` Node: ${process.version}`);
65
+ this.consoleManager.writeLine(` Platform: ${os.platform()} ${os.arch()} (${os.release()})`);
66
+ this.consoleManager.writeLine(` CWD: ${process.cwd()}`);
67
+ this.consoleManager.writeLine("");
68
+ }
69
+ printConfigSection() {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ var _a, _b, _c;
72
+ const resolvedConfig = yield this.configLoader.load({ startDir: process.cwd() });
73
+ this.consoleManager.writeLine("Configuration");
74
+ this.consoleManager.writeLine(` Config file: ${(_a = resolvedConfig.configFilePath) !== null && _a !== void 0 ? _a : "(none — using defaults)"}`);
75
+ if (((_b = resolvedConfig.config.appModule) === null || _b === void 0 ? void 0 : _b.sourcePath) !== undefined) {
76
+ this.consoleManager.writeLine(` AppModule src: ${resolvedConfig.config.appModule.sourcePath} (from config file)`);
77
+ }
78
+ if (((_c = resolvedConfig.config.appModule) === null || _c === void 0 ? void 0 : _c.outputPath) !== undefined) {
79
+ this.consoleManager.writeLine(` AppModule out: ${resolvedConfig.config.appModule.outputPath} (from config file)`);
80
+ }
81
+ this.consoleManager.writeLine("");
82
+ });
83
+ }
84
+ printAppModuleSection() {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ let modules = [];
87
+ let pluginNames = [];
88
+ try {
89
+ const loaded = yield this.appModuleLoader.load();
90
+ modules = this.collectModules(loaded.appModule);
91
+ pluginNames = loaded.plugins.map(p => p.name);
92
+ this.consoleManager.writeLine(`AppModule: ${loaded.appModule.keyname}`);
93
+ }
94
+ catch (error) {
95
+ this.consoleManager.writeError(`Could not load AppModule: ${error.message}`);
96
+ return ExitCodeEnum.Error;
97
+ }
98
+ if (pluginNames.length > 0) {
99
+ this.consoleManager.writeLine(`Plugins (${pluginNames.length}):`);
100
+ for (const name of pluginNames) {
101
+ this.consoleManager.writeLine(` - ${name}`);
102
+ }
103
+ }
104
+ this.consoleManager.writeLine(`Imported modules (${modules.length}):`);
105
+ const uniqueByKeyname = new Map();
106
+ for (const m of modules) {
107
+ uniqueByKeyname.set(m.keyname, m);
108
+ }
109
+ for (const m of [...uniqueByKeyname.values()].sort((a, b) => a.keyname.localeCompare(b.keyname))) {
110
+ this.consoleManager.writeLine(` - ${m.keyname}`);
111
+ }
112
+ return ExitCodeEnum.Success;
113
+ });
114
+ }
115
+ readCliVersion() {
116
+ var _a;
117
+ try {
118
+ const pkg = JSON.parse(fs.readFileSync(this.cliPackageJsonPath, "utf8"));
119
+ return (_a = pkg.version) !== null && _a !== void 0 ? _a : "unknown";
120
+ }
121
+ catch (_b) {
122
+ return "unknown";
123
+ }
124
+ }
125
+ /**
126
+ * Walks the import tree, returning every module reachable from the root. Visits each
127
+ * module at most once via a keyname-keyed seen-set so circular imports don't loop.
128
+ * @private
129
+ */
130
+ collectModules(root) {
131
+ const seen = new Set();
132
+ const flat = [];
133
+ const walk = (m) => {
134
+ if (seen.has(m.keyname))
135
+ return;
136
+ seen.add(m.keyname);
137
+ flat.push(m);
138
+ if (m.importModules) {
139
+ for (const child of m.importModules)
140
+ walk(child);
141
+ }
142
+ };
143
+ walk(root);
144
+ return flat;
145
+ }
146
+ };
147
+ InfoCommand = __decorate([
148
+ tag(ServiceDefinitionTagEnum.Command),
149
+ moduleScoped(CliModuleKeyname),
150
+ injectable(),
151
+ __metadata("design:paramtypes", [ConsoleManager,
152
+ ConfigLoader,
153
+ AppModuleLoader])
154
+ ], InfoCommand);
155
+ export { InfoCommand };
156
+ //# sourceMappingURL=info.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.command.js","sourceRoot":"","sources":["../../../../src/commands/info.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
20
+ import { injectable } from "tsyringe";
21
+ import { CliModuleKeyname } from "../cli.module.keyname";
22
+ import { InitCommand } from "./init.command";
23
+ import { InitCommandOptions } from "./init.command-options";
24
+ /**
25
+ * Top-level alias for the framework-reserved `p:init` command. Injects the delegate
26
+ * directly via standard DI.
27
+ */
28
+ let InitAliasCommand = class InitAliasCommand {
29
+ constructor(delegate) {
30
+ this.delegate = delegate;
31
+ this.optionsType = InitCommandOptions;
32
+ this.name = "init";
33
+ this.description = "Alias for p:init.";
34
+ }
35
+ run(args) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ return this.delegate.run(args);
38
+ });
39
+ }
40
+ };
41
+ InitAliasCommand = __decorate([
42
+ tag(ServiceDefinitionTagEnum.Command),
43
+ moduleScoped(CliModuleKeyname),
44
+ injectable(),
45
+ __metadata("design:paramtypes", [InitCommand])
46
+ ], InitAliasCommand);
47
+ export { InitAliasCommand };
48
+ //# sourceMappingURL=init-alias.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-alias.command.js","sourceRoot":"","sources":["../../../../src/commands/init-alias.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAE1D;;;GAGG;AAII,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAK3B,YAA6B,QAAqB;QAArB,aAAQ,GAAR,QAAQ,CAAa;QAJlD,gBAAW,GAAG,kBAAkB,CAAC;QACjC,SAAI,GAAG,MAAM,CAAC;QACd,gBAAW,GAAG,mBAAmB,CAAC;IAGlC,CAAC;IAEK,GAAG,CAAC,IAAwB;;YAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;KAAA;CACF,CAAA;AAXY,gBAAgB;IAH5B,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACrC,YAAY,CAAC,gBAAgB,CAAC;IAC9B,UAAU,EAAE;qCAM4B,WAAW;GALvC,gBAAgB,CAW5B"}
@@ -0,0 +1,49 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import "reflect-metadata";
11
+ import { IsBoolean, IsIn, IsOptional, IsString } from "@pristine-ts/class-validator";
12
+ /**
13
+ * Non-interactive flags for `pristine init`. In a TTY, the init command prompts the user for
14
+ * each missing value; in CI / non-TTY, every value must be supplied via these flags or the
15
+ * command exits with a clear "missing flag" error.
16
+ */
17
+ export class InitCommandOptions {
18
+ }
19
+ __decorate([
20
+ IsOptional(),
21
+ IsString(),
22
+ __metadata("design:type", String)
23
+ ], InitCommandOptions.prototype, "source-path", void 0);
24
+ __decorate([
25
+ IsOptional(),
26
+ IsString(),
27
+ __metadata("design:type", String)
28
+ ], InitCommandOptions.prototype, "output-path", void 0);
29
+ __decorate([
30
+ IsOptional(),
31
+ IsString(),
32
+ __metadata("design:type", String)
33
+ ], InitCommandOptions.prototype, "tsconfig", void 0);
34
+ __decorate([
35
+ IsOptional(),
36
+ IsIn(["esm", "cjs", "both"]),
37
+ __metadata("design:type", String)
38
+ ], InitCommandOptions.prototype, "format", void 0);
39
+ __decorate([
40
+ IsOptional(),
41
+ IsBoolean(),
42
+ __metadata("design:type", Boolean)
43
+ ], InitCommandOptions.prototype, "scaffold", void 0);
44
+ __decorate([
45
+ IsOptional(),
46
+ IsBoolean(),
47
+ __metadata("design:type", Boolean)
48
+ ], InitCommandOptions.prototype, "scripts", void 0);
49
+ //# sourceMappingURL=init.command-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.command-options.js","sourceRoot":"","sources":["../../../../src/commands/init.command-options.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAEnF;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;CAgC9B;AA7BC;IAFC,UAAU,EAAE;IACZ,QAAQ,EAAE;;uDACY;AAIvB;IAFC,UAAU,EAAE;IACZ,QAAQ,EAAE;;uDACY;AAIvB;IAFC,UAAU,EAAE;IACZ,QAAQ,EAAE;;oDACO;AAIlB;IAFC,UAAU,EAAE;IACZ,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;kDACG;AAQhC;IAFC,UAAU,EAAE;IACZ,SAAS,EAAE;;oDACO;AAQnB;IAFC,UAAU,EAAE;IACZ,SAAS,EAAE;;mDACM"}
@@ -0,0 +1,243 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import fs from "fs";
20
+ import path from "path";
21
+ import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
22
+ import { injectable } from "tsyringe";
23
+ import { ConsoleManager } from "../managers/console.manager";
24
+ import { ExitCodeEnum } from "../enums/exit-code.enum";
25
+ import { CliModuleKeyname } from "../cli.module.keyname";
26
+ import { InitCommandOptions } from "./init.command-options";
27
+ import { InitPrompt } from "../bootstrap/init-prompt";
28
+ /**
29
+ * Scaffolds a new Pristine project setup. In a TTY, prompts the user for source path,
30
+ * output path, tsconfig, build format, and a couple of yes/no decisions; in non-TTY (CI),
31
+ * accepts every value via `--source-path`, `--output-path`, etc. flags or refuses to run.
32
+ *
33
+ * What it produces:
34
+ * - `pristine.config.ts` at the project root with the answers populated.
35
+ * - Optionally, a starter AppModule at the configured `sourcePath` (only when the file
36
+ * doesn't already exist — never overwrites).
37
+ * - Optionally, `npm` scripts in `package.json`: `build`, `start`, `verify` (only ones
38
+ * that don't already exist — never overwrites).
39
+ * - `.pristine/` added to `.gitignore` if a `.gitignore` exists at the project root.
40
+ *
41
+ * Refuses to overwrite an existing `pristine.config.ts` so re-running init is safe.
42
+ */
43
+ let InitCommand = class InitCommand {
44
+ constructor(consoleManager, initPrompt) {
45
+ this.consoleManager = consoleManager;
46
+ this.initPrompt = initPrompt;
47
+ this.optionsType = InitCommandOptions;
48
+ this.name = "p:init";
49
+ this.description = "Scaffold pristine.config.ts (and optionally an AppModule + npm scripts) interactively.";
50
+ this.configFileName = "pristine.config.ts";
51
+ this.gitignoreEntry = ".pristine/";
52
+ }
53
+ run(args) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ const projectRoot = process.cwd();
56
+ const configPath = path.resolve(projectRoot, this.configFileName);
57
+ if (fs.existsSync(configPath)) {
58
+ this.consoleManager.writeError(`${this.configFileName} already exists at ${configPath}. Aborting to avoid overwriting.`);
59
+ return ExitCodeEnum.Error;
60
+ }
61
+ const answers = yield this.gatherAnswers(args);
62
+ if (answers === undefined) {
63
+ // Already-rendered error for non-TTY missing flags. Bail.
64
+ return ExitCodeEnum.Error;
65
+ }
66
+ fs.writeFileSync(configPath, this.renderConfigTemplate(answers), "utf8");
67
+ this.consoleManager.writeSuccess(`Created ${path.relative(projectRoot, configPath)}`);
68
+ if (answers.scaffoldSource) {
69
+ this.scaffoldSource(projectRoot, answers.sourcePath);
70
+ }
71
+ if (answers.writePackageScripts) {
72
+ this.addPackageScripts(projectRoot);
73
+ }
74
+ this.addToGitignore(projectRoot);
75
+ this.consoleManager.writeInfo("Next steps:");
76
+ this.consoleManager.writeLine(" 1. npm install --save-dev @pristine-ts/cli (if you haven't already)");
77
+ this.consoleManager.writeLine(" 2. npm run build # compile your AppModule");
78
+ this.consoleManager.writeLine(" 3. npm run start # boot your app");
79
+ return ExitCodeEnum.Success;
80
+ });
81
+ }
82
+ /**
83
+ * Fills in answers from CLI flags first, then prompts (in TTY) for whatever's missing.
84
+ * Returns undefined when running non-TTY with insufficient flags so the caller can exit
85
+ * with the right error code (already rendered).
86
+ * @private
87
+ */
88
+ gatherAnswers(args) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ const sourcePath = args["source-path"];
91
+ const outputPath = args["output-path"];
92
+ const tsconfig = args.tsconfig;
93
+ const format = args.format;
94
+ if (this.initPrompt.isInteractive() === false) {
95
+ const missing = [];
96
+ if (sourcePath === undefined)
97
+ missing.push("--source-path");
98
+ if (outputPath === undefined)
99
+ missing.push("--output-path");
100
+ if (missing.length > 0) {
101
+ this.consoleManager.writeError(`Non-interactive run is missing required flag(s): ${missing.join(", ")}. ` +
102
+ `Either run \`pristine init\` in a terminal or pass the flags explicitly.`);
103
+ return undefined;
104
+ }
105
+ }
106
+ return {
107
+ sourcePath: yield this.initPrompt.askSourcePath(sourcePath),
108
+ outputPath: yield this.initPrompt.askOutputPath(outputPath),
109
+ tsconfig: yield this.initPrompt.askTsconfig(tsconfig),
110
+ format: yield this.initPrompt.askFormat(format),
111
+ scaffoldSource: yield this.initPrompt.askScaffoldSource(args.scaffold, sourcePath !== null && sourcePath !== void 0 ? sourcePath : "src/app.module.ts"),
112
+ writePackageScripts: yield this.initPrompt.askWritePackageScripts(args.scripts),
113
+ };
114
+ });
115
+ }
116
+ /**
117
+ * Writes a starter AppModule at the configured source path if and only if the file
118
+ * doesn't already exist. Never overwrites — re-running init on an established project
119
+ * shouldn't risk clobbering real code.
120
+ * @private
121
+ */
122
+ scaffoldSource(projectRoot, sourcePath) {
123
+ const absolutePath = path.resolve(projectRoot, sourcePath);
124
+ if (fs.existsSync(absolutePath)) {
125
+ this.consoleManager.writeInfo(`AppModule source already exists at ${sourcePath}; skipping scaffold.`);
126
+ return;
127
+ }
128
+ fs.mkdirSync(path.dirname(absolutePath), { recursive: true });
129
+ fs.writeFileSync(absolutePath, this.renderAppModuleTemplate(), "utf8");
130
+ this.consoleManager.writeSuccess(`Created ${sourcePath}`);
131
+ }
132
+ /**
133
+ * Adds `build`, `start`, `verify` to package.json's scripts. Only adds scripts that
134
+ * don't already exist — never overwrites a user-defined script.
135
+ * @private
136
+ */
137
+ addPackageScripts(projectRoot) {
138
+ var _a;
139
+ const packageJsonPath = path.resolve(projectRoot, "package.json");
140
+ if (fs.existsSync(packageJsonPath) === false) {
141
+ this.consoleManager.writeWarning("package.json not found; skipping script additions.");
142
+ return;
143
+ }
144
+ let parsed;
145
+ try {
146
+ parsed = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
147
+ }
148
+ catch (error) {
149
+ this.consoleManager.writeError(`Failed to parse package.json: ${error.message}`);
150
+ return;
151
+ }
152
+ parsed.scripts = (_a = parsed.scripts) !== null && _a !== void 0 ? _a : {};
153
+ const desired = {
154
+ build: "pristine build",
155
+ start: "pristine start",
156
+ verify: "pristine verify",
157
+ };
158
+ const added = [];
159
+ const skipped = [];
160
+ for (const [scriptName, scriptCommand] of Object.entries(desired)) {
161
+ if (parsed.scripts[scriptName] === undefined) {
162
+ parsed.scripts[scriptName] = scriptCommand;
163
+ added.push(scriptName);
164
+ }
165
+ else {
166
+ skipped.push(scriptName);
167
+ }
168
+ }
169
+ if (added.length === 0) {
170
+ this.consoleManager.writeInfo("All target scripts already exist in package.json; nothing added.");
171
+ return;
172
+ }
173
+ fs.writeFileSync(packageJsonPath, JSON.stringify(parsed, null, 2) + "\n", "utf8");
174
+ this.consoleManager.writeSuccess(`Added ${added.length} script(s) to package.json: ${added.join(", ")}`);
175
+ if (skipped.length > 0) {
176
+ this.consoleManager.writeInfo(`Kept existing script(s): ${skipped.join(", ")}`);
177
+ }
178
+ }
179
+ /**
180
+ * Adds `.pristine/` to `.gitignore` if `.gitignore` exists and the entry isn't already
181
+ * there. Doesn't create `.gitignore` from scratch — that would be presumptuous in a
182
+ * project that hasn't initialized git.
183
+ * @private
184
+ */
185
+ addToGitignore(projectRoot) {
186
+ const gitignorePath = path.resolve(projectRoot, ".gitignore");
187
+ if (fs.existsSync(gitignorePath) === false)
188
+ return;
189
+ const current = fs.readFileSync(gitignorePath, "utf8");
190
+ const lines = current.split("\n").map(l => l.trim());
191
+ if (lines.includes(this.gitignoreEntry) || lines.includes(".pristine") || lines.includes(".pristine/*")) {
192
+ return;
193
+ }
194
+ const separator = current.endsWith("\n") ? "" : "\n";
195
+ fs.appendFileSync(gitignorePath, `${separator}${this.gitignoreEntry}\n`, "utf8");
196
+ this.consoleManager.writeInfo(`Added '${this.gitignoreEntry}' to .gitignore`);
197
+ }
198
+ renderConfigTemplate(answers) {
199
+ return `import {defineConfig} from "@pristine-ts/cli";
200
+
201
+ /**
202
+ * Pristine CLI configuration. Generated by \`pristine init\`. Re-run \`pristine init\` to
203
+ * regenerate (it refuses to overwrite this file by design — delete it first).
204
+ */
205
+ export default defineConfig({
206
+ appModule: {
207
+ sourcePath: "${answers.sourcePath}",
208
+ outputPath: "${answers.outputPath}",
209
+ },
210
+ build: {
211
+ tsconfig: "${answers.tsconfig}",
212
+ format: "${answers.format}",
213
+ },
214
+ });
215
+ `;
216
+ }
217
+ renderAppModuleTemplate() {
218
+ return `import {AppModuleInterface} from "@pristine-ts/common";
219
+ import {CoreModule} from "@pristine-ts/core";
220
+
221
+ /**
222
+ * Your application's root module. Imported by \`pristine\` at boot — anything reachable from
223
+ * \`importModules\` / \`importServices\` is registered with the kernel.
224
+ */
225
+ export const AppModule: AppModuleInterface = {
226
+ keyname: "my-app",
227
+ importModules: [
228
+ CoreModule,
229
+ ],
230
+ importServices: [],
231
+ };
232
+ `;
233
+ }
234
+ };
235
+ InitCommand = __decorate([
236
+ tag(ServiceDefinitionTagEnum.Command),
237
+ moduleScoped(CliModuleKeyname),
238
+ injectable(),
239
+ __metadata("design:paramtypes", [ConsoleManager,
240
+ InitPrompt])
241
+ ], InitCommand);
242
+ export { InitCommand };
243
+ //# sourceMappingURL=init.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../../src/commands/init.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAc,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AAII,IAAM,WAAW,GAAjB,MAAM,WAAW;IAQtB,YACmB,cAA8B,EAC9B,UAAsB;QADtB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,eAAU,GAAV,UAAU,CAAY;QATzC,gBAAW,GAAG,kBAAkB,CAAC;QACjC,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,wFAAwF,CAAC;QAEtF,mBAAc,GAAW,oBAAoB,CAAC;QAC9C,mBAAc,GAAW,YAAY,CAAC;IAMvD,CAAC;IAEK,GAAG,CAAC,IAAwB;;YAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAElE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,UAAU,CAC5B,GAAG,IAAI,CAAC,cAAc,sBAAsB,UAAU,kCAAkC,CACzF,CAAC;gBACF,OAAO,YAAY,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,0DAA0D;gBAC1D,OAAO,YAAY,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YAEtF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3B,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEjC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,wEAAwE,CAAC,CAAC;YACxG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC;YACnF,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,0CAA0C,CAAC,CAAC;YAE1E,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,CAAC;KAAA;IAED;;;;;OAKG;IACW,aAAa,CAAC,IAAwB;;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAE3B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,KAAK,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,IAAI,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5D,IAAI,UAAU,KAAK,SAAS;oBAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,cAAc,CAAC,UAAU,CAC5B,oDAAoD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAC1E,0EAA0E,CAC3E,CAAC;oBACF,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC3D,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC3D,QAAQ,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACrD,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC/C,cAAc,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,mBAAmB,CAAC;gBACzG,mBAAmB,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;aAChF,CAAC;QACJ,CAAC;KAAA;IAED;;;;;OAKG;IACK,cAAc,CAAC,WAAmB,EAAE,UAAkB;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,sCAAsC,UAAU,sBAAsB,CAAC,CAAC;YACtG,OAAO;QACT,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC5D,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,WAAmB;;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAClE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,oDAAoD,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QAED,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,iCAAkC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5F,OAAO;QACT,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC;QACtC,MAAM,OAAO,GAA2B;YACtC,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE,gBAAgB;YACvB,MAAM,EAAE,iBAAiB;SAC1B,CAAC;QAEF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,KAAK,CAAC,MAAM,+BAA+B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,WAAmB;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,KAAK;YAAE,OAAO;QAEnD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACxG,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,MAAM,CAAC,CAAC;QACjF,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,cAAc,iBAAiB,CAAC,CAAC;IAChF,CAAC;IAEO,oBAAoB,CAAC,OAAoB;QAC/C,OAAO;;;;;;;;mBAQQ,OAAO,CAAC,UAAU;mBAClB,OAAO,CAAC,UAAU;;;iBAGpB,OAAO,CAAC,QAAQ;eAClB,OAAO,CAAC,MAAM;;;CAG5B,CAAC;IACA,CAAC;IAEO,uBAAuB;QAC7B,OAAO;;;;;;;;;;;;;;CAcV,CAAC;IACA,CAAC;CACF,CAAA;AApNY,WAAW;IAHvB,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACrC,YAAY,CAAC,gBAAgB,CAAC;IAC9B,UAAU,EAAE;qCAUwB,cAAc;QAClB,UAAU;GAV9B,WAAW,CAoNvB"}
@@ -0,0 +1,47 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
20
+ import { injectable } from "tsyringe";
21
+ import { CliModuleKeyname } from "../cli.module.keyname";
22
+ import { ListCommand } from "./list.command";
23
+ /**
24
+ * Top-level alias for the framework-reserved `p:list` command. Injects the delegate
25
+ * directly via standard DI.
26
+ */
27
+ let ListAliasCommand = class ListAliasCommand {
28
+ constructor(delegate) {
29
+ this.delegate = delegate;
30
+ this.optionsType = null;
31
+ this.name = "list";
32
+ this.description = "Alias for p:list.";
33
+ }
34
+ run(args) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ return this.delegate.run(args);
37
+ });
38
+ }
39
+ };
40
+ ListAliasCommand = __decorate([
41
+ tag(ServiceDefinitionTagEnum.Command),
42
+ moduleScoped(CliModuleKeyname),
43
+ injectable(),
44
+ __metadata("design:paramtypes", [ListCommand])
45
+ ], ListAliasCommand);
46
+ export { ListAliasCommand };
47
+ //# sourceMappingURL=list-alias.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-alias.command.js","sourceRoot":"","sources":["../../../../src/commands/list-alias.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C;;;GAGG;AAII,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAK3B,YAA6B,QAAqB;QAArB,aAAQ,GAAR,QAAQ,CAAa;QAJlD,gBAAW,GAAG,IAAI,CAAC;QACnB,SAAI,GAAG,MAAM,CAAC;QACd,gBAAW,GAAG,mBAAmB,CAAC;IAGlC,CAAC;IAEK,GAAG,CAAC,IAAS;;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;KAAA;CACF,CAAA;AAXY,gBAAgB;IAH5B,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACrC,YAAY,CAAC,gBAAgB,CAAC;IAC9B,UAAU,EAAE;qCAM4B,WAAW;GALvC,gBAAgB,CAW5B"}
@@ -20,16 +20,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
23
- import { injectable, injectAll } from "tsyringe";
23
+ import { inject, injectable } from "tsyringe";
24
24
  import { ConsoleManager } from "../managers/console.manager";
25
25
  import { ExitCodeEnum } from "../enums/exit-code.enum";
26
26
  import { CliModuleKeyname } from "../cli.module.keyname";
27
+ /**
28
+ * Lists every registered command's name. Like `HelpCommand`, this resolves the command set
29
+ * lazily inside `run()` via the injected child container to avoid the self-referential cycle
30
+ * that constructor-time `@injectAll(Command)` would create — see `HelpCommand` for details.
31
+ */
27
32
  let ListCommand = class ListCommand {
28
33
  constructor(consoleManager, container) {
29
34
  this.consoleManager = consoleManager;
30
35
  this.container = container;
31
36
  this.optionsType = null;
32
37
  this.name = "p:list";
38
+ this.description = "List every registered command (built-in and custom).";
33
39
  }
34
40
  run(args) {
35
41
  return __awaiter(this, void 0, void 0, function* () {
@@ -44,7 +50,7 @@ ListCommand = __decorate([
44
50
  tag(ServiceDefinitionTagEnum.Command),
45
51
  moduleScoped(CliModuleKeyname),
46
52
  injectable(),
47
- __param(1, injectAll(ServiceDefinitionTagEnum.CurrentChildContainer)),
53
+ __param(1, inject(ServiceDefinitionTagEnum.CurrentChildContainer)),
48
54
  __metadata("design:paramtypes", [ConsoleManager, Object])
49
55
  ], ListCommand);
50
56
  export { ListCommand };
@@ -1 +1 @@
1
- {"version":3,"file":"list.command.js","sourceRoot":"","sources":["../../../../src/commands/list.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAsB,UAAU,EAAE,SAAS,EAAC,MAAM,UAAU,CAAC;AAEpE,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAKhD,IAAM,WAAW,GAAjB,MAAM,WAAW;IAItB,YACmB,cAA8B,EACY,SAA+C;QADzF,mBAAc,GAAd,cAAc,CAAgB;QAC6B,cAAS,GAAT,SAAS,CAAqB;QAL5G,gBAAW,GAAG,IAAI,CAAC;QACnB,SAAI,GAAG,QAAQ,CAAC;IAKhB,CAAC;IAEK,GAAG,CAAC,IAAS;;YACjB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAA4B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACtG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzE,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,CAAC;KAAA;CACF,CAAA;AAhBY,WAAW;IAHvB,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACrC,YAAY,CAAC,gBAAgB,CAAC;IAC9B,UAAU,EAAE;IAOR,WAAA,SAAS,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAA;qCADzB,cAAc;GALtC,WAAW,CAgBvB"}
1
+ {"version":3,"file":"list.command.js","sourceRoot":"","sources":["../../../../src/commands/list.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAsB,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAEjE,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD;;;;GAIG;AAII,IAAM,WAAW,GAAjB,MAAM,WAAW;IAKtB,YACmB,cAA8B,EACS,SAA+C;QADtF,mBAAc,GAAd,cAAc,CAAgB;QAC0B,cAAS,GAAT,SAAS,CAAqB;QANzG,gBAAW,GAAG,IAAI,CAAC;QACnB,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,sDAAsD,CAAC;IAMrE,CAAC;IAEK,GAAG,CAAC,IAAS;;YACjB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAA4B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACtG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzE,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B,CAAC;KAAA;CACF,CAAA;AAlBY,WAAW;IAHvB,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACrC,YAAY,CAAC,gBAAgB,CAAC;IAC9B,UAAU,EAAE;IAQR,WAAA,MAAM,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAA;qCADtB,cAAc;GANtC,WAAW,CAkBvB"}