breadc 0.1.0 → 0.3.0
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/README.md +34 -7
- package/dist/index.cjs +452 -62
- package/dist/index.d.ts +295 -32
- package/dist/index.mjs +452 -61
- package/package.json +7 -9
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,254 @@
|
|
|
1
|
-
import { ParsedArgs } from 'minimist';
|
|
2
|
-
export { default as minimist } from 'minimist';
|
|
3
1
|
export { default as kolorist } from 'kolorist';
|
|
4
|
-
|
|
2
|
+
|
|
3
|
+
var minimist = function (args, opts) {
|
|
4
|
+
if (!opts) opts = {};
|
|
5
|
+
|
|
6
|
+
var flags = { bools : {}, strings : {}, unknownFn: null };
|
|
7
|
+
|
|
8
|
+
if (typeof opts['unknown'] === 'function') {
|
|
9
|
+
flags.unknownFn = opts['unknown'];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
|
|
13
|
+
flags.allBools = true;
|
|
14
|
+
} else {
|
|
15
|
+
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
|
16
|
+
flags.bools[key] = true;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
var aliases = {};
|
|
21
|
+
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
22
|
+
aliases[key] = [].concat(opts.alias[key]);
|
|
23
|
+
aliases[key].forEach(function (x) {
|
|
24
|
+
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
25
|
+
return x !== y;
|
|
26
|
+
}));
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
|
31
|
+
flags.strings[key] = true;
|
|
32
|
+
if (aliases[key]) {
|
|
33
|
+
flags.strings[aliases[key]] = true;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
var defaults = opts['default'] || {};
|
|
38
|
+
|
|
39
|
+
var argv = { _ : [] };
|
|
40
|
+
Object.keys(flags.bools).forEach(function (key) {
|
|
41
|
+
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
var notFlags = [];
|
|
45
|
+
|
|
46
|
+
if (args.indexOf('--') !== -1) {
|
|
47
|
+
notFlags = args.slice(args.indexOf('--')+1);
|
|
48
|
+
args = args.slice(0, args.indexOf('--'));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function argDefined(key, arg) {
|
|
52
|
+
return (flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
53
|
+
flags.strings[key] || flags.bools[key] || aliases[key];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function setArg (key, val, arg) {
|
|
57
|
+
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
58
|
+
if (flags.unknownFn(arg) === false) return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
var value = !flags.strings[key] && isNumber(val)
|
|
62
|
+
? Number(val) : val
|
|
63
|
+
;
|
|
64
|
+
setKey(argv, key.split('.'), value);
|
|
65
|
+
|
|
66
|
+
(aliases[key] || []).forEach(function (x) {
|
|
67
|
+
setKey(argv, x.split('.'), value);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function setKey (obj, keys, value) {
|
|
72
|
+
var o = obj;
|
|
73
|
+
for (var i = 0; i < keys.length-1; i++) {
|
|
74
|
+
var key = keys[i];
|
|
75
|
+
if (isConstructorOrProto(o, key)) return;
|
|
76
|
+
if (o[key] === undefined) o[key] = {};
|
|
77
|
+
if (o[key] === Object.prototype || o[key] === Number.prototype
|
|
78
|
+
|| o[key] === String.prototype) o[key] = {};
|
|
79
|
+
if (o[key] === Array.prototype) o[key] = [];
|
|
80
|
+
o = o[key];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
var key = keys[keys.length - 1];
|
|
84
|
+
if (isConstructorOrProto(o, key)) return;
|
|
85
|
+
if (o === Object.prototype || o === Number.prototype
|
|
86
|
+
|| o === String.prototype) o = {};
|
|
87
|
+
if (o === Array.prototype) o = [];
|
|
88
|
+
if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
|
|
89
|
+
o[key] = value;
|
|
90
|
+
}
|
|
91
|
+
else if (Array.isArray(o[key])) {
|
|
92
|
+
o[key].push(value);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
o[key] = [ o[key], value ];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function aliasIsBoolean(key) {
|
|
100
|
+
return aliases[key].some(function (x) {
|
|
101
|
+
return flags.bools[x];
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
for (var i = 0; i < args.length; i++) {
|
|
106
|
+
var arg = args[i];
|
|
107
|
+
|
|
108
|
+
if (/^--.+=/.test(arg)) {
|
|
109
|
+
// Using [\s\S] instead of . because js doesn't support the
|
|
110
|
+
// 'dotall' regex modifier. See:
|
|
111
|
+
// http://stackoverflow.com/a/1068308/13216
|
|
112
|
+
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
113
|
+
var key = m[1];
|
|
114
|
+
var value = m[2];
|
|
115
|
+
if (flags.bools[key]) {
|
|
116
|
+
value = value !== 'false';
|
|
117
|
+
}
|
|
118
|
+
setArg(key, value, arg);
|
|
119
|
+
}
|
|
120
|
+
else if (/^--no-.+/.test(arg)) {
|
|
121
|
+
var key = arg.match(/^--no-(.+)/)[1];
|
|
122
|
+
setArg(key, false, arg);
|
|
123
|
+
}
|
|
124
|
+
else if (/^--.+/.test(arg)) {
|
|
125
|
+
var key = arg.match(/^--(.+)/)[1];
|
|
126
|
+
var next = args[i + 1];
|
|
127
|
+
if (next !== undefined && !/^-/.test(next)
|
|
128
|
+
&& !flags.bools[key]
|
|
129
|
+
&& !flags.allBools
|
|
130
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
131
|
+
setArg(key, next, arg);
|
|
132
|
+
i++;
|
|
133
|
+
}
|
|
134
|
+
else if (/^(true|false)$/.test(next)) {
|
|
135
|
+
setArg(key, next === 'true', arg);
|
|
136
|
+
i++;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else if (/^-[^-]+/.test(arg)) {
|
|
143
|
+
var letters = arg.slice(1,-1).split('');
|
|
144
|
+
|
|
145
|
+
var broken = false;
|
|
146
|
+
for (var j = 0; j < letters.length; j++) {
|
|
147
|
+
var next = arg.slice(j+2);
|
|
148
|
+
|
|
149
|
+
if (next === '-') {
|
|
150
|
+
setArg(letters[j], next, arg);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
|
|
155
|
+
setArg(letters[j], next.split('=')[1], arg);
|
|
156
|
+
broken = true;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (/[A-Za-z]/.test(letters[j])
|
|
161
|
+
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
162
|
+
setArg(letters[j], next, arg);
|
|
163
|
+
broken = true;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
|
168
|
+
setArg(letters[j], arg.slice(j+2), arg);
|
|
169
|
+
broken = true;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
var key = arg.slice(-1)[0];
|
|
178
|
+
if (!broken && key !== '-') {
|
|
179
|
+
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
|
180
|
+
&& !flags.bools[key]
|
|
181
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
182
|
+
setArg(key, args[i+1], arg);
|
|
183
|
+
i++;
|
|
184
|
+
}
|
|
185
|
+
else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
|
|
186
|
+
setArg(key, args[i+1] === 'true', arg);
|
|
187
|
+
i++;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
196
|
+
argv._.push(
|
|
197
|
+
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
if (opts.stopEarly) {
|
|
201
|
+
argv._.push.apply(argv._, args.slice(i + 1));
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
Object.keys(defaults).forEach(function (key) {
|
|
208
|
+
if (!hasKey(argv, key.split('.'))) {
|
|
209
|
+
setKey(argv, key.split('.'), defaults[key]);
|
|
210
|
+
|
|
211
|
+
(aliases[key] || []).forEach(function (x) {
|
|
212
|
+
setKey(argv, x.split('.'), defaults[key]);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
if (opts['--']) {
|
|
218
|
+
argv['--'] = new Array();
|
|
219
|
+
notFlags.forEach(function(key) {
|
|
220
|
+
argv['--'].push(key);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
notFlags.forEach(function(key) {
|
|
225
|
+
argv._.push(key);
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return argv;
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
function hasKey (obj, keys) {
|
|
233
|
+
var o = obj;
|
|
234
|
+
keys.slice(0,-1).forEach(function (key) {
|
|
235
|
+
o = (o[key] || {});
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
var key = keys[keys.length - 1];
|
|
239
|
+
return key in o;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function isNumber (x) {
|
|
243
|
+
if (typeof x === 'number') return true;
|
|
244
|
+
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
|
245
|
+
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
function isConstructorOrProto (obj, key) {
|
|
250
|
+
return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
|
|
251
|
+
}
|
|
5
252
|
|
|
6
253
|
interface OptionConfig<T = string> {
|
|
7
254
|
description?: string;
|
|
@@ -17,25 +264,29 @@ interface OptionConfig<T = string> {
|
|
|
17
264
|
* + --option <arg>
|
|
18
265
|
* + --option [arg]
|
|
19
266
|
*/
|
|
20
|
-
declare class Option<T extends string = string,
|
|
267
|
+
declare class Option<T extends string = string, F = string> {
|
|
21
268
|
private static OptionRE;
|
|
22
269
|
readonly name: string;
|
|
23
270
|
readonly shortcut?: string;
|
|
271
|
+
readonly default?: F;
|
|
272
|
+
readonly format: string;
|
|
24
273
|
readonly description: string;
|
|
25
274
|
readonly type: 'string' | 'boolean';
|
|
275
|
+
readonly required: boolean;
|
|
26
276
|
readonly construct: (rawText: string | undefined) => any;
|
|
27
|
-
constructor(format: T, config?: OptionConfig);
|
|
277
|
+
constructor(format: T, config?: OptionConfig<F>);
|
|
28
278
|
}
|
|
29
279
|
|
|
30
|
-
declare type ConditionFn = (args: ParsedArgs) => boolean;
|
|
280
|
+
declare type ConditionFn = (args: minimist.ParsedArgs) => boolean;
|
|
31
281
|
interface CommandConfig {
|
|
32
282
|
description?: string;
|
|
33
283
|
}
|
|
34
|
-
declare class Command<F extends string = string,
|
|
284
|
+
declare class Command<F extends string = string, CommandOption extends object = {}> {
|
|
35
285
|
private static MaxDep;
|
|
36
286
|
private readonly conditionFn?;
|
|
37
287
|
private readonly logger;
|
|
38
288
|
readonly format: string[];
|
|
289
|
+
readonly default: boolean;
|
|
39
290
|
readonly description: string;
|
|
40
291
|
readonly options: Option[];
|
|
41
292
|
private actionFn?;
|
|
@@ -43,34 +294,37 @@ declare class Command<F extends string = string, GlobalOption extends string | n
|
|
|
43
294
|
condition?: ConditionFn;
|
|
44
295
|
logger: Logger;
|
|
45
296
|
});
|
|
46
|
-
option<OF extends string>(format: OF, description: string, config?: Omit<OptionConfig
|
|
47
|
-
option<OF extends string>(format: OF, config?: OptionConfig): Command<F,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
297
|
+
option<OF extends string, T = string>(format: OF, description: string, config?: Omit<OptionConfig<T>, 'description'>): Command<F, CommandOption & ExtractOption<OF>>;
|
|
298
|
+
option<OF extends string, T = string>(format: OF, config?: OptionConfig<T>): Command<F, CommandOption & ExtractOption<OF>>;
|
|
299
|
+
get hasConditionFn(): boolean;
|
|
300
|
+
shouldRun(args: minimist.ParsedArgs): boolean;
|
|
301
|
+
parseArgs(args: minimist.ParsedArgs, globalOptions: Option[]): ParseResult;
|
|
302
|
+
action(fn: ActionFn<ExtractCommand<F>, CommandOption>): this;
|
|
51
303
|
run(...args: any[]): Promise<void>;
|
|
52
304
|
}
|
|
53
305
|
|
|
54
306
|
interface AppOption {
|
|
55
307
|
version?: string;
|
|
308
|
+
description?: string | string[];
|
|
56
309
|
help?: string | string[] | (() => string | string[]);
|
|
57
|
-
logger?: Logger;
|
|
310
|
+
logger?: Partial<Logger> | LoggerFn;
|
|
58
311
|
}
|
|
312
|
+
declare type LoggerFn = (message: string, ...args: any[]) => void;
|
|
59
313
|
interface Logger {
|
|
60
|
-
println:
|
|
61
|
-
info:
|
|
62
|
-
warn:
|
|
63
|
-
error:
|
|
64
|
-
debug:
|
|
314
|
+
println: LoggerFn;
|
|
315
|
+
info: LoggerFn;
|
|
316
|
+
warn: LoggerFn;
|
|
317
|
+
error: LoggerFn;
|
|
318
|
+
debug: LoggerFn;
|
|
65
319
|
}
|
|
66
320
|
interface ParseResult {
|
|
67
321
|
command: Command | undefined;
|
|
68
322
|
arguments: any[];
|
|
69
323
|
options: Record<string, string>;
|
|
70
324
|
}
|
|
71
|
-
declare type
|
|
72
|
-
|
|
73
|
-
|
|
325
|
+
declare type ExtractOption<T extends string> = {
|
|
326
|
+
[k in ExtractOptionName<T>]: ExtractOptionType<T>;
|
|
327
|
+
};
|
|
74
328
|
/**
|
|
75
329
|
* Extract option name type
|
|
76
330
|
*
|
|
@@ -78,30 +332,39 @@ declare type Letter = Lowercase | Uppercase;
|
|
|
78
332
|
* + const t1: ExtractOption<'--option' | '--hello'> = 'hello'
|
|
79
333
|
* + const t2: ExtractOption<'-r, --root'> = 'root'
|
|
80
334
|
*/
|
|
81
|
-
declare type
|
|
335
|
+
declare type ExtractOptionName<T extends string> = T extends `-${Letter}, --${infer R} [${infer U}]` ? R : T extends `-${Letter}, --${infer R} <${infer U}>` ? R : T extends `-${Letter}, --${infer R}` ? R : T extends `--${infer R} [${infer U}]` ? R : T extends `--${infer R} <${infer U}>` ? R : T extends `--${infer R}` ? R : never;
|
|
336
|
+
declare type ExtractOptionType<T extends string> = T extends `-${Letter}, --${infer R} [${infer U}]` ? string | undefined : T extends `-${Letter}, --${infer R} <${infer U}>` ? string | boolean : T extends `-${Letter}, --${infer R}` ? boolean : T extends `--${infer R} [${infer U}]` ? string | undefined : T extends `--${infer R} <${infer U}>` ? string | boolean : T extends `--${infer R}` ? boolean : never;
|
|
337
|
+
declare type Lowercase = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
|
|
338
|
+
declare type Uppercase = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z';
|
|
339
|
+
declare type Letter = Lowercase | Uppercase;
|
|
82
340
|
declare type Push<T extends any[], U> = [...T, U];
|
|
83
|
-
declare type ActionFn<T extends any[], Option extends
|
|
341
|
+
declare type ActionFn<T extends any[], Option extends object = {}> = (...arg: Push<T, Option>) => void;
|
|
84
342
|
/**
|
|
85
|
-
* Max Dep:
|
|
343
|
+
* Max Dep: 5
|
|
86
344
|
*
|
|
87
|
-
* Generated by: npx tsx scripts/genType.ts
|
|
345
|
+
* Generated by: npx tsx scripts/genType.ts 5
|
|
88
346
|
*/
|
|
89
|
-
declare type ExtractCommand<T extends string> = T extends
|
|
347
|
+
declare type ExtractCommand<T extends string> = T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}> [...${infer P5}]` ? [string, string, string, string, string[]] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}> [${infer P5}]` ? [string, string, string, string, string | undefined] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}> <${infer P5}>` ? [string, string, string, string, string] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}> [...${infer P5}]` ? [string, string, string, string[]] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}> [${infer P5}]` ? [string, string, string, string | undefined] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}> <${infer P5}>` ? [string, string, string, string] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}> [...${infer P5}]` ? [string, string, string[]] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}> [${infer P5}]` ? [string, string, string | undefined] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}> <${infer P5}>` ? [string, string, string] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}> [...${infer P5}]` ? [string, string[]] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}> [${infer P5}]` ? [string, string | undefined] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}> <${infer P5}>` ? [string, string] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> [...${infer P4}]` ? [string, string, string, string[]] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> [${infer P4}]` ? [string, string, string, string | undefined] : T extends `<${infer P1}> <${infer P2}> <${infer P3}> <${infer P4}>` ? [string, string, string, string] : T extends `${infer P1} <${infer P2}> <${infer P3}> [...${infer P4}]` ? [string, string, string[]] : T extends `${infer P1} <${infer P2}> <${infer P3}> [${infer P4}]` ? [string, string, string | undefined] : T extends `${infer P1} <${infer P2}> <${infer P3}> <${infer P4}>` ? [string, string, string] : T extends `${infer P1} ${infer P2} <${infer P3}> [...${infer P4}]` ? [string, string[]] : T extends `${infer P1} ${infer P2} <${infer P3}> [${infer P4}]` ? [string, string | undefined] : T extends `${infer P1} ${infer P2} <${infer P3}> <${infer P4}>` ? [string, string] : T extends `${infer P1} ${infer P2} ${infer P3} [...${infer P4}]` ? [string[]] : T extends `${infer P1} ${infer P2} ${infer P3} [${infer P4}]` ? [string | undefined] : T extends `${infer P1} ${infer P2} ${infer P3} <${infer P4}>` ? [string] : T extends `<${infer P1}> <${infer P2}> [...${infer P3}]` ? [string, string, string[]] : T extends `<${infer P1}> <${infer P2}> [${infer P3}]` ? [string, string, string | undefined] : T extends `<${infer P1}> <${infer P2}> <${infer P3}>` ? [string, string, string] : T extends `${infer P1} <${infer P2}> [...${infer P3}]` ? [string, string[]] : T extends `${infer P1} <${infer P2}> [${infer P3}]` ? [string, string | undefined] : T extends `${infer P1} <${infer P2}> <${infer P3}>` ? [string, string] : T extends `${infer P1} ${infer P2} [...${infer P3}]` ? [string[]] : T extends `${infer P1} ${infer P2} [${infer P3}]` ? [string | undefined] : T extends `${infer P1} ${infer P2} <${infer P3}>` ? [string] : T extends `${infer P1} ${infer P2} ${infer P3}` ? [] : T extends `<${infer P1}> [...${infer P2}]` ? [string, string[]] : T extends `<${infer P1}> [${infer P2}]` ? [string, string | undefined] : T extends `<${infer P1}> <${infer P2}>` ? [string, string] : T extends `${infer P1} [...${infer P2}]` ? [string[]] : T extends `${infer P1} [${infer P2}]` ? [string | undefined] : T extends `${infer P1} <${infer P2}>` ? [string] : T extends `${infer P1} ${infer P2}` ? [] : T extends `[...${infer P1}]` ? [string[]] : T extends `[${infer P1}]` ? [string | undefined] : T extends `<${infer P1}>` ? [string] : T extends `${infer P1}` ? [] : T extends `` ? [] : never;
|
|
90
348
|
|
|
91
|
-
declare class Breadc<GlobalOption extends
|
|
349
|
+
declare class Breadc<GlobalOption extends object = {}> {
|
|
92
350
|
private readonly name;
|
|
93
|
-
private readonly
|
|
351
|
+
private readonly _version;
|
|
352
|
+
private readonly description?;
|
|
94
353
|
private readonly options;
|
|
95
354
|
private readonly commands;
|
|
355
|
+
private defaultCommand?;
|
|
96
356
|
readonly logger: Logger;
|
|
97
357
|
constructor(name: string, option: AppOption);
|
|
98
|
-
|
|
99
|
-
|
|
358
|
+
version(): string;
|
|
359
|
+
help(command?: Command): string[];
|
|
360
|
+
option<F extends string, T = string>(format: F, description: string, config?: Omit<OptionConfig<T>, 'description'>): Breadc<GlobalOption & ExtractOption<F>>;
|
|
361
|
+
option<F extends string, T = string>(format: F, config?: OptionConfig<T>): Breadc<GlobalOption & ExtractOption<F>>;
|
|
362
|
+
command<F extends string>(format: F, description: string, config?: Omit<CommandConfig, 'description'>): Command<F, GlobalOption>;
|
|
100
363
|
command<F extends string>(format: F, config?: CommandConfig): Command<F, GlobalOption>;
|
|
101
364
|
parse(args: string[]): ParseResult;
|
|
102
365
|
run(args: string[]): Promise<void>;
|
|
103
366
|
}
|
|
104
367
|
|
|
105
|
-
declare function breadc(name: string, option?: AppOption): Breadc<
|
|
368
|
+
declare function breadc(name: string, option?: AppOption): Breadc<{}>;
|
|
106
369
|
|
|
107
|
-
export { breadc as default };
|
|
370
|
+
export { breadc as default, minimist };
|