@c9up/ream 0.1.26 → 0.1.27

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 (179) hide show
  1. package/README.md +65 -0
  2. package/dist/Ignitor.d.ts +115 -7
  3. package/dist/Ignitor.d.ts.map +1 -1
  4. package/dist/Ignitor.js +233 -37
  5. package/dist/Ignitor.js.map +1 -1
  6. package/dist/console/BaseCommand.d.ts +217 -0
  7. package/dist/console/BaseCommand.d.ts.map +1 -0
  8. package/dist/console/BaseCommand.js +340 -0
  9. package/dist/console/BaseCommand.js.map +1 -0
  10. package/dist/console/Console.d.ts +86 -0
  11. package/dist/console/Console.d.ts.map +1 -0
  12. package/dist/console/Console.js +134 -0
  13. package/dist/console/Console.js.map +1 -0
  14. package/dist/console/ExceptionHandler.d.ts +28 -0
  15. package/dist/console/ExceptionHandler.d.ts.map +1 -0
  16. package/dist/console/ExceptionHandler.js +76 -0
  17. package/dist/console/ExceptionHandler.js.map +1 -0
  18. package/dist/console/HelpCommand.d.ts +16 -0
  19. package/dist/console/HelpCommand.d.ts.map +1 -0
  20. package/dist/console/HelpCommand.js +40 -0
  21. package/dist/console/HelpCommand.js.map +1 -0
  22. package/dist/console/IndexGenerator.d.ts +24 -0
  23. package/dist/console/IndexGenerator.d.ts.map +1 -0
  24. package/dist/console/IndexGenerator.js +65 -0
  25. package/dist/console/IndexGenerator.js.map +1 -0
  26. package/dist/console/Kernel.d.ts +298 -0
  27. package/dist/console/Kernel.d.ts.map +1 -0
  28. package/dist/console/Kernel.js +1120 -0
  29. package/dist/console/Kernel.js.map +1 -0
  30. package/dist/console/ListCommand.d.ts +18 -0
  31. package/dist/console/ListCommand.d.ts.map +1 -0
  32. package/dist/console/ListCommand.js +60 -0
  33. package/dist/console/ListCommand.js.map +1 -0
  34. package/dist/console/assertions.d.ts +20 -0
  35. package/dist/console/assertions.d.ts.map +1 -0
  36. package/dist/console/assertions.js +84 -0
  37. package/dist/console/assertions.js.map +1 -0
  38. package/dist/console/cliui.d.ts +248 -0
  39. package/dist/console/cliui.d.ts.map +1 -0
  40. package/dist/console/cliui.js +587 -0
  41. package/dist/console/cliui.js.map +1 -0
  42. package/dist/console/decorators.d.ts +90 -0
  43. package/dist/console/decorators.d.ts.map +1 -0
  44. package/dist/console/decorators.js +142 -0
  45. package/dist/console/decorators.js.map +1 -0
  46. package/dist/console/index.d.ts +32 -0
  47. package/dist/console/index.d.ts.map +1 -0
  48. package/dist/console/index.js +24 -0
  49. package/dist/console/index.js.map +1 -0
  50. package/dist/console/loaders.d.ts +52 -0
  51. package/dist/console/loaders.d.ts.map +1 -0
  52. package/dist/console/loaders.js +131 -0
  53. package/dist/console/loaders.js.map +1 -0
  54. package/dist/console/parser.d.ts +86 -0
  55. package/dist/console/parser.d.ts.map +1 -0
  56. package/dist/console/parser.js +440 -0
  57. package/dist/console/parser.js.map +1 -0
  58. package/dist/console/prompts.d.ts +124 -0
  59. package/dist/console/prompts.d.ts.map +1 -0
  60. package/dist/console/prompts.js +356 -0
  61. package/dist/console/prompts.js.map +1 -0
  62. package/dist/console/tracing.d.ts +17 -0
  63. package/dist/console/tracing.d.ts.map +1 -0
  64. package/dist/console/tracing.js +11 -0
  65. package/dist/console/tracing.js.map +1 -0
  66. package/dist/console/types.d.ts +255 -0
  67. package/dist/console/types.d.ts.map +1 -0
  68. package/dist/console/types.js +25 -0
  69. package/dist/console/types.js.map +1 -0
  70. package/dist/console/ui.d.ts +20 -0
  71. package/dist/console/ui.d.ts.map +1 -0
  72. package/dist/console/ui.js +31 -0
  73. package/dist/console/ui.js.map +1 -0
  74. package/dist/console/utils.d.ts +27 -0
  75. package/dist/console/utils.d.ts.map +1 -0
  76. package/dist/console/utils.js +56 -0
  77. package/dist/console/utils.js.map +1 -0
  78. package/dist/container/Container.d.ts.map +1 -1
  79. package/dist/container/Container.js +40 -12
  80. package/dist/container/Container.js.map +1 -1
  81. package/dist/container/types.d.ts +14 -2
  82. package/dist/container/types.d.ts.map +1 -1
  83. package/dist/decorators/Service.d.ts +7 -0
  84. package/dist/decorators/Service.d.ts.map +1 -1
  85. package/dist/decorators/Service.js +23 -3
  86. package/dist/decorators/Service.js.map +1 -1
  87. package/dist/errors/ReamError.d.ts +25 -0
  88. package/dist/errors/ReamError.d.ts.map +1 -1
  89. package/dist/errors/ReamError.js +5 -0
  90. package/dist/errors/ReamError.js.map +1 -1
  91. package/dist/errors/prettyPrintError.d.ts +9 -0
  92. package/dist/errors/prettyPrintError.d.ts.map +1 -0
  93. package/dist/errors/prettyPrintError.js +22 -0
  94. package/dist/errors/prettyPrintError.js.map +1 -0
  95. package/dist/index.d.ts +14 -4
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +16 -2
  98. package/dist/index.js.map +1 -1
  99. package/dist/middleware/Pipeline.d.ts +29 -8
  100. package/dist/middleware/Pipeline.d.ts.map +1 -1
  101. package/dist/middleware/Pipeline.js +39 -1
  102. package/dist/middleware/Pipeline.js.map +1 -1
  103. package/dist/rpc/RpcRouter.d.ts.map +1 -1
  104. package/dist/rpc/RpcRouter.js +13 -2
  105. package/dist/rpc/RpcRouter.js.map +1 -1
  106. package/dist/services/app.d.ts +1 -1
  107. package/dist/services/app.js +1 -1
  108. package/dist/services/console.d.ts +21 -0
  109. package/dist/services/console.d.ts.map +1 -0
  110. package/dist/services/console.js +35 -0
  111. package/dist/services/console.js.map +1 -0
  112. package/dist/testing/ApiResponse.d.ts +218 -0
  113. package/dist/testing/ApiResponse.d.ts.map +1 -0
  114. package/dist/testing/ApiResponse.js +576 -0
  115. package/dist/testing/ApiResponse.js.map +1 -0
  116. package/dist/testing/RequestBuilder.d.ts +132 -72
  117. package/dist/testing/RequestBuilder.d.ts.map +1 -1
  118. package/dist/testing/RequestBuilder.js +389 -222
  119. package/dist/testing/RequestBuilder.js.map +1 -1
  120. package/dist/testing/TestClient.d.ts +34 -39
  121. package/dist/testing/TestClient.d.ts.map +1 -1
  122. package/dist/testing/TestClient.js +48 -56
  123. package/dist/testing/TestClient.js.map +1 -1
  124. package/dist/utils/Macroable.js +3 -3
  125. package/dist/utils/Macroable.js.map +1 -1
  126. package/events.darwin-arm64.node +0 -0
  127. package/events.darwin-x64.node +0 -0
  128. package/events.linux-arm64-gnu.node +0 -0
  129. package/events.linux-x64-gnu.node +0 -0
  130. package/events.win32-x64-msvc.node +0 -0
  131. package/index.darwin-arm64.node +0 -0
  132. package/index.darwin-x64.node +0 -0
  133. package/index.linux-arm64-gnu.node +0 -0
  134. package/index.linux-x64-gnu.node +0 -0
  135. package/index.win32-x64-msvc.node +0 -0
  136. package/package.json +15 -2
  137. package/scheduler.darwin-arm64.node +0 -0
  138. package/scheduler.darwin-x64.node +0 -0
  139. package/scheduler.linux-arm64-gnu.node +0 -0
  140. package/scheduler.linux-x64-gnu.node +0 -0
  141. package/scheduler.win32-x64-msvc.node +0 -0
  142. package/src/Ignitor.ts +340 -42
  143. package/src/console/BaseCommand.ts +467 -0
  144. package/src/console/Console.ts +174 -0
  145. package/src/console/ExceptionHandler.ts +91 -0
  146. package/src/console/HelpCommand.ts +37 -0
  147. package/src/console/IndexGenerator.ts +79 -0
  148. package/src/console/Kernel.ts +1382 -0
  149. package/src/console/ListCommand.ts +55 -0
  150. package/src/console/assertions.ts +114 -0
  151. package/src/console/cliui.ts +756 -0
  152. package/src/console/decorators.ts +199 -0
  153. package/src/console/index.ts +67 -0
  154. package/src/console/loaders.ts +145 -0
  155. package/src/console/parser.ts +598 -0
  156. package/src/console/prompts.ts +548 -0
  157. package/src/console/tracing.ts +22 -0
  158. package/src/console/types.ts +280 -0
  159. package/src/console/ui.ts +37 -0
  160. package/src/console/utils.ts +69 -0
  161. package/src/container/Container.ts +55 -13
  162. package/src/container/types.ts +15 -2
  163. package/src/decorators/Service.ts +28 -3
  164. package/src/errors/ReamError.ts +31 -0
  165. package/src/errors/prettyPrintError.ts +20 -0
  166. package/src/index.ts +30 -4
  167. package/src/middleware/Pipeline.ts +76 -5
  168. package/src/rpc/RpcRouter.ts +16 -2
  169. package/src/services/app.ts +1 -1
  170. package/src/services/console.ts +42 -0
  171. package/src/testing/ApiResponse.ts +691 -0
  172. package/src/testing/RequestBuilder.ts +498 -275
  173. package/src/testing/TestClient.ts +63 -86
  174. package/src/utils/Macroable.ts +3 -3
  175. package/dist/console/CommandRunner.d.ts +0 -18
  176. package/dist/console/CommandRunner.d.ts.map +0 -1
  177. package/dist/console/CommandRunner.js +0 -65
  178. package/dist/console/CommandRunner.js.map +0 -1
  179. package/src/console/CommandRunner.ts +0 -82
