@optique/core 1.3.0-dev.2411 → 1.3.0-dev.2418

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.
@@ -91,6 +91,24 @@ interface DerivedDependencyCapability {
91
91
  */
92
92
  readonly replaySuggest?: (prefix: string, dependencyValues: readonly unknown[]) => Iterable<Suggestion> | AsyncIterable<Suggestion>;
93
93
  }
94
+ /**
95
+ * Metadata for a parser whose effectful completion consumes dependency
96
+ * source values without replaying a parse.
97
+ *
98
+ * A prompt with a derived configuration is the canonical case: resolving
99
+ * the configuration reads previously published dependency values, so the
100
+ * named sources must publish before the parser's effectful completion may
101
+ * run. The scheduler adds provider edges for these IDs, propagates
102
+ * demand through them when the owning source is demanded, and includes
103
+ * them in failure lineage.
104
+ *
105
+ * @internal
106
+ * @since 1.3.0
107
+ */
108
+ interface CompletionDependencyCapability {
109
+ /** The dependency source IDs the effectful completion reads. */
110
+ readonly dependencyIds: readonly symbol[];
111
+ }
94
112
  /**
95
113
  * Metadata indicating that a wrapper transforms the dependency source value.
96
114
  *
@@ -116,6 +134,12 @@ interface ParserDependencyMetadata {
116
134
  readonly source?: DependencySourceCapability;
117
135
  /** Present if the parser depends on one or more sources. */
118
136
  readonly derived?: DerivedDependencyCapability;
137
+ /**
138
+ * Present if the parser's effectful completion consumes dependency
139
+ * values (e.g., a prompt with a derived configuration).
140
+ * @since 1.3.0
141
+ */
142
+ readonly completion?: CompletionDependencyCapability;
119
143
  /** Present if a transform has been applied. */
120
144
  readonly transform?: DependencyTransformCapability;
121
145
  }
@@ -163,4 +187,4 @@ interface WithDefaultCompositionOptions {
163
187
  */
164
188
  declare function composeDependencyMetadata(inner: ParserDependencyMetadata | undefined, wrapperKind: "optional" | "withDefault" | "map", options?: WithDefaultCompositionOptions): ParserDependencyMetadata | undefined;
165
189
  //#endregion
166
- export { DependencySourceCapability, DependencyTransformCapability, DerivedDependencyCapability, ParserDependencyMetadata, WithDefaultCompositionOptions, composeDependencyMetadata, extractDependencyMetadata };
190
+ export { CompletionDependencyCapability, DependencySourceCapability, DependencyTransformCapability, DerivedDependencyCapability, ParserDependencyMetadata, WithDefaultCompositionOptions, composeDependencyMetadata, extractDependencyMetadata };
@@ -91,6 +91,24 @@ interface DerivedDependencyCapability {
91
91
  */
92
92
  readonly replaySuggest?: (prefix: string, dependencyValues: readonly unknown[]) => Iterable<Suggestion> | AsyncIterable<Suggestion>;
93
93
  }
94
+ /**
95
+ * Metadata for a parser whose effectful completion consumes dependency
96
+ * source values without replaying a parse.
97
+ *
98
+ * A prompt with a derived configuration is the canonical case: resolving
99
+ * the configuration reads previously published dependency values, so the
100
+ * named sources must publish before the parser's effectful completion may
101
+ * run. The scheduler adds provider edges for these IDs, propagates
102
+ * demand through them when the owning source is demanded, and includes
103
+ * them in failure lineage.
104
+ *
105
+ * @internal
106
+ * @since 1.3.0
107
+ */
108
+ interface CompletionDependencyCapability {
109
+ /** The dependency source IDs the effectful completion reads. */
110
+ readonly dependencyIds: readonly symbol[];
111
+ }
94
112
  /**
95
113
  * Metadata indicating that a wrapper transforms the dependency source value.
96
114
  *
@@ -116,6 +134,12 @@ interface ParserDependencyMetadata {
116
134
  readonly source?: DependencySourceCapability;
117
135
  /** Present if the parser depends on one or more sources. */
118
136
  readonly derived?: DerivedDependencyCapability;
137
+ /**
138
+ * Present if the parser's effectful completion consumes dependency
139
+ * values (e.g., a prompt with a derived configuration).
140
+ * @since 1.3.0
141
+ */
142
+ readonly completion?: CompletionDependencyCapability;
119
143
  /** Present if a transform has been applied. */
120
144
  readonly transform?: DependencyTransformCapability;
121
145
  }
