@optique/core 1.0.0-dev.1658 → 1.0.0-dev.1659
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.
- package/dist/constructs.cjs +480 -112
- package/dist/constructs.js +482 -114
- package/dist/dependency-runtime.cjs +17 -6
- package/dist/dependency-runtime.js +17 -6
- package/dist/index.cjs +6 -0
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/modifiers.cjs +30 -17
- package/dist/modifiers.js +31 -18
- package/dist/parser.cjs +86 -0
- package/dist/parser.d.cts +54 -1
- package/dist/parser.d.ts +54 -1
- package/dist/parser.js +81 -1
- package/dist/primitives.cjs +18 -14
- package/dist/primitives.js +18 -14
- package/package.json +1 -1
|
@@ -553,10 +553,16 @@ function resolveDeferredInState(state, runtime, visited = /* @__PURE__ */ new We
|
|
|
553
553
|
}
|
|
554
554
|
if (require_dependency.isDeferredParseState(state)) return resolveSingleDeferred(state, runtime);
|
|
555
555
|
if (require_dependency.isDependencySourceState(state)) return state;
|
|
556
|
-
if (Array.isArray(state))
|
|
556
|
+
if (Array.isArray(state)) {
|
|
557
|
+
const resolved = state.map((item) => resolveDeferredInState(item, runtime, visited));
|
|
558
|
+
return resolved.every((item, index) => item === state[index]) ? state : resolved;
|
|
559
|
+
}
|
|
557
560
|
if (isPlainObject(state)) {
|
|
561
|
+
const keys = Reflect.ownKeys(state);
|
|
562
|
+
const resolvedEntries = keys.map((key) => [key, resolveDeferredInState(state[key], runtime, visited)]);
|
|
563
|
+
if (resolvedEntries.every(([key, value]) => value === state[key])) return state;
|
|
558
564
|
const resolved = Object.create(Object.getPrototypeOf(state));
|
|
559
|
-
for (const key of
|
|
565
|
+
for (const [key, value] of resolvedEntries) resolved[key] = value;
|
|
560
566
|
return resolved;
|
|
561
567
|
}
|
|
562
568
|
return state;
|
|
@@ -595,13 +601,18 @@ async function resolveDeferredInStateAsync(state, runtime, visited = /* @__PURE_
|
|
|
595
601
|
return Promise.resolve(deferred.parser[require_dependency.parseWithDependency](deferred.rawInput, depValue));
|
|
596
602
|
}
|
|
597
603
|
if (require_dependency.isDependencySourceState(state)) return state;
|
|
598
|
-
if (Array.isArray(state))
|
|
604
|
+
if (Array.isArray(state)) {
|
|
605
|
+
const resolved = await Promise.all(state.map((item) => resolveDeferredInStateAsync(item, runtime, visited)));
|
|
606
|
+
return resolved.every((item, index) => item === state[index]) ? state : resolved;
|
|
607
|
+
}
|
|
599
608
|
if (isPlainObject(state)) {
|
|
600
|
-
const resolved = Object.create(Object.getPrototypeOf(state));
|
|
601
609
|
const keys = Reflect.ownKeys(state);
|
|
602
|
-
await Promise.all(keys.map(async (key) => {
|
|
603
|
-
|
|
610
|
+
const resolvedEntries = await Promise.all(keys.map(async (key) => {
|
|
611
|
+
return [key, await resolveDeferredInStateAsync(state[key], runtime, visited)];
|
|
604
612
|
}));
|
|
613
|
+
if (resolvedEntries.every(([key, value]) => value === state[key])) return state;
|
|
614
|
+
const resolved = Object.create(Object.getPrototypeOf(state));
|
|
615
|
+
for (const [key, value] of resolvedEntries) resolved[key] = value;
|
|
605
616
|
return resolved;
|
|
606
617
|
}
|
|
607
618
|
return state;
|
|
@@ -553,10 +553,16 @@ function resolveDeferredInState(state, runtime, visited = /* @__PURE__ */ new We
|
|
|
553
553
|
}
|
|
554
554
|
if (isDeferredParseState(state)) return resolveSingleDeferred(state, runtime);
|
|
555
555
|
if (isDependencySourceState(state)) return state;
|
|
556
|
-
if (Array.isArray(state))
|
|
556
|
+
if (Array.isArray(state)) {
|
|
557
|
+
const resolved = state.map((item) => resolveDeferredInState(item, runtime, visited));
|
|
558
|
+
return resolved.every((item, index) => item === state[index]) ? state : resolved;
|
|
559
|
+
}
|
|
557
560
|
if (isPlainObject(state)) {
|
|
561
|
+
const keys = Reflect.ownKeys(state);
|
|
562
|
+
const resolvedEntries = keys.map((key) => [key, resolveDeferredInState(state[key], runtime, visited)]);
|
|
563
|
+
if (resolvedEntries.every(([key, value]) => value === state[key])) return state;
|
|
558
564
|
const resolved = Object.create(Object.getPrototypeOf(state));
|
|
559
|
-
for (const key of
|
|
565
|
+
for (const [key, value] of resolvedEntries) resolved[key] = value;
|
|
560
566
|
return resolved;
|
|
561
567
|
}
|
|
562
568
|
return state;
|
|
@@ -595,13 +601,18 @@ async function resolveDeferredInStateAsync(state, runtime, visited = /* @__PURE_
|
|
|
595
601
|
return Promise.resolve(deferred.parser[parseWithDependency](deferred.rawInput, depValue));
|
|
596
602
|
}
|
|
597
603
|
if (isDependencySourceState(state)) return state;
|
|
598
|
-
if (Array.isArray(state))
|
|
604
|
+
if (Array.isArray(state)) {
|
|
605
|
+
const resolved = await Promise.all(state.map((item) => resolveDeferredInStateAsync(item, runtime, visited)));
|
|
606
|
+
return resolved.every((item, index) => item === state[index]) ? state : resolved;
|
|
607
|
+
}
|
|
599
608
|
if (isPlainObject(state)) {
|
|
600
|
-
const resolved = Object.create(Object.getPrototypeOf(state));
|
|
601
609
|
const keys = Reflect.ownKeys(state);
|
|
602
|
-
await Promise.all(keys.map(async (key) => {
|
|
603
|
-
|
|
610
|
+
const resolvedEntries = await Promise.all(keys.map(async (key) => {
|
|
611
|
+
return [key, await resolveDeferredInStateAsync(state[key], runtime, visited)];
|
|
604
612
|
}));
|
|
613
|
+
if (resolvedEntries.every(([key, value]) => value === state[key])) return state;
|
|
614
|
+
const resolved = Object.create(Object.getPrototypeOf(state));
|
|
615
|
+
for (const [key, value] of resolvedEntries) resolved[key] = value;
|
|
605
616
|
return resolved;
|
|
606
617
|
}
|
|
607
618
|
return state;
|
package/dist/index.cjs
CHANGED
|
@@ -17,6 +17,7 @@ exports.DuplicateOptionError = require_constructs.DuplicateOptionError;
|
|
|
17
17
|
exports.RunParserError = require_facade.RunParserError;
|
|
18
18
|
exports.WithDefaultError = require_modifiers.WithDefaultError;
|
|
19
19
|
exports.annotationKey = require_annotations.annotationKey;
|
|
20
|
+
exports.annotationWrapperRequiresSourceBindingKey = require_parser.annotationWrapperRequiresSourceBindingKey;
|
|
20
21
|
exports.argument = require_primitives.argument;
|
|
21
22
|
exports.bash = require_completion.bash;
|
|
22
23
|
exports.checkBooleanOption = require_valueparser.checkBooleanOption;
|
|
@@ -28,6 +29,7 @@ exports.cloneUsage = require_usage.cloneUsage;
|
|
|
28
29
|
exports.cloneUsageTerm = require_usage.cloneUsageTerm;
|
|
29
30
|
exports.command = require_primitives.command;
|
|
30
31
|
exports.commandLine = require_message.commandLine;
|
|
32
|
+
exports.composeWrappedSourceMetadata = require_parser.composeWrappedSourceMetadata;
|
|
31
33
|
exports.concat = require_constructs.concat;
|
|
32
34
|
exports.conditional = require_constructs.conditional;
|
|
33
35
|
exports.constant = require_primitives.constant;
|
|
@@ -40,6 +42,8 @@ exports.deduplicateDocFragments = require_doc.deduplicateDocFragments;
|
|
|
40
42
|
exports.defaultDependencyValueSnapshot = require_dependency.defaultDependencyValueSnapshot;
|
|
41
43
|
exports.defaultValues = require_dependency.defaultValues;
|
|
42
44
|
exports.deferredParseMarker = require_dependency.deferredParseMarker;
|
|
45
|
+
exports.defineInheritedAnnotationParser = require_parser.defineInheritedAnnotationParser;
|
|
46
|
+
exports.defineSourceBindingOnlyAnnotationCompletionParser = require_parser.defineSourceBindingOnlyAnnotationCompletionParser;
|
|
43
47
|
exports.dependency = require_dependency.dependency;
|
|
44
48
|
exports.dependencyId = require_dependency.dependencyId;
|
|
45
49
|
exports.dependencyIds = require_dependency.dependencyIds;
|
|
@@ -68,6 +72,7 @@ exports.formatUsage = require_usage.formatUsage;
|
|
|
68
72
|
exports.formatUsageTerm = require_usage.formatUsageTerm;
|
|
69
73
|
exports.getAnnotations = require_annotations.getAnnotations;
|
|
70
74
|
exports.getDefaultValuesFunction = require_dependency.getDefaultValuesFunction;
|
|
75
|
+
exports.getDelegatingSuggestRuntimeNodes = require_parser.getDelegatingSuggestRuntimeNodes;
|
|
71
76
|
exports.getDependencyIds = require_dependency.getDependencyIds;
|
|
72
77
|
exports.getDocPage = require_parser.getDocPage;
|
|
73
78
|
exports.getDocPageAsync = require_parser.getDocPageAsync;
|
|
@@ -76,6 +81,7 @@ exports.getParserSuggestRuntimeNodes = require_parser.getParserSuggestRuntimeNod
|
|
|
76
81
|
exports.getSnapshottedDefaultDependencyValues = require_dependency.getSnapshottedDefaultDependencyValues;
|
|
77
82
|
exports.group = require_constructs.group;
|
|
78
83
|
exports.hostname = require_valueparser.hostname;
|
|
84
|
+
exports.inheritParentAnnotationsKey = require_parser.inheritParentAnnotationsKey;
|
|
79
85
|
exports.integer = require_valueparser.integer;
|
|
80
86
|
exports.ip = require_valueparser.ip;
|
|
81
87
|
exports.ipv4 = require_valueparser.ipv4;
|
package/dist/index.d.cts
CHANGED
|
@@ -7,9 +7,9 @@ import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsStr
|
|
|
7
7
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.cjs";
|
|
8
8
|
import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.cjs";
|
|
9
9
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, option, passThrough } from "./primitives.cjs";
|
|
10
|
-
import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync, unmatchedNonCliDependencySourceStateMarker } from "./parser.cjs";
|
|
10
|
+
import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, annotationWrapperRequiresSourceBindingKey, composeWrappedSourceMetadata, createParserContext, defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser, getDelegatingSuggestRuntimeNodes, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, inheritParentAnnotationsKey, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync, unmatchedNonCliDependencySourceStateMarker } from "./parser.cjs";
|
|
11
11
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
|
|
12
12
|
import { ParserValuePlaceholder, SourceContext } from "./context.cjs";
|
|
13
13
|
import { 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, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker } from "./dependency.cjs";
|
|
14
14
|
import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
|
|
15
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, getSnapshottedDefaultDependencyValues, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, singleDefaultValue, snapshotDefaultDependencyValues, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, unmatchedNonCliDependencySourceStateMarker, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
|
15
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, annotationWrapperRequiresSourceBindingKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, composeWrappedSourceMetadata, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDelegatingSuggestRuntimeNodes, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, getSnapshottedDefaultDependencyValues, group, hostname, inheritParentAnnotationsKey, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, singleDefaultValue, snapshotDefaultDependencyValues, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, unmatchedNonCliDependencySourceStateMarker, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
package/dist/index.d.ts
CHANGED
|
@@ -7,9 +7,9 @@ import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsStr
|
|
|
7
7
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
8
8
|
import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
|
|
9
9
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, option, passThrough } from "./primitives.js";
|
|
10
|
-
import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
|
|
10
|
+
import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, annotationWrapperRequiresSourceBindingKey, composeWrappedSourceMetadata, createParserContext, defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser, getDelegatingSuggestRuntimeNodes, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, inheritParentAnnotationsKey, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
|
|
11
11
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
12
12
|
import { ParserValuePlaceholder, SourceContext } from "./context.js";
|
|
13
13
|
import { 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, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, getSnapshottedDefaultDependencyValues, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, singleDefaultValue, snapshotDefaultDependencyValues, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker } from "./dependency.js";
|
|
14
14
|
import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
15
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, getSnapshottedDefaultDependencyValues, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, singleDefaultValue, snapshotDefaultDependencyValues, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, unmatchedNonCliDependencySourceStateMarker, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
|
15
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, annotationWrapperRequiresSourceBindingKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, composeWrappedSourceMetadata, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDelegatingSuggestRuntimeNodes, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, getSnapshottedDefaultDependencyValues, group, hostname, inheritParentAnnotationsKey, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, singleDefaultValue, snapshotDefaultDependencyValues, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, unmatchedNonCliDependencySourceStateMarker, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
package/dist/index.js
CHANGED
|
@@ -8,8 +8,8 @@ import { WithDefaultError, map, multiple, nonEmpty, optional, withDefault } from
|
|
|
8
8
|
import { ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
|
|
9
9
|
import { checkBooleanOption, checkEnumOption, choice, cidr, domain, email, float, hostname, integer, ip, ipv4, ipv6, isValueParser, locale, macAddress, port, portRange, socketAddress, string, url, uuid } from "./valueparser.js";
|
|
10
10
|
import { argument, command, constant, fail, flag, option, passThrough } from "./primitives.js";
|
|
11
|
-
import { createParserContext, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
|
|
11
|
+
import { annotationWrapperRequiresSourceBindingKey, composeWrappedSourceMetadata, createParserContext, defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser, getDelegatingSuggestRuntimeNodes, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, inheritParentAnnotationsKey, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
|
|
12
12
|
import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
13
13
|
import { RunParserError, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
14
14
|
|
|
15
|
-
export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, getSnapshottedDefaultDependencyValues, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, singleDefaultValue, snapshotDefaultDependencyValues, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, unmatchedNonCliDependencySourceStateMarker, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
|
15
|
+
export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, annotationWrapperRequiresSourceBindingKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, composeWrappedSourceMetadata, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultDependencyValueSnapshot, defaultValues, deferredParseMarker, defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDelegatingSuggestRuntimeNodes, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, getParserSuggestRuntimeNodes, getSnapshottedDefaultDependencyValues, group, hostname, inheritParentAnnotationsKey, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, singleDefaultValue, snapshotDefaultDependencyValues, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, unmatchedNonCliDependencySourceStateMarker, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
package/dist/modifiers.cjs
CHANGED
|
@@ -2,6 +2,7 @@ const require_annotations = require('./annotations.cjs');
|
|
|
2
2
|
const require_message = require('./message.cjs');
|
|
3
3
|
const require_mode_dispatch = require('./mode-dispatch.cjs');
|
|
4
4
|
const require_dependency_metadata = require('./dependency-metadata.cjs');
|
|
5
|
+
const require_parser = require('./parser.cjs');
|
|
5
6
|
|
|
6
7
|
//#region src/modifiers.ts
|
|
7
8
|
function withChildExecPath(exec, segment) {
|
|
@@ -148,15 +149,23 @@ function processOptionalStyleResult(result, innerState, context) {
|
|
|
148
149
|
*
|
|
149
150
|
* @internal
|
|
150
151
|
*/
|
|
151
|
-
function adaptShouldDeferCompletion(innerCheck) {
|
|
152
|
+
function adaptShouldDeferCompletion(innerCheck, parser) {
|
|
152
153
|
return (state, exec) => {
|
|
153
|
-
if (Array.isArray(state)) return innerCheck(normalizeOptionalLikeInnerState(state,
|
|
154
|
-
if (state != null && typeof state === "object") return innerCheck(state, exec);
|
|
154
|
+
if (Array.isArray(state) || state != null && typeof state === "object") return innerCheck(normalizeOptionalLikeInnerState(state, parser.initialState, parser), exec);
|
|
155
155
|
return false;
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
|
-
function
|
|
158
|
+
function isAnnotationOnlyObjectState(state) {
|
|
159
|
+
if (state == null || typeof state !== "object" || Array.isArray(state) || require_annotations.isInjectedAnnotationWrapper(state)) return false;
|
|
160
|
+
const keys = Reflect.ownKeys(state);
|
|
161
|
+
return require_annotations.getAnnotations(state) != null && keys.length === 1 && keys[0] === require_annotations.annotationKey;
|
|
162
|
+
}
|
|
163
|
+
function normalizeOptionalLikeInnerState(state, initialState, parser) {
|
|
159
164
|
if (Array.isArray(state)) return require_annotations.getAnnotations(state) != null && state[0] != null && typeof state[0] === "object" ? require_annotations.inheritAnnotations(state, state[0]) : state[0];
|
|
165
|
+
if (isAnnotationOnlyObjectState(state)) {
|
|
166
|
+
if (parser != null && (parser.dependencyMetadata?.source != null || typeof parser.shouldDeferCompletion === "function")) return require_annotations.inheritAnnotations(state, initialState);
|
|
167
|
+
return initialState;
|
|
168
|
+
}
|
|
160
169
|
if (state != null && typeof state === "object") return state;
|
|
161
170
|
return initialState;
|
|
162
171
|
}
|
|
@@ -175,14 +184,14 @@ function normalizeOptionalLikeInnerState(state, initialState) {
|
|
|
175
184
|
function optional(parser) {
|
|
176
185
|
const syncParser = parser;
|
|
177
186
|
function* suggestSync(context, prefix) {
|
|
178
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
187
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
179
188
|
yield* syncParser.suggest({
|
|
180
189
|
...context,
|
|
181
190
|
state: innerState
|
|
182
191
|
}, prefix);
|
|
183
192
|
}
|
|
184
193
|
async function* suggestAsync(context, prefix) {
|
|
185
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
194
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
186
195
|
const suggestions = parser.suggest({
|
|
187
196
|
...context,
|
|
188
197
|
state: innerState
|
|
@@ -202,14 +211,14 @@ function optional(parser) {
|
|
|
202
211
|
leadingNames: parser.leadingNames,
|
|
203
212
|
acceptingAnyToken: false,
|
|
204
213
|
initialState: void 0,
|
|
205
|
-
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
214
|
+
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser), parser) } : {},
|
|
206
215
|
getSuggestRuntimeNodes(state, path) {
|
|
207
216
|
if (optionalParser.dependencyMetadata?.source != null) return [{
|
|
208
217
|
path,
|
|
209
218
|
parser: optionalParser,
|
|
210
219
|
state
|
|
211
220
|
}];
|
|
212
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
221
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
213
222
|
return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
214
223
|
path,
|
|
215
224
|
parser,
|
|
@@ -223,7 +232,7 @@ function optional(parser) {
|
|
|
223
232
|
if (!Array.isArray(state)) {
|
|
224
233
|
if (typeof parser.shouldDeferCompletion === "function" && state != null && typeof state === "object") {
|
|
225
234
|
const innerComplete = () => {
|
|
226
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
235
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
227
236
|
const innerResult = require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerState, exec), async () => await parser.complete(innerState, exec));
|
|
228
237
|
return require_mode_dispatch.mapModeValue(parser.$mode, innerResult, (result) => result.success ? result : {
|
|
229
238
|
success: true,
|
|
@@ -234,7 +243,7 @@ function optional(parser) {
|
|
|
234
243
|
}
|
|
235
244
|
const sourceMetadata = parser.dependencyMetadata?.source;
|
|
236
245
|
if (sourceMetadata?.preservesSourceValue !== false && sourceMetadata?.getMissingSourceValue != null) {
|
|
237
|
-
const delegatedState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
246
|
+
const delegatedState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
238
247
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(delegatedState, exec), async () => await parser.complete(delegatedState, exec));
|
|
239
248
|
}
|
|
240
249
|
return {
|
|
@@ -242,7 +251,7 @@ function optional(parser) {
|
|
|
242
251
|
value: void 0
|
|
243
252
|
};
|
|
244
253
|
}
|
|
245
|
-
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
254
|
+
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
246
255
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), async () => await parser.complete(innerElement, exec));
|
|
247
256
|
},
|
|
248
257
|
suggest(context, prefix) {
|
|
@@ -271,6 +280,8 @@ function optional(parser) {
|
|
|
271
280
|
const composed = require_dependency_metadata.composeDependencyMetadata(parser.dependencyMetadata, "optional");
|
|
272
281
|
if (composed != null) optionalParser.dependencyMetadata = composed;
|
|
273
282
|
}
|
|
283
|
+
require_parser.defineInheritedAnnotationParser(optionalParser);
|
|
284
|
+
require_parser.defineSourceBindingOnlyAnnotationCompletionParser(optionalParser);
|
|
274
285
|
return optionalParser;
|
|
275
286
|
}
|
|
276
287
|
/**
|
|
@@ -320,14 +331,14 @@ function withDefault(parser, defaultValue, options) {
|
|
|
320
331
|
}
|
|
321
332
|
};
|
|
322
333
|
function* suggestSync(context, prefix) {
|
|
323
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
334
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
324
335
|
yield* syncParser.suggest({
|
|
325
336
|
...context,
|
|
326
337
|
state: innerState
|
|
327
338
|
}, prefix);
|
|
328
339
|
}
|
|
329
340
|
async function* suggestAsync(context, prefix) {
|
|
330
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
341
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
331
342
|
const suggestions = parser.suggest({
|
|
332
343
|
...context,
|
|
333
344
|
state: innerState
|
|
@@ -346,14 +357,14 @@ function withDefault(parser, defaultValue, options) {
|
|
|
346
357
|
leadingNames: parser.leadingNames,
|
|
347
358
|
acceptingAnyToken: false,
|
|
348
359
|
initialState: void 0,
|
|
349
|
-
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
360
|
+
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser), parser) } : {},
|
|
350
361
|
getSuggestRuntimeNodes(state, path) {
|
|
351
362
|
if (withDefaultParser.dependencyMetadata?.source != null) return [{
|
|
352
363
|
path,
|
|
353
364
|
parser: withDefaultParser,
|
|
354
365
|
state
|
|
355
366
|
}];
|
|
356
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
367
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
357
368
|
return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
358
369
|
path,
|
|
359
370
|
parser,
|
|
@@ -373,7 +384,7 @@ function withDefault(parser, defaultValue, options) {
|
|
|
373
384
|
}
|
|
374
385
|
if (!Array.isArray(state)) {
|
|
375
386
|
if (typeof parser.shouldDeferCompletion === "function" && state != null && typeof state === "object") {
|
|
376
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
387
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
377
388
|
const innerResult = require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerState, exec), async () => await parser.complete(innerState, exec));
|
|
378
389
|
return innerResult;
|
|
379
390
|
}
|
|
@@ -390,7 +401,7 @@ function withDefault(parser, defaultValue, options) {
|
|
|
390
401
|
};
|
|
391
402
|
}
|
|
392
403
|
}
|
|
393
|
-
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
404
|
+
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
394
405
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), async () => await parser.complete(innerElement, exec));
|
|
395
406
|
},
|
|
396
407
|
suggest(context, prefix) {
|
|
@@ -465,6 +476,8 @@ function withDefault(parser, defaultValue, options) {
|
|
|
465
476
|
} });
|
|
466
477
|
if (composed != null) withDefaultParser.dependencyMetadata = composed;
|
|
467
478
|
}
|
|
479
|
+
require_parser.defineInheritedAnnotationParser(withDefaultParser);
|
|
480
|
+
require_parser.defineSourceBindingOnlyAnnotationCompletionParser(withDefaultParser);
|
|
468
481
|
return withDefaultParser;
|
|
469
482
|
}
|
|
470
483
|
/**
|
package/dist/modifiers.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { annotateFreshArray, getAnnotations, inheritAnnotations, isInjectedAnnotationWrapper, unwrapInjectedAnnotationWrapper } from "./annotations.js";
|
|
1
|
+
import { annotateFreshArray, annotationKey, getAnnotations, inheritAnnotations, isInjectedAnnotationWrapper, unwrapInjectedAnnotationWrapper } from "./annotations.js";
|
|
2
2
|
import { formatMessage, message, text } from "./message.js";
|
|
3
3
|
import { dispatchByMode, dispatchIterableByMode, mapModeValue } from "./mode-dispatch.js";
|
|
4
4
|
import { composeDependencyMetadata } from "./dependency-metadata.js";
|
|
5
|
+
import { defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser } from "./parser.js";
|
|
5
6
|
|
|
6
7
|
//#region src/modifiers.ts
|
|
7
8
|
function withChildExecPath(exec, segment) {
|
|
@@ -148,15 +149,23 @@ function processOptionalStyleResult(result, innerState, context) {
|
|
|
148
149
|
*
|
|
149
150
|
* @internal
|
|
150
151
|
*/
|
|
151
|
-
function adaptShouldDeferCompletion(innerCheck) {
|
|
152
|
+
function adaptShouldDeferCompletion(innerCheck, parser) {
|
|
152
153
|
return (state, exec) => {
|
|
153
|
-
if (Array.isArray(state)) return innerCheck(normalizeOptionalLikeInnerState(state,
|
|
154
|
-
if (state != null && typeof state === "object") return innerCheck(state, exec);
|
|
154
|
+
if (Array.isArray(state) || state != null && typeof state === "object") return innerCheck(normalizeOptionalLikeInnerState(state, parser.initialState, parser), exec);
|
|
155
155
|
return false;
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
|
-
function
|
|
158
|
+
function isAnnotationOnlyObjectState(state) {
|
|
159
|
+
if (state == null || typeof state !== "object" || Array.isArray(state) || isInjectedAnnotationWrapper(state)) return false;
|
|
160
|
+
const keys = Reflect.ownKeys(state);
|
|
161
|
+
return getAnnotations(state) != null && keys.length === 1 && keys[0] === annotationKey;
|
|
162
|
+
}
|
|
163
|
+
function normalizeOptionalLikeInnerState(state, initialState, parser) {
|
|
159
164
|
if (Array.isArray(state)) return getAnnotations(state) != null && state[0] != null && typeof state[0] === "object" ? inheritAnnotations(state, state[0]) : state[0];
|
|
165
|
+
if (isAnnotationOnlyObjectState(state)) {
|
|
166
|
+
if (parser != null && (parser.dependencyMetadata?.source != null || typeof parser.shouldDeferCompletion === "function")) return inheritAnnotations(state, initialState);
|
|
167
|
+
return initialState;
|
|
168
|
+
}
|
|
160
169
|
if (state != null && typeof state === "object") return state;
|
|
161
170
|
return initialState;
|
|
162
171
|
}
|
|
@@ -175,14 +184,14 @@ function normalizeOptionalLikeInnerState(state, initialState) {
|
|
|
175
184
|
function optional(parser) {
|
|
176
185
|
const syncParser = parser;
|
|
177
186
|
function* suggestSync(context, prefix) {
|
|
178
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
187
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
179
188
|
yield* syncParser.suggest({
|
|
180
189
|
...context,
|
|
181
190
|
state: innerState
|
|
182
191
|
}, prefix);
|
|
183
192
|
}
|
|
184
193
|
async function* suggestAsync(context, prefix) {
|
|
185
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
194
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
186
195
|
const suggestions = parser.suggest({
|
|
187
196
|
...context,
|
|
188
197
|
state: innerState
|
|
@@ -202,14 +211,14 @@ function optional(parser) {
|
|
|
202
211
|
leadingNames: parser.leadingNames,
|
|
203
212
|
acceptingAnyToken: false,
|
|
204
213
|
initialState: void 0,
|
|
205
|
-
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
214
|
+
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser), parser) } : {},
|
|
206
215
|
getSuggestRuntimeNodes(state, path) {
|
|
207
216
|
if (optionalParser.dependencyMetadata?.source != null) return [{
|
|
208
217
|
path,
|
|
209
218
|
parser: optionalParser,
|
|
210
219
|
state
|
|
211
220
|
}];
|
|
212
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
221
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
213
222
|
return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
214
223
|
path,
|
|
215
224
|
parser,
|
|
@@ -223,7 +232,7 @@ function optional(parser) {
|
|
|
223
232
|
if (!Array.isArray(state)) {
|
|
224
233
|
if (typeof parser.shouldDeferCompletion === "function" && state != null && typeof state === "object") {
|
|
225
234
|
const innerComplete = () => {
|
|
226
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
235
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
227
236
|
const innerResult = dispatchByMode(parser.$mode, () => syncParser.complete(innerState, exec), async () => await parser.complete(innerState, exec));
|
|
228
237
|
return mapModeValue(parser.$mode, innerResult, (result) => result.success ? result : {
|
|
229
238
|
success: true,
|
|
@@ -234,7 +243,7 @@ function optional(parser) {
|
|
|
234
243
|
}
|
|
235
244
|
const sourceMetadata = parser.dependencyMetadata?.source;
|
|
236
245
|
if (sourceMetadata?.preservesSourceValue !== false && sourceMetadata?.getMissingSourceValue != null) {
|
|
237
|
-
const delegatedState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
246
|
+
const delegatedState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
238
247
|
return dispatchByMode(parser.$mode, () => syncParser.complete(delegatedState, exec), async () => await parser.complete(delegatedState, exec));
|
|
239
248
|
}
|
|
240
249
|
return {
|
|
@@ -242,7 +251,7 @@ function optional(parser) {
|
|
|
242
251
|
value: void 0
|
|
243
252
|
};
|
|
244
253
|
}
|
|
245
|
-
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
254
|
+
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
246
255
|
return dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), async () => await parser.complete(innerElement, exec));
|
|
247
256
|
},
|
|
248
257
|
suggest(context, prefix) {
|
|
@@ -271,6 +280,8 @@ function optional(parser) {
|
|
|
271
280
|
const composed = composeDependencyMetadata(parser.dependencyMetadata, "optional");
|
|
272
281
|
if (composed != null) optionalParser.dependencyMetadata = composed;
|
|
273
282
|
}
|
|
283
|
+
defineInheritedAnnotationParser(optionalParser);
|
|
284
|
+
defineSourceBindingOnlyAnnotationCompletionParser(optionalParser);
|
|
274
285
|
return optionalParser;
|
|
275
286
|
}
|
|
276
287
|
/**
|
|
@@ -320,14 +331,14 @@ function withDefault(parser, defaultValue, options) {
|
|
|
320
331
|
}
|
|
321
332
|
};
|
|
322
333
|
function* suggestSync(context, prefix) {
|
|
323
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
334
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
324
335
|
yield* syncParser.suggest({
|
|
325
336
|
...context,
|
|
326
337
|
state: innerState
|
|
327
338
|
}, prefix);
|
|
328
339
|
}
|
|
329
340
|
async function* suggestAsync(context, prefix) {
|
|
330
|
-
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
341
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
|
|
331
342
|
const suggestions = parser.suggest({
|
|
332
343
|
...context,
|
|
333
344
|
state: innerState
|
|
@@ -346,14 +357,14 @@ function withDefault(parser, defaultValue, options) {
|
|
|
346
357
|
leadingNames: parser.leadingNames,
|
|
347
358
|
acceptingAnyToken: false,
|
|
348
359
|
initialState: void 0,
|
|
349
|
-
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
360
|
+
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser), parser) } : {},
|
|
350
361
|
getSuggestRuntimeNodes(state, path) {
|
|
351
362
|
if (withDefaultParser.dependencyMetadata?.source != null) return [{
|
|
352
363
|
path,
|
|
353
364
|
parser: withDefaultParser,
|
|
354
365
|
state
|
|
355
366
|
}];
|
|
356
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
367
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
357
368
|
return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
358
369
|
path,
|
|
359
370
|
parser,
|
|
@@ -373,7 +384,7 @@ function withDefault(parser, defaultValue, options) {
|
|
|
373
384
|
}
|
|
374
385
|
if (!Array.isArray(state)) {
|
|
375
386
|
if (typeof parser.shouldDeferCompletion === "function" && state != null && typeof state === "object") {
|
|
376
|
-
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
387
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
377
388
|
const innerResult = dispatchByMode(parser.$mode, () => syncParser.complete(innerState, exec), async () => await parser.complete(innerState, exec));
|
|
378
389
|
return innerResult;
|
|
379
390
|
}
|
|
@@ -390,7 +401,7 @@ function withDefault(parser, defaultValue, options) {
|
|
|
390
401
|
};
|
|
391
402
|
}
|
|
392
403
|
}
|
|
393
|
-
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
404
|
+
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
|
|
394
405
|
return dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), async () => await parser.complete(innerElement, exec));
|
|
395
406
|
},
|
|
396
407
|
suggest(context, prefix) {
|
|
@@ -465,6 +476,8 @@ function withDefault(parser, defaultValue, options) {
|
|
|
465
476
|
} });
|
|
466
477
|
if (composed != null) withDefaultParser.dependencyMetadata = composed;
|
|
467
478
|
}
|
|
479
|
+
defineInheritedAnnotationParser(withDefaultParser);
|
|
480
|
+
defineSourceBindingOnlyAnnotationCompletionParser(withDefaultParser);
|
|
468
481
|
return withDefaultParser;
|
|
469
482
|
}
|
|
470
483
|
/**
|