@optique/core 1.0.0-dev.1574 → 1.0.0-dev.1583

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.
@@ -265,7 +265,7 @@ function generateNoMatchError(context) {
265
265
  */
266
266
  function createExclusiveComplete(parsers, options, noMatchContext, mode) {
267
267
  const syncParsers = parsers;
268
- return (state) => {
268
+ return (state, exec) => {
269
269
  if (state == null) return {
270
270
  success: false,
271
271
  error: getNoMatchError(options, noMatchContext)
@@ -275,8 +275,8 @@ function createExclusiveComplete(parsers, options, noMatchContext, mode) {
275
275
  success: false,
276
276
  error: result.error
277
277
  };
278
- return dispatchByMode(mode, () => syncParsers[i].complete(result.next.state), async () => {
279
- const completeResult = await parsers[i].complete(result.next.state);
278
+ return dispatchByMode(mode, () => syncParsers[i].complete(result.next.state, exec), async () => {
279
+ const completeResult = await parsers[i].complete(result.next.state, exec);
280
280
  return completeResult;
281
281
  });
282
282
  };
@@ -691,7 +691,7 @@ function longestMatch(...args) {
691
691
  function* suggestObjectSync(context, prefix, parserPairs) {
692
692
  const registry = context.dependencyRegistry ? context.dependencyRegistry.clone() : new DependencyRegistry();
693
693
  if (context.state && typeof context.state === "object") collectDependencies(context.state, registry);
694
- completeDependencySourceDefaults(context, parserPairs, registry);
694
+ completeDependencySourceDefaults(context, parserPairs, registry, context.exec);
695
695
  const contextWithRegistry = {
696
696
  ...context,
697
697
  dependencyRegistry: registry
@@ -725,7 +725,7 @@ function* suggestObjectSync(context, prefix, parserPairs) {
725
725
  async function* suggestObjectAsync(context, prefix, parserPairs) {
726
726
  const registry = context.dependencyRegistry ? context.dependencyRegistry.clone() : new DependencyRegistry();
727
727
  if (context.state && typeof context.state === "object") collectDependencies(context.state, registry);
728
- await completeDependencySourceDefaultsAsync(context, parserPairs, registry);
728
+ await completeDependencySourceDefaultsAsync(context, parserPairs, registry, context.exec);
729
729
  const contextWithRegistry = {
730
730
  ...context,
731
731
  dependencyRegistry: registry
@@ -798,9 +798,9 @@ function* pendingDependencyDefaults(context, parserPairs) {
798
798
  * @see https://github.com/dahlia/optique/issues/186
799
799
  * @internal
800
800
  */
801
- function completeDependencySourceDefaults(context, parserPairs, registry) {
801
+ function completeDependencySourceDefaults(context, parserPairs, registry, exec) {
802
802
  for (const { parser, state } of pendingDependencyDefaults(context, parserPairs)) {
803
- const completed = parser.complete(state);
803
+ const completed = parser.complete(state, exec);
804
804
  const depState = wrapAsDependencySourceState(completed, parser);
805
805
  if (depState) registerCompletedDependency(depState, registry);
806
806
  }
@@ -833,9 +833,9 @@ function wrapAsDependencySourceState(completed, parser) {
833
833
  * @see https://github.com/dahlia/optique/issues/186
834
834
  * @internal
835
835
  */
836
- async function completeDependencySourceDefaultsAsync(context, parserPairs, registry) {
836
+ async function completeDependencySourceDefaultsAsync(context, parserPairs, registry, exec) {
837
837
  for (const { parser, state } of pendingDependencyDefaults(context, parserPairs)) {
838
- const completed = await parser.complete(state);
838
+ const completed = await parser.complete(state, exec);
839
839
  const depState = wrapAsDependencySourceState(completed, parser);
840
840
  if (depState) registerCompletedDependency(depState, registry);
841
841
  }
@@ -860,18 +860,18 @@ function collectChildFieldParsers(parsers) {
860
860
  * The original state is NOT modified; only the registry is populated.
861
861
  * @internal
862
862
  */
863
- function preCompleteAndRegisterDependencies(state, fieldParserPairs, registry) {
863
+ function preCompleteAndRegisterDependencies(state, fieldParserPairs, registry, exec) {
864
864
  for (const [field, fieldParser] of fieldParserPairs) {
865
865
  const fieldState = state[field];
866
866
  let completed;
867
- if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) completed = fieldParser.complete(fieldState);
868
- else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) completed = fieldParser.complete([fieldParser.initialState]);
867
+ if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) completed = fieldParser.complete(fieldState, exec);
868
+ else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) completed = fieldParser.complete([fieldParser.initialState], exec);
869
869
  else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
870
870
  const pendingState = fieldParser[wrappedDependencySourceMarker];
871
- completed = fieldParser.complete([pendingState]);
871
+ completed = fieldParser.complete([pendingState], exec);
872
872
  } else if (fieldState != null && !Array.isArray(fieldState) && !isDependencySourceState(fieldState) && (isWrappedDependencySource(fieldParser) || isPendingDependencySourceState(fieldParser.initialState))) {
873
873
  const annotatedFieldState = getAnnotatedFieldState(state, field, fieldParser);
874
- completed = fieldParser.complete(annotatedFieldState);
874
+ completed = fieldParser.complete(annotatedFieldState, exec);
875
875
  } else continue;
876
876
  const depState = wrapAsDependencySourceState(completed, fieldParser);
877
877
  if (depState) registerCompletedDependency(depState, registry);
@@ -881,18 +881,18 @@ function preCompleteAndRegisterDependencies(state, fieldParserPairs, registry) {
881
881
  * Async version of {@link preCompleteAndRegisterDependencies}.
882
882
  * @internal
883
883
  */
884
- async function preCompleteAndRegisterDependenciesAsync(state, fieldParserPairs, registry) {
884
+ async function preCompleteAndRegisterDependenciesAsync(state, fieldParserPairs, registry, exec) {
885
885
  for (const [field, fieldParser] of fieldParserPairs) {
886
886
  const fieldState = state[field];
887
887
  let completed;
888
- if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) completed = await fieldParser.complete(fieldState);
889
- else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) completed = await fieldParser.complete([fieldParser.initialState]);
888
+ if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) completed = await fieldParser.complete(fieldState, exec);
889
+ else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) completed = await fieldParser.complete([fieldParser.initialState], exec);
890
890
  else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
891
891
  const pendingState = fieldParser[wrappedDependencySourceMarker];
892
- completed = await fieldParser.complete([pendingState]);
892
+ completed = await fieldParser.complete([pendingState], exec);
893
893
  } else if (fieldState != null && !Array.isArray(fieldState) && !isDependencySourceState(fieldState) && (isWrappedDependencySource(fieldParser) || isPendingDependencySourceState(fieldParser.initialState))) {
894
894
  const annotatedFieldState = getAnnotatedFieldState(state, field, fieldParser);
895
- completed = await fieldParser.complete(annotatedFieldState);
895
+ completed = await fieldParser.complete(annotatedFieldState, exec);
896
896
  } else continue;
897
897
  const depState = wrapAsDependencySourceState(completed, fieldParser);
898
898
  if (depState) registerCompletedDependency(depState, registry);
@@ -1147,7 +1147,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1147
1147
  const getFieldState = createFieldStateGetter(context.state);
1148
1148
  for (const [field, parser] of parserPairs) {
1149
1149
  const fieldState = getFieldState(field, parser);
1150
- const completeResult = parser.complete(fieldState);
1150
+ const completeResult = parser.complete(fieldState, context.exec);
1151
1151
  if (!completeResult.success) {
1152
1152
  allCanComplete = false;
1153
1153
  break;
@@ -1206,7 +1206,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1206
1206
  const getFieldState = createFieldStateGetter(context.state);
1207
1207
  for (const [field, parser] of parserPairs) {
1208
1208
  const fieldState = getFieldState(field, parser);
1209
- const completeResult = await parser.complete(fieldState);
1209
+ const completeResult = await parser.complete(fieldState, context.exec);
1210
1210
  if (!completeResult.success) {
1211
1211
  allCanComplete = false;
1212
1212
  break;
@@ -1238,7 +1238,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1238
1238
  parse(context) {
1239
1239
  return dispatchByMode(combinedMode, () => parseSync(context), () => parseAsync(context));
1240
1240
  },
1241
- complete(state) {
1241
+ complete(state, exec) {
1242
1242
  return dispatchByMode(combinedMode, () => {
1243
1243
  const preCompletedState = {};
1244
1244
  const preCompletedKeys = /* @__PURE__ */ new Set();
@@ -1248,23 +1248,23 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1248
1248
  const fieldState = state[fieldKey];
1249
1249
  const fieldParser = parsers[field];
1250
1250
  if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) {
1251
- const completed = fieldParser.complete(fieldState);
1251
+ const completed = fieldParser.complete(fieldState, exec);
1252
1252
  preCompletedState[fieldKey] = completed;
1253
1253
  preCompletedKeys.add(fieldKey);
1254
1254
  } else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) {
1255
- const completed = fieldParser.complete([fieldParser.initialState]);
1255
+ const completed = fieldParser.complete([fieldParser.initialState], exec);
1256
1256
  preCompletedState[fieldKey] = completed;
1257
1257
  preCompletedKeys.add(fieldKey);
1258
1258
  } else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
1259
1259
  const pendingState = fieldParser[wrappedDependencySourceMarker];
1260
- const completed = fieldParser.complete([pendingState]);
1260
+ const completed = fieldParser.complete([pendingState], exec);
1261
1261
  if (isDependencySourceState(completed)) {
1262
1262
  preCompletedState[fieldKey] = completed;
1263
1263
  preCompletedKeys.add(fieldKey);
1264
1264
  } else preCompletedState[fieldKey] = fieldState;
1265
1265
  } else if (fieldState != null && !Array.isArray(fieldState) && !isDependencySourceState(fieldState) && (isWrappedDependencySource(fieldParser) || isPendingDependencySourceState(fieldParser.initialState))) {
1266
1266
  const annotatedFieldState = getFieldState(field, fieldParser);
1267
- const completed = fieldParser.complete(annotatedFieldState);
1267
+ const completed = fieldParser.complete(annotatedFieldState, exec);
1268
1268
  const depState = wrapAsDependencySourceState(completed, fieldParser);
1269
1269
  if (depState) {
1270
1270
  preCompletedState[fieldKey] = depState;
@@ -1295,7 +1295,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1295
1295
  continue;
1296
1296
  }
1297
1297
  const completionState = fieldResolvedState === void 0 ? getCompletionFieldState(field, fieldParser) : fieldResolvedState;
1298
- const valueResult = fieldParser.complete(completionState);
1298
+ const valueResult = fieldParser.complete(completionState, exec);
1299
1299
  if (valueResult.success) {
1300
1300
  result[fieldKey] = valueResult.value;
1301
1301
  if (valueResult.deferred) if (valueResult.deferredKeys) deferredKeys.set(fieldKey, valueResult.deferredKeys);
@@ -1324,23 +1324,23 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1324
1324
  const fieldState = state[fieldKey];
1325
1325
  const fieldParser = parsers[field];
1326
1326
  if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) {
1327
- const completed = await fieldParser.complete(fieldState);
1327
+ const completed = await fieldParser.complete(fieldState, exec);
1328
1328
  preCompletedState[fieldKey] = completed;
1329
1329
  preCompletedKeys.add(fieldKey);
1330
1330
  } else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) {
1331
- const completed = await fieldParser.complete([fieldParser.initialState]);
1331
+ const completed = await fieldParser.complete([fieldParser.initialState], exec);
1332
1332
  preCompletedState[fieldKey] = completed;
1333
1333
  preCompletedKeys.add(fieldKey);
1334
1334
  } else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
1335
1335
  const pendingState = fieldParser[wrappedDependencySourceMarker];
1336
- const completed = await fieldParser.complete([pendingState]);
1336
+ const completed = await fieldParser.complete([pendingState], exec);
1337
1337
  if (isDependencySourceState(completed)) {
1338
1338
  preCompletedState[fieldKey] = completed;
1339
1339
  preCompletedKeys.add(fieldKey);
1340
1340
  } else preCompletedState[fieldKey] = fieldState;
1341
1341
  } else if (fieldState != null && !Array.isArray(fieldState) && !isDependencySourceState(fieldState) && (isWrappedDependencySource(fieldParser) || isPendingDependencySourceState(fieldParser.initialState))) {
1342
1342
  const annotatedFieldState = getFieldState(field, fieldParser);
1343
- const completed = await fieldParser.complete(annotatedFieldState);
1343
+ const completed = await fieldParser.complete(annotatedFieldState, exec);
1344
1344
  const depState = wrapAsDependencySourceState(completed, fieldParser);
1345
1345
  if (depState) {
1346
1346
  preCompletedState[fieldKey] = depState;
@@ -1371,7 +1371,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1371
1371
  continue;
1372
1372
  }
1373
1373
  const completionState = fieldResolvedState === void 0 ? getCompletionFieldState(field, fieldParser) : fieldResolvedState;
1374
- const valueResult = await fieldParser.complete(completionState);
1374
+ const valueResult = await fieldParser.complete(completionState, exec);
1375
1375
  if (valueResult.success) {
1376
1376
  result[fieldKey] = valueResult.value;
1377
1377
  if (valueResult.deferred) if (valueResult.deferredKeys) deferredKeys.set(fieldKey, valueResult.deferredKeys);
@@ -1632,7 +1632,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1632
1632
  parse(context) {
1633
1633
  return dispatchByMode(combinedMode, () => parseSync(context), () => parseAsync(context));
1634
1634
  },
1635
- complete(state) {
1635
+ complete(state, exec) {
1636
1636
  return dispatchByMode(combinedMode, () => {
1637
1637
  const stateArray = state;
1638
1638
  const preCompletedState = [];
@@ -1640,14 +1640,14 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1640
1640
  const elementState = stateArray[i];
1641
1641
  const elementParser = syncParsers[i];
1642
1642
  if (Array.isArray(elementState) && elementState.length === 1 && isPendingDependencySourceState(elementState[0])) {
1643
- const completed = elementParser.complete(elementState);
1643
+ const completed = elementParser.complete(elementState, exec);
1644
1644
  preCompletedState[i] = completed;
1645
1645
  } else if (elementState === void 0 && isPendingDependencySourceState(elementParser.initialState)) {
1646
- const completed = elementParser.complete([elementParser.initialState]);
1646
+ const completed = elementParser.complete([elementParser.initialState], exec);
1647
1647
  preCompletedState[i] = completed;
1648
1648
  } else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
1649
1649
  const pendingState = elementParser[wrappedDependencySourceMarker];
1650
- const completed = elementParser.complete([pendingState]);
1650
+ const completed = elementParser.complete([pendingState], exec);
1651
1651
  preCompletedState[i] = completed;
1652
1652
  } else preCompletedState[i] = elementState;
1653
1653
  }
@@ -1676,7 +1676,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1676
1676
  };
1677
1677
  continue;
1678
1678
  }
1679
- const valueResult = elementParser.complete(elementResolvedState);
1679
+ const valueResult = elementParser.complete(elementResolvedState, exec);
1680
1680
  if (valueResult.success) {
1681
1681
  result[i] = valueResult.value;
1682
1682
  if (valueResult.deferred) if (valueResult.deferredKeys) deferredKeys.set(i, valueResult.deferredKeys);
@@ -1703,14 +1703,14 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1703
1703
  const elementState = stateArray[i];
1704
1704
  const elementParser = parsers[i];
1705
1705
  if (Array.isArray(elementState) && elementState.length === 1 && isPendingDependencySourceState(elementState[0])) {
1706
- const completed = await elementParser.complete(elementState);
1706
+ const completed = await elementParser.complete(elementState, exec);
1707
1707
  preCompletedState[i] = completed;
1708
1708
  } else if (elementState === void 0 && isPendingDependencySourceState(elementParser.initialState)) {
1709
- const completed = await elementParser.complete([elementParser.initialState]);
1709
+ const completed = await elementParser.complete([elementParser.initialState], exec);
1710
1710
  preCompletedState[i] = completed;
1711
1711
  } else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
1712
1712
  const pendingState = elementParser[wrappedDependencySourceMarker];
1713
- const completed = await elementParser.complete([pendingState]);
1713
+ const completed = await elementParser.complete([pendingState], exec);
1714
1714
  preCompletedState[i] = completed;
1715
1715
  } else preCompletedState[i] = elementState;
1716
1716
  }
@@ -1739,7 +1739,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
1739
1739
  };
1740
1740
  continue;
1741
1741
  }
1742
- const valueResult = await elementParser.complete(elementResolvedState);
1742
+ const valueResult = await elementParser.complete(elementResolvedState, exec);
1743
1743
  if (valueResult.success) {
1744
1744
  result[i] = valueResult.value;
1745
1745
  if (valueResult.deferred) if (valueResult.deferredKeys) deferredKeys.set(i, valueResult.deferredKeys);
@@ -1980,7 +1980,7 @@ function merge(...args) {
1980
1980
  if (isAsync) return parseAsync(context);
1981
1981
  return parseSync(context);
1982
1982
  },
1983
- complete(state) {
1983
+ complete(state, exec) {
1984
1984
  const extractCompleteState = (parser, resolvedState, index) => {
1985
1985
  if (parser.initialState === void 0) {
1986
1986
  const key = `__parser_${index}`;
@@ -2001,7 +2001,7 @@ function merge(...args) {
2001
2001
  if (!isAsync) {
2002
2002
  const childFieldPairs = collectChildFieldParsers(syncParsers);
2003
2003
  const registry = new DependencyRegistry();
2004
- preCompleteAndRegisterDependencies(state, childFieldPairs, registry);
2004
+ preCompleteAndRegisterDependencies(state, childFieldPairs, registry, exec);
2005
2005
  const resolvedState = resolveDeferredParseStates(state, registry);
2006
2006
  const object$1 = {};
2007
2007
  const deferredKeys = /* @__PURE__ */ new Map();
@@ -2009,7 +2009,7 @@ function merge(...args) {
2009
2009
  for (let i = 0; i < syncParsers.length; i++) {
2010
2010
  const parser = syncParsers[i];
2011
2011
  const parserState = extractCompleteState(parser, resolvedState, i);
2012
- const result = parser.complete(parserState);
2012
+ const result = parser.complete(parserState, exec);
2013
2013
  if (!result.success) return result;
2014
2014
  for (const field in result.value) {
2015
2015
  object$1[field] = result.value[field];
@@ -2031,7 +2031,7 @@ function merge(...args) {
2031
2031
  return (async () => {
2032
2032
  const childFieldPairs = collectChildFieldParsers(parsers);
2033
2033
  const registry = new DependencyRegistry();
2034
- await preCompleteAndRegisterDependenciesAsync(state, childFieldPairs, registry);
2034
+ await preCompleteAndRegisterDependenciesAsync(state, childFieldPairs, registry, exec);
2035
2035
  const resolvedState = await resolveDeferredParseStatesAsync(state, registry);
2036
2036
  const object$1 = {};
2037
2037
  const deferredKeys = /* @__PURE__ */ new Map();
@@ -2039,7 +2039,7 @@ function merge(...args) {
2039
2039
  for (let i = 0; i < parsers.length; i++) {
2040
2040
  const parser = parsers[i];
2041
2041
  const parserState = extractCompleteState(parser, resolvedState, i);
2042
- const result = await parser.complete(parserState);
2042
+ const result = await parser.complete(parserState, exec);
2043
2043
  if (!result.success) return result;
2044
2044
  for (const field in result.value) {
2045
2045
  object$1[field] = result.value[field];
@@ -2080,9 +2080,9 @@ function merge(...args) {
2080
2080
  const registry$1 = context.dependencyRegistry ? context.dependencyRegistry.clone() : new DependencyRegistry();
2081
2081
  const childFieldPairs$1 = collectChildFieldParsers(parsers);
2082
2082
  if (context.state && typeof context.state === "object") {
2083
- await preCompleteAndRegisterDependenciesAsync(context.state, childFieldPairs$1, registry$1);
2083
+ await preCompleteAndRegisterDependenciesAsync(context.state, childFieldPairs$1, registry$1, context.exec);
2084
2084
  collectDependencies(context.state, registry$1);
2085
- } else await completeDependencySourceDefaultsAsync(context, childFieldPairs$1, registry$1);
2085
+ } else await completeDependencySourceDefaultsAsync(context, childFieldPairs$1, registry$1, context.exec);
2086
2086
  const contextWithRegistry$1 = {
2087
2087
  ...context,
2088
2088
  dependencyRegistry: registry$1
@@ -2103,9 +2103,9 @@ function merge(...args) {
2103
2103
  const registry = context.dependencyRegistry ? context.dependencyRegistry.clone() : new DependencyRegistry();
2104
2104
  const childFieldPairs = collectChildFieldParsers(syncParsers);
2105
2105
  if (context.state && typeof context.state === "object") {
2106
- preCompleteAndRegisterDependencies(context.state, childFieldPairs, registry);
2106
+ preCompleteAndRegisterDependencies(context.state, childFieldPairs, registry, context.exec);
2107
2107
  collectDependencies(context.state, registry);
2108
- } else completeDependencySourceDefaults(context, childFieldPairs, registry);
2108
+ } else completeDependencySourceDefaults(context, childFieldPairs, registry, context.exec);
2109
2109
  const contextWithRegistry = {
2110
2110
  ...context,
2111
2111
  dependencyRegistry: registry
@@ -2430,7 +2430,7 @@ function concat(...parsers) {
2430
2430
  consumed: allConsumed
2431
2431
  };
2432
2432
  };
2433
- const completeSync = (state) => {
2433
+ const completeSync = (state, exec) => {
2434
2434
  const stateArray = state;
2435
2435
  const combinedState = {};
2436
2436
  for (let i = 0; i < stateArray.length; i++) combinedState[i] = stateArray[i];
@@ -2441,7 +2441,7 @@ function concat(...parsers) {
2441
2441
  for (let i = 0; i < syncParsers.length; i++) {
2442
2442
  const parser = syncParsers[i];
2443
2443
  const parserState = resolvedCombinedState[i];
2444
- const result = parser.complete(parserState);
2444
+ const result = parser.complete(parserState, exec);
2445
2445
  if (!result.success) return result;
2446
2446
  const baseIndex = results.length;
2447
2447
  if (Array.isArray(result.value)) {
@@ -2469,7 +2469,7 @@ function concat(...parsers) {
2469
2469
  } : {}
2470
2470
  };
2471
2471
  };
2472
- const completeAsync = async (state) => {
2472
+ const completeAsync = async (state, exec) => {
2473
2473
  const stateArray = state;
2474
2474
  const combinedState = {};
2475
2475
  for (let i = 0; i < stateArray.length; i++) combinedState[i] = stateArray[i];
@@ -2480,7 +2480,7 @@ function concat(...parsers) {
2480
2480
  for (let i = 0; i < parsers.length; i++) {
2481
2481
  const parser = parsers[i];
2482
2482
  const parserState = resolvedCombinedState[i];
2483
- const result = await parser.complete(parserState);
2483
+ const result = await parser.complete(parserState, exec);
2484
2484
  if (!result.success) return result;
2485
2485
  const baseIndex = results.length;
2486
2486
  if (Array.isArray(result.value)) {
@@ -2521,9 +2521,9 @@ function concat(...parsers) {
2521
2521
  if (isAsync) return parseAsync(context);
2522
2522
  return parseSync(context);
2523
2523
  },
2524
- complete(state) {
2525
- if (isAsync) return completeAsync(state);
2526
- return completeSync(state);
2524
+ complete(state, exec) {
2525
+ if (isAsync) return completeAsync(state, exec);
2526
+ return completeSync(state, exec);
2527
2527
  },
2528
2528
  suggest(context, prefix) {
2529
2529
  if (isAsync) return async function* () {
@@ -2599,7 +2599,7 @@ function group(label, parser, options = {}) {
2599
2599
  ...fieldParsersKey in parser ? { [fieldParsersKey]: parser[fieldParsersKey] } : {},
2600
2600
  ...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
2601
2601
  parse: (context) => parser.parse(context),
2602
- complete: (state) => parser.complete(state),
2602
+ complete: (state, exec) => parser.complete(state, exec),
2603
2603
  suggest: (context, prefix) => {
2604
2604
  if (options.hidden === true) return dispatchIterableByMode(parser.$mode, function* () {}, async function* () {});
2605
2605
  return parser.suggest(context, prefix);
@@ -2763,7 +2763,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
2763
2763
  state: state.discriminatorState
2764
2764
  });
2765
2765
  if (discriminatorResult.success && discriminatorResult.consumed.length > 0) {
2766
- const completionResult = syncDiscriminator.complete(discriminatorResult.next.state);
2766
+ const completionResult = syncDiscriminator.complete(discriminatorResult.next.state, context.exec);
2767
2767
  if (completionResult.success) {
2768
2768
  const value = completionResult.value;
2769
2769
  const branchParser = syncBranches[value];
@@ -2862,7 +2862,7 @@ function conditional(discriminator, branches, defaultBranch, options) {
2862
2862
  state: state.discriminatorState
2863
2863
  });
2864
2864
  if (discriminatorResult.success && discriminatorResult.consumed.length > 0) {
2865
- const completionResult = await discriminator.complete(discriminatorResult.next.state);
2865
+ const completionResult = await discriminator.complete(discriminatorResult.next.state, context.exec);
2866
2866
  if (completionResult.success) {
2867
2867
  const value = completionResult.value;
2868
2868
  const branchParser = branches[value];
@@ -2934,14 +2934,14 @@ function conditional(discriminator, branches, defaultBranch, options) {
2934
2934
  error: getNoMatchError$1()
2935
2935
  };
2936
2936
  };
2937
- const completeSync = (state) => {
2937
+ const completeSync = (state, exec) => {
2938
2938
  const syncDiscriminator = discriminator;
2939
2939
  const syncDefaultBranch = defaultBranch;
2940
2940
  const syncBranches = branches;
2941
2941
  if (state.selectedBranch === void 0) {
2942
2942
  if (syncDefaultBranch !== void 0) {
2943
2943
  const branchState = state.branchState ?? syncDefaultBranch.initialState;
2944
- const defaultResult = syncDefaultBranch.complete(branchState);
2944
+ const defaultResult = syncDefaultBranch.complete(branchState, exec);
2945
2945
  if (!defaultResult.success) return defaultResult;
2946
2946
  return {
2947
2947
  success: true,
@@ -2958,14 +2958,14 @@ function conditional(discriminator, branches, defaultBranch, options) {
2958
2958
  };
2959
2959
  }
2960
2960
  const branchParser = state.selectedBranch.kind === "default" ? syncDefaultBranch : syncBranches[state.selectedBranch.key];
2961
- const discriminatorCompleteResult = syncDiscriminator.complete(state.discriminatorState);
2961
+ const discriminatorCompleteResult = syncDiscriminator.complete(state.discriminatorState, exec);
2962
2962
  const combinedState = {
2963
2963
  _discriminator: state.discriminatorState,
2964
2964
  _branch: state.branchState
2965
2965
  };
2966
2966
  const resolvedCombinedState = resolveDeferredParseStates(combinedState);
2967
2967
  const resolvedBranchState = resolvedCombinedState._branch;
2968
- const branchResult = branchParser.complete(resolvedBranchState);
2968
+ const branchResult = branchParser.complete(resolvedBranchState, exec);
2969
2969
  if (!branchResult.success) {
2970
2970
  if (state.discriminatorValue !== void 0 && options?.errors?.branchError) return {
2971
2971
  success: false,
@@ -2987,11 +2987,11 @@ function conditional(discriminator, branches, defaultBranch, options) {
2987
2987
  } : {}
2988
2988
  };
2989
2989
  };
2990
- const completeAsync = async (state) => {
2990
+ const completeAsync = async (state, exec) => {
2991
2991
  if (state.selectedBranch === void 0) {
2992
2992
  if (defaultBranch !== void 0) {
2993
2993
  const branchState = state.branchState ?? defaultBranch.initialState;
2994
- const defaultResult = await defaultBranch.complete(branchState);
2994
+ const defaultResult = await defaultBranch.complete(branchState, exec);
2995
2995
  if (!defaultResult.success) return defaultResult;
2996
2996
  return {
2997
2997
  success: true,
@@ -3008,14 +3008,14 @@ function conditional(discriminator, branches, defaultBranch, options) {
3008
3008
  };
3009
3009
  }
3010
3010
  const branchParser = state.selectedBranch.kind === "default" ? defaultBranch : branches[state.selectedBranch.key];
3011
- const discriminatorCompleteResult = await discriminator.complete(state.discriminatorState);
3011
+ const discriminatorCompleteResult = await discriminator.complete(state.discriminatorState, exec);
3012
3012
  const combinedState = {
3013
3013
  _discriminator: state.discriminatorState,
3014
3014
  _branch: state.branchState
3015
3015
  };
3016
3016
  const resolvedCombinedState = await resolveDeferredParseStatesAsync(combinedState);
3017
3017
  const resolvedBranchState = resolvedCombinedState._branch;
3018
- const branchResult = await branchParser.complete(resolvedBranchState);
3018
+ const branchResult = await branchParser.complete(resolvedBranchState, exec);
3019
3019
  if (!branchResult.success) {
3020
3020
  if (state.discriminatorValue !== void 0 && options?.errors?.branchError) return {
3021
3021
  success: false,
@@ -3091,9 +3091,9 @@ function conditional(discriminator, branches, defaultBranch, options) {
3091
3091
  if (isAsync) return parseAsync(context);
3092
3092
  return parseSync(context);
3093
3093
  },
3094
- complete(state) {
3095
- if (isAsync) return completeAsync(state);
3096
- return completeSync(state);
3094
+ complete(state, exec) {
3095
+ if (isAsync) return completeAsync(state, exec);
3096
+ return completeSync(state, exec);
3097
3097
  },
3098
3098
  suggest(context, prefix) {
3099
3099
  if (isAsync) return suggestAsync(context, prefix);
package/dist/index.cjs CHANGED
@@ -33,6 +33,7 @@ exports.conditional = require_constructs.conditional;
33
33
  exports.constant = require_primitives.constant;
34
34
  exports.createDeferredParseState = require_dependency.createDeferredParseState;
35
35
  exports.createDependencySourceState = require_dependency.createDependencySourceState;
36
+ exports.createParserContext = require_parser.createParserContext;
36
37
  exports.createPendingDependencySourceState = require_dependency.createPendingDependencySourceState;
37
38
  exports.deduplicateDocEntries = require_doc.deduplicateDocEntries;
38
39
  exports.deduplicateDocFragments = require_doc.deduplicateDocFragments;
package/dist/index.d.cts CHANGED
@@ -8,8 +8,8 @@ import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, Grou
8
8
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.cjs";
9
9
  import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, PendingDependencySourceState, ResolvedDependency, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker } from "./dependency.cjs";
10
10
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, option, passThrough } from "./primitives.cjs";
11
- import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.cjs";
11
+ import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.cjs";
12
12
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
13
13
  import { ParserValuePlaceholder, SourceContext } from "./context.cjs";
14
14
  import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
package/dist/index.d.ts CHANGED
@@ -8,8 +8,8 @@ import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, Grou
8
8
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
9
9
  import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, PendingDependencySourceState, ResolvedDependency, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker } from "./dependency.js";
10
10
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, option, passThrough } from "./primitives.js";
11
- import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
11
+ import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
12
12
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
13
13
  import { ParserValuePlaceholder, SourceContext } from "./context.js";
14
14
  import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import { WithDefaultError, map, multiple, nonEmpty, optional, withDefault } from
9
9
  import { ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
10
10
  import { checkBooleanOption, checkEnumOption, choice, cidr, domain, email, float, hostname, integer, ip, ipv4, ipv6, isValueParser, locale, macAddress, port, portRange, socketAddress, string, url, uuid } from "./valueparser.js";
11
11
  import { argument, command, constant, fail, flag, option, passThrough } from "./primitives.js";
12
- import { getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
12
+ import { createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
13
13
  import { RunParserError, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
14
14
 
15
- export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
15
+ export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createParserContext, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };