@optique/core 1.0.0-dev.1536 → 1.0.0-dev.1547

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.
@@ -9,6 +9,43 @@ const require_suggestion = require('./suggestion.cjs');
9
9
  const require_usage_internals = require('./usage-internals.cjs');
10
10
 
11
11
  //#region src/constructs.ts
12
+ /**
13
+ * A shared empty set used as the `leadingNames` value for parsers that
14
+ * do not match any specific name at the first buffer position.
15
+ */
16
+ const EMPTY_LEADING_NAMES = /* @__PURE__ */ new Set();
17
+ /**
18
+ * Computes the union of `leadingNames` from all given parsers.
19
+ * Used for alternative combinators (`or()`, `longestMatch()`) where all
20
+ * branches compete independently.
21
+ */
22
+ function unionLeadingNames(parsers) {
23
+ const names = /* @__PURE__ */ new Set();
24
+ for (const p of parsers) for (const name of p.leadingNames) names.add(name);
25
+ return names.size === 0 ? EMPTY_LEADING_NAMES : names;
26
+ }
27
+ /**
28
+ * Computes `leadingNames` for shared-buffer compositions (`tuple()`,
29
+ * `object()`, `merge()`, `concat()`).
30
+ *
31
+ * Children are processed in descending priority order (matching the
32
+ * round-robin parse loop). Once a child with `acceptingAnyToken` is
33
+ * encountered, no lower-priority children can match at position 0, so
34
+ * their names are excluded.
35
+ */
36
+ function sharedBufferLeadingNames(parsers) {
37
+ const sorted = parsers.toSorted((a, b) => b.priority - a.priority);
38
+ const names = /* @__PURE__ */ new Set();
39
+ let positionalBlocked = false;
40
+ for (const p of sorted) {
41
+ if (p.leadingNames) for (const name of p.leadingNames) {
42
+ if (positionalBlocked && !name.startsWith("-")) continue;
43
+ names.add(name);
44
+ }
45
+ if (p.acceptingAnyToken) positionalBlocked = true;
46
+ }
47
+ return names.size === 0 ? EMPTY_LEADING_NAMES : names;
48
+ }
12
49
  const inheritParentAnnotationsKey = Symbol.for("@optique/core/inheritParentAnnotations");
