@optique/core 1.3.0-dev.2417 → 1.3.0-dev.2420

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,58 @@ function hasPendingProvider(node, providers, settled, runtime, options) {
527
535
  function getNodeRawInput(node) {
528
536
  return node.rawInput ?? extractRawInputFromState(node.state);
529
537
  }
538
+ /**
539
+ * Memoizes {@link hasInactiveCompletion} per runtime node. Extraction is
540
+ * pure over the node's state and nodes are freshly built for each
541
+ * completion pass, so a result keyed by node identity stays valid for as
542
+ * long as the node is reachable, while ordering, demand propagation,
543
+ * metadata registration, and failure propagation within one pass share a
544
+ * single evaluation.
545
+ */
546
+ const inactiveCompletionCache = /* @__PURE__ */ new WeakMap();
547
+ /**
548
+ * Whether a node's completion dependencies are inactive because this
549
+ * occurrence's own state already extracts a value: a field satisfied by
550
+ * the command line or a binding never runs its configuration resolver,
551
+ * so its completion dependencies must not order scheduling, demand
552
+ * upstream sources, or join failure lineage. A failed extraction keeps
553
+ * the completion active (the effectful completion is its recovery
554
+ * path), and an asynchronous extraction is conservatively treated as
555
+ * active because it cannot be decided synchronously.
556
+ */
557
+ function hasInactiveCompletion(node) {
558
+ const cached = inactiveCompletionCache.get(node);
559
+ if (cached != null) return cached;
560
+ const inactive = computeInactiveCompletion(node);
561
+ inactiveCompletionCache.set(node, inactive);
562
+ return inactive;
563
+ }
564
+ function computeInactiveCompletion(node) {
565
+ const metadata = node.parser.dependencyMetadata;
566
+ if (metadata?.completion == null || metadata.source == null) return false;
567
+ const extracted = metadata.source.extractSourceValue?.(node.state);
568
+ if (isPromiseLike(extracted)) {
569
+ Promise.resolve(extracted).catch(() => {});
570
+ return false;
571
+ }
572
+ return extracted != null && extracted.success === true;
573
+ }
530
574
  function registerRuntimeSourceMetadata(nodes, runtime) {
531
575
  for (const node of nodes) {
532
576
  const metadata = node.parser.dependencyMetadata;
533
577
  if (metadata?.source == null) continue;
534
- runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), metadata.derived?.dependencyIds);
578
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
579
+ const dependencyIds = completion == null ? metadata.derived?.dependencyIds : [...metadata.derived?.dependencyIds ?? [], ...completion.dependencyIds.filter((id) => !(metadata.derived?.dependencyIds ?? []).includes(id))];
580
+ runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), dependencyIds);
535
581
  }
536
582
  }
537
583
  function propagateRuntimeSourceFailures(nodes, runtime) {
538
584
  for (const node of orderDependencyNodes(nodes)) {
539
585
  const metadata = node.parser.dependencyMetadata;
540
- if (metadata?.derived == null) continue;
541
- runtime.propagateSourceFailure(metadata.derived.dependencyIds, formatDependencyNodeMetavar(node), metadata.source?.sourceId);
586
+ if (metadata == null) continue;
587
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
588
+ if (metadata.derived == null && completion == null) continue;
589
+ runtime.propagateSourceFailure([...metadata.derived?.dependencyIds ?? [], ...completion?.dependencyIds ?? []], formatDependencyNodeMetavar(node), metadata.source?.sourceId);
542
590
  }
543
591
  }