@@ -163,4 +187,4 @@ interface WithDefaultCompositionOptions {
163
187
  */
164
188
  declare function composeDependencyMetadata(inner: ParserDependencyMetadata | undefined, wrapperKind: "optional" | "withDefault" | "map", options?: WithDefaultCompositionOptions): ParserDependencyMetadata | undefined;
165
189
  //#endregion
166
- export { DependencySourceCapability, DependencyTransformCapability, DerivedDependencyCapability, ParserDependencyMetadata, WithDefaultCompositionOptions, composeDependencyMetadata, extractDependencyMetadata };
190
+ export { CompletionDependencyCapability, DependencySourceCapability, DependencyTransformCapability, DerivedDependencyCapability, ParserDependencyMetadata, WithDefaultCompositionOptions, composeDependencyMetadata, extractDependencyMetadata };
@@ -426,6 +426,14 @@ function orderDependencyNodes(nodes) {
426
426
  for (const node of nodes) {
427
427
  const derived = node.parser.dependencyMetadata?.derived;
428
428
  if (derived != null) for (const dependencySourceId of derived.dependencyIds) for (const provider of providers.get(dependencySourceId) ?? []) addEdge(provider, node);
429
+ const completion = node.parser.dependencyMetadata?.completion;
430
+ if (completion != null && !hasInactiveCompletion(node)) {
431
+ const ownSourceId = node.parser.dependencyMetadata?.source?.sourceId;
432
+ for (const dependencySourceId of completion.dependencyIds) {
433
+ if (dependencySourceId === ownSourceId) continue;
434
+ for (const provider of providers.get(dependencySourceId) ?? []) if (provider !== node) addEdge(provider, node);
435
+ }
436
+ }
429
437
  if (node.requiresSourceId != null) {
430
438
  for (const provider of providers.get(node.requiresSourceId) ?? []) if (provider !== node) addEdge(provider, node);
431
439
  }
@@ -446,7 +454,7 @@ function orderDependencyNodes(nodes) {
446
454
  if (ordered.length !== nodes.length) {
447
455
  const cycle = nodes.filter((node) => (indegree.get(node) ?? 0) > 0);
448
456
  const labels = cycle.map(formatDependencyNodeLabel).join(" -> ");
449
- throw new TypeError(`Circular dependency detected among derived sources: ${labels}.`);
457
+ throw new TypeError(`Circular dependency detected among dependency sources: ${labels}.`);
450
458
  }
451
459
  return ordered;
452
460
  }
@@ -527,18 +535,42 @@ function hasPendingProvider(node, providers, settled, runtime, options) {
527
535
  function getNodeRawInput(node) {
528
536
  return node.rawInput ?? extractRawInputFromState(node.state);
529
537
  }
538
+ /**
539
+ * Whether a node's completion dependencies are inactive because this
540
+ * occurrence's own state already extracts a value: a field satisfied by
541
+ * the command line or a binding never runs its configuration resolver,
542
+ * so its completion dependencies must not order scheduling, demand
543
+ * upstream sources, or join failure lineage. A failed extraction keeps
544
+ * the completion active (the effectful completion is its recovery
545
+ * path), and an asynchronous extraction is conservatively treated as
546
+ * active because it cannot be decided synchronously.
547
+ */
548
+ function hasInactiveCompletion(node) {
549
+ const metadata = node.parser.dependencyMetadata;
550
+ if (metadata?.completion == null || metadata.source == null) return false;
551
+ const extracted = metadata.source.extractSourceValue?.(node.state);
552
+ if (isPromiseLike(extracted)) {
553
+ Promise.resolve(extracted).catch(() => {});
554
+ return false;
555
+ }
556
+ return extracted != null && extracted.success === true;
557
+ }
530
558
  function registerRuntimeSourceMetadata(nodes, runtime) {
531
559
  for (const node of nodes) {
532
560
  const metadata = node.parser.dependencyMetadata;
533
561
  if (metadata?.source == null) continue;
534
- runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), metadata.derived?.dependencyIds);
562
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
563
+ const dependencyIds = completion == null ? metadata.derived?.dependencyIds : [...metadata.derived?.dependencyIds ?? [], ...completion.dependencyIds.filter((id) => !(metadata.derived?.dependencyIds ?? []).includes(id))];
564
+ runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), dependencyIds);
535
565
  }
536
566
  }