13
50
  /**
14
51
  * Internal symbol for exposing field-level parser pairs from `object()`
@@ -463,6 +500,8 @@ function or(...args) {
463
500
  type: "exclusive",
464
501
  terms: parsers.map((p) => p.usage)
465
502
  }],
503
+ leadingNames: unionLeadingNames(parsers),
504
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
466
505
  initialState: void 0,
467
506
  complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
468
507
  parse(context) {
@@ -600,6 +639,8 @@ function longestMatch(...args) {
600
639
  type: "exclusive",
601
640
  terms: parsers.map((p) => p.usage)
602
641
  }],
642
+ leadingNames: unionLeadingNames(parsers),
643
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
603
644
  initialState: void 0,
604
645
  complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
605
646
  parse(context) {
@@ -1185,6 +1226,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1185
1226
  [fieldParsersKey]: parserPairs,
1186
1227
  priority: Math.max(...parserKeys.map((k) => parsers[k].priority)),
1187
1228
  usage: applyHiddenToUsage(parserPairs.flatMap(([_, p]) => p.usage), options.hidden),
1229
+ leadingNames: sharedBufferLeadingNames(parserPairs.map(([_, p]) => p)),
1230
+ acceptingAnyToken: parserPairs.some(([_, p]) => p.acceptingAnyToken),
1188
1231
  get initialState() {
1189
1232
  return createInitialState();
1190
1233
  },
@@ -1556,6 +1599,8 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1556
1599
  $valueType: [],
1557
1600
  $stateType: [],
1558
1601
  usage: parsers.toSorted((a, b) => b.priority - a.priority).flatMap((p) => p.usage),
1602
+ leadingNames: sharedBufferLeadingNames(parsers),
1603
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
1559
1604
  priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
1560
1605
  initialState: parsers.map((parser) => parser.initialState),
1561
1606
  parse(context) {
@@ -1877,6 +1922,8 @@ function merge(...args) {
1877
1922
  [fieldParsersKey]: mergedFieldParsers,
1878
1923
  priority: Math.max(...parsers.map((p) => p.priority)),
1879
1924
  usage: applyHiddenToUsage(parsers.flatMap((p) => p.usage), options.hidden),
1925
+ leadingNames: sharedBufferLeadingNames(parsers),
1926
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
1880
1927
  initialState,
1881
1928
  parse(context) {
1882
1929
  if (isAsync) return parseAsync(context);
@@ -2415,6 +2462,8 @@ function concat(...parsers) {
2415
2462
  $stateType: [],
2416
2463
  priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
2417
2464
  usage: parsers.flatMap((p) => p.usage),
2465
+ leadingNames: sharedBufferLeadingNames(parsers),
2466
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
2418
2467
  initialState,
2419
2468
  parse(context) {
2420
2469
  if (isAsync) return parseAsync(context);
@@ -2492,6 +2541,8 @@ function group(label, parser, options = {}) {
2492
2541
  $stateType: parser.$stateType,
2493
2542
  priority: parser.priority,
2494
2543
  usage: applyHiddenToUsage(parser.usage, options.hidden),
2544
+ leadingNames: parser.leadingNames,
2545
+ acceptingAnyToken: parser.acceptingAnyToken,
2495
2546
  initialState: parser.initialState,
2496
2547
  ...fieldParsersKey in parser ? { [fieldParsersKey]: parser[fieldParsersKey] } : {},
2497
2548
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
@@ -2976,6 +3027,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
2976
3027
  $stateType: [],
2977
3028
  priority: maxPriority,
2978
3029
  usage,
3030
+ leadingNames: defaultBranch ? unionLeadingNames([discriminator, defaultBranch]) : discriminator.leadingNames,
3031
+ acceptingAnyToken: defaultBranch?.acceptingAnyToken ?? false,
2979
3032
  initialState,
2980
3033
  parse(context) {
2981
3034
  if (isAsync) return parseAsync(context);
@@ -9,6 +9,43 @@ import { DEFAULT_FIND_SIMILAR_OPTIONS, createErrorWithSuggestions, createSuggest
9
9
  import { collectLeadingCandidates } from "./usage-internals.js";
10
10
 
11
11
  //#region src/constructs.ts
12
+ /**
13
+ * A shared empty set used as the `leadingNames` value for parsers that
14
+ * do not match any specific name at the first buffer position.
15
+ */
16
+ const EMPTY_LEADING_NAMES = /* @__PURE__ */ new Set();
17
+ /**
18
+ * Computes the union of `leadingNames` from all given parsers.
19
+ * Used for alternative combinators (`or()`, `longestMatch()`) where all
20
+ * branches compete independently.
21
+ */
22
+ function unionLeadingNames(parsers) {
23
+ const names = /* @__PURE__ */ new Set();
24
+ for (const p of parsers) for (const name of p.leadingNames) names.add(name);
25
+ return names.size === 0 ? EMPTY_LEADING_NAMES : names;
26
+ }
27
+ /**
28
+ * Computes `leadingNames` for shared-buffer compositions (`tuple()`,
29
+ * `object()`, `merge()`, `concat()`).
30
+ *
31
+ * Children are processed in descending priority order (matching the
32
+ * round-robin parse loop). Once a child with `acceptingAnyToken` is
33
+ * encountered, no lower-priority children can match at position 0, so
34
+ * their names are excluded.
35
+ */
36
+ function sharedBufferLeadingNames(parsers) {
37
+ const sorted = parsers.toSorted((a, b) => b.priority - a.priority);
38
+ const names = /* @__PURE__ */ new Set();
39
+ let positionalBlocked = false;
40
+ for (const p of sorted) {
41
+ if (p.leadingNames) for (const name of p.leadingNames) {
42
+ if (positionalBlocked && !name.startsWith("-")) continue;
43
+ names.add(name);
44
+ }
45
+ if (p.acceptingAnyToken) positionalBlocked = true;
46
+ }
47
+ return names.size === 0 ? EMPTY_LEADING_NAMES : names;
48
+ }
12
49
  const inheritParentAnnotationsKey = Symbol.for("@optique/core/inheritParentAnnotations");
