@optique/core 1.1.0-dev.2087 → 1.1.0-dev.2146

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 (74) hide show
  1. package/dist/annotation-state.cjs +26 -26
  2. package/dist/annotation-state.d.cts +133 -1
  3. package/dist/annotation-state.d.ts +133 -1
  4. package/dist/annotations.cjs +2 -2
  5. package/dist/constructs.cjs +873 -73
  6. package/dist/constructs.d.cts +72 -1
  7. package/dist/constructs.d.ts +72 -1
  8. package/dist/constructs.js +808 -9
  9. package/dist/dependency-metadata.cjs +12 -12
  10. package/dist/dependency-metadata.d.cts +34 -3
  11. package/dist/dependency-metadata.d.ts +34 -3
  12. package/dist/dependency-runtime.cjs +37 -13
  13. package/dist/dependency-runtime.d.cts +197 -2
  14. package/dist/dependency-runtime.d.ts +197 -2
  15. package/dist/dependency-runtime.js +22 -1
  16. package/dist/dependency.cjs +7 -7
  17. package/dist/displaywidth.d.cts +12 -0
  18. package/dist/displaywidth.d.ts +12 -0
  19. package/dist/doc.cjs +3 -0
  20. package/dist/doc.js +3 -0
  21. package/dist/execution-context.d.cts +23 -0
  22. package/dist/execution-context.d.ts +23 -0
  23. package/dist/extension.cjs +14 -14
  24. package/dist/facade.cjs +49 -37
  25. package/dist/facade.js +34 -22
  26. package/dist/index.cjs +23 -21
  27. package/dist/index.d.cts +3 -3
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +4 -4
  30. package/dist/input-trace.d.cts +2 -1
  31. package/dist/input-trace.d.ts +2 -1
  32. package/dist/internal/annotations.cjs +3 -0
  33. package/dist/internal/annotations.d.cts +47 -5
  34. package/dist/internal/annotations.d.ts +47 -5
  35. package/dist/internal/annotations.js +1 -1
  36. package/dist/internal/command-alias.cjs +16 -0
  37. package/dist/internal/command-alias.js +14 -0
  38. package/dist/internal/dependency.cjs +131 -0
  39. package/dist/internal/dependency.d.cts +311 -2
  40. package/dist/internal/dependency.d.ts +311 -2
  41. package/dist/internal/dependency.js +119 -1
  42. package/dist/internal/parser.cjs +108 -23
  43. package/dist/internal/parser.d.cts +58 -3
  44. package/dist/internal/parser.d.ts +58 -3
  45. package/dist/internal/parser.js +101 -16
  46. package/dist/modifiers.cjs +74 -44
  47. package/dist/modifiers.js +34 -4
  48. package/dist/parser.cjs +11 -11
  49. package/dist/phase2-seed.cjs +2 -2
  50. package/dist/phase2-seed.d.cts +50 -0
  51. package/dist/phase2-seed.d.ts +50 -0
  52. package/dist/primitives.cjs +104 -33
  53. package/dist/primitives.d.cts +10 -0
  54. package/dist/primitives.d.ts +10 -0
  55. package/dist/primitives.js +84 -13
  56. package/dist/suggestion.cjs +72 -2
  57. package/dist/suggestion.d.cts +188 -0
  58. package/dist/suggestion.d.ts +188 -0
  59. package/dist/suggestion.js +71 -3
  60. package/dist/usage-internals.cjs +14 -6
  61. package/dist/usage-internals.js +14 -6
  62. package/dist/usage.cjs +33 -8
  63. package/dist/usage.d.cts +31 -0
  64. package/dist/usage.d.ts +31 -0
  65. package/dist/usage.js +33 -8
  66. package/dist/validate.cjs +1 -0
  67. package/dist/validate.d.cts +99 -0
  68. package/dist/validate.d.ts +99 -0
  69. package/dist/validate.js +1 -1
  70. package/dist/valueparser.cjs +333 -79
  71. package/dist/valueparser.d.cts +197 -1
  72. package/dist/valueparser.d.ts +197 -1
  73. package/dist/valueparser.js +334 -81
  74. package/package.json +19 -4
package/dist/facade.cjs CHANGED
@@ -1,13 +1,14 @@
1
- const require_annotations = require('./internal/annotations.cjs');
1
+ const require_internal_annotations = require('./internal/annotations.cjs');
2
2
  const require_message = require('./message.cjs');
3
- const require_completion = require('./completion.cjs');
4
3
  const require_validate = require('./validate.cjs');
5
4
  const require_usage = require('./usage.cjs');
6
5
  const require_doc = require('./doc.cjs');
7
6
  const require_mode_dispatch = require('./internal/mode-dispatch.cjs');
8
7
  const require_dependency_runtime = require('./dependency-runtime.cjs');
9
8
  const require_input_trace = require('./input-trace.cjs');
10
- const require_parser = require('./internal/parser.cjs');
9
+ const require_internal_parser = require('./internal/parser.cjs');
10
+ const require_completion = require('./completion.cjs');
11
+ const require_command_alias = require('./internal/command-alias.cjs');
11
12
  const require_phase2_seed = require('./phase2-seed.cjs');
