@tjalve/cube-cli 0.1.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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/dist/errors/index.d.ts +28 -0
  4. package/dist/errors/index.d.ts.map +1 -0
  5. package/dist/errors/index.js +58 -0
  6. package/dist/errors/index.js.map +1 -0
  7. package/dist/fixtures/cli.d.ts +4 -0
  8. package/dist/fixtures/cli.d.ts.map +1 -0
  9. package/dist/fixtures/cli.js +195 -0
  10. package/dist/fixtures/cli.js.map +1 -0
  11. package/dist/fixtures/metadata.d.ts +347 -0
  12. package/dist/fixtures/metadata.d.ts.map +1 -0
  13. package/dist/fixtures/metadata.js +372 -0
  14. package/dist/fixtures/metadata.js.map +1 -0
  15. package/dist/help/index.d.ts +24 -0
  16. package/dist/help/index.d.ts.map +1 -0
  17. package/dist/help/index.js +254 -0
  18. package/dist/help/index.js.map +1 -0
  19. package/dist/index.d.ts +20 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +21 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/metadata/define.d.ts +11 -0
  24. package/dist/metadata/define.d.ts.map +1 -0
  25. package/dist/metadata/define.js +125 -0
  26. package/dist/metadata/define.js.map +1 -0
  27. package/dist/metadata/index.d.ts +3 -0
  28. package/dist/metadata/index.d.ts.map +1 -0
  29. package/dist/metadata/index.js +2 -0
  30. package/dist/metadata/index.js.map +1 -0
  31. package/dist/metadata/types.d.ts +109 -0
  32. package/dist/metadata/types.d.ts.map +1 -0
  33. package/dist/metadata/types.js +2 -0
  34. package/dist/metadata/types.js.map +1 -0
  35. package/dist/mutation/index.d.ts +55 -0
  36. package/dist/mutation/index.d.ts.map +1 -0
  37. package/dist/mutation/index.js +162 -0
  38. package/dist/mutation/index.js.map +1 -0
  39. package/dist/output/index.d.ts +32 -0
  40. package/dist/output/index.d.ts.map +1 -0
  41. package/dist/output/index.js +94 -0
  42. package/dist/output/index.js.map +1 -0
  43. package/dist/prompts/index.d.ts +37 -0
  44. package/dist/prompts/index.d.ts.map +1 -0
  45. package/dist/prompts/index.js +78 -0
  46. package/dist/prompts/index.js.map +1 -0
  47. package/dist/redaction/index.d.ts +10 -0
  48. package/dist/redaction/index.d.ts.map +1 -0
  49. package/dist/redaction/index.js +83 -0
  50. package/dist/redaction/index.js.map +1 -0
  51. package/dist/registry/index.d.ts +25 -0
  52. package/dist/registry/index.d.ts.map +1 -0
  53. package/dist/registry/index.js +286 -0
  54. package/dist/registry/index.js.map +1 -0
  55. package/dist/runtime/index.d.ts +69 -0
  56. package/dist/runtime/index.d.ts.map +1 -0
  57. package/dist/runtime/index.js +581 -0
  58. package/dist/runtime/index.js.map +1 -0
  59. package/dist/schema/index.d.ts +122 -0
  60. package/dist/schema/index.d.ts.map +1 -0
  61. package/dist/schema/index.js +208 -0
  62. package/dist/schema/index.js.map +1 -0
  63. package/dist/terminal/index.d.ts +31 -0
  64. package/dist/terminal/index.d.ts.map +1 -0
  65. package/dist/terminal/index.js +118 -0
  66. package/dist/terminal/index.js.map +1 -0
  67. package/dist/testing/index.d.ts +85 -0
  68. package/dist/testing/index.d.ts.map +1 -0
  69. package/dist/testing/index.js +293 -0
  70. package/dist/testing/index.js.map +1 -0
  71. package/package.json +107 -0
