@optique/core 1.0.0-dev.1693 → 1.0.0-dev.1697
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 +6 -2
- package/dist/constructs.js +6 -2
- package/package.json +1 -1
package/dist/constructs.cjs
CHANGED
|
@@ -571,7 +571,7 @@ function createExclusiveComplete(parsers, options, noMatchContext, mode) {
|
|
|
571
571
|
if (candidateIndex < 0) candidateIndex = i$1;
|
|
572
572
|
if (candidateCount > 1) break;
|
|
573
573
|
}
|
|
574
|
-
if (candidateCount === 1 && candidateIndex >= 0 && exec?.phase !== "parse" && exec?.phase !== "suggest") {
|
|
574
|
+
if (candidateCount === 1 && candidateIndex >= 0 && (parsers[candidateIndex].$mode === "sync" || exec?.phase !== "parse" && exec?.phase !== "suggest")) {
|
|
575
575
|
const p = parsers[candidateIndex];
|
|
576
576
|
const parseResult = await p.parse({
|
|
577
577
|
...emptyCtx,
|
|
@@ -3860,6 +3860,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3860
3860
|
const discriminatorResult = await discriminator.parse({ ...withChildContext(context, "_discriminator", state.discriminatorState, discriminator) });
|
|
3861
3861
|
if (discriminatorResult.success) {
|
|
3862
3862
|
if (discriminatorResult.consumed.length === 0 && discriminator.$mode === "async") {
|
|
3863
|
+
let deferredBranchState = state.branchState;
|
|
3863
3864
|
if (defaultBranch !== void 0) {
|
|
3864
3865
|
const defaultResult = await defaultBranch.parse(withChildContext(context, "_branch", state.branchState ?? defaultBranch.initialState, defaultBranch, defaultBranch.usage));
|
|
3865
3866
|
if (defaultResult.success && defaultResult.consumed.length > 0) {
|
|
@@ -3881,6 +3882,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3881
3882
|
consumed: defaultResult.consumed
|
|
3882
3883
|
};
|
|
3883
3884
|
}
|
|
3885
|
+
if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
|
|
3886
|
+
if (defaultResult.success && defaultResult.consumed.length === 0 && context.buffer.length === 0) deferredBranchState = getAnnotatedChildState(state, defaultResult.next.state, defaultBranch);
|
|
3884
3887
|
}
|
|
3885
3888
|
const annotatedDiscriminatorState$1 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
|
|
3886
3889
|
const mergedExec = mergeChildExec(context.exec, discriminatorResult.next.exec);
|
|
@@ -3891,7 +3894,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3891
3894
|
...context,
|
|
3892
3895
|
state: {
|
|
3893
3896
|
...state,
|
|
3894
|
-
discriminatorState: annotatedDiscriminatorState$1
|
|
3897
|
+
discriminatorState: annotatedDiscriminatorState$1,
|
|
3898
|
+
branchState: deferredBranchState
|
|
3895
3899
|
},
|
|
3896
3900
|
...mergedExec != null ? {
|
|
3897
3901
|
exec: mergedExec,
|
package/dist/constructs.js
CHANGED
|
@@ -571,7 +571,7 @@ function createExclusiveComplete(parsers, options, noMatchContext, mode) {
|
|
|
571
571
|
if (candidateIndex < 0) candidateIndex = i$1;
|
|
572
572
|
if (candidateCount > 1) break;
|
|
573
573
|
}
|
|
574
|
-
if (candidateCount === 1 && candidateIndex >= 0 && exec?.phase !== "parse" && exec?.phase !== "suggest") {
|
|
574
|
+
if (candidateCount === 1 && candidateIndex >= 0 && (parsers[candidateIndex].$mode === "sync" || exec?.phase !== "parse" && exec?.phase !== "suggest")) {
|
|
575
575
|
const p = parsers[candidateIndex];
|
|
576
576
|
const parseResult = await p.parse({
|
|
577
577
|
...emptyCtx,
|
|
@@ -3860,6 +3860,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3860
3860
|
const discriminatorResult = await discriminator.parse({ ...withChildContext(context, "_discriminator", state.discriminatorState, discriminator) });
|
|
3861
3861
|
if (discriminatorResult.success) {
|
|
3862
3862
|
if (discriminatorResult.consumed.length === 0 && discriminator.$mode === "async") {
|
|
3863
|
+
let deferredBranchState = state.branchState;
|
|
3863
3864
|
if (defaultBranch !== void 0) {
|
|
3864
3865
|
const defaultResult = await defaultBranch.parse(withChildContext(context, "_branch", state.branchState ?? defaultBranch.initialState, defaultBranch, defaultBranch.usage));
|
|
3865
3866
|
if (defaultResult.success && defaultResult.consumed.length > 0) {
|
|
@@ -3881,6 +3882,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3881
3882
|
consumed: defaultResult.consumed
|
|
3882
3883
|
};
|
|
3883
3884
|
}
|
|
3885
|
+
if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
|
|
3886
|
+
if (defaultResult.success && defaultResult.consumed.length === 0 && context.buffer.length === 0) deferredBranchState = getAnnotatedChildState(state, defaultResult.next.state, defaultBranch);
|
|
3884
3887
|
}
|
|
3885
3888
|
const annotatedDiscriminatorState$1 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
|
|
3886
3889
|
const mergedExec = mergeChildExec(context.exec, discriminatorResult.next.exec);
|
|
@@ -3891,7 +3894,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
3891
3894
|
...context,
|
|
3892
3895
|
state: {
|
|
3893
3896
|
...state,
|
|
3894
|
-
discriminatorState: annotatedDiscriminatorState$1
|
|
3897
|
+
discriminatorState: annotatedDiscriminatorState$1,
|
|
3898
|
+
branchState: deferredBranchState
|
|
3895
3899
|
},
|
|
3896
3900
|
...mergedExec != null ? {
|
|
3897
3901
|
exec: mergedExec,
|