13
50
  /**
14
51
  * Internal symbol for exposing field-level parser pairs from `object()`
@@ -463,6 +500,8 @@ function or(...args) {
463
500
  type: "exclusive",
464
501
  terms: parsers.map((p) => p.usage)
465
502
  }],
503
+ leadingNames: unionLeadingNames(parsers),
504
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
466
505
  initialState: void 0,
467
506
  complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
468
507
  parse(context) {
@@ -600,6 +639,8 @@ function longestMatch(...args) {
600
639
  type: "exclusive",
601
640
  terms: parsers.map((p) => p.usage)
602
641
  }],
642
+ leadingNames: unionLeadingNames(parsers),
643
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
603
644
  initialState: void 0,
604
645
  complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
605
646
  parse(context) {
@@ -1185,6 +1226,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1185
1226
  [fieldParsersKey]: parserPairs,
1186
1227
  priority: Math.max(...parserKeys.map((k) => parsers[k].priority)),
1187
1228
  usage: applyHiddenToUsage(parserPairs.flatMap(([_, p]) => p.usage), options.hidden),
1229
+ leadingNames: sharedBufferLeadingNames(parserPairs.map(([_, p]) => p)),
1230
+ acceptingAnyToken: parserPairs.some(([_, p]) => p.acceptingAnyToken),
1188
1231
  get initialState() {
1189
1232
  return createInitialState();
1190
1233
  },
@@ -1556,6 +1599,8 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1556
1599
  $valueType: [],
1557
1600
  $stateType: [],
1558
1601
  usage: parsers.toSorted((a, b) => b.priority - a.priority).flatMap((p) => p.usage),
1602
+ leadingNames: sharedBufferLeadingNames(parsers),
1603
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
1559
1604
  priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
1560
1605
  initialState: parsers.map((parser) => parser.initialState),
1561
1606
  parse(context) {
@@ -1877,6 +1922,8 @@ function merge(...args) {
1877
1922
  [fieldParsersKey]: mergedFieldParsers,
1878
1923
  priority: Math.max(...parsers.map((p) => p.priority)),
1879
1924
  usage: applyHiddenToUsage(parsers.flatMap((p) => p.usage), options.hidden),
1925
+ leadingNames: sharedBufferLeadingNames(parsers),
1926
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
1880
1927
  initialState,
1881
1928
  parse(context) {
1882
1929
  if (isAsync) return parseAsync(context);
@@ -2415,6 +2462,8 @@ function concat(...parsers) {
2415
2462
  $stateType: [],
2416
2463
  priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
2417
2464
  usage: parsers.flatMap((p) => p.usage),
2465
+ leadingNames: sharedBufferLeadingNames(parsers),
2466
+ acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
2418
2467
  initialState,
2419
2468
  parse(context) {
2420
2469
  if (isAsync) return parseAsync(context);
@@ -2492,6 +2541,8 @@ function group(label, parser, options = {}) {
2492
2541
  $stateType: parser.$stateType,
2493
2542
  priority: parser.priority,
2494
2543
  usage: applyHiddenToUsage(parser.usage, options.hidden),
2544
+ leadingNames: parser.leadingNames,
2545
+ acceptingAnyToken: parser.acceptingAnyToken,
2495
2546
  initialState: parser.initialState,
2496
2547
  ...fieldParsersKey in parser ? { [fieldParsersKey]: parser[fieldParsersKey] } : {},
2497
2548
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
@@ -2976,6 +3027,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
2976
3027
  $stateType: [],
2977
3028
  priority: maxPriority,
2978
3029
  usage,
3030
+ leadingNames: defaultBranch ? unionLeadingNames([discriminator, defaultBranch]) : discriminator.leadingNames,
3031
+ acceptingAnyToken: defaultBranch?.acceptingAnyToken ?? false,
2979
3032
  initialState,
2980
3033
  parse(context) {
2981
3034
  if (isAsync) return parseAsync(context);
package/dist/facade.cjs CHANGED
@@ -196,6 +196,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
196
196
  $stateType: [],
197
197
  priority: 200,
198
198
  usage: helpParsers.helpOption.usage,
199
+ leadingNames: helpParsers.helpOption.leadingNames,
200
+ acceptingAnyToken: false,
199
201
  initialState: null,
200
202
  parse(context) {
201
203
  const { buffer, optionsTerminated } = context;
@@ -275,6 +277,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
275
277
  $stateType: [],
276
278
  priority: 200,
277
279
  usage: versionParsers.versionOption.usage,
280
+ leadingNames: versionParsers.versionOption.leadingNames,
281
+ acceptingAnyToken: false,
278
282
  initialState: null,
279
283
  parse(context) {
280
284
  const { buffer, optionsTerminated } = context;
@@ -620,9 +624,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
620
624
  completionCommandNames
621
625
  ]);
622
626
  require_validate.validateMetaNameCollisions({
623
- leadingOptions: require_usage.extractLeadingOptionNames(parser.usage, true),
624
- leadingCommands: require_usage.extractLeadingCommandNames(parser.usage, true),
625
- leadingLiterals: require_usage.extractLeadingLiteralValues(parser.usage),
627
+ leadingNames: parser.leadingNames,
626
628
  allOptions: require_usage.extractOptionNames(parser.usage, true),
627
629
  allCommands: require_usage.extractCommandNames(parser.usage, true),
628
630
  allLiterals: require_usage.extractLiteralValues(parser.usage)
package/dist/facade.js CHANGED
@@ -3,7 +3,7 @@ import { commandLine, formatMessage, lineBreak, message, optionName, text, value
3
3
  import { bash, fish, nu, pwsh, zsh } from "./completion.js";
4
4
  import { dispatchByMode } from "./mode-dispatch.js";
5
5
  import { validateCommandNames, validateMetaNameCollisions, validateOptionNames } from "./validate.js";
6
- import { extractCommandNames, extractLeadingCommandNames, extractLeadingLiteralValues, extractLeadingOptionNames, extractLiteralValues, extractOptionNames, formatUsage } from "./usage.js";
6
+ import { extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage } from "./usage.js";
7
7
  import { formatDocPage } from "./doc.js";
8
8
  import { group, longestMatch, object } from "./constructs.js";
9
9
  import { multiple, optional, withDefault } from "./modifiers.js";
@@ -196,6 +196,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
196
196
  $stateType: [],
197
197
  priority: 200,
198
198
  usage: helpParsers.helpOption.usage,
199
+ leadingNames: helpParsers.helpOption.leadingNames,
200
+ acceptingAnyToken: false,
199
201
  initialState: null,
200
202
  parse(context) {
201
203
  const { buffer, optionsTerminated } = context;
@@ -275,6 +277,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
275
277
  $stateType: [],
276
278
  priority: 200,
277
279
  usage: versionParsers.versionOption.usage,
280
+ leadingNames: versionParsers.versionOption.leadingNames,
281
+ acceptingAnyToken: false,
278
282
  initialState: null,
279
283
  parse(context) {
280
284
  const { buffer, optionsTerminated } = context;
@@ -620,9 +624,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
620
624
  completionCommandNames
621
625
  ]);
622
626
  validateMetaNameCollisions({
623
- leadingOptions: extractLeadingOptionNames(parser.usage, true),
624
- leadingCommands: extractLeadingCommandNames(parser.usage, true),
625
- leadingLiterals: extractLeadingLiteralValues(parser.usage),
627
+ leadingNames: parser.leadingNames,
626
628
  allOptions: extractOptionNames(parser.usage, true),
627
629
  allCommands: extractCommandNames(parser.usage, true),
628
630
  allLiterals: extractLiteralValues(parser.usage)
package/dist/index.cjs CHANGED
@@ -53,9 +53,6 @@ exports.ensureNonEmptyString = require_nonempty.ensureNonEmptyString;
53
53
  exports.envVar = require_message.envVar;
54
54
  exports.extractArgumentMetavars = require_usage.extractArgumentMetavars;
55
55
  exports.extractCommandNames = require_usage.extractCommandNames;
56
- exports.extractLeadingCommandNames = require_usage.extractLeadingCommandNames;
57
- exports.extractLeadingLiteralValues = require_usage.extractLeadingLiteralValues;
58
- exports.extractLeadingOptionNames = require_usage.extractLeadingOptionNames;
59
56
  exports.extractLiteralValues = require_usage.extractLiteralValues;
60
57
  exports.extractOptionNames = require_usage.extractOptionNames;
61
58
  exports.fail = require_primitives.fail;
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Annotations, ParseOptions, annotationKey, getAnnotations } from "./annotations.cjs";
2
2
  import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonempty.cjs";
3
3
  import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.cjs";
4
- import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLeadingCommandNames, extractLeadingLiteralValues, extractLeadingOptionNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.cjs";
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
6
  import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, DeferredMap, DomainOptions, EmailOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, domain, email, float, hostname, integer, ip, ipv4, ipv6, isValueParser, locale, macAddress, port, portRange, socketAddress, string, url, uuid } from "./valueparser.cjs";
7
7
  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";
@@ -12,4 +12,4 @@ import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, Mode
12
12
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
13
13
  import { ParserValuePlaceholder, SourceContext } from "./context.cjs";
14
14
  import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLeadingCommandNames, extractLeadingLiteralValues, extractLeadingOptionNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Annotations, ParseOptions, annotationKey, getAnnotations } from "./annotations.js";
2
2
  import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
3
3
  import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
4
- import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLeadingCommandNames, extractLeadingLiteralValues, extractLeadingOptionNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
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
6
  import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, DeferredMap, DomainOptions, EmailOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, domain, email, float, hostname, integer, ip, ipv4, ipv6, isValueParser, locale, macAddress, port, portRange, socketAddress, string, url, uuid } from "./valueparser.js";
7
7
  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";
@@ -12,4 +12,4 @@ import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, Mode
12
12
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
13
13
  import { ParserValuePlaceholder, SourceContext } from "./context.js";
14
14
  import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLeadingCommandNames, extractLeadingLiteralValues, extractLeadingOptionNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { annotationKey, getAnnotations } from "./annotations.js";
2
2
  import { commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
3
3
  import { bash, fish, nu, pwsh, zsh } from "./completion.js";
4
4
  import { DependencyRegistry, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker } from "./dependency.js";
5
- import { cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLeadingCommandNames, extractLeadingLiteralValues, extractLeadingOptionNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
5
+ import { cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
6
6
  import { cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.js";
7
7
  import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
8
8
  import { WithDefaultError, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
@@ -12,4 +12,4 @@ import { argument, command, constant, fail, flag, option, passThrough } from "./
12
12
  import { getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
13
13
  import { RunParserError, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
14
14
 
15
- export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLeadingCommandNames, extractLeadingLiteralValues, extractLeadingOptionNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
15
+ export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
@@ -128,6 +128,8 @@ function optional(parser) {
128
128
  type: "optional",
129
129
  terms: parser.usage
130
130
  }],
131
+ leadingNames: parser.leadingNames,
132
+ acceptingAnyToken: false,
131
133
  initialState: void 0,
132
134
  ...wrappedDependencyMarker,
133
135
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
@@ -246,6 +248,8 @@ function withDefault(parser, defaultValue, options) {
246
248
  type: "optional",
247
249
  terms: parser.usage
248
250
  }],
251
+ leadingNames: parser.leadingNames,
252
+ acceptingAnyToken: false,
249
253
  initialState: void 0,
250
254
  ...wrappedDependencyMarker,
251
255
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
@@ -650,6 +654,8 @@ function multiple(parser, options = {}) {
650
654
  terms: parser.usage,
651
655
  min
652
656
  }],
657
+ leadingNames: parser.leadingNames,
658
+ acceptingAnyToken: min > 0 && (parser.acceptingAnyToken ?? false),
653
659
  initialState: [],
654
660
  parse(context) {
655
661
  return require_mode_dispatch.dispatchByMode(parser.$mode, () => parseSync(context), () => parseAsync(context));
@@ -886,6 +892,8 @@ function nonEmpty(parser) {
886
892
  $stateType: parser.$stateType,
887
893
  priority: parser.priority,
888
894
  usage: parser.usage,
895
+ leadingNames: parser.leadingNames,
896
+ acceptingAnyToken: parser.acceptingAnyToken,
889
897
  initialState: parser.initialState,
890
898
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
891
899
  parse(context) {
package/dist/modifiers.js CHANGED
@@ -128,6 +128,8 @@ function optional(parser) {
128
128
  type: "optional",
129
129
  terms: parser.usage
130
130
  }],
131
+ leadingNames: parser.leadingNames,
132
+ acceptingAnyToken: false,
131
133
  initialState: void 0,
132
134
  ...wrappedDependencyMarker,
133
135
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
@@ -246,6 +248,8 @@ function withDefault(parser, defaultValue, options) {
246
248
  type: "optional",
247
249
  terms: parser.usage
248
250
  }],
251
+ leadingNames: parser.leadingNames,
252
+ acceptingAnyToken: false,
249
253
  initialState: void 0,
250
254
  ...wrappedDependencyMarker,
251
255
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
@@ -650,6 +654,8 @@ function multiple(parser, options = {}) {
650
654
  terms: parser.usage,
651
655
  min
652
656
  }],
657
+ leadingNames: parser.leadingNames,
658
+ acceptingAnyToken: min > 0 && (parser.acceptingAnyToken ?? false),
653
659
  initialState: [],
654
660
  parse(context) {
655
661
  return dispatchByMode(parser.$mode, () => parseSync(context), () => parseAsync(context));
@@ -886,6 +892,8 @@ function nonEmpty(parser) {
886
892
  $stateType: parser.$stateType,
887
893
  priority: parser.priority,
888
894
  usage: parser.usage,
895
+ leadingNames: parser.leadingNames,
896
+ acceptingAnyToken: parser.acceptingAnyToken,
889
897
  initialState: parser.initialState,
890
898
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
891
899
  parse(context) {
package/dist/parser.d.cts CHANGED
@@ -105,6 +105,44 @@ interface Parser<M extends Mode = "sync", TValue = unknown, TState = unknown> {
105
105
  * to use it in command-line interfaces.
106
106
  */