@@ -0,0 +1,581 @@
1
+ import { Command, Parser } from "@oclif/core";
2
+ import { defineCommand } from "../metadata/index.js";
3
+ import { createCommandRegistry, listCommands } from "../registry/index.js";
4
+ import { normalizeHelpRequest, renderHelp, suggestCommand, suggestFlag } from "../help/index.js";
5
+ import { renderSchemaJson } from "../schema/index.js";
6
+ import { createCliError, exitCodeForCategory, isCliError, renderCliErrorText } from "../errors/index.js";
7
+ import { renderJsonError, renderJsonSuccess } from "../output/index.js";
8
+ export function createCommand(metadata, handler) {
9
+ const args = createOclifArgs(metadata.arguments ?? []);
10
+ const flags = createOclifFlags(metadata.flags ?? []);
11
+ const examples = (metadata.examples ?? []).map((example) => `${example.command} # ${example.description}`);
12
+ class MetadataCommand extends Command {
13
+ static aliases = [...(metadata.aliases ?? [])];
14
+ static args = args;
15
+ static description = metadata.description;
16
+ static examples = examples;
17
+ static flags = flags;
18
+ static id = metadata.name;
19
+ static summary = metadata.description;
20
+ async run() {
21
+ const parsed = await this.parse(MetadataCommand);
22
+ return handler({
23
+ command: metadata,
24
+ args: parsed.args,
25
+ flags: parsed.flags,
26
+ argv: this.argv
27
+ });
28
+ }
29
+ }
30
+ return Object.freeze({ metadata, handler, oclifCommand: MetadataCommand });
31
+ }
32
+ export function createTopicCommand(metadata) {
33
+ return Object.freeze({ metadata });
34
+ }
35
+ export function createSchemaCommand(options) {
36
+ const metadata = defineCommand({
37
+ kind: "command",
38
+ name: "schema",
39
+ description: "Render deterministic command schema as JSON.",
40
+ flags: [
41
+ {
42
+ name: "json",
43
+ description: "Render machine-readable JSON output.",
44
+ type: "boolean"
45
+ }
46
+ ],
47
+ examples: [
48
+ {
49
+ description: "Render the command schema.",
50
+ command: `${options.bin} schema --json`
51
+ }
52
+ ],
53
+ output: {
54
+ formats: ["json"],
55
+ defaultFormat: "json"
56
+ },
57
+ interactions: {
58
+ json: true,
59
+ noColor: true,
60
+ nonInteractive: true,
61
+ ttyPrompt: false
62
+ }
63
+ });
64
+ return createCommand(metadata, () => {
65
+ const resolved = resolveRegistry(options.registry);
66
+ const schemaOptions = options.extensions
67
+ ? {
68
+ packageName: options.packageName,
69
+ packageVersion: options.packageVersion,
70
+ bin: options.bin,
71
+ ...(options.sections ? { sections: options.sections } : {}),
72
+ extensions: options.extensions
73
+ }
74
+ : {
75
+ packageName: options.packageName,
76
+ packageVersion: options.packageVersion,
77
+ bin: options.bin,
78
+ ...(options.sections ? { sections: options.sections } : {})
79
+ };
80
+ return {
81
+ stdout: renderSchemaJson(resolved, schemaOptions),
82
+ jsonStdout: renderSchemaJson(resolved, schemaOptions)
83
+ };
84
+ });
85
+ }
86
+ export function createCli(options) {
87
+ const runtimeCommands = [...options.commands];
88
+ const runtimeMetadata = runtimeCommands.map((command) => command.metadata);
89
+ const registry = createCommandRegistry({
90
+ topics: options.registry.topics,
91
+ commands: mergeCommands(options.registry.commands, runtimeMetadata)
92
+ });
93
+ ensureCommandHandlers(registry, runtimeCommands);
94
+ const packageIdentity = createPackageIdentity(options);
95
+ const runtime = {
96
+ bin: options.bin,
97
+ description: options.description,
98
+ registry,
99
+ commands: Object.freeze(runtimeCommands),
100
+ topics: Object.freeze([...(options.topics ?? [])])
101
+ };
102
+ return Object.freeze(packageIdentity ? { ...runtime, package: packageIdentity } : runtime);
103
+ }
104
+ export async function runCli(cli, argv) {
105
+ const helpRequest = normalizeHelpRequest(argv);
106
+ if (helpRequest) {
107
+ return renderHelpResult(cli, helpRequest);
108
+ }
109
+ const versionRequest = normalizeVersionRequest(argv);
110
+ if (versionRequest) {
111
+ return renderVersionResult(cli, versionRequest.json);
112
+ }
113
+ const match = matchRuntimeCommand(cli, argv);
114
+ if (!match) {
115
+ const attemptedCommand = trimAtFirstFlag(argv).join(" ");
116
+ const suggestion = suggestCommand(cli.registry, attemptedCommand);
117
+ const error = createCliError({
118
+ command: attemptedCommand || "<empty>",
119
+ kind: "unknown-command",
120
+ operation: "match command",
121
+ likelyCause: `No command named "${attemptedCommand || "<empty>"}" is registered.`,
122
+ suggestedNextAction: suggestion ? `Run "${suggestion.value}" instead.` : "Run help to list available commands.",
123
+ category: "usage"
124
+ });
125
+ if (argvRequestsJson(argv)) {
126
+ return renderErrorResult(error, true);
127
+ }
128
+ return {
129
+ exitCode: error.exitCode,
130
+ stdout: "",
131
+ stderr: `Unknown command: ${attemptedCommand || "<empty>"}${suggestion ? `\nDid you mean "${suggestion.value}"?` : ""}\n`
132
+ };
133
+ }
134
+ const jsonMode = commandRequestsJson(match.command.metadata, match.argv);
135
+ const unknownFlag = findUnknownFlag(match.command.metadata, match.argv);
136
+ if (unknownFlag) {
137
+ const suggestion = suggestFlag(match.command.metadata, unknownFlag);
138
+ const error = createCliError({
139
+ command: match.command.metadata.name,
140
+ kind: "unknown-flag",
141
+ operation: "parse flags",
142
+ likelyCause: `Flag "${unknownFlag}" is not defined for ${match.command.metadata.name}.`,
143
+ suggestedNextAction: suggestion ? `Use "${suggestion.value}" instead.` : "Run command help to list supported flags.",
144
+ category: "usage"
145
+ });
146
+ if (jsonMode) {
147
+ return renderErrorResult(error, true);
148
+ }
149
+ return {
150
+ exitCode: error.exitCode,
151
+ stdout: "",
152
+ stderr: `Unknown flag: ${unknownFlag}${suggestion ? `\nDid you mean "${suggestion.value}"?` : ""}\n`
153
+ };
154
+ }
155
+ const negatableConflict = findNegatableFlagConflict(match.command.metadata, match.argv);
156
+ if (negatableConflict) {
157
+ const error = createCliError({
158
+ command: match.command.metadata.name,
159
+ kind: "invalid-command-usage",
160
+ operation: "parse flags",
161
+ likelyCause: `Flag "${negatableConflict}" was provided more than once or with conflicting negated forms.`,
162
+ suggestedNextAction: "Provide either the positive or negative form once.",
163
+ category: "usage"
164
+ });
165
+ if (jsonMode) {
166
+ return renderErrorResult(error, true);
167
+ }
168
+ return {
169
+ exitCode: error.exitCode,
170
+ stdout: "",
171
+ stderr: renderCliErrorText(error)
172
+ };
173
+ }
174
+ const parsed = await parseCommandArgs(match.command.metadata, match.argv, jsonMode);
175
+ if (parsed.result) {
176
+ return parsed.result;
177
+ }
178
+ try {
179
+ const result = await match.command.handler({
180
+ command: match.command.metadata,
181
+ args: parsed.args,
182
+ flags: parsed.flags,
183
+ argv: match.argv
184
+ });
185
+ return renderCommandResult(match.command.metadata.name, result, jsonMode);
186
+ }
187
+ catch (error) {
188
+ return renderErrorResult(normalizeThrownError(error, match.command.metadata.name), jsonMode);
189
+ }
190
+ }
191
+ async function parseCommandArgs(command, argv, jsonMode) {
192
+ try {
193
+ const parsed = await Parser.parse([...argv], {
194
+ args: createOclifArgs(command.arguments ?? []),
195
+ flags: createOclifFlags(command.flags ?? []),
196
+ strict: true
197
+ });
198
+ return {
199
+ args: parsed.args,
200
+ flags: parsed.flags
201
+ };
202
+ }
203
+ catch (error) {
204
+ return {
205
+ result: renderErrorResult(createCliError({
206
+ command: command.name,
207
+ kind: "invalid-command-usage",
208
+ operation: "parse command arguments",
209
+ likelyCause: error instanceof Error ? error.message : String(error),
210
+ suggestedNextAction: "Run command help and retry with valid arguments and flags.",
211
+ category: "usage"
212
+ }), jsonMode)
213
+ };
214
+ }
215
+ }
216
+ function renderCommandResult(command, result, jsonMode) {
217
+ const exitCode = result.exitCode ?? 0;
218
+ if (jsonMode && exitCode !== 0) {
219
+ return renderErrorResult(createCliError({
220
+ command,
221
+ kind: "command-failed",
222
+ operation: `run ${command}`,
223
+ likelyCause: firstNonEmpty([result.stderr, result.human, result.stdout]) ?? `Command exited with code ${exitCode}.`,
224
+ suggestedNextAction: "Inspect the command failure and retry after the underlying issue is fixed.",
225
+ category: "unexpected",
226
+ exitCode
227
+ }), true);
228
+ }
229
+ if (jsonMode && result.json) {
230
+ return {
231
+ exitCode,
232
+ stdout: renderJsonSuccess(command, result.json),
233
+ stderr: joinOutput([result.stderr, result.stdout]),
234
+ executedCommand: command
235
+ };
236
+ }
237
+ if (jsonMode && result.jsonStdout !== undefined) {
238
+ return {
239
+ exitCode,
240
+ stdout: validateJsonStdout(result.jsonStdout),
241
+ stderr: joinOutput([result.stderr, result.human]),
242
+ executedCommand: command
243
+ };
244
+ }
245
+ return {
246
+ exitCode,
247
+ stdout: jsonMode ? renderJsonSuccess(command, { output: result.stdout ?? result.human ?? "" }) : result.human ?? result.stdout ?? "",
248
+ stderr: result.stderr ?? "",
249
+ executedCommand: command
250
+ };
251
+ }
252
+ function renderErrorResult(error, jsonMode) {
253
+ if (jsonMode) {
254
+ const result = {
255
+ exitCode: error.exitCode,
256
+ stdout: renderJsonError(error),
257
+ stderr: ""
258
+ };
259
+ return error.command ? { ...result, executedCommand: error.command } : result;
260
+ }
261
+ const result = {
262
+ exitCode: error.exitCode,
263
+ stdout: "",
264
+ stderr: renderCliErrorText(error)
265
+ };
266
+ return error.command ? { ...result, executedCommand: error.command } : result;
267
+ }
268
+ function renderVersionResult(cli, jsonMode) {
269
+ if (!cli.package) {
270
+ const error = createCliError({
271
+ command: "version",
272
+ kind: "version-not-configured",
273
+ operation: "render version",
274
+ likelyCause: "No package name and version were configured for this CLI runtime.",
275
+ suggestedNextAction: "Pass packageName and packageVersion to createCli.",
276
+ category: "usage"
277
+ });
278
+ return renderErrorResult(error, jsonMode);
279
+ }
280
+ if (jsonMode) {
281
+ return {
282
+ exitCode: 0,
283
+ stdout: renderJsonSuccess("version", {
284
+ package: {
285
+ name: cli.package.name,
286
+ version: cli.package.version
287
+ },
288
+ version: cli.package.version
289
+ }),
290
+ stderr: "",
291
+ executedCommand: "version"
292
+ };
293
+ }
294
+ return {
295
+ exitCode: 0,
296
+ stdout: `${cli.package.version}\n`,
297
+ stderr: "",
298
+ executedCommand: "version"
299
+ };
300
+ }
301
+ function normalizeThrownError(error, command) {
302
+ if (isCliError(error)) {
303
+ return error.command ? error : createCliError({ ...error, command });
304
+ }
305
+ return createCliError({
306
+ command,
307
+ kind: "unexpected-error",
308
+ operation: `run ${command}`,
309
+ likelyCause: error instanceof Error ? error.message : String(error),
310
+ suggestedNextAction: "Inspect the command failure and retry after the underlying issue is fixed.",
311
+ category: "unexpected",
312
+ exitCode: exitCodeForCategory("unexpected")
313
+ });
314
+ }
315
+ function commandRequestsJson(command, argv) {
316
+ if (command.interactions?.json !== true) {
317
+ return false;
318
+ }
319
+ return argvRequestsJson(argv) || commandFlagRequestsJson(command, argv);
320
+ }
321
+ function argvRequestsJson(argv) {
322
+ const positionalSeparatorIndex = argv.indexOf("--");
323
+ const flagArgv = positionalSeparatorIndex === -1 ? argv : argv.slice(0, positionalSeparatorIndex);
324
+ return flagArgv.some((token, index) => token === "--json" || token === "--output=json" || (token === "--output" && flagArgv[index + 1] === "json"));
325
+ }
326
+ function commandFlagRequestsJson(command, argv) {
327
+ const positionalSeparatorIndex = argv.indexOf("--");
328
+ const flagArgv = positionalSeparatorIndex === -1 ? argv : argv.slice(0, positionalSeparatorIndex);
329
+ const jsonShorts = new Set((command.flags ?? []).filter((flag) => flag.name === "json").map((flag) => flag.short).filter(isString));
330
+ const outputShorts = new Set((command.flags ?? []).filter((flag) => flag.name === "output").map((flag) => flag.short).filter(isString));
331
+ return flagArgv.some((token, index) => {
332
+ if (!token.startsWith("-") || token.startsWith("--")) {
333
+ return false;
334
+ }
335
+ const [shortName] = token.slice(1).split("=", 1);
336
+ if (!shortName) {
337
+ return false;
338
+ }
339
+ if (jsonShorts.has(shortName)) {
340
+ return true;
341
+ }
342
+ return outputShorts.has(shortName) && (token === `-${shortName}=json` || flagArgv[index + 1] === "json");
343
+ });
344
+ }
345
+ function normalizeVersionRequest(argv) {
346
+ if (argv.length === 0) {
347
+ return undefined;
348
+ }
349
+ let hasVersion = false;
350
+ let hasJson = false;
351
+ for (const token of argv) {
352
+ if (token === "--version" || token === "-v") {
353
+ hasVersion = true;
354
+ continue;
355
+ }
356
+ if (token === "--json") {
357
+ hasJson = true;
358
+ continue;
359
+ }
360
+ return undefined;
361
+ }
362
+ return hasVersion ? { json: hasJson } : undefined;
363
+ }
364
+ function joinOutput(parts) {
365
+ return parts.filter((part) => part !== undefined && part.length > 0).join("");
366
+ }
367
+ function firstNonEmpty(parts) {
368
+ return parts.find((part) => part !== undefined && part.length > 0);
369
+ }
370
+ function validateJsonStdout(stdout) {
371
+ JSON.parse(stdout);
372
+ return stdout;
373
+ }
374
+ function renderHelpResult(cli, helpRequest) {
375
+ try {
376
+ return {
377
+ exitCode: 0,
378
+ stdout: renderHelp(cli.registry, helpRequest, cli.package
379
+ ? { bin: cli.bin, packageVersion: cli.package.version, description: cli.description }
380
+ : { bin: cli.bin, description: cli.description }),
381
+ stderr: ""
382
+ };
383
+ }
384
+ catch (error) {
385
+ return {
386
+ exitCode: 2,
387
+ stdout: "",
388
+ stderr: `${error instanceof Error ? error.message : String(error)}\n`
389
+ };
390
+ }
391
+ }
392
+ function createOclifArgs(args) {
393
+ const input = {};
394
+ for (const argument of args) {
395
+ input[argument.name] = {
396
+ input: [],
397
+ name: argument.name,
398
+ description: argument.description,
399
+ required: argument.required === true,
400
+ parse: async (value) => value
401
+ };
402
+ }
403
+ return input;
404
+ }
405
+ function createOclifFlags(flags) {
406
+ const input = {};
407
+ for (const flag of flags) {
408
+ input[flag.name] = createOclifFlag(flag);
409
+ }
410
+ return input;
411
+ }
412
+ function createOclifFlag(flag) {
413
+ const common = {
414
+ description: flag.description,
415
+ name: flag.name,
416
+ required: flag.required === true
417
+ };
418
+ const aliases = flag.aliases && flag.aliases.length > 0 ? { aliases: [...flag.aliases] } : {};
419
+ const short = flag.short ? { char: flag.short } : {};
420
+ if (flag.type === "boolean") {
421
+ return {
422
+ ...common,
423
+ ...aliases,
424
+ ...short,
425
+ allowNo: flag.negatable === true,
426
+ parse: async (value) => value,
427
+ type: "boolean"
428
+ };
429
+ }
430
+ const options = flag.options && flag.options.length > 0 ? { options: [...flag.options] } : {};
431
+ return {
432
+ ...common,
433
+ ...aliases,
434
+ ...short,
435
+ ...options,
436
+ input: [],
437
+ multiple: flag.multiple === true,
438
+ parse: async (value) => parseFlagValue(flag, value),
439
+ type: "option"
440
+ };
441
+ }
442
+ async function parseFlagValue(flag, value) {
443
+ if (flag.type === "integer") {
444
+ if (!/^-?\d+$/.test(value)) {
445
+ throw new Error(`Expected an integer but received: ${value}`);
446
+ }
447
+ return Number.parseInt(value, 10);
448
+ }
449
+ if (flag.type === "number") {
450
+ const number = Number(value);
451
+ if (!Number.isFinite(number)) {
452
+ throw new Error(`Expected a number but received: ${value}`);
453
+ }
454
+ return number;
455
+ }
456
+ if (flag.type === "option" && flag.options && !flag.options.includes(value)) {
457
+ throw new Error(`Expected one of ${flag.options.join(", ")} but received: ${value}`);
458
+ }
459
+ return value;
460
+ }
461
+ function matchRuntimeCommand(cli, argv) {
462
+ const commandByName = new Map(cli.commands.map((command) => [command.metadata.name, command]));
463
+ const commandByAlias = new Map(cli.commands.flatMap((command) => (command.metadata.aliases ?? []).map((alias) => [alias, command])));
464
+ const commandNames = [...commandByName.keys()].sort((left, right) => right.split(" ").length - left.split(" ").length || compareText(left, right));
465
+ for (const commandName of commandNames) {
466
+ const tokens = commandName.split(" ");
467
+ if (tokens.every((token, index) => argv[index] === token)) {
468
+ const command = commandByName.get(commandName);
469
+ if (command) {
470
+ return { command, argv: argv.slice(tokens.length) };
471
+ }
472
+ }
473
+ }
474
+ const [firstToken] = argv;
475
+ if (firstToken) {
476
+ const aliasMatch = commandByAlias.get(firstToken);
477
+ if (aliasMatch) {
478
+ return { command: aliasMatch, argv: argv.slice(1) };
479
+ }
480
+ }
481
+ return undefined;
482
+ }
483
+ function mergeCommands(registryCommands, runtimeCommands) {
484
+ const commands = new Map(registryCommands.map((command) => [command.name, command]));
485
+ for (const runtimeCommand of runtimeCommands) {
486
+ commands.set(runtimeCommand.name, runtimeCommand);
487
+ }
488
+ return [...commands.values()];
489
+ }
490
+ function resolveRegistry(registry) {
491
+ return typeof registry === "function" ? registry() : registry;
492
+ }
493
+ function createPackageIdentity(options) {
494
+ const hasName = options.packageName !== undefined;
495
+ const hasVersion = options.packageVersion !== undefined;
496
+ if (hasName !== hasVersion) {
497
+ throw new TypeError("createCli requires packageName and packageVersion to be configured together.");
498
+ }
499
+ if (!hasName || !hasVersion) {
500
+ return undefined;
501
+ }
502
+ requireNonEmpty(options.packageName, "packageName");
503
+ requireNonEmpty(options.packageVersion, "packageVersion");
504
+ return Object.freeze({ name: options.packageName, version: options.packageVersion });
505
+ }
506
+ function ensureCommandHandlers(registry, commands) {
507
+ const commandNames = new Set(commands.map((command) => command.metadata.name));
508
+ const missingHandlers = listCommands(registry).filter((command) => !commandNames.has(command.name));
509
+ if (missingHandlers.length > 0) {
510
+ throw new TypeError(`Missing runtime handlers for commands: ${missingHandlers.map((command) => command.name).join(", ")}.`);
511
+ }
512
+ }
513
+ function findUnknownFlag(command, argv) {
514
+ const knownFlags = new Set((command.flags ?? []).flatMap(renderKnownLongFlagNames));
515
+ const knownShortFlags = new Set((command.flags ?? []).map((flag) => flag.short).filter(isString));
516
+ for (const token of argv) {
517
+ if (token === "--") {
518
+ return undefined;
519
+ }
520
+ if (!token.startsWith("-")) {
521
+ continue;
522
+ }
523
+ if (token.startsWith("--")) {
524
+ const [name] = token.slice(2).split("=", 1);
525
+ if (name && !knownFlags.has(name)) {
526
+ return `--${name}`;
527
+ }
528
+ continue;
529
+ }
530
+ if (/^-\d/.test(token)) {
531
+ continue;
532
+ }
533
+ const [name] = token.slice(1).split("=", 1);
534
+ if (name && !knownShortFlags.has(name)) {
535
+ return `-${name}`;
536
+ }
537
+ }
538
+ return undefined;
539
+ }
540
+ function findNegatableFlagConflict(command, argv) {
541
+ const positionalSeparatorIndex = argv.indexOf("--");
542
+ const flagArgv = positionalSeparatorIndex === -1 ? argv : argv.slice(0, positionalSeparatorIndex);
543
+ for (const flag of command.flags ?? []) {
544
+ if (flag.negatable !== true) {
545
+ continue;
546
+ }
547
+ const positive = new Set([flag.name, ...(flag.aliases ?? [])].map((name) => `--${name}`));
548
+ const negative = new Set([flag.name, ...(flag.aliases ?? [])].map((name) => `--no-${name}`));
549
+ const count = flagArgv.filter((token) => positive.has(token) || negative.has(token)).length;
550
+ if (count > 1) {
551
+ return flag.name;
552
+ }
553
+ }
554
+ return undefined;
555
+ }
556
+ function renderKnownLongFlagNames(flag) {
557
+ return [
558
+ flag.name,
559
+ ...(flag.negatable === true ? [`no-${flag.name}`] : []),
560
+ ...(flag.aliases ?? []).flatMap((alias) => [alias, ...(flag.negatable === true ? [`no-${alias}`] : [])])
561
+ ];
562
+ }
563
+ function trimAtFirstFlag(tokens) {
564
+ const flagIndex = tokens.findIndex((token) => token.startsWith("-"));
565
+ return flagIndex === -1 ? tokens : tokens.slice(0, flagIndex);
566
+ }
567
+ function compareText(left, right) {
568
+ if (left === right) {
569
+ return 0;
570
+ }
571
+ return left < right ? -1 : 1;
572
+ }
573
+ function requireNonEmpty(value, field) {
574
+ if (value.trim().length === 0) {
575
+ throw new TypeError(`${field} must not be empty.`);
576
+ }
577
+ }
578
+ function isString(value) {
579
+ return typeof value === "string";
580
+ }
581
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}