@optique/core 0.10.0-dev.293 → 0.10.0-dev.294
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 +144 -50
- package/dist/constructs.js +144 -50
- package/dist/dependency.cjs +15 -0
- package/dist/dependency.d.cts +23 -2
- package/dist/dependency.d.ts +23 -2
- package/dist/dependency.js +15 -1
- 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/primitives.cjs +2 -1
- package/dist/primitives.js +2 -1
- package/package.json +1 -1
package/dist/constructs.cjs
CHANGED
|
@@ -541,32 +541,145 @@ async function* suggestObjectAsync(context, prefix, parserPairs) {
|
|
|
541
541
|
* @returns The field states with deferred states resolved to their actual values
|
|
542
542
|
* @internal
|
|
543
543
|
*/
|
|
544
|
+
/**
|
|
545
|
+
* Recursively collects dependency values from DependencySourceState objects
|
|
546
|
+
* found anywhere in the state tree.
|
|
547
|
+
*/
|
|
548
|
+
function collectDependencies(state, registry) {
|
|
549
|
+
if (state === null || state === void 0) return;
|
|
550
|
+
if (require_dependency.isDependencySourceState(state)) {
|
|
551
|
+
const depId = state[require_dependency.DependencyId];
|
|
552
|
+
const result = state.result;
|
|
553
|
+
if (result.success) registry.set(depId, result.value);
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
if (Array.isArray(state)) {
|
|
557
|
+
for (const item of state) collectDependencies(item, registry);
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
560
|
+
if (typeof state === "object" && !require_dependency.isDeferredParseState(state)) for (const key of Reflect.ownKeys(state)) collectDependencies(state[key], registry);
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Checks if a value is a plain object (created with `{}` or `Object.create(null)`).
|
|
564
|
+
* Class instances like `Temporal.PlainDate`, `URL`, `Date`, etc. return false.
|
|
565
|
+
* This is used to determine whether to recursively traverse an object when
|
|
566
|
+
* resolving deferred parse states - we only want to traverse plain objects
|
|
567
|
+
* that are part of the parser state structure, not user values.
|
|
568
|
+
*/
|
|
569
|
+
function isPlainObject(value) {
|
|
570
|
+
if (typeof value !== "object" || value === null) return false;
|
|
571
|
+
const proto = Object.getPrototypeOf(value);
|
|
572
|
+
return proto === Object.prototype || proto === null;
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Recursively resolves DeferredParseState objects found anywhere in the state tree.
|
|
576
|
+
* Returns the resolved state (sync version).
|
|
577
|
+
*
|
|
578
|
+
* Only traverses:
|
|
579
|
+
* - DeferredParseState (to resolve it)
|
|
580
|
+
* - DependencySourceState (skipped, kept as-is)
|
|
581
|
+
* - Arrays (to find nested deferred states)
|
|
582
|
+
* - Plain objects (to find nested deferred states in parser state structures)
|
|
583
|
+
*
|
|
584
|
+
* Does NOT traverse class instances (e.g., Temporal.PlainDate, URL) since these
|
|
585
|
+
* are user values that should be preserved as-is.
|
|
586
|
+
*/
|
|
587
|
+
function resolveDeferred(state, registry) {
|
|
588
|
+
if (state === null || state === void 0) return state;
|
|
589
|
+
if (require_dependency.isDeferredParseState(state)) {
|
|
590
|
+
const deferredState = state;
|
|
591
|
+
const parser = deferredState.parser;
|
|
592
|
+
const depIds = deferredState.dependencyIds;
|
|
593
|
+
if (depIds && depIds.length > 0) {
|
|
594
|
+
const dependencyValues = [];
|
|
595
|
+
let allDepsAvailable = true;
|
|
596
|
+
for (const depId$1 of depIds) if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
597
|
+
else {
|
|
598
|
+
allDepsAvailable = false;
|
|
599
|
+
break;
|
|
600
|
+
}
|
|
601
|
+
if (allDepsAvailable) {
|
|
602
|
+
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
603
|
+
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
604
|
+
return reParseResult;
|
|
605
|
+
}
|
|
606
|
+
return deferredState.preliminaryResult;
|
|
607
|
+
}
|
|
608
|
+
const depId = deferredState.dependencyId;
|
|
609
|
+
if (registry.has(depId)) {
|
|
610
|
+
const dependencyValue = registry.get(depId);
|
|
611
|
+
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
612
|
+
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
613
|
+
return reParseResult;
|
|
614
|
+
}
|
|
615
|
+
return deferredState.preliminaryResult;
|
|
616
|
+
}
|
|
617
|
+
if (require_dependency.isDependencySourceState(state)) return state;
|
|
618
|
+
if (Array.isArray(state)) return state.map((item) => resolveDeferred(item, registry));
|
|
619
|
+
if (isPlainObject(state)) {
|
|
620
|
+
const resolved = {};
|
|
621
|
+
for (const key of Reflect.ownKeys(state)) resolved[key] = resolveDeferred(state[key], registry);
|
|
622
|
+
return resolved;
|
|
623
|
+
}
|
|
624
|
+
return state;
|
|
625
|
+
}
|
|
544
626
|
function resolveDeferredParseStates(fieldStates) {
|
|
545
627
|
const registry = new require_dependency.DependencyRegistry();
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
628
|
+
collectDependencies(fieldStates, registry);
|
|
629
|
+
return resolveDeferred(fieldStates, registry);
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* Recursively resolves DeferredParseState objects found anywhere in the state tree.
|
|
633
|
+
* Returns the resolved state (async version).
|
|
634
|
+
*
|
|
635
|
+
* Only traverses:
|
|
636
|
+
* - DeferredParseState (to resolve it)
|
|
637
|
+
* - DependencySourceState (skipped, kept as-is)
|
|
638
|
+
* - Arrays (to find nested deferred states)
|
|
639
|
+
* - Plain objects (to find nested deferred states in parser state structures)
|
|
640
|
+
*
|
|
641
|
+
* Does NOT traverse class instances (e.g., Temporal.PlainDate, URL) since these
|
|
642
|
+
* are user values that should be preserved as-is.
|
|
643
|
+
*/
|
|
644
|
+
async function resolveDeferredAsync(state, registry) {
|
|
645
|
+
if (state === null || state === void 0) return state;
|
|
646
|
+
if (require_dependency.isDeferredParseState(state)) {
|
|
647
|
+
const deferredState = state;
|
|
648
|
+
const parser = deferredState.parser;
|
|
649
|
+
const depIds = deferredState.dependencyIds;
|
|
650
|
+
if (depIds && depIds.length > 0) {
|
|
651
|
+
const dependencyValues = [];
|
|
652
|
+
let allDepsAvailable = true;
|
|
653
|
+
for (const depId$1 of depIds) if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
654
|
+
else {
|
|
655
|
+
allDepsAvailable = false;
|
|
656
|
+
break;
|
|
657
|
+
}
|
|
658
|
+
if (allDepsAvailable) {
|
|
659
|
+
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
660
|
+
return Promise.resolve(reParseResult);
|
|
661
|
+
}
|
|
662
|
+
return deferredState.preliminaryResult;
|
|
552
663
|
}
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
const deferredState = fieldState;
|
|
559
|
-
const depId = deferredState.dependencyId;
|
|
560
|
-
if (registry.has(depId)) {
|
|
561
|
-
const dependencyValue = registry.get(depId);
|
|
562
|
-
const parser = deferredState.parser;
|
|
563
|
-
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
564
|
-
if (reParseResult instanceof Promise) resolvedStates[key] = deferredState.preliminaryResult;
|
|
565
|
-
else resolvedStates[key] = reParseResult;
|
|
566
|
-
} else resolvedStates[key] = deferredState.preliminaryResult;
|
|
664
|
+
const depId = deferredState.dependencyId;
|
|
665
|
+
if (registry.has(depId)) {
|
|
666
|
+
const dependencyValue = registry.get(depId);
|
|
667
|
+
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
668
|
+
return Promise.resolve(reParseResult);
|
|
567
669
|
}
|
|
670
|
+
return deferredState.preliminaryResult;
|
|
671
|
+
}
|
|
672
|
+
if (require_dependency.isDependencySourceState(state)) return state;
|
|
673
|
+
if (Array.isArray(state)) return Promise.all(state.map((item) => resolveDeferredAsync(item, registry)));
|
|
674
|
+
if (isPlainObject(state)) {
|
|
675
|
+
const resolved = {};
|
|
676
|
+
const keys = Reflect.ownKeys(state);
|
|
677
|
+
await Promise.all(keys.map(async (key) => {
|
|
678
|
+
resolved[key] = await resolveDeferredAsync(state[key], registry);
|
|
679
|
+
}));
|
|
680
|
+
return resolved;
|
|
568
681
|
}
|
|
569
|
-
return
|
|
682
|
+
return state;
|
|
570
683
|
}
|
|
571
684
|
/**
|
|
572
685
|
* Async version of resolveDeferredParseStates for async parsers.
|
|
@@ -574,29 +687,8 @@ function resolveDeferredParseStates(fieldStates) {
|
|
|
574
687
|
*/
|
|
575
688
|
async function resolveDeferredParseStatesAsync(fieldStates) {
|
|
576
689
|
const registry = new require_dependency.DependencyRegistry();
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
if (require_dependency.isDependencySourceState(fieldState)) {
|
|
580
|
-
const depId = fieldState[require_dependency.DependencyId];
|
|
581
|
-
const result = fieldState.result;
|
|
582
|
-
if (result.success) registry.set(depId, result.value);
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
const resolvedStates = { ...fieldStates };
|
|
586
|
-
for (const key of Reflect.ownKeys(fieldStates)) {
|
|
587
|
-
const fieldState = fieldStates[key];
|
|
588
|
-
if (require_dependency.isDeferredParseState(fieldState)) {
|
|
589
|
-
const deferredState = fieldState;
|
|
590
|
-
const depId = deferredState.dependencyId;
|
|
591
|
-
if (registry.has(depId)) {
|
|
592
|
-
const dependencyValue = registry.get(depId);
|
|
593
|
-
const parser = deferredState.parser;
|
|
594
|
-
const reParseResult = parser[require_dependency.ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
595
|
-
resolvedStates[key] = await Promise.resolve(reParseResult);
|
|
596
|
-
} else resolvedStates[key] = deferredState.preliminaryResult;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
return resolvedStates;
|
|
690
|
+
collectDependencies(fieldStates, registry);
|
|
691
|
+
return await resolveDeferredAsync(fieldStates, registry);
|
|
600
692
|
}
|
|
601
693
|
function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
602
694
|
const label = typeof labelOrParsers === "string" ? labelOrParsers : void 0;
|
|
@@ -1220,15 +1312,15 @@ function merge(...args) {
|
|
|
1220
1312
|
return parseSync(context);
|
|
1221
1313
|
},
|
|
1222
1314
|
complete(state) {
|
|
1223
|
-
const extractCompleteState = (parser, index) => {
|
|
1315
|
+
const extractCompleteState = (parser, resolvedState, index) => {
|
|
1224
1316
|
if (parser.initialState === void 0) {
|
|
1225
1317
|
const key = `__parser_${index}`;
|
|
1226
|
-
if (
|
|
1318
|
+
if (resolvedState && typeof resolvedState === "object" && key in resolvedState) return resolvedState[key];
|
|
1227
1319
|
return void 0;
|
|
1228
1320
|
} else if (parser.initialState && typeof parser.initialState === "object") {
|
|
1229
|
-
if (
|
|
1321
|
+
if (resolvedState && typeof resolvedState === "object") {
|
|
1230
1322
|
const extractedState = {};
|
|
1231
|
-
for (const field in parser.initialState) extractedState[field] = field in
|
|
1323
|
+
for (const field in parser.initialState) extractedState[field] = field in resolvedState ? resolvedState[field] : parser.initialState[field];
|
|
1232
1324
|
return extractedState;
|
|
1233
1325
|
}
|
|
1234
1326
|
return parser.initialState;
|
|
@@ -1236,10 +1328,11 @@ function merge(...args) {
|
|
|
1236
1328
|
return parser.initialState;
|
|
1237
1329
|
};
|
|
1238
1330
|
if (!isAsync) {
|
|
1331
|
+
const resolvedState = resolveDeferredParseStates(state);
|
|
1239
1332
|
const object$1 = {};
|
|
1240
1333
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
1241
1334
|
const parser = syncParsers[i];
|
|
1242
|
-
const parserState = extractCompleteState(parser, i);
|
|
1335
|
+
const parserState = extractCompleteState(parser, resolvedState, i);
|
|
1243
1336
|
const result = parser.complete(parserState);
|
|
1244
1337
|
if (!result.success) return result;
|
|
1245
1338
|
for (const field in result.value) object$1[field] = result.value[field];
|
|
@@ -1250,10 +1343,11 @@ function merge(...args) {
|
|
|
1250
1343
|
};
|
|
1251
1344
|
}
|
|
1252
1345
|
return (async () => {
|
|
1346
|
+
const resolvedState = await resolveDeferredParseStatesAsync(state);
|
|
1253
1347
|
const object$1 = {};
|
|
1254
1348
|
for (let i = 0; i < parsers.length; i++) {
|
|
1255
1349
|
const parser = parsers[i];
|
|
1256
|
-
const parserState = extractCompleteState(parser, i);
|
|
1350
|
+
const parserState = extractCompleteState(parser, resolvedState, i);
|
|
1257
1351
|
const result = await parser.complete(parserState);
|
|
1258
1352
|
if (!result.success) return result;
|
|
1259
1353
|
for (const field in result.value) object$1[field] = result.value[field];
|
package/dist/constructs.js
CHANGED
|
@@ -541,32 +541,145 @@ async function* suggestObjectAsync(context, prefix, parserPairs) {
|
|
|
541
541
|
* @returns The field states with deferred states resolved to their actual values
|
|
542
542
|
* @internal
|
|
543
543
|
*/
|
|
544
|
+
/**
|
|
545
|
+
* Recursively collects dependency values from DependencySourceState objects
|
|
546
|
+
* found anywhere in the state tree.
|
|
547
|
+
*/
|
|
548
|
+
function collectDependencies(state, registry) {
|
|
549
|
+
if (state === null || state === void 0) return;
|
|
550
|
+
if (isDependencySourceState(state)) {
|
|
551
|
+
const depId = state[DependencyId];
|
|
552
|
+
const result = state.result;
|
|
553
|
+
if (result.success) registry.set(depId, result.value);
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
if (Array.isArray(state)) {
|
|
557
|
+
for (const item of state) collectDependencies(item, registry);
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
560
|
+
if (typeof state === "object" && !isDeferredParseState(state)) for (const key of Reflect.ownKeys(state)) collectDependencies(state[key], registry);
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Checks if a value is a plain object (created with `{}` or `Object.create(null)`).
|
|
564
|
+
* Class instances like `Temporal.PlainDate`, `URL`, `Date`, etc. return false.
|
|
565
|
+
* This is used to determine whether to recursively traverse an object when
|
|
566
|
+
* resolving deferred parse states - we only want to traverse plain objects
|
|
567
|
+
* that are part of the parser state structure, not user values.
|
|
568
|
+
*/
|
|
569
|
+
function isPlainObject(value) {
|
|
570
|
+
if (typeof value !== "object" || value === null) return false;
|
|
571
|
+
const proto = Object.getPrototypeOf(value);
|
|
572
|
+
return proto === Object.prototype || proto === null;
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Recursively resolves DeferredParseState objects found anywhere in the state tree.
|
|
576
|
+
* Returns the resolved state (sync version).
|
|
577
|
+
*
|
|
578
|
+
* Only traverses:
|
|
579
|
+
* - DeferredParseState (to resolve it)
|
|
580
|
+
* - DependencySourceState (skipped, kept as-is)
|
|
581
|
+
* - Arrays (to find nested deferred states)
|
|
582
|
+
* - Plain objects (to find nested deferred states in parser state structures)
|
|
583
|
+
*
|
|
584
|
+
* Does NOT traverse class instances (e.g., Temporal.PlainDate, URL) since these
|
|
585
|
+
* are user values that should be preserved as-is.
|
|
586
|
+
*/
|
|
587
|
+
function resolveDeferred(state, registry) {
|
|
588
|
+
if (state === null || state === void 0) return state;
|
|
589
|
+
if (isDeferredParseState(state)) {
|
|
590
|
+
const deferredState = state;
|
|
591
|
+
const parser = deferredState.parser;
|
|
592
|
+
const depIds = deferredState.dependencyIds;
|
|
593
|
+
if (depIds && depIds.length > 0) {
|
|
594
|
+
const dependencyValues = [];
|
|
595
|
+
let allDepsAvailable = true;
|
|
596
|
+
for (const depId$1 of depIds) if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
597
|
+
else {
|
|
598
|
+
allDepsAvailable = false;
|
|
599
|
+
break;
|
|
600
|
+
}
|
|
601
|
+
if (allDepsAvailable) {
|
|
602
|
+
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
603
|
+
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
604
|
+
return reParseResult;
|
|
605
|
+
}
|
|
606
|
+
return deferredState.preliminaryResult;
|
|
607
|
+
}
|
|
608
|
+
const depId = deferredState.dependencyId;
|
|
609
|
+
if (registry.has(depId)) {
|
|
610
|
+
const dependencyValue = registry.get(depId);
|
|
611
|
+
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
612
|
+
if (reParseResult instanceof Promise) return deferredState.preliminaryResult;
|
|
613
|
+
return reParseResult;
|
|
614
|
+
}
|
|
615
|
+
return deferredState.preliminaryResult;
|
|
616
|
+
}
|
|
617
|
+
if (isDependencySourceState(state)) return state;
|
|
618
|
+
if (Array.isArray(state)) return state.map((item) => resolveDeferred(item, registry));
|
|
619
|
+
if (isPlainObject(state)) {
|
|
620
|
+
const resolved = {};
|
|
621
|
+
for (const key of Reflect.ownKeys(state)) resolved[key] = resolveDeferred(state[key], registry);
|
|
622
|
+
return resolved;
|
|
623
|
+
}
|
|
624
|
+
return state;
|
|
625
|
+
}
|
|
544
626
|
function resolveDeferredParseStates(fieldStates) {
|
|
545
627
|
const registry = new DependencyRegistry();
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
628
|
+
collectDependencies(fieldStates, registry);
|
|
629
|
+
return resolveDeferred(fieldStates, registry);
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* Recursively resolves DeferredParseState objects found anywhere in the state tree.
|
|
633
|
+
* Returns the resolved state (async version).
|
|
634
|
+
*
|
|
635
|
+
* Only traverses:
|
|
636
|
+
* - DeferredParseState (to resolve it)
|
|
637
|
+
* - DependencySourceState (skipped, kept as-is)
|
|
638
|
+
* - Arrays (to find nested deferred states)
|
|
639
|
+
* - Plain objects (to find nested deferred states in parser state structures)
|
|
640
|
+
*
|
|
641
|
+
* Does NOT traverse class instances (e.g., Temporal.PlainDate, URL) since these
|
|
642
|
+
* are user values that should be preserved as-is.
|
|
643
|
+
*/
|
|
644
|
+
async function resolveDeferredAsync(state, registry) {
|
|
645
|
+
if (state === null || state === void 0) return state;
|
|
646
|
+
if (isDeferredParseState(state)) {
|
|
647
|
+
const deferredState = state;
|
|
648
|
+
const parser = deferredState.parser;
|
|
649
|
+
const depIds = deferredState.dependencyIds;
|
|
650
|
+
if (depIds && depIds.length > 0) {
|
|
651
|
+
const dependencyValues = [];
|
|
652
|
+
let allDepsAvailable = true;
|
|
653
|
+
for (const depId$1 of depIds) if (registry.has(depId$1)) dependencyValues.push(registry.get(depId$1));
|
|
654
|
+
else {
|
|
655
|
+
allDepsAvailable = false;
|
|
656
|
+
break;
|
|
657
|
+
}
|
|
658
|
+
if (allDepsAvailable) {
|
|
659
|
+
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValues);
|
|
660
|
+
return Promise.resolve(reParseResult);
|
|
661
|
+
}
|
|
662
|
+
return deferredState.preliminaryResult;
|
|
552
663
|
}
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
const deferredState = fieldState;
|
|
559
|
-
const depId = deferredState.dependencyId;
|
|
560
|
-
if (registry.has(depId)) {
|
|
561
|
-
const dependencyValue = registry.get(depId);
|
|
562
|
-
const parser = deferredState.parser;
|
|
563
|
-
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
564
|
-
if (reParseResult instanceof Promise) resolvedStates[key] = deferredState.preliminaryResult;
|
|
565
|
-
else resolvedStates[key] = reParseResult;
|
|
566
|
-
} else resolvedStates[key] = deferredState.preliminaryResult;
|
|
664
|
+
const depId = deferredState.dependencyId;
|
|
665
|
+
if (registry.has(depId)) {
|
|
666
|
+
const dependencyValue = registry.get(depId);
|
|
667
|
+
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
668
|
+
return Promise.resolve(reParseResult);
|
|
567
669
|
}
|
|
670
|
+
return deferredState.preliminaryResult;
|
|
671
|
+
}
|
|
672
|
+
if (isDependencySourceState(state)) return state;
|
|
673
|
+
if (Array.isArray(state)) return Promise.all(state.map((item) => resolveDeferredAsync(item, registry)));
|
|
674
|
+
if (isPlainObject(state)) {
|
|
675
|
+
const resolved = {};
|
|
676
|
+
const keys = Reflect.ownKeys(state);
|
|
677
|
+
await Promise.all(keys.map(async (key) => {
|
|
678
|
+
resolved[key] = await resolveDeferredAsync(state[key], registry);
|
|
679
|
+
}));
|
|
680
|
+
return resolved;
|
|
568
681
|
}
|
|
569
|
-
return
|
|
682
|
+
return state;
|
|
570
683
|
}
|
|
571
684
|
/**
|
|
572
685
|
* Async version of resolveDeferredParseStates for async parsers.
|
|
@@ -574,29 +687,8 @@ function resolveDeferredParseStates(fieldStates) {
|
|
|
574
687
|
*/
|
|
575
688
|
async function resolveDeferredParseStatesAsync(fieldStates) {
|
|
576
689
|
const registry = new DependencyRegistry();
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
if (isDependencySourceState(fieldState)) {
|
|
580
|
-
const depId = fieldState[DependencyId];
|
|
581
|
-
const result = fieldState.result;
|
|
582
|
-
if (result.success) registry.set(depId, result.value);
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
const resolvedStates = { ...fieldStates };
|
|
586
|
-
for (const key of Reflect.ownKeys(fieldStates)) {
|
|
587
|
-
const fieldState = fieldStates[key];
|
|
588
|
-
if (isDeferredParseState(fieldState)) {
|
|
589
|
-
const deferredState = fieldState;
|
|
590
|
-
const depId = deferredState.dependencyId;
|
|
591
|
-
if (registry.has(depId)) {
|
|
592
|
-
const dependencyValue = registry.get(depId);
|
|
593
|
-
const parser = deferredState.parser;
|
|
594
|
-
const reParseResult = parser[ParseWithDependency](deferredState.rawInput, dependencyValue);
|
|
595
|
-
resolvedStates[key] = await Promise.resolve(reParseResult);
|
|
596
|
-
} else resolvedStates[key] = deferredState.preliminaryResult;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
return resolvedStates;
|
|
690
|
+
collectDependencies(fieldStates, registry);
|
|
691
|
+
return await resolveDeferredAsync(fieldStates, registry);
|
|
600
692
|
}
|
|
601
693
|
function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
602
694
|
const label = typeof labelOrParsers === "string" ? labelOrParsers : void 0;
|
|
@@ -1220,15 +1312,15 @@ function merge(...args) {
|
|
|
1220
1312
|
return parseSync(context);
|
|
1221
1313
|
},
|
|
1222
1314
|
complete(state) {
|
|
1223
|
-
const extractCompleteState = (parser, index) => {
|
|
1315
|
+
const extractCompleteState = (parser, resolvedState, index) => {
|
|
1224
1316
|
if (parser.initialState === void 0) {
|
|
1225
1317
|
const key = `__parser_${index}`;
|
|
1226
|
-
if (
|
|
1318
|
+
if (resolvedState && typeof resolvedState === "object" && key in resolvedState) return resolvedState[key];
|
|
1227
1319
|
return void 0;
|
|
1228
1320
|
} else if (parser.initialState && typeof parser.initialState === "object") {
|
|
1229
|
-
if (
|
|
1321
|
+
if (resolvedState && typeof resolvedState === "object") {
|
|
1230
1322
|
const extractedState = {};
|
|
1231
|
-
for (const field in parser.initialState) extractedState[field] = field in
|
|
1323
|
+
for (const field in parser.initialState) extractedState[field] = field in resolvedState ? resolvedState[field] : parser.initialState[field];
|
|
1232
1324
|
return extractedState;
|
|
1233
1325
|
}
|
|
1234
1326
|
return parser.initialState;
|
|
@@ -1236,10 +1328,11 @@ function merge(...args) {
|
|
|
1236
1328
|
return parser.initialState;
|
|
1237
1329
|
};
|
|
1238
1330
|
if (!isAsync) {
|
|
1331
|
+
const resolvedState = resolveDeferredParseStates(state);
|
|
1239
1332
|
const object$1 = {};
|
|
1240
1333
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
1241
1334
|
const parser = syncParsers[i];
|
|
1242
|
-
const parserState = extractCompleteState(parser, i);
|
|
1335
|
+
const parserState = extractCompleteState(parser, resolvedState, i);
|
|
1243
1336
|
const result = parser.complete(parserState);
|
|
1244
1337
|
if (!result.success) return result;
|
|
1245
1338
|
for (const field in result.value) object$1[field] = result.value[field];
|
|
@@ -1250,10 +1343,11 @@ function merge(...args) {
|
|
|
1250
1343
|
};
|
|
1251
1344
|
}
|
|
1252
1345
|
return (async () => {
|
|
1346
|
+
const resolvedState = await resolveDeferredParseStatesAsync(state);
|
|
1253
1347
|
const object$1 = {};
|
|
1254
1348
|
for (let i = 0; i < parsers.length; i++) {
|
|
1255
1349
|
const parser = parsers[i];
|
|
1256
|
-
const parserState = extractCompleteState(parser, i);
|
|
1350
|
+
const parserState = extractCompleteState(parser, resolvedState, i);
|
|
1257
1351
|
const result = await parser.complete(parserState);
|
|
1258
1352
|
if (!result.success) return result;
|
|
1259
1353
|
for (const field in result.value) object$1[field] = result.value[field];
|
package/dist/dependency.cjs
CHANGED
|
@@ -20,6 +20,12 @@ const DerivedValueParserMarker = Symbol.for("@optique/core/dependency/DerivedVal
|
|
|
20
20
|
*/
|
|
21
21
|
const DependencyId = Symbol.for("@optique/core/dependency/DependencyId");
|
|
22
22
|
/**
|
|
23
|
+
* A unique symbol used to store multiple dependency IDs on derived parsers
|
|
24
|
+
* that depend on multiple sources (created via {@link deriveFrom}).
|
|
25
|
+
* @since 0.10.0
|
|
26
|
+
*/
|
|
27
|
+
const DependencyIds = Symbol.for("@optique/core/dependency/DependencyIds");
|
|
28
|
+
/**
|
|
23
29
|
* A unique symbol used to access the parseWithDependency method on derived parsers.
|
|
24
30
|
* @since 0.10.0
|
|
25
31
|
*/
|
|
@@ -181,11 +187,13 @@ function determineFactoryModeForDeriveFrom(options) {
|
|
|
181
187
|
return parser.$mode === "async";
|
|
182
188
|
}
|
|
183
189
|
function createSyncDerivedFromParser(sourceId, options) {
|
|
190
|
+
const allDependencyIds = options.dependencies.map((dep) => dep[DependencyId]);
|
|
184
191
|
return {
|
|
185
192
|
$mode: "sync",
|
|
186
193
|
metavar: options.metavar,
|
|
187
194
|
[DerivedValueParserMarker]: true,
|
|
188
195
|
[DependencyId]: sourceId,
|
|
196
|
+
[DependencyIds]: allDependencyIds,
|
|
189
197
|
parse(input) {
|
|
190
198
|
const sourceValues = options.defaultValues();
|
|
191
199
|
const derivedParser = options.factory(...sourceValues);
|
|
@@ -212,11 +220,13 @@ function createSyncDerivedFromParser(sourceId, options) {
|
|
|
212
220
|
* factory returns an async parser.
|
|
213
221
|
*/
|
|
214
222
|
function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
|
|
223
|
+
const allDependencyIds = options.dependencies.map((dep) => dep[DependencyId]);
|
|
215
224
|
return {
|
|
216
225
|
$mode: "async",
|
|
217
226
|
metavar: options.metavar,
|
|
218
227
|
[DerivedValueParserMarker]: true,
|
|
219
228
|
[DependencyId]: sourceId,
|
|
229
|
+
[DependencyIds]: allDependencyIds,
|
|
220
230
|
parse(input) {
|
|
221
231
|
const sourceValues = options.defaultValues();
|
|
222
232
|
const derivedParser = options.factory(...sourceValues);
|
|
@@ -243,11 +253,13 @@ function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
|
|
|
243
253
|
* sources are async but the factory returns a sync parser.
|
|
244
254
|
*/
|
|
245
255
|
function createAsyncDerivedFromParserFromSyncFactory(sourceId, options) {
|
|
256
|
+
const allDependencyIds = options.dependencies.map((dep) => dep[DependencyId]);
|
|
246
257
|
return {
|
|
247
258
|
$mode: "async",
|
|
248
259
|
metavar: options.metavar,
|
|
249
260
|
[DerivedValueParserMarker]: true,
|
|
250
261
|
[DependencyId]: sourceId,
|
|
262
|
+
[DependencyIds]: allDependencyIds,
|
|
251
263
|
parse(input) {
|
|
252
264
|
const sourceValues = options.defaultValues();
|
|
253
265
|
const derivedParser = options.factory(...sourceValues);
|
|
@@ -403,11 +415,13 @@ function isDeferredParseState(value) {
|
|
|
403
415
|
* @since 0.10.0
|
|
404
416
|
*/
|
|
405
417
|
function createDeferredParseState(rawInput, parser, preliminaryResult) {
|
|
418
|
+
const multipleIds = DependencyIds in parser ? parser[DependencyIds] : void 0;
|
|
406
419
|
return {
|
|
407
420
|
[DeferredParseMarker]: true,
|
|
408
421
|
rawInput,
|
|
409
422
|
parser,
|
|
410
423
|
dependencyId: parser[DependencyId],
|
|
424
|
+
dependencyIds: multipleIds,
|
|
411
425
|
preliminaryResult
|
|
412
426
|
};
|
|
413
427
|
}
|
|
@@ -510,6 +524,7 @@ function formatDependencyError(error) {
|
|
|
510
524
|
//#endregion
|
|
511
525
|
exports.DeferredParseMarker = DeferredParseMarker;
|
|
512
526
|
exports.DependencyId = DependencyId;
|
|
527
|
+
exports.DependencyIds = DependencyIds;
|
|
513
528
|
exports.DependencyRegistry = DependencyRegistry;
|
|
514
529
|
exports.DependencySourceMarker = DependencySourceMarker;
|
|
515
530
|
exports.DependencySourceStateMarker = DependencySourceStateMarker;
|
package/dist/dependency.d.cts
CHANGED
|
@@ -24,6 +24,12 @@ declare const DerivedValueParserMarker: unique symbol;
|
|
|
24
24
|
* @since 0.10.0
|
|
25
25
|
*/
|
|
26
26
|
declare const DependencyId: unique symbol;
|
|
27
|
+
/**
|
|
28
|
+
* A unique symbol used to store multiple dependency IDs on derived parsers
|
|
29
|
+
* that depend on multiple sources (created via {@link deriveFrom}).
|
|
30
|
+
* @since 0.10.0
|
|
31
|
+
*/
|
|
32
|
+
declare const DependencyIds: unique symbol;
|
|
27
33
|
/**
|
|
28
34
|
* A unique symbol used to access the parseWithDependency method on derived parsers.
|
|
29
35
|
* @since 0.10.0
|
|
@@ -308,9 +314,19 @@ interface DerivedValueParser<M extends Mode = "sync", T = unknown, S = unknown>
|
|
|
308
314
|
readonly [DerivedValueParserMarker]: true;
|
|
309
315
|
/**
|
|
310
316
|
* The unique identifier of the dependency source this parser depends on.
|
|
317
|
+
* For parsers created with {@link deriveFrom} that have multiple dependencies,
|
|
318
|
+
* this is set to the first dependency's ID for backwards compatibility.
|
|
311
319
|
* @internal
|
|
312
320
|
*/
|
|
313
321
|
readonly [DependencyId]: symbol;
|
|
322
|
+
/**
|
|
323
|
+
* The unique identifiers of all dependency sources this parser depends on.
|
|
324
|
+
* Present only for parsers created with {@link deriveFrom} that have multiple
|
|
325
|
+
* dependencies. If present, this takes precedence over {@link DependencyId}
|
|
326
|
+
* during dependency resolution.
|
|
327
|
+
* @internal
|
|
328
|
+
*/
|
|
329
|
+
readonly [DependencyIds]?: readonly symbol[];
|
|
314
330
|
/**
|
|
315
331
|
* Parses the input using the actual dependency value instead of the default.
|
|
316
332
|
* This method is used during dependency resolution in `complete()`.
|
|
@@ -460,9 +476,14 @@ interface DeferredParseState<T = unknown> {
|
|
|
460
476
|
*/
|
|
461
477
|
readonly parser: DerivedValueParser<Mode, T, unknown>;
|
|
462
478
|
/**
|
|
463
|
-
* The dependency ID that this parser depends on.
|
|
479
|
+
* The dependency ID that this parser depends on (for single-dependency parsers).
|
|
464
480
|
*/
|
|
465
481
|
readonly dependencyId: symbol;
|
|
482
|
+
/**
|
|
483
|
+
* The dependency IDs that this parser depends on (for multi-dependency parsers).
|
|
484
|
+
* If present, this is used instead of `dependencyId`.
|
|
485
|
+
*/
|
|
486
|
+
readonly dependencyIds?: readonly symbol[];
|
|
466
487
|
/**
|
|
467
488
|
* The preliminary parse result using the default dependency value.
|
|
468
489
|
* This is used as a fallback if dependency resolution is not needed
|
|
@@ -614,4 +635,4 @@ type DependencyError = {
|
|
|
614
635
|
*/
|
|
615
636
|
declare function formatDependencyError(error: DependencyError): Message;
|
|
616
637
|
//#endregion
|
|
617
|
-
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser };
|
|
638
|
+
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser };
|
package/dist/dependency.d.ts
CHANGED
|
@@ -24,6 +24,12 @@ declare const DerivedValueParserMarker: unique symbol;
|
|
|
24
24
|
* @since 0.10.0
|
|
25
25
|
*/
|
|
26
26
|
declare const DependencyId: unique symbol;
|
|
27
|
+
/**
|
|
28
|
+
* A unique symbol used to store multiple dependency IDs on derived parsers
|
|
29
|
+
* that depend on multiple sources (created via {@link deriveFrom}).
|
|
30
|
+
* @since 0.10.0
|
|
31
|
+
*/
|
|
32
|
+
declare const DependencyIds: unique symbol;
|
|
27
33
|
/**
|
|
28
34
|
* A unique symbol used to access the parseWithDependency method on derived parsers.
|
|
29
35
|
* @since 0.10.0
|
|
@@ -308,9 +314,19 @@ interface DerivedValueParser<M extends Mode = "sync", T = unknown, S = unknown>
|
|
|
308
314
|
readonly [DerivedValueParserMarker]: true;
|
|
309
315
|
/**
|
|
310
316
|
* The unique identifier of the dependency source this parser depends on.
|
|
317
|
+
* For parsers created with {@link deriveFrom} that have multiple dependencies,
|
|
318
|
+
* this is set to the first dependency's ID for backwards compatibility.
|
|
311
319
|
* @internal
|
|
312
320
|
*/
|
|
313
321
|
readonly [DependencyId]: symbol;
|
|
322
|
+
/**
|
|
323
|
+
* The unique identifiers of all dependency sources this parser depends on.
|
|
324
|
+
* Present only for parsers created with {@link deriveFrom} that have multiple
|
|
325
|
+
* dependencies. If present, this takes precedence over {@link DependencyId}
|
|
326
|
+
* during dependency resolution.
|
|
327
|
+
* @internal
|
|
328
|
+
*/
|
|
329
|
+
readonly [DependencyIds]?: readonly symbol[];
|
|
314
330
|
/**
|
|
315
331
|
* Parses the input using the actual dependency value instead of the default.
|
|
316
332
|
* This method is used during dependency resolution in `complete()`.
|
|
@@ -460,9 +476,14 @@ interface DeferredParseState<T = unknown> {
|
|
|
460
476
|
*/
|
|
461
477
|
readonly parser: DerivedValueParser<Mode, T, unknown>;
|
|
462
478
|
/**
|
|
463
|
-
* The dependency ID that this parser depends on.
|
|
479
|
+
* The dependency ID that this parser depends on (for single-dependency parsers).
|
|
464
480
|
*/
|
|
465
481
|
readonly dependencyId: symbol;
|
|
482
|
+
/**
|
|
483
|
+
* The dependency IDs that this parser depends on (for multi-dependency parsers).
|
|
484
|
+
* If present, this is used instead of `dependencyId`.
|
|
485
|
+
*/
|
|
486
|
+
readonly dependencyIds?: readonly symbol[];
|
|
466
487
|
/**
|
|
467
488
|
* The preliminary parse result using the default dependency value.
|
|
468
489
|
* This is used as a fallback if dependency resolution is not needed
|
|
@@ -614,4 +635,4 @@ type DependencyError = {
|
|
|
614
635
|
*/
|
|
615
636
|
declare function formatDependencyError(error: DependencyError): Message;
|
|
616
637
|
//#endregion
|
|
617
|
-
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser };
|
|
638
|
+
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser };
|
package/dist/dependency.js
CHANGED
|
@@ -19,6 +19,12 @@ const DerivedValueParserMarker = Symbol.for("@optique/core/dependency/DerivedVal
|
|
|
19
19
|
*/
|
|
20
20
|
const DependencyId = Symbol.for("@optique/core/dependency/DependencyId");
|
|
21
21
|
/**
|
|
22
|
+
* A unique symbol used to store multiple dependency IDs on derived parsers
|
|
23
|
+
* that depend on multiple sources (created via {@link deriveFrom}).
|
|
24
|
+
* @since 0.10.0
|
|
25
|
+
*/
|
|
26
|
+
const DependencyIds = Symbol.for("@optique/core/dependency/DependencyIds");
|
|
27
|
+
/**
|
|
22
28
|
* A unique symbol used to access the parseWithDependency method on derived parsers.
|
|
23
29
|
* @since 0.10.0
|
|
24
30
|
*/
|
|
@@ -180,11 +186,13 @@ function determineFactoryModeForDeriveFrom(options) {
|
|
|
180
186
|
return parser.$mode === "async";
|
|
181
187
|
}
|
|
182
188
|
function createSyncDerivedFromParser(sourceId, options) {
|
|
189
|
+
const allDependencyIds = options.dependencies.map((dep) => dep[DependencyId]);
|
|
183
190
|
return {
|
|
184
191
|
$mode: "sync",
|
|
185
192
|
metavar: options.metavar,
|
|
186
193
|
[DerivedValueParserMarker]: true,
|
|
187
194
|
[DependencyId]: sourceId,
|
|
195
|
+
[DependencyIds]: allDependencyIds,
|
|
188
196
|
parse(input) {
|
|
189
197
|
const sourceValues = options.defaultValues();
|
|
190
198
|
const derivedParser = options.factory(...sourceValues);
|
|
@@ -211,11 +219,13 @@ function createSyncDerivedFromParser(sourceId, options) {
|
|
|
211
219
|
* factory returns an async parser.
|
|
212
220
|
*/
|
|
213
221
|
function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
|
|
222
|
+
const allDependencyIds = options.dependencies.map((dep) => dep[DependencyId]);
|
|
214
223
|
return {
|
|
215
224
|
$mode: "async",
|
|
216
225
|
metavar: options.metavar,
|
|
217
226
|
[DerivedValueParserMarker]: true,
|
|
218
227
|
[DependencyId]: sourceId,
|
|
228
|
+
[DependencyIds]: allDependencyIds,
|
|
219
229
|
parse(input) {
|
|
220
230
|
const sourceValues = options.defaultValues();
|
|
221
231
|
const derivedParser = options.factory(...sourceValues);
|
|
@@ -242,11 +252,13 @@ function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
|
|
|
242
252
|
* sources are async but the factory returns a sync parser.
|
|
243
253
|
*/
|
|
244
254
|
function createAsyncDerivedFromParserFromSyncFactory(sourceId, options) {
|
|
255
|
+
const allDependencyIds = options.dependencies.map((dep) => dep[DependencyId]);
|
|
245
256
|
return {
|
|
246
257
|
$mode: "async",
|
|
247
258
|
metavar: options.metavar,
|
|
248
259
|
[DerivedValueParserMarker]: true,
|
|
249
260
|
[DependencyId]: sourceId,
|
|
261
|
+
[DependencyIds]: allDependencyIds,
|
|
250
262
|
parse(input) {
|
|
251
263
|
const sourceValues = options.defaultValues();
|
|
252
264
|
const derivedParser = options.factory(...sourceValues);
|
|
@@ -402,11 +414,13 @@ function isDeferredParseState(value) {
|
|
|
402
414
|
* @since 0.10.0
|
|
403
415
|
*/
|
|
404
416
|
function createDeferredParseState(rawInput, parser, preliminaryResult) {
|
|
417
|
+
const multipleIds = DependencyIds in parser ? parser[DependencyIds] : void 0;
|
|
405
418
|
return {
|
|
406
419
|
[DeferredParseMarker]: true,
|
|
407
420
|
rawInput,
|
|
408
421
|
parser,
|
|
409
422
|
dependencyId: parser[DependencyId],
|
|
423
|
+
dependencyIds: multipleIds,
|
|
410
424
|
preliminaryResult
|
|
411
425
|
};
|
|
412
426
|
}
|
|
@@ -507,4 +521,4 @@ function formatDependencyError(error) {
|
|
|
507
521
|
}
|
|
508
522
|
|
|
509
523
|
//#endregion
|
|
510
|
-
export { DeferredParseMarker, DependencyId, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser };
|
|
524
|
+
export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser };
|
package/dist/index.cjs
CHANGED
|
@@ -13,6 +13,7 @@ const require_facade = require('./facade.cjs');
|
|
|
13
13
|
|
|
14
14
|
exports.DeferredParseMarker = require_dependency.DeferredParseMarker;
|
|
15
15
|
exports.DependencyId = require_dependency.DependencyId;
|
|
16
|
+
exports.DependencyIds = require_dependency.DependencyIds;
|
|
16
17
|
exports.DependencyRegistry = require_dependency.DependencyRegistry;
|
|
17
18
|
exports.DependencySourceMarker = require_dependency.DependencySourceMarker;
|
|
18
19
|
exports.DependencySourceStateMarker = require_dependency.DependencySourceStateMarker;
|
package/dist/index.d.cts
CHANGED
|
@@ -5,9 +5,9 @@ import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, Doc
|
|
|
5
5
|
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, FloatOptions, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, choice, float, integer, isValueParser, locale, string, url, uuid } from "./valueparser.cjs";
|
|
6
6
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.cjs";
|
|
7
7
|
import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.cjs";
|
|
8
|
-
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.cjs";
|
|
8
|
+
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.cjs";
|
|
9
9
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.cjs";
|
|
10
10
|
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
11
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
|
|
12
12
|
import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.cjs";
|
|
13
|
-
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
13
|
+
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,9 +5,9 @@ import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, Doc
|
|
|
5
5
|
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, FloatOptions, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, choice, float, integer, isValueParser, locale, string, url, uuid } from "./valueparser.js";
|
|
6
6
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
7
7
|
import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.js";
|
|
8
|
-
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.js";
|
|
8
|
+
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.js";
|
|
9
9
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.js";
|
|
10
10
|
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
11
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
12
12
|
import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
|
|
13
|
-
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
13
|
+
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { commandLine, envVar, formatMessage, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
|
|
2
2
|
import { bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
3
|
-
import { DeferredParseMarker, DependencyId, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.js";
|
|
3
|
+
import { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.js";
|
|
4
4
|
import { extractArgumentMetavars, extractCommandNames, extractOptionNames, formatUsage, formatUsageTerm, normalizeUsage } from "./usage.js";
|
|
5
5
|
import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
6
6
|
import { formatDocPage } from "./doc.js";
|
|
@@ -11,4 +11,4 @@ import { argument, command, constant, flag, option, passThrough } from "./primit
|
|
|
11
11
|
import { getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
|
|
12
12
|
import { RunError, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
|
|
13
13
|
|
|
14
|
-
export { DeferredParseMarker, DependencyId, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, DuplicateOptionError, ParseWithDependency, RunError, RunParserError, WithDefaultError, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
14
|
+
export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, DuplicateOptionError, ParseWithDependency, RunError, RunParserError, WithDefaultError, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/primitives.cjs
CHANGED
|
@@ -229,7 +229,8 @@ function option(...args) {
|
|
|
229
229
|
consumed: context.buffer.slice(0, 1)
|
|
230
230
|
};
|
|
231
231
|
if (optionNames$1.includes(context.buffer[0])) {
|
|
232
|
-
|
|
232
|
+
const hasValue = valueParser != null ? context.state?.success || require_dependency.isDeferredParseState(context.state) || require_dependency.isDependencySourceState(context.state) : context.state?.success && context.state?.value;
|
|
233
|
+
if (hasValue) return {
|
|
233
234
|
success: false,
|
|
234
235
|
consumed: 1,
|
|
235
236
|
error: options.errors?.duplicate ? typeof options.errors.duplicate === "function" ? options.errors.duplicate(context.buffer[0]) : options.errors.duplicate : require_message.message`${require_message.optionName(context.buffer[0])} cannot be used multiple times.`
|
package/dist/primitives.js
CHANGED
|
@@ -229,7 +229,8 @@ function option(...args) {
|
|
|
229
229
|
consumed: context.buffer.slice(0, 1)
|
|
230
230
|
};
|
|
231
231
|
if (optionNames$1.includes(context.buffer[0])) {
|
|
232
|
-
|
|
232
|
+
const hasValue = valueParser != null ? context.state?.success || isDeferredParseState(context.state) || isDependencySourceState(context.state) : context.state?.success && context.state?.value;
|
|
233
|
+
if (hasValue) return {
|
|
233
234
|
success: false,
|
|
234
235
|
consumed: 1,
|
|
235
236
|
error: options.errors?.duplicate ? typeof options.errors.duplicate === "function" ? options.errors.duplicate(context.buffer[0]) : options.errors.duplicate : message`${optionName(context.buffer[0])} cannot be used multiple times.`
|