@optique/core 1.0.0-dev.1663 → 1.0.0-dev.1665
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 +73 -51
- package/dist/constructs.js +73 -51
- package/package.json +1 -1
package/dist/constructs.cjs
CHANGED
|
@@ -158,7 +158,11 @@ function unwrapNestedAnnotationViews(value, seen = /* @__PURE__ */ new WeakMap()
|
|
|
158
158
|
changed$1 = true;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
|
|
161
|
+
if (!changed$1) {
|
|
162
|
+
seen.set(source, source);
|
|
163
|
+
return source;
|
|
164
|
+
}
|
|
165
|
+
return clone$1;
|
|
162
166
|
}
|
|
163
167
|
const proto = Object.getPrototypeOf(source);
|
|
164
168
|
if (proto !== Object.prototype && proto !== null) return source;
|
|
@@ -986,15 +990,15 @@ function* suggestObjectSync(context, prefix, parserPairs) {
|
|
|
986
990
|
if (context.buffer.length > 0) {
|
|
987
991
|
const lastToken = context.buffer[context.buffer.length - 1];
|
|
988
992
|
for (const [field, parser] of parserPairs) if (isOptionRequiringValue(parser.usage, lastToken)) {
|
|
989
|
-
const
|
|
990
|
-
yield* parser.suggest(withChildContext(contextWithRegistry, field,
|
|
993
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
994
|
+
yield* parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
991
995
|
return;
|
|
992
996
|
}
|
|
993
997
|
}
|
|
994
998
|
const suggestions = [];
|
|
995
999
|
for (const [field, parser] of parserPairs) {
|
|
996
|
-
const
|
|
997
|
-
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field,
|
|
1000
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
1001
|
+
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
998
1002
|
suggestions.push(...fieldSuggestions);
|
|
999
1003
|
}
|
|
1000
1004
|
yield* require_suggestion.deduplicateSuggestions(suggestions);
|
|
@@ -1022,16 +1026,16 @@ async function* suggestObjectAsync(context, prefix, parserPairs) {
|
|
|
1022
1026
|
if (context.buffer.length > 0) {
|
|
1023
1027
|
const lastToken = context.buffer[context.buffer.length - 1];
|
|
1024
1028
|
for (const [field, parser] of parserPairs) if (isOptionRequiringValue(parser.usage, lastToken)) {
|
|
1025
|
-
const
|
|
1026
|
-
const suggestions$1 = parser.suggest(withChildContext(contextWithRegistry, field,
|
|
1029
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
1030
|
+
const suggestions$1 = parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
1027
1031
|
for await (const s of suggestions$1) yield s;
|
|
1028
1032
|
return;
|
|
1029
1033
|
}
|
|
1030
1034
|
}
|
|
1031
1035
|
const suggestions = [];
|
|
1032
1036
|
for (const [field, parser] of parserPairs) {
|
|
1033
|
-
const
|
|
1034
|
-
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field,
|
|
1037
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
1038
|
+
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
1035
1039
|
for await (const s of fieldSuggestions) suggestions.push(s);
|
|
1036
1040
|
}
|
|
1037
1041
|
yield* require_suggestion.deduplicateSuggestions(suggestions);
|
|
@@ -1506,6 +1510,10 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1506
1510
|
parse(context) {
|
|
1507
1511
|
return require_mode_dispatch.dispatchByMode(combinedMode, () => parseSync(context), () => parseAsync(context));
|
|
1508
1512
|
},
|
|
1513
|
+
getSuggestRuntimeNodes(state, path) {
|
|
1514
|
+
const stateRecord = state != null && typeof state === "object" ? state : objectParser.initialState;
|
|
1515
|
+
return buildSuggestRuntimeNodesFromPairs(parserPairs, stateRecord, path);
|
|
1516
|
+
},
|
|
1509
1517
|
complete(state, exec) {
|
|
1510
1518
|
return require_mode_dispatch.dispatchByMode(combinedMode, () => {
|
|
1511
1519
|
const runtime = exec?.dependencyRuntime ?? require_dependency_runtime.createDependencyRuntimeContext(exec?.dependencyRegistry);
|
|
@@ -1749,7 +1757,7 @@ async function* suggestTupleAsync(context, prefix, parsers) {
|
|
|
1749
1757
|
state: createAnnotatedArrayStateRecord(stateArray)
|
|
1750
1758
|
}, buildIndexedParserPairs(parsers), runtime.registry, advancedContext.exec);
|
|
1751
1759
|
}
|
|
1752
|
-
|
|
1760
|
+
await markFailedTupleSuggestSourcesAsync(parsers, stateArray, advanced.failedParserIndexes, runtime, advancedContext.exec?.path);
|
|
1753
1761
|
const contextWithRegistry = {
|
|
1754
1762
|
...advancedContext,
|
|
1755
1763
|
dependencyRegistry: runtime.registry,
|
|
@@ -1903,18 +1911,36 @@ async function advanceTupleSuggestContextAsync(context, parsers) {
|
|
|
1903
1911
|
function markFailedTupleSuggestSources(parsers, stateArray, failedParserIndexes, runtime, parentPath) {
|
|
1904
1912
|
if (failedParserIndexes.length < 1) return;
|
|
1905
1913
|
const prefix = parentPath ?? [];
|
|
1906
|
-
const failedSourceIds = /* @__PURE__ */ new Set();
|
|
1907
1914
|
for (const index of failedParserIndexes) {
|
|
1908
1915
|
const parser = parsers[index];
|
|
1909
1916
|
if (parser == null) continue;
|
|
1910
1917
|
const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
|
|
1911
1918
|
const nodes = require_parser.getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(stateArray, parserState, parser), [...prefix, index]);
|
|
1919
|
+
if (nodes.length < 1) continue;
|
|
1920
|
+
const failedRuntime = require_dependency_runtime.createDependencyRuntimeContext();
|
|
1921
|
+
require_dependency_runtime.collectExplicitSourceValues(nodes, failedRuntime);
|
|
1922
|
+
for (const node of nodes) {
|
|
1923
|
+
const sourceId = node.parser.dependencyMetadata?.source?.sourceId;
|
|
1924
|
+
if (sourceId != null && failedRuntime.isSourceFailed(sourceId)) runtime.markSourceFailed(sourceId);
|
|
1925
|
+
}
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
async function markFailedTupleSuggestSourcesAsync(parsers, stateArray, failedParserIndexes, runtime, parentPath) {
|
|
1929
|
+
if (failedParserIndexes.length < 1) return;
|
|
1930
|
+
const prefix = parentPath ?? [];
|
|
1931
|
+
for (const index of failedParserIndexes) {
|
|
1932
|
+
const parser = parsers[index];
|
|
1933
|
+
if (parser == null) continue;
|
|
1934
|
+
const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
|
|
1935
|
+
const nodes = require_parser.getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(stateArray, parserState, parser), [...prefix, index]);
|
|
1936
|
+
if (nodes.length < 1) continue;
|
|
1937
|
+
const failedRuntime = require_dependency_runtime.createDependencyRuntimeContext();
|
|
1938
|
+
await require_dependency_runtime.collectExplicitSourceValuesAsync(nodes, failedRuntime);
|
|
1912
1939
|
for (const node of nodes) {
|
|
1913
1940
|
const sourceId = node.parser.dependencyMetadata?.source?.sourceId;
|
|
1914
|
-
if (sourceId != null)
|
|
1941
|
+
if (sourceId != null && failedRuntime.isSourceFailed(sourceId)) runtime.markSourceFailed(sourceId);
|
|
1915
1942
|
}
|
|
1916
1943
|
}
|
|
1917
|
-
for (const sourceId of failedSourceIds) runtime.markSourceFailed(sourceId);
|
|
1918
1944
|
}
|
|
1919
1945
|
function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
1920
1946
|
const label = typeof labelOrParsers === "string" ? labelOrParsers : void 0;
|
|
@@ -2313,7 +2339,7 @@ function merge(...args) {
|
|
|
2313
2339
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
2314
2340
|
const parser = syncParsers[i];
|
|
2315
2341
|
const parserState = extractParserState(parser, currentContext, i);
|
|
2316
|
-
const result = parser.parse(withChildContext(currentContext, i, parserState));
|
|
2342
|
+
const result = parser.parse(withChildContext(currentContext, i, parserState, parser));
|
|
2317
2343
|
if (result.success) {
|
|
2318
2344
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2319
2345
|
const newState = mergeResultState(parser, currentContext, parserState, result, i);
|
|
@@ -2358,7 +2384,7 @@ function merge(...args) {
|
|
|
2358
2384
|
for (let i = 0; i < parsers.length; i++) {
|
|
2359
2385
|
const parser = parsers[i];
|
|
2360
2386
|
const parserState = extractParserState(parser, currentContext, i);
|
|
2361
|
-
const resultOrPromise = parser.parse(withChildContext(currentContext, i, parserState));
|
|
2387
|
+
const resultOrPromise = parser.parse(withChildContext(currentContext, i, parserState, parser));
|
|
2362
2388
|
const result = await resultOrPromise;
|
|
2363
2389
|
if (result.success) {
|
|
2364
2390
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
@@ -2607,7 +2633,7 @@ function merge(...args) {
|
|
|
2607
2633
|
for (let i = 0; i < parsers.length; i++) {
|
|
2608
2634
|
const parser = parsers[i];
|
|
2609
2635
|
const parserState = extractState(parser, i);
|
|
2610
|
-
const childContext = withChildContext(contextWithRegistry$1, i, parserState);
|
|
2636
|
+
const childContext = withChildContext(contextWithRegistry$1, i, parserState, parser);
|
|
2611
2637
|
const excludedSourceFields = perChildExcludedSourceFields$1[i];
|
|
2612
2638
|
const contextForChild = excludedSourceFields == null ? childContext : (() => {
|
|
2613
2639
|
const childRuntime = require_dependency_runtime.createDependencyRuntimeContext(runtime$1.registry.clone());
|
|
@@ -2648,7 +2674,7 @@ function merge(...args) {
|
|
|
2648
2674
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
2649
2675
|
const parser = syncParsers[i];
|
|
2650
2676
|
const parserState = extractState(parser, i);
|
|
2651
|
-
const childContext = withChildContext(contextWithRegistry, i, parserState);
|
|
2677
|
+
const childContext = withChildContext(contextWithRegistry, i, parserState, parser);
|
|
2652
2678
|
const excludedSourceFields = perChildExcludedSourceFields[i];
|
|
2653
2679
|
const contextForChild = excludedSourceFields == null ? childContext : (() => {
|
|
2654
2680
|
const childRuntime = require_dependency_runtime.createDependencyRuntimeContext(runtime.registry.clone());
|
|
@@ -3441,7 +3467,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3441
3467
|
...branchResult.next,
|
|
3442
3468
|
state: {
|
|
3443
3469
|
...state,
|
|
3444
|
-
branchState: branchResult.next.state
|
|
3470
|
+
branchState: getAnnotatedChildState(state, branchResult.next.state, branchParser)
|
|
3445
3471
|
},
|
|
3446
3472
|
...mergedExec != null ? {
|
|
3447
3473
|
exec: mergedExec,
|
|
@@ -3485,7 +3511,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3485
3511
|
kind: "branch",
|
|
3486
3512
|
key: value
|
|
3487
3513
|
},
|
|
3488
|
-
branchState: branchParseResult.next.state
|
|
3514
|
+
branchState: getAnnotatedChildState(state, branchParseResult.next.state, branchParser)
|
|
3489
3515
|
},
|
|
3490
3516
|
...mergedExec != null ? {
|
|
3491
3517
|
exec: mergedExec,
|
|
@@ -3506,7 +3532,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3506
3532
|
kind: "branch",
|
|
3507
3533
|
key: value
|
|
3508
3534
|
},
|
|
3509
|
-
branchState: branchParser.initialState
|
|
3535
|
+
branchState: getAnnotatedChildState(state, branchParser.initialState, branchParser)
|
|
3510
3536
|
},
|
|
3511
3537
|
...discriminatorExec != null ? {
|
|
3512
3538
|
exec: discriminatorExec,
|
|
@@ -3529,7 +3555,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3529
3555
|
state: {
|
|
3530
3556
|
...state,
|
|
3531
3557
|
selectedBranch: { kind: "default" },
|
|
3532
|
-
branchState: defaultResult.next.state
|
|
3558
|
+
branchState: getAnnotatedChildState(state, defaultResult.next.state, syncDefaultBranch)
|
|
3533
3559
|
},
|
|
3534
3560
|
...mergedExec != null ? {
|
|
3535
3561
|
exec: mergedExec,
|
|
@@ -3559,7 +3585,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3559
3585
|
...branchResult.next,
|
|
3560
3586
|
state: {
|
|
3561
3587
|
...state,
|
|
3562
|
-
branchState: branchResult.next.state
|
|
3588
|
+
branchState: getAnnotatedChildState(state, branchResult.next.state, branchParser)
|
|
3563
3589
|
},
|
|
3564
3590
|
...mergedExec != null ? {
|
|
3565
3591
|
exec: mergedExec,
|
|
@@ -3603,7 +3629,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3603
3629
|
kind: "branch",
|
|
3604
3630
|
key: value
|
|
3605
3631
|
},
|
|
3606
|
-
branchState: branchParseResult.next.state
|
|
3632
|
+
branchState: getAnnotatedChildState(state, branchParseResult.next.state, branchParser)
|
|
3607
3633
|
},
|
|
3608
3634
|
...mergedExec != null ? {
|
|
3609
3635
|
exec: mergedExec,
|
|
@@ -3624,7 +3650,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3624
3650
|
kind: "branch",
|
|
3625
3651
|
key: value
|
|
3626
3652
|
},
|
|
3627
|
-
branchState: branchParser.initialState
|
|
3653
|
+
branchState: getAnnotatedChildState(state, branchParser.initialState, branchParser)
|
|
3628
3654
|
},
|
|
3629
3655
|
...discriminatorExec != null ? {
|
|
3630
3656
|
exec: discriminatorExec,
|
|
@@ -3647,7 +3673,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3647
3673
|
state: {
|
|
3648
3674
|
...state,
|
|
3649
3675
|
selectedBranch: { kind: "default" },
|
|
3650
|
-
branchState: defaultResult.next.state
|
|
3676
|
+
branchState: getAnnotatedChildState(state, defaultResult.next.state, defaultBranch)
|
|
3651
3677
|
},
|
|
3652
3678
|
...mergedExec != null ? {
|
|
3653
3679
|
exec: mergedExec,
|
|
@@ -3670,7 +3696,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3670
3696
|
const syncBranches = branches;
|
|
3671
3697
|
if (state.selectedBranch === void 0) {
|
|
3672
3698
|
if (syncDefaultBranch !== void 0) {
|
|
3673
|
-
const branchState = state.branchState ?? syncDefaultBranch.initialState;
|
|
3699
|
+
const branchState = getAnnotatedChildState(state, state.branchState ?? syncDefaultBranch.initialState, syncDefaultBranch);
|
|
3674
3700
|
const defaultResult = unwrapCompleteResult(syncDefaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
|
|
3675
3701
|
if (!defaultResult.success) return defaultResult;
|
|
3676
3702
|
return {
|
|
@@ -3690,12 +3716,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3690
3716
|
const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
|
|
3691
3717
|
const combinedState = {
|
|
3692
3718
|
_discriminator: state.discriminatorState,
|
|
3693
|
-
_branch: state.branchState
|
|
3719
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3694
3720
|
};
|
|
3695
3721
|
const runtime = require_dependency_runtime.createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
|
|
3696
3722
|
require_dependency_runtime.collectExplicitSourceValues(require_dependency_runtime.buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
|
|
3697
3723
|
require_dependency_runtime.collectSourcesFromState(combinedState, runtime);
|
|
3698
|
-
const resolvedBranchState = require_dependency_runtime.resolveStateWithRuntime(state.branchState, runtime);
|
|
3724
|
+
const resolvedBranchState = getAnnotatedChildState(state, require_dependency_runtime.resolveStateWithRuntime(state.branchState, runtime), branchParser);
|
|
3699
3725
|
const completionExec = {
|
|
3700
3726
|
...exec ?? {
|
|
3701
3727
|
usage: branchParser.usage,
|
|
@@ -3733,7 +3759,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3733
3759
|
const completeAsync = async (state, exec) => {
|
|
3734
3760
|
if (state.selectedBranch === void 0) {
|
|
3735
3761
|
if (defaultBranch !== void 0) {
|
|
3736
|
-
const branchState = state.branchState ?? defaultBranch.initialState;
|
|
3762
|
+
const branchState = getAnnotatedChildState(state, state.branchState ?? defaultBranch.initialState, defaultBranch);
|
|
3737
3763
|
const defaultResult = unwrapCompleteResult(await defaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
|
|
3738
3764
|
if (!defaultResult.success) return defaultResult;
|
|
3739
3765
|
return {
|
|
@@ -3753,12 +3779,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3753
3779
|
const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
|
|
3754
3780
|
const combinedState = {
|
|
3755
3781
|
_discriminator: state.discriminatorState,
|
|
3756
|
-
_branch: state.branchState
|
|
3782
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3757
3783
|
};
|
|
3758
3784
|
const runtime = require_dependency_runtime.createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
|
|
3759
3785
|
await require_dependency_runtime.collectExplicitSourceValuesAsync(require_dependency_runtime.buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
|
|
3760
3786
|
require_dependency_runtime.collectSourcesFromState(combinedState, runtime);
|
|
3761
|
-
const resolvedBranchState = await require_dependency_runtime.resolveStateWithRuntimeAsync(state.branchState, runtime);
|
|
3787
|
+
const resolvedBranchState = getAnnotatedChildState(state, await require_dependency_runtime.resolveStateWithRuntimeAsync(state.branchState, runtime), branchParser);
|
|
3762
3788
|
const completionExec = {
|
|
3763
3789
|
...exec ?? {
|
|
3764
3790
|
usage: branchParser.usage,
|
|
@@ -3800,14 +3826,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3800
3826
|
const syncDefaultBranch = defaultBranch;
|
|
3801
3827
|
if (state.selectedBranch === void 0) {
|
|
3802
3828
|
const runtime = require_dependency_runtime.createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3803
|
-
|
|
3804
|
-
_discriminator: state.discriminatorState,
|
|
3805
|
-
_branch: state.branchState
|
|
3806
|
-
}, context.exec?.path), runtime);
|
|
3807
|
-
require_dependency_runtime.collectSourcesFromState({
|
|
3829
|
+
const defaultCombinedState = {
|
|
3808
3830
|
_discriminator: state.discriminatorState,
|
|
3809
|
-
_branch: state.branchState
|
|
3810
|
-
}
|
|
3831
|
+
_branch: syncDefaultBranch == null ? state.branchState : getAnnotatedChildState(state, state.branchState, syncDefaultBranch)
|
|
3832
|
+
};
|
|
3833
|
+
require_dependency_runtime.collectExplicitSourceValues(require_dependency_runtime.buildRuntimeNodesFromPairs(syncDefaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", syncDefaultBranch]], defaultCombinedState, context.exec?.path), runtime);
|
|
3834
|
+
require_dependency_runtime.collectSourcesFromState(defaultCombinedState, runtime);
|
|
3811
3835
|
const suggestContext = {
|
|
3812
3836
|
...context,
|
|
3813
3837
|
dependencyRegistry: runtime.registry,
|
|
@@ -3818,13 +3842,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3818
3842
|
} } : {}
|
|
3819
3843
|
};
|
|
3820
3844
|
yield* syncDiscriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState), prefix);
|
|
3821
|
-
if (syncDefaultBranch !== void 0) yield* syncDefaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? syncDefaultBranch.initialState), prefix);
|
|
3845
|
+
if (syncDefaultBranch !== void 0) yield* syncDefaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? syncDefaultBranch.initialState, syncDefaultBranch), prefix);
|
|
3822
3846
|
} else {
|
|
3823
3847
|
const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
|
|
3824
3848
|
const runtime = require_dependency_runtime.createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3825
3849
|
const combinedState = {
|
|
3826
3850
|
_discriminator: state.discriminatorState,
|
|
3827
|
-
_branch: state.branchState
|
|
3851
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3828
3852
|
};
|
|
3829
3853
|
require_dependency_runtime.collectExplicitSourceValues(require_dependency_runtime.buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
|
|
3830
3854
|
require_dependency_runtime.collectSourcesFromState(combinedState, runtime);
|
|
@@ -3837,21 +3861,19 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3837
3861
|
dependencyRegistry: runtime.registry
|
|
3838
3862
|
} } : {}
|
|
3839
3863
|
};
|
|
3840
|
-
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState), prefix);
|
|
3864
|
+
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState, branchParser), prefix);
|
|
3841
3865
|
}
|
|
3842
3866
|
}
|
|
3843
3867
|
async function* suggestAsync(context, prefix) {
|
|
3844
3868
|
const state = context.state ?? initialState;
|
|
3845
3869
|
if (state.selectedBranch === void 0) {
|
|
3846
3870
|
const runtime = require_dependency_runtime.createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3847
|
-
|
|
3871
|
+
const defaultCombinedState = {
|
|
3848
3872
|
_discriminator: state.discriminatorState,
|
|
3849
|
-
_branch: state.branchState
|
|
3850
|
-
}
|
|
3851
|
-
require_dependency_runtime.
|
|
3852
|
-
|
|
3853
|
-
_branch: state.branchState
|
|
3854
|
-
}, runtime);
|
|
3873
|
+
_branch: defaultBranch == null ? state.branchState : getAnnotatedChildState(state, state.branchState, defaultBranch)
|
|
3874
|
+
};
|
|
3875
|
+
await require_dependency_runtime.collectExplicitSourceValuesAsync(require_dependency_runtime.buildRuntimeNodesFromPairs(defaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", defaultBranch]], defaultCombinedState, context.exec?.path), runtime);
|
|
3876
|
+
require_dependency_runtime.collectSourcesFromState(defaultCombinedState, runtime);
|
|
3855
3877
|
const suggestContext = {
|
|
3856
3878
|
...context,
|
|
3857
3879
|
dependencyRegistry: runtime.registry,
|
|
@@ -3862,13 +3884,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3862
3884
|
} } : {}
|
|
3863
3885
|
};
|
|
3864
3886
|
yield* discriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState), prefix);
|
|
3865
|
-
if (defaultBranch !== void 0) yield* defaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? defaultBranch.initialState), prefix);
|
|
3887
|
+
if (defaultBranch !== void 0) yield* defaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? defaultBranch.initialState, defaultBranch), prefix);
|
|
3866
3888
|
} else {
|
|
3867
3889
|
const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
|
|
3868
3890
|
const runtime = require_dependency_runtime.createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3869
3891
|
const combinedState = {
|
|
3870
3892
|
_discriminator: state.discriminatorState,
|
|
3871
|
-
_branch: state.branchState
|
|
3893
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3872
3894
|
};
|
|
3873
3895
|
await require_dependency_runtime.collectExplicitSourceValuesAsync(require_dependency_runtime.buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
|
|
3874
3896
|
require_dependency_runtime.collectSourcesFromState(combinedState, runtime);
|
|
@@ -3881,7 +3903,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3881
3903
|
dependencyRegistry: runtime.registry
|
|
3882
3904
|
} } : {}
|
|
3883
3905
|
};
|
|
3884
|
-
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState), prefix);
|
|
3906
|
+
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState, branchParser), prefix);
|
|
3885
3907
|
}
|
|
3886
3908
|
}
|
|
3887
3909
|
const conditionalParser = {
|
package/dist/constructs.js
CHANGED
|
@@ -158,7 +158,11 @@ function unwrapNestedAnnotationViews(value, seen = /* @__PURE__ */ new WeakMap()
|
|
|
158
158
|
changed$1 = true;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
|
|
161
|
+
if (!changed$1) {
|
|
162
|
+
seen.set(source, source);
|
|
163
|
+
return source;
|
|
164
|
+
}
|
|
165
|
+
return clone$1;
|
|
162
166
|
}
|
|
163
167
|
const proto = Object.getPrototypeOf(source);
|
|
164
168
|
if (proto !== Object.prototype && proto !== null) return source;
|
|
@@ -986,15 +990,15 @@ function* suggestObjectSync(context, prefix, parserPairs) {
|
|
|
986
990
|
if (context.buffer.length > 0) {
|
|
987
991
|
const lastToken = context.buffer[context.buffer.length - 1];
|
|
988
992
|
for (const [field, parser] of parserPairs) if (isOptionRequiringValue(parser.usage, lastToken)) {
|
|
989
|
-
const
|
|
990
|
-
yield* parser.suggest(withChildContext(contextWithRegistry, field,
|
|
993
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
994
|
+
yield* parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
991
995
|
return;
|
|
992
996
|
}
|
|
993
997
|
}
|
|
994
998
|
const suggestions = [];
|
|
995
999
|
for (const [field, parser] of parserPairs) {
|
|
996
|
-
const
|
|
997
|
-
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field,
|
|
1000
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
1001
|
+
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
998
1002
|
suggestions.push(...fieldSuggestions);
|
|
999
1003
|
}
|
|
1000
1004
|
yield* deduplicateSuggestions(suggestions);
|
|
@@ -1022,16 +1026,16 @@ async function* suggestObjectAsync(context, prefix, parserPairs) {
|
|
|
1022
1026
|
if (context.buffer.length > 0) {
|
|
1023
1027
|
const lastToken = context.buffer[context.buffer.length - 1];
|
|
1024
1028
|
for (const [field, parser] of parserPairs) if (isOptionRequiringValue(parser.usage, lastToken)) {
|
|
1025
|
-
const
|
|
1026
|
-
const suggestions$1 = parser.suggest(withChildContext(contextWithRegistry, field,
|
|
1029
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
1030
|
+
const suggestions$1 = parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
1027
1031
|
for await (const s of suggestions$1) yield s;
|
|
1028
1032
|
return;
|
|
1029
1033
|
}
|
|
1030
1034
|
}
|
|
1031
1035
|
const suggestions = [];
|
|
1032
1036
|
for (const [field, parser] of parserPairs) {
|
|
1033
|
-
const
|
|
1034
|
-
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field,
|
|
1037
|
+
const annotatedFieldState = getAnnotatedFieldState(context.state, field, parser);
|
|
1038
|
+
const fieldSuggestions = parser.suggest(withChildContext(contextWithRegistry, field, annotatedFieldState, parser), prefix);
|
|
1035
1039
|
for await (const s of fieldSuggestions) suggestions.push(s);
|
|
1036
1040
|
}
|
|
1037
1041
|
yield* deduplicateSuggestions(suggestions);
|
|
@@ -1506,6 +1510,10 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1506
1510
|
parse(context) {
|
|
1507
1511
|
return dispatchByMode(combinedMode, () => parseSync(context), () => parseAsync(context));
|
|
1508
1512
|
},
|
|
1513
|
+
getSuggestRuntimeNodes(state, path) {
|
|
1514
|
+
const stateRecord = state != null && typeof state === "object" ? state : objectParser.initialState;
|
|
1515
|
+
return buildSuggestRuntimeNodesFromPairs(parserPairs, stateRecord, path);
|
|
1516
|
+
},
|
|
1509
1517
|
complete(state, exec) {
|
|
1510
1518
|
return dispatchByMode(combinedMode, () => {
|
|
1511
1519
|
const runtime = exec?.dependencyRuntime ?? createDependencyRuntimeContext(exec?.dependencyRegistry);
|
|
@@ -1749,7 +1757,7 @@ async function* suggestTupleAsync(context, prefix, parsers) {
|
|
|
1749
1757
|
state: createAnnotatedArrayStateRecord(stateArray)
|
|
1750
1758
|
}, buildIndexedParserPairs(parsers), runtime.registry, advancedContext.exec);
|
|
1751
1759
|
}
|
|
1752
|
-
|
|
1760
|
+
await markFailedTupleSuggestSourcesAsync(parsers, stateArray, advanced.failedParserIndexes, runtime, advancedContext.exec?.path);
|
|
1753
1761
|
const contextWithRegistry = {
|
|
1754
1762
|
...advancedContext,
|
|
1755
1763
|
dependencyRegistry: runtime.registry,
|
|
@@ -1903,18 +1911,36 @@ async function advanceTupleSuggestContextAsync(context, parsers) {
|
|
|
1903
1911
|
function markFailedTupleSuggestSources(parsers, stateArray, failedParserIndexes, runtime, parentPath) {
|
|
1904
1912
|
if (failedParserIndexes.length < 1) return;
|
|
1905
1913
|
const prefix = parentPath ?? [];
|
|
1906
|
-
const failedSourceIds = /* @__PURE__ */ new Set();
|
|
1907
1914
|
for (const index of failedParserIndexes) {
|
|
1908
1915
|
const parser = parsers[index];
|
|
1909
1916
|
if (parser == null) continue;
|
|
1910
1917
|
const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
|
|
1911
1918
|
const nodes = getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(stateArray, parserState, parser), [...prefix, index]);
|
|
1919
|
+
if (nodes.length < 1) continue;
|
|
1920
|
+
const failedRuntime = createDependencyRuntimeContext();
|
|
1921
|
+
collectExplicitSourceValues(nodes, failedRuntime);
|
|
1922
|
+
for (const node of nodes) {
|
|
1923
|
+
const sourceId = node.parser.dependencyMetadata?.source?.sourceId;
|
|
1924
|
+
if (sourceId != null && failedRuntime.isSourceFailed(sourceId)) runtime.markSourceFailed(sourceId);
|
|
1925
|
+
}
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
async function markFailedTupleSuggestSourcesAsync(parsers, stateArray, failedParserIndexes, runtime, parentPath) {
|
|
1929
|
+
if (failedParserIndexes.length < 1) return;
|
|
1930
|
+
const prefix = parentPath ?? [];
|
|
1931
|
+
for (const index of failedParserIndexes) {
|
|
1932
|
+
const parser = parsers[index];
|
|
1933
|
+
if (parser == null) continue;
|
|
1934
|
+
const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
|
|
1935
|
+
const nodes = getParserSuggestRuntimeNodes(parser, getAnnotatedChildState(stateArray, parserState, parser), [...prefix, index]);
|
|
1936
|
+
if (nodes.length < 1) continue;
|
|
1937
|
+
const failedRuntime = createDependencyRuntimeContext();
|
|
1938
|
+
await collectExplicitSourceValuesAsync(nodes, failedRuntime);
|
|
1912
1939
|
for (const node of nodes) {
|
|
1913
1940
|
const sourceId = node.parser.dependencyMetadata?.source?.sourceId;
|
|
1914
|
-
if (sourceId != null)
|
|
1941
|
+
if (sourceId != null && failedRuntime.isSourceFailed(sourceId)) runtime.markSourceFailed(sourceId);
|
|
1915
1942
|
}
|
|
1916
1943
|
}
|
|
1917
|
-
for (const sourceId of failedSourceIds) runtime.markSourceFailed(sourceId);
|
|
1918
1944
|
}
|
|
1919
1945
|
function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
1920
1946
|
const label = typeof labelOrParsers === "string" ? labelOrParsers : void 0;
|
|
@@ -2313,7 +2339,7 @@ function merge(...args) {
|
|
|
2313
2339
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
2314
2340
|
const parser = syncParsers[i];
|
|
2315
2341
|
const parserState = extractParserState(parser, currentContext, i);
|
|
2316
|
-
const result = parser.parse(withChildContext(currentContext, i, parserState));
|
|
2342
|
+
const result = parser.parse(withChildContext(currentContext, i, parserState, parser));
|
|
2317
2343
|
if (result.success) {
|
|
2318
2344
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2319
2345
|
const newState = mergeResultState(parser, currentContext, parserState, result, i);
|
|
@@ -2358,7 +2384,7 @@ function merge(...args) {
|
|
|
2358
2384
|
for (let i = 0; i < parsers.length; i++) {
|
|
2359
2385
|
const parser = parsers[i];
|
|
2360
2386
|
const parserState = extractParserState(parser, currentContext, i);
|
|
2361
|
-
const resultOrPromise = parser.parse(withChildContext(currentContext, i, parserState));
|
|
2387
|
+
const resultOrPromise = parser.parse(withChildContext(currentContext, i, parserState, parser));
|
|
2362
2388
|
const result = await resultOrPromise;
|
|
2363
2389
|
if (result.success) {
|
|
2364
2390
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
@@ -2607,7 +2633,7 @@ function merge(...args) {
|
|
|
2607
2633
|
for (let i = 0; i < parsers.length; i++) {
|
|
2608
2634
|
const parser = parsers[i];
|
|
2609
2635
|
const parserState = extractState(parser, i);
|
|
2610
|
-
const childContext = withChildContext(contextWithRegistry$1, i, parserState);
|
|
2636
|
+
const childContext = withChildContext(contextWithRegistry$1, i, parserState, parser);
|
|
2611
2637
|
const excludedSourceFields = perChildExcludedSourceFields$1[i];
|
|
2612
2638
|
const contextForChild = excludedSourceFields == null ? childContext : (() => {
|
|
2613
2639
|
const childRuntime = createDependencyRuntimeContext(runtime$1.registry.clone());
|
|
@@ -2648,7 +2674,7 @@ function merge(...args) {
|
|
|
2648
2674
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
2649
2675
|
const parser = syncParsers[i];
|
|
2650
2676
|
const parserState = extractState(parser, i);
|
|
2651
|
-
const childContext = withChildContext(contextWithRegistry, i, parserState);
|
|
2677
|
+
const childContext = withChildContext(contextWithRegistry, i, parserState, parser);
|
|
2652
2678
|
const excludedSourceFields = perChildExcludedSourceFields[i];
|
|
2653
2679
|
const contextForChild = excludedSourceFields == null ? childContext : (() => {
|
|
2654
2680
|
const childRuntime = createDependencyRuntimeContext(runtime.registry.clone());
|
|
@@ -3441,7 +3467,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3441
3467
|
...branchResult.next,
|
|
3442
3468
|
state: {
|
|
3443
3469
|
...state,
|
|
3444
|
-
branchState: branchResult.next.state
|
|
3470
|
+
branchState: getAnnotatedChildState(state, branchResult.next.state, branchParser)
|
|
3445
3471
|
},
|
|
3446
3472
|
...mergedExec != null ? {
|
|
3447
3473
|
exec: mergedExec,
|
|
@@ -3485,7 +3511,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3485
3511
|
kind: "branch",
|
|
3486
3512
|
key: value
|
|
3487
3513
|
},
|
|
3488
|
-
branchState: branchParseResult.next.state
|
|
3514
|
+
branchState: getAnnotatedChildState(state, branchParseResult.next.state, branchParser)
|
|
3489
3515
|
},
|
|
3490
3516
|
...mergedExec != null ? {
|
|
3491
3517
|
exec: mergedExec,
|
|
@@ -3506,7 +3532,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3506
3532
|
kind: "branch",
|
|
3507
3533
|
key: value
|
|
3508
3534
|
},
|
|
3509
|
-
branchState: branchParser.initialState
|
|
3535
|
+
branchState: getAnnotatedChildState(state, branchParser.initialState, branchParser)
|
|
3510
3536
|
},
|
|
3511
3537
|
...discriminatorExec != null ? {
|
|
3512
3538
|
exec: discriminatorExec,
|
|
@@ -3529,7 +3555,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3529
3555
|
state: {
|
|
3530
3556
|
...state,
|
|
3531
3557
|
selectedBranch: { kind: "default" },
|
|
3532
|
-
branchState: defaultResult.next.state
|
|
3558
|
+
branchState: getAnnotatedChildState(state, defaultResult.next.state, syncDefaultBranch)
|
|
3533
3559
|
},
|
|
3534
3560
|
...mergedExec != null ? {
|
|
3535
3561
|
exec: mergedExec,
|
|
@@ -3559,7 +3585,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3559
3585
|
...branchResult.next,
|
|
3560
3586
|
state: {
|
|
3561
3587
|
...state,
|
|
3562
|
-
branchState: branchResult.next.state
|
|
3588
|
+
branchState: getAnnotatedChildState(state, branchResult.next.state, branchParser)
|
|
3563
3589
|
},
|
|
3564
3590
|
...mergedExec != null ? {
|
|
3565
3591
|
exec: mergedExec,
|
|
@@ -3603,7 +3629,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3603
3629
|
kind: "branch",
|
|
3604
3630
|
key: value
|
|
3605
3631
|
},
|
|
3606
|
-
branchState: branchParseResult.next.state
|
|
3632
|
+
branchState: getAnnotatedChildState(state, branchParseResult.next.state, branchParser)
|
|
3607
3633
|
},
|
|
3608
3634
|
...mergedExec != null ? {
|
|
3609
3635
|
exec: mergedExec,
|
|
@@ -3624,7 +3650,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3624
3650
|
kind: "branch",
|
|
3625
3651
|
key: value
|
|
3626
3652
|
},
|
|
3627
|
-
branchState: branchParser.initialState
|
|
3653
|
+
branchState: getAnnotatedChildState(state, branchParser.initialState, branchParser)
|
|
3628
3654
|
},
|
|
3629
3655
|
...discriminatorExec != null ? {
|
|
3630
3656
|
exec: discriminatorExec,
|
|
@@ -3647,7 +3673,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3647
3673
|
state: {
|
|
3648
3674
|
...state,
|
|
3649
3675
|
selectedBranch: { kind: "default" },
|
|
3650
|
-
branchState: defaultResult.next.state
|
|
3676
|
+
branchState: getAnnotatedChildState(state, defaultResult.next.state, defaultBranch)
|
|
3651
3677
|
},
|
|
3652
3678
|
...mergedExec != null ? {
|
|
3653
3679
|
exec: mergedExec,
|
|
@@ -3670,7 +3696,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3670
3696
|
const syncBranches = branches;
|
|
3671
3697
|
if (state.selectedBranch === void 0) {
|
|
3672
3698
|
if (syncDefaultBranch !== void 0) {
|
|
3673
|
-
const branchState = state.branchState ?? syncDefaultBranch.initialState;
|
|
3699
|
+
const branchState = getAnnotatedChildState(state, state.branchState ?? syncDefaultBranch.initialState, syncDefaultBranch);
|
|
3674
3700
|
const defaultResult = unwrapCompleteResult(syncDefaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
|
|
3675
3701
|
if (!defaultResult.success) return defaultResult;
|
|
3676
3702
|
return {
|
|
@@ -3690,12 +3716,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3690
3716
|
const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
|
|
3691
3717
|
const combinedState = {
|
|
3692
3718
|
_discriminator: state.discriminatorState,
|
|
3693
|
-
_branch: state.branchState
|
|
3719
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3694
3720
|
};
|
|
3695
3721
|
const runtime = createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
|
|
3696
3722
|
collectExplicitSourceValues(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
|
|
3697
3723
|
collectSourcesFromState(combinedState, runtime);
|
|
3698
|
-
const resolvedBranchState = resolveStateWithRuntime(state.branchState, runtime);
|
|
3724
|
+
const resolvedBranchState = getAnnotatedChildState(state, resolveStateWithRuntime(state.branchState, runtime), branchParser);
|
|
3699
3725
|
const completionExec = {
|
|
3700
3726
|
...exec ?? {
|
|
3701
3727
|
usage: branchParser.usage,
|
|
@@ -3733,7 +3759,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3733
3759
|
const completeAsync = async (state, exec) => {
|
|
3734
3760
|
if (state.selectedBranch === void 0) {
|
|
3735
3761
|
if (defaultBranch !== void 0) {
|
|
3736
|
-
const branchState = state.branchState ?? defaultBranch.initialState;
|
|
3762
|
+
const branchState = getAnnotatedChildState(state, state.branchState ?? defaultBranch.initialState, defaultBranch);
|
|
3737
3763
|
const defaultResult = unwrapCompleteResult(await defaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
|
|
3738
3764
|
if (!defaultResult.success) return defaultResult;
|
|
3739
3765
|
return {
|
|
@@ -3753,12 +3779,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3753
3779
|
const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
|
|
3754
3780
|
const combinedState = {
|
|
3755
3781
|
_discriminator: state.discriminatorState,
|
|
3756
|
-
_branch: state.branchState
|
|
3782
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3757
3783
|
};
|
|
3758
3784
|
const runtime = createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
|
|
3759
3785
|
await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
|
|
3760
3786
|
collectSourcesFromState(combinedState, runtime);
|
|
3761
|
-
const resolvedBranchState = await resolveStateWithRuntimeAsync(state.branchState, runtime);
|
|
3787
|
+
const resolvedBranchState = getAnnotatedChildState(state, await resolveStateWithRuntimeAsync(state.branchState, runtime), branchParser);
|
|
3762
3788
|
const completionExec = {
|
|
3763
3789
|
...exec ?? {
|
|
3764
3790
|
usage: branchParser.usage,
|
|
@@ -3800,14 +3826,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3800
3826
|
const syncDefaultBranch = defaultBranch;
|
|
3801
3827
|
if (state.selectedBranch === void 0) {
|
|
3802
3828
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3803
|
-
|
|
3804
|
-
_discriminator: state.discriminatorState,
|
|
3805
|
-
_branch: state.branchState
|
|
3806
|
-
}, context.exec?.path), runtime);
|
|
3807
|
-
collectSourcesFromState({
|
|
3829
|
+
const defaultCombinedState = {
|
|
3808
3830
|
_discriminator: state.discriminatorState,
|
|
3809
|
-
_branch: state.branchState
|
|
3810
|
-
}
|
|
3831
|
+
_branch: syncDefaultBranch == null ? state.branchState : getAnnotatedChildState(state, state.branchState, syncDefaultBranch)
|
|
3832
|
+
};
|
|
3833
|
+
collectExplicitSourceValues(buildRuntimeNodesFromPairs(syncDefaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", syncDefaultBranch]], defaultCombinedState, context.exec?.path), runtime);
|
|
3834
|
+
collectSourcesFromState(defaultCombinedState, runtime);
|
|
3811
3835
|
const suggestContext = {
|
|
3812
3836
|
...context,
|
|
3813
3837
|
dependencyRegistry: runtime.registry,
|
|
@@ -3818,13 +3842,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3818
3842
|
} } : {}
|
|
3819
3843
|
};
|
|
3820
3844
|
yield* syncDiscriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState), prefix);
|
|
3821
|
-
if (syncDefaultBranch !== void 0) yield* syncDefaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? syncDefaultBranch.initialState), prefix);
|
|
3845
|
+
if (syncDefaultBranch !== void 0) yield* syncDefaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? syncDefaultBranch.initialState, syncDefaultBranch), prefix);
|
|
3822
3846
|
} else {
|
|
3823
3847
|
const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
|
|
3824
3848
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3825
3849
|
const combinedState = {
|
|
3826
3850
|
_discriminator: state.discriminatorState,
|
|
3827
|
-
_branch: state.branchState
|
|
3851
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3828
3852
|
};
|
|
3829
3853
|
collectExplicitSourceValues(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
|
|
3830
3854
|
collectSourcesFromState(combinedState, runtime);
|
|
@@ -3837,21 +3861,19 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3837
3861
|
dependencyRegistry: runtime.registry
|
|
3838
3862
|
} } : {}
|
|
3839
3863
|
};
|
|
3840
|
-
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState), prefix);
|
|
3864
|
+
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState, branchParser), prefix);
|
|
3841
3865
|
}
|
|
3842
3866
|
}
|
|
3843
3867
|
async function* suggestAsync(context, prefix) {
|
|
3844
3868
|
const state = context.state ?? initialState;
|
|
3845
3869
|
if (state.selectedBranch === void 0) {
|
|
3846
3870
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3847
|
-
|
|
3871
|
+
const defaultCombinedState = {
|
|
3848
3872
|
_discriminator: state.discriminatorState,
|
|
3849
|
-
_branch: state.branchState
|
|
3850
|
-
}
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
_branch: state.branchState
|
|
3854
|
-
}, runtime);
|
|
3873
|
+
_branch: defaultBranch == null ? state.branchState : getAnnotatedChildState(state, state.branchState, defaultBranch)
|
|
3874
|
+
};
|
|
3875
|
+
await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs(defaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", defaultBranch]], defaultCombinedState, context.exec?.path), runtime);
|
|
3876
|
+
collectSourcesFromState(defaultCombinedState, runtime);
|
|
3855
3877
|
const suggestContext = {
|
|
3856
3878
|
...context,
|
|
3857
3879
|
dependencyRegistry: runtime.registry,
|
|
@@ -3862,13 +3884,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3862
3884
|
} } : {}
|
|
3863
3885
|
};
|
|
3864
3886
|
yield* discriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState), prefix);
|
|
3865
|
-
if (defaultBranch !== void 0) yield* defaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? defaultBranch.initialState), prefix);
|
|
3887
|
+
if (defaultBranch !== void 0) yield* defaultBranch.suggest(withChildContext(suggestContext, "_branch", state.branchState ?? defaultBranch.initialState, defaultBranch), prefix);
|
|
3866
3888
|
} else {
|
|
3867
3889
|
const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
|
|
3868
3890
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
3869
3891
|
const combinedState = {
|
|
3870
3892
|
_discriminator: state.discriminatorState,
|
|
3871
|
-
_branch: state.branchState
|
|
3893
|
+
_branch: getAnnotatedChildState(state, state.branchState, branchParser)
|
|
3872
3894
|
};
|
|
3873
3895
|
await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
|
|
3874
3896
|
collectSourcesFromState(combinedState, runtime);
|
|
@@ -3881,7 +3903,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3881
3903
|
dependencyRegistry: runtime.registry
|
|
3882
3904
|
} } : {}
|
|
3883
3905
|
};
|
|
3884
|
-
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState), prefix);
|
|
3906
|
+
yield* branchParser.suggest(withChildContext(suggestContext, "_branch", state.branchState, branchParser), prefix);
|
|
3885
3907
|
}
|
|
3886
3908
|
}
|
|
3887
3909
|
const conditionalParser = {
|