537
567
  function propagateRuntimeSourceFailures(nodes, runtime) {
538
568
  for (const node of orderDependencyNodes(nodes)) {
539
569
  const metadata = node.parser.dependencyMetadata;
540
- if (metadata?.derived == null) continue;
541
- runtime.propagateSourceFailure(metadata.derived.dependencyIds, formatDependencyNodeMetavar(node), metadata.source?.sourceId);
570
+ if (metadata == null) continue;
571
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
572
+ if (metadata.derived == null && completion == null) continue;
573
+ runtime.propagateSourceFailure([...metadata.derived?.dependencyIds ?? [], ...completion?.dependencyIds ?? []], formatDependencyNodeMetavar(node), metadata.source?.sourceId);
542
574
  }
543
575
  }
544
576
  /**
@@ -1009,6 +1041,11 @@ async function completeEffectfulSourcesAsync(nodes, state, runtime, exec, option
1009
1041
  session.demanded.add(dependencySourceId);
1010
1042
  demandAdded = true;
1011
1043
  }
1044
+ if (metadata?.source != null && metadata.completion != null && session.demanded.has(metadata.source.sourceId) && !hasInactiveCompletion(node)) for (const dependencySourceId of metadata.completion.dependencyIds) {
1045
+ if (session.demanded.has(dependencySourceId)) continue;
1046
+ session.demanded.add(dependencySourceId);
1047
+ demandAdded = true;
1048
+ }
1012
1049
  if (node.requiresSourceId == null || node.providesSourceIds == null) continue;
1013
1050
  if (session.demanded.has(node.requiresSourceId)) continue;
1014
1051
  for (const provided of node.providesSourceIds) if (session.demanded.has(provided)) {
@@ -426,6 +426,14 @@ function orderDependencyNodes(nodes) {
426
426
  for (const node of nodes) {
427
427
  const derived = node.parser.dependencyMetadata?.derived;
428
428
  if (derived != null) for (const dependencySourceId of derived.dependencyIds) for (const provider of providers.get(dependencySourceId) ?? []) addEdge(provider, node);
429
+ const completion = node.parser.dependencyMetadata?.completion;
430
+ if (completion != null && !hasInactiveCompletion(node)) {
431
+ const ownSourceId = node.parser.dependencyMetadata?.source?.sourceId;
432
+ for (const dependencySourceId of completion.dependencyIds) {
433
+ if (dependencySourceId === ownSourceId) continue;
434
+ for (const provider of providers.get(dependencySourceId) ?? []) if (provider !== node) addEdge(provider, node);
435
+ }
436
+ }
429
437
  if (node.requiresSourceId != null) {
430
438
  for (const provider of providers.get(node.requiresSourceId) ?? []) if (provider !== node) addEdge(provider, node);
431
439
  }
@@ -446,7 +454,7 @@ function orderDependencyNodes(nodes) {
446
454
  if (ordered.length !== nodes.length) {
447
455
  const cycle = nodes.filter((node) => (indegree.get(node) ?? 0) > 0);
448
456
  const labels = cycle.map(formatDependencyNodeLabel).join(" -> ");
449
- throw new TypeError(`Circular dependency detected among derived sources: ${labels}.`);
457
+ throw new TypeError(`Circular dependency detected among dependency sources: ${labels}.`);
450
458
  }
451
459
  return ordered;
452
460
  }
@@ -527,18 +535,42 @@ function hasPendingProvider(node, providers, settled, runtime, options) {
527
535
  function getNodeRawInput(node) {
528
536
  return node.rawInput ?? extractRawInputFromState(node.state);
529
537
  }
538
+ /**
539
+ * Whether a node's completion dependencies are inactive because this
540
+ * occurrence's own state already extracts a value: a field satisfied by
541
+ * the command line or a binding never runs its configuration resolver,
542
+ * so its completion dependencies must not order scheduling, demand
543
+ * upstream sources, or join failure lineage. A failed extraction keeps
544
+ * the completion active (the effectful completion is its recovery
545
+ * path), and an asynchronous extraction is conservatively treated as
546
+ * active because it cannot be decided synchronously.
547
+ */
548
+ function hasInactiveCompletion(node) {
549
+ const metadata = node.parser.dependencyMetadata;
550
+ if (metadata?.completion == null || metadata.source == null) return false;
551
+ const extracted = metadata.source.extractSourceValue?.(node.state);
552
+ if (isPromiseLike(extracted)) {
553
+ Promise.resolve(extracted).catch(() => {});
554
+ return false;
555
+ }
556
+ return extracted != null && extracted.success === true;
557
+ }
530
558
  function registerRuntimeSourceMetadata(nodes, runtime) {
531
559
  for (const node of nodes) {
532
560
  const metadata = node.parser.dependencyMetadata;
533
561
  if (metadata?.source == null) continue;
534
- runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), metadata.derived?.dependencyIds);
562
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
563
+ const dependencyIds = completion == null ? metadata.derived?.dependencyIds : [...metadata.derived?.dependencyIds ?? [], ...completion.dependencyIds.filter((id) => !(metadata.derived?.dependencyIds ?? []).includes(id))];
564
+ runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), dependencyIds);
535
565
  }