107
107
  readonly usage: Usage;
108
+ /**
109
+ * Names that this parser could match at the first buffer position.
110
+ * Used by `runParser()` to detect collisions with built-in meta
111
+ * features (help, version, completion).
112
+ *
113
+ * Each built-in combinator computes this from its structural semantics.
114
+ * Custom parser implementations must include every fixed token that
115
+ * the parser accepts at `argv[0]` — command names, option names, and
116
+ * literal values alike. For example, a parser whose usage declares
117
+ * `{ type: "literal", value: "serve" }` should include `"serve"` in
118
+ * this set. Parsers that accept *any* token (like `argument()`) should
119
+ * return an empty set and set {@link acceptingAnyToken} to `true`
120
+ * instead.
121
+ *
122
+ * @since 1.0.0
123
+ */
124
+ readonly leadingNames: ReadonlySet<string>;
125
+ /**
126
+ * Whether this parser unconditionally consumes any positional token at
127
+ * the first buffer position. A parser with this flag accepts any
128
+ * non-option token but may still reject option-like tokens (those
129
+ * starting with `"-"`).
130
+ *
131
+ * In shared-buffer compositions (`tuple()`, `object()`, `merge()`,
132
+ * `concat()`), a catch-all parser blocks positional names (command
133
+ * names) from lower-priority siblings but does not block option-like
134
+ * names. In `conditional()`, option-like names from the default
135
+ * branch remain reachable even when the discriminator is a catch-all.
136
+ *
137
+ * Only `argument()` is inherently accepting-any-token; combinators
138
+ * like `or()` and `map()` propagate this from their children.
139
+ * Wrappers that can succeed without consuming (`optional()`,
140
+ * `withDefault()`, `multiple()` with `min = 0`) always set this
141
+ * to `false`.
142
+ *
143
+ * @since 1.0.0
144
+ */
145
+ readonly acceptingAnyToken: boolean;
108
146
  /**
109
147
  * The initial state for this parser. This is used to initialize the
110
148
  * state when parsing starts.
package/dist/parser.d.ts CHANGED
@@ -105,6 +105,44 @@ interface Parser<M extends Mode = "sync", TValue = unknown, TState = unknown> {
105
105
  * to use it in command-line interfaces.
106
106
  */
