@optique/core 1.0.0-dev.1786 → 1.0.0-dev.1789
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/annotation-state.cjs +112 -0
- package/dist/annotation-state.js +106 -0
- package/dist/constructs.cjs +84 -131
- package/dist/constructs.js +83 -130
- package/dist/facade.cjs +1 -1
- package/dist/facade.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/parser.cjs +1 -1
- package/dist/parser.js +1 -1
- package/dist/primitives.cjs +59 -38
- package/dist/primitives.js +59 -38
- package/package.json +1 -1
package/dist/constructs.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { annotateFreshArray,
|
|
1
|
+
import { annotateFreshArray, getAnnotations, inheritAnnotations } from "./annotations.js";
|
|
2
2
|
import { message, optionName, text, values } from "./message.js";
|
|
3
|
-
import { createDependencySourceState, dependencyId, isDependencySourceState, isPendingDependencySourceState, isWrappedDependencySource, wrappedDependencySourceMarker } from "./dependency.js";
|
|
4
3
|
import { validateLabel } from "./validate.js";
|
|
5
4
|
import { extractArgumentMetavars, extractCommandNames, extractOptionNames, isDocHidden, mergeHidden } from "./usage.js";
|
|
6
5
|
import { deduplicateDocFragments } from "./doc.js";
|
|
7
6
|
import { dispatchByMode, dispatchIterableByMode } from "./mode-dispatch.js";
|
|
7
|
+
import { createDependencySourceState, dependencyId, isDependencySourceState, isPendingDependencySourceState, isWrappedDependencySource, wrappedDependencySourceMarker } from "./dependency.js";
|
|
8
|
+
import { buildRuntimeNodesFromArray, buildRuntimeNodesFromPairs, collectExplicitSourceValues, collectExplicitSourceValuesAsync, collectSourcesFromState, createDependencyRuntimeContext, fillMissingSourceDefaults, fillMissingSourceDefaultsAsync, resolveStateWithRuntime, resolveStateWithRuntimeAsync } from "./dependency-runtime.js";
|
|
8
9
|
import { completeOrExtractPhase2Seed, extractPhase2Seed, extractPhase2SeedKey, phase2SeedFromValueResult } from "./phase2-seed.js";
|
|
9
10
|
import { DEFAULT_FIND_SIMILAR_OPTIONS, createErrorWithSuggestions, createSuggestionMessage, deduplicateSuggestions, findSimilar } from "./suggestion.js";
|
|
10
11
|
import { collectLeadingCandidates } from "./usage-internals.js";
|
|
11
|
-
import { defineInheritedAnnotationParser, getParserSuggestRuntimeNodes,
|
|
12
|
-
import {
|
|
12
|
+
import { defineInheritedAnnotationParser, getParserSuggestRuntimeNodes, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
|
|
13
|
+
import { annotationViewTargets, getWrappedChildParseState, getWrappedChildState, reconcileObjectChildState, unwrapAnnotationView } from "./annotation-state.js";
|
|
13
14
|
|
|
14
15
|
//#region src/constructs.ts
|
|
15
16
|
/**
|
|
@@ -57,7 +58,7 @@ function mergeChildExec(parent, child) {
|
|
|
57
58
|
function withChildContext(context, segment, state, parser, usage) {
|
|
58
59
|
const exec = withChildExecPath(context.exec, segment);
|
|
59
60
|
const dependencyRegistry = context.dependencyRegistry ?? exec?.dependencyRegistry;
|
|
60
|
-
const childState = parser == null ? state :
|
|
61
|
+
const childState = parser == null ? state : getWrappedChildParseState(context.state, state, parser);
|
|
61
62
|
return {
|
|
62
63
|
...context,
|
|
63
64
|
state: childState,
|
|
@@ -139,10 +140,6 @@ const fieldParsersKey = Symbol("fieldParsers");
|
|
|
139
140
|
* to consume results from parsers that still return `DependencySourceState`.
|
|
140
141
|
* @internal
|
|
141
142
|
*/
|
|
142
|
-
function unwrapAnnotationView(value) {
|
|
143
|
-
if (value == null || typeof value !== "object") return value;
|
|
144
|
-
return annotationViewTargets.get(value) ?? value;
|
|
145
|
-
}
|
|
146
143
|
function containsAnnotationView(value, seen = /* @__PURE__ */ new WeakSet()) {
|
|
147
144
|
if (value == null || typeof value !== "object") return false;
|
|
148
145
|
const candidate = value;
|
|
@@ -305,61 +302,17 @@ function prepareStateForCompletion(fieldState, parser) {
|
|
|
305
302
|
*/
|
|
306
303
|
function getAnnotatedFieldState(parentState, field, parser) {
|
|
307
304
|
const sourceState = parentState != null && typeof parentState === "object" && field in parentState ? parentState[field] : parser.initialState;
|
|
308
|
-
return
|
|
309
|
-
}
|
|
310
|
-
const annotationViewTargets = /* @__PURE__ */ new WeakMap();
|
|
311
|
-
function withAnnotationView(state, annotations) {
|
|
312
|
-
const target = unwrapAnnotationView(state);
|
|
313
|
-
const view = new Proxy(target, {
|
|
314
|
-
get(target$1, key) {
|
|
315
|
-
if (key === annotationKey) return annotations;
|
|
316
|
-
const value = Reflect.get(target$1, key, target$1);
|
|
317
|
-
return typeof value === "function" ? value.bind(target$1) : value;
|
|
318
|
-
},
|
|
319
|
-
has(target$1, key) {
|
|
320
|
-
return key === annotationKey || Reflect.has(target$1, key);
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
annotationViewTargets.set(view, target);
|
|
324
|
-
return view;
|
|
325
|
-
}
|
|
326
|
-
function getParseChildState(parentState, childState, parser) {
|
|
327
|
-
const annotations = getAnnotations(parentState);
|
|
328
|
-
const shouldInheritAnnotations = Reflect.get(parser, inheritParentAnnotationsKey) === true;
|
|
329
|
-
if (childState == null) {
|
|
330
|
-
if (annotations !== void 0 && shouldInheritAnnotations) return injectAnnotations({}, annotations);
|
|
331
|
-
return childState;
|
|
332
|
-
}
|
|
333
|
-
if (annotations === void 0 || typeof childState !== "object" || getAnnotations(childState) === annotations || !shouldInheritAnnotations) return childState;
|
|
334
|
-
const injectedState = injectAnnotations(childState, annotations);
|
|
335
|
-
return getAnnotations(injectedState) === annotations ? injectedState : childState;
|
|
305
|
+
return getWrappedChildState(parentState, sourceState, parser);
|
|
336
306
|
}
|
|
337
307
|
function getObjectParseChildState(parentState, childState, _parser) {
|
|
338
|
-
|
|
339
|
-
if (annotations === void 0 || childState == null || typeof childState !== "object" || getAnnotations(childState) === annotations) return childState;
|
|
340
|
-
return inheritAnnotations(parentState, childState);
|
|
341
|
-
}
|
|
342
|
-
function getAnnotatedChildState(parentState, childState, parser) {
|
|
343
|
-
const annotations = getAnnotations(parentState);
|
|
344
|
-
const shouldInheritAnnotations = Reflect.get(parser, inheritParentAnnotationsKey) === true;
|
|
345
|
-
if (childState == null) {
|
|
346
|
-
if (annotations !== void 0 && shouldInheritAnnotations) return injectAnnotations({}, annotations);
|
|
347
|
-
return childState;
|
|
348
|
-
}
|
|
349
|
-
if (typeof childState !== "object") return childState;
|
|
350
|
-
if (annotations === void 0 || getAnnotations(childState) === annotations) return childState;
|
|
351
|
-
if (shouldInheritAnnotations) {
|
|
352
|
-
const injectedState = injectAnnotations(childState, annotations);
|
|
353
|
-
if (getAnnotations(injectedState) === annotations) return injectedState;
|
|
354
|
-
}
|
|
355
|
-
return withAnnotationView(childState, annotations);
|
|
308
|
+
return reconcileObjectChildState(parentState, childState);
|
|
356
309
|
}
|
|
357
310
|
function buildSuggestRuntimeNodesFromPairs(pairs, state, parentPath) {
|
|
358
311
|
const prefix = parentPath ?? [];
|
|
359
312
|
const nodes = [];
|
|
360
313
|
for (const [field, parser] of pairs) {
|
|
361
314
|
const fieldState = Object.hasOwn(state, field) ? state[field] : parser.initialState;
|
|
362
|
-
nodes.push(...getParserSuggestRuntimeNodes(parser,
|
|
315
|
+
nodes.push(...getParserSuggestRuntimeNodes(parser, getWrappedChildState(state, fieldState, parser), [...prefix, field]));
|
|
363
316
|
}
|
|
364
317
|
return nodes;
|
|
365
318
|
}
|
|
@@ -369,7 +322,7 @@ function buildSuggestRuntimeNodesFromArray(parsers, stateArray, parentPath) {
|
|
|
369
322
|
for (let i = 0; i < parsers.length; i++) {
|
|
370
323
|
const parser = parsers[i];
|
|
371
324
|
const elementState = i < stateArray.length ? stateArray[i] : void 0;
|
|
372
|
-
nodes.push(...getParserSuggestRuntimeNodes(parser,
|
|
325
|
+
nodes.push(...getParserSuggestRuntimeNodes(parser, getWrappedChildState(stateArray, elementState, parser), [...prefix, i]));
|
|
373
326
|
}
|
|
374
327
|
return nodes;
|
|
375
328
|
}
|
|
@@ -569,7 +522,7 @@ function normalizeExclusiveState(state) {
|
|
|
569
522
|
}
|
|
570
523
|
function annotateExclusiveParserResult(parentState, parser, result) {
|
|
571
524
|
if (!result.success) return result;
|
|
572
|
-
const annotatedState =
|
|
525
|
+
const annotatedState = getWrappedChildState(parentState, result.next.state, parser);
|
|
573
526
|
if (annotatedState === result.next.state) return result;
|
|
574
527
|
return {
|
|
575
528
|
...result,
|
|
@@ -595,7 +548,7 @@ function createExclusiveComplete(parsers, options, noMatchContext, mode) {
|
|
|
595
548
|
const candidate = findExclusiveZeroInputCandidateSync(syncParsers, state, exec);
|
|
596
549
|
if (candidate != null) {
|
|
597
550
|
const p = syncParsers[candidate.index];
|
|
598
|
-
const annotatedState =
|
|
551
|
+
const annotatedState = getWrappedChildState(state, candidate.parseResult.next.state, p);
|
|
599
552
|
return p.complete(annotatedState, withChildExecPath(exec, candidate.index));
|
|
600
553
|
}
|
|
601
554
|
return {
|
|
@@ -606,7 +559,7 @@ function createExclusiveComplete(parsers, options, noMatchContext, mode) {
|
|
|
606
559
|
const candidate = await findExclusiveZeroInputCandidateAsync(parsers, state, exec);
|
|
607
560
|
if (candidate != null && (parsers[candidate.index].$mode === "sync" || exec?.phase !== "parse" && exec?.phase !== "suggest")) {
|
|
608
561
|
const p = parsers[candidate.index];
|
|
609
|
-
const annotatedState =
|
|
562
|
+
const annotatedState = getWrappedChildState(state, candidate.parseResult.next.state, p);
|
|
610
563
|
return await p.complete(annotatedState, withChildExecPath(exec, candidate.index));
|
|
611
564
|
}
|
|
612
565
|
return {
|
|
@@ -695,7 +648,7 @@ function findExclusiveZeroInputCandidateSync(parsers, state, exec) {
|
|
|
695
648
|
if (parser.leadingNames.size > 0 || parser.acceptingAnyToken) continue;
|
|
696
649
|
const parseResult = parser.parse({
|
|
697
650
|
...emptyCtx,
|
|
698
|
-
state:
|
|
651
|
+
state: getWrappedChildState(state, parser.initialState, parser)
|
|
699
652
|
});
|
|
700
653
|
if (!parseResult.success || parseResult.provisional) continue;
|
|
701
654
|
candidateCount++;
|
|
@@ -726,7 +679,7 @@ async function findExclusiveZeroInputCandidateAsync(parsers, state, exec) {
|
|
|
726
679
|
if (parser.leadingNames.size > 0 || parser.acceptingAnyToken) continue;
|
|
727
680
|
const parseResult = await parser.parse({
|
|
728
681
|
...emptyCtx,
|
|
729
|
-
state:
|
|
682
|
+
state: getWrappedChildState(state, parser.initialState, parser)
|
|
730
683
|
});
|
|
731
684
|
if (!parseResult.success || parseResult.provisional) continue;
|
|
732
685
|
candidateCount++;
|
|
@@ -1799,7 +1752,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1799
1752
|
return state;
|
|
1800
1753
|
};
|
|
1801
1754
|
const inheritedFieldStateCache = /* @__PURE__ */ new WeakMap();
|
|
1802
|
-
const createFieldStateGetter = (parentState, annotateChildState =
|
|
1755
|
+
const createFieldStateGetter = (parentState, annotateChildState = getWrappedChildState) => {
|
|
1803
1756
|
return (field, parser) => {
|
|
1804
1757
|
const fieldKey = field;
|
|
1805
1758
|
const cache = parentState != null && typeof parentState === "object" ? (() => {
|
|
@@ -1857,7 +1810,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1857
1810
|
optionsTerminated: result.next.optionsTerminated,
|
|
1858
1811
|
state: {
|
|
1859
1812
|
...currentContext.state,
|
|
1860
|
-
[field]:
|
|
1813
|
+
[field]: getWrappedChildState(currentContext.state, result.next.state, parser)
|
|
1861
1814
|
},
|
|
1862
1815
|
...mergedExec != null ? {
|
|
1863
1816
|
trace: mergedExec.trace,
|
|
@@ -1887,7 +1840,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1887
1840
|
...currentContext,
|
|
1888
1841
|
state: {
|
|
1889
1842
|
...currentContext.state,
|
|
1890
|
-
[field]:
|
|
1843
|
+
[field]: getWrappedChildState(currentContext.state, result.next.state, parser)
|
|
1891
1844
|
},
|
|
1892
1845
|
...mergedExec != null ? {
|
|
1893
1846
|
trace: mergedExec.trace,
|
|
@@ -1955,7 +1908,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1955
1908
|
optionsTerminated: result.next.optionsTerminated,
|
|
1956
1909
|
state: {
|
|
1957
1910
|
...currentContext.state,
|
|
1958
|
-
[field]:
|
|
1911
|
+
[field]: getWrappedChildState(currentContext.state, result.next.state, parser)
|
|
1959
1912
|
},
|
|
1960
1913
|
...mergedExec != null ? {
|
|
1961
1914
|
trace: mergedExec.trace,
|
|
@@ -1985,7 +1938,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1985
1938
|
...currentContext,
|
|
1986
1939
|
state: {
|
|
1987
1940
|
...currentContext.state,
|
|
1988
|
-
[field]:
|
|
1941
|
+
[field]: getWrappedChildState(currentContext.state, result.next.state, parser)
|
|
1989
1942
|
},
|
|
1990
1943
|
...mergedExec != null ? {
|
|
1991
1944
|
trace: mergedExec.trace,
|
|
@@ -2414,7 +2367,7 @@ function advanceTupleSuggestContextSync(context, parsers) {
|
|
|
2414
2367
|
for (const [parser, index] of remainingParsers) {
|
|
2415
2368
|
const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2416
2369
|
if (result.success && result.consumed.length > 0) {
|
|
2417
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ?
|
|
2370
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
|
|
2418
2371
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2419
2372
|
currentContext = {
|
|
2420
2373
|
...currentContext,
|
|
@@ -2439,7 +2392,7 @@ function advanceTupleSuggestContextSync(context, parsers) {
|
|
|
2439
2392
|
if (!foundMatch) for (const [parser, index] of remainingParsers) {
|
|
2440
2393
|
const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2441
2394
|
if (result.success && result.consumed.length < 1) {
|
|
2442
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ?
|
|
2395
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
|
|
2443
2396
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2444
2397
|
currentContext = {
|
|
2445
2398
|
...currentContext,
|
|
@@ -2480,7 +2433,7 @@ async function advanceTupleSuggestContextAsync(context, parsers) {
|
|
|
2480
2433
|
for (const [parser, index] of remainingParsers) {
|
|
2481
2434
|
const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2482
2435
|
if (result.success && result.consumed.length > 0) {
|
|
2483
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ?
|
|
2436
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
|
|
2484
2437
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2485
2438
|
currentContext = {
|
|
2486
2439
|
...currentContext,
|
|
@@ -2505,7 +2458,7 @@ async function advanceTupleSuggestContextAsync(context, parsers) {
|
|
|
2505
2458
|
if (!foundMatch) for (const [parser, index] of remainingParsers) {
|
|
2506
2459
|
const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2507
2460
|
if (result.success && result.consumed.length < 1) {
|
|
2508
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ?
|
|
2461
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((state, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : state));
|
|
2509
2462
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2510
2463
|
currentContext = {
|
|
2511
2464
|
...currentContext,
|
|
@@ -2541,7 +2494,7 @@ function markFailedTupleSuggestSources(parsers, stateArray, failedParserIndexes,
|
|
|
2541
2494
|
const parser = parsers[index];
|
|
2542
2495
|
if (parser == null) continue;
|
|
2543
2496
|
const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
|
|
2544
|
-
const nodes = getParserSuggestRuntimeNodes(parser,
|
|
2497
|
+
const nodes = getParserSuggestRuntimeNodes(parser, getWrappedChildState(stateArray, parserState, parser), [...prefix, index]);
|
|
2545
2498
|
if (nodes.length < 1) continue;
|
|
2546
2499
|
const failedRuntime = createDependencyRuntimeContext();
|
|
2547
2500
|
collectExplicitSourceValues(nodes, failedRuntime);
|
|
@@ -2558,7 +2511,7 @@ async function markFailedTupleSuggestSourcesAsync(parsers, stateArray, failedPar
|
|
|
2558
2511
|
const parser = parsers[index];
|
|
2559
2512
|
if (parser == null) continue;
|
|
2560
2513
|
const parserState = stateArray && Array.isArray(stateArray) ? stateArray[index] : parser.initialState;
|
|
2561
|
-
const nodes = getParserSuggestRuntimeNodes(parser,
|
|
2514
|
+
const nodes = getParserSuggestRuntimeNodes(parser, getWrappedChildState(stateArray, parserState, parser), [...prefix, index]);
|
|
2562
2515
|
if (nodes.length < 1) continue;
|
|
2563
2516
|
const failedRuntime = createDependencyRuntimeContext();
|
|
2564
2517
|
await collectExplicitSourceValuesAsync(nodes, failedRuntime);
|
|
@@ -2598,7 +2551,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
2598
2551
|
for (const [parser, index] of remainingParsers) {
|
|
2599
2552
|
const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2600
2553
|
if (result.success && result.consumed.length > 0) {
|
|
2601
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
2554
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
2602
2555
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2603
2556
|
currentContext = {
|
|
2604
2557
|
...currentContext,
|
|
@@ -2619,7 +2572,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
2619
2572
|
if (!foundMatch) for (const [parser, index] of remainingParsers) {
|
|
2620
2573
|
const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2621
2574
|
if (result.success && result.consumed.length < 1) {
|
|
2622
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
2575
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
2623
2576
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2624
2577
|
currentContext = {
|
|
2625
2578
|
...currentContext,
|
|
@@ -2665,7 +2618,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
2665
2618
|
const resultOrPromise = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2666
2619
|
const result = await resultOrPromise;
|
|
2667
2620
|
if (result.success && result.consumed.length > 0) {
|
|
2668
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
2621
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
2669
2622
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2670
2623
|
currentContext = {
|
|
2671
2624
|
...currentContext,
|
|
@@ -2687,7 +2640,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
2687
2640
|
const resultOrPromise = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
2688
2641
|
const result = await resultOrPromise;
|
|
2689
2642
|
if (result.success && result.consumed.length < 1) {
|
|
2690
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
2643
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
2691
2644
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
2692
2645
|
currentContext = {
|
|
2693
2646
|
...currentContext,
|
|
@@ -3626,7 +3579,7 @@ function buildSuggestRegistry(preParsedContext, parsers) {
|
|
|
3626
3579
|
state: createAnnotatedArrayStateRecord(stateArray)
|
|
3627
3580
|
}, buildIndexedParserPairs(parsers), runtime.registry, preParsedContext.exec);
|
|
3628
3581
|
const prefix = preParsedContext.exec?.path ?? [];
|
|
3629
|
-
for (let i = 0; i < parsers.length; i++) seedSuggestRuntimeFromFieldParsers(parsers[i],
|
|
3582
|
+
for (let i = 0; i < parsers.length; i++) seedSuggestRuntimeFromFieldParsers(parsers[i], getWrappedChildState(stateArray, stateArray[i], parsers[i]), runtime, [...prefix, i]);
|
|
3630
3583
|
}
|
|
3631
3584
|
return {
|
|
3632
3585
|
context: {
|
|
@@ -3654,7 +3607,7 @@ async function buildSuggestRegistryAsync(preParsedContext, parsers) {
|
|
|
3654
3607
|
state: createAnnotatedArrayStateRecord(stateArray)
|
|
3655
3608
|
}, buildIndexedParserPairs(parsers), runtime.registry, preParsedContext.exec);
|
|
3656
3609
|
const prefix = preParsedContext.exec?.path ?? [];
|
|
3657
|
-
for (let i = 0; i < parsers.length; i++) await seedSuggestRuntimeFromFieldParsersAsync(parsers[i],
|
|
3610
|
+
for (let i = 0; i < parsers.length; i++) await seedSuggestRuntimeFromFieldParsersAsync(parsers[i], getWrappedChildState(stateArray, stateArray[i], parsers[i]), runtime, [...prefix, i]);
|
|
3658
3611
|
}
|
|
3659
3612
|
return {
|
|
3660
3613
|
context: {
|
|
@@ -3790,7 +3743,7 @@ function tryParseSuggestList(context, stateArray, parsers, matchedParsers, remai
|
|
|
3790
3743
|
const tail = remaining.slice(ri + 1);
|
|
3791
3744
|
return resultOrPromise.then((result$1) => {
|
|
3792
3745
|
if (result$1.success && result$1.consumed.length > 0) {
|
|
3793
|
-
stateArray[index] =
|
|
3746
|
+
stateArray[index] = getWrappedChildState(context.state, result$1.next.state, parser);
|
|
3794
3747
|
matchedParsers.add(index);
|
|
3795
3748
|
const mergedExec = mergeChildExec(context.exec, result$1.next.exec);
|
|
3796
3749
|
return preParseSuggestLoop({
|
|
@@ -3817,7 +3770,7 @@ function tryParseSuggestList(context, stateArray, parsers, matchedParsers, remai
|
|
|
3817
3770
|
}
|
|
3818
3771
|
const result = resultOrPromise;
|
|
3819
3772
|
if (result.success && result.consumed.length > 0) {
|
|
3820
|
-
stateArray[index] =
|
|
3773
|
+
stateArray[index] = getWrappedChildState(context.state, result.next.state, parser);
|
|
3821
3774
|
matchedParsers.add(index);
|
|
3822
3775
|
const mergedExec = mergeChildExec(context.exec, result.next.exec);
|
|
3823
3776
|
return {
|
|
@@ -3856,7 +3809,7 @@ function concat(...parsers) {
|
|
|
3856
3809
|
for (const [parser, index] of remainingParsers) {
|
|
3857
3810
|
const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
3858
3811
|
if (result.success && result.consumed.length > 0) {
|
|
3859
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
3812
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
3860
3813
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
3861
3814
|
currentContext = {
|
|
3862
3815
|
...currentContext,
|
|
@@ -3877,7 +3830,7 @@ function concat(...parsers) {
|
|
|
3877
3830
|
if (!foundMatch) for (const [parser, index] of remainingParsers) {
|
|
3878
3831
|
const result = parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
3879
3832
|
if (result.success && result.consumed.length < 1) {
|
|
3880
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
3833
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
3881
3834
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
3882
3835
|
currentContext = {
|
|
3883
3836
|
...currentContext,
|
|
@@ -3922,7 +3875,7 @@ function concat(...parsers) {
|
|
|
3922
3875
|
for (const [parser, index] of remainingParsers) {
|
|
3923
3876
|
const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
3924
3877
|
if (result.success && result.consumed.length > 0) {
|
|
3925
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
3878
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
3926
3879
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
3927
3880
|
currentContext = {
|
|
3928
3881
|
...currentContext,
|
|
@@ -3943,7 +3896,7 @@ function concat(...parsers) {
|
|
|
3943
3896
|
if (!foundMatch) for (const [parser, index] of remainingParsers) {
|
|
3944
3897
|
const result = await parser.parse(withChildContext(currentContext, index, stateArray[index], parser));
|
|
3945
3898
|
if (result.success && result.consumed.length < 1) {
|
|
3946
|
-
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ?
|
|
3899
|
+
const newStateArray = annotateFreshArray(currentContext.state, stateArray.map((s, idx) => idx === index ? getWrappedChildState(currentContext.state, result.next.state, parser) : s));
|
|
3947
3900
|
const mergedExec = mergeChildExec(currentContext.exec, result.next.exec);
|
|
3948
3901
|
currentContext = {
|
|
3949
3902
|
...currentContext,
|
|
@@ -4426,7 +4379,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4426
4379
|
...branchResult.next,
|
|
4427
4380
|
state: {
|
|
4428
4381
|
...state,
|
|
4429
|
-
branchState:
|
|
4382
|
+
branchState: getWrappedChildState(state, branchResult.next.state, branchParser)
|
|
4430
4383
|
},
|
|
4431
4384
|
...mergedExec != null ? {
|
|
4432
4385
|
exec: mergedExec,
|
|
@@ -4440,7 +4393,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4440
4393
|
}
|
|
4441
4394
|
const discriminatorResult = syncDiscriminator.parse({ ...withChildContext(context, "_discriminator", state.discriminatorState, syncDiscriminator) });
|
|
4442
4395
|
if (discriminatorResult.success) {
|
|
4443
|
-
const annotatedDiscriminatorState =
|
|
4396
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, discriminatorResult.next.state, syncDiscriminator);
|
|
4444
4397
|
const completionResult = syncDiscriminator.complete(annotatedDiscriminatorState, withChildExecPath(context.exec, "_discriminator"));
|
|
4445
4398
|
if (completionResult.success) {
|
|
4446
4399
|
const value = completionResult.value;
|
|
@@ -4473,7 +4426,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4473
4426
|
kind: "branch",
|
|
4474
4427
|
key: value
|
|
4475
4428
|
},
|
|
4476
|
-
branchState:
|
|
4429
|
+
branchState: getWrappedChildState(state, branchParseResult.next.state, branchParser)
|
|
4477
4430
|
},
|
|
4478
4431
|
...mergedExec != null ? {
|
|
4479
4432
|
exec: mergedExec,
|
|
@@ -4494,7 +4447,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4494
4447
|
kind: "branch",
|
|
4495
4448
|
key: value
|
|
4496
4449
|
},
|
|
4497
|
-
branchState:
|
|
4450
|
+
branchState: getWrappedChildState(state, branchParser.initialState, branchParser)
|
|
4498
4451
|
},
|
|
4499
4452
|
...discriminatorExec != null ? {
|
|
4500
4453
|
exec: discriminatorExec,
|
|
@@ -4526,7 +4479,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4526
4479
|
state: {
|
|
4527
4480
|
...state,
|
|
4528
4481
|
...commitDefault ? { selectedBranch: { kind: "default" } } : {},
|
|
4529
|
-
branchState:
|
|
4482
|
+
branchState: getWrappedChildState(state, defaultResult.next.state, syncDefaultBranch)
|
|
4530
4483
|
},
|
|
4531
4484
|
...mergedExec != null ? {
|
|
4532
4485
|
exec: mergedExec,
|
|
@@ -4558,7 +4511,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4558
4511
|
...branchResult.next,
|
|
4559
4512
|
state: {
|
|
4560
4513
|
...state,
|
|
4561
|
-
branchState:
|
|
4514
|
+
branchState: getWrappedChildState(state, branchResult.next.state, branchParser)
|
|
4562
4515
|
},
|
|
4563
4516
|
...mergedExec != null ? {
|
|
4564
4517
|
exec: mergedExec,
|
|
@@ -4620,7 +4573,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4620
4573
|
if (speculativeHit != null && !ambiguous) {
|
|
4621
4574
|
const { key, bp, result: branchResult } = speculativeHit;
|
|
4622
4575
|
if (branchResult.success) {
|
|
4623
|
-
const annotatedDiscriminatorState$2 =
|
|
4576
|
+
const annotatedDiscriminatorState$2 = getWrappedChildState(state, discriminatorResult.next.state, discriminator);
|
|
4624
4577
|
const mergedExec = mergeChildExec(discriminatorExec, branchResult.next.exec);
|
|
4625
4578
|
return {
|
|
4626
4579
|
success: true,
|
|
@@ -4634,7 +4587,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4634
4587
|
kind: "branch",
|
|
4635
4588
|
key
|
|
4636
4589
|
},
|
|
4637
|
-
branchState:
|
|
4590
|
+
branchState: getWrappedChildState(state, branchResult.next.state, bp),
|
|
4638
4591
|
speculative: true
|
|
4639
4592
|
},
|
|
4640
4593
|
...mergedExec != null ? {
|
|
@@ -4659,7 +4612,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4659
4612
|
state: {
|
|
4660
4613
|
...state,
|
|
4661
4614
|
selectedBranch: { kind: "default" },
|
|
4662
|
-
branchState:
|
|
4615
|
+
branchState: getWrappedChildState(state, defaultResult.next.state, defaultBranch)
|
|
4663
4616
|
},
|
|
4664
4617
|
...defaultExec != null ? {
|
|
4665
4618
|
exec: defaultExec,
|
|
@@ -4670,10 +4623,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4670
4623
|
};
|
|
4671
4624
|
}
|
|
4672
4625
|
if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
|
|
4673
|
-
if (defaultResult.success && defaultResult.consumed.length === 0 && speculationContext.buffer.length === 0) deferredBranchState =
|
|
4626
|
+
if (defaultResult.success && defaultResult.consumed.length === 0 && speculationContext.buffer.length === 0) deferredBranchState = getWrappedChildState(state, defaultResult.next.state, defaultBranch);
|
|
4674
4627
|
}
|
|
4675
4628
|
if (speculativeError != null && !ambiguous && !provisionalAmbiguous) return speculativeError;
|
|
4676
|
-
const annotatedDiscriminatorState$1 =
|
|
4629
|
+
const annotatedDiscriminatorState$1 = getWrappedChildState(state, discriminatorResult.next.state, discriminator);
|
|
4677
4630
|
return {
|
|
4678
4631
|
success: true,
|
|
4679
4632
|
provisional: true,
|
|
@@ -4688,7 +4641,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4688
4641
|
consumed: []
|
|
4689
4642
|
};
|
|
4690
4643
|
}
|
|
4691
|
-
const annotatedDiscriminatorState =
|
|
4644
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, discriminatorResult.next.state, discriminator);
|
|
4692
4645
|
const completionResult = await discriminator.complete(annotatedDiscriminatorState, withChildExecPath(context.exec, "_discriminator"));
|
|
4693
4646
|
if (completionResult.success) {
|
|
4694
4647
|
const value = completionResult.value;
|
|
@@ -4720,7 +4673,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4720
4673
|
kind: "branch",
|
|
4721
4674
|
key: value
|
|
4722
4675
|
},
|
|
4723
|
-
branchState:
|
|
4676
|
+
branchState: getWrappedChildState(state, branchParseResult.next.state, branchParser)
|
|
4724
4677
|
},
|
|
4725
4678
|
...mergedExec != null ? {
|
|
4726
4679
|
exec: mergedExec,
|
|
@@ -4741,7 +4694,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4741
4694
|
kind: "branch",
|
|
4742
4695
|
key: value
|
|
4743
4696
|
},
|
|
4744
|
-
branchState:
|
|
4697
|
+
branchState: getWrappedChildState(state, branchParser.initialState, branchParser)
|
|
4745
4698
|
},
|
|
4746
4699
|
...discriminatorExec != null ? {
|
|
4747
4700
|
exec: discriminatorExec,
|
|
@@ -4773,7 +4726,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4773
4726
|
state: {
|
|
4774
4727
|
...state,
|
|
4775
4728
|
...commitDefault ? { selectedBranch: { kind: "default" } } : {},
|
|
4776
|
-
branchState:
|
|
4729
|
+
branchState: getWrappedChildState(state, defaultResult.next.state, defaultBranch)
|
|
4777
4730
|
},
|
|
4778
4731
|
...mergedExec != null ? {
|
|
4779
4732
|
exec: mergedExec,
|
|
@@ -4797,7 +4750,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4797
4750
|
const syncBranches = branches;
|
|
4798
4751
|
if (state.selectedBranch === void 0) {
|
|
4799
4752
|
{
|
|
4800
|
-
const annotatedDiscriminatorStateForDeferred =
|
|
4753
|
+
const annotatedDiscriminatorStateForDeferred = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
|
|
4801
4754
|
const deferredDiscriminatorResult = unwrapCompleteResult(syncDiscriminator.complete(annotatedDiscriminatorStateForDeferred, withChildExecPath(exec, "_discriminator")));
|
|
4802
4755
|
if (deferredDiscriminatorResult.success) {
|
|
4803
4756
|
const deferredValue = deferredDiscriminatorResult.value;
|
|
@@ -4811,13 +4764,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4811
4764
|
exec: branchExec,
|
|
4812
4765
|
dependencyRegistry: exec?.dependencyRegistry
|
|
4813
4766
|
};
|
|
4814
|
-
const annotatedInitial =
|
|
4767
|
+
const annotatedInitial = getWrappedChildState(state, deferredBranch.initialState, deferredBranch);
|
|
4815
4768
|
const replayResult = deferredBranch.parse({
|
|
4816
4769
|
...emptyCtx,
|
|
4817
4770
|
state: annotatedInitial
|
|
4818
4771
|
});
|
|
4819
4772
|
const branchState = replayResult.success ? replayResult.next.state : annotatedInitial;
|
|
4820
|
-
const annotatedBranchState =
|
|
4773
|
+
const annotatedBranchState = getWrappedChildState(state, branchState, deferredBranch);
|
|
4821
4774
|
const branchResult$1 = unwrapCompleteResult(deferredBranch.complete(annotatedBranchState, branchExec));
|
|
4822
4775
|
if (branchResult$1.success) return {
|
|
4823
4776
|
success: true,
|
|
@@ -4840,7 +4793,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4840
4793
|
} else if (syncDefaultBranch === void 0) return deferredDiscriminatorResult;
|
|
4841
4794
|
}
|
|
4842
4795
|
if (syncDefaultBranch !== void 0) {
|
|
4843
|
-
const branchState =
|
|
4796
|
+
const branchState = getWrappedChildState(state, state.branchState ?? syncDefaultBranch.initialState, syncDefaultBranch);
|
|
4844
4797
|
const defaultResult = unwrapCompleteResult(syncDefaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
|
|
4845
4798
|
if (!defaultResult.success) return defaultResult;
|
|
4846
4799
|
return {
|
|
@@ -4858,15 +4811,15 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4858
4811
|
};
|
|
4859
4812
|
}
|
|
4860
4813
|
const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
|
|
4861
|
-
const annotatedDiscriminatorState =
|
|
4814
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
|
|
4862
4815
|
const combinedState = {
|
|
4863
4816
|
_discriminator: annotatedDiscriminatorState,
|
|
4864
|
-
_branch:
|
|
4817
|
+
_branch: getWrappedChildState(state, state.branchState, branchParser)
|
|
4865
4818
|
};
|
|
4866
4819
|
const runtime = createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
|
|
4867
4820
|
collectExplicitSourceValues(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
|
|
4868
4821
|
collectSourcesFromState(combinedState, runtime);
|
|
4869
|
-
const resolvedBranchState =
|
|
4822
|
+
const resolvedBranchState = getWrappedChildState(state, resolveStateWithRuntime(state.branchState, runtime), branchParser);
|
|
4870
4823
|
const completionExec = {
|
|
4871
4824
|
...exec ?? {
|
|
4872
4825
|
usage: branchParser.usage,
|
|
@@ -4917,7 +4870,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4917
4870
|
};
|
|
4918
4871
|
if (state.selectedBranch === void 0) {
|
|
4919
4872
|
if (exec?.phase !== "parse" && exec?.phase !== "suggest") {
|
|
4920
|
-
const annotatedDiscriminatorStateForDeferred =
|
|
4873
|
+
const annotatedDiscriminatorStateForDeferred = getWrappedChildState(state, state.discriminatorState, discriminator);
|
|
4921
4874
|
const deferredDiscriminatorResult = unwrapCompleteResult(await discriminator.complete(annotatedDiscriminatorStateForDeferred, withChildExecPath(exec, "_discriminator")));
|
|
4922
4875
|
if (deferredDiscriminatorResult.success) {
|
|
4923
4876
|
const deferredValue = deferredDiscriminatorResult.value;
|
|
@@ -4931,13 +4884,13 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4931
4884
|
exec: branchExec,
|
|
4932
4885
|
dependencyRegistry: exec?.dependencyRegistry
|
|
4933
4886
|
};
|
|
4934
|
-
const annotatedInitial =
|
|
4887
|
+
const annotatedInitial = getWrappedChildState(state, deferredBranch.initialState, deferredBranch);
|
|
4935
4888
|
const replayResult = await deferredBranch.parse({
|
|
4936
4889
|
...emptyCtx,
|
|
4937
4890
|
state: annotatedInitial
|
|
4938
4891
|
});
|
|
4939
4892
|
const branchState = replayResult.success ? replayResult.next.state : annotatedInitial;
|
|
4940
|
-
const annotatedBranchState =
|
|
4893
|
+
const annotatedBranchState = getWrappedChildState(state, branchState, deferredBranch);
|
|
4941
4894
|
const branchResult$1 = unwrapCompleteResult(await deferredBranch.complete(annotatedBranchState, branchExec));
|
|
4942
4895
|
if (branchResult$1.success) return {
|
|
4943
4896
|
success: true,
|
|
@@ -4964,7 +4917,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4964
4917
|
value: [void 0, void 0]
|
|
4965
4918
|
};
|
|
4966
4919
|
if (defaultBranch !== void 0) {
|
|
4967
|
-
const branchState =
|
|
4920
|
+
const branchState = getWrappedChildState(state, state.branchState ?? defaultBranch.initialState, defaultBranch);
|
|
4968
4921
|
const defaultResult = unwrapCompleteResult(await defaultBranch.complete(branchState, withChildExecPath(exec, "_branch")));
|
|
4969
4922
|
if (!defaultResult.success) return defaultResult;
|
|
4970
4923
|
return {
|
|
@@ -4982,10 +4935,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
4982
4935
|
};
|
|
4983
4936
|
}
|
|
4984
4937
|
const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
|
|
4985
|
-
const annotatedDiscriminatorState =
|
|
4938
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, discriminator);
|
|
4986
4939
|
const combinedState = {
|
|
4987
4940
|
_discriminator: annotatedDiscriminatorState,
|
|
4988
|
-
_branch:
|
|
4941
|
+
_branch: getWrappedChildState(state, state.branchState, branchParser)
|
|
4989
4942
|
};
|
|
4990
4943
|
const runtime = createDependencyRuntimeContext(exec?.dependencyRegistry?.clone());
|
|
4991
4944
|
await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, exec?.path), runtime);
|
|
@@ -5031,7 +4984,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5031
4984
|
error: options?.errors?.branchMismatch ? options.errors.branchMismatch(resolvedKey, speculativeKey) : message`Branch mismatch: tokens for ${speculativeKey} were consumed, but the discriminator resolved to ${resolvedKey}.`
|
|
5032
4985
|
};
|
|
5033
4986
|
}
|
|
5034
|
-
const resolvedBranchState =
|
|
4987
|
+
const resolvedBranchState = getWrappedChildState(state, await resolveStateWithRuntimeAsync(state.branchState, runtime), branchParser);
|
|
5035
4988
|
const branchResult = unwrapCompleteResult(await branchParser.complete(resolvedBranchState, withChildExecPath(completionExec, "_branch")));
|
|
5036
4989
|
if (!branchResult.success) {
|
|
5037
4990
|
if (discriminatorValue !== void 0 && options?.errors?.branchError) return {
|
|
@@ -5051,12 +5004,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5051
5004
|
};
|
|
5052
5005
|
const getConditionalBranchSeedSync = (currentState, branchParser, branchState, exec) => {
|
|
5053
5006
|
const branchExec = withChildExecPath(exec, "_branch");
|
|
5054
|
-
const annotatedState =
|
|
5007
|
+
const annotatedState = getWrappedChildState(currentState, branchState, branchParser);
|
|
5055
5008
|
return extractOrCompletePhase2SeedSync(branchParser, annotatedState, branchExec);
|
|
5056
5009
|
};
|
|
5057
5010
|
const getConditionalBranchSeedAsync = async (currentState, branchParser, branchState, exec) => {
|
|
5058
5011
|
const branchExec = withChildExecPath(exec, "_branch");
|
|
5059
|
-
const annotatedState =
|
|
5012
|
+
const annotatedState = getWrappedChildState(currentState, branchState, branchParser);
|
|
5060
5013
|
return await extractOrCompletePhase2SeedAsync(branchParser, annotatedState, branchExec);
|
|
5061
5014
|
};
|
|
5062
5015
|
function* suggestSync(context, prefix) {
|
|
@@ -5066,10 +5019,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5066
5019
|
const syncDefaultBranch = defaultBranch;
|
|
5067
5020
|
if (state.selectedBranch === void 0) {
|
|
5068
5021
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
5069
|
-
const annotatedDiscriminatorState =
|
|
5022
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
|
|
5070
5023
|
const defaultCombinedState = {
|
|
5071
5024
|
_discriminator: annotatedDiscriminatorState,
|
|
5072
|
-
_branch: syncDefaultBranch == null ? state.branchState :
|
|
5025
|
+
_branch: syncDefaultBranch == null ? state.branchState : getWrappedChildState(state, state.branchState, syncDefaultBranch)
|
|
5073
5026
|
};
|
|
5074
5027
|
collectExplicitSourceValues(buildRuntimeNodesFromPairs(syncDefaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", syncDefaultBranch]], defaultCombinedState, context.exec?.path), runtime);
|
|
5075
5028
|
collectSourcesFromState(defaultCombinedState, runtime);
|
|
@@ -5083,7 +5036,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5083
5036
|
} } : {}
|
|
5084
5037
|
};
|
|
5085
5038
|
yield* syncDiscriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState, syncDiscriminator), prefix);
|
|
5086
|
-
const annotatedDiscState =
|
|
5039
|
+
const annotatedDiscState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
|
|
5087
5040
|
const discComplete = syncDiscriminator.complete(annotatedDiscState, withChildExecPath(suggestContext.exec ? {
|
|
5088
5041
|
...suggestContext.exec,
|
|
5089
5042
|
phase: "suggest"
|
|
@@ -5095,10 +5048,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5095
5048
|
} else {
|
|
5096
5049
|
const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
|
|
5097
5050
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
5098
|
-
const annotatedDiscriminatorState =
|
|
5051
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, syncDiscriminator);
|
|
5099
5052
|
const combinedState = {
|
|
5100
5053
|
_discriminator: annotatedDiscriminatorState,
|
|
5101
|
-
_branch:
|
|
5054
|
+
_branch: getWrappedChildState(state, state.branchState, branchParser)
|
|
5102
5055
|
};
|
|
5103
5056
|
collectExplicitSourceValues(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
|
|
5104
5057
|
collectSourcesFromState(combinedState, runtime);
|
|
@@ -5118,10 +5071,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5118
5071
|
const state = context.state ?? initialState;
|
|
5119
5072
|
if (state.selectedBranch === void 0) {
|
|
5120
5073
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
5121
|
-
const annotatedDiscriminatorState =
|
|
5074
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, discriminator);
|
|
5122
5075
|
const defaultCombinedState = {
|
|
5123
5076
|
_discriminator: annotatedDiscriminatorState,
|
|
5124
|
-
_branch: defaultBranch == null ? state.branchState :
|
|
5077
|
+
_branch: defaultBranch == null ? state.branchState : getWrappedChildState(state, state.branchState, defaultBranch)
|
|
5125
5078
|
};
|
|
5126
5079
|
await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs(defaultBranch == null ? [["_discriminator", discriminator]] : [["_discriminator", discriminator], ["_branch", defaultBranch]], defaultCombinedState, context.exec?.path), runtime);
|
|
5127
5080
|
collectSourcesFromState(defaultCombinedState, runtime);
|
|
@@ -5137,7 +5090,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5137
5090
|
yield* discriminator.suggest(withChildContext(suggestContext, "_discriminator", state.discriminatorState, discriminator), prefix);
|
|
5138
5091
|
let discResolved = false;
|
|
5139
5092
|
if (discriminator.$mode === "sync") {
|
|
5140
|
-
const annotatedDiscState =
|
|
5093
|
+
const annotatedDiscState = getWrappedChildState(state, state.discriminatorState, discriminator);
|
|
5141
5094
|
const discComplete = discriminator.complete(annotatedDiscState, withChildExecPath(suggestContext.exec ? {
|
|
5142
5095
|
...suggestContext.exec,
|
|
5143
5096
|
phase: "suggest"
|
|
@@ -5154,10 +5107,10 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5154
5107
|
} else {
|
|
5155
5108
|
const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
|
|
5156
5109
|
const runtime = createDependencyRuntimeContext(context.dependencyRegistry?.clone());
|
|
5157
|
-
const annotatedDiscriminatorState =
|
|
5110
|
+
const annotatedDiscriminatorState = getWrappedChildState(state, state.discriminatorState, discriminator);
|
|
5158
5111
|
const combinedState = {
|
|
5159
5112
|
_discriminator: annotatedDiscriminatorState,
|
|
5160
|
-
_branch:
|
|
5113
|
+
_branch: getWrappedChildState(state, state.branchState, branchParser)
|
|
5161
5114
|
};
|
|
5162
5115
|
await collectExplicitSourceValuesAsync(buildRuntimeNodesFromPairs([["_discriminator", discriminator], ["_branch", branchParser]], combinedState, context.exec?.path), runtime);
|
|
5163
5116
|
collectSourcesFromState(combinedState, runtime);
|
|
@@ -5197,7 +5150,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5197
5150
|
const syncBranches = branches;
|
|
5198
5151
|
const discriminatorExec = withChildExecPath(exec, "_discriminator");
|
|
5199
5152
|
if (state.selectedBranch === void 0) {
|
|
5200
|
-
const discriminatorSeed$1 = completeOrExtractPhase2Seed(syncDiscriminator,
|
|
5153
|
+
const discriminatorSeed$1 = completeOrExtractPhase2Seed(syncDiscriminator, getWrappedChildState(state, state.discriminatorState, syncDiscriminator), discriminatorExec);
|
|
5201
5154
|
if (typeof discriminatorSeed$1?.value === "string") {
|
|
5202
5155
|
const branchParser$1 = syncBranches[discriminatorSeed$1.value];
|
|
5203
5156
|
if (branchParser$1 != null) {
|
|
@@ -5213,12 +5166,12 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5213
5166
|
}
|
|
5214
5167
|
const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
|
|
5215
5168
|
const branchSeed = getConditionalBranchSeedSync(state, branchParser, state.branchState ?? branchParser.initialState, exec);
|
|
5216
|
-
const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : completeOrExtractPhase2Seed(syncDiscriminator,
|
|
5169
|
+
const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : completeOrExtractPhase2Seed(syncDiscriminator, getWrappedChildState(state, state.discriminatorState, syncDiscriminator), discriminatorExec) ?? { value: state.selectedBranch.key };
|
|
5217
5170
|
return combineTuplePhase2Seeds(discriminatorSeed, branchSeed);
|
|
5218
5171
|
}, async () => {
|
|
5219
5172
|
const discriminatorExec = withChildExecPath(exec, "_discriminator");
|
|
5220
5173
|
if (state.selectedBranch === void 0) {
|
|
5221
|
-
const discriminatorSeed$1 = await completeOrExtractPhase2Seed(discriminator,
|
|
5174
|
+
const discriminatorSeed$1 = await completeOrExtractPhase2Seed(discriminator, getWrappedChildState(state, state.discriminatorState, discriminator), discriminatorExec);
|
|
5222
5175
|
if (typeof discriminatorSeed$1?.value === "string") {
|
|
5223
5176
|
const branchParser$1 = branches[discriminatorSeed$1.value];
|
|
5224
5177
|
if (branchParser$1 != null) {
|
|
@@ -5234,7 +5187,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
5234
5187
|
}
|
|
5235
5188
|
const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
|
|
5236
5189
|
const branchSeed = await getConditionalBranchSeedAsync(state, branchParser, state.branchState ?? branchParser.initialState, exec);
|
|
5237
|
-
const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : await completeOrExtractPhase2Seed(discriminator,
|
|
5190
|
+
const discriminatorSeed = state.selectedBranch.kind === "default" ? null : state.discriminatorValue != null && state.discriminatorValue === state.selectedBranch.key ? { value: state.discriminatorValue } : await completeOrExtractPhase2Seed(discriminator, getWrappedChildState(state, state.discriminatorState, discriminator), discriminatorExec) ?? { value: state.selectedBranch.key };
|
|
5238
5191
|
return combineTuplePhase2Seeds(discriminatorSeed, branchSeed);
|
|
5239
5192
|
});
|
|
5240
5193
|
},
|