@@ -0,0 +1,440 @@
1
+ /**
2
+ * argv parser for console commands.
3
+ *
4
+ * Metadata-driven, unlike the naive splitter it replaces: knowing a flag's
5
+ * declared type is what makes `--email hugo@example.com` work. Without it the
6
+ * parser cannot tell a value-taking flag from a boolean one, so it has to treat
7
+ * every `--flag` as `true` and let the value fall through to the positionals —
8
+ * which is exactly how the previous implementation silently dropped arguments.
9
+ *
10
+ * Supported forms (Console parity):
11
+ * --flag=value --flag value --flag (boolean) --no-flag (boolean false)
12
+ * -f value -f -abc (grouped boolean aliases)
13
+ * -- everything after it is positional, never a flag
14
+ * repeated flags accumulate for `@flags.array()`
15
+ */
16
+ import { ReamError } from '../errors/ReamError.js';
17
+ /**
18
+ * The parser as an object (Console `Parser`).
19
+ *
20
+ * Same work as {@link parseArgv}, held in a shape that can be passed around and
21
+ * reused — which is how Console's kernel and its ported code hold it.
22
+ */
23
+ export class Parser {
24
+ #options;
25
+ constructor(options = {}) {
26
+ this.#options = options;
27
+ }
28
+ parse(argv) {
29
+ return parseArgv(typeof argv === 'string' ? argv.split(' ').filter(Boolean) : argv, this.#options);
30
+ }
31
+ }
32
+ export function parseArgv(argv, options = {}) {
33
+ const declaredFlags = options.flags ?? [];
34
+ const declaredArgs = options.args ?? [];
35
+ const where = options.commandName ? ` for "${options.commandName}"` : '';
36
+ const byName = new Map();
37
+ const byAlias = new Map();
38
+ for (const flag of declaredFlags) {
39
+ byName.set(flag.flagName, flag);
40
+ for (const alias of flag.alias)
41
+ byAlias.set(alias, flag);
42
+ }
43
+ const positionals = [];
44
+ /** Collected per property so repeated flags can accumulate into arrays. */
45
+ const collected = new Map();
46
+ const unknown = {};
47
+ const push = (meta, value) => {
48
+ const existing = collected.get(meta.propertyName);
49
+ if (existing)
50
+ existing.push(value);
51
+ else
52
+ collected.set(meta.propertyName, [value]);
53
+ };
54
+ /** Record the flag as seen without attaching a value to it. */
55
+ const mention = (meta) => {
56
+ if (!collected.has(meta.propertyName))
57
+ collected.set(meta.propertyName, []);
58
+ };
59
+ let sawTerminator = false;
60
+ for (let i = 0; i < argv.length; i++) {
61
+ const token = argv[i];
62
+ if (sawTerminator) {
63
+ positionals.push(token);
64
+ continue;
65
+ }
66
+ if (token === '--') {
67
+ sawTerminator = true;
68
+ continue;
69
+ }
70
+ // --long, --long=value, --no-long
71
+ if (token.startsWith('--')) {
72
+ const body = token.slice(2);
73
+ const eq = body.indexOf('=');
74
+ const name = eq === -1 ? body : body.slice(0, eq);
75
+ const inline = eq === -1 ? undefined : body.slice(eq + 1);
76
+ // `--no-x` negates a declared boolean. Checked before the plain lookup so
77
+ // a genuine flag literally named `no-cache` still wins.
78
+ const negated = !byName.has(name) && name.startsWith('no-') ? byName.get(name.slice(3)) : undefined;
79
+ if (negated && negated.type === 'boolean') {
80
+ if (inline !== undefined) {
81
+ throw invalidNegation(token, where);
82
+ }
83
+ push(negated, false);
84
+ continue;
85
+ }
86
+ const meta = byName.get(name);
87
+ if (!meta) {
88
+ if (!options.allowUnknownFlags)
89
+ throw unknownFlag(`--${name}`, where, declaredFlags);
90
+ // An undeclared flag has no type to go on, so `--foo bar` is read the
91
+ // way a shell parser does: the next token is its value unless it looks
92
+ // like another flag. Treating it as a bare boolean would drop `bar`
93
+ // entirely — a proxy command would silently lose its arguments.
94
+ if (inline !== undefined) {
95
+ unknown[name] = inline;
96
+ }
97
+ else {
98
+ const next = argv[i + 1];
99
+ if (next !== undefined && (!next.startsWith('-') || next === '-')) {
100
+ unknown[name] = next;
101
+ i++;
102
+ }
103
+ else {
104
+ unknown[name] = true;
105
+ }
106
+ }
107
+ continue;
108
+ }
109
+ i = consume({ meta, value: inline }, argv, i, { push, mention }, where);
110
+ continue;
111
+ }
112
+ // -a, -a value, -abc (grouped booleans)
113
+ if (token.startsWith('-') && token.length > 1) {
114
+ const body = token.slice(1);
115
+ const eq = body.indexOf('=');
116
+ const chars = eq === -1 ? body : body.slice(0, eq);
117
+ const inline = eq === -1 ? undefined : body.slice(eq + 1);
118
+ if (chars.length === 1) {
119
+ const meta = byAlias.get(chars);
120
+ if (!meta) {
121
+ if (!options.allowUnknownFlags)
122
+ throw unknownFlag(`-${chars}`, where, declaredFlags);
123
+ if (inline !== undefined) {
124
+ unknown[chars] = inline;
125
+ }
126
+ else {
127
+ const next = argv[i + 1];
128
+ if (next !== undefined && (!next.startsWith('-') || next === '-')) {
129
+ unknown[chars] = next;
130
+ i++;
131
+ }
132
+ else {
133
+ unknown[chars] = true;
134
+ }
135
+ }
136
+ continue;
137
+ }
138
+ i = consume({ meta, value: inline }, argv, i, { push, mention }, where);
139
+ continue;
140
+ }
141
+ // A group like `-rs` can only be booleans: there is no way to attach a
142
+ // value to more than one flag at a time.
143
+ for (const char of chars) {
144
+ const meta = byAlias.get(char);
145
+ if (!meta) {
146
+ if (!options.allowUnknownFlags)
147
+ throw unknownFlag(`-${char}`, where, declaredFlags);
148
+ unknown[char] = true;
149
+ continue;
150
+ }
151
+ if (meta.type !== 'boolean') {
152
+ throw new ReamError('E_CONSOLE_INVALID_FLAG_GROUP', `Cannot group "-${char}" with other flags${where} — "--${meta.flagName}" expects a value.`, { hint: `Pass it on its own: -${char} <value>` });
153
+ }
154
+ push(meta, true);
155
+ }
156
+ continue;
157
+ }
158
+ positionals.push(token);
159
+ }
160
+ const extraArgs = [];
161
+ const strict = options.validate !== false;
162
+ const flags = applyParse(declaredFlags, materialiseFlags(declaredFlags, collected, unknown, where, strict));
163
+ const args = applyParse(declaredArgs, materialiseArgs(declaredArgs, positionals, where, options.allowUnknownFlags === true, extraArgs, strict));
164
+ // Rekeyed into Console's shape only here: defaults and `parse` are applied per
165
+ // DECLARATION, which needs the property name, while what comes out describes
166
+ // what was typed — positionals as a list, flags under their CLI name.
167
+ const byFlagName = { ...unknown };
168
+ for (const meta of declaredFlags) {
169
+ if (meta.propertyName in flags)
170
+ byFlagName[meta.flagName] = flags[meta.propertyName];
171
+ }
172
+ return {
173
+ unknownFlags: Object.keys(unknown),
174
+ flags: byFlagName,
175
+ args: declaredArgs.map((meta) => args[meta.propertyName]),
176
+ extraArgs,
177
+ _: extraArgs,
178
+ nodeArgs: [],
179
+ };
180
+ }
181
+ /**
182
+ * Run each declared input's `parse` callback over the materialised value.
183
+ *
184
+ * Applied last, on the already-typed value, so `parse` receives a number for a
185
+ * number flag rather than the raw token — and only for inputs that were
186
+ * actually provided or defaulted, never for an absent optional one.
187
+ */
188
+ function applyParse(declared, values) {
189
+ for (const meta of declared) {
190
+ if (meta.parse === undefined)
191
+ continue;
192
+ const current = values[meta.propertyName];
193
+ if (current === undefined)
194
+ continue;
195
+ Reflect.set(values, meta.propertyName, Reflect.apply(meta.parse, undefined, [current]));
196
+ }
197
+ return values;
198
+ }
199
+ /**
200
+ * Attach a value to a flag, pulling the next argv token when the value was not
201
+ * written inline. Returns the new cursor position.
202
+ */
203
+ function consume(raw, argv, index, collect, where) {
204
+ const { push, mention } = collect;
205
+ const { meta, value } = raw;
206
+ if (meta.type === 'boolean') {
207
+ if (value === undefined) {
208
+ push(meta, true);
209
+ return index;
210
+ }
211
+ // `--force=false` is explicit enough to honour; anything else is a typo.
212
+ if (value === 'true' || value === 'false') {
213
+ push(meta, value === 'true');
214
+ return index;
215
+ }
216
+ throw new ReamError('E_CONSOLE_INVALID_FLAG_VALUE', `Flag "--${meta.flagName}"${where} is a boolean and cannot take the value "${value}".`, { hint: `Use --${meta.flagName} or --no-${meta.flagName}` });
217
+ }
218
+ if (value !== undefined) {
219
+ push(meta, value);
220
+ return index;
221
+ }
222
+ // Value-taking flag with no inline value: the next token is it. A token that
223
+ // itself looks like a flag is NOT consumed — `--email --name x` is a mistake
224
+ // worth reporting, not an email of "--name".
225
+ const next = argv[index + 1];
226
+ if (next === undefined || (next.startsWith('-') && next !== '-')) {
227
+ // Unless the flag says an empty value is meaningful (Console
228
+ // `allowEmptyValue`), in which case the mention itself is the value.
229
+ if (meta.allowEmptyValue === true) {
230
+ // An array flag with nothing behind it is an EMPTY list, not a list
231
+ // holding one empty string — `mention` records it without a value.
232
+ if (meta.type === 'array')
233
+ mention(meta);
234
+ else
235
+ push(meta, '');
236
+ return index;
237
+ }
238
+ throw new ReamError('E_CONSOLE_MISSING_FLAG_VALUE', `Flag "--${meta.flagName}"${where} expects a value.`, { hint: `Example: --${meta.flagName}=<value>` });
239
+ }
240
+ push(meta, next);
241
+ return index + 1;
242
+ }
243
+ /** Apply types, defaults and required checks to the collected flag values. */
244
+ function materialiseFlags(declared, collected, unknown, where, strict) {
245
+ const out = { ...unknown };
246
+ for (const meta of declared) {
247
+ const values = collected.get(meta.propertyName);
248
+ if (values === undefined) {
249
+ if (meta.default !== undefined)
250
+ out[meta.propertyName] = meta.default;
251
+ else if (meta.required && strict) {
252
+ throw new ReamError('E_CONSOLE_MISSING_FLAG', `Missing required flag "--${meta.flagName}"${where}.`);
253
+ }
254
+ continue;
255
+ }
256
+ switch (meta.type) {
257
+ case 'array':
258
+ out[meta.propertyName] = values.map(String);
259
+ break;
260
+ case 'number': {
261
+ // Last one wins for scalars, matching how shells are normally used.
262
+ const last = String(values[values.length - 1]);
263
+ const parsed = Number(last);
264
+ if (last.trim() === '' || Number.isNaN(parsed)) {
265
+ throw new ReamError('E_CONSOLE_INVALID_FLAG_VALUE', `Flag "--${meta.flagName}"${where} expects a number, got "${last}".`);
266
+ }
267
+ out[meta.propertyName] = parsed;
268
+ break;
269
+ }
270
+ case 'boolean':
271
+ out[meta.propertyName] = Boolean(values[values.length - 1]);
272
+ break;
273
+ default:
274
+ out[meta.propertyName] = String(values[values.length - 1]);
275
+ }
276
+ }
277
+ return out;
278
+ }
279
+ /** Map positionals onto declared arguments, honouring `@args.spread()`. */
280
+ function materialiseArgs(declared, positionals, where, allowExtra, extraArgs, strict) {
281
+ const out = {};
282
+ let cursor = 0;
283
+ for (const meta of declared) {
284
+ if (meta.type === 'spread') {
285
+ const rest = positionals.slice(cursor);
286
+ cursor = positionals.length;
287
+ if (rest.length === 0) {
288
+ // No default and nothing to collect: the argument is UNDEFINED, not an
289
+ // empty list (Console). A command that distinguishes "not given" from
290
+ // "given empty" must be able to tell them apart.
291
+ if (meta.default !== undefined)
292
+ out[meta.propertyName] = meta.default;
293
+ else if (meta.required && strict)
294
+ throw missingArgument(meta, where);
295
+ continue;
296
+ }
297
+ out[meta.propertyName] = rest;
298
+ continue;
299
+ }
300
+ const value = positionals[cursor];
301
+ cursor++;
302
+ if (value === undefined) {
303
+ if (meta.default !== undefined)
304
+ out[meta.propertyName] = meta.default;
305
+ else if (meta.required && strict)
306
+ throw missingArgument(meta, where);
307
+ continue;
308
+ }
309
+ // An empty positional is nearly always a shell variable that did not
310
+ // expand, so it is reported rather than accepted (Console) — unless the
311
+ // argument declares that an empty value means something.
312
+ if (value === '' && meta.allowEmptyValue !== true && strict) {
313
+ throw new ReamError('E_CONSOLE_MISSING_ARGUMENT_VALUE', `Missing value for argument "${meta.argumentName}"${where}.`);
314
+ }
315
+ out[meta.propertyName] = value;
316
+ }
317
+ // Anything left over was never asked for. Swallowing it hides a typo:
318
+ // `greet john extra` would run as `greet john`, silently dropping the rest.
319
+ // A `spread` argument consumes the tail, so this only fires without one.
320
+ if (cursor < positionals.length) {
321
+ const extra = positionals.slice(cursor);
322
+ // A proxy command (allowUnknownFlags) keeps them — forwarding them is its
323
+ // whole purpose. Anything else reports them, because swallowing a
324
+ // positional hides a typo.
325
+ if (allowExtra) {
326
+ extraArgs.push(...extra);
327
+ return out;
328
+ }
329
+ throw new ReamError('E_CONSOLE_UNEXPECTED_ARGUMENT', `Unexpected argument${extra.length > 1 ? 's' : ''} ${extra.map((value) => `"${value}"`).join(', ')}${where}.`, {
330
+ hint: declared.length === 0
331
+ ? 'This command takes no positional arguments.'
332
+ : `It takes ${declared.length}: ${declared.map((arg) => arg.argumentName).join(', ')}.`,
333
+ });
334
+ }
335
+ return out;
336
+ }
337
+ /**
338
+ * Check a parsed input against a command's declarations (Console `validate`).
339
+ *
340
+ * Separate from parsing because the ORDER matters: Console runs the global-flag
341
+ * listeners between the two, which is what lets `--help` work on a command
342
+ * whose flags are required. One implementation, called by the kernel and by
343
+ * `BaseCommand.validate()`.
344
+ *
345
+ * Positionals are accepted as a list (Console's shape) or keyed by property name
346
+ * (what a hand-built Ream input holds).
347
+ */
348
+ export function validateParsed(parsed, declarations) {
349
+ const where = declarations.commandName ? ` for "${declarations.commandName}"` : '';
350
+ const byPosition = Array.isArray(parsed.args) ? parsed.args : undefined;
351
+ const byName = byPosition === undefined ? { ...parsed.args } : {};
352
+ (declarations.args ?? []).forEach((arg, index) => {
353
+ const value = byPosition === undefined ? byName[arg.propertyName] : byPosition[index];
354
+ if (arg.required && value === undefined)
355
+ throw missingArgument(arg, where);
356
+ if (value === undefined || arg.allowEmptyValue === true)
357
+ return;
358
+ if (value === '' || (Array.isArray(value) && value.length === 0)) {
359
+ throw new ReamError('E_CONSOLE_MISSING_ARGUMENT_VALUE', `Missing value for argument "${arg.argumentName}"${where}.`);
360
+ }
361
+ });
362
+ const unknown = parsed.unknownFlags ?? [];
363
+ if (declarations.allowUnknownFlags !== true && unknown.length > 0) {
364
+ const flag = unknown[0] ?? '';
365
+ throw new ReamError('E_CONSOLE_UNKNOWN_FLAG', `Unknown flag "${flag.length === 1 ? `-${flag}` : `--${flag}`}"${where}.`);
366
+ }
367
+ const flags = parsed.flags ?? {};
368
+ for (const flag of declarations.flags ?? []) {
369
+ // Keyed by flag name (Console, and what the parser returns) or by property
370
+ // name — a hand-built input must validate whichever shape it was written in.
371
+ const key = Object.hasOwn(flags, flag.flagName) ? flag.flagName : flag.propertyName;
372
+ const mentioned = Object.hasOwn(flags, key);
373
+ const value = flags[key];
374
+ if (flag.required && !mentioned) {
375
+ throw new ReamError('E_CONSOLE_MISSING_FLAG', `Missing required flag "--${flag.flagName}"${where}.`);
376
+ }
377
+ if (!mentioned || flag.allowEmptyValue === true)
378
+ continue;
379
+ if (flag.type === 'number') {
380
+ if (value === undefined || Number.isNaN(value)) {
381
+ throw new ReamError('E_CONSOLE_INVALID_FLAG_VALUE', `Flag "--${flag.flagName}"${where} expects a number, got "${String(value)}".`);
382
+ }
383
+ continue;
384
+ }
385
+ // A mentioned string/array flag with nothing behind it: `--name` alone
386
+ // yields '' from a parser, and an empty array for a repeatable flag.
387
+ if (flag.type === 'boolean')
388
+ continue;
389
+ if (value === '' || (Array.isArray(value) && value.length === 0)) {
390
+ throw new ReamError('E_CONSOLE_MISSING_FLAG_VALUE', `Missing value for flag "--${flag.flagName}"${where}.`);
391
+ }
392
+ }
393
+ }
394
+ /**
395
+ * Assign the parsed values to the properties they were declared on.
396
+ *
397
+ * The single hydration path: `BaseCommand.hydrate()` calls it, and so does the
398
+ * kernel for a command declared structurally, which has no `hydrate()` of its
399
+ * own. Both input shapes are accepted — positionals as a list (what the parser
400
+ * now returns, and Console's shape) or keyed by property name, flags under their
401
+ * flag name or their property name — because a hand-built input is a documented
402
+ * use case.
403
+ */
404
+ export function assignParsedValues(target, declaredArgs, declaredFlags, parsed) {
405
+ const byPosition = Array.isArray(parsed.args) ? parsed.args : undefined;
406
+ const byArgName = byPosition === undefined ? { ...parsed.args } : {};
407
+ declaredArgs.forEach((meta, index) => {
408
+ define(target, meta.propertyName, byPosition?.[index] ?? byArgName[meta.propertyName]);
409
+ });
410
+ for (const meta of declaredFlags) {
411
+ const key = Object.hasOwn(parsed.flags, meta.flagName) ? meta.flagName : meta.propertyName;
412
+ define(target, meta.propertyName, parsed.flags[key]);
413
+ }
414
+ }
415
+ /** Writable and enumerable, as Console's `hydrate` defines them. */
416
+ function define(target, property, value) {
417
+ Object.defineProperty(target, property, {
418
+ value,
419
+ enumerable: true,
420
+ writable: true,
421
+ configurable: true,
422
+ });
423
+ }
424
+ /**
425
+ * Exported so `BaseCommand.validate()` reports a missing argument with the very
426
+ * message the parser uses — two wordings for one rule is how they drift apart.
427
+ */
428
+ export function missingArgument(meta, where = '') {
429
+ return new ReamError('E_CONSOLE_MISSING_ARGUMENT', `Missing required argument "${meta.argumentName}"${where}.`, meta.description ? { hint: meta.description } : undefined);
430
+ }
431
+ function unknownFlag(token, where, declared) {
432
+ const known = declared.map((f) => `--${f.flagName}`).join(', ');
433
+ return new ReamError('E_CONSOLE_UNKNOWN_FLAG', `Unknown flag "${token}"${where}.`, {
434
+ hint: known.length > 0 ? `Known flags: ${known}` : 'This command declares no flags.',
435
+ });
436
+ }
437
+ function invalidNegation(token, where) {
438
+ return new ReamError('E_CONSOLE_INVALID_FLAG_VALUE', `"${token}"${where} negates a boolean flag and cannot carry a value.`);
439
+ }
440
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/console/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Interactive prompts (Console / `@poppinss/prompts` surface).
3
+ *
4
+ * Dependency-free, which sets one deliberate boundary: selection prompts are
5
+ * answered by typing a number or a name, not by arrow-key navigation. Doing
6
+ * that properly means raw mode, cursor control and redraw handling — a terminal
7
+ * widget toolkit, which is what enquirer is. Everything else matches Console: the
8
+ * method names, the option bag (`validate` / `default` / `hint` / `name` /
9
+ * `result` / `format`), and the trap API that makes prompts testable.
10
+ */
11
+ /** A selectable option — a bare string, or a value with its display text. */
12
+ export type PromptChoice = string | {
13
+ name: string;
14
+ message?: string;
15
+ hint?: string;
16
+ };
17
+ /**
18
+ * Options for the selection prompts.
19
+ *
20
+ * `default` is an INDEX here, not a value — that is how Adonis spells it for
21
+ * `choice` / `multiple` / `autocomplete`.
22
+ */
23
+ export interface SelectPromptOptions extends Omit<PromptOptions, 'default'> {
24
+ default?: number | readonly number[];
25
+ }
26
+ /**
27
+ * Options for `multiple()`.
28
+ *
29
+ * `validate` and `result` receive the whole selection, not each item: the
30
+ * prompt's value IS the array, and per-item calls would make a rule like "pick
31
+ * at least two" impossible to express.
32
+ */
33
+ export interface MultiplePromptOptions extends Omit<SelectPromptOptions, 'validate' | 'result' | 'format'> {
34
+ validate?: (values: string[]) => boolean | string | Promise<boolean | string>;
35
+ result?: (values: string[]) => unknown;
36
+ }
37
+ export interface PromptOptions<T = string> {
38
+ /** Used when the answer is empty. */
39
+ default?: T;
40
+ /** Identifies the prompt for {@link Prompt.trap}. Defaults to the message. */
41
+ name?: string;
42
+ /** Shown next to the question. */
43
+ hint?: string;
44
+ /** Return `true` to accept, or a string describing what is wrong. */
45
+ validate?: (value: T) => boolean | string | Promise<boolean | string>;
46
+ /** Transforms the value that is returned. */
47
+ result?: (value: T) => unknown;
48
+ /**
49
+ * Formats what is echoed as the user types — display only.
50
+ *
51
+ * It does NOT change the value the prompt returns: Console documents it as
52
+ * "affecting only the CLI output", and treating it as a transform would make
53
+ * a ported command receive a different value. Use `result` to transform.
54
+ */
55
+ format?: (value: T) => T;
56
+ }
57
+ /**
58
+ * Scripted answer builder — Console's `prompt.trap(name)`.
59
+ *
60
+ * Without it a command that asks anything is untestable: the test would either
61
+ * hang on a prompt or need a fake terminal.
62
+ */
63
+ export declare class PromptTrap {
64
+ #private;
65
+ constructor(install: (value: unknown) => void);
66
+ /** Answer a text/secure prompt with this value. */
67
+ replyWith(value: string): void;
68
+ /** Answer a confirm/toggle prompt with yes. */
69
+ accept(): void;
70
+ /** Answer a confirm/toggle prompt with no. */
71
+ reject(): void;
72
+ /** Pick the option at this index (choice / autocomplete). */
73
+ chooseOption(index?: number): void;
74
+ /** Pick these indexes (multiple). */
75
+ chooseOptions(indexes: readonly number[]): void;
76
+ }
77
+ /**
78
+ * Options for `confirm` / `toggle`. `result` may map the boolean to something
79
+ * else, which is why the return type follows it (Console documents `result` for
80
+ * every prompt).
81
+ */
82
+ export interface BooleanPromptOptions<R = boolean> extends Omit<PromptOptions<boolean>, 'result' | 'format'> {
83
+ result?: (value: boolean) => R;
84
+ }
85
+ export declare class Prompt {
86
+ #private;
87
+ /**
88
+ * Script the next answer for the prompt registered under `name`
89
+ * (`options.name`, defaulting to the message).
90
+ */
91
+ trap(name: string): PromptTrap;
92
+ /** Traps that were installed but never reached — useful in assertions. */
93
+ get pendingTraps(): string[];
94
+ ask(message: string, options?: PromptOptions): Promise<unknown>;
95
+ /** Masked input, for passwords and tokens. */
96
+ secure(message: string, options?: PromptOptions): Promise<unknown>;
97
+ confirm(message: string, options?: BooleanPromptOptions): Promise<boolean>;
98
+ confirm<R>(message: string, options: BooleanPromptOptions<R>): Promise<R>;
99
+ /** Two custom labels instead of yes/no (Console `toggle`). */
100
+ toggle(message: string, labels?: readonly [string, string], options?: BooleanPromptOptions): Promise<boolean>;
101
+ toggle<R>(message: string, labels: readonly [string, string] | undefined, options: BooleanPromptOptions<R>): Promise<R>;
102
+ /** Pick one option (Console `choice`). */
103
+ choice(message: string, choices: readonly PromptChoice[], options?: SelectPromptOptions): Promise<unknown>;
104
+ /** Pick several options (Console `multiple`). */
105
+ multiple(message: string, choices: readonly PromptChoice[], options?: MultiplePromptOptions): Promise<unknown>;
106
+ /**
107
+ * Pick one option by typing part of its name (Console `autocomplete`).
108
+ *
109
+ * Substring matching rather than fuzzy scoring — predictable, and enough for
110
+ * the "too many options to list" case it exists for.
111
+ */
112
+ autocomplete(message: string, choices: readonly PromptChoice[], options?: SelectPromptOptions & {
113
+ limit?: number;
114
+ }): Promise<unknown>;
115
+ /**
116
+ * Read one line from the terminal.
117
+ *
118
+ * `protected` on purpose: it is the single seam through which input enters,
119
+ * so a test (or a future non-readline frontend) can substitute it by
120
+ * subclassing instead of faking a TTY.
121
+ */
122
+ protected readLine(query: string, masked?: boolean): Promise<string>;
123
+ }
124
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/console/prompts.ts"],"names":[],"mappings":"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"}