@optique/core 1.0.0-dev.1533 → 1.0.0-dev.1547
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 +53 -0
- package/dist/constructs.js +53 -0
- package/dist/facade.cjs +5 -3
- package/dist/facade.js +6 -4
- package/dist/index.cjs +0 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/modifiers.cjs +8 -0
- package/dist/modifiers.js +8 -0
- package/dist/parser.cjs +15 -4
- package/dist/parser.d.cts +38 -0
- package/dist/parser.d.ts +38 -0
- package/dist/parser.js +15 -4
- package/dist/primitives.cjs +19 -0
- package/dist/primitives.js +19 -0
- package/dist/usage.cjs +0 -194
- package/dist/usage.d.cts +1 -75
- package/dist/usage.d.ts +1 -75
- package/dist/usage.js +1 -192
- package/dist/validate.cjs +24 -13
- package/dist/validate.js +24 -13
- package/package.json +1 -1
package/dist/constructs.cjs
CHANGED
|
@@ -9,6 +9,43 @@ const require_suggestion = require('./suggestion.cjs');
|
|
|
9
9
|
const require_usage_internals = require('./usage-internals.cjs');
|
|
10
10
|
|
|
11
11
|
//#region src/constructs.ts
|
|
12
|
+
/**
|
|
13
|
+
* A shared empty set used as the `leadingNames` value for parsers that
|
|
14
|
+
* do not match any specific name at the first buffer position.
|
|
15
|
+
*/
|
|
16
|
+
const EMPTY_LEADING_NAMES = /* @__PURE__ */ new Set();
|
|
17
|
+
/**
|
|
18
|
+
* Computes the union of `leadingNames` from all given parsers.
|
|
19
|
+
* Used for alternative combinators (`or()`, `longestMatch()`) where all
|
|
20
|
+
* branches compete independently.
|
|
21
|
+
*/
|
|
22
|
+
function unionLeadingNames(parsers) {
|
|
23
|
+
const names = /* @__PURE__ */ new Set();
|
|
24
|
+
for (const p of parsers) for (const name of p.leadingNames) names.add(name);
|
|
25
|
+
return names.size === 0 ? EMPTY_LEADING_NAMES : names;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Computes `leadingNames` for shared-buffer compositions (`tuple()`,
|
|
29
|
+
* `object()`, `merge()`, `concat()`).
|
|
30
|
+
*
|
|
31
|
+
* Children are processed in descending priority order (matching the
|
|
32
|
+
* round-robin parse loop). Once a child with `acceptingAnyToken` is
|
|
33
|
+
* encountered, no lower-priority children can match at position 0, so
|
|
34
|
+
* their names are excluded.
|
|
35
|
+
*/
|
|
36
|
+
function sharedBufferLeadingNames(parsers) {
|
|
37
|
+
const sorted = parsers.toSorted((a, b) => b.priority - a.priority);
|
|
38
|
+
const names = /* @__PURE__ */ new Set();
|
|
39
|
+
let positionalBlocked = false;
|
|
40
|
+
for (const p of sorted) {
|
|
41
|
+
if (p.leadingNames) for (const name of p.leadingNames) {
|
|
42
|
+
if (positionalBlocked && !name.startsWith("-")) continue;
|
|
43
|
+
names.add(name);
|
|
44
|
+
}
|
|
45
|
+
if (p.acceptingAnyToken) positionalBlocked = true;
|
|
46
|
+
}
|
|
47
|
+
return names.size === 0 ? EMPTY_LEADING_NAMES : names;
|
|
48
|
+
}
|
|
12
49
|
const inheritParentAnnotationsKey = Symbol.for("@optique/core/inheritParentAnnotations");
|
|
13
50
|
/**
|
|
14
51
|
* Internal symbol for exposing field-level parser pairs from `object()`
|
|
@@ -463,6 +500,8 @@ function or(...args) {
|
|
|
463
500
|
type: "exclusive",
|
|
464
501
|
terms: parsers.map((p) => p.usage)
|
|
465
502
|
}],
|
|
503
|
+
leadingNames: unionLeadingNames(parsers),
|
|
504
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
466
505
|
initialState: void 0,
|
|
467
506
|
complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
|
|
468
507
|
parse(context) {
|
|
@@ -600,6 +639,8 @@ function longestMatch(...args) {
|
|
|
600
639
|
type: "exclusive",
|
|
601
640
|
terms: parsers.map((p) => p.usage)
|
|
602
641
|
}],
|
|
642
|
+
leadingNames: unionLeadingNames(parsers),
|
|
643
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
603
644
|
initialState: void 0,
|
|
604
645
|
complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
|
|
605
646
|
parse(context) {
|
|
@@ -1185,6 +1226,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1185
1226
|
[fieldParsersKey]: parserPairs,
|
|
1186
1227
|
priority: Math.max(...parserKeys.map((k) => parsers[k].priority)),
|
|
1187
1228
|
usage: applyHiddenToUsage(parserPairs.flatMap(([_, p]) => p.usage), options.hidden),
|
|
1229
|
+
leadingNames: sharedBufferLeadingNames(parserPairs.map(([_, p]) => p)),
|
|
1230
|
+
acceptingAnyToken: parserPairs.some(([_, p]) => p.acceptingAnyToken),
|
|
1188
1231
|
get initialState() {
|
|
1189
1232
|
return createInitialState();
|
|
1190
1233
|
},
|
|
@@ -1556,6 +1599,8 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1556
1599
|
$valueType: [],
|
|
1557
1600
|
$stateType: [],
|
|
1558
1601
|
usage: parsers.toSorted((a, b) => b.priority - a.priority).flatMap((p) => p.usage),
|
|
1602
|
+
leadingNames: sharedBufferLeadingNames(parsers),
|
|
1603
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
1559
1604
|
priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
|
|
1560
1605
|
initialState: parsers.map((parser) => parser.initialState),
|
|
1561
1606
|
parse(context) {
|
|
@@ -1877,6 +1922,8 @@ function merge(...args) {
|
|
|
1877
1922
|
[fieldParsersKey]: mergedFieldParsers,
|
|
1878
1923
|
priority: Math.max(...parsers.map((p) => p.priority)),
|
|
1879
1924
|
usage: applyHiddenToUsage(parsers.flatMap((p) => p.usage), options.hidden),
|
|
1925
|
+
leadingNames: sharedBufferLeadingNames(parsers),
|
|
1926
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
1880
1927
|
initialState,
|
|
1881
1928
|
parse(context) {
|
|
1882
1929
|
if (isAsync) return parseAsync(context);
|
|
@@ -2415,6 +2462,8 @@ function concat(...parsers) {
|
|
|
2415
2462
|
$stateType: [],
|
|
2416
2463
|
priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
|
|
2417
2464
|
usage: parsers.flatMap((p) => p.usage),
|
|
2465
|
+
leadingNames: sharedBufferLeadingNames(parsers),
|
|
2466
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
2418
2467
|
initialState,
|
|
2419
2468
|
parse(context) {
|
|
2420
2469
|
if (isAsync) return parseAsync(context);
|
|
@@ -2492,6 +2541,8 @@ function group(label, parser, options = {}) {
|
|
|
2492
2541
|
$stateType: parser.$stateType,
|
|
2493
2542
|
priority: parser.priority,
|
|
2494
2543
|
usage: applyHiddenToUsage(parser.usage, options.hidden),
|
|
2544
|
+
leadingNames: parser.leadingNames,
|
|
2545
|
+
acceptingAnyToken: parser.acceptingAnyToken,
|
|
2495
2546
|
initialState: parser.initialState,
|
|
2496
2547
|
...fieldParsersKey in parser ? { [fieldParsersKey]: parser[fieldParsersKey] } : {},
|
|
2497
2548
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
|
|
@@ -2976,6 +3027,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
2976
3027
|
$stateType: [],
|
|
2977
3028
|
priority: maxPriority,
|
|
2978
3029
|
usage,
|
|
3030
|
+
leadingNames: defaultBranch ? unionLeadingNames([discriminator, defaultBranch]) : discriminator.leadingNames,
|
|
3031
|
+
acceptingAnyToken: defaultBranch?.acceptingAnyToken ?? false,
|
|
2979
3032
|
initialState,
|
|
2980
3033
|
parse(context) {
|
|
2981
3034
|
if (isAsync) return parseAsync(context);
|
package/dist/constructs.js
CHANGED
|
@@ -9,6 +9,43 @@ import { DEFAULT_FIND_SIMILAR_OPTIONS, createErrorWithSuggestions, createSuggest
|
|
|
9
9
|
import { collectLeadingCandidates } from "./usage-internals.js";
|
|
10
10
|
|
|
11
11
|
//#region src/constructs.ts
|
|
12
|
+
/**
|
|
13
|
+
* A shared empty set used as the `leadingNames` value for parsers that
|
|
14
|
+
* do not match any specific name at the first buffer position.
|
|
15
|
+
*/
|
|
16
|
+
const EMPTY_LEADING_NAMES = /* @__PURE__ */ new Set();
|
|
17
|
+
/**
|
|
18
|
+
* Computes the union of `leadingNames` from all given parsers.
|
|
19
|
+
* Used for alternative combinators (`or()`, `longestMatch()`) where all
|
|
20
|
+
* branches compete independently.
|
|
21
|
+
*/
|
|
22
|
+
function unionLeadingNames(parsers) {
|
|
23
|
+
const names = /* @__PURE__ */ new Set();
|
|
24
|
+
for (const p of parsers) for (const name of p.leadingNames) names.add(name);
|
|
25
|
+
return names.size === 0 ? EMPTY_LEADING_NAMES : names;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Computes `leadingNames` for shared-buffer compositions (`tuple()`,
|
|
29
|
+
* `object()`, `merge()`, `concat()`).
|
|
30
|
+
*
|
|
31
|
+
* Children are processed in descending priority order (matching the
|
|
32
|
+
* round-robin parse loop). Once a child with `acceptingAnyToken` is
|
|
33
|
+
* encountered, no lower-priority children can match at position 0, so
|
|
34
|
+
* their names are excluded.
|
|
35
|
+
*/
|
|
36
|
+
function sharedBufferLeadingNames(parsers) {
|
|
37
|
+
const sorted = parsers.toSorted((a, b) => b.priority - a.priority);
|
|
38
|
+
const names = /* @__PURE__ */ new Set();
|
|
39
|
+
let positionalBlocked = false;
|
|
40
|
+
for (const p of sorted) {
|
|
41
|
+
if (p.leadingNames) for (const name of p.leadingNames) {
|
|
42
|
+
if (positionalBlocked && !name.startsWith("-")) continue;
|
|
43
|
+
names.add(name);
|
|
44
|
+
}
|
|
45
|
+
if (p.acceptingAnyToken) positionalBlocked = true;
|
|
46
|
+
}
|
|
47
|
+
return names.size === 0 ? EMPTY_LEADING_NAMES : names;
|
|
48
|
+
}
|
|
12
49
|
const inheritParentAnnotationsKey = Symbol.for("@optique/core/inheritParentAnnotations");
|
|
13
50
|
/**
|
|
14
51
|
* Internal symbol for exposing field-level parser pairs from `object()`
|
|
@@ -463,6 +500,8 @@ function or(...args) {
|
|
|
463
500
|
type: "exclusive",
|
|
464
501
|
terms: parsers.map((p) => p.usage)
|
|
465
502
|
}],
|
|
503
|
+
leadingNames: unionLeadingNames(parsers),
|
|
504
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
466
505
|
initialState: void 0,
|
|
467
506
|
complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
|
|
468
507
|
parse(context) {
|
|
@@ -600,6 +639,8 @@ function longestMatch(...args) {
|
|
|
600
639
|
type: "exclusive",
|
|
601
640
|
terms: parsers.map((p) => p.usage)
|
|
602
641
|
}],
|
|
642
|
+
leadingNames: unionLeadingNames(parsers),
|
|
643
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
603
644
|
initialState: void 0,
|
|
604
645
|
complete: createExclusiveComplete(parsers, options, noMatchContext, combinedMode),
|
|
605
646
|
parse(context) {
|
|
@@ -1185,6 +1226,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1185
1226
|
[fieldParsersKey]: parserPairs,
|
|
1186
1227
|
priority: Math.max(...parserKeys.map((k) => parsers[k].priority)),
|
|
1187
1228
|
usage: applyHiddenToUsage(parserPairs.flatMap(([_, p]) => p.usage), options.hidden),
|
|
1229
|
+
leadingNames: sharedBufferLeadingNames(parserPairs.map(([_, p]) => p)),
|
|
1230
|
+
acceptingAnyToken: parserPairs.some(([_, p]) => p.acceptingAnyToken),
|
|
1188
1231
|
get initialState() {
|
|
1189
1232
|
return createInitialState();
|
|
1190
1233
|
},
|
|
@@ -1556,6 +1599,8 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1556
1599
|
$valueType: [],
|
|
1557
1600
|
$stateType: [],
|
|
1558
1601
|
usage: parsers.toSorted((a, b) => b.priority - a.priority).flatMap((p) => p.usage),
|
|
1602
|
+
leadingNames: sharedBufferLeadingNames(parsers),
|
|
1603
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
1559
1604
|
priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
|
|
1560
1605
|
initialState: parsers.map((parser) => parser.initialState),
|
|
1561
1606
|
parse(context) {
|
|
@@ -1877,6 +1922,8 @@ function merge(...args) {
|
|
|
1877
1922
|
[fieldParsersKey]: mergedFieldParsers,
|
|
1878
1923
|
priority: Math.max(...parsers.map((p) => p.priority)),
|
|
1879
1924
|
usage: applyHiddenToUsage(parsers.flatMap((p) => p.usage), options.hidden),
|
|
1925
|
+
leadingNames: sharedBufferLeadingNames(parsers),
|
|
1926
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
1880
1927
|
initialState,
|
|
1881
1928
|
parse(context) {
|
|
1882
1929
|
if (isAsync) return parseAsync(context);
|
|
@@ -2415,6 +2462,8 @@ function concat(...parsers) {
|
|
|
2415
2462
|
$stateType: [],
|
|
2416
2463
|
priority: parsers.length > 0 ? Math.max(...parsers.map((p) => p.priority)) : 0,
|
|
2417
2464
|
usage: parsers.flatMap((p) => p.usage),
|
|
2465
|
+
leadingNames: sharedBufferLeadingNames(parsers),
|
|
2466
|
+
acceptingAnyToken: parsers.some((p) => p.acceptingAnyToken),
|
|
2418
2467
|
initialState,
|
|
2419
2468
|
parse(context) {
|
|
2420
2469
|
if (isAsync) return parseAsync(context);
|
|
@@ -2492,6 +2541,8 @@ function group(label, parser, options = {}) {
|
|
|
2492
2541
|
$stateType: parser.$stateType,
|
|
2493
2542
|
priority: parser.priority,
|
|
2494
2543
|
usage: applyHiddenToUsage(parser.usage, options.hidden),
|
|
2544
|
+
leadingNames: parser.leadingNames,
|
|
2545
|
+
acceptingAnyToken: parser.acceptingAnyToken,
|
|
2495
2546
|
initialState: parser.initialState,
|
|
2496
2547
|
...fieldParsersKey in parser ? { [fieldParsersKey]: parser[fieldParsersKey] } : {},
|
|
2497
2548
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
|
|
@@ -2976,6 +3027,8 @@ function conditional(discriminator, branches, defaultBranch, options) {
|
|
|
2976
3027
|
$stateType: [],
|
|
2977
3028
|
priority: maxPriority,
|
|
2978
3029
|
usage,
|
|
3030
|
+
leadingNames: defaultBranch ? unionLeadingNames([discriminator, defaultBranch]) : discriminator.leadingNames,
|
|
3031
|
+
acceptingAnyToken: defaultBranch?.acceptingAnyToken ?? false,
|
|
2979
3032
|
initialState,
|
|
2980
3033
|
parse(context) {
|
|
2981
3034
|
if (isAsync) return parseAsync(context);
|
package/dist/facade.cjs
CHANGED
|
@@ -196,6 +196,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
|
|
|
196
196
|
$stateType: [],
|
|
197
197
|
priority: 200,
|
|
198
198
|
usage: helpParsers.helpOption.usage,
|
|
199
|
+
leadingNames: helpParsers.helpOption.leadingNames,
|
|
200
|
+
acceptingAnyToken: false,
|
|
199
201
|
initialState: null,
|
|
200
202
|
parse(context) {
|
|
201
203
|
const { buffer, optionsTerminated } = context;
|
|
@@ -275,6 +277,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
|
|
|
275
277
|
$stateType: [],
|
|
276
278
|
priority: 200,
|
|
277
279
|
usage: versionParsers.versionOption.usage,
|
|
280
|
+
leadingNames: versionParsers.versionOption.leadingNames,
|
|
281
|
+
acceptingAnyToken: false,
|
|
278
282
|
initialState: null,
|
|
279
283
|
parse(context) {
|
|
280
284
|
const { buffer, optionsTerminated } = context;
|
|
@@ -620,9 +624,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
|
|
|
620
624
|
completionCommandNames
|
|
621
625
|
]);
|
|
622
626
|
require_validate.validateMetaNameCollisions({
|
|
623
|
-
|
|
624
|
-
leadingCommands: require_usage.extractLeadingCommandNames(parser.usage, true),
|
|
625
|
-
leadingLiterals: require_usage.extractLeadingLiteralValues(parser.usage),
|
|
627
|
+
leadingNames: parser.leadingNames,
|
|
626
628
|
allOptions: require_usage.extractOptionNames(parser.usage, true),
|
|
627
629
|
allCommands: require_usage.extractCommandNames(parser.usage, true),
|
|
628
630
|
allLiterals: require_usage.extractLiteralValues(parser.usage)
|
package/dist/facade.js
CHANGED
|
@@ -3,7 +3,7 @@ import { commandLine, formatMessage, lineBreak, message, optionName, text, value
|
|
|
3
3
|
import { bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
4
4
|
import { dispatchByMode } from "./mode-dispatch.js";
|
|
5
5
|
import { validateCommandNames, validateMetaNameCollisions, validateOptionNames } from "./validate.js";
|
|
6
|
-
import { extractCommandNames,
|
|
6
|
+
import { extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage } from "./usage.js";
|
|
7
7
|
import { formatDocPage } from "./doc.js";
|
|
8
8
|
import { group, longestMatch, object } from "./constructs.js";
|
|
9
9
|
import { multiple, optional, withDefault } from "./modifiers.js";
|
|
@@ -196,6 +196,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
|
|
|
196
196
|
$stateType: [],
|
|
197
197
|
priority: 200,
|
|
198
198
|
usage: helpParsers.helpOption.usage,
|
|
199
|
+
leadingNames: helpParsers.helpOption.leadingNames,
|
|
200
|
+
acceptingAnyToken: false,
|
|
199
201
|
initialState: null,
|
|
200
202
|
parse(context) {
|
|
201
203
|
const { buffer, optionsTerminated } = context;
|
|
@@ -275,6 +277,8 @@ function combineWithHelpVersion(originalParser, helpParsers, versionParsers, com
|
|
|
275
277
|
$stateType: [],
|
|
276
278
|
priority: 200,
|
|
277
279
|
usage: versionParsers.versionOption.usage,
|
|
280
|
+
leadingNames: versionParsers.versionOption.leadingNames,
|
|
281
|
+
acceptingAnyToken: false,
|
|
278
282
|
initialState: null,
|
|
279
283
|
parse(context) {
|
|
280
284
|
const { buffer, optionsTerminated } = context;
|
|
@@ -620,9 +624,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
|
|
|
620
624
|
completionCommandNames
|
|
621
625
|
]);
|
|
622
626
|
validateMetaNameCollisions({
|
|
623
|
-
|
|
624
|
-
leadingCommands: extractLeadingCommandNames(parser.usage, true),
|
|
625
|
-
leadingLiterals: extractLeadingLiteralValues(parser.usage),
|
|
627
|
+
leadingNames: parser.leadingNames,
|
|
626
628
|
allOptions: extractOptionNames(parser.usage, true),
|
|
627
629
|
allCommands: extractCommandNames(parser.usage, true),
|
|
628
630
|
allLiterals: extractLiteralValues(parser.usage)
|
package/dist/index.cjs
CHANGED
|
@@ -53,9 +53,6 @@ exports.ensureNonEmptyString = require_nonempty.ensureNonEmptyString;
|
|
|
53
53
|
exports.envVar = require_message.envVar;
|
|
54
54
|
exports.extractArgumentMetavars = require_usage.extractArgumentMetavars;
|
|
55
55
|
exports.extractCommandNames = require_usage.extractCommandNames;
|
|
56
|
-
exports.extractLeadingCommandNames = require_usage.extractLeadingCommandNames;
|
|
57
|
-
exports.extractLeadingLiteralValues = require_usage.extractLeadingLiteralValues;
|
|
58
|
-
exports.extractLeadingOptionNames = require_usage.extractLeadingOptionNames;
|
|
59
56
|
exports.extractLiteralValues = require_usage.extractLiteralValues;
|
|
60
57
|
exports.extractOptionNames = require_usage.extractOptionNames;
|
|
61
58
|
exports.fail = require_primitives.fail;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Annotations, ParseOptions, annotationKey, getAnnotations } from "./annotations.cjs";
|
|
2
2
|
import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonempty.cjs";
|
|
3
3
|
import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.cjs";
|
|
4
|
-
import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames,
|
|
4
|
+
import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.cjs";
|
|
5
5
|
import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowChoicesOptions, ShowDefaultOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.cjs";
|
|
6
6
|
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, DeferredMap, DomainOptions, EmailOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, domain, email, float, hostname, integer, ip, ipv4, ipv6, isValueParser, locale, macAddress, port, portRange, socketAddress, string, url, uuid } from "./valueparser.cjs";
|
|
7
7
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.cjs";
|
|
@@ -12,4 +12,4 @@ import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, Mode
|
|
|
12
12
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
|
|
13
13
|
import { ParserValuePlaceholder, SourceContext } from "./context.cjs";
|
|
14
14
|
import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
|
|
15
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames,
|
|
15
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Annotations, ParseOptions, annotationKey, getAnnotations } from "./annotations.js";
|
|
2
2
|
import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
|
|
3
3
|
import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
|
|
4
|
-
import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames,
|
|
4
|
+
import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
|
|
5
5
|
import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowChoicesOptions, ShowDefaultOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.js";
|
|
6
6
|
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, DeferredMap, DomainOptions, EmailOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SocketAddressOptions, SocketAddressValue, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, checkBooleanOption, checkEnumOption, choice, cidr, domain, email, float, hostname, integer, ip, ipv4, ipv6, isValueParser, locale, macAddress, port, portRange, socketAddress, string, url, uuid } from "./valueparser.js";
|
|
7
7
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
@@ -12,4 +12,4 @@ import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, Mode
|
|
|
12
12
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
13
13
|
import { ParserValuePlaceholder, SourceContext } from "./context.js";
|
|
14
14
|
import { CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
15
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames,
|
|
15
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, DeferredMap, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { annotationKey, getAnnotations } from "./annotations.js";
|
|
|
2
2
|
import { commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
|
|
3
3
|
import { bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
4
4
|
import { DependencyRegistry, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, formatDependencyError, getDefaultValuesFunction, getDependencyIds, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, parseWithDependency, pendingDependencySourceStateMarker, suggestWithDependency, transformsDependencyValue, transformsDependencyValueMarker, wrappedDependencySourceMarker } from "./dependency.js";
|
|
5
|
-
import { cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames,
|
|
5
|
+
import { cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
|
|
6
6
|
import { cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.js";
|
|
7
7
|
import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
8
8
|
import { WithDefaultError, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
|
|
@@ -12,4 +12,4 @@ import { argument, command, constant, fail, flag, option, passThrough } from "./
|
|
|
12
12
|
import { getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
|
|
13
13
|
import { RunParserError, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
14
14
|
|
|
15
|
-
export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames,
|
|
15
|
+
export { DependencyRegistry, DuplicateOptionError, RunParserError, WithDefaultError, annotationKey, argument, bash, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, deduplicateDocEntries, deduplicateDocFragments, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isPendingDependencySourceState, isSuggestionHidden, isUsageHidden, isValueParser, isWrappedDependencySource, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
package/dist/modifiers.cjs
CHANGED
|
@@ -128,6 +128,8 @@ function optional(parser) {
|
|
|
128
128
|
type: "optional",
|
|
129
129
|
terms: parser.usage
|
|
130
130
|
}],
|
|
131
|
+
leadingNames: parser.leadingNames,
|
|
132
|
+
acceptingAnyToken: false,
|
|
131
133
|
initialState: void 0,
|
|
132
134
|
...wrappedDependencyMarker,
|
|
133
135
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
@@ -246,6 +248,8 @@ function withDefault(parser, defaultValue, options) {
|
|
|
246
248
|
type: "optional",
|
|
247
249
|
terms: parser.usage
|
|
248
250
|
}],
|
|
251
|
+
leadingNames: parser.leadingNames,
|
|
252
|
+
acceptingAnyToken: false,
|
|
249
253
|
initialState: void 0,
|
|
250
254
|
...wrappedDependencyMarker,
|
|
251
255
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
@@ -650,6 +654,8 @@ function multiple(parser, options = {}) {
|
|
|
650
654
|
terms: parser.usage,
|
|
651
655
|
min
|
|
652
656
|
}],
|
|
657
|
+
leadingNames: parser.leadingNames,
|
|
658
|
+
acceptingAnyToken: min > 0 && (parser.acceptingAnyToken ?? false),
|
|
653
659
|
initialState: [],
|
|
654
660
|
parse(context) {
|
|
655
661
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => parseSync(context), () => parseAsync(context));
|
|
@@ -886,6 +892,8 @@ function nonEmpty(parser) {
|
|
|
886
892
|
$stateType: parser.$stateType,
|
|
887
893
|
priority: parser.priority,
|
|
888
894
|
usage: parser.usage,
|
|
895
|
+
leadingNames: parser.leadingNames,
|
|
896
|
+
acceptingAnyToken: parser.acceptingAnyToken,
|
|
889
897
|
initialState: parser.initialState,
|
|
890
898
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
|
|
891
899
|
parse(context) {
|
package/dist/modifiers.js
CHANGED
|
@@ -128,6 +128,8 @@ function optional(parser) {
|
|
|
128
128
|
type: "optional",
|
|
129
129
|
terms: parser.usage
|
|
130
130
|
}],
|
|
131
|
+
leadingNames: parser.leadingNames,
|
|
132
|
+
acceptingAnyToken: false,
|
|
131
133
|
initialState: void 0,
|
|
132
134
|
...wrappedDependencyMarker,
|
|
133
135
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
@@ -246,6 +248,8 @@ function withDefault(parser, defaultValue, options) {
|
|
|
246
248
|
type: "optional",
|
|
247
249
|
terms: parser.usage
|
|
248
250
|
}],
|
|
251
|
+
leadingNames: parser.leadingNames,
|
|
252
|
+
acceptingAnyToken: false,
|
|
249
253
|
initialState: void 0,
|
|
250
254
|
...wrappedDependencyMarker,
|
|
251
255
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
@@ -650,6 +654,8 @@ function multiple(parser, options = {}) {
|
|
|
650
654
|
terms: parser.usage,
|
|
651
655
|
min
|
|
652
656
|
}],
|
|
657
|
+
leadingNames: parser.leadingNames,
|
|
658
|
+
acceptingAnyToken: min > 0 && (parser.acceptingAnyToken ?? false),
|
|
653
659
|
initialState: [],
|
|
654
660
|
parse(context) {
|
|
655
661
|
return dispatchByMode(parser.$mode, () => parseSync(context), () => parseAsync(context));
|
|
@@ -886,6 +892,8 @@ function nonEmpty(parser) {
|
|
|
886
892
|
$stateType: parser.$stateType,
|
|
887
893
|
priority: parser.priority,
|
|
888
894
|
usage: parser.usage,
|
|
895
|
+
leadingNames: parser.leadingNames,
|
|
896
|
+
acceptingAnyToken: parser.acceptingAnyToken,
|
|
889
897
|
initialState: parser.initialState,
|
|
890
898
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
|
|
891
899
|
parse(context) {
|
package/dist/parser.cjs
CHANGED
|
@@ -52,7 +52,7 @@ function parseSync(parser, args, options) {
|
|
|
52
52
|
};
|
|
53
53
|
const previousBuffer = context.buffer;
|
|
54
54
|
context = result.next;
|
|
55
|
-
if (
|
|
55
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return {
|
|
56
56
|
success: false,
|
|
57
57
|
error: require_message.message`Unexpected option or argument: ${context.buffer[0]}.`
|
|
58
58
|
};
|
|
@@ -69,6 +69,13 @@ function parseSync(parser, args, options) {
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
+
* Returns `true` when the buffer has not changed between iterations,
|
|
73
|
+
* indicating a parser is stalling without consuming input.
|
|
74
|
+
*/
|
|
75
|
+
function isBufferUnchanged(previous, current) {
|
|
76
|
+
return current.length > 0 && current.length === previous.length && current.every((item, i) => item === previous[i]);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
72
79
|
* Parses an array of command-line arguments using the provided combined parser.
|
|
73
80
|
* This function processes the input arguments, applying the parser to each
|
|
74
81
|
* argument until all arguments are consumed or an error occurs.
|
|
@@ -104,7 +111,7 @@ async function parseAsync(parser, args, options) {
|
|
|
104
111
|
};
|
|
105
112
|
const previousBuffer = context.buffer;
|
|
106
113
|
context = result.next;
|
|
107
|
-
if (
|
|
114
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return {
|
|
108
115
|
success: false,
|
|
109
116
|
error: require_message.message`Unexpected option or argument: ${context.buffer[0]}.`
|
|
110
117
|
};
|
|
@@ -196,7 +203,7 @@ function suggestSync(parser, args, options) {
|
|
|
196
203
|
if (!result.success) return Array.from(parser.suggest(context, prefix));
|
|
197
204
|
const previousBuffer = context.buffer;
|
|
198
205
|
context = result.next;
|
|
199
|
-
if (
|
|
206
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return [];
|
|
200
207
|
}
|
|
201
208
|
return Array.from(parser.suggest(context, prefix));
|
|
202
209
|
}
|
|
@@ -239,7 +246,7 @@ async function suggestAsync(parser, args, options) {
|
|
|
239
246
|
}
|
|
240
247
|
const previousBuffer = context.buffer;
|
|
241
248
|
context = result.next;
|
|
242
|
-
if (
|
|
249
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) return [];
|
|
243
250
|
}
|
|
244
251
|
const suggestions = [];
|
|
245
252
|
for await (const suggestion of parser.suggest(context, prefix)) suggestions.push(suggestion);
|
|
@@ -359,7 +366,9 @@ function getDocPageSyncImpl(parser, args, options) {
|
|
|
359
366
|
while (context.buffer.length > 0) {
|
|
360
367
|
const result = parser.parse(context);
|
|
361
368
|
if (!result.success) break;
|
|
369
|
+
const previousBuffer = context.buffer;
|
|
362
370
|
context = result.next;
|
|
371
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) break;
|
|
363
372
|
}
|
|
364
373
|
return buildDocPage(parser, context, args);
|
|
365
374
|
}
|
|
@@ -377,7 +386,9 @@ async function getDocPageAsyncImpl(parser, args, options) {
|
|
|
377
386
|
while (context.buffer.length > 0) {
|
|
378
387
|
const result = await parser.parse(context);
|
|
379
388
|
if (!result.success) break;
|
|
389
|
+
const previousBuffer = context.buffer;
|
|
380
390
|
context = result.next;
|
|
391
|
+
if (isBufferUnchanged(previousBuffer, context.buffer)) break;
|
|
381
392
|
}
|
|
382
393
|
return buildDocPage(parser, context, args);
|
|
383
394
|
}
|
package/dist/parser.d.cts
CHANGED
|
@@ -105,6 +105,44 @@ interface Parser<M extends Mode = "sync", TValue = unknown, TState = unknown> {
|
|
|
105
105
|
* to use it in command-line interfaces.
|
|
106
106
|
*/
|
|
107
107
|
readonly usage: Usage;
|
|
108
|
+
/**
|
|
109
|
+
* Names that this parser could match at the first buffer position.
|
|
110
|
+
* Used by `runParser()` to detect collisions with built-in meta
|
|
111
|
+
* features (help, version, completion).
|
|
112
|
+
*
|
|
113
|
+
* Each built-in combinator computes this from its structural semantics.
|
|
114
|
+
* Custom parser implementations must include every fixed token that
|
|
115
|
+
* the parser accepts at `argv[0]` — command names, option names, and
|
|
116
|
+
* literal values alike. For example, a parser whose usage declares
|
|
117
|
+
* `{ type: "literal", value: "serve" }` should include `"serve"` in
|
|
118
|
+
* this set. Parsers that accept *any* token (like `argument()`) should
|
|
119
|
+
* return an empty set and set {@link acceptingAnyToken} to `true`
|
|
120
|
+
* instead.
|
|
121
|
+
*
|
|
122
|
+
* @since 1.0.0
|
|
123
|
+
*/
|
|
124
|
+
readonly leadingNames: ReadonlySet<string>;
|
|
125
|
+
/**
|
|
126
|
+
* Whether this parser unconditionally consumes any positional token at
|
|
127
|
+
* the first buffer position. A parser with this flag accepts any
|
|
128
|
+
* non-option token but may still reject option-like tokens (those
|
|
129
|
+
* starting with `"-"`).
|
|
130
|
+
*
|
|
131
|
+
* In shared-buffer compositions (`tuple()`, `object()`, `merge()`,
|
|
132
|
+
* `concat()`), a catch-all parser blocks positional names (command
|
|
133
|
+
* names) from lower-priority siblings but does not block option-like
|
|
134
|
+
* names. In `conditional()`, option-like names from the default
|
|
135
|
+
* branch remain reachable even when the discriminator is a catch-all.
|
|
136
|
+
*
|
|
137
|
+
* Only `argument()` is inherently accepting-any-token; combinators
|
|
138
|
+
* like `or()` and `map()` propagate this from their children.
|
|
139
|
+
* Wrappers that can succeed without consuming (`optional()`,
|
|
140
|
+
* `withDefault()`, `multiple()` with `min = 0`) always set this
|
|
141
|
+
* to `false`.
|
|
142
|
+
*
|
|
143
|
+
* @since 1.0.0
|
|
144
|
+
*/
|
|
145
|
+
readonly acceptingAnyToken: boolean;
|
|
108
146
|
/**
|
|
109
147
|
* The initial state for this parser. This is used to initialize the
|
|
110
148
|
* state when parsing starts.
|
package/dist/parser.d.ts
CHANGED
|
@@ -105,6 +105,44 @@ interface Parser<M extends Mode = "sync", TValue = unknown, TState = unknown> {
|
|
|
105
105
|
* to use it in command-line interfaces.
|
|
106
106
|
*/
|
|
107
107
|
readonly usage: Usage;
|
|
108
|
+
/**
|
|
109
|
+
* Names that this parser could match at the first buffer position.
|
|
110
|
+
* Used by `runParser()` to detect collisions with built-in meta
|
|
111
|
+
* features (help, version, completion).
|
|
112
|
+
*
|
|
113
|
+
* Each built-in combinator computes this from its structural semantics.
|
|
114
|
+
* Custom parser implementations must include every fixed token that
|
|
115
|
+
* the parser accepts at `argv[0]` — command names, option names, and
|
|
116
|
+
* literal values alike. For example, a parser whose usage declares
|
|
117
|
+
* `{ type: "literal", value: "serve" }` should include `"serve"` in
|
|
118
|
+
* this set. Parsers that accept *any* token (like `argument()`) should
|
|
119
|
+
* return an empty set and set {@link acceptingAnyToken} to `true`
|
|
120
|
+
* instead.
|
|
121
|
+
*
|
|
122
|
+
* @since 1.0.0
|
|
123
|
+
*/
|
|
124
|
+
readonly leadingNames: ReadonlySet<string>;
|
|
125
|
+
/**
|
|
126
|
+
* Whether this parser unconditionally consumes any positional token at
|
|
127
|
+
* the first buffer position. A parser with this flag accepts any
|
|
128
|
+
* non-option token but may still reject option-like tokens (those
|
|
129
|
+
* starting with `"-"`).
|
|
130
|
+
*
|
|
131
|
+
* In shared-buffer compositions (`tuple()`, `object()`, `merge()`,
|
|
132
|
+
* `concat()`), a catch-all parser blocks positional names (command
|
|
133
|
+
* names) from lower-priority siblings but does not block option-like
|
|
134
|
+
* names. In `conditional()`, option-like names from the default
|
|
135
|
+
* branch remain reachable even when the discriminator is a catch-all.
|
|
136
|
+
*
|
|
137
|
+
* Only `argument()` is inherently accepting-any-token; combinators
|
|
138
|
+
* like `or()` and `map()` propagate this from their children.
|
|
139
|
+
* Wrappers that can succeed without consuming (`optional()`,
|
|
140
|
+
* `withDefault()`, `multiple()` with `min = 0`) always set this
|
|
141
|
+
* to `false`.
|
|
142
|
+
*
|
|
143
|
+
* @since 1.0.0
|
|
144
|
+
*/
|
|
145
|
+
readonly acceptingAnyToken: boolean;
|
|
108
146
|
/**
|
|
109
147
|
* The initial state for this parser. This is used to initialize the
|
|
110
148
|
* state when parsing starts.
|