544
592
  /**
@@ -1009,6 +1057,11 @@ async function completeEffectfulSourcesAsync(nodes, state, runtime, exec, option
1009
1057
  session.demanded.add(dependencySourceId);
1010
1058
  demandAdded = true;
1011
1059
  }
1060
+ if (metadata?.source != null && metadata.completion != null && session.demanded.has(metadata.source.sourceId) && !hasInactiveCompletion(node)) for (const dependencySourceId of metadata.completion.dependencyIds) {
1061
+ if (session.demanded.has(dependencySourceId)) continue;
1062
+ session.demanded.add(dependencySourceId);
1063
+ demandAdded = true;
1064
+ }
1012
1065
  if (node.requiresSourceId == null || node.providesSourceIds == null) continue;
1013
1066
  if (session.demanded.has(node.requiresSourceId)) continue;
1014
1067
  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,58 @@ function hasPendingProvider(node, providers, settled, runtime, options) {
527
535
  function getNodeRawInput(node) {
528
536
  return node.rawInput ?? extractRawInputFromState(node.state);
529
537
  }
538
+ /**
539
+ * Memoizes {@link hasInactiveCompletion} per runtime node. Extraction is
540
+ * pure over the node's state and nodes are freshly built for each
541
+ * completion pass, so a result keyed by node identity stays valid for as
542
+ * long as the node is reachable, while ordering, demand propagation,
543
+ * metadata registration, and failure propagation within one pass share a
544
+ * single evaluation.
545
+ */
546
+ const inactiveCompletionCache = /* @__PURE__ */ new WeakMap();
547
+ /**
548
+ * Whether a node's completion dependencies are inactive because this
549
+ * occurrence's own state already extracts a value: a field satisfied by
550
+ * the command line or a binding never runs its configuration resolver,
551
+ * so its completion dependencies must not order scheduling, demand
552
+ * upstream sources, or join failure lineage. A failed extraction keeps
553
+ * the completion active (the effectful completion is its recovery
554
+ * path), and an asynchronous extraction is conservatively treated as
555
+ * active because it cannot be decided synchronously.
556
+ */
557
+ function hasInactiveCompletion(node) {
558
+ const cached = inactiveCompletionCache.get(node);
559
+ if (cached != null) return cached;
560
+ const inactive = computeInactiveCompletion(node);
561
+ inactiveCompletionCache.set(node, inactive);
562
+ return inactive;
563
+ }
564
+ function computeInactiveCompletion(node) {
565
+ const metadata = node.parser.dependencyMetadata;
566
+ if (metadata?.completion == null || metadata.source == null) return false;
567
+ const extracted = metadata.source.extractSourceValue?.(node.state);
568
+ if (isPromiseLike(extracted)) {
569
+ Promise.resolve(extracted).catch(() => {});
570
+ return false;
571
+ }
572
+ return extracted != null && extracted.success === true;
573
+ }
530
574
  function registerRuntimeSourceMetadata(nodes, runtime) {
531
575
  for (const node of nodes) {
532
576
  const metadata = node.parser.dependencyMetadata;
533
577
  if (metadata?.source == null) continue;
534
- runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), metadata.derived?.dependencyIds);
578
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
579
+ const dependencyIds = completion == null ? metadata.derived?.dependencyIds : [...metadata.derived?.dependencyIds ?? [], ...completion.dependencyIds.filter((id) => !(metadata.derived?.dependencyIds ?? []).includes(id))];
580
+ runtime.registerSourceMetadata(metadata.source.sourceId, formatDependencyNodeMetavar(node), dependencyIds);
535
581
  }
536
582
  }
537
583
  function propagateRuntimeSourceFailures(nodes, runtime) {
538
584
  for (const node of orderDependencyNodes(nodes)) {
539
585
  const metadata = node.parser.dependencyMetadata;
540
- if (metadata?.derived == null) continue;
541
- runtime.propagateSourceFailure(metadata.derived.dependencyIds, formatDependencyNodeMetavar(node), metadata.source?.sourceId);
586
+ if (metadata == null) continue;
587
+ const completion = hasInactiveCompletion(node) ? void 0 : metadata.completion;
588
+ if (metadata.derived == null && completion == null) continue;
589
+ runtime.propagateSourceFailure([...metadata.derived?.dependencyIds ?? [], ...completion?.dependencyIds ?? []], formatDependencyNodeMetavar(node), metadata.source?.sourceId);
542
590
  }
543
591
  }
544
592
  /**
@@ -1009,6 +1057,11 @@ async function completeEffectfulSourcesAsync(nodes, state, runtime, exec, option
1009
1057
  session.demanded.add(dependencySourceId);
1010
1058
  demandAdded = true;
1011
1059
  }
1060
+ if (metadata?.source != null && metadata.completion != null && session.demanded.has(metadata.source.sourceId) && !hasInactiveCompletion(node)) for (const dependencySourceId of metadata.completion.dependencyIds) {
1061
+ if (session.demanded.has(dependencySourceId)) continue;
1062
+ session.demanded.add(dependencySourceId);
1063
+ demandAdded = true;
1064
+ }
1012
1065
  if (node.requiresSourceId == null || node.providesSourceIds == null) continue;
1013
1066
  if (session.demanded.has(node.requiresSourceId)) continue;
1014
1067
  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.2417",
3
+ "version": "1.3.0-dev.2420",
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.2417+6b19e980",
224
+ "@optique/env": "1.3.0-dev.2420+df049a85",
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.