@optique/core 0.10.0-dev.305 → 0.10.0-dev.309
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 +36 -49
- package/dist/constructs.js +37 -50
- 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;
|
|
@@ -640,6 +640,28 @@ function isPlainObject(value) {
|
|
|
640
640
|
return proto === Object.prototype || proto === null;
|
|
641
641
|
}
|
|
642
642
|
/**
|
|
643
|
+
* Collects dependency values for a DeferredParseState from the registry.
|
|
644
|
+
* Returns the collected values array, or null if any required dependency
|
|
645
|
+
* is missing (and no default is available).
|
|
646
|
+
*/
|
|
647
|
+
function collectDependencyValues(deferredState, registry) {
|
|
648
|
+
const depIds = deferredState.dependencyIds;
|
|
649
|
+
if (depIds && depIds.length > 0) {
|
|
650
|
+
const defaults = deferredState.defaultValues;
|
|
651
|
+
const dependencyValues = [];
|
|
652
|
+
for (let i = 0; i < depIds.length; i++) {
|
|
653
|
+
const depId$1 = depIds[i];
|
|
654
|
+
if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
655
|
+
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
656
|
+
else return null;
|
|
657
|
+
}
|
|
658
|
+
return dependencyValues;
|
|
659
|
+
}
|
|
660
|
+
const depId = deferredState.dependencyId;
|
|
661
|
+
if (registry.has(depId)) return registry.get(depId);
|
|
662
|
+
return null;
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
643
665
|
* Recursively resolves DeferredParseState objects found anywhere in the state tree.
|
|
644
666
|
* Returns the resolved state (sync version).
|
|
645
667
|
*
|
|
@@ -656,29 +678,11 @@ function resolveDeferred(state, registry) {
|
|
|
656
678
|
if (state === null || state === void 0) return state;
|
|
657
679
|
if (require_dependency.isDeferredParseState(state)) {
|
|
658
680
|
const deferredState = state;
|
|
659
|
-
const
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
for (let i = 0; i < depIds.length; i++) {
|
|
665
|
-
const depId$1 = depIds[i];
|
|
666
|
-
if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
667
|
-
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
668
|
-
else return deferredState.preliminaryResult;
|
|
669
|
-
}
|
|
670
|
-
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
671
|
-
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
672
|
-
return reParseResult;
|
|
673
|
-
}
|
|
674
|
-
const depId = deferredState.dependencyId;
|
|
675
|
-
if (registry.has(depId)) {
|
|
676
|
-
const dependencyValue = registry.get(depId);
|
|
677
|
-
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
678
|
-
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
679
|
-
return reParseResult;
|
|
680
|
-
}
|
|
681
|
-
return deferredState.preliminaryResult;
|
|
681
|
+
const dependencyValue = collectDependencyValues(deferredState, registry);
|
|
682
|
+
if (dependencyValue === null) return deferredState.preliminaryResult;
|
|
683
|
+
const reParseResult = deferredState.parser[require_dependency.parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
684
|
+
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
685
|
+
return reParseResult;
|
|
682
686
|
}
|
|
683
687
|
if (require_dependency.isDependencySourceState(state)) return state;
|
|
684
688
|
if (Array.isArray(state)) return state.map((item) => resolveDeferred(item, registry));
|
|
@@ -711,27 +715,10 @@ async function resolveDeferredAsync(state, registry) {
|
|
|
711
715
|
if (state === null || state === void 0) return state;
|
|
712
716
|
if (require_dependency.isDeferredParseState(state)) {
|
|
713
717
|
const deferredState = state;
|
|
714
|
-
const
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
const dependencyValues = [];
|
|
719
|
-
for (let i = 0; i < depIds.length; i++) {
|
|
720
|
-
const depId$1 = depIds[i];
|
|
721
|
-
if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
722
|
-
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
723
|
-
else return deferredState.preliminaryResult;
|
|
724
|
-
}
|
|
725
|
-
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
726
|
-
return Promise.resolve(reParseResult);
|
|
727
|
-
}
|
|
728
|
-
const depId = deferredState.dependencyId;
|
|
729
|
-
if (registry.has(depId)) {
|
|
730
|
-
const dependencyValue = registry.get(depId);
|
|
731
|
-
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
732
|
-
return Promise.resolve(reParseResult);
|
|
733
|
-
}
|
|
734
|
-
return deferredState.preliminaryResult;
|
|
718
|
+
const dependencyValue = collectDependencyValues(deferredState, registry);
|
|
719
|
+
if (dependencyValue === null) return deferredState.preliminaryResult;
|
|
720
|
+
const reParseResult = deferredState.parser[require_dependency.parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
721
|
+
return Promise.resolve(reParseResult);
|
|
735
722
|
}
|
|
736
723
|
if (require_dependency.isDependencySourceState(state)) return state;
|
|
737
724
|
if (Array.isArray(state)) return Promise.all(state.map((item) => resolveDeferredAsync(item, registry)));
|
|
@@ -928,7 +915,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
928
915
|
preCompletedState[fieldKey] = completed;
|
|
929
916
|
preCompletedKeys.add(fieldKey);
|
|
930
917
|
} else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
931
|
-
const pendingState = fieldParser[require_dependency.
|
|
918
|
+
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
932
919
|
const completed = fieldParser.complete([pendingState]);
|
|
933
920
|
if (require_dependency.isDependencySourceState(completed)) {
|
|
934
921
|
preCompletedState[fieldKey] = completed;
|
|
@@ -979,7 +966,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
979
966
|
preCompletedState[fieldKey] = completed;
|
|
980
967
|
preCompletedKeys.add(fieldKey);
|
|
981
968
|
} else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
982
|
-
const pendingState = fieldParser[require_dependency.
|
|
969
|
+
const pendingState = fieldParser[require_dependency.wrappedDependencySourceMarker];
|
|
983
970
|
const completed = await fieldParser.complete([pendingState]);
|
|
984
971
|
if (require_dependency.isDependencySourceState(completed)) {
|
|
985
972
|
preCompletedState[fieldKey] = completed;
|
|
@@ -1242,7 +1229,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1242
1229
|
const completed = elementParser.complete([elementParser.initialState]);
|
|
1243
1230
|
preCompletedState[i] = completed;
|
|
1244
1231
|
} else if (elementState === void 0 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1245
|
-
const pendingState = elementParser[require_dependency.
|
|
1232
|
+
const pendingState = elementParser[require_dependency.wrappedDependencySourceMarker];
|
|
1246
1233
|
const completed = elementParser.complete([pendingState]);
|
|
1247
1234
|
preCompletedState[i] = completed;
|
|
1248
1235
|
} else preCompletedState[i] = elementState;
|
|
@@ -1291,7 +1278,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1291
1278
|
const completed = await elementParser.complete([elementParser.initialState]);
|
|
1292
1279
|
preCompletedState[i] = completed;
|
|
1293
1280
|
} else if (elementState === void 0 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1294
|
-
const pendingState = elementParser[require_dependency.
|
|
1281
|
+
const pendingState = elementParser[require_dependency.wrappedDependencySourceMarker];
|
|
1295
1282
|
const completed = await elementParser.complete([pendingState]);
|
|
1296
1283
|
preCompletedState[i] = completed;
|
|
1297
1284
|
} 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;
|
|
@@ -640,6 +640,28 @@ function isPlainObject(value) {
|
|
|
640
640
|
return proto === Object.prototype || proto === null;
|
|
641
641
|
}
|
|
642
642
|
/**
|
|
643
|
+
* Collects dependency values for a DeferredParseState from the registry.
|
|
644
|
+
* Returns the collected values array, or null if any required dependency
|
|
645
|
+
* is missing (and no default is available).
|
|
646
|
+
*/
|
|
647
|
+
function collectDependencyValues(deferredState, registry) {
|
|
648
|
+
const depIds = deferredState.dependencyIds;
|
|
649
|
+
if (depIds && depIds.length > 0) {
|
|
650
|
+
const defaults = deferredState.defaultValues;
|
|
651
|
+
const dependencyValues = [];
|
|
652
|
+
for (let i = 0; i < depIds.length; i++) {
|
|
653
|
+
const depId$1 = depIds[i];
|
|
654
|
+
if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
655
|
+
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
656
|
+
else return null;
|
|
657
|
+
}
|
|
658
|
+
return dependencyValues;
|
|
659
|
+
}
|
|
660
|
+
const depId = deferredState.dependencyId;
|
|
661
|
+
if (registry.has(depId)) return registry.get(depId);
|
|
662
|
+
return null;
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
643
665
|
* Recursively resolves DeferredParseState objects found anywhere in the state tree.
|
|
644
666
|
* Returns the resolved state (sync version).
|
|
645
667
|
*
|
|
@@ -656,29 +678,11 @@ function resolveDeferred(state, registry) {
|
|
|
656
678
|
if (state === null || state === void 0) return state;
|
|
657
679
|
if (isDeferredParseState(state)) {
|
|
658
680
|
const deferredState = state;
|
|
659
|
-
const
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
for (let i = 0; i < depIds.length; i++) {
|
|
665
|
-
const depId$1 = depIds[i];
|
|
666
|
-
if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
667
|
-
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
668
|
-
else return deferredState.preliminaryResult;
|
|
669
|
-
}
|
|
670
|
-
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
671
|
-
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
672
|
-
return reParseResult;
|
|
673
|
-
}
|
|
674
|
-
const depId = deferredState.dependencyId;
|
|
675
|
-
if (registry.has(depId)) {
|
|
676
|
-
const dependencyValue = registry.get(depId);
|
|
677
|
-
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
678
|
-
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
679
|
-
return reParseResult;
|
|
680
|
-
}
|
|
681
|
-
return deferredState.preliminaryResult;
|
|
681
|
+
const dependencyValue = collectDependencyValues(deferredState, registry);
|
|
682
|
+
if (dependencyValue === null) return deferredState.preliminaryResult;
|
|
683
|
+
const reParseResult = deferredState.parser[parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
684
|
+
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
685
|
+
return reParseResult;
|
|
682
686
|
}
|
|
683
687
|
if (isDependencySourceState(state)) return state;
|
|
684
688
|
if (Array.isArray(state)) return state.map((item) => resolveDeferred(item, registry));
|
|
@@ -711,27 +715,10 @@ async function resolveDeferredAsync(state, registry) {
|
|
|
711
715
|
if (state === null || state === void 0) return state;
|
|
712
716
|
if (isDeferredParseState(state)) {
|
|
713
717
|
const deferredState = state;
|
|
714
|
-
const
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
const dependencyValues = [];
|
|
719
|
-
for (let i = 0; i < depIds.length; i++) {
|
|
720
|
-
const depId$1 = depIds[i];
|
|
721
|
-
if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
722
|
-
else if (defaults && i < defaults.length) dependencyValues.push(defaults[i]);
|
|
723
|
-
else return deferredState.preliminaryResult;
|
|
724
|
-
}
|
|
725
|
-
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
726
|
-
return Promise.resolve(reParseResult);
|
|
727
|
-
}
|
|
728
|
-
const depId = deferredState.dependencyId;
|
|
729
|
-
if (registry.has(depId)) {
|
|
730
|
-
const dependencyValue = registry.get(depId);
|
|
731
|
-
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
732
|
-
return Promise.resolve(reParseResult);
|
|
733
|
-
}
|
|
734
|
-
return deferredState.preliminaryResult;
|
|
718
|
+
const dependencyValue = collectDependencyValues(deferredState, registry);
|
|
719
|
+
if (dependencyValue === null) return deferredState.preliminaryResult;
|
|
720
|
+
const reParseResult = deferredState.parser[parseWithDependency](deferredState.rawInput, dependencyValue);
|
|
721
|
+
return Promise.resolve(reParseResult);
|
|
735
722
|
}
|
|
736
723
|
if (isDependencySourceState(state)) return state;
|
|
737
724
|
if (Array.isArray(state)) return Promise.all(state.map((item) => resolveDeferredAsync(item, registry)));
|
|
@@ -928,7 +915,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
928
915
|
preCompletedState[fieldKey] = completed;
|
|
929
916
|
preCompletedKeys.add(fieldKey);
|
|
930
917
|
} else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
|
|
931
|
-
const pendingState = fieldParser[
|
|
918
|
+
const pendingState = fieldParser[wrappedDependencySourceMarker];
|
|
932
919
|
const completed = fieldParser.complete([pendingState]);
|
|
933
920
|
if (isDependencySourceState(completed)) {
|
|
934
921
|
preCompletedState[fieldKey] = completed;
|
|
@@ -979,7 +966,7 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
979
966
|
preCompletedState[fieldKey] = completed;
|
|
980
967
|
preCompletedKeys.add(fieldKey);
|
|
981
968
|
} else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
|
|
982
|
-
const pendingState = fieldParser[
|
|
969
|
+
const pendingState = fieldParser[wrappedDependencySourceMarker];
|
|
983
970
|
const completed = await fieldParser.complete([pendingState]);
|
|
984
971
|
if (isDependencySourceState(completed)) {
|
|
985
972
|
preCompletedState[fieldKey] = completed;
|
|
@@ -1242,7 +1229,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1242
1229
|
const completed = elementParser.complete([elementParser.initialState]);
|
|
1243
1230
|
preCompletedState[i] = completed;
|
|
1244
1231
|
} else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
|
|
1245
|
-
const pendingState = elementParser[
|
|
1232
|
+
const pendingState = elementParser[wrappedDependencySourceMarker];
|
|
1246
1233
|
const completed = elementParser.complete([pendingState]);
|
|
1247
1234
|
preCompletedState[i] = completed;
|
|
1248
1235
|
} else preCompletedState[i] = elementState;
|
|
@@ -1291,7 +1278,7 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1291
1278
|
const completed = await elementParser.complete([elementParser.initialState]);
|
|
1292
1279
|
preCompletedState[i] = completed;
|
|
1293
1280
|
} else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
|
|
1294
|
-
const pendingState = elementParser[
|
|
1281
|
+
const pendingState = elementParser[wrappedDependencySourceMarker];
|
|
1295
1282
|
const completed = await elementParser.complete([pendingState]);
|
|
1296
1283
|
preCompletedState[i] = completed;
|
|
1297
1284
|
} else preCompletedState[i] = elementState;
|