@pristine-ts/cli 2.0.16 → 2.0.18

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 (142) hide show
  1. package/dist/lib/cjs/bin.js +0 -0
  2. package/dist/lib/cjs/cli.configuration-keys.js +6 -0
  3. package/dist/lib/cjs/cli.configuration-keys.js.map +1 -1
  4. package/dist/lib/cjs/cli.module.js +13 -0
  5. package/dist/lib/cjs/cli.module.js.map +1 -1
  6. package/dist/lib/cjs/errors/cli-error-code.enum.js +10 -0
  7. package/dist/lib/cjs/errors/cli-error-code.enum.js.map +1 -1
  8. package/dist/lib/cjs/interfaces/command-parameter-choice.interface.js +3 -0
  9. package/dist/lib/cjs/interfaces/command-parameter-choice.interface.js.map +1 -0
  10. package/dist/lib/cjs/interfaces/command-parameter-choices-context.interface.js +3 -0
  11. package/dist/lib/cjs/interfaces/command-parameter-choices-context.interface.js.map +1 -0
  12. package/dist/lib/cjs/interfaces/command-parameter-choices-provider.interface.js +3 -0
  13. package/dist/lib/cjs/interfaces/command-parameter-choices-provider.interface.js.map +1 -0
  14. package/dist/lib/cjs/interfaces/interfaces.js +3 -0
  15. package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
  16. package/dist/lib/cjs/reporters/cli-error.reporter.js +11 -3
  17. package/dist/lib/cjs/reporters/cli-error.reporter.js.map +1 -1
  18. package/dist/lib/cjs/services/command-argument-error-formatter.js +146 -0
  19. package/dist/lib/cjs/services/command-argument-error-formatter.js.map +1 -0
  20. package/dist/lib/cjs/services/command-argument-resolver.js +1 -1
  21. package/dist/lib/cjs/services/command-argument-resolver.js.map +1 -1
  22. package/dist/lib/cjs/services/command-options-resolver.js +30 -37
  23. package/dist/lib/cjs/services/command-options-resolver.js.map +1 -1
  24. package/dist/lib/cjs/services/command-parameter-prompter.js +118 -38
  25. package/dist/lib/cjs/services/command-parameter-prompter.js.map +1 -1
  26. package/dist/lib/cjs/services/command-usage-renderer.js +81 -0
  27. package/dist/lib/cjs/services/command-usage-renderer.js.map +1 -0
  28. package/dist/lib/cjs/services/program-name-resolver.js +98 -0
  29. package/dist/lib/cjs/services/program-name-resolver.js.map +1 -0
  30. package/dist/lib/cjs/services/services.js +3 -0
  31. package/dist/lib/cjs/services/services.js.map +1 -1
  32. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  33. package/dist/lib/cjs/types/command-parameter-choices-list.type.js +3 -0
  34. package/dist/lib/cjs/types/command-parameter-choices-list.type.js.map +1 -0
  35. package/dist/lib/cjs/types/command-parameter-choices-resolver.type.js +3 -0
  36. package/dist/lib/cjs/types/command-parameter-choices-resolver.type.js.map +1 -0
  37. package/dist/lib/cjs/types/command-parameter-choices.type.js +3 -0
  38. package/dist/lib/cjs/types/command-parameter-choices.type.js.map +1 -0
  39. package/dist/lib/cjs/types/types.js +3 -0
  40. package/dist/lib/cjs/types/types.js.map +1 -1
  41. package/dist/lib/esm/cli.configuration-keys.js +6 -0
  42. package/dist/lib/esm/cli.configuration-keys.js.map +1 -1
  43. package/dist/lib/esm/cli.module.js +13 -0
  44. package/dist/lib/esm/cli.module.js.map +1 -1
  45. package/dist/lib/esm/errors/cli-error-code.enum.js +10 -0
  46. package/dist/lib/esm/errors/cli-error-code.enum.js.map +1 -1
  47. package/dist/lib/esm/interfaces/command-parameter-choice.interface.js +2 -0
  48. package/dist/lib/esm/interfaces/command-parameter-choice.interface.js.map +1 -0
  49. package/dist/lib/esm/interfaces/command-parameter-choices-context.interface.js +2 -0
  50. package/dist/lib/esm/interfaces/command-parameter-choices-context.interface.js.map +1 -0
  51. package/dist/lib/esm/interfaces/command-parameter-choices-provider.interface.js +2 -0
  52. package/dist/lib/esm/interfaces/command-parameter-choices-provider.interface.js.map +1 -0
  53. package/dist/lib/esm/interfaces/interfaces.js +3 -0
  54. package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
  55. package/dist/lib/esm/reporters/cli-error.reporter.js +11 -3
  56. package/dist/lib/esm/reporters/cli-error.reporter.js.map +1 -1
  57. package/dist/lib/esm/services/command-argument-error-formatter.js +143 -0
  58. package/dist/lib/esm/services/command-argument-error-formatter.js.map +1 -0
  59. package/dist/lib/esm/services/command-argument-resolver.js +1 -1
  60. package/dist/lib/esm/services/command-argument-resolver.js.map +1 -1
  61. package/dist/lib/esm/services/command-options-resolver.js +31 -38
  62. package/dist/lib/esm/services/command-options-resolver.js.map +1 -1
  63. package/dist/lib/esm/services/command-parameter-prompter.js +120 -40
  64. package/dist/lib/esm/services/command-parameter-prompter.js.map +1 -1
  65. package/dist/lib/esm/services/command-usage-renderer.js +78 -0
  66. package/dist/lib/esm/services/command-usage-renderer.js.map +1 -0
  67. package/dist/lib/esm/services/program-name-resolver.js +62 -0
  68. package/dist/lib/esm/services/program-name-resolver.js.map +1 -0
  69. package/dist/lib/esm/services/services.js +3 -0
  70. package/dist/lib/esm/services/services.js.map +1 -1
  71. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
  72. package/dist/lib/esm/types/command-parameter-choices-list.type.js +2 -0
  73. package/dist/lib/esm/types/command-parameter-choices-list.type.js.map +1 -0
  74. package/dist/lib/esm/types/command-parameter-choices-resolver.type.js +2 -0
  75. package/dist/lib/esm/types/command-parameter-choices-resolver.type.js.map +1 -0
  76. package/dist/lib/esm/types/command-parameter-choices.type.js +2 -0
  77. package/dist/lib/esm/types/command-parameter-choices.type.js.map +1 -0
  78. package/dist/lib/esm/types/types.js +3 -0
  79. package/dist/lib/esm/types/types.js.map +1 -1
  80. package/dist/types/cli.configuration-keys.d.ts +7 -0
  81. package/dist/types/errors/cli-error-code.enum.d.ts +10 -0
  82. package/dist/types/interfaces/command-parameter-choice.interface.d.ts +14 -0
  83. package/dist/types/interfaces/command-parameter-choices-context.interface.d.ts +17 -0
  84. package/dist/types/interfaces/command-parameter-choices-provider.interface.d.ts +20 -0
  85. package/dist/types/interfaces/interfaces.d.ts +3 -0
  86. package/dist/types/options/command-parameter.options.d.ts +30 -0
  87. package/dist/types/services/command-argument-error-formatter.d.ts +64 -0
  88. package/dist/types/services/command-options-resolver.d.ts +23 -13
  89. package/dist/types/services/command-parameter-prompter.d.ts +60 -31
  90. package/dist/types/services/command-usage-renderer.d.ts +35 -0
  91. package/dist/types/services/program-name-resolver.d.ts +21 -0
  92. package/dist/types/services/services.d.ts +3 -0
  93. package/dist/types/types/command-parameter-choices-list.type.d.ts +6 -0
  94. package/dist/types/types/command-parameter-choices-resolver.type.d.ts +9 -0
  95. package/dist/types/types/command-parameter-choices.type.d.ts +19 -0
  96. package/dist/types/types/types.d.ts +3 -0
  97. package/package.json +12 -12
  98. package/dist/lib/cjs/bootstrap/app-module-cache.js +0 -71
  99. package/dist/lib/cjs/bootstrap/app-module-cache.js.map +0 -1
  100. package/dist/lib/cjs/bootstrap/app-module-discoverer.js +0 -119
  101. package/dist/lib/cjs/bootstrap/app-module-discoverer.js.map +0 -1
  102. package/dist/lib/cjs/bootstrap/app-module-discovery-candidate.js +0 -21
  103. package/dist/lib/cjs/bootstrap/app-module-discovery-candidate.js.map +0 -1
  104. package/dist/lib/cjs/bootstrap/app-module-discovery-reason.enum.js +0 -15
  105. package/dist/lib/cjs/bootstrap/app-module-discovery-reason.enum.js.map +0 -1
  106. package/dist/lib/cjs/bootstrap/app-module-prompt.js +0 -78
  107. package/dist/lib/cjs/bootstrap/app-module-prompt.js.map +0 -1
  108. package/dist/lib/cjs/commands/config-init.command.js +0 -133
  109. package/dist/lib/cjs/commands/config-init.command.js.map +0 -1
  110. package/dist/lib/cjs/enums/exit-code.enum.js +0 -9
  111. package/dist/lib/cjs/enums/exit-code.enum.js.map +0 -1
  112. package/dist/lib/cjs/managers/console.manager.js +0 -277
  113. package/dist/lib/cjs/managers/console.manager.js.map +0 -1
  114. package/dist/lib/cjs/managers/repl-session.js +0 -251
  115. package/dist/lib/cjs/managers/repl-session.js.map +0 -1
  116. package/dist/lib/esm/bootstrap/app-module-cache.js +0 -65
  117. package/dist/lib/esm/bootstrap/app-module-cache.js.map +0 -1
  118. package/dist/lib/esm/bootstrap/app-module-discoverer.js +0 -113
  119. package/dist/lib/esm/bootstrap/app-module-discoverer.js.map +0 -1
  120. package/dist/lib/esm/bootstrap/app-module-discovery-candidate.js +0 -17
  121. package/dist/lib/esm/bootstrap/app-module-discovery-candidate.js.map +0 -1
  122. package/dist/lib/esm/bootstrap/app-module-discovery-reason.enum.js +0 -12
  123. package/dist/lib/esm/bootstrap/app-module-discovery-reason.enum.js.map +0 -1
  124. package/dist/lib/esm/bootstrap/app-module-prompt.js +0 -75
  125. package/dist/lib/esm/bootstrap/app-module-prompt.js.map +0 -1
  126. package/dist/lib/esm/commands/config-init.command.js +0 -127
  127. package/dist/lib/esm/commands/config-init.command.js.map +0 -1
  128. package/dist/lib/esm/enums/exit-code.enum.js +0 -6
  129. package/dist/lib/esm/enums/exit-code.enum.js.map +0 -1
  130. package/dist/lib/esm/managers/console.manager.js +0 -241
  131. package/dist/lib/esm/managers/console.manager.js.map +0 -1
  132. package/dist/lib/esm/managers/repl-session.js +0 -215
  133. package/dist/lib/esm/managers/repl-session.js.map +0 -1
  134. package/dist/types/bootstrap/app-module-cache.d.ts +0 -15
  135. package/dist/types/bootstrap/app-module-discoverer.d.ts +0 -30
  136. package/dist/types/bootstrap/app-module-discovery-candidate.d.ts +0 -18
  137. package/dist/types/bootstrap/app-module-discovery-reason.enum.d.ts +0 -10
  138. package/dist/types/bootstrap/app-module-prompt.d.ts +0 -20
  139. package/dist/types/commands/config-init.command.d.ts +0 -18
  140. package/dist/types/enums/exit-code.enum.d.ts +0 -4
  141. package/dist/types/managers/console.manager.d.ts +0 -93
  142. package/dist/types/managers/repl-session.d.ts +0 -62