107
107
  readonly usage: Usage;
108
+ /**
109
+ * Names that this parser could match at the first buffer position.
110
+ * Used by `runParser()` to detect collisions with built-in meta
111
+ * features (help, version, completion).
112
+ *
113
+ * Each built-in combinator computes this from its structural semantics.
114
+ * Custom parser implementations must include every fixed token that
115
+ * the parser accepts at `argv[0]` — command names, option names, and
116
+ * literal values alike. For example, a parser whose usage declares
117
+ * `{ type: "literal", value: "serve" }` should include `"serve"` in
118
+ * this set. Parsers that accept *any* token (like `argument()`) should
119
+ * return an empty set and set {@link acceptingAnyToken} to `true`
120
+ * instead.
121
+ *
122
+ * @since 1.0.0
123
+ */
124
+ readonly leadingNames: ReadonlySet<string>;
125
+ /**
126
+ * Whether this parser unconditionally consumes any positional token at
127
+ * the first buffer position. A parser with this flag accepts any
128
+ * non-option token but may still reject option-like tokens (those
129
+ * starting with `"-"`).
130
+ *
131
+ * In shared-buffer compositions (`tuple()`, `object()`, `merge()`,
132
+ * `concat()`), a catch-all parser blocks positional names (command
133
+ * names) from lower-priority siblings but does not block option-like
134
+ * names. In `conditional()`, option-like names from the default
135
+ * branch remain reachable even when the discriminator is a catch-all.
136
+ *
137
+ * Only `argument()` is inherently accepting-any-token; combinators
138
+ * like `or()` and `map()` propagate this from their children.
139
+ * Wrappers that can succeed without consuming (`optional()`,
140
+ * `withDefault()`, `multiple()` with `min = 0`) always set this
141
+ * to `false`.
142
+ *
143
+ * @since 1.0.0
144
+ */
145
+ readonly acceptingAnyToken: boolean;
108
146
  /**
109
147
  * The initial state for this parser. This is used to initialize the
110
148
  * state when parsing starts.
@@ -9,6 +9,11 @@ const require_usage_internals = require('./usage-internals.cjs');
9
9
  const require_valueparser = require('./valueparser.cjs');
10
10
 
11
11
  //#region src/primitives.ts
12
+ /**
13
+ * A shared empty set used as the `leadingNames` value for parsers that
14
+ * do not match any specific name at the first buffer position.
15
+ */
16
+ const EMPTY_LEADING_NAMES = /* @__PURE__ */ new Set();
12
17
  function hasParsedOptionValue(state, valueParser) {
13
18
  if (valueParser != null) return require_dependency.isDeferredParseState(state) || require_dependency.isDependencySourceState(state) || state != null && "success" in state && state.success;
14
19
  return state != null && "success" in state && state.success && state.value === true;
@@ -38,6 +43,8 @@ function constant(value) {
38
43
  $mode: "sync",
39
44
  priority: 0,
40
45
  usage: [],
46
+ leadingNames: EMPTY_LEADING_NAMES,
47
+ acceptingAnyToken: false,
41
48
  initialState: value,
42
49
  parse(context) {
43
50
  return {
@@ -93,6 +100,8 @@ function fail() {
93
100
  $mode: "sync",
94
101
  priority: 0,
95
102
  usage: [],
103
+ leadingNames: EMPTY_LEADING_NAMES,
104
+ acceptingAnyToken: false,
96
105
  initialState: void 0,
97
106
  parse(_context) {
98
107
  return {
@@ -338,6 +347,8 @@ function option(...args) {
338
347
  metavar: valueParser.metavar,
339
348
  ...options.hidden != null && { hidden: options.hidden }
340
349
  }],
350
+ leadingNames: new Set(optionNames$1),
351
+ acceptingAnyToken: false,
341
352
  initialState: valueParser == null ? {
342
353
  success: true,
343
354
  value: false
@@ -622,6 +633,8 @@ function flag(...args) {
622
633
  names: optionNames$1,
623
634
  ...options.hidden != null && { hidden: options.hidden }
624
635
  }],
636
+ leadingNames: new Set(optionNames$1),
637
+ acceptingAnyToken: false,
625
638
  initialState: void 0,
626
639
  parse(context) {
627
640
  if (context.optionsTerminated) return {
@@ -797,6 +810,8 @@ function argument(valueParser, options = {}) {
797
810
  $stateType: [],
798
811
  priority: 5,
799
812
  usage: [term],
813
+ leadingNames: EMPTY_LEADING_NAMES,
814
+ acceptingAnyToken: true,
800
815
  initialState: void 0,
801
816
  parse(context) {
802
817
  if (context.buffer.length < 1) return {
@@ -986,6 +1001,8 @@ function command(name, parser, options = {}) {
986
1001
  ...options.usageLine != null && { usageLine: options.usageLine },
987
1002
  ...options.hidden != null && { hidden: options.hidden }
988
1003
  }, ...parser.usage],
1004
+ leadingNames: new Set([name]),
1005
+ acceptingAnyToken: false,
989
1006
  initialState: void 0,
990
1007
  parse(context) {
991
1008
  if (context.state === void 0) {
@@ -1180,6 +1197,8 @@ function passThrough(options = {}) {
1180
1197
  type: "passthrough",
1181
1198
  ...options.hidden != null && { hidden: options.hidden }
1182
1199
  }],
1200
+ leadingNames: EMPTY_LEADING_NAMES,
1201
+ acceptingAnyToken: false,
1183
1202
  initialState: [],
1184
1203
  parse(context) {
1185
1204
  if (context.buffer.length < 1) return {