breadc 0.2.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 +1 -1
- package/dist/index.cjs +269 -24
- package/dist/index.d.ts +255 -8
- package/dist/index.mjs +269 -23
- package/package.json +6 -7
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/breadc) [](https://github.com/yjl9903/Breadc/actions/workflows/ci.yml)
|
|
4
4
|
|
|
5
|
-
Yet another Command Line Application Framework powered by [minimist](https://www.npmjs.com/package/minimist), but with fully [TypeScript](https://www.typescriptlang.org/) support.
|
|
5
|
+
Yet another Command Line Application Framework powered by [minimist](https://www.npmjs.com/package/minimist), but with fully strong [TypeScript](https://www.typescriptlang.org/) support.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
package/dist/index.cjs
CHANGED
|
@@ -3,37 +3,283 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const kolorist = require('kolorist');
|
|
6
|
-
const minimist = require('minimist');
|
|
7
|
-
const createDebug = require('debug');
|
|
8
6
|
|
|
9
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
10
8
|
|
|
11
9
|
const kolorist__default = /*#__PURE__*/_interopDefaultLegacy(kolorist);
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
|
|
11
|
+
var minimist = function (args, opts) {
|
|
12
|
+
if (!opts) opts = {};
|
|
13
|
+
|
|
14
|
+
var flags = { bools : {}, strings : {}, unknownFn: null };
|
|
15
|
+
|
|
16
|
+
if (typeof opts['unknown'] === 'function') {
|
|
17
|
+
flags.unknownFn = opts['unknown'];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
|
|
21
|
+
flags.allBools = true;
|
|
22
|
+
} else {
|
|
23
|
+
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
|
24
|
+
flags.bools[key] = true;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var aliases = {};
|
|
29
|
+
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
30
|
+
aliases[key] = [].concat(opts.alias[key]);
|
|
31
|
+
aliases[key].forEach(function (x) {
|
|
32
|
+
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
33
|
+
return x !== y;
|
|
34
|
+
}));
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
|
39
|
+
flags.strings[key] = true;
|
|
40
|
+
if (aliases[key]) {
|
|
41
|
+
flags.strings[aliases[key]] = true;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
var defaults = opts['default'] || {};
|
|
46
|
+
|
|
47
|
+
var argv = { _ : [] };
|
|
48
|
+
Object.keys(flags.bools).forEach(function (key) {
|
|
49
|
+
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
var notFlags = [];
|
|
53
|
+
|
|
54
|
+
if (args.indexOf('--') !== -1) {
|
|
55
|
+
notFlags = args.slice(args.indexOf('--')+1);
|
|
56
|
+
args = args.slice(0, args.indexOf('--'));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function argDefined(key, arg) {
|
|
60
|
+
return (flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
61
|
+
flags.strings[key] || flags.bools[key] || aliases[key];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function setArg (key, val, arg) {
|
|
65
|
+
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
66
|
+
if (flags.unknownFn(arg) === false) return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
var value = !flags.strings[key] && isNumber(val)
|
|
70
|
+
? Number(val) : val
|
|
71
|
+
;
|
|
72
|
+
setKey(argv, key.split('.'), value);
|
|
73
|
+
|
|
74
|
+
(aliases[key] || []).forEach(function (x) {
|
|
75
|
+
setKey(argv, x.split('.'), value);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function setKey (obj, keys, value) {
|
|
80
|
+
var o = obj;
|
|
81
|
+
for (var i = 0; i < keys.length-1; i++) {
|
|
82
|
+
var key = keys[i];
|
|
83
|
+
if (isConstructorOrProto(o, key)) return;
|
|
84
|
+
if (o[key] === undefined) o[key] = {};
|
|
85
|
+
if (o[key] === Object.prototype || o[key] === Number.prototype
|
|
86
|
+
|| o[key] === String.prototype) o[key] = {};
|
|
87
|
+
if (o[key] === Array.prototype) o[key] = [];
|
|
88
|
+
o = o[key];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var key = keys[keys.length - 1];
|
|
92
|
+
if (isConstructorOrProto(o, key)) return;
|
|
93
|
+
if (o === Object.prototype || o === Number.prototype
|
|
94
|
+
|| o === String.prototype) o = {};
|
|
95
|
+
if (o === Array.prototype) o = [];
|
|
96
|
+
if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
|
|
97
|
+
o[key] = value;
|
|
98
|
+
}
|
|
99
|
+
else if (Array.isArray(o[key])) {
|
|
100
|
+
o[key].push(value);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
o[key] = [ o[key], value ];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function aliasIsBoolean(key) {
|
|
108
|
+
return aliases[key].some(function (x) {
|
|
109
|
+
return flags.bools[x];
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
for (var i = 0; i < args.length; i++) {
|
|
114
|
+
var arg = args[i];
|
|
115
|
+
|
|
116
|
+
if (/^--.+=/.test(arg)) {
|
|
117
|
+
// Using [\s\S] instead of . because js doesn't support the
|
|
118
|
+
// 'dotall' regex modifier. See:
|
|
119
|
+
// http://stackoverflow.com/a/1068308/13216
|
|
120
|
+
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
121
|
+
var key = m[1];
|
|
122
|
+
var value = m[2];
|
|
123
|
+
if (flags.bools[key]) {
|
|
124
|
+
value = value !== 'false';
|
|
125
|
+
}
|
|
126
|
+
setArg(key, value, arg);
|
|
127
|
+
}
|
|
128
|
+
else if (/^--no-.+/.test(arg)) {
|
|
129
|
+
var key = arg.match(/^--no-(.+)/)[1];
|
|
130
|
+
setArg(key, false, arg);
|
|
131
|
+
}
|
|
132
|
+
else if (/^--.+/.test(arg)) {
|
|
133
|
+
var key = arg.match(/^--(.+)/)[1];
|
|
134
|
+
var next = args[i + 1];
|
|
135
|
+
if (next !== undefined && !/^-/.test(next)
|
|
136
|
+
&& !flags.bools[key]
|
|
137
|
+
&& !flags.allBools
|
|
138
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
139
|
+
setArg(key, next, arg);
|
|
140
|
+
i++;
|
|
141
|
+
}
|
|
142
|
+
else if (/^(true|false)$/.test(next)) {
|
|
143
|
+
setArg(key, next === 'true', arg);
|
|
144
|
+
i++;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else if (/^-[^-]+/.test(arg)) {
|
|
151
|
+
var letters = arg.slice(1,-1).split('');
|
|
152
|
+
|
|
153
|
+
var broken = false;
|
|
154
|
+
for (var j = 0; j < letters.length; j++) {
|
|
155
|
+
var next = arg.slice(j+2);
|
|
156
|
+
|
|
157
|
+
if (next === '-') {
|
|
158
|
+
setArg(letters[j], next, arg);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
|
|
163
|
+
setArg(letters[j], next.split('=')[1], arg);
|
|
164
|
+
broken = true;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (/[A-Za-z]/.test(letters[j])
|
|
169
|
+
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
170
|
+
setArg(letters[j], next, arg);
|
|
171
|
+
broken = true;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
|
176
|
+
setArg(letters[j], arg.slice(j+2), arg);
|
|
177
|
+
broken = true;
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
var key = arg.slice(-1)[0];
|
|
186
|
+
if (!broken && key !== '-') {
|
|
187
|
+
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
|
188
|
+
&& !flags.bools[key]
|
|
189
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
190
|
+
setArg(key, args[i+1], arg);
|
|
191
|
+
i++;
|
|
192
|
+
}
|
|
193
|
+
else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
|
|
194
|
+
setArg(key, args[i+1] === 'true', arg);
|
|
195
|
+
i++;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
204
|
+
argv._.push(
|
|
205
|
+
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
if (opts.stopEarly) {
|
|
209
|
+
argv._.push.apply(argv._, args.slice(i + 1));
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
Object.keys(defaults).forEach(function (key) {
|
|
216
|
+
if (!hasKey(argv, key.split('.'))) {
|
|
217
|
+
setKey(argv, key.split('.'), defaults[key]);
|
|
218
|
+
|
|
219
|
+
(aliases[key] || []).forEach(function (x) {
|
|
220
|
+
setKey(argv, x.split('.'), defaults[key]);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
if (opts['--']) {
|
|
226
|
+
argv['--'] = new Array();
|
|
227
|
+
notFlags.forEach(function(key) {
|
|
228
|
+
argv['--'].push(key);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
notFlags.forEach(function(key) {
|
|
233
|
+
argv._.push(key);
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
return argv;
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
function hasKey (obj, keys) {
|
|
241
|
+
var o = obj;
|
|
242
|
+
keys.slice(0,-1).forEach(function (key) {
|
|
243
|
+
o = (o[key] || {});
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
var key = keys[keys.length - 1];
|
|
247
|
+
return key in o;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function isNumber (x) {
|
|
251
|
+
if (typeof x === 'number') return true;
|
|
252
|
+
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
|
253
|
+
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
function isConstructorOrProto (obj, key) {
|
|
258
|
+
return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
|
|
259
|
+
}
|
|
14
260
|
|
|
15
261
|
function createDefaultLogger(name, logger) {
|
|
16
|
-
|
|
17
|
-
return logger;
|
|
18
|
-
}
|
|
19
|
-
const debug = createDebug__default(name + ":breadc");
|
|
20
|
-
const println = !!logger && typeof logger === "function" ? logger : (message, ...args) => {
|
|
262
|
+
const println = !!logger && typeof logger === "function" ? logger : logger?.println ?? ((message, ...args) => {
|
|
21
263
|
console.log(message, ...args);
|
|
264
|
+
});
|
|
265
|
+
const info = typeof logger === "object" && logger?.info ? logger.info : (message, ...args) => {
|
|
266
|
+
println(`${kolorist.blue("INFO")} ${message}`, ...args);
|
|
267
|
+
};
|
|
268
|
+
const warn = typeof logger === "object" && logger?.warn ? logger.warn : (message, ...args) => {
|
|
269
|
+
println(`${kolorist.yellow("WARN")} ${message}`, ...args);
|
|
270
|
+
};
|
|
271
|
+
const error = typeof logger === "object" && logger?.error ? logger.error : (message, ...args) => {
|
|
272
|
+
println(`${kolorist.red("ERROR")} ${message}`, ...args);
|
|
273
|
+
};
|
|
274
|
+
const debug = typeof logger === "object" && logger?.debug ? logger.debug : (message, ...args) => {
|
|
275
|
+
println(`${kolorist.gray(name)} ${message}`, ...args);
|
|
22
276
|
};
|
|
23
277
|
return {
|
|
24
278
|
println,
|
|
25
|
-
info
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
println(`${kolorist.yellow("WARN")} ${message}`, ...args);
|
|
30
|
-
},
|
|
31
|
-
error(message, ...args) {
|
|
32
|
-
println(`${kolorist.red("ERROR")} ${message}`, ...args);
|
|
33
|
-
},
|
|
34
|
-
debug(message, ...args) {
|
|
35
|
-
debug(message, ...args);
|
|
36
|
-
}
|
|
279
|
+
info,
|
|
280
|
+
warn,
|
|
281
|
+
error,
|
|
282
|
+
debug
|
|
37
283
|
};
|
|
38
284
|
}
|
|
39
285
|
|
|
@@ -340,7 +586,7 @@ class Breadc {
|
|
|
340
586
|
}
|
|
341
587
|
return map;
|
|
342
588
|
}, {});
|
|
343
|
-
const argv =
|
|
589
|
+
const argv = minimist(args, {
|
|
344
590
|
string: allowOptions.filter((o) => o.type === "string").map((o) => o.name),
|
|
345
591
|
boolean: allowOptions.filter((o) => o.type === "boolean").map((o) => o.name),
|
|
346
592
|
alias,
|
|
@@ -399,6 +645,5 @@ function breadc(name, option = {}) {
|
|
|
399
645
|
}
|
|
400
646
|
|
|
401
647
|
exports.kolorist = kolorist__default;
|
|
402
|
-
exports.minimist = minimist__default;
|
|
403
|
-
exports.createDebug = createDebug__default;
|
|
404
648
|
exports["default"] = breadc;
|
|
649
|
+
exports.minimist = minimist;
|
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;
|
|
@@ -30,7 +277,7 @@ declare class Option<T extends string = string, F = string> {
|
|
|
30
277
|
constructor(format: T, config?: OptionConfig<F>);
|
|
31
278
|
}
|
|
32
279
|
|
|
33
|
-
declare type ConditionFn = (args: ParsedArgs) => boolean;
|
|
280
|
+
declare type ConditionFn = (args: minimist.ParsedArgs) => boolean;
|
|
34
281
|
interface CommandConfig {
|
|
35
282
|
description?: string;
|
|
36
283
|
}
|
|
@@ -50,8 +297,8 @@ declare class Command<F extends string = string, CommandOption extends object =
|
|
|
50
297
|
option<OF extends string, T = string>(format: OF, description: string, config?: Omit<OptionConfig<T>, 'description'>): Command<F, CommandOption & ExtractOption<OF>>;
|
|
51
298
|
option<OF extends string, T = string>(format: OF, config?: OptionConfig<T>): Command<F, CommandOption & ExtractOption<OF>>;
|
|
52
299
|
get hasConditionFn(): boolean;
|
|
53
|
-
shouldRun(args: ParsedArgs): boolean;
|
|
54
|
-
parseArgs(args: ParsedArgs, globalOptions: Option[]): ParseResult;
|
|
300
|
+
shouldRun(args: minimist.ParsedArgs): boolean;
|
|
301
|
+
parseArgs(args: minimist.ParsedArgs, globalOptions: Option[]): ParseResult;
|
|
55
302
|
action(fn: ActionFn<ExtractCommand<F>, CommandOption>): this;
|
|
56
303
|
run(...args: any[]): Promise<void>;
|
|
57
304
|
}
|
|
@@ -60,7 +307,7 @@ interface AppOption {
|
|
|
60
307
|
version?: string;
|
|
61
308
|
description?: string | string[];
|
|
62
309
|
help?: string | string[] | (() => string | string[]);
|
|
63
|
-
logger?: Logger | LoggerFn;
|
|
310
|
+
logger?: Partial<Logger> | LoggerFn;
|
|
64
311
|
}
|
|
65
312
|
declare type LoggerFn = (message: string, ...args: any[]) => void;
|
|
66
313
|
interface Logger {
|
|
@@ -120,4 +367,4 @@ declare class Breadc<GlobalOption extends object = {}> {
|
|
|
120
367
|
|
|
121
368
|
declare function breadc(name: string, option?: AppOption): Breadc<{}>;
|
|
122
369
|
|
|
123
|
-
export { breadc as default };
|
|
370
|
+
export { breadc as default, minimist };
|
package/dist/index.mjs
CHANGED
|
@@ -1,32 +1,278 @@
|
|
|
1
|
-
import { blue, yellow, red } from 'kolorist';
|
|
1
|
+
import { blue, yellow, red, gray } from 'kolorist';
|
|
2
2
|
export { default as kolorist } from 'kolorist';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
|
|
4
|
+
var minimist = function (args, opts) {
|
|
5
|
+
if (!opts) opts = {};
|
|
6
|
+
|
|
7
|
+
var flags = { bools : {}, strings : {}, unknownFn: null };
|
|
8
|
+
|
|
9
|
+
if (typeof opts['unknown'] === 'function') {
|
|
10
|
+
flags.unknownFn = opts['unknown'];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
|
|
14
|
+
flags.allBools = true;
|
|
15
|
+
} else {
|
|
16
|
+
[].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
|
|
17
|
+
flags.bools[key] = true;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
var aliases = {};
|
|
22
|
+
Object.keys(opts.alias || {}).forEach(function (key) {
|
|
23
|
+
aliases[key] = [].concat(opts.alias[key]);
|
|
24
|
+
aliases[key].forEach(function (x) {
|
|
25
|
+
aliases[x] = [key].concat(aliases[key].filter(function (y) {
|
|
26
|
+
return x !== y;
|
|
27
|
+
}));
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
[].concat(opts.string).filter(Boolean).forEach(function (key) {
|
|
32
|
+
flags.strings[key] = true;
|
|
33
|
+
if (aliases[key]) {
|
|
34
|
+
flags.strings[aliases[key]] = true;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
var defaults = opts['default'] || {};
|
|
39
|
+
|
|
40
|
+
var argv = { _ : [] };
|
|
41
|
+
Object.keys(flags.bools).forEach(function (key) {
|
|
42
|
+
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
var notFlags = [];
|
|
46
|
+
|
|
47
|
+
if (args.indexOf('--') !== -1) {
|
|
48
|
+
notFlags = args.slice(args.indexOf('--')+1);
|
|
49
|
+
args = args.slice(0, args.indexOf('--'));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function argDefined(key, arg) {
|
|
53
|
+
return (flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
54
|
+
flags.strings[key] || flags.bools[key] || aliases[key];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function setArg (key, val, arg) {
|
|
58
|
+
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
59
|
+
if (flags.unknownFn(arg) === false) return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
var value = !flags.strings[key] && isNumber(val)
|
|
63
|
+
? Number(val) : val
|
|
64
|
+
;
|
|
65
|
+
setKey(argv, key.split('.'), value);
|
|
66
|
+
|
|
67
|
+
(aliases[key] || []).forEach(function (x) {
|
|
68
|
+
setKey(argv, x.split('.'), value);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function setKey (obj, keys, value) {
|
|
73
|
+
var o = obj;
|
|
74
|
+
for (var i = 0; i < keys.length-1; i++) {
|
|
75
|
+
var key = keys[i];
|
|
76
|
+
if (isConstructorOrProto(o, key)) return;
|
|
77
|
+
if (o[key] === undefined) o[key] = {};
|
|
78
|
+
if (o[key] === Object.prototype || o[key] === Number.prototype
|
|
79
|
+
|| o[key] === String.prototype) o[key] = {};
|
|
80
|
+
if (o[key] === Array.prototype) o[key] = [];
|
|
81
|
+
o = o[key];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var key = keys[keys.length - 1];
|
|
85
|
+
if (isConstructorOrProto(o, key)) return;
|
|
86
|
+
if (o === Object.prototype || o === Number.prototype
|
|
87
|
+
|| o === String.prototype) o = {};
|
|
88
|
+
if (o === Array.prototype) o = [];
|
|
89
|
+
if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
|
|
90
|
+
o[key] = value;
|
|
91
|
+
}
|
|
92
|
+
else if (Array.isArray(o[key])) {
|
|
93
|
+
o[key].push(value);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
o[key] = [ o[key], value ];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function aliasIsBoolean(key) {
|
|
101
|
+
return aliases[key].some(function (x) {
|
|
102
|
+
return flags.bools[x];
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
for (var i = 0; i < args.length; i++) {
|
|
107
|
+
var arg = args[i];
|
|
108
|
+
|
|
109
|
+
if (/^--.+=/.test(arg)) {
|
|
110
|
+
// Using [\s\S] instead of . because js doesn't support the
|
|
111
|
+
// 'dotall' regex modifier. See:
|
|
112
|
+
// http://stackoverflow.com/a/1068308/13216
|
|
113
|
+
var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
114
|
+
var key = m[1];
|
|
115
|
+
var value = m[2];
|
|
116
|
+
if (flags.bools[key]) {
|
|
117
|
+
value = value !== 'false';
|
|
118
|
+
}
|
|
119
|
+
setArg(key, value, arg);
|
|
120
|
+
}
|
|
121
|
+
else if (/^--no-.+/.test(arg)) {
|
|
122
|
+
var key = arg.match(/^--no-(.+)/)[1];
|
|
123
|
+
setArg(key, false, arg);
|
|
124
|
+
}
|
|
125
|
+
else if (/^--.+/.test(arg)) {
|
|
126
|
+
var key = arg.match(/^--(.+)/)[1];
|
|
127
|
+
var next = args[i + 1];
|
|
128
|
+
if (next !== undefined && !/^-/.test(next)
|
|
129
|
+
&& !flags.bools[key]
|
|
130
|
+
&& !flags.allBools
|
|
131
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
132
|
+
setArg(key, next, arg);
|
|
133
|
+
i++;
|
|
134
|
+
}
|
|
135
|
+
else if (/^(true|false)$/.test(next)) {
|
|
136
|
+
setArg(key, next === 'true', arg);
|
|
137
|
+
i++;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (/^-[^-]+/.test(arg)) {
|
|
144
|
+
var letters = arg.slice(1,-1).split('');
|
|
145
|
+
|
|
146
|
+
var broken = false;
|
|
147
|
+
for (var j = 0; j < letters.length; j++) {
|
|
148
|
+
var next = arg.slice(j+2);
|
|
149
|
+
|
|
150
|
+
if (next === '-') {
|
|
151
|
+
setArg(letters[j], next, arg);
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
|
|
156
|
+
setArg(letters[j], next.split('=')[1], arg);
|
|
157
|
+
broken = true;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (/[A-Za-z]/.test(letters[j])
|
|
162
|
+
&& /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
163
|
+
setArg(letters[j], next, arg);
|
|
164
|
+
broken = true;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (letters[j+1] && letters[j+1].match(/\W/)) {
|
|
169
|
+
setArg(letters[j], arg.slice(j+2), arg);
|
|
170
|
+
broken = true;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
var key = arg.slice(-1)[0];
|
|
179
|
+
if (!broken && key !== '-') {
|
|
180
|
+
if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
|
|
181
|
+
&& !flags.bools[key]
|
|
182
|
+
&& (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
183
|
+
setArg(key, args[i+1], arg);
|
|
184
|
+
i++;
|
|
185
|
+
}
|
|
186
|
+
else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
|
|
187
|
+
setArg(key, args[i+1] === 'true', arg);
|
|
188
|
+
i++;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
setArg(key, flags.strings[key] ? '' : true, arg);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
197
|
+
argv._.push(
|
|
198
|
+
flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
if (opts.stopEarly) {
|
|
202
|
+
argv._.push.apply(argv._, args.slice(i + 1));
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
Object.keys(defaults).forEach(function (key) {
|
|
209
|
+
if (!hasKey(argv, key.split('.'))) {
|
|
210
|
+
setKey(argv, key.split('.'), defaults[key]);
|
|
211
|
+
|
|
212
|
+
(aliases[key] || []).forEach(function (x) {
|
|
213
|
+
setKey(argv, x.split('.'), defaults[key]);
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
if (opts['--']) {
|
|
219
|
+
argv['--'] = new Array();
|
|
220
|
+
notFlags.forEach(function(key) {
|
|
221
|
+
argv['--'].push(key);
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
notFlags.forEach(function(key) {
|
|
226
|
+
argv._.push(key);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return argv;
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
function hasKey (obj, keys) {
|
|
234
|
+
var o = obj;
|
|
235
|
+
keys.slice(0,-1).forEach(function (key) {
|
|
236
|
+
o = (o[key] || {});
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
var key = keys[keys.length - 1];
|
|
240
|
+
return key in o;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function isNumber (x) {
|
|
244
|
+
if (typeof x === 'number') return true;
|
|
245
|
+
if (/^0x[0-9a-f]+$/i.test(x)) return true;
|
|
246
|
+
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
function isConstructorOrProto (obj, key) {
|
|
251
|
+
return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__';
|
|
252
|
+
}
|
|
7
253
|
|
|
8
254
|
function createDefaultLogger(name, logger) {
|
|
9
|
-
|
|
10
|
-
return logger;
|
|
11
|
-
}
|
|
12
|
-
const debug = createDebug(name + ":breadc");
|
|
13
|
-
const println = !!logger && typeof logger === "function" ? logger : (message, ...args) => {
|
|
255
|
+
const println = !!logger && typeof logger === "function" ? logger : logger?.println ?? ((message, ...args) => {
|
|
14
256
|
console.log(message, ...args);
|
|
257
|
+
});
|
|
258
|
+
const info = typeof logger === "object" && logger?.info ? logger.info : (message, ...args) => {
|
|
259
|
+
println(`${blue("INFO")} ${message}`, ...args);
|
|
260
|
+
};
|
|
261
|
+
const warn = typeof logger === "object" && logger?.warn ? logger.warn : (message, ...args) => {
|
|
262
|
+
println(`${yellow("WARN")} ${message}`, ...args);
|
|
263
|
+
};
|
|
264
|
+
const error = typeof logger === "object" && logger?.error ? logger.error : (message, ...args) => {
|
|
265
|
+
println(`${red("ERROR")} ${message}`, ...args);
|
|
266
|
+
};
|
|
267
|
+
const debug = typeof logger === "object" && logger?.debug ? logger.debug : (message, ...args) => {
|
|
268
|
+
println(`${gray(name)} ${message}`, ...args);
|
|
15
269
|
};
|
|
16
270
|
return {
|
|
17
271
|
println,
|
|
18
|
-
info
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
println(`${yellow("WARN")} ${message}`, ...args);
|
|
23
|
-
},
|
|
24
|
-
error(message, ...args) {
|
|
25
|
-
println(`${red("ERROR")} ${message}`, ...args);
|
|
26
|
-
},
|
|
27
|
-
debug(message, ...args) {
|
|
28
|
-
debug(message, ...args);
|
|
29
|
-
}
|
|
272
|
+
info,
|
|
273
|
+
warn,
|
|
274
|
+
error,
|
|
275
|
+
debug
|
|
30
276
|
};
|
|
31
277
|
}
|
|
32
278
|
|
|
@@ -391,4 +637,4 @@ function breadc(name, option = {}) {
|
|
|
391
637
|
return new Breadc(name, option);
|
|
392
638
|
}
|
|
393
639
|
|
|
394
|
-
export { breadc as default };
|
|
640
|
+
export { breadc as default, minimist };
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "breadc",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Yet another Command Line Application Framework",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Yet another Command Line Application Framework with fully strong TypeScript support",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
7
7
|
"framework",
|
|
8
8
|
"command-line",
|
|
9
|
-
"minimist"
|
|
9
|
+
"minimist",
|
|
10
|
+
"typescript"
|
|
10
11
|
],
|
|
11
12
|
"homepage": "https://github.com/yjl9903/Breadc#readme",
|
|
12
13
|
"bugs": {
|
|
@@ -33,15 +34,13 @@
|
|
|
33
34
|
"dist"
|
|
34
35
|
],
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"
|
|
37
|
-
"kolorist": "^1.5.1",
|
|
38
|
-
"minimist": "^1.2.6"
|
|
37
|
+
"kolorist": "^1.5.1"
|
|
39
38
|
},
|
|
40
39
|
"devDependencies": {
|
|
41
|
-
"@types/debug": "^4.1.7",
|
|
42
40
|
"@types/minimist": "^1.2.2",
|
|
43
41
|
"@types/node": "^17.0.43",
|
|
44
42
|
"bumpp": "^8.2.1",
|
|
43
|
+
"minimist": "^1.2.6",
|
|
45
44
|
"prettier": "^2.7.1",
|
|
46
45
|
"typescript": "^4.7.4",
|
|
47
46
|
"unbuild": "^0.7.4",
|