@@ -37,34 +37,36 @@ const cli_decorator_metadata_keyname_enum_1 = require("../enums/cli-decorator-me
37
37
  const cli_error_code_enum_1 = require("../errors/cli-error-code.enum");
38
38
  const boolean_answer_parser_1 = require("../utils/boolean-answer-parser");
39
39
  /**
40
- * Applies a command's `@commandParameter` metadata to its raw, parsed arguments before they
41
- * are mapped onto the options instance and validated. Two things happen here:
40
+ * Applies a command's `@commandParameter` metadata to its raw, parsed arguments before they are
41
+ * mapped onto the options instance and validated. Two things happen here:
42
42
  *
43
- * 1. **Flag binding** — a parameter whose `flag` differs from its property name is copied
44
- * from the flag key onto the property key, so the by-property-name data mapper picks it
45
- * up. Two parameters resolving to the same flag is a programming error and throws.
46
- * 2. **Interactive fill** — a parameter that is absent and declares a `question` is asked
47
- * for interactively. Answers are rendered and checked against the property's declared
48
- * type (booleans as `(y/n)`, enum-constrained values list their choices) and coerced +
49
- * validated through the same mapper/validator the command pipeline uses, re-asking on an
50
- * invalid answer. Gated by the `InteractiveParameters` configuration and only run against
51
- * an interactive terminal; otherwise the absent value is left for validation to report.
43
+ * 1. **Flag binding** — a parameter whose `flag` differs from its property name is copied from
44
+ * the flag key onto the property key, so the by-property-name data mapper picks it up. Two
45
+ * parameters resolving to the same flag is a programming error and throws.
46
+ * 2. **Interactive fill** — a parameter that is absent and declares a `question` is asked for
47
+ * interactively. Values constrained to a set an explicit `choices`, or an `@IsIn` /
48
+ * `@IsEnum` — are picked from an arrow-key menu; booleans answer `(y/n)`; everything else is
49
+ * a free-text answer coerced + validated through the same mapper/validator the command
50
+ * pipeline uses, re-asking on an invalid answer. Gated by the `InteractiveParameters`
51
+ * configuration and only run against an interactive terminal; otherwise the absent value is
52
+ * left for validation to report.
52
53
  *
53
- * Parameters without a `@commandParameter` decorator are untouched, so commands that don't
54
- * use it pay nothing.
54
+ * Parameters without a `@commandParameter` decorator are untouched, so commands that don't use
55
+ * it pay nothing.
55
56
  */
56
57
  let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParameterPrompter {
57
- constructor(cliPrompt, cliOutput, validator, dataMapper, interactiveParametersEnabled) {
58
+ constructor(cliPrompt, cliOutput, validator, dataMapper, interactiveParametersEnabled, container) {
58
59
  this.cliPrompt = cliPrompt;
59
60
  this.cliOutput = cliOutput;
60
61
  this.validator = validator;
61
62
  this.dataMapper = dataMapper;
62
63
  this.interactiveParametersEnabled = interactiveParametersEnabled;
64
+ this.container = container;
63
65
  }
64
66
  /**
65
67
  * Returns a copy of `rawArgs` with aliased flags bound to their property and any missing,
66
- * question-carrying parameters filled in interactively. The input object is never mutated
67
- * the original command event payload stays intact.
68
+ * question-carrying parameters filled in interactively. The input object is never mutated
69
+ * the original command event payload stays intact.
68
70
  */
69
71
  fillMissingParameters(optionsType, rawArgs) {
70
72
  return __awaiter(this, void 0, void 0, function* () {
@@ -88,7 +90,7 @@ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParamet
88
90
  if (this.interactiveParametersEnabled !== true || this.isInputInteractive() === false) {
89
91
  continue;
90
92
  }
91
- const value = yield this.promptForValue(optionsType, propertyKey, options);
93
+ const value = yield this.promptForValue(optionsType, propertyKey, flag, options, args);
92
94
  if (value !== undefined) {
93
95
  args[propertyKey] = value;
94
96
  }
@@ -97,8 +99,8 @@ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParamet
97
99
  });
98
100
  }
99
101
  /**
100
- * Reads every `@commandParameter` off `optionsType`, resolving each to its effective flag
101
- * and detecting two parameters that would claim the same flag (a programming error).
102
+ * Reads every `@commandParameter` off `optionsType`, resolving each to its effective flag and
103
+ * detecting two parameters that would claim the same flag (a programming error).
102
104
  * @private
103
105
  */
104
106
  collectParameters(optionsType) {
@@ -125,35 +127,43 @@ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParamet
125
127
  return parameters;
126
128
  }
127
129
  /**
128
- * Asks for a single parameter's value, rendering and validating it according to the
129
- * property's declared type:
130
+ * Asks for a single parameter's value, rendering and validating it according to the property's
131
+ * declared type:
130
132
  *
131
133
  * - sensitive values are read with the input masked and never trimmed;
134
+ * - a constrained value (explicit `choices`, or `@IsIn` / `@IsEnum`) is picked from an
135
+ * arrow-key menu, then coerced + validated like any typed value;
132
136
  * - booleans render as `(y/n)` and accept y/yes/true/1 & n/no/false/0;
133
- * - enum-constrained values (`@IsIn` / `@IsEnum`) list their choices;
134
137
  * - every other answer is coerced (via the data mapper) and validated (via the validator)
135
138
  * exactly as a typed flag would be, re-asking with the real constraint message when it
136
139
  * doesn't pass.
137
140
  *
138
- * Returns the coerced value, or `undefined` when the user enters nothing or the attempt
139
- * budget is exhausted — in which case the absent value falls through to validation.
141
+ * Returns the coerced value, or `undefined` when the user enters nothing or the attempt budget
142
+ * is exhausted — in which case the absent value falls through to validation.
140
143
  * @private
141
144
  */
142
- promptForValue(optionsType, propertyKey, options) {
145
+ promptForValue(optionsType, propertyKey, flag, options, args) {
143
146
  return __awaiter(this, void 0, void 0, function* () {
144
147
  var _a, _b;
145
148
  const sensitive = options.sensitive === true;
146
149
  const isBoolean = sensitive === false && Reflect.getMetadata("design:type", optionsType.prototype, propertyKey) === Boolean;
147
- const choices = (sensitive || isBoolean) ? undefined : this.getChoices(optionsType, propertyKey);
148
- const prompt = this.formatQuestion(this.decorateQuestion((_a = options.question) !== null && _a !== void 0 ? _a : "", isBoolean, choices));
150
+ // A constrained value is selected from an arrow-key menu, then coerced + validated the same
151
+ // way a typed flag would be. Secrets and booleans are never menus.
152
+ const menu = (sensitive || isBoolean) ? undefined : yield this.resolveChoices(optionsType, propertyKey, flag, options, args);
153
+ if (menu !== undefined) {
154
+ const selected = yield this.cliPrompt.select(this.menuMessage(options.question, flag), menu);
155
+ const outcome = yield this.coerceAndValidate(optionsType, propertyKey, selected);
156
+ return outcome.valid ? outcome.value : selected;
157
+ }
158
+ const prompt = this.formatQuestion(this.decorateQuestion((_a = options.question) !== null && _a !== void 0 ? _a : "", isBoolean, undefined));
149
159
  for (let attempt = 0; attempt < CommandParameterPrompter_1.MaxAttempts; attempt++) {
150
160
  // Secrets go through the masked reader and are never trimmed (a password may legitimately
151
161
  // contain surrounding whitespace); ordinary answers are trimmed.
152
162
  const raw = sensitive
153
163
  ? yield this.cliPrompt.readSecret(prompt)
154
164
  : (yield this.cliPrompt.readLine(prompt)).trim();
155
- // Nothing entered → leave the value unset so validation reports it (and a required
156
- // field surfaces the same way it would have without a prompt).
165
+ // Nothing entered → leave the value unset so validation reports it (and a required field
166
+ // surfaces the same way it would have without a prompt).
157
167
  if (raw.length === 0) {
158
168
  return undefined;
159
169
  }
@@ -177,6 +187,76 @@ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParamet
177
187
  return undefined;
178
188
  });
179
189
  }
190
+ /**
191
+ * Resolves this parameter's selectable choices to a `{name, value}[]` menu, or `undefined`
192
+ * when it has none (free-text). Sources, in order: an explicit `@commandParameter({choices})`
193
+ * — a static list, a resolver function, or a DI provider class — else the `@IsIn` / `@IsEnum`
194
+ * set. An empty result is treated as "no menu".
195
+ * @private
196
+ */
197
+ resolveChoices(optionsType, propertyKey, flag, options, args) {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ const list = yield this.resolveChoicesList(optionsType, propertyKey, flag, options, args);
200
+ if (list === undefined || list.length === 0) {
201
+ return undefined;
202
+ }
203
+ return list.map((choice) => typeof choice === "string" ? { name: choice, value: choice } : { name: choice.name, value: choice.value });
204
+ });
205
+ }
206
+ /**
207
+ * The raw choices list from the declared `choices` (static array / resolver function / DI
208
+ * provider class), falling back to the enum/`@IsIn` set when none is declared. Dynamic
209
+ * resolution failures degrade to free-text rather than crashing the prompt.
210
+ * @private
211
+ */
212
+ resolveChoicesList(optionsType, propertyKey, flag, options, args) {
213
+ return __awaiter(this, void 0, void 0, function* () {
214
+ const declared = options.choices;
215
+ // No explicit choices → the enum/`@IsIn` set (back-compat), which now drives a menu rather
216
+ // than a `(a/b/c)` text hint.
217
+ if (declared === undefined) {
218
+ return this.getChoices(optionsType, propertyKey);
219
+ }
220
+ if (Array.isArray(declared)) {
221
+ return declared;
222
+ }
223
+ const context = { args, propertyKey, flag };
224
+ try {
225
+ // A class constructor (DI provider) is distinguishable from a plain resolver function by
226
+ // its prototype carrying `getChoices`.
227
+ if (this.isChoicesProviderClass(declared)) {
228
+ // ── container.resolve, justified ───────────────────────────────────────────────────
229
+ // The provider class is named on the `@commandParameter` decorator at definition time;
230
+ // only at prompt time can we turn it into an instance (so it can inject a FileManager,
231
+ // HttpClient, …). Mirrors HelpCommand's late command resolution — the child container is
232
+ // constructor-injected, only the instantiation is deferred.
233
+ const provider = this.container.resolve(declared);
234
+ return yield provider.getChoices(context);
235
+ }
236
+ return yield declared(context);
237
+ }
238
+ catch (_a) {
239
+ this.cliOutput.writeLine(`Could not load choices for '${flag}'; enter the value directly.`);
240
+ return undefined;
241
+ }
242
+ });
243
+ }
244
+ /**
245
+ * Whether `candidate` is a provider *class* (vs a plain resolver function): a class carries a
246
+ * prototype with a `getChoices` method; an arrow/plain resolver does not.
247
+ * @private
248
+ */
249
+ isChoicesProviderClass(candidate) {
250
+ return typeof candidate === "function" && candidate.prototype != null && typeof candidate.prototype.getChoices === "function";
251
+ }
252
+ /**
253
+ * The menu heading: the parameter's `question` when set, else a neutral `Select <flag>`.
254
+ * @private
255
+ */
256
+ menuMessage(question, flag) {
257
+ const text = (question !== null && question !== void 0 ? question : "").trim();
258
+ return text.length > 0 ? text : `Select ${flag}`;
259
+ }
180
260
  /**
181
261
  * Maps a single raw answer onto a probe instance of `optionsType` and validates just that
182
262
  * property, returning the coerced value when it passes or the constraint messages when it
@@ -202,10 +282,9 @@ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParamet
202
282
  });
203
283
  }
204
284
  /**
205
- * Flattens `class-validator`'s per-property constraint objects into plain, user-facing
206
- * lines. `@pristine-ts/class-validator` stores each constraint as `{keyname, message}`
207
- * rather than a bare string, so prefer `.message`, falling back so we never print
208
- * `[object Object]`.
285
+ * Flattens `class-validator`'s per-property constraint objects into plain, user-facing lines.
286
+ * `@pristine-ts/class-validator` stores each constraint as `{keyname, message}` rather than a
287
+ * bare string, so prefer `.message`, falling back so we never print `[object Object]`.
209
288
  * @private
210
289
  */
211
290
  describeErrors(errors) {
@@ -226,8 +305,8 @@ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParamet
226
305
  /**
227
306
  * The allowed values declared by an `@IsIn([...])` or `@IsEnum(Enum)` on the property, for
228
307
  * display in the prompt. Reads `@pristine-ts/class-validator`'s stored validator instances
229
- * defensively — any shape mismatch just yields no menu (validation still rejects bad input
230
- * and re-asks). Returns undefined when the property isn't enum-constrained.
308
+ * defensively — any shape mismatch just yields no menu (validation still rejects bad input and
309
+ * re-asks). Returns undefined when the property isn't enum-constrained.
231
310
  * @private
232
311
  */
233
312
  getChoices(optionsType, propertyKey) {
@@ -278,8 +357,8 @@ let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParamet
278
357
  return process.stdin.isTTY === true;
279
358
  }
280
359
  /**
281
- * Ensures the rendered question ends with a trailing space so the typed answer doesn't butt
282
- * up against the prompt text.
360
+ * Ensures the rendered question ends with a trailing space so the typed answer doesn't butt up
361
+ * against the prompt text.
283
362
  * @private
284
363
  */
285
364
  formatQuestion(question) {
@@ -303,9 +382,10 @@ exports.CommandParameterPrompter = CommandParameterPrompter = CommandParameterPr
303
382
  (0, tsyringe_1.injectable)(),
304
383
  (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
305
384
  __param(4, (0, common_1.injectConfig)(cli_configuration_keys_1.CliConfigurationKeys.InteractiveParameters)),
385
+ __param(5, (0, tsyringe_1.inject)(common_1.ServiceDefinitionTagEnum.CurrentChildContainer)),
306
386
  __metadata("design:paramtypes", [cli_prompt_manager_1.CliPrompt,
307
387
  cli_output_manager_1.CliOutput,
308
388
  class_validator_1.Validator,
309
- data_mapping_1.DataMapper, Boolean])
389
+ data_mapping_1.DataMapper, Boolean, Object])
310
390
  ], CommandParameterPrompter);
311
391
  //# sourceMappingURL=command-parameter-prompter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-parameter-prompter.js","sourceRoot":"","sources":["../../../../src/services/command-parameter-prompter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-parameter-prompter.js","sourceRoot":"","sources":["../../../../src/services/command-parameter-prompter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
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 CommandUsageRenderer_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CommandUsageRenderer = void 0;
11
+ require("reflect-metadata");
12
+ const tsyringe_1 = require("tsyringe");
13
+ const common_1 = require("@pristine-ts/common");
14
+ const metadata_1 = require("@pristine-ts/metadata");
15
+ const cli_module_keyname_1 = require("../cli.module.keyname");
16
+ const cli_decorator_metadata_keyname_enum_1 = require("../enums/cli-decorator-metadata-keyname.enum");
17
+ /**
18
+ * Builds the one-line `Usage:` synopsis for a command from its options class, e.g.
19
+ *
20
+ * Usage: myapp key:add --name=<name> [--pubkey=<key-or-file>] [--rotate]
21
+ *
22
+ * Every declared option property becomes a token: required values render as `--flag=<hint>`,
23
+ * optional values as `[--flag=<hint>]`, and booleans as `[--flag]` (presence flags take no
24
+ * value). The placeholder defaults to the property name and can be overridden per parameter
25
+ * with `@commandParameter({valueHint})`; the flag honors `@commandParameter({flag})`.
26
+ *
27
+ * "Required" means the absence of an `@IsOptional()` condition on the property — the same
28
+ * signal the validator uses to decide whether a missing value is an error.
29
+ */
30
+ let CommandUsageRenderer = CommandUsageRenderer_1 = class CommandUsageRenderer {
31
+ /**
32
+ * Renders `Usage: <bin> <command> <tokens…>`. `binName` is the resolved program name (see
33
+ * `ProgramNameResolver`); `commandName` is the command's `name`.
34
+ */
35
+ render(optionsType, commandName, binName) {
36
+ const tokens = this.collectTokens(optionsType);
37
+ const synopsis = [binName, commandName, ...tokens].filter((part) => part.length > 0).join(" ");
38
+ return `Usage: ${synopsis}`;
39
+ }
40
+ /**
41
+ * One synopsis token per declared option property, in declaration order.
42
+ * @private
43
+ */
44
+ collectTokens(optionsType) {
45
+ var _a, _b;
46
+ const properties = metadata_1.ClassMetadata.getInformation(optionsType).properties;
47
+ const tokens = [];
48
+ for (const propertyKey of properties) {
49
+ const options = metadata_1.PropertyMetadata.getMetadata(optionsType.prototype, propertyKey, cli_decorator_metadata_keyname_enum_1.CliDecoratorMetadataKeynameEnum.CommandParameter);
50
+ const flag = (_a = options === null || options === void 0 ? void 0 : options.flag) !== null && _a !== void 0 ? _a : propertyKey;
51
+ // Booleans are presence flags — they never take a value.
52
+ if (Reflect.getMetadata("design:type", optionsType.prototype, propertyKey) === Boolean) {
53
+ tokens.push(`[--${flag}]`);
54
+ continue;
55
+ }
56
+ const body = `--${flag}=<${(_b = options === null || options === void 0 ? void 0 : options.valueHint) !== null && _b !== void 0 ? _b : propertyKey}>`;
57
+ tokens.push(this.isRequired(optionsType, propertyKey) ? body : `[${body}]`);
58
+ }
59
+ return tokens;
60
+ }
61
+ /**
62
+ * A property is required unless it carries an `@IsOptional()` condition. Read defensively: an
63
+ * unexpected metadata shape is treated as required (the safer default for a usage hint).
64
+ * @private
65
+ */
66
+ isRequired(optionsType, propertyKey) {
67
+ const conditions = metadata_1.PropertyMetadata.getMetadata(optionsType.prototype, propertyKey, CommandUsageRenderer_1.ConditionMetadataKey);
68
+ if (Array.isArray(conditions) === false) {
69
+ return true;
70
+ }
71
+ return conditions.some((condition) => { var _a; return ((_a = condition === null || condition === void 0 ? void 0 : condition.constructor) === null || _a === void 0 ? void 0 : _a.name) === "IsOptionalCondition"; }) === false;
72
+ }
73
+ };
74
+ exports.CommandUsageRenderer = CommandUsageRenderer;
75
+ /** `@pristine-ts/class-validator` stores each `@IsOptional()` as a condition here. */
76
+ CommandUsageRenderer.ConditionMetadataKey = "pristine-validator:condition";
77
+ exports.CommandUsageRenderer = CommandUsageRenderer = CommandUsageRenderer_1 = __decorate([
78
+ (0, tsyringe_1.injectable)(),
79
+ (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname)
80
+ ], CommandUsageRenderer);
81
+ //# sourceMappingURL=command-usage-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-usage-renderer.js","sourceRoot":"","sources":["../../../../src/services/command-usage-renderer.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,4BAA0B;AAC1B,uCAAoC;AAEpC,gDAAiD;AACjD,oDAAsE;AACtE,8DAAuD;AACvD,sGAA6F;AAG7F;;;;;;;;;;;;GAYG;AAGI,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAI/B;;;OAGG;IACH,MAAM,CAAC,WAAkC,EAAE,WAAmB,EAAE,OAAe;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/F,OAAO,UAAU,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,WAAkC;;QACtD,MAAM,UAAU,GAAG,wBAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC;QACxE,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE,CAAC;YACrC,MAAM,OAAO,GAAwC,2BAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,qEAA+B,CAAC,gBAAgB,CAAC,CAAC;YACxK,MAAM,IAAI,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,mCAAI,WAAW,CAAC;YAE1C,yDAAyD;YACzD,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,OAAO,EAAE,CAAC;gBACvF,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,WAAW,GAAG,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,WAAkC,EAAE,WAAmB;QACxE,MAAM,UAAU,GAAG,2BAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,sBAAoB,CAAC,oBAAoB,CAAC,CAAC;QAC/H,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,IAAI,MAAK,qBAAqB,CAAA,EAAA,CAAC,KAAK,KAAK,CAAC;IAC1G,CAAC;;AAlDU,oDAAoB;AAC/B,sFAAsF;AAC9D,yCAAoB,GAAG,8BAA8B,AAAjC,CAAkC;+BAFnE,oBAAoB;IAFhC,IAAA,qBAAU,GAAE;IACZ,IAAA,qBAAY,EAAC,qCAAgB,CAAC;GAClB,oBAAoB,CAmDhC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ var ProgramNameResolver_1;
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.ProgramNameResolver = void 0;
50
+ const tsyringe_1 = require("tsyringe");
51
+ const common_1 = require("@pristine-ts/common");
52
+ const path = __importStar(require("path"));
53
+ const cli_module_keyname_1 = require("../cli.module.keyname");
54
+ const cli_configuration_keys_1 = require("../cli.configuration-keys");
55
+ /**
56
+ * Resolves the program name shown in generated `Usage:` lines — the name the user actually
57
+ * typed, e.g. `myapp`, not the framework's `pristine`. Resolution is a hybrid, in priority
58
+ * order:
59
+ *
60
+ * 1. the `pristine.cli.binName` configuration, when set (an explicit override for odd launch
61
+ * shapes like `node dist/bin/cli.cjs`, where argv carries a file name);
62
+ * 2. otherwise `basename(argv[1])` with any `.cjs`/`.js`/`.mjs` extension stripped — the bin
63
+ * the user invoked, robust across global installs, `npx`, and local `.bin` shims;
64
+ * 3. otherwise the framework default `pristine`.
65
+ */
66
+ let ProgramNameResolver = ProgramNameResolver_1 = class ProgramNameResolver {
67
+ constructor(configuredBinName) {
68
+ this.configuredBinName = configuredBinName;
69
+ }
70
+ /**
71
+ * Returns the resolved program name. `argv` defaults to `process.argv`; it is a parameter so
72
+ * the REPL (and tests) can resolve a name from a synthetic argv.
73
+ */
74
+ resolve(argv = process.argv) {
75
+ var _a;
76
+ const configured = (_a = this.configuredBinName) === null || _a === void 0 ? void 0 : _a.trim();
77
+ if (configured) {
78
+ return configured;
79
+ }
80
+ const scriptPath = argv[1];
81
+ if (typeof scriptPath === "string" && scriptPath.length > 0) {
82
+ const base = path.basename(scriptPath, path.extname(scriptPath));
83
+ if (base.length > 0) {
84
+ return base;
85
+ }
86
+ }
87
+ return ProgramNameResolver_1.Fallback;
88
+ }
89
+ };
90
+ exports.ProgramNameResolver = ProgramNameResolver;
91
+ ProgramNameResolver.Fallback = "pristine";
92
+ exports.ProgramNameResolver = ProgramNameResolver = ProgramNameResolver_1 = __decorate([
93
+ (0, tsyringe_1.injectable)(),
94
+ (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
95
+ __param(0, (0, common_1.injectConfig)(cli_configuration_keys_1.CliConfigurationKeys.BinName)),
96
+ __metadata("design:paramtypes", [String])
97
+ ], ProgramNameResolver);
98
+ //# sourceMappingURL=program-name-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-name-resolver.js","sourceRoot":"","sources":["../../../../src/services/program-name-resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAoC;AACpC,gDAA+D;AAC/D,2CAA6B;AAC7B,8DAAuD;AACvD,sEAA+D;AAE/D;;;;;;;;;;GAUG;AAGI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAG9B,YAC+D,iBAAyB;QAAzB,sBAAiB,GAAjB,iBAAiB,CAAQ;IAExF,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,OAA0B,OAAO,CAAC,IAAI;;QAC5C,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,iBAAiB,0CAAE,IAAI,EAAE,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,qBAAmB,CAAC,QAAQ,CAAC;IACtC,CAAC;;AA3BU,kDAAmB;AACN,4BAAQ,GAAG,UAAU,AAAb,CAAc;8BADnC,mBAAmB;IAF/B,IAAA,qBAAU,GAAE;IACZ,IAAA,qBAAY,EAAC,qCAAgB,CAAC;IAK1B,WAAA,IAAA,qBAAY,EAAC,6CAAoB,CAAC,OAAO,CAAC,CAAA;;GAJlC,mBAAmB,CA4B/B"}
@@ -14,7 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./command-argument-error-formatter"), exports);
17
18
  __exportStar(require("./command-argument-resolver"), exports);
18
19
  __exportStar(require("./command-options-resolver"), exports);
19
20
  __exportStar(require("./command-parameter-prompter"), exports);
21
+ __exportStar(require("./command-usage-renderer"), exports);
22
+ __exportStar(require("./program-name-resolver"), exports);
20
23
  //# sourceMappingURL=services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../src/services/services.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,6DAA2C;AAC3C,+DAA6C"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../src/services/services.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,8DAA4C;AAC5C,6DAA2C;AAC3C,+DAA6C;AAC7C,2DAAyC;AACzC,0DAAwC"}