536
566
  }
537
567
  function propagateRuntimeSourceFailures(nodes, runtime) {
538
568
  for (const node of orderDependencyNodes(nodes)) {
539
569
  const metadata = node.parser.dependencyMetadata;
540
- if (metadata?.derived == null) continue;
541
- runtime.propagateSourceFailure(metadata.derived.dependencyIds, formatDependencyNodeMetavar(node), metadata.source?.sourceId);
570
+ if (metadata == null) continue;
571
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
572
+ if (metadata.derived == null && completion == null) continue;
573
+ runtime.propagateSourceFailure([...metadata.derived?.dependencyIds ?? [], ...completion?.dependencyIds ?? []], formatDependencyNodeMetavar(node), metadata.source?.sourceId);
542
574
  }
543
575
  }
544
576
  /**
@@ -1009,6 +1041,11 @@ async function completeEffectfulSourcesAsync(nodes, state, runtime, exec, option
1009
1041
  session.demanded.add(dependencySourceId);
1010
1042
  demandAdded = true;
1011
1043
  }
1044
+ if (metadata?.source != null && metadata.completion != null && session.demanded.has(metadata.source.sourceId) && !hasInactiveCompletion(node)) for (const dependencySourceId of metadata.completion.dependencyIds) {
1045
+ if (session.demanded.has(dependencySourceId)) continue;
1046
+ session.demanded.add(dependencySourceId);
1047
+ demandAdded = true;
1048
+ }
1012
1049
  if (node.requiresSourceId == null || node.providesSourceIds == null) continue;
1013
1050
  if (session.demanded.has(node.requiresSourceId)) continue;
1014
1051
  for (const provided of node.providesSourceIds) if (session.demanded.has(provided)) {
@@ -4,5 +4,6 @@ exports.dependency = require_internal_dependency.dependency;
4
4
  exports.deriveFrom = require_internal_dependency.deriveFrom;
5
5
  exports.deriveFromAsync = require_internal_dependency.deriveFromAsync;
6
6
  exports.deriveFromSync = require_internal_dependency.deriveFromSync;
7
+ exports.getDependencySourceInfo = require_internal_dependency.getDependencySourceInfo;
7
8
  exports.isDependencySource = require_internal_dependency.isDependencySource;
8
9
  exports.isDerivedValueParser = require_internal_dependency.isDerivedValueParser;
@@ -1,2 +1,2 @@
1
- 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";
2
- export { type AnyDependencySource, type CombineMode, type CombinedDependencyMode, type DependencyMode, type DependencySource, type DependencyValue, type DependencyValues, type DeriveAsyncOptions, type DeriveFromAsyncOptions, type DeriveFromOptions, type DeriveFromSyncOptions, type DeriveOptions, type DeriveSyncOptions, type DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser };
1
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.cjs";
2
+ export { type AnyDependencySource, type CombineMode, type CombinedDependencyMode, type DependencyMode, type DependencySource, type DependencySourceInfo, type DependencyValue, type DependencyValues, type DeriveAsyncOptions, type DeriveFromAsyncOptions, type DeriveFromOptions, type DeriveFromSyncOptions, type DeriveOptions, type DeriveSyncOptions, type DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser };
@@ -1,2 +1,2 @@
1
- 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";
2
- export { type AnyDependencySource, type CombineMode, type CombinedDependencyMode, type DependencyMode, type DependencySource, type DependencyValue, type DependencyValues, type DeriveAsyncOptions, type DeriveFromAsyncOptions, type DeriveFromOptions, type DeriveFromSyncOptions, type DeriveOptions, type DeriveSyncOptions, type DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser };
1
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
2
+ export { type AnyDependencySource, type CombineMode, type CombinedDependencyMode, type DependencyMode, type DependencySource, type DependencySourceInfo, type DependencyValue, type DependencyValues, type DeriveAsyncOptions, type DeriveFromAsyncOptions, type DeriveFromOptions, type DeriveFromSyncOptions, type DeriveOptions, type DeriveSyncOptions, type DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser };
@@ -1,3 +1,3 @@
1
- import { dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
1
+ import { dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
2
2
 
3
- export { dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser };
3
+ export { dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser };
package/dist/index.cjs CHANGED
@@ -60,6 +60,7 @@ exports.formatMessage = require_message.formatMessage;
60
60
  exports.formatUsage = require_usage.formatUsage;
61
61
  exports.formatUsageTerm = require_usage.formatUsageTerm;
62
62
  exports.getAnnotations = require_internal_annotations.getAnnotations;
63
+ exports.getDependencySourceInfo = require_internal_dependency.getDependencySourceInfo;
63
64
  exports.getDocPage = require_internal_parser.getDocPage;
64
65
  exports.getDocPageAsync = require_internal_parser.getDocPageAsync;
65
66
  exports.getDocPageSync = require_internal_parser.getDocPageSync;
package/dist/index.d.cts CHANGED
@@ -9,7 +9,7 @@ import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
9
9
  import { DeferredValue, DeferredValueOptions, DeferredValueSource, FluentParser, MultipleErrorOptions, MultipleOptions, ParserModifiers, WithDefaultError, WithDefaultOptions, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.cjs";
10
10
  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";
11
11
  import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./context.cjs";
12
- 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
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.cjs";
13
13
  import { CommandListMode, CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.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, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, 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, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, 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, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, 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, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, 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, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, 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, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
9
9
  import { DeferredValue, DeferredValueOptions, DeferredValueSource, FluentParser, MultipleErrorOptions, MultipleOptions, ParserModifiers, WithDefaultError, WithDefaultOptions, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
10
10
  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";
11
11
  import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./context.js";
12
- 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
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
13
13
  import { CommandListMode, CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.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, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, 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, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, 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, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, 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, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencySourceInfo, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, 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, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, 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, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ 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
3
  import { cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
4
4
  import { cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.js";
5
- import { dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
5
+ import { dependency, deriveFrom, deriveFromAsync, deriveFromSync, getDependencySourceInfo, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
6
6
  import { createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.js";
7
7
  import { bash, fish, nu, pwsh, zsh } from "./completion.js";
8
8
  import { WithDefaultError, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
@@ -12,4 +12,4 @@ import { biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron,
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, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, 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, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
15
+ export { DuplicateOptionError, RunParserError, WithDefaultError, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDependencySourceInfo, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, 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, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
@@ -141,6 +141,28 @@ function isDependencySource(parser) {
141
141
  return dependencySourceMarker in parser && parser[dependencySourceMarker] === true;
142
142
  }
143
143
  /**
144
+ * Reads the identity and diagnostic label of a dependency source without
145
+ * exposing the internal marker symbols.
146
+ *
147
+ * Integration packages (e.g., *@optique/prompt*) use this to declare that
148
+ * an effectful completion consumes the source's value.
149
+ *
150
+ * @param source The dependency source to describe.
151
+ * @returns The source's identity and diagnostic metadata.
152
+ * @throws {TypeError} If `source` is not a dependency source created by
153
+ * `dependency()`.
154
+ * @internal
155
+ * @since 1.3.0
156
+ */
157
+ function getDependencySourceInfo(source) {
158
+ if (source == null || typeof source !== "object" || source[dependencySourceMarker] !== true || typeof source[dependencySourceId] !== "symbol") throw new TypeError("Expected a dependency source created by dependency().");
159
+ const metavar = source.metavar;
160
+ return {
161
+ sourceId: source[dependencySourceId],
162
+ ...typeof metavar === "string" ? { metavar } : {}
163
+ };
164
+ }
165
+ /**
144
166
  * Checks if a value parser is a {@link DerivedValueParser}.
145
167
  *
146
168
  * @param parser The value parser to check.
@@ -1119,6 +1141,7 @@ exports.derivedValueParserMarker = derivedValueParserMarker;
1119
1141
  exports.formatDependencyError = formatDependencyError;
1120
1142
  exports.getDefaultValuesFunction = getDefaultValuesFunction;
1121
1143
  exports.getDependencyIds = getDependencyIds;
1144
+ exports.getDependencySourceInfo = getDependencySourceInfo;
1122
1145
  exports.getSnapshottedDefaultDependencyValues = getSnapshottedDefaultDependencyValues;
1123
1146
  exports.isDeferredParseState = isDeferredParseState;
1124
1147
  exports.isDependencySource = isDependencySource;
@@ -474,6 +474,33 @@ declare function dependency<M extends Mode, T>(parser: ValueParser<M, T>): Depen
474
474
  * @since 0.10.0
475
475
  */
