cli-forge 0.4.0 → 0.6.0

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.
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InternalCLI = void 0;
4
4
  exports.cli = cli;
5
5
  const parser_1 = require("@cli-forge/parser");
6
+ const utils_1 = require("./utils");
7
+ const interactive_shell_1 = require("./interactive-shell");
6
8
  /**
7
9
  * The base class for a CLI application. This class is used to define the structure of the CLI.
8
10
  *
@@ -24,10 +26,34 @@ const parser_1 = require("@cli-forge/parser");
24
26
  */
25
27
  class InternalCLI {
26
28
  name;
29
+ /**
30
+ * For internal use only. Stick to properties available on {@link CLI}.
31
+ */
27
32
  registeredCommands = {};
33
+ /**
34
+ * For internal use only. Stick to properties available on {@link CLI}.
35
+ */
28
36
  commandChain = [];
29
- requiresCommand = false;
37
+ requiresCommand = 'IMPLICIT';
30
38
  _configuration;
39
+ _versionOverride;
40
+ registeredErrorHandlers = [
41
+ (e, actions) => {
42
+ if (e instanceof parser_1.ValidationFailedError) {
43
+ this.printHelp();
44
+ console.log();
45
+ console.log(e.message);
46
+ console.log(e.errors.map((e) => ` - ${e.message}`).join('\n'));
47
+ actions.exit(1);
48
+ }
49
+ },
50
+ ];
51
+ get configuration() {
52
+ return this._configuration;
53
+ }
54
+ set configuration(value) {
55
+ this._configuration = value;
56
+ }
31
57
  parser = new parser_1.ArgvParser({
32
58
  unmatchedParser: (arg) => {
33
59
  // eslint-disable-next-line @typescript-eslint/no-this-alias
@@ -37,32 +63,39 @@ class InternalCLI {
37
63
  }
38
64
  const command = currentCommand.registeredCommands[arg];
39
65
  if (command && command.configuration) {
66
+ command.parser = this.parser;
40
67
  command.configuration.builder?.(command);
41
68
  this.commandChain.push(arg);
42
69
  return true;
43
70
  }
44
71
  return false;
45
72
  },
46
- }).option('help', {
73
+ })
74
+ .option('help', {
47
75
  type: 'boolean',
48
76
  alias: ['h'],
49
77
  description: 'Show help for the current command',
78
+ })
79
+ .option('version', {
80
+ type: 'boolean',
81
+ description: 'Show the version number for the CLI',
50
82
  });
51
83
  /**
52
84
  * @param name What should the name of the cli command be?
53
85
  * @param configuration Configuration for the current CLI command.
54
86
  */
55
- constructor(name) {
87
+ constructor(name, rootCommandConfiguration) {
56
88
  this.name = name;
57
- }
58
- get configuration() {
59
- return this._configuration;
60
- }
61
- set configuration(value) {
62
- this._configuration = value;
89
+ if (rootCommandConfiguration) {
90
+ this.withRootCommandConfiguration(rootCommandConfiguration);
91
+ }
92
+ else {
93
+ this.requiresCommand = 'IMPLICIT';
94
+ }
63
95
  }
64
96
  withRootCommandConfiguration(configuration) {
65
97
  this.configuration = configuration;
98
+ this.requiresCommand = false;
66
99
  return this;
67
100
  }
68
101
  command(keyOrCommand, options) {
@@ -72,15 +105,14 @@ class InternalCLI {
72
105
  throw new Error('options must be provided when calling `command` with a string');
73
106
  }
74
107
  if (key === '$0') {
75
- this.configuration = {
76
- ...this.configuration,
108
+ this.withRootCommandConfiguration({
109
+ ...this._configuration,
77
110
  builder: options.builder,
78
111
  handler: options.handler,
79
112
  description: options.description,
80
- };
113
+ });
81
114
  }
82
115
  this.registeredCommands[key] = new InternalCLI(key).withRootCommandConfiguration(options);
83
- this.registeredCommands[key].parser = this.parser;
84
116
  }
85
117
  else if (keyOrCommand instanceof InternalCLI) {
86
118
  const cmd = keyOrCommand;
@@ -99,7 +131,6 @@ class InternalCLI {
99
131
  this.registeredCommands[val.name] = val;
100
132
  // Include any options that were defined via cli(...).option() instead of via builder
101
133
  this.parser.augment(val.parser);
102
- val.parser = this.parser;
103
134
  }
104
135
  else {
105
136
  const { name, ...configuration } = val;
@@ -110,14 +141,43 @@ class InternalCLI {
110
141
  }
111
142
  option(name, config) {
112
143
  this.parser.option(name, config);
144
+ // Interface modifies the return type to reflect new params, cast is necessay.... I think 🤔
113
145
  return this;
114
146
  }
115
147
  positional(name, config) {
116
148
  this.parser.positional(name, config);
149
+ // Interface modifies the return type to reflect new params, cast is necessay.... I think 🤔
150
+ return this;
151
+ }
152
+ conflicts(...args) {
153
+ this.parser.conflicts(...args);
154
+ return this;
155
+ }
156
+ implies(option, ...impliedOptions) {
157
+ this.parser.implies(option, ...impliedOptions);
158
+ return this;
159
+ }
160
+ env(prefix = (0, parser_1.fromCamelOrDashedCaseToConstCase)(this.name)) {
161
+ this.parser.env(prefix);
117
162
  return this;
118
163
  }
119
164
  demandCommand() {
120
- this.requiresCommand = true;
165
+ this.requiresCommand = 'EXPLICIT';
166
+ return this;
167
+ }
168
+ usage(usageText) {
169
+ this.configuration ??= {};
170
+ this.configuration.usage = usageText;
171
+ return this;
172
+ }
173
+ examples(...examples) {
174
+ this.configuration ??= {};
175
+ this.configuration.examples ??= [];
176
+ this.configuration.examples.push(...examples);
177
+ return this;
178
+ }
179
+ version(version) {
180
+ this._versionOverride = version;
121
181
  return this;
122
182
  }
123
183
  /**
@@ -131,11 +191,13 @@ class InternalCLI {
131
191
  for (const key of this.commandChain) {
132
192
  command = command.registeredCommands[key];
133
193
  }
134
- help.push(`Usage: ${[
135
- this.name,
136
- ...this.commandChain,
137
- ...command.parser.configuredPositionals.map((p) => `[${p.key}]`),
138
- ].join(' ')}`);
194
+ help.push(`Usage: ${this.configuration?.usage
195
+ ? this.configuration.usage
196
+ : [
197
+ this.name,
198
+ ...this.commandChain,
199
+ ...command.parser.configuredPositionals.map((p) => p.required ? `<${p.key}>` : `[${p.key}]`),
200
+ ].join(' ')}`);
139
201
  if (command.configuration?.description) {
140
202
  help.push(command.configuration.description);
141
203
  }
@@ -149,13 +211,57 @@ class InternalCLI {
149
211
  ? ' - ' + subcommand.configuration.description
150
212
  : ''}`);
151
213
  }
152
- if (Object.keys(this.parser.configuredOptions).length > 0) {
214
+ const nonpositionalOptions = Object.values(command.parser.configuredOptions).filter((c) => !c.positional);
215
+ if (nonpositionalOptions.length > 0) {
153
216
  help.push('');
154
217
  help.push('Options:');
155
218
  }
156
- for (const key in this.parser.configuredOptions) {
157
- const option = this.parser.configuredOptions[key];
158
- help.push(` --${key}${option.description ? ' - ' + option.description : ''}`);
219
+ function getOptionParts(option) {
220
+ const parts = [];
221
+ if (option.description) {
222
+ parts.push(option.description);
223
+ }
224
+ if (option.choices) {
225
+ const choices = typeof option.choices === 'function'
226
+ ? option.choices()
227
+ : option.choices;
228
+ parts.push(`(${choices.join(', ')})`);
229
+ }
230
+ if (option.default) {
231
+ parts.push('[default: ' + option.default + ']');
232
+ }
233
+ else if (option.required) {
234
+ parts.push('[required]');
235
+ }
236
+ if (option.deprecated) {
237
+ parts.push('[deprecated: ' + option.deprecated + ']');
238
+ }
239
+ return parts;
240
+ }
241
+ const allParts = [];
242
+ for (const option of nonpositionalOptions) {
243
+ allParts.push([option.key, ...getOptionParts(option)]);
244
+ }
245
+ const paddingValues = [];
246
+ for (let i = 0; i < allParts.length; i++) {
247
+ for (let j = 0; j < allParts[i].length; j++) {
248
+ if (!paddingValues[j]) {
249
+ paddingValues[j] = 0;
250
+ }
251
+ paddingValues[j] = Math.max(paddingValues[j], allParts[i][j].length);
252
+ }
253
+ }
254
+ for (const [key, ...parts] of allParts) {
255
+ help.push(` --${key.padEnd(paddingValues[0])}${parts.length ? ' - ' : ''}${parts
256
+ .map((part, i) => part.padEnd(paddingValues[i + 1]))
257
+ .join(' ')}`);
258
+ }
259
+ if (command.configuration?.examples?.length) {
260
+ help.push('');
261
+ help.push('Examples:');
262
+ for (const example of command.configuration.examples) {
263
+ help.push(` \`${example}\``);
264
+ }
159
265
  }
160
266
  if (Object.keys(command.registeredCommands).length > 0) {
161
267
  help.push(' ');
@@ -174,7 +280,7 @@ class InternalCLI {
174
280
  * @param cmd The command to run.
175
281
  * @param args The arguments to pass to the command.
176
282
  */
177
- async runCommand(cmd, args) {
283
+ async runCommand(cmd, args, originalArgV) {
178
284
  try {
179
285
  if (cmd.requiresCommand) {
180
286
  throw new Error(`${[this.name, ...this.commandChain].join(' ')} requires a command`);
@@ -185,7 +291,26 @@ class InternalCLI {
185
291
  });
186
292
  }
187
293
  else {
188
- throw new Error(`${[this.name, ...this.commandChain].join(' ')} is not implemented.`);
294
+ // We can treat a command as a subshell if it has subcommands
295
+ if (Object.keys(cmd.registeredCommands).length > 0) {
296
+ cmd.command('help', { handler: () => this.printHelp() });
297
+ if (!interactive_shell_1.INTERACTIVE_SHELL) {
298
+ const tui = new interactive_shell_1.InteractiveShell(this, {
299
+ prependArgs: originalArgV,
300
+ });
301
+ await new Promise((res) => {
302
+ ['SIGINT', 'SIGTERM', 'SIGQUIT'].forEach((s) => process.on(s, () => {
303
+ tui.close();
304
+ res();
305
+ }));
306
+ });
307
+ }
308
+ }
309
+ // No subcommands so subshell doesn't make sense
310
+ // No handler, so nothing to run
311
+ else {
312
+ throw new Error(`${[this.name, ...this.commandChain].join(' ')} is not implemented.`);
313
+ }
189
314
  }
190
315
  }
191
316
  catch (e) {
@@ -194,31 +319,109 @@ class InternalCLI {
194
319
  this.printHelp();
195
320
  }
196
321
  }
322
+ enableInteractiveShell() {
323
+ if (this.requiresCommand === 'EXPLICIT') {
324
+ throw new Error('Interactive shell is not supported for commands that require a command.');
325
+ }
326
+ else if (process.stdout.isTTY) {
327
+ this.requiresCommand = false;
328
+ }
329
+ return this;
330
+ }
331
+ versionHandler() {
332
+ if (this._versionOverride) {
333
+ console.log(this._versionOverride);
334
+ return;
335
+ }
336
+ let mainFile = require?.main?.filename;
337
+ mainFile ??= (0, utils_1.getCallingFile)();
338
+ if (!mainFile) {
339
+ console.log('unknown');
340
+ return;
341
+ }
342
+ const packageJson = (0, utils_1.getParentPackageJson)(mainFile);
343
+ console.log(packageJson.version ?? 'unknown');
344
+ }
345
+ async withErrorHandlers(cb) {
346
+ try {
347
+ return await cb();
348
+ }
349
+ catch (e) {
350
+ let handled = false;
351
+ for (const handler of this.registeredErrorHandlers) {
352
+ try {
353
+ handler(e, {
354
+ exit: (c) => {
355
+ process.exit(c);
356
+ },
357
+ });
358
+ // Error was handled, no need to continue
359
+ break;
360
+ }
361
+ catch {
362
+ // Error was not handled, continue to the next handler
363
+ }
364
+ }
365
+ if (!handled) {
366
+ throw e;
367
+ }
368
+ }
369
+ return {};
370
+ }
371
+ errorHandler(handler) {
372
+ this.registeredErrorHandlers.unshift(handler);
373
+ return this;
374
+ }
197
375
  /**
198
376
  * Parses argv and executes the CLI
199
377
  * @param args argv. Defaults to process.argv.slice(2)
200
378
  * @returns Promise that resolves when the handler completes.
201
379
  */
202
- async forge(args = process.argv.slice(2)) {
380
+ forge = (args = (0, parser_1.hideBin)(process.argv)) => this.withErrorHandlers(async () => {
203
381
  // Parsing the args does two things:
204
382
  // - builds argv to pass to handler
205
383
  // - fills the command chain + registers commands
206
- const argv = this.parser.parse(args);
384
+ let argv;
385
+ let validationFailedError;
386
+ try {
387
+ argv = this.parser.parse(args);
388
+ }
389
+ catch (e) {
390
+ if (e instanceof parser_1.ValidationFailedError) {
391
+ argv = e.partialArgV;
392
+ validationFailedError = e;
393
+ }
394
+ else {
395
+ throw e;
396
+ }
397
+ }
207
398
  // eslint-disable-next-line @typescript-eslint/no-this-alias
208
399
  let currentCommand = this;
209
400
  for (const command of this.commandChain) {
210
401
  currentCommand = currentCommand.registeredCommands[command];
211
402
  }
403
+ if (argv.version) {
404
+ this.versionHandler();
405
+ return argv;
406
+ }
212
407
  if (argv.help) {
213
408
  this.printHelp();
214
- return;
409
+ return argv;
215
410
  }
216
- const finalArgV = currentCommand === this
217
- ? (this.configuration?.builder?.(this)
218
- ?.parser ?? this.parser).parse(args)
219
- : argv;
220
- await this.runCommand(currentCommand, finalArgV);
221
- }
411
+ else if (validationFailedError) {
412
+ throw validationFailedError;
413
+ }
414
+ const finalArgV = (() => {
415
+ if (currentCommand === this) {
416
+ if (this.configuration?.builder) {
417
+ return (this.configuration.builder?.(this)).parser.parse(args);
418
+ }
419
+ }
420
+ return argv;
421
+ })();
422
+ await this.runCommand(currentCommand, finalArgV, args);
423
+ return finalArgV;
424
+ });
222
425
  getParser() {
223
426
  return this.parser.asReadonly();
224
427
  }
@@ -227,13 +430,17 @@ class InternalCLI {
227
430
  }
228
431
  clone() {
229
432
  const clone = new InternalCLI(this.name);
433
+ clone.parser = this.parser.clone(clone.parser.options);
230
434
  if (this.configuration) {
231
435
  clone.withRootCommandConfiguration(this.configuration);
232
436
  }
233
- clone.registeredCommands = { ...this.registeredCommands };
437
+ clone.registeredCommands = {};
438
+ for (const command in this.registeredCommands ?? {}) {
439
+ clone.command(this.registeredCommands[command].clone());
440
+ // this.registeredCommands[command].clone();
441
+ }
234
442
  clone.commandChain = [...this.commandChain];
235
443
  clone.requiresCommand = this.requiresCommand;
236
- clone.parser = this.parser.clone();
237
444
  return clone;
238
445
  }
239
446
  }
@@ -245,11 +452,7 @@ exports.InternalCLI = InternalCLI;
245
452
  * @returns A {@link InternalCLI} instance.
246
453
  */
247
454
  function cli(name, rootCommandConfiguration) {
248
- const cli = new InternalCLI(name);
249
- if (rootCommandConfiguration) {
250
- cli.withRootCommandConfiguration(rootCommandConfiguration);
251
- }
252
- return cli;
455
+ return new InternalCLI(name, rootCommandConfiguration);
253
456
  }
254
457
  exports.default = cli;
255
458
  //# sourceMappingURL=cli-forge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-forge.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/cli-forge.ts"],"names":[],"mappings":";;;AA2bA,kBAWC;AAtcD,8CAK2B;AAkI3B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,WAAW;IAkCH;IA/BX,kBAAkB,GAAqC,EAAE,CAAC;IAC1D,YAAY,GAAa,EAAE,CAAC;IAC5B,eAAe,GAAG,KAAK,CAAC;IAExB,cAAc,CAA+B;IAE7C,MAAM,GAAG,IAAI,mBAAU,CAAQ;QACrC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,4DAA4D;YAC5D,IAAI,cAAc,GAAqB,IAAI,CAAC;YAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACxC,cAAc,GAAG,cAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,OAAO,GAAG,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACvD,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBACrC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,WAAW,EAAE,mCAAmC;KACjD,CAAC,CAAC;IAEH;;;OAGG;IACH,YAAmB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAEnC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAY,aAAa,CAAC,KAA8C;QACtE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,4BAA4B,CAC1B,aAAyD;QAEzD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAWD,OAAO,CACL,YAAmD,EACnD,OAAgD;QAEhD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,YAAY,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,GAAG;oBACnB,GAAG,IAAI,CAAC,aAAa;oBACrB,OAAO,EAAE,OAAO,CAAC,OAAc;oBAC/B,OAAO,EAAE,OAAO,CAAC,OAAc;oBAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAC5C,GAAG,CACJ,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACpD,CAAC;aAAM,IAAI,YAAY,YAAY,WAAW,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,YAAY,CAAC;YACzB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,GAAG,YAEO,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAe,IAAI,EAAE,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAID,QAAQ,CAAC,GAAG,EAA2B;QACrC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;gBACxC,qFAAqF;gBACrF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,GAAG,GAEJ,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CACJ,IAAa,EACb,MAAqB;QAErB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,IAAW,CAAC;IACrB,CAAC;IAED,UAAU,CACR,IAAa,EACb,MAAqB;QAErB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,IAAW,CAAC;IACrB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,4DAA4D;QAC5D,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAgB,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,IAAI,CACP,UAAU;YACR,IAAI,CAAC,IAAI;YACT,GAAG,IAAI,CAAC,YAAY;YACpB,GAAG,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;SACjE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACd,CAAC;QACF,IAAI,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,CACP,KAAK,GAAG,GACN,UAAU,CAAC,aAAa,EAAE,WAAW;gBACnC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW;gBAC9C,CAAC,CAAC,EACN,EAAE,CACH,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAI,IAAI,CAAC,MAAM,CAAC,iBAAyB,CACnD,GAAG,CACY,CAAC;YAClB,IAAI,CAAC,IAAI,CACP,OAAO,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,CACP,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAC7C,GAAG,CACJ,uDAAuD,CACzD,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAuB,GAAmB,EAAE,IAAO;QACjE,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CACpE,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;gBAC/B,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE;oBACpC,OAAO,EAAE,GAAG;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,oCAAoC;QACpC,mCAAmC;QACnC,iDAAiD;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,4DAA4D;QAC5D,IAAI,cAAc,GAAqB,IAAI,CAAC;QAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,cAAc,GAAG,cAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GACb,cAAc,KAAK,IAAI;YACrB,CAAC,CAAC,CACG,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,IAAW,CAAwB;gBAChE,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAC1B,CAAC,KAAK,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,IAAI,CAAC;QAEX,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,kBAA2D,CAAC;IAC1E,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,WAAW,CAAQ,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1D,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAS,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAzRD,kCAyRC;AAED;;;;;GAKG;AACH,SAAgB,GAAG,CACjB,IAAY,EACZ,wBAA+D;IAE/D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,wBAAwB,EAAE,CAAC;QAC7B,GAAG,CAAC,4BAA4B,CAAC,wBAAwB,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,GAAiB,CAAC;AAC3B,CAAC;AAED,kBAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"cli-forge.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/cli-forge.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ import { InternalCLI } from './cli-forge';
3
3
  export type Documentation = {
4
4
  name: string;
5
5
  description?: string;
6
+ usage: string;
7
+ examples: string[];
6
8
  options: Readonly<Record<string, OptionConfig & {
7
9
  key: string;
8
10
  }>>;
@@ -11,22 +13,13 @@ export type Documentation = {
11
13
  }>[];
12
14
  subcommands: Documentation[];
13
15
  };
14
- export declare function generateDocumentation(cli: InternalCLI): {
16
+ export declare function generateDocumentation(cli: InternalCLI, commandChain?: string[]): {
15
17
  name: string;
16
18
  description: string | undefined;
17
- options: Readonly<{
18
- unmatched: OptionConfig<any> & {
19
- key: string;
20
- position?: number;
21
- };
22
- '--'?: (OptionConfig<any> & {
23
- key: string;
24
- position?: number;
25
- }) | undefined;
26
- help: OptionConfig<any> & {
27
- key: string;
28
- position?: number;
29
- };
19
+ usage: string;
20
+ examples: string[];
21
+ options: Record<string, OptionConfig & {
22
+ key: string;
30
23
  }>;
31
24
  positionals: readonly Readonly<OptionConfig<any> & {
32
25
  key: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDocumentation = generateDocumentation;
4
- function generateDocumentation(cli) {
4
+ function generateDocumentation(cli, commandChain = []) {
5
5
  // Ensure current command's options are built.
6
6
  if (cli.configuration?.builder) {
7
7
  cli.configuration.builder(cli);
@@ -9,10 +9,23 @@ function generateDocumentation(cli) {
9
9
  const parser = cli.getParser();
10
10
  const options = parser.configuredOptions;
11
11
  const positionals = parser.configuredPositionals;
12
- const subcommands = Object.values(cli.getSubcommands()).map((cmd) => generateDocumentation(cmd.clone()));
12
+ for (const positional of positionals) {
13
+ delete options[positional.key];
14
+ }
15
+ const subcommands = Object.values(cli.getSubcommands()).map((cmd) => generateDocumentation(cmd.clone(), [...commandChain, cli.name]));
13
16
  return {
14
17
  name: cli.name,
15
18
  description: cli.configuration?.description,
19
+ usage: cli.configuration?.usage
20
+ ? commandChain.length
21
+ ? [...commandChain, cli.configuration.usage].join(' ')
22
+ : cli.configuration?.usage
23
+ : [
24
+ ...commandChain,
25
+ cli.name,
26
+ ...positionals.map((p) => (p.required ? `<${p.key}>` : `[${p.key}]`)),
27
+ ].join(' '),
28
+ examples: cli.configuration?.examples ?? [],
16
29
  options,
17
30
  positionals,
18
31
  subcommands,
@@ -1 +1 @@
1
- {"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/documentation.ts"],"names":[],"mappings":";;AAWA,sDAoBC;AApBD,SAAgB,qBAAqB,CAAC,GAAgB;IACpD,8CAA8C;IAC9C,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACjD,MAAM,WAAW,GAAoB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAC1E,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAC5C,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW;QAC3C,OAAO;QACP,WAAW;QACX,WAAW;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/documentation.ts"],"names":[],"mappings":";;AAaA,sDAqCC;AArCD,SAAgB,qBAAqB,CACnC,GAAgB,EAChB,eAAyB,EAAE;IAE3B,8CAA8C;IAC9C,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAE/B,MAAM,OAAO,GACX,MAAM,CAAC,iBAAiB,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,WAAW,GAAoB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAC1E,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CACzE,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW;QAC3C,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK;YAC7B,CAAC,CAAC,YAAY,CAAC,MAAM;gBACnB,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtD,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK;YAC5B,CAAC,CAAC;gBACE,GAAG,YAAY;gBACf,GAAG,CAAC,IAAI;gBACR,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;aACtE,CAAC,IAAI,CAAC,GAAG,CAAC;QACf,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE;QAC3C,OAAO;QACP,WAAW;QACX,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { InternalCLI } from './cli-forge';
2
+ export interface InteractiveShellOptions {
3
+ prompt?: string;
4
+ prependArgs?: string[];
5
+ }
6
+ export declare let INTERACTIVE_SHELL: InteractiveShell | undefined;
7
+ export declare class InteractiveShell {
8
+ private readonly rl;
9
+ private listeners;
10
+ constructor(cli: InternalCLI, opts?: InteractiveShellOptions);
11
+ registerLineListener(callback: (line: string) => Promise<void>): void;
12
+ close(): void;
13
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InteractiveShell = exports.INTERACTIVE_SHELL = void 0;
4
+ const readline = require("readline");
5
+ const utils_1 = require("./utils");
6
+ const child_process_1 = require("child_process");
7
+ const parser_1 = require("@cli-forge/parser");
8
+ function normalizeShellOptions(cli, options) {
9
+ return {
10
+ prompt: options?.prompt ??
11
+ (() => {
12
+ const chain = [cli.name];
13
+ if (cli.commandChain.length > 2) {
14
+ chain.push('...', ...cli.commandChain[cli.command.length - 1]);
15
+ }
16
+ else {
17
+ chain.push(...cli.commandChain);
18
+ }
19
+ return chain.join(' ') + '> ';
20
+ })(),
21
+ prependArgs: options?.prependArgs ?? [],
22
+ };
23
+ }
24
+ class InteractiveShell {
25
+ rl;
26
+ listeners = [];
27
+ constructor(cli, opts) {
28
+ if (exports.INTERACTIVE_SHELL) {
29
+ throw new Error('Only one interactive shell can be created at a time. Make sure the other instance is closed.');
30
+ }
31
+ exports.INTERACTIVE_SHELL = this;
32
+ const { prompt, prependArgs } = normalizeShellOptions(cli, opts);
33
+ this.rl = readline
34
+ .createInterface({
35
+ input: process.stdin,
36
+ output: process.stdout,
37
+ prompt: prompt,
38
+ })
39
+ .on('SIGINT', () => {
40
+ process.emit('SIGINT');
41
+ });
42
+ this.rl.prompt();
43
+ this.registerLineListener(async (line) => {
44
+ const nextArgs = (0, utils_1.stringToArgs)(line);
45
+ let currentCommand = cli;
46
+ for (const subcommand of cli.commandChain) {
47
+ currentCommand = currentCommand.registeredCommands[subcommand];
48
+ }
49
+ if (currentCommand.registeredCommands[nextArgs[0]]) {
50
+ (0, child_process_1.spawnSync)(process.execPath, [
51
+ ...process.execArgv,
52
+ (0, parser_1.getBin)(process.argv),
53
+ ...prependArgs,
54
+ ...nextArgs,
55
+ ], { stdio: 'inherit' });
56
+ }
57
+ else if (line.trim()) {
58
+ try {
59
+ (0, child_process_1.execSync)(line, { stdio: 'inherit' });
60
+ }
61
+ catch { }
62
+ }
63
+ });
64
+ }
65
+ registerLineListener(callback) {
66
+ const wrapped = async (line) => {
67
+ this.rl.pause();
68
+ await callback(line);
69
+ this.rl.prompt();
70
+ };
71
+ this.listeners.push(wrapped);
72
+ this.rl.on('line', wrapped);
73
+ }
74
+ close() {
75
+ this.listeners.forEach((listener) => this.rl.off('line', listener));
76
+ this.rl.close();
77
+ readline.moveCursor(process.stdout, -1 * this.rl.getCursorPos().cols, 0);
78
+ readline.clearScreenDown(process.stdout);
79
+ if (exports.INTERACTIVE_SHELL === this) {
80
+ exports.INTERACTIVE_SHELL = undefined;
81
+ }
82
+ }
83
+ }
84
+ exports.InteractiveShell = InteractiveShell;
85
+ //# sourceMappingURL=interactive-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-shell.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/interactive-shell.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,mCAAuC;AAEvC,iDAAoD;AACpD,8CAA2C;AAS3C,SAAS,qBAAqB,CAC5B,GAAgB,EAChB,OAAiC;IAEjC,OAAO;QACL,MAAM,EACJ,OAAO,EAAE,MAAM;YACf,CAAC,GAAG,EAAE;gBACJ,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAChC,CAAC,CAAC,EAAE;QACN,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC;AAID,MAAa,gBAAgB;IACV,EAAE,CAAqB;IAChC,SAAS,GAAU,EAAE,CAAC;IAE9B,YAAY,GAAgB,EAAE,IAA8B;QAC1D,IAAI,yBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QACD,yBAAiB,GAAG,IAAI,CAAC;QAEzB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEjE,IAAI,CAAC,EAAE,GAAG,QAAQ;aACf,eAAe,CAAC;YACf,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,MAAM;SACf,CAAC;aACD,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QAEjB,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;YACpC,IAAI,cAAc,GAAG,GAAG,CAAC;YACzB,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC1C,cAAc,GAAG,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,IAAA,yBAAS,EACP,OAAO,CAAC,QAAQ,EAChB;oBACE,GAAG,OAAO,CAAC,QAAQ;oBACnB,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC;oBACpB,GAAG,WAAW;oBACd,GAAG,QAAQ;iBACZ,EACD,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,IAAA,wBAAQ,EAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,QAAyC;QAC5D,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACrC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,yBAAiB,KAAK,IAAI,EAAE,CAAC;YAC/B,yBAAiB,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAtED,4CAsEC"}