@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.
@@ -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,
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optique/core",
3
- "version": "1.0.0-dev.1693+e2748d7a",
3
+ "version": "1.0.0-dev.1697+ea94a9ac",
4
4
  "description": "Type-safe combinatorial command-line interface parser",
5
5
  "keywords": [
6
6
  "CLI",