476
476
  declare function isDependencySource<M extends Mode, T>(parser: ValueParser<M, T>): parser is DependencySource<M, T>;
477
+ /**
478
+ * Identity and diagnostic information about a dependency source.
479
+ *
480
+ * @internal
481
+ * @since 1.3.0
482
+ */
483
+ interface DependencySourceInfo {
484
+ /** The source's own identity, unique per `dependency()` call. */
485
+ readonly sourceId: symbol;
486
+ /** Metavariable used to identify this source in diagnostics. */
487
+ readonly metavar?: string;
488
+ }
489
+ /**
490
+ * Reads the identity and diagnostic label of a dependency source without
491
+ * exposing the internal marker symbols.
492
+ *
493
+ * Integration packages (e.g., *@optique/prompt*) use this to declare that
494
+ * an effectful completion consumes the source's value.
495
+ *
496
+ * @param source The dependency source to describe.
497
+ * @returns The source's identity and diagnostic metadata.
498
+ * @throws {TypeError} If `source` is not a dependency source created by
499
+ * `dependency()`.
500
+ * @internal
501
+ * @since 1.3.0
502
+ */
503
+ declare function getDependencySourceInfo(source: AnyDependencySource): DependencySourceInfo;
477
504
  /**
478
505
  * Checks if a value parser is a {@link DerivedValueParser}.
479
506
  *
@@ -862,4 +889,4 @@ type DependencyError = {
862
889
  */
