@optique/core 1.0.0-dev.1695 → 1.0.0-dev.1699

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.
@@ -1627,9 +1627,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1627
1627
  if (currentContext.buffer.length === 0) {
1628
1628
  let allCanComplete = true;
1629
1629
  const getFieldState = createFieldStateGetter(currentContext.state);
1630
+ const probeExec = currentContext.exec ? {
1631
+ ...currentContext.exec,
1632
+ phase: "parse"
1633
+ } : {
1634
+ usage: [],
1635
+ path: [],
1636
+ trace: void 0,
1637
+ phase: "parse"
1638
+ };
1630
1639
  for (const [field, parser] of parserPairs) {
1631
1640
  const fieldState = getFieldState(field, parser);
1632
- const completeResult = parser.complete(fieldState, withChildExecPath(currentContext.exec, field));
1641
+ const completeResult = parser.complete(fieldState, withChildExecPath(probeExec, field));
1633
1642
  if (!completeResult.success) {
1634
1643
  allCanComplete = false;
1635
1644
  break;
@@ -1716,9 +1725,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1716
1725
  if (currentContext.buffer.length === 0) {
1717
1726
  let allCanComplete = true;
1718
1727
  const getFieldState = createFieldStateGetter(currentContext.state);
1728
+ const probeExec = currentContext.exec ? {
1729
+ ...currentContext.exec,
1730
+ phase: "parse"
1731
+ } : {
1732
+ usage: [],
1733
+ path: [],
1734
+ trace: void 0,
1735
+ phase: "parse"
1736
+ };
1719
1737
  for (const [field, parser] of parserPairs) {
1720
1738
  const fieldState = getFieldState(field, parser);
1721
- const completeResult = await parser.complete(fieldState, withChildExecPath(currentContext.exec, field));
1739
+ const completeResult = await parser.complete(fieldState, withChildExecPath(probeExec, field));
1722
1740
  if (!completeResult.success) {
1723
1741
  allCanComplete = false;
1724
1742
  break;
@@ -3860,6 +3878,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
3860
3878
  const discriminatorResult = await discriminator.parse({ ...withChildContext(context, "_discriminator", state.discriminatorState, discriminator) });
3861
3879
  if (discriminatorResult.success) {
3862
3880
  if (discriminatorResult.consumed.length === 0 && discriminator.$mode === "async") {
3881
+ let deferredBranchState = state.branchState;
3863
3882
  if (defaultBranch !== void 0) {
3864
3883
  const defaultResult = await defaultBranch.parse(withChildContext(context, "_branch", state.branchState ?? defaultBranch.initialState, defaultBranch, defaultBranch.usage));
3865
3884
  if (defaultResult.success && defaultResult.consumed.length > 0) {
@@ -3881,6 +3900,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
3881
3900
  consumed: defaultResult.consumed
3882
3901
  };
3883
3902
  }
3903
+ if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
3904
+ if (defaultResult.success && defaultResult.consumed.length === 0 && context.buffer.length === 0) deferredBranchState = getAnnotatedChildState(state, defaultResult.next.state, defaultBranch);
3884
3905
  }
3885
3906
  const annotatedDiscriminatorState$1 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
3886
3907
  const mergedExec = mergeChildExec(context.exec, discriminatorResult.next.exec);
@@ -3891,7 +3912,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
3891
3912
  ...context,
3892
3913
  state: {
3893
3914
  ...state,
3894
- discriminatorState: annotatedDiscriminatorState$1
3915
+ discriminatorState: annotatedDiscriminatorState$1,
3916
+ branchState: deferredBranchState
3895
3917
  },
3896
3918
  ...mergedExec != null ? {
3897
3919
  exec: mergedExec,
@@ -1627,9 +1627,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1627
1627
  if (currentContext.buffer.length === 0) {
1628
1628
  let allCanComplete = true;
1629
1629
  const getFieldState = createFieldStateGetter(currentContext.state);
1630
+ const probeExec = currentContext.exec ? {
1631
+ ...currentContext.exec,
1632
+ phase: "parse"
1633
+ } : {
1634
+ usage: [],
1635
+ path: [],
1636
+ trace: void 0,
1637
+ phase: "parse"
1638
+ };
1630
1639
  for (const [field, parser] of parserPairs) {
1631
1640
  const fieldState = getFieldState(field, parser);
1632
- const completeResult = parser.complete(fieldState, withChildExecPath(currentContext.exec, field));
1641
+ const completeResult = parser.complete(fieldState, withChildExecPath(probeExec, field));
1633
1642
  if (!completeResult.success) {
1634
1643
  allCanComplete = false;
1635
1644
  break;
@@ -1716,9 +1725,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1716
1725
  if (currentContext.buffer.length === 0) {
1717
1726
  let allCanComplete = true;
1718
1727
  const getFieldState = createFieldStateGetter(currentContext.state);
1728
+ const probeExec = currentContext.exec ? {
1729
+ ...currentContext.exec,
1730
+ phase: "parse"
1731
+ } : {
1732
+ usage: [],
1733
+ path: [],
1734
+ trace: void 0,
1735
+ phase: "parse"
1736
+ };
1719
1737
  for (const [field, parser] of parserPairs) {
1720
1738
  const fieldState = getFieldState(field, parser);
1721
- const completeResult = await parser.complete(fieldState, withChildExecPath(currentContext.exec, field));
1739
+ const completeResult = await parser.complete(fieldState, withChildExecPath(probeExec, field));
1722
1740
  if (!completeResult.success) {
1723
1741
  allCanComplete = false;
1724
1742
  break;
@@ -3860,6 +3878,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
3860
3878
  const discriminatorResult = await discriminator.parse({ ...withChildContext(context, "_discriminator", state.discriminatorState, discriminator) });
3861
3879
  if (discriminatorResult.success) {
3862
3880
  if (discriminatorResult.consumed.length === 0 && discriminator.$mode === "async") {
3881
+ let deferredBranchState = state.branchState;
3863
3882
  if (defaultBranch !== void 0) {
3864
3883
  const defaultResult = await defaultBranch.parse(withChildContext(context, "_branch", state.branchState ?? defaultBranch.initialState, defaultBranch, defaultBranch.usage));
3865
3884
  if (defaultResult.success && defaultResult.consumed.length > 0) {
@@ -3881,6 +3900,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
3881
3900
  consumed: defaultResult.consumed
3882
3901
  };
3883
3902
  }
3903
+ if (!defaultResult.success && defaultResult.consumed > 0) return defaultResult;
3904
+ if (defaultResult.success && defaultResult.consumed.length === 0 && context.buffer.length === 0) deferredBranchState = getAnnotatedChildState(state, defaultResult.next.state, defaultBranch);
3884
3905
  }
3885
3906
  const annotatedDiscriminatorState$1 = getAnnotatedChildState(state, discriminatorResult.next.state, discriminator);
3886
3907
  const mergedExec = mergeChildExec(context.exec, discriminatorResult.next.exec);
@@ -3891,7 +3912,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
3891
3912
  ...context,
3892
3913
  state: {
3893
3914
  ...state,
3894
- discriminatorState: annotatedDiscriminatorState$1
3915
+ discriminatorState: annotatedDiscriminatorState$1,
3916
+ branchState: deferredBranchState
3895
3917
  },
3896
3918
  ...mergedExec != null ? {
3897
3919
  exec: mergedExec,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optique/core",
3
- "version": "1.0.0-dev.1695+f0ab0347",
3
+ "version": "1.0.0-dev.1699+b919c678",
4
4
  "description": "Type-safe combinatorial command-line interface parser",
5
5
  "keywords": [
6
6
  "CLI",