12
13
  const require_constructs = require('./constructs.cjs');
13
14
  const require_modifiers = require('./modifiers.cjs');
@@ -15,6 +16,14 @@ const require_valueparser = require('./valueparser.cjs');
15
16
  const require_primitives = require('./primitives.cjs');
16
17
 
17
18
  //#region src/facade.ts
19
+ /**
20
+ * Combines built-in meta commands while intentionally bypassing duplicate
21
+ * leading command name validation in `createLongestMatch()`.
22
+ */
23
+ function longestMatchForMetaCommands(...parsers) {
24
+ const options = { [require_command_alias.allowDuplicateLeadingCommandNamesKey]: true };
25
+ return require_constructs.longestMatch(...parsers, options);
26
+ }
18
27
  const SuppressedErrorCtor = typeof SuppressedError === "function" ? SuppressedError : (() => {
19
28
  class SuppressedErrorPolyfill extends Error {
20
29
  error;
@@ -119,9 +128,9 @@ function createCompleteExec(exec, context) {
119
128
  };
120
129
  }
121
130
  function attemptParseSync(parser, args, mode = "complete") {
122
- const shouldUnwrapAnnotatedValue = require_annotations.isInjectedAnnotationWrapper(parser.initialState);
131
+ const shouldUnwrapAnnotatedValue = require_internal_annotations.isInjectedAnnotationWrapper(parser.initialState);
123
132
  const exec = createParseExec(parser);
124
- let context = require_parser.createParserContext({
133
+ let context = require_internal_parser.createParserContext({
125
134
  buffer: args,
126
135
  state: parser.initialState,
127
136
  optionsTerminated: false
@@ -168,13 +177,13 @@ function attemptParseSync(parser, args, mode = "complete") {
168
177
  };
169
178
  return {
170
179
  kind: "success",
171
- value: shouldUnwrapAnnotatedValue ? require_annotations.unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
180
+ value: shouldUnwrapAnnotatedValue ? require_internal_annotations.unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
172
181
  };
173
182
  }
174
183
  async function attemptParseAsync(parser, args, mode = "complete") {
175
- const shouldUnwrapAnnotatedValue = require_annotations.isInjectedAnnotationWrapper(parser.initialState);
184
+ const shouldUnwrapAnnotatedValue = require_internal_annotations.isInjectedAnnotationWrapper(parser.initialState);
176
185
  const exec = createParseExec(parser);
177
- let context = require_parser.createParserContext({
186
+ let context = require_internal_parser.createParserContext({
178
187
  buffer: args,
179
188
  state: parser.initialState,
180
189
  optionsTerminated: false
@@ -221,7 +230,7 @@ async function attemptParseAsync(parser, args, mode = "complete") {
221
230
  };
222
231
  return {
223
232
  kind: "success",
224
- value: shouldUnwrapAnnotatedValue ? require_annotations.unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
233
+ value: shouldUnwrapAnnotatedValue ? require_internal_annotations.unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
225
234
  };
226
235
  }
227
236
  function createPhase2SeedExec(parser, context) {
@@ -250,7 +259,7 @@ function createPhase2SeedContext(parser, args) {
250
259
  commandPath: [],
251
260
  trace: require_input_trace.createInputTrace()
252
261
  };
253
- return require_parser.createParserContext({
262
+ return require_internal_parser.createParserContext({
254
263
  buffer: args,
255
264
  state: parser.initialState,
256
265
  optionsTerminated: false
@@ -278,6 +287,10 @@ async function extractPhase2SeedAsync(parser, args) {
278
287
  } while (context.buffer.length > 0);
279
288
  return await require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
280
289
  }
290
+ function getMetaCommandAliases(names) {
291
+ const [, firstAlias, ...restAliases] = names;
292
+ return firstAlias == null ? void 0 : [firstAlias, ...restAliases];
293
+ }
281
294
  /**
282
295
  * Creates help parsers based on the sub-config.
283
296
  */
@@ -287,12 +300,12 @@ function createHelpParser(commandConfig, optionConfig) {
287
300
  if (commandConfig) {
288
301
  const names = commandConfig.names ?? ["help"];
289
302
  const innerParser = require_modifiers.multiple(require_primitives.argument(require_valueparser.string({ metavar: "COMMAND" }), { description: require_message.message`Command name to show help for.` }));
290
- const commandParsers = [];
291
- for (let i = 0; i < names.length; i++) commandParsers.push(require_primitives.command(names[i], innerParser, {
303
+ const aliases = getMetaCommandAliases(names);
304
+ helpCommand = require_primitives.command(names[0], innerParser, {
292
305
  description: require_message.message`Show help information.`,
293
- hidden: i === 0 ? commandConfig.hidden : true
294
- }));
295
- helpCommand = commandParsers.length === 1 ? commandParsers[0] : require_constructs.longestMatch(...commandParsers);
306
+ ...aliases != null ? { [require_command_alias.hiddenCommandAliasesKey]: aliases } : {},
307
+ hidden: commandConfig.hidden
308
+ });
296
309
  }
297
310
  if (optionConfig) {
298
311
  const names = optionConfig.names ?? ["--help"];
@@ -315,12 +328,12 @@ function createVersionParser(commandConfig, optionConfig) {
315
328
  if (commandConfig) {
316
329
  const names = commandConfig.names ?? ["version"];
317
330
  const innerParser = require_constructs.object({});
318
- const commandParsers = [];
319
- for (let i = 0; i < names.length; i++) commandParsers.push(require_primitives.command(names[i], innerParser, {
331
+ const aliases = getMetaCommandAliases(names);
332
+ versionCommand = require_primitives.command(names[0], innerParser, {
320
333
  description: require_message.message`Show version information.`,
321
- hidden: i === 0 ? commandConfig.hidden : true
322
- }));
323
- versionCommand = commandParsers.length === 1 ? commandParsers[0] : require_constructs.longestMatch(...commandParsers);
334
+ ...aliases != null ? { [require_command_alias.hiddenCommandAliasesKey]: aliases } : {},
335
+ hidden: commandConfig.hidden
336
+ });
324
337
  }
325
338
  if (optionConfig) {
326
339
  const names = optionConfig.names ?? ["--version"];
@@ -358,12 +371,12 @@ function createCompletionParser(programName, availableShells, commandConfig, opt
358
371
  description: require_message.message`Generate shell completion script or provide completions.`,
359
372
  footer: require_message.message`Examples:${require_message.lineBreak()} Bash: ${require_message.commandLine(`eval "$(${programName} ${displayName} bash)"`)}${require_message.lineBreak()} zsh: ${require_message.commandLine(`eval "$(${programName} ${displayName} zsh)"`)}${require_message.lineBreak()} fish: ${require_message.commandLine(`eval "$(${programName} ${displayName} fish)"`)}${require_message.lineBreak()} PowerShell: ${require_message.commandLine(`${programName} ${displayName} pwsh > ${programName}-completion.ps1; . ./${programName}-completion.ps1`)}${require_message.lineBreak()} Nushell: ${require_message.commandLine(`${programName} ${displayName} nu | save ${programName}-completion.nu; source ./${programName}-completion.nu`)}`
360
373
  };
361
- const commandParsers = [];
362
- for (let i = 0; i < names.length; i++) commandParsers.push(require_primitives.command(names[i], completionInner, {
374
+ const aliases = getMetaCommandAliases(names);
375
+ completionCommand = require_primitives.command(names[0], completionInner, {
363
376
  ...completionCommandConfig,
364
- hidden: i === 0 ? commandConfig.hidden : true
365
- }));
366
- completionCommand = commandParsers.length === 1 ? commandParsers[0] : require_constructs.longestMatch(...commandParsers);
377
+ ...aliases != null ? { [require_command_alias.hiddenCommandAliasesKey]: aliases } : {},
378
+ hidden: commandConfig.hidden
379
+ });
367
380
  }
368
381
  if (optionConfig) {
369
382
  const names = optionConfig.names ?? ["--completion"];
@@ -463,9 +476,7 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
463
476
  }));
464
477
  const mainParserIndex = parsers.length - 1;
465
478
  if (parsers.length === 1) return parsers[0];
466
- let combined;
467
- if (parsers.length === 2) combined = require_constructs.longestMatch(parsers[0], parsers[1]);
468
- else combined = require_constructs.longestMatch(...parsers);
479
+ let combined = longestMatchForMetaCommands(...parsers);
469
480
  const topUsage = combined.usage[0];
470
481
  if (topUsage?.type === "exclusive" && mainParserIndex > 0) {
471
482
  const terms = [...topUsage.terms];
@@ -606,7 +617,7 @@ function handleCompletion(completionArgs, programName, parser, completionParser,
606
617
  stderr("Error: Missing shell name for completion.\n");
607
618
  if (completionParser) {
608
619
  const displayName = isOptionMode ? completionOptionDisplayName ?? "--completion" : completionCommandDisplayName ?? "completion";
609
- const doc = require_parser.getDocPage(completionParser, [displayName]);
620
+ const doc = require_internal_parser.getDocPage(completionParser, [displayName]);
610
621
  if (doc) stderr(require_doc.formatDocPage(programName, doc, {
611
622
  colors,
612
623
  maxWidth,
@@ -774,7 +785,7 @@ function getCompletionSuggestRuntimeNodes(parser, state, path) {
774
785
  }];
775
786
  }
776
787
  function createCompletionArgumentParserContext(parser, args) {
777
- return require_parser.createParserContext({
788
+ return require_internal_parser.createParserContext({
778
789
  buffer: args,
779
790
  state: parser.initialState,
780
791
  optionsTerminated: false
@@ -824,6 +835,7 @@ function collectRootOptionNamesFromTerm(term, names, rootLeadingNames) {
824
835
  return;
825
836
  case "optional":
826
837
  case "multiple":
838
+ case "sequence":
827
839
  collectRootOptionNames(term.terms, names, rootLeadingNames);
828
840
  return;
829
841
  case "exclusive":
@@ -849,7 +861,7 @@ function collectActiveOptionNames(usage, commandPath, names, fromExclusive, incl
849
861
  if (rest.length === 0) collectOptionNamesAtCurrentCommandDepth(remainingUsage, names, !fromExclusive && includeDirectAfterCommandOptions);
850
862
  else collectActiveOptionNames(remainingUsage, rest, names, fromExclusive, includeDirectAfterCommandOptions);
851
863
  } else if (term.type === "exclusive") for (const branch of term.terms) collectActiveOptionNames(branch, commandPath, names, true, includeDirectAfterCommandOptions);
852
- else if (term.type === "optional" || term.type === "multiple") collectActiveOptionNames(term.terms, commandPath, names, fromExclusive, includeDirectAfterCommandOptions);
864
+ else if (term.type === "optional" || term.type === "multiple" || term.type === "sequence") collectActiveOptionNames(term.terms, commandPath, names, fromExclusive, includeDirectAfterCommandOptions);
853
865
  }
854
866
  }
855
867
  function isRootOptionToken(token, rootOptionSuggestions) {
@@ -867,6 +879,7 @@ function collectOptionNamesAtCurrentCommandDepthFromTerm(term, names, afterMatch
867
879
  return false;
868
880
  case "optional":
869
881
  case "multiple":
882
+ case "sequence":
870
883
  collectOptionNamesAtCurrentCommandDepth(term.terms, names, afterMatchedCommand);
871
884
  return false;
872
885
  case "exclusive":
@@ -1078,8 +1091,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1078
1091
  for (const [label, optParsers] of Object.entries(groupedMetaOptions)) if (optParsers.length === 1) commandParsers.push(require_constructs.group(label, optParsers[0]));
1079
1092
  else commandParsers.push(require_constructs.group(label, require_constructs.longestMatch(...optParsers)));
1080
1093
  if (commandParsers.length === 1) helpGeneratorParser = commandParsers[0];
1081
- else if (commandParsers.length === 2) helpGeneratorParser = require_constructs.longestMatch(commandParsers[0], commandParsers[1]);
1082
- else helpGeneratorParser = require_constructs.longestMatch(...commandParsers);
1094
+ else helpGeneratorParser = longestMatchForMetaCommands(...commandParsers);
1083
1095
  }
1084
1096
  const reportInvalidHelpCommand = (validationError) => {
1085
1097
  stderr(`Usage: ${indentLines(require_usage.formatUsage(programName, augmentedParser.usage, {
@@ -1150,7 +1162,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1150
1162
  res = processStep(resolved);
1151
1163
  }
1152
1164
  if (res != null) return reportInvalidHelpCommand(res);
1153
- const docOrPromise$1 = require_parser.getDocPage(helpGeneratorParser, classified.commands);
1165
+ const docOrPromise$1 = require_internal_parser.getDocPage(helpGeneratorParser, classified.commands);
1154
1166
  return docOrPromise$1 instanceof Promise ? docOrPromise$1.then(displayHelp) : displayHelp(docOrPromise$1);
1155
1167
  };
1156
1168
  return stepResult.then(asyncValidate);
@@ -1159,7 +1171,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1159
1171
  }
1160
1172
  if (validationResult != null) return reportInvalidHelpCommand(validationResult);
1161
1173
  }
1162
- const docOrPromise = require_parser.getDocPage(helpGeneratorParser, classified.commands);
1174
+ const docOrPromise = require_internal_parser.getDocPage(helpGeneratorParser, classified.commands);
1163
1175
  if (docOrPromise instanceof Promise) return docOrPromise.then(displayHelp);
1164
1176
  return displayHelp(docOrPromise);
1165
1177
  }
@@ -1198,7 +1210,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1198
1210
  };
1199
1211
  if (aboveError === "help") {
1200
1212
  const parserForDoc = args.length < 1 ? augmentedParser : parser;
1201
- const docOrPromise = require_parser.getDocPage(parserForDoc, args);
1213
+ const docOrPromise = require_internal_parser.getDocPage(parserForDoc, args);
1202
1214
  if (docOrPromise instanceof Promise) return docOrPromise.then((doc) => displayError(doc, aboveError));
1203
1215
  return displayError(docOrPromise, aboveError);
1204
1216
  }
@@ -1732,7 +1744,7 @@ function runWithAsync(parser, programName, contexts, options) {
1732
1744
  * @returns A new parser with annotations in its initial state.
1733
1745
  */
1734
1746
  function injectAnnotationsIntoParser(parser, annotations) {
1735
- const newInitialState = require_annotations.injectAnnotations(parser.initialState, annotations);
1747
+ const newInitialState = require_internal_annotations.injectAnnotations(parser.initialState, annotations);
1736
1748
  const descriptors = { ...Object.getOwnPropertyDescriptors(parser) };
1737
1749
  const initialState = descriptors.initialState;
1738
1750
  descriptors.initialState = initialState == null ? {
package/dist/facade.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { injectAnnotations, isInjectedAnnotationWrapper, unwrapInjectedAnnotationWrapper } from "./internal/annotations.js";
2
2
  import { commandLine, formatMessage, lineBreak, message, optionName, text, value } from "./message.js";
3
- import { bash, fish, nu, pwsh, zsh } from "./completion.js";
4
3
  import { validateCommandNames, validateContextIds, validateMetaNameCollisions, validateOptionNames, validateProgramName } from "./validate.js";
5
4
  import { formatUsage, isSuggestionHidden } from "./usage.js";
6
5
  import { formatDocPage } from "./doc.js";
@@ -8,6 +7,8 @@ import { dispatchByMode } from "./internal/mode-dispatch.js";
8
7
  import { collectExplicitSourceValues, collectExplicitSourceValuesAsync, createDependencyRuntimeContext } from "./dependency-runtime.js";
9
8
  import { createInputTrace } from "./input-trace.js";
10
9
  import { createParserContext, getDocPage } from "./internal/parser.js";
10
+ import { bash, fish, nu, pwsh, zsh } from "./completion.js";
11
+ import { allowDuplicateLeadingCommandNamesKey, hiddenCommandAliasesKey } from "./internal/command-alias.js";
11
12
  import { completeOrExtractPhase2Seed } from "./phase2-seed.js";
12
13
  import { group, longestMatch, object } from "./constructs.js";
13
14
  import { multiple, optional, withDefault } from "./modifiers.js";
@@ -15,6 +16,14 @@ import { string } from "./valueparser.js";
15
16
  import { argument, command, constant, flag, option } from "./primitives.js";
16
17
 
17
18
  //#region src/facade.ts
19
+ /**
20
+ * Combines built-in meta commands while intentionally bypassing duplicate
21
+ * leading command name validation in `createLongestMatch()`.
22
+ */
23
+ function longestMatchForMetaCommands(...parsers) {
24
+ const options = { [allowDuplicateLeadingCommandNamesKey]: true };
25
+ return longestMatch(...parsers, options);
26
+ }
18
27
  const SuppressedErrorCtor = typeof SuppressedError === "function" ? SuppressedError : (() => {
19
28
  class SuppressedErrorPolyfill extends Error {
20
29
  error;
@@ -278,6 +287,10 @@ async function extractPhase2SeedAsync(parser, args) {
278
287
  } while (context.buffer.length > 0);
279
288
  return await completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
280
289
  }
290
+ function getMetaCommandAliases(names) {
291
+ const [, firstAlias, ...restAliases] = names;
292
+ return firstAlias == null ? void 0 : [firstAlias, ...restAliases];
293
+ }
281
294
  /**
282
295
  * Creates help parsers based on the sub-config.
283
296
  */
@@ -287,12 +300,12 @@ function createHelpParser(commandConfig, optionConfig) {
287
300
  if (commandConfig) {
288
301
  const names = commandConfig.names ?? ["help"];
289
302
  const innerParser = multiple(argument(string({ metavar: "COMMAND" }), { description: message`Command name to show help for.` }));
290
- const commandParsers = [];
291
- for (let i = 0; i < names.length; i++) commandParsers.push(command(names[i], innerParser, {
303
+ const aliases = getMetaCommandAliases(names);
304
+ helpCommand = command(names[0], innerParser, {
292
305
  description: message`Show help information.`,
293
- hidden: i === 0 ? commandConfig.hidden : true
294
- }));
295
- helpCommand = commandParsers.length === 1 ? commandParsers[0] : longestMatch(...commandParsers);
306
+ ...aliases != null ? { [hiddenCommandAliasesKey]: aliases } : {},
307
+ hidden: commandConfig.hidden
308
+ });
296
309
  }
297
310
  if (optionConfig) {
298
311
  const names = optionConfig.names ?? ["--help"];
@@ -315,12 +328,12 @@ function createVersionParser(commandConfig, optionConfig) {
315
328
  if (commandConfig) {
316
329
  const names = commandConfig.names ?? ["version"];
317
330
  const innerParser = object({});
318
- const commandParsers = [];
319
- for (let i = 0; i < names.length; i++) commandParsers.push(command(names[i], innerParser, {
331
+ const aliases = getMetaCommandAliases(names);
332
+ versionCommand = command(names[0], innerParser, {
320
333
  description: message`Show version information.`,
321
- hidden: i === 0 ? commandConfig.hidden : true
322
- }));
323
- versionCommand = commandParsers.length === 1 ? commandParsers[0] : longestMatch(...commandParsers);
334
+ ...aliases != null ? { [hiddenCommandAliasesKey]: aliases } : {},
335
+ hidden: commandConfig.hidden
336
+ });
324
337
  }
325
338
  if (optionConfig) {
326
339
  const names = optionConfig.names ?? ["--version"];
@@ -358,12 +371,12 @@ function createCompletionParser(programName, availableShells, commandConfig, opt
358
371
  description: message`Generate shell completion script or provide completions.`,
359
372
  footer: message`Examples:${lineBreak()} Bash: ${commandLine(`eval "$(${programName} ${displayName} bash)"`)}${lineBreak()} zsh: ${commandLine(`eval "$(${programName} ${displayName} zsh)"`)}${lineBreak()} fish: ${commandLine(`eval "$(${programName} ${displayName} fish)"`)}${lineBreak()} PowerShell: ${commandLine(`${programName} ${displayName} pwsh > ${programName}-completion.ps1; . ./${programName}-completion.ps1`)}${lineBreak()} Nushell: ${commandLine(`${programName} ${displayName} nu | save ${programName}-completion.nu; source ./${programName}-completion.nu`)}`
360
373
  };
361
- const commandParsers = [];
362
- for (let i = 0; i < names.length; i++) commandParsers.push(command(names[i], completionInner, {
374
+ const aliases = getMetaCommandAliases(names);
375
+ completionCommand = command(names[0], completionInner, {
363
376
  ...completionCommandConfig,
364
- hidden: i === 0 ? commandConfig.hidden : true
365
- }));
366
- completionCommand = commandParsers.length === 1 ? commandParsers[0] : longestMatch(...commandParsers);
377
+ ...aliases != null ? { [hiddenCommandAliasesKey]: aliases } : {},
378
+ hidden: commandConfig.hidden
379
+ });
367
380
  }
368
381
  if (optionConfig) {
369
382
  const names = optionConfig.names ?? ["--completion"];
@@ -463,9 +476,7 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
463
476
  }));
464
477
  const mainParserIndex = parsers.length - 1;
465
478
  if (parsers.length === 1) return parsers[0];
466
- let combined;
467
- if (parsers.length === 2) combined = longestMatch(parsers[0], parsers[1]);
468
- else combined = longestMatch(...parsers);
479
+ let combined = longestMatchForMetaCommands(...parsers);
469
480
  const topUsage = combined.usage[0];
470
481
  if (topUsage?.type === "exclusive" && mainParserIndex > 0) {
471
482
  const terms = [...topUsage.terms];
@@ -824,6 +835,7 @@ function collectRootOptionNamesFromTerm(term, names, rootLeadingNames) {
824
835
  return;
825
836
  case "optional":
826
837
  case "multiple":
838
+ case "sequence":
827
839
  collectRootOptionNames(term.terms, names, rootLeadingNames);
828
840
  return;
829
841
  case "exclusive":
@@ -849,7 +861,7 @@ function collectActiveOptionNames(usage, commandPath, names, fromExclusive, incl
849
861
  if (rest.length === 0) collectOptionNamesAtCurrentCommandDepth(remainingUsage, names, !fromExclusive && includeDirectAfterCommandOptions);
850
862
  else collectActiveOptionNames(remainingUsage, rest, names, fromExclusive, includeDirectAfterCommandOptions);
851
863
  } else if (term.type === "exclusive") for (const branch of term.terms) collectActiveOptionNames(branch, commandPath, names, true, includeDirectAfterCommandOptions);
852
- else if (term.type === "optional" || term.type === "multiple") collectActiveOptionNames(term.terms, commandPath, names, fromExclusive, includeDirectAfterCommandOptions);
864
+ else if (term.type === "optional" || term.type === "multiple" || term.type === "sequence") collectActiveOptionNames(term.terms, commandPath, names, fromExclusive, includeDirectAfterCommandOptions);
853
865
  }
854
866
  }
855
867
  function isRootOptionToken(token, rootOptionSuggestions) {
@@ -867,6 +879,7 @@ function collectOptionNamesAtCurrentCommandDepthFromTerm(term, names, afterMatch
867
879
  return false;
868
880
  case "optional":
869
881
  case "multiple":
882
+ case "sequence":
870
883
  collectOptionNamesAtCurrentCommandDepth(term.terms, names, afterMatchedCommand);
871
884
  return false;
872
885
  case "exclusive":
@@ -1078,8 +1091,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1078
1091
  for (const [label, optParsers] of Object.entries(groupedMetaOptions)) if (optParsers.length === 1) commandParsers.push(group(label, optParsers[0]));
1079
1092
  else commandParsers.push(group(label, longestMatch(...optParsers)));
1080
1093
  if (commandParsers.length === 1) helpGeneratorParser = commandParsers[0];
1081
- else if (commandParsers.length === 2) helpGeneratorParser = longestMatch(commandParsers[0], commandParsers[1]);
1082
- else helpGeneratorParser = longestMatch(...commandParsers);
1094
+ else helpGeneratorParser = longestMatchForMetaCommands(...commandParsers);
1083
1095
  }
1084
1096
  const reportInvalidHelpCommand = (validationError) => {
1085
1097
  stderr(`Usage: ${indentLines(formatUsage(programName, augmentedParser.usage, {
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
- const require_annotations = require('./internal/annotations.cjs');
1
+ const require_internal_annotations = require('./internal/annotations.cjs');
2
2
  const require_message = require('./message.cjs');
3
- const require_completion = require('./completion.cjs');
4
3
  const require_usage = require('./usage.cjs');
5
4
  const require_doc = require('./doc.cjs');
6
- const require_dependency = require('./internal/dependency.cjs');
7
- const require_parser = require('./internal/parser.cjs');
5
+ const require_internal_dependency = require('./internal/dependency.cjs');
6
+ const require_internal_parser = require('./internal/parser.cjs');
7
+ const require_completion = require('./completion.cjs');
8
8
  const require_constructs = require('./constructs.cjs');
9
9
  const require_modifiers = require('./modifiers.cjs');
10
10
  const require_nonempty = require('./nonempty.cjs');
@@ -30,13 +30,13 @@ exports.commandLine = require_message.commandLine;
30
30
  exports.concat = require_constructs.concat;
31
31
  exports.conditional = require_constructs.conditional;
32
32
  exports.constant = require_primitives.constant;
33
- exports.createParserContext = require_parser.createParserContext;
33
+ exports.createParserContext = require_internal_parser.createParserContext;
34
34
  exports.deduplicateDocEntries = require_doc.deduplicateDocEntries;
35
35
  exports.deduplicateDocFragments = require_doc.deduplicateDocFragments;
36
- exports.dependency = require_dependency.dependency;
37
- exports.deriveFrom = require_dependency.deriveFrom;
38
- exports.deriveFromAsync = require_dependency.deriveFromAsync;
39
- exports.deriveFromSync = require_dependency.deriveFromSync;
36
+ exports.dependency = require_internal_dependency.dependency;
37
+ exports.deriveFrom = require_internal_dependency.deriveFrom;
38
+ exports.deriveFromAsync = require_internal_dependency.deriveFromAsync;
39
+ exports.deriveFromSync = require_internal_dependency.deriveFromSync;
40
40
  exports.domain = require_valueparser.domain;
41
41
  exports.email = require_valueparser.email;
42
42
  exports.ensureNonEmptyString = require_nonempty.ensureNonEmptyString;
@@ -47,6 +47,7 @@ exports.extractLiteralValues = require_usage.extractLiteralValues;
47
47
  exports.extractOptionNames = require_usage.extractOptionNames;
48
48
  exports.fail = require_primitives.fail;
49
49
  exports.fileSize = require_valueparser.fileSize;
50
+ exports.firstOf = require_valueparser.firstOf;
50
51
  exports.fish = require_completion.fish;
51
52
  exports.flag = require_primitives.flag;
52
53
  exports.float = require_valueparser.float;
@@ -54,18 +55,18 @@ exports.formatDocPage = require_doc.formatDocPage;
54
55
  exports.formatMessage = require_message.formatMessage;
55
56
  exports.formatUsage = require_usage.formatUsage;
56
57
  exports.formatUsageTerm = require_usage.formatUsageTerm;
57
- exports.getAnnotations = require_annotations.getAnnotations;
58
- exports.getDocPage = require_parser.getDocPage;
59
- exports.getDocPageAsync = require_parser.getDocPageAsync;
60
- exports.getDocPageSync = require_parser.getDocPageSync;
58
+ exports.getAnnotations = require_internal_annotations.getAnnotations;
59
+ exports.getDocPage = require_internal_parser.getDocPage;
60
+ exports.getDocPageAsync = require_internal_parser.getDocPageAsync;
61
+ exports.getDocPageSync = require_internal_parser.getDocPageSync;
61
62
  exports.group = require_constructs.group;
62
63
  exports.hostname = require_valueparser.hostname;
63
64
  exports.integer = require_valueparser.integer;
64
65
  exports.ip = require_valueparser.ip;
65
66
  exports.ipv4 = require_valueparser.ipv4;
66
67
  exports.ipv6 = require_valueparser.ipv6;
67
- exports.isDependencySource = require_dependency.isDependencySource;
68
- exports.isDerivedValueParser = require_dependency.isDerivedValueParser;
68
+ exports.isDependencySource = require_internal_dependency.isDependencySource;
69
+ exports.isDerivedValueParser = require_internal_dependency.isDerivedValueParser;
69
70
  exports.isDocEntryHidden = require_doc.isDocEntryHidden;
70
71
  exports.isDocHidden = require_usage.isDocHidden;
71
72
  exports.isNonEmptyString = require_nonempty.isNonEmptyString;
@@ -94,9 +95,9 @@ exports.optionName = require_message.optionName;
94
95
  exports.optionNames = require_message.optionNames;
95
96
  exports.optional = require_modifiers.optional;
96
97
  exports.or = require_constructs.or;
97
- exports.parse = require_parser.parse;
98
- exports.parseAsync = require_parser.parseAsync;
99
- exports.parseSync = require_parser.parseSync;
98
+ exports.parse = require_internal_parser.parse;
99
+ exports.parseAsync = require_internal_parser.parseAsync;
100
+ exports.parseSync = require_internal_parser.parseSync;
100
101
  exports.passThrough = require_primitives.passThrough;
101
102
  exports.port = require_valueparser.port;
102
103
  exports.portRange = require_valueparser.portRange;
@@ -108,11 +109,12 @@ exports.runWith = require_facade.runWith;
108
109
  exports.runWithAsync = require_facade.runWithAsync;
109
110
  exports.runWithSync = require_facade.runWithSync;
110
111
  exports.semVer = require_valueparser.semVer;
112
+ exports.seq = require_constructs.seq;
111
113
  exports.socketAddress = require_valueparser.socketAddress;
112
114
  exports.string = require_valueparser.string;
113
- exports.suggest = require_parser.suggest;
114
- exports.suggestAsync = require_parser.suggestAsync;
115
- exports.suggestSync = require_parser.suggestSync;
115
+ exports.suggest = require_internal_parser.suggest;
116
+ exports.suggestAsync = require_internal_parser.suggestAsync;
117
+ exports.suggestSync = require_internal_parser.suggestSync;
116
118
  exports.text = require_message.text;
117
119
  exports.tuple = require_constructs.tuple;
118
120
  exports.url = require_valueparser.url;
package/dist/index.d.cts CHANGED
@@ -3,13 +3,13 @@ import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonemp
3
3
  import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.cjs";
4
4
  import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.cjs";
5
5
  import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowChoicesOptions, ShowDefaultOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.cjs";
6
- import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, color, domain, email, fileSize, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, locale, macAddress, port, portRange, semVer, socketAddress, string, url, uuid } from "./valueparser.cjs";
6
+ import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, color, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, locale, macAddress, port, portRange, semVer, socketAddress, string, url, uuid } from "./valueparser.cjs";
7
7
  import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.cjs";
8
8
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
9
- import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.cjs";
9
+ import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, SeqOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, seq, tuple } from "./constructs.cjs";
10
10
  import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./context.cjs";
11
11
  import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser } from "./internal/dependency.cjs";
12
12
  import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
13
13
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.cjs";
14
14
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.cjs";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, deduplicateDocEntries, deduplicateDocFragments, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, socketAddress, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, deduplicateDocEntries, deduplicateDocFragments, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.d.ts CHANGED
@@ -3,13 +3,13 @@ import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonemp
3
3
  import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
4
4
  import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
5
5
  import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowChoicesOptions, ShowDefaultOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.js";
6
- import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, color, domain, email, fileSize, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, locale, macAddress, port, portRange, semVer, socketAddress, string, url, uuid } from "./valueparser.js";
6
+ import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, color, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, locale, macAddress, port, portRange, semVer, socketAddress, string, url, uuid } from "./valueparser.js";
7
7
  import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.js";
8
8
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
9
- import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
9
+ import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, SeqOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, seq, tuple } from "./constructs.js";
10
10
  import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./context.js";
11
11
  import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
12
12
  import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
13
13
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
14
14
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.js";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, deduplicateDocEntries, deduplicateDocFragments, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, socketAddress, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, deduplicateDocEntries, deduplicateDocFragments, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { getAnnotations } from "./internal/annotations.js";
2
2
  import { commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
3
- import { bash, fish, nu, pwsh, zsh } from "./completion.js";
4
3
  import { cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
5
4
  import { cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.js";
6
5
  import { dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
7
6
  import { createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.js";
8
- import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
7
+ import { bash, fish, nu, pwsh, zsh } from "./completion.js";
8
+ import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, seq, tuple } from "./constructs.js";
9
9
  import { WithDefaultError, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
10
10
  import { ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
11
- import { checkBooleanOption, checkEnumOption, choice, cidr, color, domain, email, fileSize, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, locale, macAddress, port, portRange, semVer, socketAddress, string, url, uuid } from "./valueparser.js";
11
+ import { checkBooleanOption, checkEnumOption, choice, cidr, color, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, locale, macAddress, port, portRange, semVer, socketAddress, string, url, uuid } from "./valueparser.js";
12
12
  import { argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.js";
13
13
  import { RunParserError, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
14
14
 
15
- export { DuplicateOptionError, RunParserError, WithDefaultError, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, deduplicateDocEntries, deduplicateDocFragments, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, socketAddress, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
15
+ export { DuplicateOptionError, RunParserError, WithDefaultError, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, deduplicateDocEntries, deduplicateDocFragments, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
@@ -73,5 +73,6 @@ interface InputTrace {
73
73
  * @internal
74
74
  * @since 1.0.0
75
75
  */
76
+ declare function createInputTrace(): InputTrace;
76
77
  //#endregion
77
- export { InputTrace };
78
+ export { InputTrace, TraceEntry, createInputTrace };
@@ -73,5 +73,6 @@ interface InputTrace {
73
73
  * @internal
74
74
  * @since 1.0.0
75
75
  */
76
+ declare function createInputTrace(): InputTrace;
76
77
  //#endregion
77
- export { InputTrace };
78
+ export { InputTrace, TraceEntry, createInputTrace };
@@ -306,6 +306,9 @@ function unwrapInjectedAnnotationState(value) {
306
306
  //#endregion
307
307
  exports.annotateFreshArray = annotateFreshArray;
308
308
  exports.annotationKey = annotationKey;
309
+ exports.annotationStateValueKey = annotationStateValueKey;
310
+ exports.annotationWrapperKey = annotationWrapperKey;
311
+ exports.firstPassAnnotationKey = firstPassAnnotationKey;
309
312
  exports.getAnnotations = getAnnotations;
310
313
  exports.hasMeaningfulAnnotations = hasMeaningfulAnnotations;
311
314
  exports.inheritAnnotations = inheritAnnotations;