863
890
  declare function formatDependencyError(error: DependencyError): Message;
864
891
  //#endregion
865
- export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, PendingDependencySourceState, ResolvedDependency, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceId, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker };
892
+ export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceInfo, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, PendingDependencySourceState, ResolvedDependency, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceId, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getDependencySourceInfo, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker };
@@ -474,6 +474,33 @@ declare function dependency<M extends Mode, T>(parser: ValueParser<M, T>): Depen
474
474
  * @since 0.10.0
475
475
  */
476
476
  declare function isDependencySource<M extends Mode, T>(parser: ValueParser<M, T>): parser is DependencySource<M, T>;
477
+ /**
478
+ * Identity and diagnostic information about a dependency source.
479
+ *
480
+ * @internal
481
+ * @since 1.3.0
482
+ */
483
+ interface DependencySourceInfo {
484
+ /** The source's own identity, unique per `dependency()` call. */
485
+ readonly sourceId: symbol;
486
+ /** Metavariable used to identify this source in diagnostics. */
487
+ readonly metavar?: string;
488
+ }
489
+ /**
490
+ * Reads the identity and diagnostic label of a dependency source without
491
+ * exposing the internal marker symbols.
492
+ *
493
+ * Integration packages (e.g., *@optique/prompt*) use this to declare that
494
+ * an effectful completion consumes the source's value.
495
+ *
496
+ * @param source The dependency source to describe.
497
+ * @returns The source's identity and diagnostic metadata.
498
+ * @throws {TypeError} If `source` is not a dependency source created by
499
+ * `dependency()`.
500
+ * @internal
501
+ * @since 1.3.0
502
+ */
503
+ declare function getDependencySourceInfo(source: AnyDependencySource): DependencySourceInfo;
477
504
  /**
478
505
  * Checks if a value parser is a {@link DerivedValueParser}.
479
506
  *
@@ -862,4 +889,4 @@ type DependencyError = {
862
889
  */
