@optique/core 0.10.0-dev.303 → 0.10.0-dev.307
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 +25 -23
- package/dist/constructs.js +26 -24
- package/dist/dependency.cjs +86 -86
- package/dist/dependency.d.cts +35 -35
- package/dist/dependency.d.ts +35 -35
- package/dist/dependency.js +74 -74
- package/dist/index.cjs +12 -12
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/modifiers.cjs +11 -11
- package/dist/modifiers.js +12 -12
- package/dist/primitives.cjs +10 -10
- package/dist/primitives.js +11 -11
- package/package.json +1 -1
package/dist/constructs.cjs
CHANGED
|
@@ -616,7 +616,7 @@ async function* suggestObjectAsync(context, prefix, parserPairs) {
|
|
|
616
616
|
function collectDependencies(state, registry) {
|
|
617
617
|
if (state === null || state === void 0) return;
|
|
618
618
|
if (require_dependency.isDependencySourceState(state)) {
|
|
619
|
-
const depId = state[require_dependency.
|
|
619
|
+
const depId = state[require_dependency.dependencyId];
|
|
620
620
|
const result = state.result;
|
|
621
621
|
if (result.success) registry.set(depId, result.value);
|
|
622
622
|
return;
|
|
@@ -667,14 +667,14 @@ function resolveDeferred(state, registry) {
|
|
|
667
667
|
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
668
668
|
else return deferredState.preliminaryResult;
|
|
669
669
|
}
|
|
670
|
-
const reParseResult = parser[require_dependency.
|
|
670
|
+
const reParseResult = parser[require_dependency.parseWithDependency](deferredState.rawInput, dependencyValues);
|
|
671
671
|
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
672
672
|
return reParseResult;
|
|
673
673
|
}
|
|
674
674
|
const depId = deferredState.dependencyId;
|
|
675
675
|
if (registry.has(depId)) {
|
|
676
676
|
const dependencyValue = registry.get(depId);
|
|
677
|
-
const reParseResult = parser[require_dependency.
|
|
677
|
+
const reParseResult = parser[require_dependency.parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
678
678
|
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
679
679
|
return reParseResult;
|
|
680
680
|
}
|
|
@@ -722,13 +722,13 @@ async function resolveDeferredAsync(state, registry) {
|
|
|
722
722
|
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
723
723
|
else return deferredState.preliminaryResult;
|
|
724
724
|
}
|
|
725
|
-
const reParseResult = parser[require_dependency.
|
|
725
|
+
const reParseResult = parser[require_dependency.parseWithDependency](deferredState.rawInput, dependencyValues);
|
|
726
726
|
return Promise.resolve(reParseResult);
|
|
727
727
|
}
|
|
728
728
|
const depId = deferredState.dependencyId;
|
|
729
729
|
if (registry.has(depId)) {
|
|
730
730
|
const dependencyValue = registry.get(depId);
|
|
731
|
-
const reParseResult = parser[require_dependency.
|
|
731
|
+
const reParseResult = parser[require_dependency.parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
732
732
|
return Promise.resolve(reParseResult);
|
|
733
733
|
}
|
|
734
734
|
return deferredState.preliminaryResult;
|
|
@@ -914,6 +914,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
914
914
|
complete(state) {
|
|
915
915
|
if (!isAsync) {
|
|
916
916
|
const preCompletedState = {};
|
|
917
|
+
const preCompletedKeys = /* @__PURE__ */ new Set();
|
|
917
918
|
for (const field of parserKeys) {
|
|
918
919
|
const fieldKey = field;
|
|
919
920
|
const fieldState = state[fieldKey];
|
|
@@ -921,14 +922,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
921
922
|
if (Array.isArray(fieldState) && fieldState.length === 1 && require_dependency.isPendingDependencySourceState(fieldState[0])) {
|
|
922
923
|
const completed = fieldParser.complete(fieldState);
|
|
923
924
|
preCompletedState[fieldKey] = completed;
|
|
925
|
+
preCompletedKeys.add(fieldKey);
|
|
924
926
|
} else if (fieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState)) {
|
|
925
927
|
const completed = fieldParser.complete([fieldParser.initialState]);
|
|
926
928
|
preCompletedState[fieldKey] = completed;
|
|
929
|
+
preCompletedKeys.add(fieldKey);
|
|
927
930
|
} else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
928
|
-
const pendingState = fieldParser[require_dependency.
|
|
931
|
+
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
929
932
|
const completed = fieldParser.complete([pendingState]);
|
|
930
|
-
if (require_dependency.isDependencySourceState(completed))
|
|
931
|
-
|
|
933
|
+
if (require_dependency.isDependencySourceState(completed)) {
|
|
934
|
+
preCompletedState[fieldKey] = completed;
|
|
935
|
+
preCompletedKeys.add(fieldKey);
|
|
936
|
+
} else preCompletedState[fieldKey] = fieldState;
|
|
932
937
|
} else preCompletedState[fieldKey] = fieldState;
|
|
933
938
|
}
|
|
934
939
|
const resolvedState = resolveDeferredParseStates(preCompletedState);
|
|
@@ -937,11 +942,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
937
942
|
const fieldKey = field;
|
|
938
943
|
const fieldResolvedState = resolvedState[fieldKey];
|
|
939
944
|
const fieldParser = parsers[field];
|
|
940
|
-
|
|
941
|
-
const wasPreCompletedCase1 = Array.isArray(originalFieldState) && originalFieldState.length === 1 && require_dependency.isPendingDependencySourceState(originalFieldState[0]);
|
|
942
|
-
const wasPreCompletedCase2 = originalFieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState);
|
|
943
|
-
const wasPreCompletedCase3 = originalFieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser);
|
|
944
|
-
if (require_dependency.isDependencySourceState(fieldResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
945
|
+
if (require_dependency.isDependencySourceState(fieldResolvedState) && preCompletedKeys.has(fieldKey)) {
|
|
945
946
|
const depResult = fieldResolvedState.result;
|
|
946
947
|
if (depResult.success) result[fieldKey] = depResult.value;
|
|
947
948
|
else return {
|
|
@@ -964,6 +965,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
964
965
|
}
|
|
965
966
|
return (async () => {
|
|
966
967
|
const preCompletedState = {};
|
|
968
|
+
const preCompletedKeys = /* @__PURE__ */ new Set();
|
|
967
969
|
for (const field of parserKeys) {
|
|
968
970
|
const fieldKey = field;
|
|
969
971
|
const fieldState = state[fieldKey];
|
|
@@ -971,14 +973,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
971
973
|
if (Array.isArray(fieldState) && fieldState.length === 1 && require_dependency.isPendingDependencySourceState(fieldState[0])) {
|
|
972
974
|
const completed = await fieldParser.complete(fieldState);
|
|
973
975
|
preCompletedState[fieldKey] = completed;
|
|
976
|
+
preCompletedKeys.add(fieldKey);
|
|
974
977
|
} else if (fieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState)) {
|
|
975
978
|
const completed = await fieldParser.complete([fieldParser.initialState]);
|
|
976
979
|
preCompletedState[fieldKey] = completed;
|
|
980
|
+
preCompletedKeys.add(fieldKey);
|
|
977
981
|
} else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
978
|
-
const pendingState = fieldParser[require_dependency.
|
|
982
|
+
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
979
983
|
const completed = await fieldParser.complete([pendingState]);
|
|
980
|
-
if (require_dependency.isDependencySourceState(completed))
|
|
981
|
-
|
|
984
|
+
if (require_dependency.isDependencySourceState(completed)) {
|
|
985
|
+
preCompletedState[fieldKey] = completed;
|
|
986
|
+
preCompletedKeys.add(fieldKey);
|
|
987
|
+
} else preCompletedState[fieldKey] = fieldState;
|
|
982
988
|
} else preCompletedState[fieldKey] = fieldState;
|
|
983
989
|
}
|
|
984
990
|
const resolvedState = await resolveDeferredParseStatesAsync(preCompletedState);
|
|
@@ -987,11 +993,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
987
993
|
const fieldKey = field;
|
|
988
994
|
const fieldResolvedState = resolvedState[fieldKey];
|
|
989
995
|
const fieldParser = parsers[field];
|
|
990
|
-
|
|
991
|
-
const wasPreCompletedCase1 = Array.isArray(originalFieldState) && originalFieldState.length === 1 && require_dependency.isPendingDependencySourceState(originalFieldState[0]);
|
|
992
|
-
const wasPreCompletedCase2 = originalFieldState === void 0 && require_dependency.isPendingDependencySourceState(fieldParser.initialState);
|
|
993
|
-
const wasPreCompletedCase3 = originalFieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser);
|
|
994
|
-
if (require_dependency.isDependencySourceState(fieldResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
996
|
+
if (require_dependency.isDependencySourceState(fieldResolvedState) && preCompletedKeys.has(fieldKey)) {
|
|
995
997
|
const depResult = fieldResolvedState.result;
|
|
996
998
|
if (depResult.success) result[fieldKey] = depResult.value;
|
|
997
999
|
else return {
|
|
@@ -1240,7 +1242,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1240
1242
|
const completed = elementParser.complete([elementParser.initialState]);
|
|
1241
1243
|
preCompletedState[i] = completed;
|
|
1242
1244
|
} else if (elementState === void 0 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1243
|
-
const pendingState = elementParser[require_dependency.
|
|
1245
|
+
const pendingState = elementParser[require_dependency.wrappedDependencySourceMarker];
|
|
1244
1246
|
const completed = elementParser.complete([pendingState]);
|
|
1245
1247
|
preCompletedState[i] = completed;
|
|
1246
1248
|
} else preCompletedState[i] = elementState;
|
|
@@ -1289,7 +1291,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1289
1291
|
const completed = await elementParser.complete([elementParser.initialState]);
|
|
1290
1292
|
preCompletedState[i] = completed;
|
|
1291
1293
|
} else if (elementState === void 0 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1292
|
-
const pendingState = elementParser[require_dependency.
|
|
1294
|
+
const pendingState = elementParser[require_dependency.wrappedDependencySourceMarker];
|
|
1293
1295
|
const completed = await elementParser.complete([pendingState]);
|
|
1294
1296
|
preCompletedState[i] = completed;
|
|
1295
1297
|
} else preCompletedState[i] = elementState;
|
package/dist/constructs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { message, optionName, values } from "./message.js";
|
|
2
|
-
import {
|
|
2
|
+
import { DependencyRegistry, dependencyId, isDeferredParseState, isDependencySourceState, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, wrappedDependencySourceMarker } from "./dependency.js";
|
|
3
3
|
import { extractArgumentMetavars, extractCommandNames, extractOptionNames } from "./usage.js";
|
|
4
4
|
import { createErrorWithSuggestions, deduplicateSuggestions } from "./suggestion.js";
|
|
5
5
|
|
|
@@ -616,7 +616,7 @@ async function* suggestObjectAsync(context, prefix, parserPairs) {
|
|
|
616
616
|
function collectDependencies(state, registry) {
|
|
617
617
|
if (state === null || state === void 0) return;
|
|
618
618
|
if (isDependencySourceState(state)) {
|
|
619
|
-
const depId = state[
|
|
619
|
+
const depId = state[dependencyId];
|
|
620
620
|
const result = state.result;
|
|
621
621
|
if (result.success) registry.set(depId, result.value);
|
|
622
622
|
return;
|
|
@@ -667,14 +667,14 @@ function resolveDeferred(state, registry) {
|
|
|
667
667
|
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
668
668
|
else return deferredState.preliminaryResult;
|
|
669
669
|
}
|
|
670
|
-
const reParseResult = parser[
|
|
670
|
+
const reParseResult = parser[parseWithDependency](deferredState.rawInput, dependencyValues);
|
|
671
671
|
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
672
672
|
return reParseResult;
|
|
673
673
|
}
|
|
674
674
|
const depId = deferredState.dependencyId;
|
|
675
675
|
if (registry.has(depId)) {
|
|
676
676
|
const dependencyValue = registry.get(depId);
|
|
677
|
-
const reParseResult = parser[
|
|
677
|
+
const reParseResult = parser[parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
678
678
|
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
679
679
|
return reParseResult;
|
|
680
680
|
}
|
|
@@ -722,13 +722,13 @@ async function resolveDeferredAsync(state, registry) {
|
|
|
722
722
|
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
723
723
|
else return deferredState.preliminaryResult;
|
|
724
724
|
}
|
|
725
|
-
const reParseResult = parser[
|
|
725
|
+
const reParseResult = parser[parseWithDependency](deferredState.rawInput, dependencyValues);
|
|
726
726
|
return Promise.resolve(reParseResult);
|
|
727
727
|
}
|
|
728
728
|
const depId = deferredState.dependencyId;
|
|
729
729
|
if (registry.has(depId)) {
|
|
730
730
|
const dependencyValue = registry.get(depId);
|
|
731
|
-
const reParseResult = parser[
|
|
731
|
+
const reParseResult = parser[parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
732
732
|
return Promise.resolve(reParseResult);
|
|
733
733
|
}
|
|
734
734
|
return deferredState.preliminaryResult;
|
|
@@ -914,6 +914,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
914
914
|
complete(state) {
|
|
915
915
|
if (!isAsync) {
|
|
916
916
|
const preCompletedState = {};
|
|
917
|
+
const preCompletedKeys = /* @__PURE__ */ new Set();
|
|
917
918
|
for (const field of parserKeys) {
|
|
918
919
|
const fieldKey = field;
|
|
919
920
|
const fieldState = state[fieldKey];
|
|
@@ -921,14 +922,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
921
922
|
if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) {
|
|
922
923
|
const completed = fieldParser.complete(fieldState);
|
|
923
924
|
preCompletedState[fieldKey] = completed;
|
|
925
|
+
preCompletedKeys.add(fieldKey);
|
|
924
926
|
} else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) {
|
|
925
927
|
const completed = fieldParser.complete([fieldParser.initialState]);
|
|
926
928
|
preCompletedState[fieldKey] = completed;
|
|
929
|
+
preCompletedKeys.add(fieldKey);
|
|
927
930
|
} else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
|
|
928
|
-
const pendingState = fieldParser[
|
|
931
|
+
const pendingState = fieldParser[wrappedDependencySourceMarker];
|
|
929
932
|
const completed = fieldParser.complete([pendingState]);
|
|
930
|
-
if (isDependencySourceState(completed))
|
|
931
|
-
|
|
933
|
+
if (isDependencySourceState(completed)) {
|
|
934
|
+
preCompletedState[fieldKey] = completed;
|
|
935
|
+
preCompletedKeys.add(fieldKey);
|
|
936
|
+
} else preCompletedState[fieldKey] = fieldState;
|
|
932
937
|
} else preCompletedState[fieldKey] = fieldState;
|
|
933
938
|
}
|
|
934
939
|
const resolvedState = resolveDeferredParseStates(preCompletedState);
|
|
@@ -937,11 +942,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
937
942
|
const fieldKey = field;
|
|
938
943
|
const fieldResolvedState = resolvedState[fieldKey];
|
|
939
944
|
const fieldParser = parsers[field];
|
|
940
|
-
|
|
941
|
-
const wasPreCompletedCase1 = Array.isArray(originalFieldState) && originalFieldState.length === 1 && isPendingDependencySourceState(originalFieldState[0]);
|
|
942
|
-
const wasPreCompletedCase2 = originalFieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState);
|
|
943
|
-
const wasPreCompletedCase3 = originalFieldState === void 0 && isWrappedDependencySource(fieldParser);
|
|
944
|
-
if (isDependencySourceState(fieldResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
945
|
+
if (isDependencySourceState(fieldResolvedState) && preCompletedKeys.has(fieldKey)) {
|
|
945
946
|
const depResult = fieldResolvedState.result;
|
|
946
947
|
if (depResult.success) result[fieldKey] = depResult.value;
|
|
947
948
|
else return {
|
|
@@ -964,6 +965,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
964
965
|
}
|
|
965
966
|
return (async () => {
|
|
966
967
|
const preCompletedState = {};
|
|
968
|
+
const preCompletedKeys = /* @__PURE__ */ new Set();
|
|
967
969
|
for (const field of parserKeys) {
|
|
968
970
|
const fieldKey = field;
|
|
969
971
|
const fieldState = state[fieldKey];
|
|
@@ -971,14 +973,18 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
971
973
|
if (Array.isArray(fieldState) && fieldState.length === 1 && isPendingDependencySourceState(fieldState[0])) {
|
|
972
974
|
const completed = await fieldParser.complete(fieldState);
|
|
973
975
|
preCompletedState[fieldKey] = completed;
|
|
976
|
+
preCompletedKeys.add(fieldKey);
|
|
974
977
|
} else if (fieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState)) {
|
|
975
978
|
const completed = await fieldParser.complete([fieldParser.initialState]);
|
|
976
979
|
preCompletedState[fieldKey] = completed;
|
|
980
|
+
preCompletedKeys.add(fieldKey);
|
|
977
981
|
} else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
|
|
978
|
-
const pendingState = fieldParser[
|
|
982
|
+
const pendingState = fieldParser[wrappedDependencySourceMarker];
|
|
979
983
|
const completed = await fieldParser.complete([pendingState]);
|
|
980
|
-
if (isDependencySourceState(completed))
|
|
981
|
-
|
|
984
|
+
if (isDependencySourceState(completed)) {
|
|
985
|
+
preCompletedState[fieldKey] = completed;
|
|
986
|
+
preCompletedKeys.add(fieldKey);
|
|
987
|
+
} else preCompletedState[fieldKey] = fieldState;
|
|
982
988
|
} else preCompletedState[fieldKey] = fieldState;
|
|
983
989
|
}
|
|
984
990
|
const resolvedState = await resolveDeferredParseStatesAsync(preCompletedState);
|
|
@@ -987,11 +993,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
987
993
|
const fieldKey = field;
|
|
988
994
|
const fieldResolvedState = resolvedState[fieldKey];
|
|
989
995
|
const fieldParser = parsers[field];
|
|
990
|
-
|
|
991
|
-
const wasPreCompletedCase1 = Array.isArray(originalFieldState) && originalFieldState.length === 1 && isPendingDependencySourceState(originalFieldState[0]);
|
|
992
|
-
const wasPreCompletedCase2 = originalFieldState === void 0 && isPendingDependencySourceState(fieldParser.initialState);
|
|
993
|
-
const wasPreCompletedCase3 = originalFieldState === void 0 && isWrappedDependencySource(fieldParser);
|
|
994
|
-
if (isDependencySourceState(fieldResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
996
|
+
if (isDependencySourceState(fieldResolvedState) && preCompletedKeys.has(fieldKey)) {
|
|
995
997
|
const depResult = fieldResolvedState.result;
|
|
996
998
|
if (depResult.success) result[fieldKey] = depResult.value;
|
|
997
999
|
else return {
|
|
@@ -1240,7 +1242,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1240
1242
|
const completed = elementParser.complete([elementParser.initialState]);
|
|
1241
1243
|
preCompletedState[i] = completed;
|
|
1242
1244
|
} else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
|
|
1243
|
-
const pendingState = elementParser[
|
|
1245
|
+
const pendingState = elementParser[wrappedDependencySourceMarker];
|
|
1244
1246
|
const completed = elementParser.complete([pendingState]);
|
|
1245
1247
|
preCompletedState[i] = completed;
|
|
1246
1248
|
} else preCompletedState[i] = elementState;
|
|
@@ -1289,7 +1291,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1289
1291
|
const completed = await elementParser.complete([elementParser.initialState]);
|
|
1290
1292
|
preCompletedState[i] = completed;
|
|
1291
1293
|
} else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
|
|
1292
|
-
const pendingState = elementParser[
|
|
1294
|
+
const pendingState = elementParser[wrappedDependencySourceMarker];
|
|
1293
1295
|
const completed = await elementParser.complete([pendingState]);
|
|
1294
1296
|
preCompletedState[i] = completed;
|
|
1295
1297
|
} else preCompletedState[i] = elementState;
|