@rolldown/browser 1.0.0-rc.1 → 1.0.0-rc.10
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/cli.mjs +708 -1101
- package/dist/config.d.mts +9 -4
- package/dist/config.mjs +9 -13
- package/dist/{shared/constructors-BTW-c3jX.mjs → constructors-DsfxKD6A.js} +14 -7
- package/dist/error-BeZaDkS8.js +157 -0
- package/dist/experimental-index.browser.mjs +74 -15
- package/dist/experimental-index.d.mts +128 -56
- package/dist/experimental-index.mjs +76 -17
- package/dist/filter-index.d.mts +1 -1
- package/dist/filter-index.mjs +25 -6
- package/dist/get-log-filter.d.mts +3 -7
- package/dist/get-log-filter.mjs +23 -3
- package/dist/index.browser.mjs +70 -75
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +10 -12
- package/dist/{normalize-string-or-regex-CL-PJZI7.js → normalize-string-or-regex-TtAGUp42.js} +6 -12
- package/dist/parallel-plugin-worker.mjs +6 -7
- package/dist/parallel-plugin.d.mts +4 -4
- package/dist/parallel-plugin.mjs +1 -2
- package/dist/parse-ast-index.d.mts +27 -3
- package/dist/parse-ast-index.mjs +60 -3
- package/dist/plugins-index.browser.mjs +8 -7
- package/dist/plugins-index.d.mts +7 -4
- package/dist/plugins-index.mjs +8 -7
- package/dist/resolve-tsconfig-DThkUPSZ.js +112 -0
- package/dist/rolldown-binding.wasi-browser.js +6 -1
- package/dist/rolldown-binding.wasi.cjs +6 -1
- package/dist/rolldown-binding.wasm32-wasi.wasm +0 -0
- package/dist/{rolldown-build-C4tDS_XC.js → rolldown-build-Chx5S-TB.js} +1038 -744
- package/dist/shared/{bindingify-input-options-Bp2kpiI8.mjs → bindingify-input-options-Czbczr8Z.mjs} +102 -165
- package/dist/shared/{composable-filters-CIxSuZSM.mjs → composable-filters-B2ByPP8y.mjs} +1 -4
- package/dist/shared/{constructors-5bt5oBhE.d.mts → constructors-BVnf_fH1.d.mts} +13 -4
- package/dist/{constructors-B8gqcrFr.js → shared/constructors-CemeNi29.mjs} +14 -7
- package/dist/shared/{define-config-Dlptvz3X.mjs → define-config-DJOr6Iwt.mjs} +1 -2
- package/dist/shared/define-config-i6TWE2hm.d.mts +3855 -0
- package/dist/shared/error-CQ6njWsV.mjs +86 -0
- package/dist/shared/get-log-filter-semyr3Lj.d.mts +35 -0
- package/dist/shared/{load-config-BBZgIUGN.mjs → load-config-CxvL5JxT.mjs} +11 -5
- package/dist/shared/{logging-Nvu645a7.d.mts → logging-C6h4g8dA.d.mts} +6 -6
- package/dist/shared/{logs-B2CASPcx.mjs → logs-D80CXhvg.mjs} +6 -9
- package/dist/shared/{normalize-string-or-regex-DIwprzLy.mjs → normalize-string-or-regex-CF3Uz6aU.mjs} +2 -5
- package/dist/shared/parse-CRhjbrcT.mjs +73 -0
- package/dist/shared/{prompt-B6NrDD1-.mjs → prompt-BYQIwEjg.mjs} +4 -6
- package/dist/shared/resolve-tsconfig-Cwoo4h_o.mjs +112 -0
- package/dist/shared/{rolldown-C0_W0QdY.mjs → rolldown-C3wFxOwq.mjs} +2 -4
- package/dist/shared/rolldown-build-ChZOz6BP.mjs +3318 -0
- package/dist/shared/transform-DEgNAQOQ.d.mts +149 -0
- package/dist/shared/{types-CIYK49jr.d.mts → types-Cx3HYorz.d.mts} +5 -3
- package/dist/shared/{watch-eIop0yN6.mjs → watch-C1jC1oFT.mjs} +71 -76
- package/dist/utils-index.browser.mjs +2414 -0
- package/dist/utils-index.d.mts +374 -0
- package/dist/utils-index.mjs +2415 -0
- package/package.json +1 -1
- package/dist/cli-setup.d.mts +0 -1
- package/dist/cli-setup.mjs +0 -16
- package/dist/shared/define-config-CDlEOpr1.d.mts +0 -3531
- package/dist/shared/parse-ast-index-2ahkCVK6.mjs +0 -98
- package/dist/shared/rolldown-build-DLuUhuNw.mjs +0 -2368
- /package/dist/shared/{utils-CqMTwlsR.d.mts → utils-6wxe_LMG.d.mts} +0 -0
package/dist/cli.mjs
CHANGED
|
@@ -1,995 +1,632 @@
|
|
|
1
|
-
import { n as onExit, t as watch } from "./shared/watch-
|
|
2
|
-
import "./shared/normalize-string-or-regex-
|
|
3
|
-
import { C as
|
|
4
|
-
import { h as arraify } from "./shared/composable-filters-
|
|
5
|
-
import { a as
|
|
6
|
-
import "./shared/
|
|
7
|
-
import
|
|
8
|
-
import { t as
|
|
9
|
-
import
|
|
10
|
-
import
|
|
1
|
+
import { n as onExit, t as watch } from "./shared/watch-C1jC1oFT.mjs";
|
|
2
|
+
import "./shared/normalize-string-or-regex-CF3Uz6aU.mjs";
|
|
3
|
+
import { C as version, S as description } from "./shared/bindingify-input-options-Czbczr8Z.mjs";
|
|
4
|
+
import { h as arraify } from "./shared/composable-filters-B2ByPP8y.mjs";
|
|
5
|
+
import { a as getInputCliKeys, i as getCliSchemaInfo, l as styleText, o as getOutputCliKeys, r as logger, s as validateCliOptions } from "./shared/rolldown-build-ChZOz6BP.mjs";
|
|
6
|
+
import "./shared/error-CQ6njWsV.mjs";
|
|
7
|
+
import "./shared/parse-CRhjbrcT.mjs";
|
|
8
|
+
import { t as rolldown } from "./shared/rolldown-C3wFxOwq.mjs";
|
|
9
|
+
import { t as loadConfig } from "./shared/load-config-CxvL5JxT.mjs";
|
|
10
|
+
import path from "node:path";
|
|
11
11
|
import process$1 from "node:process";
|
|
12
|
-
import * as tty from "node:tty";
|
|
13
12
|
import { performance } from "node:perf_hooks";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
silent: Number.NEGATIVE_INFINITY,
|
|
18
|
-
fatal: 0,
|
|
19
|
-
error: 0,
|
|
20
|
-
warn: 1,
|
|
21
|
-
log: 2,
|
|
22
|
-
info: 3,
|
|
23
|
-
success: 3,
|
|
24
|
-
fail: 3,
|
|
25
|
-
ready: 3,
|
|
26
|
-
start: 3,
|
|
27
|
-
box: 3,
|
|
28
|
-
debug: 4,
|
|
29
|
-
trace: 5,
|
|
30
|
-
verbose: Number.POSITIVE_INFINITY
|
|
31
|
-
};
|
|
32
|
-
const LogTypes = {
|
|
33
|
-
silent: { level: -1 },
|
|
34
|
-
fatal: { level: LogLevels.fatal },
|
|
35
|
-
error: { level: LogLevels.error },
|
|
36
|
-
warn: { level: LogLevels.warn },
|
|
37
|
-
log: { level: LogLevels.log },
|
|
38
|
-
info: { level: LogLevels.info },
|
|
39
|
-
success: { level: LogLevels.success },
|
|
40
|
-
fail: { level: LogLevels.fail },
|
|
41
|
-
ready: { level: LogLevels.info },
|
|
42
|
-
start: { level: LogLevels.info },
|
|
43
|
-
box: { level: LogLevels.info },
|
|
44
|
-
debug: { level: LogLevels.debug },
|
|
45
|
-
trace: { level: LogLevels.trace },
|
|
46
|
-
verbose: { level: LogLevels.verbose }
|
|
47
|
-
};
|
|
48
|
-
function isPlainObject$1(value) {
|
|
49
|
-
if (value === null || typeof value !== "object") return false;
|
|
50
|
-
const prototype = Object.getPrototypeOf(value);
|
|
51
|
-
if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) return false;
|
|
52
|
-
if (Symbol.iterator in value) return false;
|
|
53
|
-
if (Symbol.toStringTag in value) return Object.prototype.toString.call(value) === "[object Module]";
|
|
54
|
-
return true;
|
|
13
|
+
//#region ../../node_modules/.pnpm/cac@7.0.0/node_modules/cac/dist/index.js
|
|
14
|
+
function toArr(any) {
|
|
15
|
+
return any == null ? [] : Array.isArray(any) ? any : [any];
|
|
55
16
|
}
|
|
56
|
-
function
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
for (const key in baseObject) {
|
|
60
|
-
if (key === "__proto__" || key === "constructor") continue;
|
|
61
|
-
const value = baseObject[key];
|
|
62
|
-
if (value === null || value === void 0) continue;
|
|
63
|
-
if (merger && merger(object, key, value, namespace)) continue;
|
|
64
|
-
if (Array.isArray(value) && Array.isArray(object[key])) object[key] = [...value, ...object[key]];
|
|
65
|
-
else if (isPlainObject$1(value) && isPlainObject$1(object[key])) object[key] = _defu(value, object[key], (namespace ? `${namespace}.` : "") + key.toString(), merger);
|
|
66
|
-
else object[key] = value;
|
|
67
|
-
}
|
|
68
|
-
return object;
|
|
17
|
+
function toVal(out, key, val, opts) {
|
|
18
|
+
var x, old = out[key], nxt = !!~opts.string.indexOf(key) ? val == null || val === true ? "" : String(val) : typeof val === "boolean" ? val : !!~opts.boolean.indexOf(key) ? val === "false" ? false : val === "true" || (out._.push((x = +val, x * 0 === 0) ? x : val), !!val) : (x = +val, x * 0 === 0) ? x : val;
|
|
19
|
+
out[key] = old == null ? nxt : Array.isArray(old) ? old.concat(nxt) : [old, nxt];
|
|
69
20
|
}
|
|
70
|
-
function
|
|
71
|
-
|
|
21
|
+
function lib_default(args, opts) {
|
|
22
|
+
args = args || [];
|
|
23
|
+
opts = opts || {};
|
|
24
|
+
var k, arr, arg, name, val, out = { _: [] };
|
|
25
|
+
var i = 0, j = 0, idx = 0, len = args.length;
|
|
26
|
+
const alibi = opts.alias !== void 0;
|
|
27
|
+
const strict = opts.unknown !== void 0;
|
|
28
|
+
const defaults = opts.default !== void 0;
|
|
29
|
+
opts.alias = opts.alias || {};
|
|
30
|
+
opts.string = toArr(opts.string);
|
|
31
|
+
opts.boolean = toArr(opts.boolean);
|
|
32
|
+
if (alibi) for (k in opts.alias) {
|
|
33
|
+
arr = opts.alias[k] = toArr(opts.alias[k]);
|
|
34
|
+
for (i = 0; i < arr.length; i++) (opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);
|
|
35
|
+
}
|
|
36
|
+
for (i = opts.boolean.length; i-- > 0;) {
|
|
37
|
+
arr = opts.alias[opts.boolean[i]] || [];
|
|
38
|
+
for (j = arr.length; j-- > 0;) opts.boolean.push(arr[j]);
|
|
39
|
+
}
|
|
40
|
+
for (i = opts.string.length; i-- > 0;) {
|
|
41
|
+
arr = opts.alias[opts.string[i]] || [];
|
|
42
|
+
for (j = arr.length; j-- > 0;) opts.string.push(arr[j]);
|
|
43
|
+
}
|
|
44
|
+
if (defaults) for (k in opts.default) {
|
|
45
|
+
name = typeof opts.default[k];
|
|
46
|
+
arr = opts.alias[k] = opts.alias[k] || [];
|
|
47
|
+
if (opts[name] !== void 0) {
|
|
48
|
+
opts[name].push(k);
|
|
49
|
+
for (i = 0; i < arr.length; i++) opts[name].push(arr[i]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const keys = strict ? Object.keys(opts.alias) : [];
|
|
53
|
+
for (i = 0; i < len; i++) {
|
|
54
|
+
arg = args[i];
|
|
55
|
+
if (arg === "--") {
|
|
56
|
+
out._ = out._.concat(args.slice(++i));
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
for (j = 0; j < arg.length; j++) if (arg.charCodeAt(j) !== 45) break;
|
|
60
|
+
if (j === 0) out._.push(arg);
|
|
61
|
+
else if (arg.substring(j, j + 3) === "no-") {
|
|
62
|
+
name = arg.substring(j + 3);
|
|
63
|
+
if (strict && !~keys.indexOf(name)) return opts.unknown(arg);
|
|
64
|
+
out[name] = false;
|
|
65
|
+
} else {
|
|
66
|
+
for (idx = j + 1; idx < arg.length; idx++) if (arg.charCodeAt(idx) === 61) break;
|
|
67
|
+
name = arg.substring(j, idx);
|
|
68
|
+
val = arg.substring(++idx) || i + 1 === len || ("" + args[i + 1]).charCodeAt(0) === 45 || args[++i];
|
|
69
|
+
arr = j === 2 ? [name] : name;
|
|
70
|
+
for (idx = 0; idx < arr.length; idx++) {
|
|
71
|
+
name = arr[idx];
|
|
72
|
+
if (strict && !~keys.indexOf(name)) return opts.unknown("-".repeat(j) + name);
|
|
73
|
+
toVal(out, name, idx + 1 < arr.length || val, opts);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (defaults) {
|
|
78
|
+
for (k in opts.default) if (out[k] === void 0) out[k] = opts.default[k];
|
|
79
|
+
}
|
|
80
|
+
if (alibi) for (k in out) {
|
|
81
|
+
arr = opts.alias[k] || [];
|
|
82
|
+
while (arr.length > 0) out[arr.shift()] = out[k];
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
72
85
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
86
|
+
function removeBrackets(v) {
|
|
87
|
+
return v.replace(/[<[].+/, "").trim();
|
|
76
88
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
89
|
+
function findAllBrackets(v) {
|
|
90
|
+
const ANGLED_BRACKET_RE_GLOBAL = /<([^>]+)>/g;
|
|
91
|
+
const SQUARE_BRACKET_RE_GLOBAL = /\[([^\]]+)\]/g;
|
|
92
|
+
const res = [];
|
|
93
|
+
const parse = (match) => {
|
|
94
|
+
let variadic = false;
|
|
95
|
+
let value = match[1];
|
|
96
|
+
if (value.startsWith("...")) {
|
|
97
|
+
value = value.slice(3);
|
|
98
|
+
variadic = true;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
required: match[0].startsWith("<"),
|
|
102
|
+
value,
|
|
103
|
+
variadic
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
let angledMatch;
|
|
107
|
+
while (angledMatch = ANGLED_BRACKET_RE_GLOBAL.exec(v)) res.push(parse(angledMatch));
|
|
108
|
+
let squareMatch;
|
|
109
|
+
while (squareMatch = SQUARE_BRACKET_RE_GLOBAL.exec(v)) res.push(parse(squareMatch));
|
|
110
|
+
return res;
|
|
82
111
|
}
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
112
|
+
function getMriOptions(options) {
|
|
113
|
+
const result = {
|
|
114
|
+
alias: {},
|
|
115
|
+
boolean: []
|
|
116
|
+
};
|
|
117
|
+
for (const [index, option] of options.entries()) {
|
|
118
|
+
if (option.names.length > 1) result.alias[option.names[0]] = option.names.slice(1);
|
|
119
|
+
if (option.isBoolean) if (option.negated) {
|
|
120
|
+
if (!options.some((o, i) => {
|
|
121
|
+
return i !== index && o.names.some((name) => option.names.includes(name)) && typeof o.required === "boolean";
|
|
122
|
+
})) result.boolean.push(option.names[0]);
|
|
123
|
+
} else result.boolean.push(option.names[0]);
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
function findLongest(arr) {
|
|
128
|
+
return arr.sort((a, b) => {
|
|
129
|
+
return a.length > b.length ? -1 : 1;
|
|
130
|
+
})[0];
|
|
131
|
+
}
|
|
132
|
+
function padRight(str, length) {
|
|
133
|
+
return str.length >= length ? str : `${str}${" ".repeat(length - str.length)}`;
|
|
134
|
+
}
|
|
135
|
+
function camelcase(input) {
|
|
136
|
+
return input.replaceAll(/([a-z])-([a-z])/g, (_, p1, p2) => {
|
|
137
|
+
return p1 + p2.toUpperCase();
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
function setDotProp(obj, keys, val) {
|
|
141
|
+
let current = obj;
|
|
142
|
+
for (let i = 0; i < keys.length; i++) {
|
|
143
|
+
const key = keys[i];
|
|
144
|
+
if (i === keys.length - 1) {
|
|
145
|
+
current[key] = val;
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (current[key] == null) {
|
|
149
|
+
const nextKeyIsArrayIndex = +keys[i + 1] > -1;
|
|
150
|
+
current[key] = nextKeyIsArrayIndex ? [] : {};
|
|
151
|
+
}
|
|
152
|
+
current = current[key];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function setByType(obj, transforms) {
|
|
156
|
+
for (const key of Object.keys(transforms)) {
|
|
157
|
+
const transform = transforms[key];
|
|
158
|
+
if (transform.shouldTransform) {
|
|
159
|
+
obj[key] = [obj[key]].flat();
|
|
160
|
+
if (typeof transform.transformFunction === "function") obj[key] = obj[key].map(transform.transformFunction);
|
|
119
161
|
}
|
|
120
|
-
|
|
121
|
-
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function getFileName(input) {
|
|
165
|
+
const m = /([^\\/]+)$/.exec(input);
|
|
166
|
+
return m ? m[1] : "";
|
|
167
|
+
}
|
|
168
|
+
function camelcaseOptionName(name) {
|
|
169
|
+
return name.split(".").map((v, i) => {
|
|
170
|
+
return i === 0 ? camelcase(v) : v;
|
|
171
|
+
}).join(".");
|
|
172
|
+
}
|
|
173
|
+
var CACError = class extends Error {
|
|
174
|
+
constructor(message) {
|
|
175
|
+
super(message);
|
|
176
|
+
this.name = "CACError";
|
|
177
|
+
if (typeof Error.captureStackTrace !== "function") this.stack = new Error(message).stack;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
var Option = class {
|
|
181
|
+
rawName;
|
|
182
|
+
description;
|
|
183
|
+
/** Option name */
|
|
184
|
+
name;
|
|
185
|
+
/** Option name and aliases */
|
|
186
|
+
names;
|
|
187
|
+
isBoolean;
|
|
188
|
+
required;
|
|
189
|
+
config;
|
|
190
|
+
negated;
|
|
191
|
+
constructor(rawName, description, config) {
|
|
192
|
+
this.rawName = rawName;
|
|
193
|
+
this.description = description;
|
|
194
|
+
this.config = Object.assign({}, config);
|
|
195
|
+
rawName = rawName.replaceAll(".*", "");
|
|
196
|
+
this.negated = false;
|
|
197
|
+
this.names = removeBrackets(rawName).split(",").map((v) => {
|
|
198
|
+
let name = v.trim().replace(/^-{1,2}/, "");
|
|
199
|
+
if (name.startsWith("no-")) {
|
|
200
|
+
this.negated = true;
|
|
201
|
+
name = name.replace(/^no-/, "");
|
|
202
|
+
}
|
|
203
|
+
return camelcaseOptionName(name);
|
|
204
|
+
}).sort((a, b) => a.length > b.length ? 1 : -1);
|
|
205
|
+
this.name = this.names.at(-1);
|
|
206
|
+
if (this.negated && this.config.default == null) this.config.default = true;
|
|
207
|
+
if (rawName.includes("<")) this.required = true;
|
|
208
|
+
else if (rawName.includes("[")) this.required = false;
|
|
209
|
+
else this.isBoolean = true;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
let runtimeProcessArgs;
|
|
213
|
+
let runtimeInfo;
|
|
214
|
+
if (typeof process !== "undefined") {
|
|
215
|
+
let runtimeName;
|
|
216
|
+
if (typeof Deno !== "undefined" && typeof Deno.version?.deno === "string") runtimeName = "deno";
|
|
217
|
+
else if (typeof Bun !== "undefined" && typeof Bun.version === "string") runtimeName = "bun";
|
|
218
|
+
else runtimeName = "node";
|
|
219
|
+
runtimeInfo = `${process.platform}-${process.arch} ${runtimeName}-${process.version}`;
|
|
220
|
+
runtimeProcessArgs = process.argv;
|
|
221
|
+
} else if (typeof navigator === "undefined") runtimeInfo = `unknown`;
|
|
222
|
+
else runtimeInfo = `${navigator.platform} ${navigator.userAgent}`;
|
|
223
|
+
var Command = class {
|
|
224
|
+
rawName;
|
|
225
|
+
description;
|
|
226
|
+
config;
|
|
227
|
+
cli;
|
|
228
|
+
options;
|
|
229
|
+
aliasNames;
|
|
230
|
+
name;
|
|
231
|
+
args;
|
|
232
|
+
commandAction;
|
|
233
|
+
usageText;
|
|
234
|
+
versionNumber;
|
|
235
|
+
examples;
|
|
236
|
+
helpCallback;
|
|
237
|
+
globalCommand;
|
|
238
|
+
constructor(rawName, description, config = {}, cli) {
|
|
239
|
+
this.rawName = rawName;
|
|
240
|
+
this.description = description;
|
|
241
|
+
this.config = config;
|
|
242
|
+
this.cli = cli;
|
|
243
|
+
this.options = [];
|
|
244
|
+
this.aliasNames = [];
|
|
245
|
+
this.name = removeBrackets(rawName);
|
|
246
|
+
this.args = findAllBrackets(rawName);
|
|
247
|
+
this.examples = [];
|
|
248
|
+
}
|
|
249
|
+
usage(text) {
|
|
250
|
+
this.usageText = text;
|
|
251
|
+
return this;
|
|
252
|
+
}
|
|
253
|
+
allowUnknownOptions() {
|
|
254
|
+
this.config.allowUnknownOptions = true;
|
|
255
|
+
return this;
|
|
256
|
+
}
|
|
257
|
+
ignoreOptionDefaultValue() {
|
|
258
|
+
this.config.ignoreOptionDefaultValue = true;
|
|
259
|
+
return this;
|
|
260
|
+
}
|
|
261
|
+
version(version, customFlags = "-v, --version") {
|
|
262
|
+
this.versionNumber = version;
|
|
263
|
+
this.option(customFlags, "Display version number");
|
|
264
|
+
return this;
|
|
265
|
+
}
|
|
266
|
+
example(example) {
|
|
267
|
+
this.examples.push(example);
|
|
268
|
+
return this;
|
|
122
269
|
}
|
|
123
270
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* @
|
|
271
|
+
* Add a option for this command
|
|
272
|
+
* @param rawName Raw option name(s)
|
|
273
|
+
* @param description Option description
|
|
274
|
+
* @param config Option config
|
|
127
275
|
*/
|
|
128
|
-
|
|
129
|
-
|
|
276
|
+
option(rawName, description, config) {
|
|
277
|
+
const option = new Option(rawName, description, config);
|
|
278
|
+
this.options.push(option);
|
|
279
|
+
return this;
|
|
280
|
+
}
|
|
281
|
+
alias(name) {
|
|
282
|
+
this.aliasNames.push(name);
|
|
283
|
+
return this;
|
|
284
|
+
}
|
|
285
|
+
action(callback) {
|
|
286
|
+
this.commandAction = callback;
|
|
287
|
+
return this;
|
|
130
288
|
}
|
|
131
289
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
* @param {number} level - The new log level to set.
|
|
290
|
+
* Check if a command name is matched by this command
|
|
291
|
+
* @param name Command name
|
|
135
292
|
*/
|
|
136
|
-
|
|
137
|
-
this.
|
|
293
|
+
isMatched(name) {
|
|
294
|
+
return this.name === name || this.aliasNames.includes(name);
|
|
295
|
+
}
|
|
296
|
+
get isDefaultCommand() {
|
|
297
|
+
return this.name === "" || this.aliasNames.includes("!");
|
|
298
|
+
}
|
|
299
|
+
get isGlobalCommand() {
|
|
300
|
+
return this instanceof GlobalCommand;
|
|
138
301
|
}
|
|
139
302
|
/**
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* @template T
|
|
144
|
-
* @param {string} message - The message to display in the prompt.
|
|
145
|
-
* @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.
|
|
146
|
-
* @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.
|
|
303
|
+
* Check if an option is registered in this command
|
|
304
|
+
* @param name Option name
|
|
147
305
|
*/
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return this.options.
|
|
306
|
+
hasOption(name) {
|
|
307
|
+
name = name.split(".")[0];
|
|
308
|
+
return this.options.find((option) => {
|
|
309
|
+
return option.names.includes(name);
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
outputHelp() {
|
|
313
|
+
const { name, commands } = this.cli;
|
|
314
|
+
const { versionNumber, options: globalOptions, helpCallback } = this.cli.globalCommand;
|
|
315
|
+
let sections = [{ body: `${name}${versionNumber ? `/${versionNumber}` : ""}` }];
|
|
316
|
+
sections.push({
|
|
317
|
+
title: "Usage",
|
|
318
|
+
body: ` $ ${name} ${this.usageText || this.rawName}`
|
|
319
|
+
});
|
|
320
|
+
if ((this.isGlobalCommand || this.isDefaultCommand) && commands.length > 0) {
|
|
321
|
+
const longestCommandName = findLongest(commands.map((command) => command.rawName));
|
|
322
|
+
sections.push({
|
|
323
|
+
title: "Commands",
|
|
324
|
+
body: commands.map((command) => {
|
|
325
|
+
return ` ${padRight(command.rawName, longestCommandName.length)} ${command.description}`;
|
|
326
|
+
}).join("\n")
|
|
327
|
+
}, {
|
|
328
|
+
title: `For more info, run any command with the \`--help\` flag`,
|
|
329
|
+
body: commands.map((command) => ` $ ${name}${command.name === "" ? "" : ` ${command.name}`} --help`).join("\n")
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
let options = this.isGlobalCommand ? globalOptions : [...this.options, ...globalOptions || []];
|
|
333
|
+
if (!this.isGlobalCommand && !this.isDefaultCommand) options = options.filter((option) => option.name !== "version");
|
|
334
|
+
if (options.length > 0) {
|
|
335
|
+
const longestOptionName = findLongest(options.map((option) => option.rawName));
|
|
336
|
+
sections.push({
|
|
337
|
+
title: "Options",
|
|
338
|
+
body: options.map((option) => {
|
|
339
|
+
return ` ${padRight(option.rawName, longestOptionName.length)} ${option.description} ${option.config.default === void 0 ? "" : `(default: ${option.config.default})`}`;
|
|
340
|
+
}).join("\n")
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
if (this.examples.length > 0) sections.push({
|
|
344
|
+
title: "Examples",
|
|
345
|
+
body: this.examples.map((example) => {
|
|
346
|
+
if (typeof example === "function") return example(name);
|
|
347
|
+
return example;
|
|
348
|
+
}).join("\n")
|
|
349
|
+
});
|
|
350
|
+
if (helpCallback) sections = helpCallback(sections) || sections;
|
|
351
|
+
console.info(sections.map((section) => {
|
|
352
|
+
return section.title ? `${section.title}:\n${section.body}` : section.body;
|
|
353
|
+
}).join("\n\n"));
|
|
354
|
+
}
|
|
355
|
+
outputVersion() {
|
|
356
|
+
const { name } = this.cli;
|
|
357
|
+
const { versionNumber } = this.cli.globalCommand;
|
|
358
|
+
if (versionNumber) console.info(`${name}/${versionNumber} ${runtimeInfo}`);
|
|
359
|
+
}
|
|
360
|
+
checkRequiredArgs() {
|
|
361
|
+
const minimalArgsCount = this.args.filter((arg) => arg.required).length;
|
|
362
|
+
if (this.cli.args.length < minimalArgsCount) throw new CACError(`missing required args for command \`${this.rawName}\``);
|
|
151
363
|
}
|
|
152
364
|
/**
|
|
153
|
-
*
|
|
365
|
+
* Check if the parsed options contain any unknown options
|
|
154
366
|
*
|
|
155
|
-
*
|
|
156
|
-
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
367
|
+
* Exit and output error when true
|
|
157
368
|
*/
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
if (this._mockFn) instance.mockTypes(this._mockFn);
|
|
164
|
-
return instance;
|
|
369
|
+
checkUnknownOptions() {
|
|
370
|
+
const { options, globalCommand } = this.cli;
|
|
371
|
+
if (!this.config.allowUnknownOptions) {
|
|
372
|
+
for (const name of Object.keys(options)) if (name !== "--" && !this.hasOption(name) && !globalCommand.hasOption(name)) throw new CACError(`Unknown option \`${name.length > 1 ? `--${name}` : `-${name}`}\``);
|
|
373
|
+
}
|
|
165
374
|
}
|
|
166
375
|
/**
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.
|
|
170
|
-
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
376
|
+
* Check if the required string-type options exist
|
|
171
377
|
*/
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
378
|
+
checkOptionValue() {
|
|
379
|
+
const { options: parsedOptions, globalCommand } = this.cli;
|
|
380
|
+
const options = [...globalCommand.options, ...this.options];
|
|
381
|
+
for (const option of options) {
|
|
382
|
+
const value = parsedOptions[option.name.split(".")[0]];
|
|
383
|
+
if (option.required) {
|
|
384
|
+
const hasNegated = options.some((o) => o.negated && o.names.includes(option.name));
|
|
385
|
+
if (value === true || value === false && !hasNegated) throw new CACError(`option \`${option.rawName}\` value is missing`);
|
|
178
386
|
}
|
|
179
|
-
}
|
|
387
|
+
}
|
|
180
388
|
}
|
|
181
389
|
/**
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
* @param {string} tag - The tag to include in each log of the new instance.
|
|
185
|
-
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
390
|
+
* Check if the number of args is more than expected
|
|
186
391
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
392
|
+
checkUnusedArgs() {
|
|
393
|
+
const maximumArgsCount = this.args.some((arg) => arg.variadic) ? Infinity : this.args.length;
|
|
394
|
+
if (maximumArgsCount < this.cli.args.length) throw new CACError(`Unused args: ${this.cli.args.slice(maximumArgsCount).map((arg) => `\`${arg}\``).join(", ")}`);
|
|
189
395
|
}
|
|
396
|
+
};
|
|
397
|
+
var GlobalCommand = class extends Command {
|
|
398
|
+
constructor(cli) {
|
|
399
|
+
super("@@global@@", "", {}, cli);
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
var CAC = class extends EventTarget {
|
|
403
|
+
/** The program name to display in help and version message */
|
|
404
|
+
name;
|
|
405
|
+
commands;
|
|
406
|
+
globalCommand;
|
|
407
|
+
matchedCommand;
|
|
408
|
+
matchedCommandName;
|
|
190
409
|
/**
|
|
191
|
-
*
|
|
192
|
-
* Reporters will be called for each log message, depending on their implementation and log level.
|
|
193
|
-
*
|
|
194
|
-
* @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.
|
|
195
|
-
* @returns {Consola} The current Consola instance.
|
|
410
|
+
* Raw CLI arguments
|
|
196
411
|
*/
|
|
197
|
-
|
|
198
|
-
this.options.reporters.push(reporter);
|
|
199
|
-
return this;
|
|
200
|
-
}
|
|
412
|
+
rawArgs;
|
|
201
413
|
/**
|
|
202
|
-
*
|
|
203
|
-
* If no reporter is specified, all reporters will be removed.
|
|
204
|
-
*
|
|
205
|
-
* @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.
|
|
206
|
-
* @returns {Consola} The current Consola instance.
|
|
414
|
+
* Parsed CLI arguments
|
|
207
415
|
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
416
|
+
args;
|
|
417
|
+
/**
|
|
418
|
+
* Parsed CLI options, camelCased
|
|
419
|
+
*/
|
|
420
|
+
options;
|
|
421
|
+
showHelpOnExit;
|
|
422
|
+
showVersionOnExit;
|
|
423
|
+
/**
|
|
424
|
+
* @param name The program name to display in help and version message
|
|
425
|
+
*/
|
|
426
|
+
constructor(name = "") {
|
|
427
|
+
super();
|
|
428
|
+
this.name = name;
|
|
429
|
+
this.commands = [];
|
|
430
|
+
this.rawArgs = [];
|
|
431
|
+
this.args = [];
|
|
432
|
+
this.options = {};
|
|
433
|
+
this.globalCommand = new GlobalCommand(this);
|
|
434
|
+
this.globalCommand.usage("<command> [options]");
|
|
214
435
|
}
|
|
215
436
|
/**
|
|
216
|
-
*
|
|
437
|
+
* Add a global usage text.
|
|
217
438
|
*
|
|
218
|
-
*
|
|
219
|
-
* @returns {Consola} The current Consola instance.
|
|
439
|
+
* This is not used by sub-commands.
|
|
220
440
|
*/
|
|
221
|
-
|
|
222
|
-
this.
|
|
441
|
+
usage(text) {
|
|
442
|
+
this.globalCommand.usage(text);
|
|
223
443
|
return this;
|
|
224
444
|
}
|
|
225
|
-
wrapAll() {
|
|
226
|
-
this.wrapConsole();
|
|
227
|
-
this.wrapStd();
|
|
228
|
-
}
|
|
229
|
-
restoreAll() {
|
|
230
|
-
this.restoreConsole();
|
|
231
|
-
this.restoreStd();
|
|
232
|
-
}
|
|
233
445
|
/**
|
|
234
|
-
*
|
|
446
|
+
* Add a sub-command
|
|
235
447
|
*/
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
448
|
+
command(rawName, description, config) {
|
|
449
|
+
const command = new Command(rawName, description || "", config, this);
|
|
450
|
+
command.globalCommand = this.globalCommand;
|
|
451
|
+
this.commands.push(command);
|
|
452
|
+
return command;
|
|
241
453
|
}
|
|
242
454
|
/**
|
|
243
|
-
*
|
|
455
|
+
* Add a global CLI option.
|
|
456
|
+
*
|
|
457
|
+
* Which is also applied to sub-commands.
|
|
244
458
|
*/
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
delete console["__" + type];
|
|
249
|
-
}
|
|
459
|
+
option(rawName, description, config) {
|
|
460
|
+
this.globalCommand.option(rawName, description, config);
|
|
461
|
+
return this;
|
|
250
462
|
}
|
|
251
463
|
/**
|
|
252
|
-
*
|
|
464
|
+
* Show help message when `-h, --help` flags appear.
|
|
465
|
+
*
|
|
253
466
|
*/
|
|
254
|
-
|
|
255
|
-
this.
|
|
256
|
-
this.
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
if (!stream) return;
|
|
260
|
-
if (!stream.__write) stream.__write = stream.write;
|
|
261
|
-
stream.write = (data) => {
|
|
262
|
-
this[type].raw(String(data).trim());
|
|
263
|
-
};
|
|
467
|
+
help(callback) {
|
|
468
|
+
this.globalCommand.option("-h, --help", "Display this message");
|
|
469
|
+
this.globalCommand.helpCallback = callback;
|
|
470
|
+
this.showHelpOnExit = true;
|
|
471
|
+
return this;
|
|
264
472
|
}
|
|
265
473
|
/**
|
|
266
|
-
*
|
|
474
|
+
* Show version number when `-v, --version` flags appear.
|
|
475
|
+
*
|
|
267
476
|
*/
|
|
268
|
-
|
|
269
|
-
this.
|
|
270
|
-
this.
|
|
271
|
-
|
|
272
|
-
_restoreStream(stream) {
|
|
273
|
-
if (!stream) return;
|
|
274
|
-
if (stream.__write) {
|
|
275
|
-
stream.write = stream.__write;
|
|
276
|
-
delete stream.__write;
|
|
277
|
-
}
|
|
477
|
+
version(version, customFlags = "-v, --version") {
|
|
478
|
+
this.globalCommand.version(version, customFlags);
|
|
479
|
+
this.showVersionOnExit = true;
|
|
480
|
+
return this;
|
|
278
481
|
}
|
|
279
482
|
/**
|
|
280
|
-
*
|
|
483
|
+
* Add a global example.
|
|
484
|
+
*
|
|
485
|
+
* This example added here will not be used by sub-commands.
|
|
281
486
|
*/
|
|
282
|
-
|
|
283
|
-
|
|
487
|
+
example(example) {
|
|
488
|
+
this.globalCommand.example(example);
|
|
489
|
+
return this;
|
|
284
490
|
}
|
|
285
491
|
/**
|
|
286
|
-
*
|
|
492
|
+
* Output the corresponding help message
|
|
493
|
+
* When a sub-command is matched, output the help message for the command
|
|
494
|
+
* Otherwise output the global one.
|
|
495
|
+
*
|
|
287
496
|
*/
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
for (const item of _queue) item[0]._logFn(item[1], item[2]);
|
|
497
|
+
outputHelp() {
|
|
498
|
+
if (this.matchedCommand) this.matchedCommand.outputHelp();
|
|
499
|
+
else this.globalCommand.outputHelp();
|
|
292
500
|
}
|
|
293
501
|
/**
|
|
294
|
-
*
|
|
502
|
+
* Output the version number.
|
|
295
503
|
*
|
|
296
|
-
* @param {ConsolaOptions["mockFn"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions["mockFn"]}.
|
|
297
504
|
*/
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
this._mockFn = _mockFn;
|
|
301
|
-
if (typeof _mockFn !== "function") return;
|
|
302
|
-
for (const type in this.options.types) {
|
|
303
|
-
this[type] = _mockFn(type, this.options.types[type]) || this[type];
|
|
304
|
-
this[type].raw = this[type];
|
|
305
|
-
}
|
|
505
|
+
outputVersion() {
|
|
506
|
+
this.globalCommand.outputVersion();
|
|
306
507
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
args,
|
|
314
|
-
isRaw
|
|
315
|
-
]);
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
return this._logFn(defaults, args, isRaw);
|
|
319
|
-
};
|
|
508
|
+
setParsedInfo({ args, options }, matchedCommand, matchedCommandName) {
|
|
509
|
+
this.args = args;
|
|
510
|
+
this.options = options;
|
|
511
|
+
if (matchedCommand) this.matchedCommand = matchedCommand;
|
|
512
|
+
if (matchedCommandName) this.matchedCommandName = matchedCommandName;
|
|
513
|
+
return this;
|
|
320
514
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
if (!
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
logObj.args.unshift(logObj.message);
|
|
333
|
-
delete logObj.message;
|
|
334
|
-
}
|
|
335
|
-
if (logObj.additional) {
|
|
336
|
-
if (!Array.isArray(logObj.additional)) logObj.additional = logObj.additional.split("\n");
|
|
337
|
-
logObj.args.push("\n" + logObj.additional.join("\n"));
|
|
338
|
-
delete logObj.additional;
|
|
515
|
+
unsetMatchedCommand() {
|
|
516
|
+
this.matchedCommand = void 0;
|
|
517
|
+
this.matchedCommandName = void 0;
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Parse argv
|
|
521
|
+
*/
|
|
522
|
+
parse(argv, { run = true } = {}) {
|
|
523
|
+
if (!argv) {
|
|
524
|
+
if (!runtimeProcessArgs) throw new Error("No argv provided and runtime process argv is not available.");
|
|
525
|
+
argv = runtimeProcessArgs;
|
|
339
526
|
}
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
this._lastLog.object = logObj;
|
|
355
|
-
this._log(logObj);
|
|
527
|
+
this.rawArgs = argv;
|
|
528
|
+
if (!this.name) this.name = argv[1] ? getFileName(argv[1]) : "cli";
|
|
529
|
+
let shouldParse = true;
|
|
530
|
+
for (const command of this.commands) {
|
|
531
|
+
const parsed = this.mri(argv.slice(2), command);
|
|
532
|
+
const commandName = parsed.args[0];
|
|
533
|
+
if (command.isMatched(commandName)) {
|
|
534
|
+
shouldParse = false;
|
|
535
|
+
const parsedInfo = {
|
|
536
|
+
...parsed,
|
|
537
|
+
args: parsed.args.slice(1)
|
|
538
|
+
};
|
|
539
|
+
this.setParsedInfo(parsedInfo, command, commandName);
|
|
540
|
+
this.dispatchEvent(new CustomEvent(`command:${commandName}`, { detail: command }));
|
|
356
541
|
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
logObj.tag,
|
|
365
|
-
logObj.args
|
|
366
|
-
]);
|
|
367
|
-
const isSameLog = this._lastLog.serialized === serializedLog;
|
|
368
|
-
this._lastLog.serialized = serializedLog;
|
|
369
|
-
if (isSameLog) {
|
|
370
|
-
this._lastLog.count = (this._lastLog.count || 0) + 1;
|
|
371
|
-
if (this._lastLog.count > this.options.throttleMin) {
|
|
372
|
-
this._lastLog.timeout = setTimeout(resolveLog, this.options.throttle);
|
|
373
|
-
return;
|
|
374
|
-
}
|
|
542
|
+
}
|
|
543
|
+
if (shouldParse) {
|
|
544
|
+
for (const command of this.commands) if (command.isDefaultCommand) {
|
|
545
|
+
shouldParse = false;
|
|
546
|
+
const parsed = this.mri(argv.slice(2), command);
|
|
547
|
+
this.setParsedInfo(parsed, command);
|
|
548
|
+
this.dispatchEvent(new CustomEvent("command:!", { detail: command }));
|
|
375
549
|
}
|
|
376
|
-
} catch {}
|
|
377
|
-
resolveLog(true);
|
|
378
|
-
}
|
|
379
|
-
_log(logObj) {
|
|
380
|
-
for (const reporter of this.options.reporters) reporter.log(logObj, { options: this.options });
|
|
381
|
-
}
|
|
382
|
-
};
|
|
383
|
-
function _normalizeLogLevel(input, types = {}, defaultLevel = 3) {
|
|
384
|
-
if (input === void 0) return defaultLevel;
|
|
385
|
-
if (typeof input === "number") return input;
|
|
386
|
-
if (types[input] && types[input].level !== void 0) return types[input].level;
|
|
387
|
-
return defaultLevel;
|
|
388
|
-
}
|
|
389
|
-
Consola.prototype.add = Consola.prototype.addReporter;
|
|
390
|
-
Consola.prototype.remove = Consola.prototype.removeReporter;
|
|
391
|
-
Consola.prototype.clear = Consola.prototype.removeReporter;
|
|
392
|
-
Consola.prototype.withScope = Consola.prototype.withTag;
|
|
393
|
-
Consola.prototype.mock = Consola.prototype.mockTypes;
|
|
394
|
-
Consola.prototype.pause = Consola.prototype.pauseLogs;
|
|
395
|
-
Consola.prototype.resume = Consola.prototype.resumeLogs;
|
|
396
|
-
function createConsola$1(options = {}) {
|
|
397
|
-
return new Consola(options);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
//#endregion
|
|
401
|
-
//#region ../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs
|
|
402
|
-
function parseStack(stack, message) {
|
|
403
|
-
const cwd = process.cwd() + sep;
|
|
404
|
-
return stack.split("\n").splice(message.split("\n").length).map((l) => l.trim().replace("file://", "").replace(cwd, ""));
|
|
405
|
-
}
|
|
406
|
-
function writeStream(data, stream) {
|
|
407
|
-
return (stream.__write || stream.write).call(stream, data);
|
|
408
|
-
}
|
|
409
|
-
const bracket = (x) => x ? `[${x}]` : "";
|
|
410
|
-
var BasicReporter = class {
|
|
411
|
-
formatStack(stack, message, opts) {
|
|
412
|
-
const indent = " ".repeat((opts?.errorLevel || 0) + 1);
|
|
413
|
-
return indent + parseStack(stack, message).join(`
|
|
414
|
-
${indent}`);
|
|
415
|
-
}
|
|
416
|
-
formatError(err, opts) {
|
|
417
|
-
const message = err.message ?? formatWithOptions(opts, err);
|
|
418
|
-
const stack = err.stack ? this.formatStack(err.stack, message, opts) : "";
|
|
419
|
-
const level = opts?.errorLevel || 0;
|
|
420
|
-
const causedPrefix = level > 0 ? `${" ".repeat(level)}[cause]: ` : "";
|
|
421
|
-
const causedError = err.cause ? "\n\n" + this.formatError(err.cause, {
|
|
422
|
-
...opts,
|
|
423
|
-
errorLevel: level + 1
|
|
424
|
-
}) : "";
|
|
425
|
-
return causedPrefix + message + "\n" + stack + causedError;
|
|
426
|
-
}
|
|
427
|
-
formatArgs(args, opts) {
|
|
428
|
-
return formatWithOptions(opts, ...args.map((arg) => {
|
|
429
|
-
if (arg && typeof arg.stack === "string") return this.formatError(arg, opts);
|
|
430
|
-
return arg;
|
|
431
|
-
}));
|
|
432
|
-
}
|
|
433
|
-
formatDate(date, opts) {
|
|
434
|
-
return opts.date ? date.toLocaleTimeString() : "";
|
|
435
|
-
}
|
|
436
|
-
filterAndJoin(arr) {
|
|
437
|
-
return arr.filter(Boolean).join(" ");
|
|
438
|
-
}
|
|
439
|
-
formatLogObj(logObj, opts) {
|
|
440
|
-
const message = this.formatArgs(logObj.args, opts);
|
|
441
|
-
if (logObj.type === "box") return "\n" + [
|
|
442
|
-
bracket(logObj.tag),
|
|
443
|
-
logObj.title && logObj.title,
|
|
444
|
-
...message.split("\n")
|
|
445
|
-
].filter(Boolean).map((l) => " > " + l).join("\n") + "\n";
|
|
446
|
-
return this.filterAndJoin([
|
|
447
|
-
bracket(logObj.type),
|
|
448
|
-
bracket(logObj.tag),
|
|
449
|
-
message
|
|
450
|
-
]);
|
|
451
|
-
}
|
|
452
|
-
log(logObj, ctx) {
|
|
453
|
-
return writeStream(this.formatLogObj(logObj, {
|
|
454
|
-
columns: ctx.options.stdout.columns || 0,
|
|
455
|
-
...ctx.options.formatOptions
|
|
456
|
-
}) + "\n", logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout);
|
|
457
|
-
}
|
|
458
|
-
};
|
|
459
|
-
|
|
460
|
-
//#endregion
|
|
461
|
-
//#region ../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs
|
|
462
|
-
const { env = {}, argv = [], platform = "" } = typeof process === "undefined" ? {} : process;
|
|
463
|
-
const isDisabled = "NO_COLOR" in env || argv.includes("--no-color");
|
|
464
|
-
const isForced = "FORCE_COLOR" in env || argv.includes("--color");
|
|
465
|
-
const isWindows = platform === "win32";
|
|
466
|
-
const isDumbTerminal = env.TERM === "dumb";
|
|
467
|
-
const isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;
|
|
468
|
-
const isCI = "CI" in env && ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env);
|
|
469
|
-
const isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);
|
|
470
|
-
function replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {
|
|
471
|
-
return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
|
|
472
|
-
}
|
|
473
|
-
function clearBleed(index, string, open, close, replace) {
|
|
474
|
-
return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;
|
|
475
|
-
}
|
|
476
|
-
function filterEmpty(open, close, replace = open, at = open.length + 1) {
|
|
477
|
-
return (string) => string || !(string === "" || string === void 0) ? clearBleed(("" + string).indexOf(close, at), string, open, close, replace) : "";
|
|
478
|
-
}
|
|
479
|
-
function init(open, close, replace) {
|
|
480
|
-
return filterEmpty(`\x1B[${open}m`, `\x1B[${close}m`, replace);
|
|
481
|
-
}
|
|
482
|
-
const colorDefs = {
|
|
483
|
-
reset: init(0, 0),
|
|
484
|
-
bold: init(1, 22, "\x1B[22m\x1B[1m"),
|
|
485
|
-
dim: init(2, 22, "\x1B[22m\x1B[2m"),
|
|
486
|
-
italic: init(3, 23),
|
|
487
|
-
underline: init(4, 24),
|
|
488
|
-
inverse: init(7, 27),
|
|
489
|
-
hidden: init(8, 28),
|
|
490
|
-
strikethrough: init(9, 29),
|
|
491
|
-
black: init(30, 39),
|
|
492
|
-
red: init(31, 39),
|
|
493
|
-
green: init(32, 39),
|
|
494
|
-
yellow: init(33, 39),
|
|
495
|
-
blue: init(34, 39),
|
|
496
|
-
magenta: init(35, 39),
|
|
497
|
-
cyan: init(36, 39),
|
|
498
|
-
white: init(37, 39),
|
|
499
|
-
gray: init(90, 39),
|
|
500
|
-
bgBlack: init(40, 49),
|
|
501
|
-
bgRed: init(41, 49),
|
|
502
|
-
bgGreen: init(42, 49),
|
|
503
|
-
bgYellow: init(43, 49),
|
|
504
|
-
bgBlue: init(44, 49),
|
|
505
|
-
bgMagenta: init(45, 49),
|
|
506
|
-
bgCyan: init(46, 49),
|
|
507
|
-
bgWhite: init(47, 49),
|
|
508
|
-
blackBright: init(90, 39),
|
|
509
|
-
redBright: init(91, 39),
|
|
510
|
-
greenBright: init(92, 39),
|
|
511
|
-
yellowBright: init(93, 39),
|
|
512
|
-
blueBright: init(94, 39),
|
|
513
|
-
magentaBright: init(95, 39),
|
|
514
|
-
cyanBright: init(96, 39),
|
|
515
|
-
whiteBright: init(97, 39),
|
|
516
|
-
bgBlackBright: init(100, 49),
|
|
517
|
-
bgRedBright: init(101, 49),
|
|
518
|
-
bgGreenBright: init(102, 49),
|
|
519
|
-
bgYellowBright: init(103, 49),
|
|
520
|
-
bgBlueBright: init(104, 49),
|
|
521
|
-
bgMagentaBright: init(105, 49),
|
|
522
|
-
bgCyanBright: init(106, 49),
|
|
523
|
-
bgWhiteBright: init(107, 49)
|
|
524
|
-
};
|
|
525
|
-
function createColors(useColor = isColorSupported) {
|
|
526
|
-
return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));
|
|
527
|
-
}
|
|
528
|
-
const colors = createColors();
|
|
529
|
-
function getColor$1(color, fallback = "reset") {
|
|
530
|
-
return colors[color] || colors[fallback];
|
|
531
|
-
}
|
|
532
|
-
const ansiRegex$1 = [String.raw`[\u001B\u009B][[\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\d\/#&.:=?%@~_]+)*|[a-zA-Z\d]+(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)`, String.raw`(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))`].join("|");
|
|
533
|
-
function stripAnsi$1(text) {
|
|
534
|
-
return text.replace(new RegExp(ansiRegex$1, "g"), "");
|
|
535
|
-
}
|
|
536
|
-
const boxStylePresets = {
|
|
537
|
-
solid: {
|
|
538
|
-
tl: "┌",
|
|
539
|
-
tr: "┐",
|
|
540
|
-
bl: "└",
|
|
541
|
-
br: "┘",
|
|
542
|
-
h: "─",
|
|
543
|
-
v: "│"
|
|
544
|
-
},
|
|
545
|
-
double: {
|
|
546
|
-
tl: "╔",
|
|
547
|
-
tr: "╗",
|
|
548
|
-
bl: "╚",
|
|
549
|
-
br: "╝",
|
|
550
|
-
h: "═",
|
|
551
|
-
v: "║"
|
|
552
|
-
},
|
|
553
|
-
doubleSingle: {
|
|
554
|
-
tl: "╓",
|
|
555
|
-
tr: "╖",
|
|
556
|
-
bl: "╙",
|
|
557
|
-
br: "╜",
|
|
558
|
-
h: "─",
|
|
559
|
-
v: "║"
|
|
560
|
-
},
|
|
561
|
-
doubleSingleRounded: {
|
|
562
|
-
tl: "╭",
|
|
563
|
-
tr: "╮",
|
|
564
|
-
bl: "╰",
|
|
565
|
-
br: "╯",
|
|
566
|
-
h: "─",
|
|
567
|
-
v: "║"
|
|
568
|
-
},
|
|
569
|
-
singleThick: {
|
|
570
|
-
tl: "┏",
|
|
571
|
-
tr: "┓",
|
|
572
|
-
bl: "┗",
|
|
573
|
-
br: "┛",
|
|
574
|
-
h: "━",
|
|
575
|
-
v: "┃"
|
|
576
|
-
},
|
|
577
|
-
singleDouble: {
|
|
578
|
-
tl: "╒",
|
|
579
|
-
tr: "╕",
|
|
580
|
-
bl: "╘",
|
|
581
|
-
br: "╛",
|
|
582
|
-
h: "═",
|
|
583
|
-
v: "│"
|
|
584
|
-
},
|
|
585
|
-
singleDoubleRounded: {
|
|
586
|
-
tl: "╭",
|
|
587
|
-
tr: "╮",
|
|
588
|
-
bl: "╰",
|
|
589
|
-
br: "╯",
|
|
590
|
-
h: "═",
|
|
591
|
-
v: "│"
|
|
592
|
-
},
|
|
593
|
-
rounded: {
|
|
594
|
-
tl: "╭",
|
|
595
|
-
tr: "╮",
|
|
596
|
-
bl: "╰",
|
|
597
|
-
br: "╯",
|
|
598
|
-
h: "─",
|
|
599
|
-
v: "│"
|
|
600
|
-
}
|
|
601
|
-
};
|
|
602
|
-
const defaultStyle = {
|
|
603
|
-
borderColor: "white",
|
|
604
|
-
borderStyle: "rounded",
|
|
605
|
-
valign: "center",
|
|
606
|
-
padding: 2,
|
|
607
|
-
marginLeft: 1,
|
|
608
|
-
marginTop: 1,
|
|
609
|
-
marginBottom: 1
|
|
610
|
-
};
|
|
611
|
-
function box(text, _opts = {}) {
|
|
612
|
-
const opts = {
|
|
613
|
-
..._opts,
|
|
614
|
-
style: {
|
|
615
|
-
...defaultStyle,
|
|
616
|
-
..._opts.style
|
|
617
550
|
}
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
const
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
} else boxLines.push(`${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`);
|
|
636
|
-
const valignOffset = opts.style.valign === "center" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === "top" ? height - textLines.length - paddingOffset : height - textLines.length;
|
|
637
|
-
for (let i = 0; i < height; i++) if (i < valignOffset || i >= valignOffset + textLines.length) boxLines.push(`${leftSpace}${borderStyle.v}${" ".repeat(widthOffset)}${borderStyle.v}`);
|
|
638
|
-
else {
|
|
639
|
-
const line = textLines[i - valignOffset];
|
|
640
|
-
const left = " ".repeat(paddingOffset);
|
|
641
|
-
const right = " ".repeat(width - stripAnsi$1(line).length);
|
|
642
|
-
boxLines.push(`${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`);
|
|
643
|
-
}
|
|
644
|
-
boxLines.push(`${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`);
|
|
645
|
-
if (opts.style.marginBottom > 0) boxLines.push("".repeat(opts.style.marginBottom));
|
|
646
|
-
return boxLines.join("\n");
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
//#endregion
|
|
650
|
-
//#region ../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/index.mjs
|
|
651
|
-
const r = Object.create(null), i = (e) => globalThis.process?.env || import.meta.env || globalThis.Deno?.env.toObject() || globalThis.__env__ || (e ? r : globalThis), o = new Proxy(r, {
|
|
652
|
-
get(e, s) {
|
|
653
|
-
return i()[s] ?? r[s];
|
|
654
|
-
},
|
|
655
|
-
has(e, s) {
|
|
656
|
-
return s in i() || s in r;
|
|
657
|
-
},
|
|
658
|
-
set(e, s, E) {
|
|
659
|
-
const B = i(true);
|
|
660
|
-
return B[s] = E, true;
|
|
661
|
-
},
|
|
662
|
-
deleteProperty(e, s) {
|
|
663
|
-
if (!s) return false;
|
|
664
|
-
const E = i(true);
|
|
665
|
-
return delete E[s], true;
|
|
666
|
-
},
|
|
667
|
-
ownKeys() {
|
|
668
|
-
const e = i(true);
|
|
669
|
-
return Object.keys(e);
|
|
670
|
-
}
|
|
671
|
-
}), t = typeof process < "u" && process.env && process.env.NODE_ENV || "", f = [
|
|
672
|
-
["APPVEYOR"],
|
|
673
|
-
[
|
|
674
|
-
"AWS_AMPLIFY",
|
|
675
|
-
"AWS_APP_ID",
|
|
676
|
-
{ ci: true }
|
|
677
|
-
],
|
|
678
|
-
["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],
|
|
679
|
-
["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],
|
|
680
|
-
["APPCIRCLE", "AC_APPCIRCLE"],
|
|
681
|
-
["BAMBOO", "bamboo_planKey"],
|
|
682
|
-
["BITBUCKET", "BITBUCKET_COMMIT"],
|
|
683
|
-
["BITRISE", "BITRISE_IO"],
|
|
684
|
-
["BUDDY", "BUDDY_WORKSPACE_ID"],
|
|
685
|
-
["BUILDKITE"],
|
|
686
|
-
["CIRCLE", "CIRCLECI"],
|
|
687
|
-
["CIRRUS", "CIRRUS_CI"],
|
|
688
|
-
[
|
|
689
|
-
"CLOUDFLARE_PAGES",
|
|
690
|
-
"CF_PAGES",
|
|
691
|
-
{ ci: true }
|
|
692
|
-
],
|
|
693
|
-
["CODEBUILD", "CODEBUILD_BUILD_ARN"],
|
|
694
|
-
["CODEFRESH", "CF_BUILD_ID"],
|
|
695
|
-
["DRONE"],
|
|
696
|
-
["DRONE", "DRONE_BUILD_EVENT"],
|
|
697
|
-
["DSARI"],
|
|
698
|
-
["GITHUB_ACTIONS"],
|
|
699
|
-
["GITLAB", "GITLAB_CI"],
|
|
700
|
-
["GITLAB", "CI_MERGE_REQUEST_ID"],
|
|
701
|
-
["GOCD", "GO_PIPELINE_LABEL"],
|
|
702
|
-
["LAYERCI"],
|
|
703
|
-
["HUDSON", "HUDSON_URL"],
|
|
704
|
-
["JENKINS", "JENKINS_URL"],
|
|
705
|
-
["MAGNUM"],
|
|
706
|
-
["NETLIFY"],
|
|
707
|
-
[
|
|
708
|
-
"NETLIFY",
|
|
709
|
-
"NETLIFY_LOCAL",
|
|
710
|
-
{ ci: false }
|
|
711
|
-
],
|
|
712
|
-
["NEVERCODE"],
|
|
713
|
-
["RENDER"],
|
|
714
|
-
["SAIL", "SAILCI"],
|
|
715
|
-
["SEMAPHORE"],
|
|
716
|
-
["SCREWDRIVER"],
|
|
717
|
-
["SHIPPABLE"],
|
|
718
|
-
["SOLANO", "TDDIUM"],
|
|
719
|
-
["STRIDER"],
|
|
720
|
-
["TEAMCITY", "TEAMCITY_VERSION"],
|
|
721
|
-
["TRAVIS"],
|
|
722
|
-
["VERCEL", "NOW_BUILDER"],
|
|
723
|
-
[
|
|
724
|
-
"VERCEL",
|
|
725
|
-
"VERCEL",
|
|
726
|
-
{ ci: false }
|
|
727
|
-
],
|
|
728
|
-
[
|
|
729
|
-
"VERCEL",
|
|
730
|
-
"VERCEL_ENV",
|
|
731
|
-
{ ci: false }
|
|
732
|
-
],
|
|
733
|
-
["APPCENTER", "APPCENTER_BUILD_ID"],
|
|
734
|
-
[
|
|
735
|
-
"CODESANDBOX",
|
|
736
|
-
"CODESANDBOX_SSE",
|
|
737
|
-
{ ci: false }
|
|
738
|
-
],
|
|
739
|
-
[
|
|
740
|
-
"CODESANDBOX",
|
|
741
|
-
"CODESANDBOX_HOST",
|
|
742
|
-
{ ci: false }
|
|
743
|
-
],
|
|
744
|
-
["STACKBLITZ"],
|
|
745
|
-
["STORMKIT"],
|
|
746
|
-
["CLEAVR"],
|
|
747
|
-
["ZEABUR"],
|
|
748
|
-
[
|
|
749
|
-
"CODESPHERE",
|
|
750
|
-
"CODESPHERE_APP_ID",
|
|
751
|
-
{ ci: true }
|
|
752
|
-
],
|
|
753
|
-
["RAILWAY", "RAILWAY_PROJECT_ID"],
|
|
754
|
-
["RAILWAY", "RAILWAY_SERVICE_ID"],
|
|
755
|
-
["DENO-DEPLOY", "DENO_DEPLOYMENT_ID"],
|
|
756
|
-
[
|
|
757
|
-
"FIREBASE_APP_HOSTING",
|
|
758
|
-
"FIREBASE_APP_HOSTING",
|
|
759
|
-
{ ci: true }
|
|
760
|
-
]
|
|
761
|
-
];
|
|
762
|
-
function b() {
|
|
763
|
-
if (globalThis.process?.env) for (const e of f) {
|
|
764
|
-
const s = e[1] || e[0];
|
|
765
|
-
if (globalThis.process?.env[s]) return {
|
|
766
|
-
name: e[0].toLowerCase(),
|
|
767
|
-
...e[2]
|
|
551
|
+
if (shouldParse) {
|
|
552
|
+
const parsed = this.mri(argv.slice(2));
|
|
553
|
+
this.setParsedInfo(parsed);
|
|
554
|
+
}
|
|
555
|
+
if (this.options.help && this.showHelpOnExit) {
|
|
556
|
+
this.outputHelp();
|
|
557
|
+
run = false;
|
|
558
|
+
this.unsetMatchedCommand();
|
|
559
|
+
}
|
|
560
|
+
if (this.options.version && this.showVersionOnExit && this.matchedCommandName == null) {
|
|
561
|
+
this.outputVersion();
|
|
562
|
+
run = false;
|
|
563
|
+
this.unsetMatchedCommand();
|
|
564
|
+
}
|
|
565
|
+
const parsedArgv = {
|
|
566
|
+
args: this.args,
|
|
567
|
+
options: this.options
|
|
768
568
|
};
|
|
569
|
+
if (run) this.runMatchedCommand();
|
|
570
|
+
if (!this.matchedCommand && this.args[0]) this.dispatchEvent(new CustomEvent("command:*", { detail: this.args[0] }));
|
|
571
|
+
return parsedArgv;
|
|
769
572
|
}
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
const
|
|
788
|
-
|
|
789
|
-
const
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
[u, "edge-light"],
|
|
798
|
-
[N, "workerd"],
|
|
799
|
-
[L, "fastly"],
|
|
800
|
-
[D, "deno"],
|
|
801
|
-
[O, "bun"],
|
|
802
|
-
[c, "node"]
|
|
803
|
-
];
|
|
804
|
-
function G() {
|
|
805
|
-
const e = F.find((s) => s[0]);
|
|
806
|
-
if (e) return { name: e[1] };
|
|
807
|
-
}
|
|
808
|
-
G()?.name;
|
|
809
|
-
function ansiRegex({ onlyFirst = false } = {}) {
|
|
810
|
-
const pattern = [`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`, "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");
|
|
811
|
-
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
812
|
-
}
|
|
813
|
-
const regex = ansiRegex();
|
|
814
|
-
function stripAnsi(string) {
|
|
815
|
-
if (typeof string !== "string") throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
816
|
-
return string.replace(regex, "");
|
|
817
|
-
}
|
|
818
|
-
function isAmbiguous(x) {
|
|
819
|
-
return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
|
|
820
|
-
}
|
|
821
|
-
function isFullWidth(x) {
|
|
822
|
-
return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
|
|
823
|
-
}
|
|
824
|
-
function isWide(x) {
|
|
825
|
-
return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
|
|
826
|
-
}
|
|
827
|
-
function validate(codePoint) {
|
|
828
|
-
if (!Number.isSafeInteger(codePoint)) throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
829
|
-
}
|
|
830
|
-
function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
|
|
831
|
-
validate(codePoint);
|
|
832
|
-
if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) return 2;
|
|
833
|
-
return 1;
|
|
834
|
-
}
|
|
835
|
-
const emojiRegex = () => {
|
|
836
|
-
return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
|
|
837
|
-
};
|
|
838
|
-
const segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split("") };
|
|
839
|
-
const defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
|
|
840
|
-
function stringWidth$1(string, options = {}) {
|
|
841
|
-
if (typeof string !== "string" || string.length === 0) return 0;
|
|
842
|
-
const { ambiguousIsNarrow = true, countAnsiEscapeCodes = false } = options;
|
|
843
|
-
if (!countAnsiEscapeCodes) string = stripAnsi(string);
|
|
844
|
-
if (string.length === 0) return 0;
|
|
845
|
-
let width = 0;
|
|
846
|
-
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
847
|
-
for (const { segment: character } of segmenter.segment(string)) {
|
|
848
|
-
const codePoint = character.codePointAt(0);
|
|
849
|
-
if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) continue;
|
|
850
|
-
if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) continue;
|
|
851
|
-
if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) continue;
|
|
852
|
-
if (codePoint >= 55296 && codePoint <= 57343) continue;
|
|
853
|
-
if (codePoint >= 65024 && codePoint <= 65039) continue;
|
|
854
|
-
if (defaultIgnorableCodePointRegex.test(character)) continue;
|
|
855
|
-
if (emojiRegex().test(character)) {
|
|
856
|
-
width += 2;
|
|
857
|
-
continue;
|
|
573
|
+
mri(argv, command) {
|
|
574
|
+
const cliOptions = [...this.globalCommand.options, ...command ? command.options : []];
|
|
575
|
+
const mriOptions = getMriOptions(cliOptions);
|
|
576
|
+
let argsAfterDoubleDashes = [];
|
|
577
|
+
const doubleDashesIndex = argv.indexOf("--");
|
|
578
|
+
if (doubleDashesIndex !== -1) {
|
|
579
|
+
argsAfterDoubleDashes = argv.slice(doubleDashesIndex + 1);
|
|
580
|
+
argv = argv.slice(0, doubleDashesIndex);
|
|
581
|
+
}
|
|
582
|
+
let parsed = lib_default(argv, mriOptions);
|
|
583
|
+
parsed = Object.keys(parsed).reduce((res, name) => {
|
|
584
|
+
return {
|
|
585
|
+
...res,
|
|
586
|
+
[camelcaseOptionName(name)]: parsed[name]
|
|
587
|
+
};
|
|
588
|
+
}, { _: [] });
|
|
589
|
+
const args = parsed._;
|
|
590
|
+
const options = { "--": argsAfterDoubleDashes };
|
|
591
|
+
const ignoreDefault = command && command.config.ignoreOptionDefaultValue ? command.config.ignoreOptionDefaultValue : this.globalCommand.config.ignoreOptionDefaultValue;
|
|
592
|
+
const transforms = Object.create(null);
|
|
593
|
+
for (const cliOption of cliOptions) {
|
|
594
|
+
if (!ignoreDefault && cliOption.config.default !== void 0) for (const name of cliOption.names) options[name] = cliOption.config.default;
|
|
595
|
+
if (Array.isArray(cliOption.config.type) && transforms[cliOption.name] === void 0) {
|
|
596
|
+
transforms[cliOption.name] = Object.create(null);
|
|
597
|
+
transforms[cliOption.name].shouldTransform = true;
|
|
598
|
+
transforms[cliOption.name].transformFunction = cliOption.config.type[0];
|
|
599
|
+
}
|
|
858
600
|
}
|
|
859
|
-
|
|
601
|
+
for (const key of Object.keys(parsed)) if (key !== "_") {
|
|
602
|
+
setDotProp(options, key.split("."), parsed[key]);
|
|
603
|
+
setByType(options, transforms);
|
|
604
|
+
}
|
|
605
|
+
return {
|
|
606
|
+
args,
|
|
607
|
+
options
|
|
608
|
+
};
|
|
860
609
|
}
|
|
861
|
-
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
success: "green",
|
|
873
|
-
ready: "green",
|
|
874
|
-
start: "magenta"
|
|
875
|
-
};
|
|
876
|
-
const LEVEL_COLOR_MAP = {
|
|
877
|
-
0: "red",
|
|
878
|
-
1: "yellow"
|
|
879
|
-
};
|
|
880
|
-
const unicode = isUnicodeSupported();
|
|
881
|
-
const s = (c, fallback) => unicode ? c : fallback;
|
|
882
|
-
const TYPE_ICONS = {
|
|
883
|
-
error: s("✖", "×"),
|
|
884
|
-
fatal: s("✖", "×"),
|
|
885
|
-
ready: s("✔", "√"),
|
|
886
|
-
warn: s("⚠", "‼"),
|
|
887
|
-
info: s("ℹ", "i"),
|
|
888
|
-
success: s("✔", "√"),
|
|
889
|
-
debug: s("⚙", "D"),
|
|
890
|
-
trace: s("→", "→"),
|
|
891
|
-
fail: s("✖", "×"),
|
|
892
|
-
start: s("◐", "o"),
|
|
893
|
-
log: ""
|
|
894
|
-
};
|
|
895
|
-
function stringWidth(str) {
|
|
896
|
-
if (!(typeof Intl === "object") || !Intl.Segmenter) return stripAnsi$1(str).length;
|
|
897
|
-
return stringWidth$1(str);
|
|
898
|
-
}
|
|
899
|
-
var FancyReporter = class extends BasicReporter {
|
|
900
|
-
formatStack(stack, message, opts) {
|
|
901
|
-
const indent = " ".repeat((opts?.errorLevel || 0) + 1);
|
|
902
|
-
return `
|
|
903
|
-
${indent}` + parseStack(stack, message).map((line) => " " + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\((.+)\)/, (_, m) => `(${colors.cyan(m)})`)).join(`
|
|
904
|
-
${indent}`);
|
|
905
|
-
}
|
|
906
|
-
formatType(logObj, isBadge, opts) {
|
|
907
|
-
const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || "gray";
|
|
908
|
-
if (isBadge) return getBgColor(typeColor)(colors.black(` ${logObj.type.toUpperCase()} `));
|
|
909
|
-
const _type = typeof TYPE_ICONS[logObj.type] === "string" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;
|
|
910
|
-
return _type ? getColor(typeColor)(_type) : "";
|
|
911
|
-
}
|
|
912
|
-
formatLogObj(logObj, opts) {
|
|
913
|
-
const [message, ...additional] = this.formatArgs(logObj.args, opts).split("\n");
|
|
914
|
-
if (logObj.type === "box") return box(characterFormat(message + (additional.length > 0 ? "\n" + additional.join("\n") : "")), {
|
|
915
|
-
title: logObj.title ? characterFormat(logObj.title) : void 0,
|
|
916
|
-
style: logObj.style
|
|
610
|
+
runMatchedCommand() {
|
|
611
|
+
const { args, options, matchedCommand: command } = this;
|
|
612
|
+
if (!command || !command.commandAction) return;
|
|
613
|
+
command.checkUnknownOptions();
|
|
614
|
+
command.checkOptionValue();
|
|
615
|
+
command.checkRequiredArgs();
|
|
616
|
+
command.checkUnusedArgs();
|
|
617
|
+
const actionArgs = [];
|
|
618
|
+
command.args.forEach((arg, index) => {
|
|
619
|
+
if (arg.variadic) actionArgs.push(args.slice(index));
|
|
620
|
+
else actionArgs.push(args[index]);
|
|
917
621
|
});
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
const isBadge = logObj.badge ?? logObj.level < 2;
|
|
921
|
-
const type = this.formatType(logObj, isBadge, opts);
|
|
922
|
-
const tag = logObj.tag ? colors.gray(logObj.tag) : "";
|
|
923
|
-
let line;
|
|
924
|
-
const left = this.filterAndJoin([type, characterFormat(message)]);
|
|
925
|
-
const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);
|
|
926
|
-
const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;
|
|
927
|
-
line = space > 0 && (opts.columns || 0) >= 80 ? left + " ".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : "") + left;
|
|
928
|
-
line += characterFormat(additional.length > 0 ? "\n" + additional.join("\n") : "");
|
|
929
|
-
if (logObj.type === "trace") {
|
|
930
|
-
const _err = /* @__PURE__ */ new Error("Trace: " + logObj.message);
|
|
931
|
-
line += this.formatStack(_err.stack || "", _err.message);
|
|
932
|
-
}
|
|
933
|
-
return isBadge ? "\n" + line + "\n" : line;
|
|
622
|
+
actionArgs.push(options);
|
|
623
|
+
return command.commandAction.apply(this, actionArgs);
|
|
934
624
|
}
|
|
935
625
|
};
|
|
936
|
-
function characterFormat(str) {
|
|
937
|
-
return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\s+_([^_]+)_\s+/gm, (_, m) => ` ${colors.underline(m)} `);
|
|
938
|
-
}
|
|
939
|
-
function getColor(color = "white") {
|
|
940
|
-
return colors[color] || colors.white;
|
|
941
|
-
}
|
|
942
|
-
function getBgColor(color = "bgWhite") {
|
|
943
|
-
return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;
|
|
944
|
-
}
|
|
945
|
-
function createConsola(options = {}) {
|
|
946
|
-
let level = _getDefaultLogLevel();
|
|
947
|
-
if (process.env.CONSOLA_LEVEL) level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;
|
|
948
|
-
return createConsola$1({
|
|
949
|
-
level,
|
|
950
|
-
defaults: { level },
|
|
951
|
-
stdout: process.stdout,
|
|
952
|
-
stderr: process.stderr,
|
|
953
|
-
prompt: (...args) => import("./shared/prompt-B6NrDD1-.mjs").then((m) => m.prompt(...args)),
|
|
954
|
-
reporters: options.reporters || [options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()],
|
|
955
|
-
...options
|
|
956
|
-
});
|
|
957
|
-
}
|
|
958
|
-
function _getDefaultLogLevel() {
|
|
959
|
-
if (g) return LogLevels.debug;
|
|
960
|
-
if (R) return LogLevels.warn;
|
|
961
|
-
return LogLevels.info;
|
|
962
|
-
}
|
|
963
|
-
const consola = createConsola();
|
|
964
|
-
|
|
965
|
-
//#endregion
|
|
966
|
-
//#region src/cli/logger.ts
|
|
967
626
|
/**
|
|
968
|
-
*
|
|
627
|
+
* @param name The program name to display in help and version message
|
|
969
628
|
*/
|
|
970
|
-
const
|
|
971
|
-
function createTestingLogger() {
|
|
972
|
-
const types = [
|
|
973
|
-
"silent",
|
|
974
|
-
"fatal",
|
|
975
|
-
"error",
|
|
976
|
-
"warn",
|
|
977
|
-
"log",
|
|
978
|
-
"info",
|
|
979
|
-
"success",
|
|
980
|
-
"fail",
|
|
981
|
-
"ready",
|
|
982
|
-
"start",
|
|
983
|
-
"box",
|
|
984
|
-
"debug",
|
|
985
|
-
"trace",
|
|
986
|
-
"verbose"
|
|
987
|
-
];
|
|
988
|
-
const ret = Object.create(null);
|
|
989
|
-
for (const type of types) ret[type] = console.log;
|
|
990
|
-
return ret;
|
|
991
|
-
}
|
|
992
|
-
|
|
629
|
+
const cac = (name = "") => new CAC(name);
|
|
993
630
|
//#endregion
|
|
994
631
|
//#region src/cli/arguments/alias.ts
|
|
995
632
|
const alias = {
|
|
@@ -1000,36 +637,29 @@ const alias = {
|
|
|
1000
637
|
help: { abbreviation: "h" },
|
|
1001
638
|
version: { abbreviation: "v" },
|
|
1002
639
|
watch: { abbreviation: "w" },
|
|
1003
|
-
dir: {
|
|
1004
|
-
|
|
640
|
+
dir: {
|
|
641
|
+
abbreviation: "d",
|
|
642
|
+
requireValue: true
|
|
643
|
+
},
|
|
644
|
+
file: {
|
|
645
|
+
abbreviation: "o",
|
|
646
|
+
requireValue: true
|
|
647
|
+
},
|
|
1005
648
|
external: { abbreviation: "e" },
|
|
1006
649
|
format: { abbreviation: "f" },
|
|
1007
650
|
name: { abbreviation: "n" },
|
|
1008
651
|
globals: { abbreviation: "g" },
|
|
1009
|
-
sourcemap: {
|
|
1010
|
-
abbreviation: "s",
|
|
1011
|
-
default: true
|
|
1012
|
-
},
|
|
652
|
+
sourcemap: { abbreviation: "s" },
|
|
1013
653
|
minify: { abbreviation: "m" },
|
|
1014
654
|
platform: { abbreviation: "p" },
|
|
1015
655
|
assetFileNames: { hint: "name" },
|
|
1016
656
|
chunkFileNames: { hint: "name" },
|
|
1017
657
|
entryFileNames: { hint: "name" },
|
|
1018
|
-
externalLiveBindings: {
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
},
|
|
1022
|
-
treeshake: {
|
|
1023
|
-
default: true,
|
|
1024
|
-
reverse: true
|
|
1025
|
-
},
|
|
1026
|
-
preserveEntrySignatures: {
|
|
1027
|
-
default: "strict",
|
|
1028
|
-
reverse: true
|
|
1029
|
-
},
|
|
658
|
+
externalLiveBindings: { reverse: true },
|
|
659
|
+
treeshake: { reverse: true },
|
|
660
|
+
preserveEntrySignatures: { reverse: true },
|
|
1030
661
|
moduleTypes: { hint: "types" }
|
|
1031
662
|
};
|
|
1032
|
-
|
|
1033
663
|
//#endregion
|
|
1034
664
|
//#region src/cli/arguments/utils.ts
|
|
1035
665
|
function setNestedProperty(obj, path, value) {
|
|
@@ -1050,25 +680,17 @@ function setNestedProperty(obj, path, value) {
|
|
|
1050
680
|
function camelCaseToKebabCase(str) {
|
|
1051
681
|
return str.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);
|
|
1052
682
|
}
|
|
1053
|
-
function kebabCaseToCamelCase(str) {
|
|
1054
|
-
return str.replace(/-./g, (match) => match[1].toUpperCase());
|
|
1055
|
-
}
|
|
1056
|
-
|
|
1057
683
|
//#endregion
|
|
1058
684
|
//#region src/cli/arguments/normalize.ts
|
|
685
|
+
const reservedKeys = new Set([
|
|
686
|
+
"help",
|
|
687
|
+
"version",
|
|
688
|
+
"config",
|
|
689
|
+
"watch",
|
|
690
|
+
"environment"
|
|
691
|
+
]);
|
|
1059
692
|
function normalizeCliOptions(cliOptions, positionals) {
|
|
1060
|
-
const
|
|
1061
|
-
"__proto__",
|
|
1062
|
-
"constructor",
|
|
1063
|
-
"prototype"
|
|
1064
|
-
];
|
|
1065
|
-
const unflattenedCliOptions = {};
|
|
1066
|
-
for (let [key, value] of Object.entries(cliOptions)) if (prototypePollutionKeys.includes(key)) {} else if (key.includes(".")) {
|
|
1067
|
-
const [parentKey] = key.split(".");
|
|
1068
|
-
unflattenedCliOptions[parentKey] ??= {};
|
|
1069
|
-
setNestedProperty(unflattenedCliOptions, key, value);
|
|
1070
|
-
} else unflattenedCliOptions[key] = value;
|
|
1071
|
-
const [data, errors] = validateCliOptions(unflattenedCliOptions);
|
|
693
|
+
const [data, errors] = validateCliOptions(cliOptions);
|
|
1072
694
|
if (errors?.length) {
|
|
1073
695
|
errors.forEach((error) => {
|
|
1074
696
|
logger.error(`${error}. You can use \`rolldown -h\` to see the help.`);
|
|
@@ -1084,21 +706,15 @@ function normalizeCliOptions(cliOptions, positionals) {
|
|
|
1084
706
|
watch: options.watch ?? false
|
|
1085
707
|
};
|
|
1086
708
|
if (typeof options.config === "string") result.config = options.config;
|
|
709
|
+
else if (options.config === true) result.config = "";
|
|
1087
710
|
if (options.environment !== void 0) result.environment = options.environment;
|
|
1088
|
-
const keysOfInput = getInputCliKeys();
|
|
1089
|
-
const keysOfOutput = getOutputCliKeys();
|
|
1090
|
-
const reservedKeys = [
|
|
1091
|
-
"help",
|
|
1092
|
-
"version",
|
|
1093
|
-
"config",
|
|
1094
|
-
"watch",
|
|
1095
|
-
"environment"
|
|
1096
|
-
];
|
|
711
|
+
const keysOfInput = new Set(getInputCliKeys());
|
|
712
|
+
const keysOfOutput = new Set(getOutputCliKeys());
|
|
1097
713
|
for (let [key, value] of Object.entries(options)) {
|
|
1098
714
|
const [primary] = key.split(".");
|
|
1099
|
-
if (keysOfInput.
|
|
1100
|
-
else if (keysOfOutput.
|
|
1101
|
-
else if (!reservedKeys.
|
|
715
|
+
if (keysOfInput.has(primary)) setNestedProperty(result.input, key, value);
|
|
716
|
+
else if (keysOfOutput.has(primary)) setNestedProperty(result.output, key, value);
|
|
717
|
+
else if (!reservedKeys.has(key)) {
|
|
1102
718
|
logger.error(`Unknown option: ${key}`);
|
|
1103
719
|
process.exit(1);
|
|
1104
720
|
}
|
|
@@ -1107,124 +723,122 @@ function normalizeCliOptions(cliOptions, positionals) {
|
|
|
1107
723
|
else result.input.input = positionals;
|
|
1108
724
|
return result;
|
|
1109
725
|
}
|
|
1110
|
-
|
|
1111
726
|
//#endregion
|
|
1112
727
|
//#region src/cli/arguments/index.ts
|
|
1113
728
|
const schemaInfo = getCliSchemaInfo();
|
|
1114
729
|
const options = Object.fromEntries(Object.entries(schemaInfo).filter(([_key, info]) => info.type !== "never").map(([key, info]) => {
|
|
1115
|
-
const config =
|
|
730
|
+
const config = alias[key];
|
|
731
|
+
let description = info?.description ?? config?.description ?? "";
|
|
732
|
+
if (config?.reverse) {
|
|
733
|
+
if (description.startsWith("enable")) description = description.replace("enable", "disable");
|
|
734
|
+
else if (!description.startsWith("Avoid")) description = `disable ${description}`;
|
|
735
|
+
}
|
|
1116
736
|
const result = {
|
|
1117
737
|
type: info.type === "boolean" ? "boolean" : "string",
|
|
1118
|
-
description
|
|
1119
|
-
hint: config?.hint
|
|
738
|
+
description
|
|
1120
739
|
};
|
|
1121
|
-
if (config
|
|
1122
|
-
if (config
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
}
|
|
1126
|
-
key = camelCaseToKebabCase(key);
|
|
1127
|
-
return [config?.reverse ? `no-${key}` : key, result];
|
|
740
|
+
if (config?.abbreviation) result.short = config.abbreviation;
|
|
741
|
+
if (config?.hint) result.hint = config.hint;
|
|
742
|
+
const kebabKey = camelCaseToKebabCase(key);
|
|
743
|
+
return [config?.reverse ? `no-${kebabKey}` : kebabKey, result];
|
|
1128
744
|
}));
|
|
745
|
+
const knownKeys = new Set(Object.keys(schemaInfo));
|
|
746
|
+
for (const key of Object.keys(schemaInfo)) {
|
|
747
|
+
const dotIdx = key.indexOf(".");
|
|
748
|
+
if (dotIdx > 0) knownKeys.add(key.substring(0, dotIdx));
|
|
749
|
+
}
|
|
750
|
+
const shortAliases = /* @__PURE__ */ new Set();
|
|
751
|
+
for (const config of Object.values(alias)) if (config?.abbreviation) shortAliases.add(config.abbreviation);
|
|
1129
752
|
function parseCliArguments() {
|
|
1130
|
-
const
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
753
|
+
const cli = cac("rolldown");
|
|
754
|
+
for (const [key, info] of Object.entries(schemaInfo)) {
|
|
755
|
+
if (info.type === "never") continue;
|
|
756
|
+
const config = alias[key];
|
|
757
|
+
let rawName = "";
|
|
758
|
+
if (config?.abbreviation) rawName += `-${config.abbreviation}, `;
|
|
759
|
+
if (config?.reverse) rawName += `--no-${key}`;
|
|
760
|
+
else rawName += `--${key}`;
|
|
761
|
+
if (info.type !== "boolean" && !config?.reverse) if (config?.requireValue) rawName += ` <${config?.hint ?? key}>`;
|
|
762
|
+
else rawName += ` [${config?.hint ?? key}]`;
|
|
763
|
+
cli.option(rawName, info.description ?? config?.description ?? "");
|
|
764
|
+
}
|
|
765
|
+
let parsedInput = [];
|
|
766
|
+
let parsedOptions = {};
|
|
767
|
+
const cmd = cli.command("[...input]", "");
|
|
768
|
+
cmd.allowUnknownOptions();
|
|
769
|
+
cmd.ignoreOptionDefaultValue();
|
|
770
|
+
cmd.action((input, opts) => {
|
|
771
|
+
parsedInput = input;
|
|
772
|
+
parsedOptions = opts;
|
|
1135
773
|
});
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
}
|
|
774
|
+
try {
|
|
775
|
+
cli.parse(process.argv, { run: true });
|
|
776
|
+
} catch (err) {
|
|
777
|
+
if (err?.name === "CACError") {
|
|
778
|
+
const match = err.message.match(/option `(.+?)` value is missing/);
|
|
779
|
+
if (match) {
|
|
780
|
+
const optName = match[1].replace(/ [<[].*/, "").replace(/^-\w, /, "");
|
|
781
|
+
logger.error(`Option \`${optName}\` requires a value but none was provided.`);
|
|
782
|
+
} else logger.error(err.message);
|
|
783
|
+
process.exit(1);
|
|
1145
784
|
}
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
} else if (type === "
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
});
|
|
1199
|
-
} else Object.defineProperty(values, option.name, {
|
|
1200
|
-
value: option.value ?? "",
|
|
1201
|
-
enumerable: true,
|
|
1202
|
-
configurable: true,
|
|
1203
|
-
writable: true
|
|
1204
|
-
});
|
|
1205
|
-
}).filter((item) => {
|
|
1206
|
-
return item !== void 0;
|
|
1207
|
-
});
|
|
1208
|
-
invalid_options.sort((a, b) => {
|
|
1209
|
-
return a.name.localeCompare(b.name);
|
|
1210
|
-
});
|
|
1211
|
-
if (invalid_options.length !== 0) {
|
|
1212
|
-
let single = invalid_options.length === 1;
|
|
1213
|
-
logger.warn(`Option \`${invalid_options.map((item) => item.name).join(",")}\` ${single ? "is" : "are"} unrecognized. We will ignore ${single ? "this" : "those"} option${single ? "" : "s"}.`);
|
|
1214
|
-
}
|
|
1215
|
-
let rawArgs = {
|
|
1216
|
-
...values,
|
|
1217
|
-
...invalid_options.reduce((acc, cur) => {
|
|
1218
|
-
acc[cur.name] = cur.value;
|
|
1219
|
-
return acc;
|
|
1220
|
-
}, Object.create(null))
|
|
1221
|
-
};
|
|
785
|
+
throw err;
|
|
786
|
+
}
|
|
787
|
+
delete parsedOptions["--"];
|
|
788
|
+
for (const short of shortAliases) delete parsedOptions[short];
|
|
789
|
+
for (const key of Object.keys(parsedOptions)) if (key === "__proto__" || key === "constructor" || key === "prototype" || key.startsWith("__proto__.") || key.startsWith("constructor.") || key.startsWith("prototype.")) delete parsedOptions[key];
|
|
790
|
+
const unknownKeys = Object.keys(parsedOptions).filter((k) => !knownKeys.has(k));
|
|
791
|
+
if (unknownKeys.length > 0) {
|
|
792
|
+
unknownKeys.sort();
|
|
793
|
+
const single = unknownKeys.length === 1;
|
|
794
|
+
logger.warn(`Option \`${unknownKeys.join(",")}\` ${single ? "is" : "are"} unrecognized. We will ignore ${single ? "this" : "those"} option${single ? "" : "s"}.`);
|
|
795
|
+
}
|
|
796
|
+
const rawArgs = { ...parsedOptions };
|
|
797
|
+
for (const key of unknownKeys) delete parsedOptions[key];
|
|
798
|
+
for (const [key, value] of Object.entries(parsedOptions)) {
|
|
799
|
+
const type = schemaInfo[key]?.type;
|
|
800
|
+
if (Array.isArray(value)) {
|
|
801
|
+
if (type !== "array" && type !== "object") parsedOptions[key] = value[value.length - 1];
|
|
802
|
+
} else if (type === "array" && typeof value === "string") parsedOptions[key] = [value];
|
|
803
|
+
}
|
|
804
|
+
for (const [schemaKey, info] of Object.entries(schemaInfo)) {
|
|
805
|
+
if (info.type !== "object") continue;
|
|
806
|
+
const parts = schemaKey.split(".");
|
|
807
|
+
let parent = parsedOptions;
|
|
808
|
+
for (let i = 0; i < parts.length - 1; i++) parent = parent?.[parts[i]];
|
|
809
|
+
const leafKey = parts[parts.length - 1];
|
|
810
|
+
const value = parent?.[leafKey];
|
|
811
|
+
if (value === void 0) continue;
|
|
812
|
+
const values = Array.isArray(value) ? value : [value];
|
|
813
|
+
if (typeof values[0] !== "string") continue;
|
|
814
|
+
let usedDeprecatedSyntax = false;
|
|
815
|
+
const result = {};
|
|
816
|
+
for (const v of values) for (const pair of String(v).split(",")) {
|
|
817
|
+
const colonIdx = pair.indexOf(":");
|
|
818
|
+
const eqIdx = pair.indexOf("=");
|
|
819
|
+
let k;
|
|
820
|
+
let val;
|
|
821
|
+
if (colonIdx > 0 && (eqIdx === -1 || colonIdx < eqIdx)) {
|
|
822
|
+
k = pair.slice(0, colonIdx);
|
|
823
|
+
val = pair.slice(colonIdx + 1);
|
|
824
|
+
} else if (eqIdx > 0) {
|
|
825
|
+
k = pair.slice(0, eqIdx);
|
|
826
|
+
val = pair.slice(eqIdx + 1);
|
|
827
|
+
usedDeprecatedSyntax = true;
|
|
828
|
+
} else continue;
|
|
829
|
+
result[k] = val;
|
|
830
|
+
}
|
|
831
|
+
if (usedDeprecatedSyntax) {
|
|
832
|
+
const optionName = camelCaseToKebabCase(schemaKey);
|
|
833
|
+
logger.warn(`Using \`key=value\` syntax for \`--${optionName}\` is deprecated. Use \`key:value\` instead.`);
|
|
834
|
+
}
|
|
835
|
+
parent[leafKey] = result;
|
|
836
|
+
}
|
|
1222
837
|
return {
|
|
1223
|
-
...normalizeCliOptions(
|
|
838
|
+
...normalizeCliOptions(parsedOptions, parsedInput),
|
|
1224
839
|
rawArgs
|
|
1225
840
|
};
|
|
1226
841
|
}
|
|
1227
|
-
|
|
1228
842
|
//#endregion
|
|
1229
843
|
//#region src/utils/clear-screen.ts
|
|
1230
844
|
const CLEAR_SCREEN = "\x1Bc";
|
|
@@ -1235,9 +849,8 @@ function getClearScreenFunction(options) {
|
|
|
1235
849
|
process.stdout.write(CLEAR_SCREEN);
|
|
1236
850
|
};
|
|
1237
851
|
}
|
|
1238
|
-
|
|
1239
852
|
//#endregion
|
|
1240
|
-
//#region \0@oxc-project+runtime@0.
|
|
853
|
+
//#region \0@oxc-project+runtime@0.120.0/helpers/usingCtx.js
|
|
1241
854
|
function _usingCtx() {
|
|
1242
855
|
var r = "function" == typeof SuppressedError ? SuppressedError : function(r, e) {
|
|
1243
856
|
var n = Error();
|
|
@@ -1292,7 +905,6 @@ function _usingCtx() {
|
|
|
1292
905
|
}
|
|
1293
906
|
};
|
|
1294
907
|
}
|
|
1295
|
-
|
|
1296
908
|
//#endregion
|
|
1297
909
|
//#region src/cli/commands/bundle.ts
|
|
1298
910
|
async function bundleWithConfig(configPath, cliOptions, rawArgs = {}) {
|
|
@@ -1326,7 +938,7 @@ async function bundleWithCliOptions(cliOptions) {
|
|
|
1326
938
|
process.exit(1);
|
|
1327
939
|
}
|
|
1328
940
|
for (const file of outputs) {
|
|
1329
|
-
if (outputs.length > 1) logger.log(`\n${styleText
|
|
941
|
+
if (outputs.length > 1) logger.log(`\n${styleText(["cyan", "bold"], `|→ ${file.fileName}:`)}\n`);
|
|
1330
942
|
console.log(file.type === "asset" ? file.source : file.code);
|
|
1331
943
|
}
|
|
1332
944
|
} catch (_) {
|
|
@@ -1366,12 +978,12 @@ async function watchInner(config, cliOptions) {
|
|
|
1366
978
|
clearScreen?.();
|
|
1367
979
|
break;
|
|
1368
980
|
case "BUNDLE_START":
|
|
1369
|
-
if (changedFile.length > 0) logger.log(`Found ${styleText
|
|
981
|
+
if (changedFile.length > 0) logger.log(`Found ${styleText("bold", changedFile.map(relativeId).join(", "))} changed, rebuilding...`);
|
|
1370
982
|
changedFile.length = 0;
|
|
1371
983
|
break;
|
|
1372
984
|
case "BUNDLE_END":
|
|
1373
985
|
await event.result.close();
|
|
1374
|
-
logger.success(`Rebuilt ${styleText
|
|
986
|
+
logger.success(`Rebuilt ${styleText("bold", relativeId(event.output[0]))} in ${styleText("green", ms(event.duration))}.`);
|
|
1375
987
|
break;
|
|
1376
988
|
case "ERROR":
|
|
1377
989
|
await event.result.close();
|
|
@@ -1404,7 +1016,7 @@ async function bundleInner(config, cliOptions) {
|
|
|
1404
1016
|
result.forEach(printBundleOutputPretty);
|
|
1405
1017
|
logger.log(``);
|
|
1406
1018
|
const duration = performance.now() - startTime;
|
|
1407
|
-
logger.success(`rolldown v${version} Finished in ${styleText
|
|
1019
|
+
logger.success(`rolldown v${version} Finished in ${styleText("green", ms(duration))}`);
|
|
1408
1020
|
}
|
|
1409
1021
|
function printBundleOutputPretty(output) {
|
|
1410
1022
|
const outputEntries = collectOutputEntries(output.output);
|
|
@@ -1450,10 +1062,10 @@ function printOutputEntries(entries, sizeAdjustment, distPath) {
|
|
|
1450
1062
|
const filtered = entries.filter((e) => e.type === group.type);
|
|
1451
1063
|
if (!filtered.length) continue;
|
|
1452
1064
|
for (const entry of filtered.sort((a, z) => a.size - z.size)) {
|
|
1453
|
-
let log = styleText
|
|
1454
|
-
log += styleText
|
|
1455
|
-
log += styleText
|
|
1456
|
-
log += styleText
|
|
1065
|
+
let log = styleText("dim", withTrailingSlash(distPath));
|
|
1066
|
+
log += styleText(group.color, entry.fileName.padEnd(sizeAdjustment.longest + 2));
|
|
1067
|
+
log += styleText("dim", entry.type);
|
|
1068
|
+
log += styleText("dim", ` │ size: ${displaySize(entry.size).padStart(sizeAdjustment.sizePad)}`);
|
|
1457
1069
|
logger.log(log);
|
|
1458
1070
|
}
|
|
1459
1071
|
}
|
|
@@ -1469,7 +1081,6 @@ function relativeId(id) {
|
|
|
1469
1081
|
if (!path.isAbsolute(id)) return id;
|
|
1470
1082
|
return path.relative(path.resolve(), id);
|
|
1471
1083
|
}
|
|
1472
|
-
|
|
1473
1084
|
//#endregion
|
|
1474
1085
|
//#region src/cli/commands/help.ts
|
|
1475
1086
|
const examples = [
|
|
@@ -1494,22 +1105,17 @@ const examples = [
|
|
|
1494
1105
|
command: "rolldown src/main.ts -d dist -n bundle -f iife -e jQuery,window._ -g jQuery=$"
|
|
1495
1106
|
}
|
|
1496
1107
|
];
|
|
1497
|
-
const notes = [
|
|
1498
|
-
"Due to the API limitation, you need to pass `-s` for `.map` sourcemap file as the last argument.",
|
|
1499
|
-
"If you are using the configuration, please pass the `-c` as the last argument if you ignore the default configuration file.",
|
|
1500
|
-
"CLI options will override the configuration file.",
|
|
1501
|
-
"For more information, please visit https://rolldown.rs/."
|
|
1502
|
-
];
|
|
1108
|
+
const notes = ["CLI options will override the configuration file.", "For more information, please visit https://rolldown.rs/."];
|
|
1503
1109
|
/**
|
|
1504
1110
|
* Generates the CLI help text as a string.
|
|
1505
1111
|
*/
|
|
1506
1112
|
function generateHelpText() {
|
|
1507
1113
|
const lines = [];
|
|
1508
|
-
lines.push(`${styleText
|
|
1114
|
+
lines.push(`${styleText("gray", `${description} (rolldown v${version})`)}`);
|
|
1509
1115
|
lines.push("");
|
|
1510
|
-
lines.push(`${styleText
|
|
1116
|
+
lines.push(`${styleText(["bold", "underline"], "USAGE")} ${styleText("cyan", "rolldown -c <config>")} or ${styleText("cyan", "rolldown <input> <options>")}`);
|
|
1511
1117
|
lines.push("");
|
|
1512
|
-
lines.push(`${styleText
|
|
1118
|
+
lines.push(`${styleText(["bold", "underline"], "OPTIONS")}`);
|
|
1513
1119
|
lines.push("");
|
|
1514
1120
|
lines.push(Object.entries(options).sort(([a], [b]) => {
|
|
1515
1121
|
if (options[a].short && !options[b].short) return -1;
|
|
@@ -1522,27 +1128,26 @@ function generateHelpText() {
|
|
|
1522
1128
|
if (short) optionStr += `-${short}, `;
|
|
1523
1129
|
if (type === "string") optionStr += `<${hint ?? option}>`;
|
|
1524
1130
|
if (description && description.length > 0) description = description[0].toUpperCase() + description.slice(1);
|
|
1525
|
-
return styleText
|
|
1131
|
+
return styleText("cyan", optionStr.padEnd(30)) + description + (description && description?.endsWith(".") ? "" : ".");
|
|
1526
1132
|
}).join("\n"));
|
|
1527
1133
|
lines.push("");
|
|
1528
|
-
lines.push(`${styleText
|
|
1134
|
+
lines.push(`${styleText(["bold", "underline"], "EXAMPLES")}`);
|
|
1529
1135
|
lines.push("");
|
|
1530
1136
|
examples.forEach(({ title, command }, ord) => {
|
|
1531
1137
|
lines.push(` ${ord + 1}. ${title}:`);
|
|
1532
|
-
lines.push(` ${styleText
|
|
1138
|
+
lines.push(` ${styleText("cyan", command)}`);
|
|
1533
1139
|
lines.push("");
|
|
1534
1140
|
});
|
|
1535
|
-
lines.push(`${styleText
|
|
1141
|
+
lines.push(`${styleText(["bold", "underline"], "NOTES")}`);
|
|
1536
1142
|
lines.push("");
|
|
1537
1143
|
notes.forEach((note) => {
|
|
1538
|
-
lines.push(` * ${styleText
|
|
1144
|
+
lines.push(` * ${styleText("gray", note)}`);
|
|
1539
1145
|
});
|
|
1540
1146
|
return lines.join("\n");
|
|
1541
1147
|
}
|
|
1542
1148
|
function showHelp() {
|
|
1543
1149
|
logger.log(generateHelpText());
|
|
1544
1150
|
}
|
|
1545
|
-
|
|
1546
1151
|
//#endregion
|
|
1547
1152
|
//#region src/cli/version-check.ts
|
|
1548
1153
|
function checkNodeVersion(nodeVersion) {
|
|
@@ -1551,7 +1156,6 @@ function checkNodeVersion(nodeVersion) {
|
|
|
1551
1156
|
const minor = parseInt(currentVersion[1], 10);
|
|
1552
1157
|
return major === 20 && minor >= 19 || major === 22 && minor >= 12 || major > 22;
|
|
1553
1158
|
}
|
|
1554
|
-
|
|
1555
1159
|
//#endregion
|
|
1556
1160
|
//#region src/cli/index.ts
|
|
1557
1161
|
if (!checkNodeVersion(process$1.versions.node)) logger.warn(`You are using Node.js ${process$1.versions.node}. Rolldown requires Node.js version 20.19+ or 22.12+. Please upgrade your Node.js version.`);
|
|
@@ -1564,6 +1168,14 @@ async function main() {
|
|
|
1564
1168
|
process$1.env[key] = value.length === 0 ? String(true) : value.join(":");
|
|
1565
1169
|
}
|
|
1566
1170
|
}
|
|
1171
|
+
if (cliOptions.help) {
|
|
1172
|
+
showHelp();
|
|
1173
|
+
return;
|
|
1174
|
+
}
|
|
1175
|
+
if (cliOptions.version) {
|
|
1176
|
+
logger.log(`rolldown v${version}`);
|
|
1177
|
+
return;
|
|
1178
|
+
}
|
|
1567
1179
|
if (cliOptions.config || cliOptions.config === "") {
|
|
1568
1180
|
await bundleWithConfig(cliOptions.config, cliOptions, rawArgs);
|
|
1569
1181
|
return;
|
|
@@ -1572,16 +1184,11 @@ async function main() {
|
|
|
1572
1184
|
await bundleWithCliOptions(cliOptions);
|
|
1573
1185
|
return;
|
|
1574
1186
|
}
|
|
1575
|
-
if (cliOptions.version) {
|
|
1576
|
-
logger.log(`rolldown v${version}`);
|
|
1577
|
-
return;
|
|
1578
|
-
}
|
|
1579
1187
|
showHelp();
|
|
1580
1188
|
}
|
|
1581
1189
|
main().catch((err) => {
|
|
1582
1190
|
logger.error(err);
|
|
1583
1191
|
process$1.exit(1);
|
|
1584
1192
|
});
|
|
1585
|
-
|
|
1586
1193
|
//#endregion
|
|
1587
|
-
export {
|
|
1194
|
+
export {};
|