863
890
  declare function formatDependencyError(error: DependencyError): Message;
864
891
  //#endregion
865
- export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, PendingDependencySourceState, ResolvedDependency, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceId, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker };
892
+ export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceInfo, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, PendingDependencySourceState, ResolvedDependency, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceId, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getDependencySourceInfo, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker };
@@ -141,6 +141,28 @@ function isDependencySource(parser) {
141
141
  return dependencySourceMarker in parser && parser[dependencySourceMarker] === true;
142
142
  }
143
143
  /**
144
+ * Reads the identity and diagnostic label of a dependency source without
145
+ * exposing the internal marker symbols.
146
+ *
147
+ * Integration packages (e.g., *@optique/prompt*) use this to declare that
148
+ * an effectful completion consumes the source's value.
149
+ *
150
+ * @param source The dependency source to describe.
151
+ * @returns The source's identity and diagnostic metadata.
152
+ * @throws {TypeError} If `source` is not a dependency source created by
153
+ * `dependency()`.
154
+ * @internal
155
+ * @since 1.3.0
156
+ */
157
+ function getDependencySourceInfo(source) {
158
+ if (source == null || typeof source !== "object" || source[dependencySourceMarker] !== true || typeof source[dependencySourceId] !== "symbol") throw new TypeError("Expected a dependency source created by dependency().");
159
+ const metavar = source.metavar;
160
+ return {
161
+ sourceId: source[dependencySourceId],
162
+ ...typeof metavar === "string" ? { metavar } : {}
163
+ };
164
+ }
165
+ /**
144
166
  * Checks if a value parser is a {@link DerivedValueParser}.
145
167
  *
146
168
  * @param parser The value parser to check.
@@ -1099,4 +1121,4 @@ function formatDependencyError(error) {
1099
1121
  }
1100
1122
 
1101
1123
  //#endregion
1102
- export { DependencyRegistry, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceId, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker };
1124
+ export { DependencyRegistry, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceId, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getDependencySourceInfo, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optique/core",
3
- "version": "1.3.0-dev.2411",
3
+ "version": "1.3.0-dev.2418",
4
4
  "description": "Type-safe combinatorial command-line interface parser",
5
5
  "keywords": [
6
6
  "CLI",
@@ -221,7 +221,7 @@
221
221
  },
222
222
  "sideEffects": false,
223
223
  "devDependencies": {
224
- "@optique/env": "1.3.0-dev.2411+12afa658",
224
+ "@optique/env": "1.3.0-dev.2418+afa5cda1",
225
225
  "@types/node": "^24.0.0",
226
226
  "fast-check": "^4.7.0",
227
227
  "tsdown": "^0.13.0",
@@ -56,6 +56,11 @@ Core rules
56
56
  For a multi-level chain, wrap the middle derivation too:
57
57
  `dependency(source.deriveSync(...))`. Optique resolves such chains by
58
58
  dependency order, independently of object/tuple field order.
59
+ - Use `derivePromptConfig(source, resolver)` (from *@optique/prompt*,
60
+ re-exported by *@optique/inquirer* and *@optique/clack*) when a prompt's
61
+ choices or message depend on another parsed value. The resolver may be
62
+ async and runs only at the real prompt fallback, after the named sources
63
+ resolve; keep static prompt configs for everything else.
59
64
  - Build subcommands with `command()` combined by `or()`. Put a literal field
60
65
  such as `command: constant("serve")` in each branch when you want a
61
66
  discriminated union.