@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.
- package/dist/constructs.cjs +71 -71
- package/dist/constructs.js +71 -71
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/modifiers.cjs +26 -26
- package/dist/modifiers.js +26 -26
- package/dist/parser.cjs +63 -18
- package/dist/parser.d.cts +93 -3
- package/dist/parser.d.ts +93 -3
- package/dist/parser.js +63 -19
- package/dist/primitives.cjs +12 -12
- package/dist/primitives.js +12 -12
- package/dist/valueparser.cjs +42 -11
- package/dist/valueparser.js +42 -11
- package/package.json +1 -1
package/dist/constructs.cjs
CHANGED
|
@@ -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 require_mode_dispatch.dispatchByMode(mode, () => syncParsers[i].complete(result.next.state), async () => {
|
|
279
|
-
const completeResult = await parsers[i].complete(result.next.state);
|
|
278
|
+
return require_mode_dispatch.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 require_dependency.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 require_dependency.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 && require_dependency.isPendingDependencySourceState(fieldState[0])) completed = fieldParser.complete(fieldState);
|
|
868
|
-
else if (fieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState)) completed = fieldParser.complete([fieldParser.initialState]);
|
|
867
|
+
if (Array.isArray(fieldState) && fieldState.length === 1 && require_dependency.isPendingDependencySourceState(fieldState[0])) completed = fieldParser.complete(fieldState, exec);
|
|
868
|
+
else if (fieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState)) completed = fieldParser.complete([fieldParser.initialState], exec);
|
|
869
869
|
else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
870
870
|
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
871
|
-
completed = fieldParser.complete([pendingState]);
|
|
871
|
+
completed = fieldParser.complete([pendingState], exec);
|
|
872
872
|
} else if (fieldState != null && !Array.isArray(fieldState) && !require_dependency.isDependencySourceState(fieldState) && (require_dependency.isWrappedDependencySource(fieldParser) || require_dependency.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 && require_dependency.isPendingDependencySourceState(fieldState[0])) completed = await fieldParser.complete(fieldState);
|
|
889
|
-
else if (fieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState)) completed = await fieldParser.complete([fieldParser.initialState]);
|
|
888
|
+
if (Array.isArray(fieldState) && fieldState.length === 1 && require_dependency.isPendingDependencySourceState(fieldState[0])) completed = await fieldParser.complete(fieldState, exec);
|
|
889
|
+
else if (fieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState)) completed = await fieldParser.complete([fieldParser.initialState], exec);
|
|
890
890
|
else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
891
891
|
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
892
|
-
completed = await fieldParser.complete([pendingState]);
|
|
892
|
+
completed = await fieldParser.complete([pendingState], exec);
|
|
893
893
|
} else if (fieldState != null && !Array.isArray(fieldState) && !require_dependency.isDependencySourceState(fieldState) && (require_dependency.isWrappedDependencySource(fieldParser) || require_dependency.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 require_mode_dispatch.dispatchByMode(combinedMode, () => parseSync(context), () => parseAsync(context));
|
|
1240
1240
|
},
|
|
1241
|
-
complete(state) {
|
|
1241
|
+
complete(state, exec) {
|
|
1242
1242
|
return require_mode_dispatch.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 && require_dependency.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 && require_dependency.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 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
1259
1259
|
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
1260
|
-
const completed = fieldParser.complete([pendingState]);
|
|
1260
|
+
const completed = fieldParser.complete([pendingState], exec);
|
|
1261
1261
|
if (require_dependency.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) && !require_dependency.isDependencySourceState(fieldState) && (require_dependency.isWrappedDependencySource(fieldParser) || require_dependency.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 && require_dependency.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 && require_dependency.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 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
1335
1335
|
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
1336
|
-
const completed = await fieldParser.complete([pendingState]);
|
|
1336
|
+
const completed = await fieldParser.complete([pendingState], exec);
|
|
1337
1337
|
if (require_dependency.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) && !require_dependency.isDependencySourceState(fieldState) && (require_dependency.isWrappedDependencySource(fieldParser) || require_dependency.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 require_mode_dispatch.dispatchByMode(combinedMode, () => parseSync(context), () => parseAsync(context));
|
|
1634
1634
|
},
|
|
1635
|
-
complete(state) {
|
|
1635
|
+
complete(state, exec) {
|
|
1636
1636
|
return require_mode_dispatch.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 && require_dependency.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 && require_dependency.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 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1649
1649
|
const pendingState = elementParser[require_dependency.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 && require_dependency.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 && require_dependency.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 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1712
1712
|
const pendingState = elementParser[require_dependency.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 require_dependency.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 require_dependency.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 require_dependency.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 require_dependency.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 require_mode_dispatch.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);
|