@rollipop/rolldown 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/bin/cli.mjs +0 -1
- package/dist/cli.mjs +705 -1102
- package/dist/config.d.mts +9 -5
- package/dist/config.mjs +4 -14
- package/dist/experimental-index.d.mts +189 -54
- package/dist/experimental-index.mjs +106 -22
- package/dist/experimental-runtime-types.d.ts +0 -5
- package/dist/filter-index.d.mts +1 -2
- package/dist/filter-index.mjs +25 -8
- package/dist/get-log-filter.d.mts +3 -7
- package/dist/get-log-filter.mjs +23 -3
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +6 -13
- package/dist/parallel-plugin-worker.mjs +4 -8
- package/dist/parallel-plugin.d.mts +3 -4
- package/dist/parallel-plugin.mjs +1 -2
- package/dist/parse-ast-index.d.mts +26 -2
- package/dist/parse-ast-index.mjs +60 -4
- package/dist/plugins-index.d.mts +8 -5
- package/dist/plugins-index.mjs +8 -8
- package/dist/shared/{binding-tNJoEqAa.mjs → binding-D_jQsHun.mjs} +41 -43
- package/dist/shared/binding-hSQGgsUz.d.mts +1877 -0
- package/dist/shared/{bindingify-input-options-CfhrNd_y.mjs → bindingify-input-options-DfXGy4QO.mjs} +127 -167
- package/dist/shared/{constructors-414MPkgB.mjs → constructors-B-HbV10G.mjs} +14 -7
- package/dist/shared/{constructors--k1uxZrh.d.mts → constructors-DMl58KN5.d.mts} +13 -4
- package/dist/shared/define-config-BSxBeCq6.d.mts +3810 -0
- package/dist/shared/{define-config-BVG4QvnP.mjs → define-config-DJOr6Iwt.mjs} +1 -2
- package/dist/shared/error-D5tMcn3l.mjs +85 -0
- package/dist/shared/get-log-filter-semyr3Lj.d.mts +35 -0
- package/dist/shared/{load-config-Qtd9pHJ5.mjs → load-config-CNjYgiQv.mjs} +11 -5
- package/dist/shared/{logging-wIy4zY9I.d.mts → logging-C6h4g8dA.d.mts} +6 -6
- package/dist/shared/{logs-NH298mHo.mjs → logs-D80CXhvg.mjs} +6 -9
- package/dist/shared/{misc-CCZIsXVO.mjs → misc-DJYbNKZX.mjs} +1 -2
- package/dist/shared/{normalize-string-or-regex-DeB7vQ75.mjs → normalize-string-or-regex-B8PEhdn1.mjs} +22 -17
- package/dist/shared/parse-iQx2ihYn.mjs +74 -0
- package/dist/shared/{prompt-tlfjalEt.mjs → prompt-BYQIwEjg.mjs} +4 -6
- package/dist/shared/resolve-tsconfig-CxoM-bno.mjs +113 -0
- package/dist/shared/{rolldown-BMzJcmQ7.mjs → rolldown-C0o3hS3w.mjs} +2 -4
- package/dist/shared/rolldown-build-80GULIOI.mjs +3326 -0
- package/dist/shared/transform-DY2pi3Qm.d.mts +149 -0
- package/dist/shared/{watch-HmN4U4B9.mjs → watch-C2am0Ahc.mjs} +73 -78
- package/dist/utils-index.d.mts +376 -0
- package/dist/utils-index.mjs +2414 -0
- package/package.json +23 -21
- package/dist/cli-setup.d.mts +0 -1
- package/dist/cli-setup.mjs +0 -17
- package/dist/shared/binding-B92Lq__Q.d.mts +0 -1687
- package/dist/shared/define-config-D8xP5iyL.d.mts +0 -3463
- package/dist/shared/parse-ast-index-BcP4Ts_P.mjs +0 -99
- package/dist/shared/rolldown-build-DWeKtJOy.mjs +0 -2371
package/dist/cli.mjs
CHANGED
|
@@ -1,996 +1,629 @@
|
|
|
1
|
-
import "./shared/
|
|
2
|
-
import {
|
|
3
|
-
import "./shared/
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
7
|
-
import "
|
|
8
|
-
import { t as rolldown } from "./shared/rolldown-BMzJcmQ7.mjs";
|
|
9
|
-
import { t as loadConfig } from "./shared/load-config-Qtd9pHJ5.mjs";
|
|
10
|
-
import path, { sep } from "node:path";
|
|
11
|
-
import { formatWithOptions, parseArgs } from "node:util";
|
|
1
|
+
import { n as onExit, t as watch } from "./shared/watch-C2am0Ahc.mjs";
|
|
2
|
+
import { C as version, S as description } from "./shared/bindingify-input-options-DfXGy4QO.mjs";
|
|
3
|
+
import { t as arraify } from "./shared/misc-DJYbNKZX.mjs";
|
|
4
|
+
import { a as getInputCliKeys, i as getCliSchemaInfo, l as styleText, o as getOutputCliKeys, r as logger, s as validateCliOptions } from "./shared/rolldown-build-80GULIOI.mjs";
|
|
5
|
+
import { t as rolldown } from "./shared/rolldown-C0o3hS3w.mjs";
|
|
6
|
+
import { t as loadConfig } from "./shared/load-config-CNjYgiQv.mjs";
|
|
7
|
+
import path from "node:path";
|
|
12
8
|
import process$1 from "node:process";
|
|
13
|
-
import * as tty from "node:tty";
|
|
14
9
|
import { performance } from "node:perf_hooks";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
silent: Number.NEGATIVE_INFINITY,
|
|
19
|
-
fatal: 0,
|
|
20
|
-
error: 0,
|
|
21
|
-
warn: 1,
|
|
22
|
-
log: 2,
|
|
23
|
-
info: 3,
|
|
24
|
-
success: 3,
|
|
25
|
-
fail: 3,
|
|
26
|
-
ready: 3,
|
|
27
|
-
start: 3,
|
|
28
|
-
box: 3,
|
|
29
|
-
debug: 4,
|
|
30
|
-
trace: 5,
|
|
31
|
-
verbose: Number.POSITIVE_INFINITY
|
|
32
|
-
};
|
|
33
|
-
const LogTypes = {
|
|
34
|
-
silent: { level: -1 },
|
|
35
|
-
fatal: { level: LogLevels.fatal },
|
|
36
|
-
error: { level: LogLevels.error },
|
|
37
|
-
warn: { level: LogLevels.warn },
|
|
38
|
-
log: { level: LogLevels.log },
|
|
39
|
-
info: { level: LogLevels.info },
|
|
40
|
-
success: { level: LogLevels.success },
|
|
41
|
-
fail: { level: LogLevels.fail },
|
|
42
|
-
ready: { level: LogLevels.info },
|
|
43
|
-
start: { level: LogLevels.info },
|
|
44
|
-
box: { level: LogLevels.info },
|
|
45
|
-
debug: { level: LogLevels.debug },
|
|
46
|
-
trace: { level: LogLevels.trace },
|
|
47
|
-
verbose: { level: LogLevels.verbose }
|
|
48
|
-
};
|
|
49
|
-
function isPlainObject$1(value) {
|
|
50
|
-
if (value === null || typeof value !== "object") return false;
|
|
51
|
-
const prototype = Object.getPrototypeOf(value);
|
|
52
|
-
if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) return false;
|
|
53
|
-
if (Symbol.iterator in value) return false;
|
|
54
|
-
if (Symbol.toStringTag in value) return Object.prototype.toString.call(value) === "[object Module]";
|
|
55
|
-
return true;
|
|
10
|
+
//#region ../../node_modules/.pnpm/cac@7.0.0/node_modules/cac/dist/index.js
|
|
11
|
+
function toArr(any) {
|
|
12
|
+
return any == null ? [] : Array.isArray(any) ? any : [any];
|
|
56
13
|
}
|
|
57
|
-
function
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
for (const key in baseObject) {
|
|
61
|
-
if (key === "__proto__" || key === "constructor") continue;
|
|
62
|
-
const value = baseObject[key];
|
|
63
|
-
if (value === null || value === void 0) continue;
|
|
64
|
-
if (merger && merger(object, key, value, namespace)) continue;
|
|
65
|
-
if (Array.isArray(value) && Array.isArray(object[key])) object[key] = [...value, ...object[key]];
|
|
66
|
-
else if (isPlainObject$1(value) && isPlainObject$1(object[key])) object[key] = _defu(value, object[key], (namespace ? `${namespace}.` : "") + key.toString(), merger);
|
|
67
|
-
else object[key] = value;
|
|
68
|
-
}
|
|
69
|
-
return object;
|
|
14
|
+
function toVal(out, key, val, opts) {
|
|
15
|
+
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;
|
|
16
|
+
out[key] = old == null ? nxt : Array.isArray(old) ? old.concat(nxt) : [old, nxt];
|
|
70
17
|
}
|
|
71
|
-
function
|
|
72
|
-
|
|
18
|
+
function lib_default(args, opts) {
|
|
19
|
+
args = args || [];
|
|
20
|
+
opts = opts || {};
|
|
21
|
+
var k, arr, arg, name, val, out = { _: [] };
|
|
22
|
+
var i = 0, j = 0, idx = 0, len = args.length;
|
|
23
|
+
const alibi = opts.alias !== void 0;
|
|
24
|
+
const strict = opts.unknown !== void 0;
|
|
25
|
+
const defaults = opts.default !== void 0;
|
|
26
|
+
opts.alias = opts.alias || {};
|
|
27
|
+
opts.string = toArr(opts.string);
|
|
28
|
+
opts.boolean = toArr(opts.boolean);
|
|
29
|
+
if (alibi) for (k in opts.alias) {
|
|
30
|
+
arr = opts.alias[k] = toArr(opts.alias[k]);
|
|
31
|
+
for (i = 0; i < arr.length; i++) (opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);
|
|
32
|
+
}
|
|
33
|
+
for (i = opts.boolean.length; i-- > 0;) {
|
|
34
|
+
arr = opts.alias[opts.boolean[i]] || [];
|
|
35
|
+
for (j = arr.length; j-- > 0;) opts.boolean.push(arr[j]);
|
|
36
|
+
}
|
|
37
|
+
for (i = opts.string.length; i-- > 0;) {
|
|
38
|
+
arr = opts.alias[opts.string[i]] || [];
|
|
39
|
+
for (j = arr.length; j-- > 0;) opts.string.push(arr[j]);
|
|
40
|
+
}
|
|
41
|
+
if (defaults) for (k in opts.default) {
|
|
42
|
+
name = typeof opts.default[k];
|
|
43
|
+
arr = opts.alias[k] = opts.alias[k] || [];
|
|
44
|
+
if (opts[name] !== void 0) {
|
|
45
|
+
opts[name].push(k);
|
|
46
|
+
for (i = 0; i < arr.length; i++) opts[name].push(arr[i]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const keys = strict ? Object.keys(opts.alias) : [];
|
|
50
|
+
for (i = 0; i < len; i++) {
|
|
51
|
+
arg = args[i];
|
|
52
|
+
if (arg === "--") {
|
|
53
|
+
out._ = out._.concat(args.slice(++i));
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
for (j = 0; j < arg.length; j++) if (arg.charCodeAt(j) !== 45) break;
|
|
57
|
+
if (j === 0) out._.push(arg);
|
|
58
|
+
else if (arg.substring(j, j + 3) === "no-") {
|
|
59
|
+
name = arg.substring(j + 3);
|
|
60
|
+
if (strict && !~keys.indexOf(name)) return opts.unknown(arg);
|
|
61
|
+
out[name] = false;
|
|
62
|
+
} else {
|
|
63
|
+
for (idx = j + 1; idx < arg.length; idx++) if (arg.charCodeAt(idx) === 61) break;
|
|
64
|
+
name = arg.substring(j, idx);
|
|
65
|
+
val = arg.substring(++idx) || i + 1 === len || ("" + args[i + 1]).charCodeAt(0) === 45 || args[++i];
|
|
66
|
+
arr = j === 2 ? [name] : name;
|
|
67
|
+
for (idx = 0; idx < arr.length; idx++) {
|
|
68
|
+
name = arr[idx];
|
|
69
|
+
if (strict && !~keys.indexOf(name)) return opts.unknown("-".repeat(j) + name);
|
|
70
|
+
toVal(out, name, idx + 1 < arr.length || val, opts);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (defaults) {
|
|
75
|
+
for (k in opts.default) if (out[k] === void 0) out[k] = opts.default[k];
|
|
76
|
+
}
|
|
77
|
+
if (alibi) for (k in out) {
|
|
78
|
+
arr = opts.alias[k] || [];
|
|
79
|
+
while (arr.length > 0) out[arr.shift()] = out[k];
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
73
82
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
83
|
+
function removeBrackets(v) {
|
|
84
|
+
return v.replace(/[<[].+/, "").trim();
|
|
77
85
|
}
|
|
78
|
-
function
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
function findAllBrackets(v) {
|
|
87
|
+
const ANGLED_BRACKET_RE_GLOBAL = /<([^>]+)>/g;
|
|
88
|
+
const SQUARE_BRACKET_RE_GLOBAL = /\[([^\]]+)\]/g;
|
|
89
|
+
const res = [];
|
|
90
|
+
const parse = (match) => {
|
|
91
|
+
let variadic = false;
|
|
92
|
+
let value = match[1];
|
|
93
|
+
if (value.startsWith("...")) {
|
|
94
|
+
value = value.slice(3);
|
|
95
|
+
variadic = true;
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
required: match[0].startsWith("<"),
|
|
99
|
+
value,
|
|
100
|
+
variadic
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
let angledMatch;
|
|
104
|
+
while (angledMatch = ANGLED_BRACKET_RE_GLOBAL.exec(v)) res.push(parse(angledMatch));
|
|
105
|
+
let squareMatch;
|
|
106
|
+
while (squareMatch = SQUARE_BRACKET_RE_GLOBAL.exec(v)) res.push(parse(squareMatch));
|
|
107
|
+
return res;
|
|
83
108
|
}
|
|
84
|
-
|
|
85
|
-
const
|
|
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
|
-
|
|
119
|
-
|
|
109
|
+
function getMriOptions(options) {
|
|
110
|
+
const result = {
|
|
111
|
+
alias: {},
|
|
112
|
+
boolean: []
|
|
113
|
+
};
|
|
114
|
+
for (const [index, option] of options.entries()) {
|
|
115
|
+
if (option.names.length > 1) result.alias[option.names[0]] = option.names.slice(1);
|
|
116
|
+
if (option.isBoolean) if (option.negated) {
|
|
117
|
+
if (!options.some((o, i) => {
|
|
118
|
+
return i !== index && o.names.some((name) => option.names.includes(name)) && typeof o.required === "boolean";
|
|
119
|
+
})) result.boolean.push(option.names[0]);
|
|
120
|
+
} else result.boolean.push(option.names[0]);
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
function findLongest(arr) {
|
|
125
|
+
return arr.sort((a, b) => {
|
|
126
|
+
return a.length > b.length ? -1 : 1;
|
|
127
|
+
})[0];
|
|
128
|
+
}
|
|
129
|
+
function padRight(str, length) {
|
|
130
|
+
return str.length >= length ? str : `${str}${" ".repeat(length - str.length)}`;
|
|
131
|
+
}
|
|
132
|
+
function camelcase(input) {
|
|
133
|
+
return input.replaceAll(/([a-z])-([a-z])/g, (_, p1, p2) => {
|
|
134
|
+
return p1 + p2.toUpperCase();
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function setDotProp(obj, keys, val) {
|
|
138
|
+
let current = obj;
|
|
139
|
+
for (let i = 0; i < keys.length; i++) {
|
|
140
|
+
const key = keys[i];
|
|
141
|
+
if (i === keys.length - 1) {
|
|
142
|
+
current[key] = val;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (current[key] == null) {
|
|
146
|
+
const nextKeyIsArrayIndex = +keys[i + 1] > -1;
|
|
147
|
+
current[key] = nextKeyIsArrayIndex ? [] : {};
|
|
148
|
+
}
|
|
149
|
+
current = current[key];
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function setByType(obj, transforms) {
|
|
153
|
+
for (const key of Object.keys(transforms)) {
|
|
154
|
+
const transform = transforms[key];
|
|
155
|
+
if (transform.shouldTransform) {
|
|
156
|
+
obj[key] = [obj[key]].flat();
|
|
157
|
+
if (typeof transform.transformFunction === "function") obj[key] = obj[key].map(transform.transformFunction);
|
|
120
158
|
}
|
|
121
|
-
|
|
122
|
-
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function getFileName(input) {
|
|
162
|
+
const m = /([^\\/]+)$/.exec(input);
|
|
163
|
+
return m ? m[1] : "";
|
|
164
|
+
}
|
|
165
|
+
function camelcaseOptionName(name) {
|
|
166
|
+
return name.split(".").map((v, i) => {
|
|
167
|
+
return i === 0 ? camelcase(v) : v;
|
|
168
|
+
}).join(".");
|
|
169
|
+
}
|
|
170
|
+
var CACError = class extends Error {
|
|
171
|
+
constructor(message) {
|
|
172
|
+
super(message);
|
|
173
|
+
this.name = "CACError";
|
|
174
|
+
if (typeof Error.captureStackTrace !== "function") this.stack = new Error(message).stack;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
var Option = class {
|
|
178
|
+
rawName;
|
|
179
|
+
description;
|
|
180
|
+
/** Option name */
|
|
181
|
+
name;
|
|
182
|
+
/** Option name and aliases */
|
|
183
|
+
names;
|
|
184
|
+
isBoolean;
|
|
185
|
+
required;
|
|
186
|
+
config;
|
|
187
|
+
negated;
|
|
188
|
+
constructor(rawName, description, config) {
|
|
189
|
+
this.rawName = rawName;
|
|
190
|
+
this.description = description;
|
|
191
|
+
this.config = Object.assign({}, config);
|
|
192
|
+
rawName = rawName.replaceAll(".*", "");
|
|
193
|
+
this.negated = false;
|
|
194
|
+
this.names = removeBrackets(rawName).split(",").map((v) => {
|
|
195
|
+
let name = v.trim().replace(/^-{1,2}/, "");
|
|
196
|
+
if (name.startsWith("no-")) {
|
|
197
|
+
this.negated = true;
|
|
198
|
+
name = name.replace(/^no-/, "");
|
|
199
|
+
}
|
|
200
|
+
return camelcaseOptionName(name);
|
|
201
|
+
}).sort((a, b) => a.length > b.length ? 1 : -1);
|
|
202
|
+
this.name = this.names.at(-1);
|
|
203
|
+
if (this.negated && this.config.default == null) this.config.default = true;
|
|
204
|
+
if (rawName.includes("<")) this.required = true;
|
|
205
|
+
else if (rawName.includes("[")) this.required = false;
|
|
206
|
+
else this.isBoolean = true;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
let runtimeProcessArgs;
|
|
210
|
+
let runtimeInfo;
|
|
211
|
+
if (typeof process !== "undefined") {
|
|
212
|
+
let runtimeName;
|
|
213
|
+
if (typeof Deno !== "undefined" && typeof Deno.version?.deno === "string") runtimeName = "deno";
|
|
214
|
+
else if (typeof Bun !== "undefined" && typeof Bun.version === "string") runtimeName = "bun";
|
|
215
|
+
else runtimeName = "node";
|
|
216
|
+
runtimeInfo = `${process.platform}-${process.arch} ${runtimeName}-${process.version}`;
|
|
217
|
+
runtimeProcessArgs = process.argv;
|
|
218
|
+
} else if (typeof navigator === "undefined") runtimeInfo = `unknown`;
|
|
219
|
+
else runtimeInfo = `${navigator.platform} ${navigator.userAgent}`;
|
|
220
|
+
var Command = class {
|
|
221
|
+
rawName;
|
|
222
|
+
description;
|
|
223
|
+
config;
|
|
224
|
+
cli;
|
|
225
|
+
options;
|
|
226
|
+
aliasNames;
|
|
227
|
+
name;
|
|
228
|
+
args;
|
|
229
|
+
commandAction;
|
|
230
|
+
usageText;
|
|
231
|
+
versionNumber;
|
|
232
|
+
examples;
|
|
233
|
+
helpCallback;
|
|
234
|
+
globalCommand;
|
|
235
|
+
constructor(rawName, description, config = {}, cli) {
|
|
236
|
+
this.rawName = rawName;
|
|
237
|
+
this.description = description;
|
|
238
|
+
this.config = config;
|
|
239
|
+
this.cli = cli;
|
|
240
|
+
this.options = [];
|
|
241
|
+
this.aliasNames = [];
|
|
242
|
+
this.name = removeBrackets(rawName);
|
|
243
|
+
this.args = findAllBrackets(rawName);
|
|
244
|
+
this.examples = [];
|
|
245
|
+
}
|
|
246
|
+
usage(text) {
|
|
247
|
+
this.usageText = text;
|
|
248
|
+
return this;
|
|
249
|
+
}
|
|
250
|
+
allowUnknownOptions() {
|
|
251
|
+
this.config.allowUnknownOptions = true;
|
|
252
|
+
return this;
|
|
253
|
+
}
|
|
254
|
+
ignoreOptionDefaultValue() {
|
|
255
|
+
this.config.ignoreOptionDefaultValue = true;
|
|
256
|
+
return this;
|
|
257
|
+
}
|
|
258
|
+
version(version, customFlags = "-v, --version") {
|
|
259
|
+
this.versionNumber = version;
|
|
260
|
+
this.option(customFlags, "Display version number");
|
|
261
|
+
return this;
|
|
262
|
+
}
|
|
263
|
+
example(example) {
|
|
264
|
+
this.examples.push(example);
|
|
265
|
+
return this;
|
|
123
266
|
}
|
|
124
267
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* @
|
|
268
|
+
* Add a option for this command
|
|
269
|
+
* @param rawName Raw option name(s)
|
|
270
|
+
* @param description Option description
|
|
271
|
+
* @param config Option config
|
|
128
272
|
*/
|
|
129
|
-
|
|
130
|
-
|
|
273
|
+
option(rawName, description, config) {
|
|
274
|
+
const option = new Option(rawName, description, config);
|
|
275
|
+
this.options.push(option);
|
|
276
|
+
return this;
|
|
277
|
+
}
|
|
278
|
+
alias(name) {
|
|
279
|
+
this.aliasNames.push(name);
|
|
280
|
+
return this;
|
|
281
|
+
}
|
|
282
|
+
action(callback) {
|
|
283
|
+
this.commandAction = callback;
|
|
284
|
+
return this;
|
|
131
285
|
}
|
|
132
286
|
/**
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
* @param {number} level - The new log level to set.
|
|
287
|
+
* Check if a command name is matched by this command
|
|
288
|
+
* @param name Command name
|
|
136
289
|
*/
|
|
137
|
-
|
|
138
|
-
this.
|
|
290
|
+
isMatched(name) {
|
|
291
|
+
return this.name === name || this.aliasNames.includes(name);
|
|
292
|
+
}
|
|
293
|
+
get isDefaultCommand() {
|
|
294
|
+
return this.name === "" || this.aliasNames.includes("!");
|
|
295
|
+
}
|
|
296
|
+
get isGlobalCommand() {
|
|
297
|
+
return this instanceof GlobalCommand;
|
|
139
298
|
}
|
|
140
299
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
* @template T
|
|
145
|
-
* @param {string} message - The message to display in the prompt.
|
|
146
|
-
* @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.
|
|
147
|
-
* @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.
|
|
300
|
+
* Check if an option is registered in this command
|
|
301
|
+
* @param name Option name
|
|
148
302
|
*/
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return this.options.
|
|
303
|
+
hasOption(name) {
|
|
304
|
+
name = name.split(".")[0];
|
|
305
|
+
return this.options.find((option) => {
|
|
306
|
+
return option.names.includes(name);
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
outputHelp() {
|
|
310
|
+
const { name, commands } = this.cli;
|
|
311
|
+
const { versionNumber, options: globalOptions, helpCallback } = this.cli.globalCommand;
|
|
312
|
+
let sections = [{ body: `${name}${versionNumber ? `/${versionNumber}` : ""}` }];
|
|
313
|
+
sections.push({
|
|
314
|
+
title: "Usage",
|
|
315
|
+
body: ` $ ${name} ${this.usageText || this.rawName}`
|
|
316
|
+
});
|
|
317
|
+
if ((this.isGlobalCommand || this.isDefaultCommand) && commands.length > 0) {
|
|
318
|
+
const longestCommandName = findLongest(commands.map((command) => command.rawName));
|
|
319
|
+
sections.push({
|
|
320
|
+
title: "Commands",
|
|
321
|
+
body: commands.map((command) => {
|
|
322
|
+
return ` ${padRight(command.rawName, longestCommandName.length)} ${command.description}`;
|
|
323
|
+
}).join("\n")
|
|
324
|
+
}, {
|
|
325
|
+
title: `For more info, run any command with the \`--help\` flag`,
|
|
326
|
+
body: commands.map((command) => ` $ ${name}${command.name === "" ? "" : ` ${command.name}`} --help`).join("\n")
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
let options = this.isGlobalCommand ? globalOptions : [...this.options, ...globalOptions || []];
|
|
330
|
+
if (!this.isGlobalCommand && !this.isDefaultCommand) options = options.filter((option) => option.name !== "version");
|
|
331
|
+
if (options.length > 0) {
|
|
332
|
+
const longestOptionName = findLongest(options.map((option) => option.rawName));
|
|
333
|
+
sections.push({
|
|
334
|
+
title: "Options",
|
|
335
|
+
body: options.map((option) => {
|
|
336
|
+
return ` ${padRight(option.rawName, longestOptionName.length)} ${option.description} ${option.config.default === void 0 ? "" : `(default: ${option.config.default})`}`;
|
|
337
|
+
}).join("\n")
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
if (this.examples.length > 0) sections.push({
|
|
341
|
+
title: "Examples",
|
|
342
|
+
body: this.examples.map((example) => {
|
|
343
|
+
if (typeof example === "function") return example(name);
|
|
344
|
+
return example;
|
|
345
|
+
}).join("\n")
|
|
346
|
+
});
|
|
347
|
+
if (helpCallback) sections = helpCallback(sections) || sections;
|
|
348
|
+
console.info(sections.map((section) => {
|
|
349
|
+
return section.title ? `${section.title}:\n${section.body}` : section.body;
|
|
350
|
+
}).join("\n\n"));
|
|
351
|
+
}
|
|
352
|
+
outputVersion() {
|
|
353
|
+
const { name } = this.cli;
|
|
354
|
+
const { versionNumber } = this.cli.globalCommand;
|
|
355
|
+
if (versionNumber) console.info(`${name}/${versionNumber} ${runtimeInfo}`);
|
|
356
|
+
}
|
|
357
|
+
checkRequiredArgs() {
|
|
358
|
+
const minimalArgsCount = this.args.filter((arg) => arg.required).length;
|
|
359
|
+
if (this.cli.args.length < minimalArgsCount) throw new CACError(`missing required args for command \`${this.rawName}\``);
|
|
152
360
|
}
|
|
153
361
|
/**
|
|
154
|
-
*
|
|
362
|
+
* Check if the parsed options contain any unknown options
|
|
155
363
|
*
|
|
156
|
-
*
|
|
157
|
-
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
364
|
+
* Exit and output error when true
|
|
158
365
|
*/
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
if (this._mockFn) instance.mockTypes(this._mockFn);
|
|
165
|
-
return instance;
|
|
366
|
+
checkUnknownOptions() {
|
|
367
|
+
const { options, globalCommand } = this.cli;
|
|
368
|
+
if (!this.config.allowUnknownOptions) {
|
|
369
|
+
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}`}\``);
|
|
370
|
+
}
|
|
166
371
|
}
|
|
167
372
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.
|
|
171
|
-
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
373
|
+
* Check if the required string-type options exist
|
|
172
374
|
*/
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
375
|
+
checkOptionValue() {
|
|
376
|
+
const { options: parsedOptions, globalCommand } = this.cli;
|
|
377
|
+
const options = [...globalCommand.options, ...this.options];
|
|
378
|
+
for (const option of options) {
|
|
379
|
+
const value = parsedOptions[option.name.split(".")[0]];
|
|
380
|
+
if (option.required) {
|
|
381
|
+
const hasNegated = options.some((o) => o.negated && o.names.includes(option.name));
|
|
382
|
+
if (value === true || value === false && !hasNegated) throw new CACError(`option \`${option.rawName}\` value is missing`);
|
|
179
383
|
}
|
|
180
|
-
}
|
|
384
|
+
}
|
|
181
385
|
}
|
|
182
386
|
/**
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
* @param {string} tag - The tag to include in each log of the new instance.
|
|
186
|
-
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
387
|
+
* Check if the number of args is more than expected
|
|
187
388
|
*/
|
|
188
|
-
|
|
189
|
-
|
|
389
|
+
checkUnusedArgs() {
|
|
390
|
+
const maximumArgsCount = this.args.some((arg) => arg.variadic) ? Infinity : this.args.length;
|
|
391
|
+
if (maximumArgsCount < this.cli.args.length) throw new CACError(`Unused args: ${this.cli.args.slice(maximumArgsCount).map((arg) => `\`${arg}\``).join(", ")}`);
|
|
190
392
|
}
|
|
393
|
+
};
|
|
394
|
+
var GlobalCommand = class extends Command {
|
|
395
|
+
constructor(cli) {
|
|
396
|
+
super("@@global@@", "", {}, cli);
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
var CAC = class extends EventTarget {
|
|
400
|
+
/** The program name to display in help and version message */
|
|
401
|
+
name;
|
|
402
|
+
commands;
|
|
403
|
+
globalCommand;
|
|
404
|
+
matchedCommand;
|
|
405
|
+
matchedCommandName;
|
|
191
406
|
/**
|
|
192
|
-
*
|
|
193
|
-
* Reporters will be called for each log message, depending on their implementation and log level.
|
|
194
|
-
*
|
|
195
|
-
* @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.
|
|
196
|
-
* @returns {Consola} The current Consola instance.
|
|
407
|
+
* Raw CLI arguments
|
|
197
408
|
*/
|
|
198
|
-
|
|
199
|
-
this.options.reporters.push(reporter);
|
|
200
|
-
return this;
|
|
201
|
-
}
|
|
409
|
+
rawArgs;
|
|
202
410
|
/**
|
|
203
|
-
*
|
|
204
|
-
* If no reporter is specified, all reporters will be removed.
|
|
205
|
-
*
|
|
206
|
-
* @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.
|
|
207
|
-
* @returns {Consola} The current Consola instance.
|
|
411
|
+
* Parsed CLI arguments
|
|
208
412
|
*/
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
413
|
+
args;
|
|
414
|
+
/**
|
|
415
|
+
* Parsed CLI options, camelCased
|
|
416
|
+
*/
|
|
417
|
+
options;
|
|
418
|
+
showHelpOnExit;
|
|
419
|
+
showVersionOnExit;
|
|
420
|
+
/**
|
|
421
|
+
* @param name The program name to display in help and version message
|
|
422
|
+
*/
|
|
423
|
+
constructor(name = "") {
|
|
424
|
+
super();
|
|
425
|
+
this.name = name;
|
|
426
|
+
this.commands = [];
|
|
427
|
+
this.rawArgs = [];
|
|
428
|
+
this.args = [];
|
|
429
|
+
this.options = {};
|
|
430
|
+
this.globalCommand = new GlobalCommand(this);
|
|
431
|
+
this.globalCommand.usage("<command> [options]");
|
|
215
432
|
}
|
|
216
433
|
/**
|
|
217
|
-
*
|
|
434
|
+
* Add a global usage text.
|
|
218
435
|
*
|
|
219
|
-
*
|
|
220
|
-
* @returns {Consola} The current Consola instance.
|
|
436
|
+
* This is not used by sub-commands.
|
|
221
437
|
*/
|
|
222
|
-
|
|
223
|
-
this.
|
|
438
|
+
usage(text) {
|
|
439
|
+
this.globalCommand.usage(text);
|
|
224
440
|
return this;
|
|
225
441
|
}
|
|
226
|
-
wrapAll() {
|
|
227
|
-
this.wrapConsole();
|
|
228
|
-
this.wrapStd();
|
|
229
|
-
}
|
|
230
|
-
restoreAll() {
|
|
231
|
-
this.restoreConsole();
|
|
232
|
-
this.restoreStd();
|
|
233
|
-
}
|
|
234
442
|
/**
|
|
235
|
-
*
|
|
443
|
+
* Add a sub-command
|
|
236
444
|
*/
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
445
|
+
command(rawName, description, config) {
|
|
446
|
+
const command = new Command(rawName, description || "", config, this);
|
|
447
|
+
command.globalCommand = this.globalCommand;
|
|
448
|
+
this.commands.push(command);
|
|
449
|
+
return command;
|
|
242
450
|
}
|
|
243
451
|
/**
|
|
244
|
-
*
|
|
452
|
+
* Add a global CLI option.
|
|
453
|
+
*
|
|
454
|
+
* Which is also applied to sub-commands.
|
|
245
455
|
*/
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
delete console["__" + type];
|
|
250
|
-
}
|
|
456
|
+
option(rawName, description, config) {
|
|
457
|
+
this.globalCommand.option(rawName, description, config);
|
|
458
|
+
return this;
|
|
251
459
|
}
|
|
252
460
|
/**
|
|
253
|
-
*
|
|
461
|
+
* Show help message when `-h, --help` flags appear.
|
|
462
|
+
*
|
|
254
463
|
*/
|
|
255
|
-
|
|
256
|
-
this.
|
|
257
|
-
this.
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
if (!stream) return;
|
|
261
|
-
if (!stream.__write) stream.__write = stream.write;
|
|
262
|
-
stream.write = (data) => {
|
|
263
|
-
this[type].raw(String(data).trim());
|
|
264
|
-
};
|
|
464
|
+
help(callback) {
|
|
465
|
+
this.globalCommand.option("-h, --help", "Display this message");
|
|
466
|
+
this.globalCommand.helpCallback = callback;
|
|
467
|
+
this.showHelpOnExit = true;
|
|
468
|
+
return this;
|
|
265
469
|
}
|
|
266
470
|
/**
|
|
267
|
-
*
|
|
471
|
+
* Show version number when `-v, --version` flags appear.
|
|
472
|
+
*
|
|
268
473
|
*/
|
|
269
|
-
|
|
270
|
-
this.
|
|
271
|
-
this.
|
|
272
|
-
|
|
273
|
-
_restoreStream(stream) {
|
|
274
|
-
if (!stream) return;
|
|
275
|
-
if (stream.__write) {
|
|
276
|
-
stream.write = stream.__write;
|
|
277
|
-
delete stream.__write;
|
|
278
|
-
}
|
|
474
|
+
version(version, customFlags = "-v, --version") {
|
|
475
|
+
this.globalCommand.version(version, customFlags);
|
|
476
|
+
this.showVersionOnExit = true;
|
|
477
|
+
return this;
|
|
279
478
|
}
|
|
280
479
|
/**
|
|
281
|
-
*
|
|
480
|
+
* Add a global example.
|
|
481
|
+
*
|
|
482
|
+
* This example added here will not be used by sub-commands.
|
|
282
483
|
*/
|
|
283
|
-
|
|
284
|
-
|
|
484
|
+
example(example) {
|
|
485
|
+
this.globalCommand.example(example);
|
|
486
|
+
return this;
|
|
285
487
|
}
|
|
286
488
|
/**
|
|
287
|
-
*
|
|
489
|
+
* Output the corresponding help message
|
|
490
|
+
* When a sub-command is matched, output the help message for the command
|
|
491
|
+
* Otherwise output the global one.
|
|
492
|
+
*
|
|
288
493
|
*/
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
for (const item of _queue) item[0]._logFn(item[1], item[2]);
|
|
494
|
+
outputHelp() {
|
|
495
|
+
if (this.matchedCommand) this.matchedCommand.outputHelp();
|
|
496
|
+
else this.globalCommand.outputHelp();
|
|
293
497
|
}
|
|
294
498
|
/**
|
|
295
|
-
*
|
|
499
|
+
* Output the version number.
|
|
296
500
|
*
|
|
297
|
-
* @param {ConsolaOptions["mockFn"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions["mockFn"]}.
|
|
298
501
|
*/
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
this._mockFn = _mockFn;
|
|
302
|
-
if (typeof _mockFn !== "function") return;
|
|
303
|
-
for (const type in this.options.types) {
|
|
304
|
-
this[type] = _mockFn(type, this.options.types[type]) || this[type];
|
|
305
|
-
this[type].raw = this[type];
|
|
306
|
-
}
|
|
502
|
+
outputVersion() {
|
|
503
|
+
this.globalCommand.outputVersion();
|
|
307
504
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
args,
|
|
315
|
-
isRaw
|
|
316
|
-
]);
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
return this._logFn(defaults, args, isRaw);
|
|
320
|
-
};
|
|
505
|
+
setParsedInfo({ args, options }, matchedCommand, matchedCommandName) {
|
|
506
|
+
this.args = args;
|
|
507
|
+
this.options = options;
|
|
508
|
+
if (matchedCommand) this.matchedCommand = matchedCommand;
|
|
509
|
+
if (matchedCommandName) this.matchedCommandName = matchedCommandName;
|
|
510
|
+
return this;
|
|
321
511
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
if (!
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
logObj.args.unshift(logObj.message);
|
|
334
|
-
delete logObj.message;
|
|
335
|
-
}
|
|
336
|
-
if (logObj.additional) {
|
|
337
|
-
if (!Array.isArray(logObj.additional)) logObj.additional = logObj.additional.split("\n");
|
|
338
|
-
logObj.args.push("\n" + logObj.additional.join("\n"));
|
|
339
|
-
delete logObj.additional;
|
|
512
|
+
unsetMatchedCommand() {
|
|
513
|
+
this.matchedCommand = void 0;
|
|
514
|
+
this.matchedCommandName = void 0;
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Parse argv
|
|
518
|
+
*/
|
|
519
|
+
parse(argv, { run = true } = {}) {
|
|
520
|
+
if (!argv) {
|
|
521
|
+
if (!runtimeProcessArgs) throw new Error("No argv provided and runtime process argv is not available.");
|
|
522
|
+
argv = runtimeProcessArgs;
|
|
340
523
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
this._lastLog.object = logObj;
|
|
356
|
-
this._log(logObj);
|
|
524
|
+
this.rawArgs = argv;
|
|
525
|
+
if (!this.name) this.name = argv[1] ? getFileName(argv[1]) : "cli";
|
|
526
|
+
let shouldParse = true;
|
|
527
|
+
for (const command of this.commands) {
|
|
528
|
+
const parsed = this.mri(argv.slice(2), command);
|
|
529
|
+
const commandName = parsed.args[0];
|
|
530
|
+
if (command.isMatched(commandName)) {
|
|
531
|
+
shouldParse = false;
|
|
532
|
+
const parsedInfo = {
|
|
533
|
+
...parsed,
|
|
534
|
+
args: parsed.args.slice(1)
|
|
535
|
+
};
|
|
536
|
+
this.setParsedInfo(parsedInfo, command, commandName);
|
|
537
|
+
this.dispatchEvent(new CustomEvent(`command:${commandName}`, { detail: command }));
|
|
357
538
|
}
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
logObj.tag,
|
|
366
|
-
logObj.args
|
|
367
|
-
]);
|
|
368
|
-
const isSameLog = this._lastLog.serialized === serializedLog;
|
|
369
|
-
this._lastLog.serialized = serializedLog;
|
|
370
|
-
if (isSameLog) {
|
|
371
|
-
this._lastLog.count = (this._lastLog.count || 0) + 1;
|
|
372
|
-
if (this._lastLog.count > this.options.throttleMin) {
|
|
373
|
-
this._lastLog.timeout = setTimeout(resolveLog, this.options.throttle);
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
539
|
+
}
|
|
540
|
+
if (shouldParse) {
|
|
541
|
+
for (const command of this.commands) if (command.isDefaultCommand) {
|
|
542
|
+
shouldParse = false;
|
|
543
|
+
const parsed = this.mri(argv.slice(2), command);
|
|
544
|
+
this.setParsedInfo(parsed, command);
|
|
545
|
+
this.dispatchEvent(new CustomEvent("command:!", { detail: command }));
|
|
376
546
|
}
|
|
377
|
-
} catch {}
|
|
378
|
-
resolveLog(true);
|
|
379
|
-
}
|
|
380
|
-
_log(logObj) {
|
|
381
|
-
for (const reporter of this.options.reporters) reporter.log(logObj, { options: this.options });
|
|
382
|
-
}
|
|
383
|
-
};
|
|
384
|
-
function _normalizeLogLevel(input, types = {}, defaultLevel = 3) {
|
|
385
|
-
if (input === void 0) return defaultLevel;
|
|
386
|
-
if (typeof input === "number") return input;
|
|
387
|
-
if (types[input] && types[input].level !== void 0) return types[input].level;
|
|
388
|
-
return defaultLevel;
|
|
389
|
-
}
|
|
390
|
-
Consola.prototype.add = Consola.prototype.addReporter;
|
|
391
|
-
Consola.prototype.remove = Consola.prototype.removeReporter;
|
|
392
|
-
Consola.prototype.clear = Consola.prototype.removeReporter;
|
|
393
|
-
Consola.prototype.withScope = Consola.prototype.withTag;
|
|
394
|
-
Consola.prototype.mock = Consola.prototype.mockTypes;
|
|
395
|
-
Consola.prototype.pause = Consola.prototype.pauseLogs;
|
|
396
|
-
Consola.prototype.resume = Consola.prototype.resumeLogs;
|
|
397
|
-
function createConsola$1(options = {}) {
|
|
398
|
-
return new Consola(options);
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
//#endregion
|
|
402
|
-
//#region ../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs
|
|
403
|
-
function parseStack(stack, message) {
|
|
404
|
-
const cwd = process.cwd() + sep;
|
|
405
|
-
return stack.split("\n").splice(message.split("\n").length).map((l) => l.trim().replace("file://", "").replace(cwd, ""));
|
|
406
|
-
}
|
|
407
|
-
function writeStream(data, stream) {
|
|
408
|
-
return (stream.__write || stream.write).call(stream, data);
|
|
409
|
-
}
|
|
410
|
-
const bracket = (x) => x ? `[${x}]` : "";
|
|
411
|
-
var BasicReporter = class {
|
|
412
|
-
formatStack(stack, message, opts) {
|
|
413
|
-
const indent = " ".repeat((opts?.errorLevel || 0) + 1);
|
|
414
|
-
return indent + parseStack(stack, message).join(`
|
|
415
|
-
${indent}`);
|
|
416
|
-
}
|
|
417
|
-
formatError(err, opts) {
|
|
418
|
-
const message = err.message ?? formatWithOptions(opts, err);
|
|
419
|
-
const stack = err.stack ? this.formatStack(err.stack, message, opts) : "";
|
|
420
|
-
const level = opts?.errorLevel || 0;
|
|
421
|
-
const causedPrefix = level > 0 ? `${" ".repeat(level)}[cause]: ` : "";
|
|
422
|
-
const causedError = err.cause ? "\n\n" + this.formatError(err.cause, {
|
|
423
|
-
...opts,
|
|
424
|
-
errorLevel: level + 1
|
|
425
|
-
}) : "";
|
|
426
|
-
return causedPrefix + message + "\n" + stack + causedError;
|
|
427
|
-
}
|
|
428
|
-
formatArgs(args, opts) {
|
|
429
|
-
return formatWithOptions(opts, ...args.map((arg) => {
|
|
430
|
-
if (arg && typeof arg.stack === "string") return this.formatError(arg, opts);
|
|
431
|
-
return arg;
|
|
432
|
-
}));
|
|
433
|
-
}
|
|
434
|
-
formatDate(date, opts) {
|
|
435
|
-
return opts.date ? date.toLocaleTimeString() : "";
|
|
436
|
-
}
|
|
437
|
-
filterAndJoin(arr) {
|
|
438
|
-
return arr.filter(Boolean).join(" ");
|
|
439
|
-
}
|
|
440
|
-
formatLogObj(logObj, opts) {
|
|
441
|
-
const message = this.formatArgs(logObj.args, opts);
|
|
442
|
-
if (logObj.type === "box") return "\n" + [
|
|
443
|
-
bracket(logObj.tag),
|
|
444
|
-
logObj.title && logObj.title,
|
|
445
|
-
...message.split("\n")
|
|
446
|
-
].filter(Boolean).map((l) => " > " + l).join("\n") + "\n";
|
|
447
|
-
return this.filterAndJoin([
|
|
448
|
-
bracket(logObj.type),
|
|
449
|
-
bracket(logObj.tag),
|
|
450
|
-
message
|
|
451
|
-
]);
|
|
452
|
-
}
|
|
453
|
-
log(logObj, ctx) {
|
|
454
|
-
return writeStream(this.formatLogObj(logObj, {
|
|
455
|
-
columns: ctx.options.stdout.columns || 0,
|
|
456
|
-
...ctx.options.formatOptions
|
|
457
|
-
}) + "\n", logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout);
|
|
458
|
-
}
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
//#endregion
|
|
462
|
-
//#region ../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs
|
|
463
|
-
const { env = {}, argv = [], platform = "" } = typeof process === "undefined" ? {} : process;
|
|
464
|
-
const isDisabled = "NO_COLOR" in env || argv.includes("--no-color");
|
|
465
|
-
const isForced = "FORCE_COLOR" in env || argv.includes("--color");
|
|
466
|
-
const isWindows = platform === "win32";
|
|
467
|
-
const isDumbTerminal = env.TERM === "dumb";
|
|
468
|
-
const isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;
|
|
469
|
-
const isCI = "CI" in env && ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env);
|
|
470
|
-
const isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);
|
|
471
|
-
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)) {
|
|
472
|
-
return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
|
|
473
|
-
}
|
|
474
|
-
function clearBleed(index, string, open, close, replace) {
|
|
475
|
-
return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;
|
|
476
|
-
}
|
|
477
|
-
function filterEmpty(open, close, replace = open, at = open.length + 1) {
|
|
478
|
-
return (string) => string || !(string === "" || string === void 0) ? clearBleed(("" + string).indexOf(close, at), string, open, close, replace) : "";
|
|
479
|
-
}
|
|
480
|
-
function init(open, close, replace) {
|
|
481
|
-
return filterEmpty(`\x1B[${open}m`, `\x1B[${close}m`, replace);
|
|
482
|
-
}
|
|
483
|
-
const colorDefs = {
|
|
484
|
-
reset: init(0, 0),
|
|
485
|
-
bold: init(1, 22, "\x1B[22m\x1B[1m"),
|
|
486
|
-
dim: init(2, 22, "\x1B[22m\x1B[2m"),
|
|
487
|
-
italic: init(3, 23),
|
|
488
|
-
underline: init(4, 24),
|
|
489
|
-
inverse: init(7, 27),
|
|
490
|
-
hidden: init(8, 28),
|
|
491
|
-
strikethrough: init(9, 29),
|
|
492
|
-
black: init(30, 39),
|
|
493
|
-
red: init(31, 39),
|
|
494
|
-
green: init(32, 39),
|
|
495
|
-
yellow: init(33, 39),
|
|
496
|
-
blue: init(34, 39),
|
|
497
|
-
magenta: init(35, 39),
|
|
498
|
-
cyan: init(36, 39),
|
|
499
|
-
white: init(37, 39),
|
|
500
|
-
gray: init(90, 39),
|
|
501
|
-
bgBlack: init(40, 49),
|
|
502
|
-
bgRed: init(41, 49),
|
|
503
|
-
bgGreen: init(42, 49),
|
|
504
|
-
bgYellow: init(43, 49),
|
|
505
|
-
bgBlue: init(44, 49),
|
|
506
|
-
bgMagenta: init(45, 49),
|
|
507
|
-
bgCyan: init(46, 49),
|
|
508
|
-
bgWhite: init(47, 49),
|
|
509
|
-
blackBright: init(90, 39),
|
|
510
|
-
redBright: init(91, 39),
|
|
511
|
-
greenBright: init(92, 39),
|
|
512
|
-
yellowBright: init(93, 39),
|
|
513
|
-
blueBright: init(94, 39),
|
|
514
|
-
magentaBright: init(95, 39),
|
|
515
|
-
cyanBright: init(96, 39),
|
|
516
|
-
whiteBright: init(97, 39),
|
|
517
|
-
bgBlackBright: init(100, 49),
|
|
518
|
-
bgRedBright: init(101, 49),
|
|
519
|
-
bgGreenBright: init(102, 49),
|
|
520
|
-
bgYellowBright: init(103, 49),
|
|
521
|
-
bgBlueBright: init(104, 49),
|
|
522
|
-
bgMagentaBright: init(105, 49),
|
|
523
|
-
bgCyanBright: init(106, 49),
|
|
524
|
-
bgWhiteBright: init(107, 49)
|
|
525
|
-
};
|
|
526
|
-
function createColors(useColor = isColorSupported) {
|
|
527
|
-
return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));
|
|
528
|
-
}
|
|
529
|
-
const colors = createColors();
|
|
530
|
-
function getColor$1(color, fallback = "reset") {
|
|
531
|
-
return colors[color] || colors[fallback];
|
|
532
|
-
}
|
|
533
|
-
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("|");
|
|
534
|
-
function stripAnsi$1(text) {
|
|
535
|
-
return text.replace(new RegExp(ansiRegex$1, "g"), "");
|
|
536
|
-
}
|
|
537
|
-
const boxStylePresets = {
|
|
538
|
-
solid: {
|
|
539
|
-
tl: "┌",
|
|
540
|
-
tr: "┐",
|
|
541
|
-
bl: "└",
|
|
542
|
-
br: "┘",
|
|
543
|
-
h: "─",
|
|
544
|
-
v: "│"
|
|
545
|
-
},
|
|
546
|
-
double: {
|
|
547
|
-
tl: "╔",
|
|
548
|
-
tr: "╗",
|
|
549
|
-
bl: "╚",
|
|
550
|
-
br: "╝",
|
|
551
|
-
h: "═",
|
|
552
|
-
v: "║"
|
|
553
|
-
},
|
|
554
|
-
doubleSingle: {
|
|
555
|
-
tl: "╓",
|
|
556
|
-
tr: "╖",
|
|
557
|
-
bl: "╙",
|
|
558
|
-
br: "╜",
|
|
559
|
-
h: "─",
|
|
560
|
-
v: "║"
|
|
561
|
-
},
|
|
562
|
-
doubleSingleRounded: {
|
|
563
|
-
tl: "╭",
|
|
564
|
-
tr: "╮",
|
|
565
|
-
bl: "╰",
|
|
566
|
-
br: "╯",
|
|
567
|
-
h: "─",
|
|
568
|
-
v: "║"
|
|
569
|
-
},
|
|
570
|
-
singleThick: {
|
|
571
|
-
tl: "┏",
|
|
572
|
-
tr: "┓",
|
|
573
|
-
bl: "┗",
|
|
574
|
-
br: "┛",
|
|
575
|
-
h: "━",
|
|
576
|
-
v: "┃"
|
|
577
|
-
},
|
|
578
|
-
singleDouble: {
|
|
579
|
-
tl: "╒",
|
|
580
|
-
tr: "╕",
|
|
581
|
-
bl: "╘",
|
|
582
|
-
br: "╛",
|
|
583
|
-
h: "═",
|
|
584
|
-
v: "│"
|
|
585
|
-
},
|
|
586
|
-
singleDoubleRounded: {
|
|
587
|
-
tl: "╭",
|
|
588
|
-
tr: "╮",
|
|
589
|
-
bl: "╰",
|
|
590
|
-
br: "╯",
|
|
591
|
-
h: "═",
|
|
592
|
-
v: "│"
|
|
593
|
-
},
|
|
594
|
-
rounded: {
|
|
595
|
-
tl: "╭",
|
|
596
|
-
tr: "╮",
|
|
597
|
-
bl: "╰",
|
|
598
|
-
br: "╯",
|
|
599
|
-
h: "─",
|
|
600
|
-
v: "│"
|
|
601
|
-
}
|
|
602
|
-
};
|
|
603
|
-
const defaultStyle = {
|
|
604
|
-
borderColor: "white",
|
|
605
|
-
borderStyle: "rounded",
|
|
606
|
-
valign: "center",
|
|
607
|
-
padding: 2,
|
|
608
|
-
marginLeft: 1,
|
|
609
|
-
marginTop: 1,
|
|
610
|
-
marginBottom: 1
|
|
611
|
-
};
|
|
612
|
-
function box(text, _opts = {}) {
|
|
613
|
-
const opts = {
|
|
614
|
-
..._opts,
|
|
615
|
-
style: {
|
|
616
|
-
...defaultStyle,
|
|
617
|
-
..._opts.style
|
|
618
547
|
}
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
const
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
} else boxLines.push(`${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`);
|
|
637
|
-
const valignOffset = opts.style.valign === "center" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === "top" ? height - textLines.length - paddingOffset : height - textLines.length;
|
|
638
|
-
for (let i = 0; i < height; i++) if (i < valignOffset || i >= valignOffset + textLines.length) boxLines.push(`${leftSpace}${borderStyle.v}${" ".repeat(widthOffset)}${borderStyle.v}`);
|
|
639
|
-
else {
|
|
640
|
-
const line = textLines[i - valignOffset];
|
|
641
|
-
const left = " ".repeat(paddingOffset);
|
|
642
|
-
const right = " ".repeat(width - stripAnsi$1(line).length);
|
|
643
|
-
boxLines.push(`${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`);
|
|
644
|
-
}
|
|
645
|
-
boxLines.push(`${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`);
|
|
646
|
-
if (opts.style.marginBottom > 0) boxLines.push("".repeat(opts.style.marginBottom));
|
|
647
|
-
return boxLines.join("\n");
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
//#endregion
|
|
651
|
-
//#region ../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/index.mjs
|
|
652
|
-
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, {
|
|
653
|
-
get(e, s) {
|
|
654
|
-
return i()[s] ?? r[s];
|
|
655
|
-
},
|
|
656
|
-
has(e, s) {
|
|
657
|
-
return s in i() || s in r;
|
|
658
|
-
},
|
|
659
|
-
set(e, s, E) {
|
|
660
|
-
const B = i(true);
|
|
661
|
-
return B[s] = E, true;
|
|
662
|
-
},
|
|
663
|
-
deleteProperty(e, s) {
|
|
664
|
-
if (!s) return false;
|
|
665
|
-
const E = i(true);
|
|
666
|
-
return delete E[s], true;
|
|
667
|
-
},
|
|
668
|
-
ownKeys() {
|
|
669
|
-
const e = i(true);
|
|
670
|
-
return Object.keys(e);
|
|
671
|
-
}
|
|
672
|
-
}), t = typeof process < "u" && process.env && process.env.NODE_ENV || "", f = [
|
|
673
|
-
["APPVEYOR"],
|
|
674
|
-
[
|
|
675
|
-
"AWS_AMPLIFY",
|
|
676
|
-
"AWS_APP_ID",
|
|
677
|
-
{ ci: true }
|
|
678
|
-
],
|
|
679
|
-
["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],
|
|
680
|
-
["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],
|
|
681
|
-
["APPCIRCLE", "AC_APPCIRCLE"],
|
|
682
|
-
["BAMBOO", "bamboo_planKey"],
|
|
683
|
-
["BITBUCKET", "BITBUCKET_COMMIT"],
|
|
684
|
-
["BITRISE", "BITRISE_IO"],
|
|
685
|
-
["BUDDY", "BUDDY_WORKSPACE_ID"],
|
|
686
|
-
["BUILDKITE"],
|
|
687
|
-
["CIRCLE", "CIRCLECI"],
|
|
688
|
-
["CIRRUS", "CIRRUS_CI"],
|
|
689
|
-
[
|
|
690
|
-
"CLOUDFLARE_PAGES",
|
|
691
|
-
"CF_PAGES",
|
|
692
|
-
{ ci: true }
|
|
693
|
-
],
|
|
694
|
-
["CODEBUILD", "CODEBUILD_BUILD_ARN"],
|
|
695
|
-
["CODEFRESH", "CF_BUILD_ID"],
|
|
696
|
-
["DRONE"],
|
|
697
|
-
["DRONE", "DRONE_BUILD_EVENT"],
|
|
698
|
-
["DSARI"],
|
|
699
|
-
["GITHUB_ACTIONS"],
|
|
700
|
-
["GITLAB", "GITLAB_CI"],
|
|
701
|
-
["GITLAB", "CI_MERGE_REQUEST_ID"],
|
|
702
|
-
["GOCD", "GO_PIPELINE_LABEL"],
|
|
703
|
-
["LAYERCI"],
|
|
704
|
-
["HUDSON", "HUDSON_URL"],
|
|
705
|
-
["JENKINS", "JENKINS_URL"],
|
|
706
|
-
["MAGNUM"],
|
|
707
|
-
["NETLIFY"],
|
|
708
|
-
[
|
|
709
|
-
"NETLIFY",
|
|
710
|
-
"NETLIFY_LOCAL",
|
|
711
|
-
{ ci: false }
|
|
712
|
-
],
|
|
713
|
-
["NEVERCODE"],
|
|
714
|
-
["RENDER"],
|
|
715
|
-
["SAIL", "SAILCI"],
|
|
716
|
-
["SEMAPHORE"],
|
|
717
|
-
["SCREWDRIVER"],
|
|
718
|
-
["SHIPPABLE"],
|
|
719
|
-
["SOLANO", "TDDIUM"],
|
|
720
|
-
["STRIDER"],
|
|
721
|
-
["TEAMCITY", "TEAMCITY_VERSION"],
|
|
722
|
-
["TRAVIS"],
|
|
723
|
-
["VERCEL", "NOW_BUILDER"],
|
|
724
|
-
[
|
|
725
|
-
"VERCEL",
|
|
726
|
-
"VERCEL",
|
|
727
|
-
{ ci: false }
|
|
728
|
-
],
|
|
729
|
-
[
|
|
730
|
-
"VERCEL",
|
|
731
|
-
"VERCEL_ENV",
|
|
732
|
-
{ ci: false }
|
|
733
|
-
],
|
|
734
|
-
["APPCENTER", "APPCENTER_BUILD_ID"],
|
|
735
|
-
[
|
|
736
|
-
"CODESANDBOX",
|
|
737
|
-
"CODESANDBOX_SSE",
|
|
738
|
-
{ ci: false }
|
|
739
|
-
],
|
|
740
|
-
[
|
|
741
|
-
"CODESANDBOX",
|
|
742
|
-
"CODESANDBOX_HOST",
|
|
743
|
-
{ ci: false }
|
|
744
|
-
],
|
|
745
|
-
["STACKBLITZ"],
|
|
746
|
-
["STORMKIT"],
|
|
747
|
-
["CLEAVR"],
|
|
748
|
-
["ZEABUR"],
|
|
749
|
-
[
|
|
750
|
-
"CODESPHERE",
|
|
751
|
-
"CODESPHERE_APP_ID",
|
|
752
|
-
{ ci: true }
|
|
753
|
-
],
|
|
754
|
-
["RAILWAY", "RAILWAY_PROJECT_ID"],
|
|
755
|
-
["RAILWAY", "RAILWAY_SERVICE_ID"],
|
|
756
|
-
["DENO-DEPLOY", "DENO_DEPLOYMENT_ID"],
|
|
757
|
-
[
|
|
758
|
-
"FIREBASE_APP_HOSTING",
|
|
759
|
-
"FIREBASE_APP_HOSTING",
|
|
760
|
-
{ ci: true }
|
|
761
|
-
]
|
|
762
|
-
];
|
|
763
|
-
function b() {
|
|
764
|
-
if (globalThis.process?.env) for (const e of f) {
|
|
765
|
-
const s = e[1] || e[0];
|
|
766
|
-
if (globalThis.process?.env[s]) return {
|
|
767
|
-
name: e[0].toLowerCase(),
|
|
768
|
-
...e[2]
|
|
548
|
+
if (shouldParse) {
|
|
549
|
+
const parsed = this.mri(argv.slice(2));
|
|
550
|
+
this.setParsedInfo(parsed);
|
|
551
|
+
}
|
|
552
|
+
if (this.options.help && this.showHelpOnExit) {
|
|
553
|
+
this.outputHelp();
|
|
554
|
+
run = false;
|
|
555
|
+
this.unsetMatchedCommand();
|
|
556
|
+
}
|
|
557
|
+
if (this.options.version && this.showVersionOnExit && this.matchedCommandName == null) {
|
|
558
|
+
this.outputVersion();
|
|
559
|
+
run = false;
|
|
560
|
+
this.unsetMatchedCommand();
|
|
561
|
+
}
|
|
562
|
+
const parsedArgv = {
|
|
563
|
+
args: this.args,
|
|
564
|
+
options: this.options
|
|
769
565
|
};
|
|
566
|
+
if (run) this.runMatchedCommand();
|
|
567
|
+
if (!this.matchedCommand && this.args[0]) this.dispatchEvent(new CustomEvent("command:*", { detail: this.args[0] }));
|
|
568
|
+
return parsedArgv;
|
|
770
569
|
}
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
const
|
|
789
|
-
|
|
790
|
-
const
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
[u, "edge-light"],
|
|
799
|
-
[N, "workerd"],
|
|
800
|
-
[L, "fastly"],
|
|
801
|
-
[D, "deno"],
|
|
802
|
-
[O, "bun"],
|
|
803
|
-
[c, "node"]
|
|
804
|
-
];
|
|
805
|
-
function G() {
|
|
806
|
-
const e = F.find((s) => s[0]);
|
|
807
|
-
if (e) return { name: e[1] };
|
|
808
|
-
}
|
|
809
|
-
G()?.name;
|
|
810
|
-
function ansiRegex({ onlyFirst = false } = {}) {
|
|
811
|
-
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("|");
|
|
812
|
-
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
813
|
-
}
|
|
814
|
-
const regex = ansiRegex();
|
|
815
|
-
function stripAnsi(string) {
|
|
816
|
-
if (typeof string !== "string") throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
|
|
817
|
-
return string.replace(regex, "");
|
|
818
|
-
}
|
|
819
|
-
function isAmbiguous(x) {
|
|
820
|
-
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;
|
|
821
|
-
}
|
|
822
|
-
function isFullWidth(x) {
|
|
823
|
-
return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
|
|
824
|
-
}
|
|
825
|
-
function isWide(x) {
|
|
826
|
-
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;
|
|
827
|
-
}
|
|
828
|
-
function validate(codePoint) {
|
|
829
|
-
if (!Number.isSafeInteger(codePoint)) throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
830
|
-
}
|
|
831
|
-
function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
|
|
832
|
-
validate(codePoint);
|
|
833
|
-
if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) return 2;
|
|
834
|
-
return 1;
|
|
835
|
-
}
|
|
836
|
-
const emojiRegex = () => {
|
|
837
|
-
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;
|
|
838
|
-
};
|
|
839
|
-
const segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split("") };
|
|
840
|
-
const defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
|
|
841
|
-
function stringWidth$1(string, options = {}) {
|
|
842
|
-
if (typeof string !== "string" || string.length === 0) return 0;
|
|
843
|
-
const { ambiguousIsNarrow = true, countAnsiEscapeCodes = false } = options;
|
|
844
|
-
if (!countAnsiEscapeCodes) string = stripAnsi(string);
|
|
845
|
-
if (string.length === 0) return 0;
|
|
846
|
-
let width = 0;
|
|
847
|
-
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
848
|
-
for (const { segment: character } of segmenter.segment(string)) {
|
|
849
|
-
const codePoint = character.codePointAt(0);
|
|
850
|
-
if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) continue;
|
|
851
|
-
if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) continue;
|
|
852
|
-
if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) continue;
|
|
853
|
-
if (codePoint >= 55296 && codePoint <= 57343) continue;
|
|
854
|
-
if (codePoint >= 65024 && codePoint <= 65039) continue;
|
|
855
|
-
if (defaultIgnorableCodePointRegex.test(character)) continue;
|
|
856
|
-
if (emojiRegex().test(character)) {
|
|
857
|
-
width += 2;
|
|
858
|
-
continue;
|
|
570
|
+
mri(argv, command) {
|
|
571
|
+
const cliOptions = [...this.globalCommand.options, ...command ? command.options : []];
|
|
572
|
+
const mriOptions = getMriOptions(cliOptions);
|
|
573
|
+
let argsAfterDoubleDashes = [];
|
|
574
|
+
const doubleDashesIndex = argv.indexOf("--");
|
|
575
|
+
if (doubleDashesIndex !== -1) {
|
|
576
|
+
argsAfterDoubleDashes = argv.slice(doubleDashesIndex + 1);
|
|
577
|
+
argv = argv.slice(0, doubleDashesIndex);
|
|
578
|
+
}
|
|
579
|
+
let parsed = lib_default(argv, mriOptions);
|
|
580
|
+
parsed = Object.keys(parsed).reduce((res, name) => {
|
|
581
|
+
return {
|
|
582
|
+
...res,
|
|
583
|
+
[camelcaseOptionName(name)]: parsed[name]
|
|
584
|
+
};
|
|
585
|
+
}, { _: [] });
|
|
586
|
+
const args = parsed._;
|
|
587
|
+
const options = { "--": argsAfterDoubleDashes };
|
|
588
|
+
const ignoreDefault = command && command.config.ignoreOptionDefaultValue ? command.config.ignoreOptionDefaultValue : this.globalCommand.config.ignoreOptionDefaultValue;
|
|
589
|
+
const transforms = Object.create(null);
|
|
590
|
+
for (const cliOption of cliOptions) {
|
|
591
|
+
if (!ignoreDefault && cliOption.config.default !== void 0) for (const name of cliOption.names) options[name] = cliOption.config.default;
|
|
592
|
+
if (Array.isArray(cliOption.config.type) && transforms[cliOption.name] === void 0) {
|
|
593
|
+
transforms[cliOption.name] = Object.create(null);
|
|
594
|
+
transforms[cliOption.name].shouldTransform = true;
|
|
595
|
+
transforms[cliOption.name].transformFunction = cliOption.config.type[0];
|
|
596
|
+
}
|
|
859
597
|
}
|
|
860
|
-
|
|
598
|
+
for (const key of Object.keys(parsed)) if (key !== "_") {
|
|
599
|
+
setDotProp(options, key.split("."), parsed[key]);
|
|
600
|
+
setByType(options, transforms);
|
|
601
|
+
}
|
|
602
|
+
return {
|
|
603
|
+
args,
|
|
604
|
+
options
|
|
605
|
+
};
|
|
861
606
|
}
|
|
862
|
-
|
|
863
|
-
}
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
success: "green",
|
|
874
|
-
ready: "green",
|
|
875
|
-
start: "magenta"
|
|
876
|
-
};
|
|
877
|
-
const LEVEL_COLOR_MAP = {
|
|
878
|
-
0: "red",
|
|
879
|
-
1: "yellow"
|
|
880
|
-
};
|
|
881
|
-
const unicode = isUnicodeSupported();
|
|
882
|
-
const s = (c, fallback) => unicode ? c : fallback;
|
|
883
|
-
const TYPE_ICONS = {
|
|
884
|
-
error: s("✖", "×"),
|
|
885
|
-
fatal: s("✖", "×"),
|
|
886
|
-
ready: s("✔", "√"),
|
|
887
|
-
warn: s("⚠", "‼"),
|
|
888
|
-
info: s("ℹ", "i"),
|
|
889
|
-
success: s("✔", "√"),
|
|
890
|
-
debug: s("⚙", "D"),
|
|
891
|
-
trace: s("→", "→"),
|
|
892
|
-
fail: s("✖", "×"),
|
|
893
|
-
start: s("◐", "o"),
|
|
894
|
-
log: ""
|
|
895
|
-
};
|
|
896
|
-
function stringWidth(str) {
|
|
897
|
-
if (!(typeof Intl === "object") || !Intl.Segmenter) return stripAnsi$1(str).length;
|
|
898
|
-
return stringWidth$1(str);
|
|
899
|
-
}
|
|
900
|
-
var FancyReporter = class extends BasicReporter {
|
|
901
|
-
formatStack(stack, message, opts) {
|
|
902
|
-
const indent = " ".repeat((opts?.errorLevel || 0) + 1);
|
|
903
|
-
return `
|
|
904
|
-
${indent}` + parseStack(stack, message).map((line) => " " + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\((.+)\)/, (_, m) => `(${colors.cyan(m)})`)).join(`
|
|
905
|
-
${indent}`);
|
|
906
|
-
}
|
|
907
|
-
formatType(logObj, isBadge, opts) {
|
|
908
|
-
const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || "gray";
|
|
909
|
-
if (isBadge) return getBgColor(typeColor)(colors.black(` ${logObj.type.toUpperCase()} `));
|
|
910
|
-
const _type = typeof TYPE_ICONS[logObj.type] === "string" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;
|
|
911
|
-
return _type ? getColor(typeColor)(_type) : "";
|
|
912
|
-
}
|
|
913
|
-
formatLogObj(logObj, opts) {
|
|
914
|
-
const [message, ...additional] = this.formatArgs(logObj.args, opts).split("\n");
|
|
915
|
-
if (logObj.type === "box") return box(characterFormat(message + (additional.length > 0 ? "\n" + additional.join("\n") : "")), {
|
|
916
|
-
title: logObj.title ? characterFormat(logObj.title) : void 0,
|
|
917
|
-
style: logObj.style
|
|
607
|
+
runMatchedCommand() {
|
|
608
|
+
const { args, options, matchedCommand: command } = this;
|
|
609
|
+
if (!command || !command.commandAction) return;
|
|
610
|
+
command.checkUnknownOptions();
|
|
611
|
+
command.checkOptionValue();
|
|
612
|
+
command.checkRequiredArgs();
|
|
613
|
+
command.checkUnusedArgs();
|
|
614
|
+
const actionArgs = [];
|
|
615
|
+
command.args.forEach((arg, index) => {
|
|
616
|
+
if (arg.variadic) actionArgs.push(args.slice(index));
|
|
617
|
+
else actionArgs.push(args[index]);
|
|
918
618
|
});
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
const isBadge = logObj.badge ?? logObj.level < 2;
|
|
922
|
-
const type = this.formatType(logObj, isBadge, opts);
|
|
923
|
-
const tag = logObj.tag ? colors.gray(logObj.tag) : "";
|
|
924
|
-
let line;
|
|
925
|
-
const left = this.filterAndJoin([type, characterFormat(message)]);
|
|
926
|
-
const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);
|
|
927
|
-
const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;
|
|
928
|
-
line = space > 0 && (opts.columns || 0) >= 80 ? left + " ".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : "") + left;
|
|
929
|
-
line += characterFormat(additional.length > 0 ? "\n" + additional.join("\n") : "");
|
|
930
|
-
if (logObj.type === "trace") {
|
|
931
|
-
const _err = /* @__PURE__ */ new Error("Trace: " + logObj.message);
|
|
932
|
-
line += this.formatStack(_err.stack || "", _err.message);
|
|
933
|
-
}
|
|
934
|
-
return isBadge ? "\n" + line + "\n" : line;
|
|
619
|
+
actionArgs.push(options);
|
|
620
|
+
return command.commandAction.apply(this, actionArgs);
|
|
935
621
|
}
|
|
936
622
|
};
|
|
937
|
-
function characterFormat(str) {
|
|
938
|
-
return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\s+_([^_]+)_\s+/gm, (_, m) => ` ${colors.underline(m)} `);
|
|
939
|
-
}
|
|
940
|
-
function getColor(color = "white") {
|
|
941
|
-
return colors[color] || colors.white;
|
|
942
|
-
}
|
|
943
|
-
function getBgColor(color = "bgWhite") {
|
|
944
|
-
return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;
|
|
945
|
-
}
|
|
946
|
-
function createConsola(options = {}) {
|
|
947
|
-
let level = _getDefaultLogLevel();
|
|
948
|
-
if (process.env.CONSOLA_LEVEL) level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;
|
|
949
|
-
return createConsola$1({
|
|
950
|
-
level,
|
|
951
|
-
defaults: { level },
|
|
952
|
-
stdout: process.stdout,
|
|
953
|
-
stderr: process.stderr,
|
|
954
|
-
prompt: (...args) => import("./shared/prompt-tlfjalEt.mjs").then((m) => m.prompt(...args)),
|
|
955
|
-
reporters: options.reporters || [options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()],
|
|
956
|
-
...options
|
|
957
|
-
});
|
|
958
|
-
}
|
|
959
|
-
function _getDefaultLogLevel() {
|
|
960
|
-
if (g) return LogLevels.debug;
|
|
961
|
-
if (R) return LogLevels.warn;
|
|
962
|
-
return LogLevels.info;
|
|
963
|
-
}
|
|
964
|
-
const consola = createConsola();
|
|
965
|
-
|
|
966
|
-
//#endregion
|
|
967
|
-
//#region src/cli/logger.ts
|
|
968
623
|
/**
|
|
969
|
-
*
|
|
624
|
+
* @param name The program name to display in help and version message
|
|
970
625
|
*/
|
|
971
|
-
const
|
|
972
|
-
function createTestingLogger() {
|
|
973
|
-
const types = [
|
|
974
|
-
"silent",
|
|
975
|
-
"fatal",
|
|
976
|
-
"error",
|
|
977
|
-
"warn",
|
|
978
|
-
"log",
|
|
979
|
-
"info",
|
|
980
|
-
"success",
|
|
981
|
-
"fail",
|
|
982
|
-
"ready",
|
|
983
|
-
"start",
|
|
984
|
-
"box",
|
|
985
|
-
"debug",
|
|
986
|
-
"trace",
|
|
987
|
-
"verbose"
|
|
988
|
-
];
|
|
989
|
-
const ret = Object.create(null);
|
|
990
|
-
for (const type of types) ret[type] = console.log;
|
|
991
|
-
return ret;
|
|
992
|
-
}
|
|
993
|
-
|
|
626
|
+
const cac = (name = "") => new CAC(name);
|
|
994
627
|
//#endregion
|
|
995
628
|
//#region src/cli/arguments/alias.ts
|
|
996
629
|
const alias = {
|
|
@@ -1001,36 +634,29 @@ const alias = {
|
|
|
1001
634
|
help: { abbreviation: "h" },
|
|
1002
635
|
version: { abbreviation: "v" },
|
|
1003
636
|
watch: { abbreviation: "w" },
|
|
1004
|
-
dir: {
|
|
1005
|
-
|
|
637
|
+
dir: {
|
|
638
|
+
abbreviation: "d",
|
|
639
|
+
requireValue: true
|
|
640
|
+
},
|
|
641
|
+
file: {
|
|
642
|
+
abbreviation: "o",
|
|
643
|
+
requireValue: true
|
|
644
|
+
},
|
|
1006
645
|
external: { abbreviation: "e" },
|
|
1007
646
|
format: { abbreviation: "f" },
|
|
1008
647
|
name: { abbreviation: "n" },
|
|
1009
648
|
globals: { abbreviation: "g" },
|
|
1010
|
-
sourcemap: {
|
|
1011
|
-
abbreviation: "s",
|
|
1012
|
-
default: true
|
|
1013
|
-
},
|
|
649
|
+
sourcemap: { abbreviation: "s" },
|
|
1014
650
|
minify: { abbreviation: "m" },
|
|
1015
651
|
platform: { abbreviation: "p" },
|
|
1016
652
|
assetFileNames: { hint: "name" },
|
|
1017
653
|
chunkFileNames: { hint: "name" },
|
|
1018
654
|
entryFileNames: { hint: "name" },
|
|
1019
|
-
externalLiveBindings: {
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
},
|
|
1023
|
-
treeshake: {
|
|
1024
|
-
default: true,
|
|
1025
|
-
reverse: true
|
|
1026
|
-
},
|
|
1027
|
-
preserveEntrySignatures: {
|
|
1028
|
-
default: "strict",
|
|
1029
|
-
reverse: true
|
|
1030
|
-
},
|
|
655
|
+
externalLiveBindings: { reverse: true },
|
|
656
|
+
treeshake: { reverse: true },
|
|
657
|
+
preserveEntrySignatures: { reverse: true },
|
|
1031
658
|
moduleTypes: { hint: "types" }
|
|
1032
659
|
};
|
|
1033
|
-
|
|
1034
660
|
//#endregion
|
|
1035
661
|
//#region src/cli/arguments/utils.ts
|
|
1036
662
|
function setNestedProperty(obj, path, value) {
|
|
@@ -1051,25 +677,17 @@ function setNestedProperty(obj, path, value) {
|
|
|
1051
677
|
function camelCaseToKebabCase(str) {
|
|
1052
678
|
return str.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);
|
|
1053
679
|
}
|
|
1054
|
-
function kebabCaseToCamelCase(str) {
|
|
1055
|
-
return str.replace(/-./g, (match) => match[1].toUpperCase());
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
680
|
//#endregion
|
|
1059
681
|
//#region src/cli/arguments/normalize.ts
|
|
682
|
+
const reservedKeys = new Set([
|
|
683
|
+
"help",
|
|
684
|
+
"version",
|
|
685
|
+
"config",
|
|
686
|
+
"watch",
|
|
687
|
+
"environment"
|
|
688
|
+
]);
|
|
1060
689
|
function normalizeCliOptions(cliOptions, positionals) {
|
|
1061
|
-
const
|
|
1062
|
-
"__proto__",
|
|
1063
|
-
"constructor",
|
|
1064
|
-
"prototype"
|
|
1065
|
-
];
|
|
1066
|
-
const unflattenedCliOptions = {};
|
|
1067
|
-
for (let [key, value] of Object.entries(cliOptions)) if (prototypePollutionKeys.includes(key)) {} else if (key.includes(".")) {
|
|
1068
|
-
const [parentKey] = key.split(".");
|
|
1069
|
-
unflattenedCliOptions[parentKey] ??= {};
|
|
1070
|
-
setNestedProperty(unflattenedCliOptions, key, value);
|
|
1071
|
-
} else unflattenedCliOptions[key] = value;
|
|
1072
|
-
const [data, errors] = validateCliOptions(unflattenedCliOptions);
|
|
690
|
+
const [data, errors] = validateCliOptions(cliOptions);
|
|
1073
691
|
if (errors?.length) {
|
|
1074
692
|
errors.forEach((error) => {
|
|
1075
693
|
logger.error(`${error}. You can use \`rolldown -h\` to see the help.`);
|
|
@@ -1085,21 +703,15 @@ function normalizeCliOptions(cliOptions, positionals) {
|
|
|
1085
703
|
watch: options.watch ?? false
|
|
1086
704
|
};
|
|
1087
705
|
if (typeof options.config === "string") result.config = options.config;
|
|
706
|
+
else if (options.config === true) result.config = "";
|
|
1088
707
|
if (options.environment !== void 0) result.environment = options.environment;
|
|
1089
|
-
const keysOfInput = getInputCliKeys();
|
|
1090
|
-
const keysOfOutput = getOutputCliKeys();
|
|
1091
|
-
const reservedKeys = [
|
|
1092
|
-
"help",
|
|
1093
|
-
"version",
|
|
1094
|
-
"config",
|
|
1095
|
-
"watch",
|
|
1096
|
-
"environment"
|
|
1097
|
-
];
|
|
708
|
+
const keysOfInput = new Set(getInputCliKeys());
|
|
709
|
+
const keysOfOutput = new Set(getOutputCliKeys());
|
|
1098
710
|
for (let [key, value] of Object.entries(options)) {
|
|
1099
711
|
const [primary] = key.split(".");
|
|
1100
|
-
if (keysOfInput.
|
|
1101
|
-
else if (keysOfOutput.
|
|
1102
|
-
else if (!reservedKeys.
|
|
712
|
+
if (keysOfInput.has(primary)) setNestedProperty(result.input, key, value);
|
|
713
|
+
else if (keysOfOutput.has(primary)) setNestedProperty(result.output, key, value);
|
|
714
|
+
else if (!reservedKeys.has(key)) {
|
|
1103
715
|
logger.error(`Unknown option: ${key}`);
|
|
1104
716
|
process.exit(1);
|
|
1105
717
|
}
|
|
@@ -1108,124 +720,122 @@ function normalizeCliOptions(cliOptions, positionals) {
|
|
|
1108
720
|
else result.input.input = positionals;
|
|
1109
721
|
return result;
|
|
1110
722
|
}
|
|
1111
|
-
|
|
1112
723
|
//#endregion
|
|
1113
724
|
//#region src/cli/arguments/index.ts
|
|
1114
725
|
const schemaInfo = getCliSchemaInfo();
|
|
1115
726
|
const options = Object.fromEntries(Object.entries(schemaInfo).filter(([_key, info]) => info.type !== "never").map(([key, info]) => {
|
|
1116
|
-
const config =
|
|
727
|
+
const config = alias[key];
|
|
728
|
+
let description = info?.description ?? config?.description ?? "";
|
|
729
|
+
if (config?.reverse) {
|
|
730
|
+
if (description.startsWith("enable")) description = description.replace("enable", "disable");
|
|
731
|
+
else if (!description.startsWith("Avoid")) description = `disable ${description}`;
|
|
732
|
+
}
|
|
1117
733
|
const result = {
|
|
1118
734
|
type: info.type === "boolean" ? "boolean" : "string",
|
|
1119
|
-
description
|
|
1120
|
-
hint: config?.hint
|
|
735
|
+
description
|
|
1121
736
|
};
|
|
1122
|
-
if (config
|
|
1123
|
-
if (config
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
}
|
|
1127
|
-
key = camelCaseToKebabCase(key);
|
|
1128
|
-
return [config?.reverse ? `no-${key}` : key, result];
|
|
737
|
+
if (config?.abbreviation) result.short = config.abbreviation;
|
|
738
|
+
if (config?.hint) result.hint = config.hint;
|
|
739
|
+
const kebabKey = camelCaseToKebabCase(key);
|
|
740
|
+
return [config?.reverse ? `no-${kebabKey}` : kebabKey, result];
|
|
1129
741
|
}));
|
|
742
|
+
const knownKeys = new Set(Object.keys(schemaInfo));
|
|
743
|
+
for (const key of Object.keys(schemaInfo)) {
|
|
744
|
+
const dotIdx = key.indexOf(".");
|
|
745
|
+
if (dotIdx > 0) knownKeys.add(key.substring(0, dotIdx));
|
|
746
|
+
}
|
|
747
|
+
const shortAliases = /* @__PURE__ */ new Set();
|
|
748
|
+
for (const config of Object.values(alias)) if (config?.abbreviation) shortAliases.add(config.abbreviation);
|
|
1130
749
|
function parseCliArguments() {
|
|
1131
|
-
const
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
750
|
+
const cli = cac("rolldown");
|
|
751
|
+
for (const [key, info] of Object.entries(schemaInfo)) {
|
|
752
|
+
if (info.type === "never") continue;
|
|
753
|
+
const config = alias[key];
|
|
754
|
+
let rawName = "";
|
|
755
|
+
if (config?.abbreviation) rawName += `-${config.abbreviation}, `;
|
|
756
|
+
if (config?.reverse) rawName += `--no-${key}`;
|
|
757
|
+
else rawName += `--${key}`;
|
|
758
|
+
if (info.type !== "boolean" && !config?.reverse) if (config?.requireValue) rawName += ` <${config?.hint ?? key}>`;
|
|
759
|
+
else rawName += ` [${config?.hint ?? key}]`;
|
|
760
|
+
cli.option(rawName, info.description ?? config?.description ?? "");
|
|
761
|
+
}
|
|
762
|
+
let parsedInput = [];
|
|
763
|
+
let parsedOptions = {};
|
|
764
|
+
const cmd = cli.command("[...input]", "");
|
|
765
|
+
cmd.allowUnknownOptions();
|
|
766
|
+
cmd.ignoreOptionDefaultValue();
|
|
767
|
+
cmd.action((input, opts) => {
|
|
768
|
+
parsedInput = input;
|
|
769
|
+
parsedOptions = opts;
|
|
1136
770
|
});
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
}
|
|
771
|
+
try {
|
|
772
|
+
cli.parse(process.argv, { run: true });
|
|
773
|
+
} catch (err) {
|
|
774
|
+
if (err?.name === "CACError") {
|
|
775
|
+
const match = err.message.match(/option `(.+?)` value is missing/);
|
|
776
|
+
if (match) {
|
|
777
|
+
const optName = match[1].replace(/ [<[].*/, "").replace(/^-\w, /, "");
|
|
778
|
+
logger.error(`Option \`${optName}\` requires a value but none was provided.`);
|
|
779
|
+
} else logger.error(err.message);
|
|
780
|
+
process.exit(1);
|
|
1146
781
|
}
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
} else if (type === "
|
|
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
|
-
});
|
|
1200
|
-
} else Object.defineProperty(values, option.name, {
|
|
1201
|
-
value: option.value ?? "",
|
|
1202
|
-
enumerable: true,
|
|
1203
|
-
configurable: true,
|
|
1204
|
-
writable: true
|
|
1205
|
-
});
|
|
1206
|
-
}).filter((item) => {
|
|
1207
|
-
return item !== void 0;
|
|
1208
|
-
});
|
|
1209
|
-
invalid_options.sort((a, b) => {
|
|
1210
|
-
return a.name.localeCompare(b.name);
|
|
1211
|
-
});
|
|
1212
|
-
if (invalid_options.length !== 0) {
|
|
1213
|
-
let single = invalid_options.length === 1;
|
|
1214
|
-
logger.warn(`Option \`${invalid_options.map((item) => item.name).join(",")}\` ${single ? "is" : "are"} unrecognized. We will ignore ${single ? "this" : "those"} option${single ? "" : "s"}.`);
|
|
1215
|
-
}
|
|
1216
|
-
let rawArgs = {
|
|
1217
|
-
...values,
|
|
1218
|
-
...invalid_options.reduce((acc, cur) => {
|
|
1219
|
-
acc[cur.name] = cur.value;
|
|
1220
|
-
return acc;
|
|
1221
|
-
}, Object.create(null))
|
|
1222
|
-
};
|
|
782
|
+
throw err;
|
|
783
|
+
}
|
|
784
|
+
delete parsedOptions["--"];
|
|
785
|
+
for (const short of shortAliases) delete parsedOptions[short];
|
|
786
|
+
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];
|
|
787
|
+
const unknownKeys = Object.keys(parsedOptions).filter((k) => !knownKeys.has(k));
|
|
788
|
+
if (unknownKeys.length > 0) {
|
|
789
|
+
unknownKeys.sort();
|
|
790
|
+
const single = unknownKeys.length === 1;
|
|
791
|
+
logger.warn(`Option \`${unknownKeys.join(",")}\` ${single ? "is" : "are"} unrecognized. We will ignore ${single ? "this" : "those"} option${single ? "" : "s"}.`);
|
|
792
|
+
}
|
|
793
|
+
const rawArgs = { ...parsedOptions };
|
|
794
|
+
for (const key of unknownKeys) delete parsedOptions[key];
|
|
795
|
+
for (const [key, value] of Object.entries(parsedOptions)) {
|
|
796
|
+
const type = schemaInfo[key]?.type;
|
|
797
|
+
if (Array.isArray(value)) {
|
|
798
|
+
if (type !== "array" && type !== "object") parsedOptions[key] = value[value.length - 1];
|
|
799
|
+
} else if (type === "array" && typeof value === "string") parsedOptions[key] = [value];
|
|
800
|
+
}
|
|
801
|
+
for (const [schemaKey, info] of Object.entries(schemaInfo)) {
|
|
802
|
+
if (info.type !== "object") continue;
|
|
803
|
+
const parts = schemaKey.split(".");
|
|
804
|
+
let parent = parsedOptions;
|
|
805
|
+
for (let i = 0; i < parts.length - 1; i++) parent = parent?.[parts[i]];
|
|
806
|
+
const leafKey = parts[parts.length - 1];
|
|
807
|
+
const value = parent?.[leafKey];
|
|
808
|
+
if (value === void 0) continue;
|
|
809
|
+
const values = Array.isArray(value) ? value : [value];
|
|
810
|
+
if (typeof values[0] !== "string") continue;
|
|
811
|
+
let usedDeprecatedSyntax = false;
|
|
812
|
+
const result = {};
|
|
813
|
+
for (const v of values) for (const pair of String(v).split(",")) {
|
|
814
|
+
const colonIdx = pair.indexOf(":");
|
|
815
|
+
const eqIdx = pair.indexOf("=");
|
|
816
|
+
let k;
|
|
817
|
+
let val;
|
|
818
|
+
if (colonIdx > 0 && (eqIdx === -1 || colonIdx < eqIdx)) {
|
|
819
|
+
k = pair.slice(0, colonIdx);
|
|
820
|
+
val = pair.slice(colonIdx + 1);
|
|
821
|
+
} else if (eqIdx > 0) {
|
|
822
|
+
k = pair.slice(0, eqIdx);
|
|
823
|
+
val = pair.slice(eqIdx + 1);
|
|
824
|
+
usedDeprecatedSyntax = true;
|
|
825
|
+
} else continue;
|
|
826
|
+
result[k] = val;
|
|
827
|
+
}
|
|
828
|
+
if (usedDeprecatedSyntax) {
|
|
829
|
+
const optionName = camelCaseToKebabCase(schemaKey);
|
|
830
|
+
logger.warn(`Using \`key=value\` syntax for \`--${optionName}\` is deprecated. Use \`key:value\` instead.`);
|
|
831
|
+
}
|
|
832
|
+
parent[leafKey] = result;
|
|
833
|
+
}
|
|
1223
834
|
return {
|
|
1224
|
-
...normalizeCliOptions(
|
|
835
|
+
...normalizeCliOptions(parsedOptions, parsedInput),
|
|
1225
836
|
rawArgs
|
|
1226
837
|
};
|
|
1227
838
|
}
|
|
1228
|
-
|
|
1229
839
|
//#endregion
|
|
1230
840
|
//#region src/utils/clear-screen.ts
|
|
1231
841
|
const CLEAR_SCREEN = "\x1Bc";
|
|
@@ -1236,9 +846,8 @@ function getClearScreenFunction(options) {
|
|
|
1236
846
|
process.stdout.write(CLEAR_SCREEN);
|
|
1237
847
|
};
|
|
1238
848
|
}
|
|
1239
|
-
|
|
1240
849
|
//#endregion
|
|
1241
|
-
//#region \0@oxc-project+runtime@0.
|
|
850
|
+
//#region \0@oxc-project+runtime@0.121.0/helpers/usingCtx.js
|
|
1242
851
|
function _usingCtx() {
|
|
1243
852
|
var r = "function" == typeof SuppressedError ? SuppressedError : function(r, e) {
|
|
1244
853
|
var n = Error();
|
|
@@ -1293,7 +902,6 @@ function _usingCtx() {
|
|
|
1293
902
|
}
|
|
1294
903
|
};
|
|
1295
904
|
}
|
|
1296
|
-
|
|
1297
905
|
//#endregion
|
|
1298
906
|
//#region src/cli/commands/bundle.ts
|
|
1299
907
|
async function bundleWithConfig(configPath, cliOptions, rawArgs = {}) {
|
|
@@ -1327,7 +935,7 @@ async function bundleWithCliOptions(cliOptions) {
|
|
|
1327
935
|
process.exit(1);
|
|
1328
936
|
}
|
|
1329
937
|
for (const file of outputs) {
|
|
1330
|
-
if (outputs.length > 1) logger.log(`\n${styleText
|
|
938
|
+
if (outputs.length > 1) logger.log(`\n${styleText(["cyan", "bold"], `|→ ${file.fileName}:`)}\n`);
|
|
1331
939
|
console.log(file.type === "asset" ? file.source : file.code);
|
|
1332
940
|
}
|
|
1333
941
|
} catch (_) {
|
|
@@ -1367,12 +975,12 @@ async function watchInner(config, cliOptions) {
|
|
|
1367
975
|
clearScreen?.();
|
|
1368
976
|
break;
|
|
1369
977
|
case "BUNDLE_START":
|
|
1370
|
-
if (changedFile.length > 0) logger.log(`Found ${styleText
|
|
978
|
+
if (changedFile.length > 0) logger.log(`Found ${styleText("bold", changedFile.map(relativeId).join(", "))} changed, rebuilding...`);
|
|
1371
979
|
changedFile.length = 0;
|
|
1372
980
|
break;
|
|
1373
981
|
case "BUNDLE_END":
|
|
1374
982
|
await event.result.close();
|
|
1375
|
-
logger.success(`Rebuilt ${styleText
|
|
983
|
+
logger.success(`Rebuilt ${styleText("bold", relativeId(event.output[0]))} in ${styleText("green", ms(event.duration))}.`);
|
|
1376
984
|
break;
|
|
1377
985
|
case "ERROR":
|
|
1378
986
|
await event.result.close();
|
|
@@ -1405,7 +1013,7 @@ async function bundleInner(config, cliOptions) {
|
|
|
1405
1013
|
result.forEach(printBundleOutputPretty);
|
|
1406
1014
|
logger.log(``);
|
|
1407
1015
|
const duration = performance.now() - startTime;
|
|
1408
|
-
logger.success(`rolldown v${version} Finished in ${styleText
|
|
1016
|
+
logger.success(`rolldown v${version} Finished in ${styleText("green", ms(duration))}`);
|
|
1409
1017
|
}
|
|
1410
1018
|
function printBundleOutputPretty(output) {
|
|
1411
1019
|
const outputEntries = collectOutputEntries(output.output);
|
|
@@ -1451,10 +1059,10 @@ function printOutputEntries(entries, sizeAdjustment, distPath) {
|
|
|
1451
1059
|
const filtered = entries.filter((e) => e.type === group.type);
|
|
1452
1060
|
if (!filtered.length) continue;
|
|
1453
1061
|
for (const entry of filtered.sort((a, z) => a.size - z.size)) {
|
|
1454
|
-
let log = styleText
|
|
1455
|
-
log += styleText
|
|
1456
|
-
log += styleText
|
|
1457
|
-
log += styleText
|
|
1062
|
+
let log = styleText("dim", withTrailingSlash(distPath));
|
|
1063
|
+
log += styleText(group.color, entry.fileName.padEnd(sizeAdjustment.longest + 2));
|
|
1064
|
+
log += styleText("dim", entry.type);
|
|
1065
|
+
log += styleText("dim", ` │ size: ${displaySize(entry.size).padStart(sizeAdjustment.sizePad)}`);
|
|
1458
1066
|
logger.log(log);
|
|
1459
1067
|
}
|
|
1460
1068
|
}
|
|
@@ -1470,7 +1078,6 @@ function relativeId(id) {
|
|
|
1470
1078
|
if (!path.isAbsolute(id)) return id;
|
|
1471
1079
|
return path.relative(path.resolve(), id);
|
|
1472
1080
|
}
|
|
1473
|
-
|
|
1474
1081
|
//#endregion
|
|
1475
1082
|
//#region src/cli/commands/help.ts
|
|
1476
1083
|
const examples = [
|
|
@@ -1495,22 +1102,17 @@ const examples = [
|
|
|
1495
1102
|
command: "rolldown src/main.ts -d dist -n bundle -f iife -e jQuery,window._ -g jQuery=$"
|
|
1496
1103
|
}
|
|
1497
1104
|
];
|
|
1498
|
-
const notes = [
|
|
1499
|
-
"Due to the API limitation, you need to pass `-s` for `.map` sourcemap file as the last argument.",
|
|
1500
|
-
"If you are using the configuration, please pass the `-c` as the last argument if you ignore the default configuration file.",
|
|
1501
|
-
"CLI options will override the configuration file.",
|
|
1502
|
-
"For more information, please visit https://rolldown.rs/."
|
|
1503
|
-
];
|
|
1105
|
+
const notes = ["CLI options will override the configuration file.", "For more information, please visit https://rolldown.rs/."];
|
|
1504
1106
|
/**
|
|
1505
1107
|
* Generates the CLI help text as a string.
|
|
1506
1108
|
*/
|
|
1507
1109
|
function generateHelpText() {
|
|
1508
1110
|
const lines = [];
|
|
1509
|
-
lines.push(`${styleText
|
|
1111
|
+
lines.push(`${styleText("gray", `${description} (rolldown v${version})`)}`);
|
|
1510
1112
|
lines.push("");
|
|
1511
|
-
lines.push(`${styleText
|
|
1113
|
+
lines.push(`${styleText(["bold", "underline"], "USAGE")} ${styleText("cyan", "rolldown -c <config>")} or ${styleText("cyan", "rolldown <input> <options>")}`);
|
|
1512
1114
|
lines.push("");
|
|
1513
|
-
lines.push(`${styleText
|
|
1115
|
+
lines.push(`${styleText(["bold", "underline"], "OPTIONS")}`);
|
|
1514
1116
|
lines.push("");
|
|
1515
1117
|
lines.push(Object.entries(options).sort(([a], [b]) => {
|
|
1516
1118
|
if (options[a].short && !options[b].short) return -1;
|
|
@@ -1523,27 +1125,26 @@ function generateHelpText() {
|
|
|
1523
1125
|
if (short) optionStr += `-${short}, `;
|
|
1524
1126
|
if (type === "string") optionStr += `<${hint ?? option}>`;
|
|
1525
1127
|
if (description && description.length > 0) description = description[0].toUpperCase() + description.slice(1);
|
|
1526
|
-
return styleText
|
|
1128
|
+
return styleText("cyan", optionStr.padEnd(30)) + description + (description && description?.endsWith(".") ? "" : ".");
|
|
1527
1129
|
}).join("\n"));
|
|
1528
1130
|
lines.push("");
|
|
1529
|
-
lines.push(`${styleText
|
|
1131
|
+
lines.push(`${styleText(["bold", "underline"], "EXAMPLES")}`);
|
|
1530
1132
|
lines.push("");
|
|
1531
1133
|
examples.forEach(({ title, command }, ord) => {
|
|
1532
1134
|
lines.push(` ${ord + 1}. ${title}:`);
|
|
1533
|
-
lines.push(` ${styleText
|
|
1135
|
+
lines.push(` ${styleText("cyan", command)}`);
|
|
1534
1136
|
lines.push("");
|
|
1535
1137
|
});
|
|
1536
|
-
lines.push(`${styleText
|
|
1138
|
+
lines.push(`${styleText(["bold", "underline"], "NOTES")}`);
|
|
1537
1139
|
lines.push("");
|
|
1538
1140
|
notes.forEach((note) => {
|
|
1539
|
-
lines.push(` * ${styleText
|
|
1141
|
+
lines.push(` * ${styleText("gray", note)}`);
|
|
1540
1142
|
});
|
|
1541
1143
|
return lines.join("\n");
|
|
1542
1144
|
}
|
|
1543
1145
|
function showHelp() {
|
|
1544
1146
|
logger.log(generateHelpText());
|
|
1545
1147
|
}
|
|
1546
|
-
|
|
1547
1148
|
//#endregion
|
|
1548
1149
|
//#region src/cli/version-check.ts
|
|
1549
1150
|
function checkNodeVersion(nodeVersion) {
|
|
@@ -1552,7 +1153,6 @@ function checkNodeVersion(nodeVersion) {
|
|
|
1552
1153
|
const minor = parseInt(currentVersion[1], 10);
|
|
1553
1154
|
return major === 20 && minor >= 19 || major === 22 && minor >= 12 || major > 22;
|
|
1554
1155
|
}
|
|
1555
|
-
|
|
1556
1156
|
//#endregion
|
|
1557
1157
|
//#region src/cli/index.ts
|
|
1558
1158
|
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.`);
|
|
@@ -1565,6 +1165,14 @@ async function main() {
|
|
|
1565
1165
|
process$1.env[key] = value.length === 0 ? String(true) : value.join(":");
|
|
1566
1166
|
}
|
|
1567
1167
|
}
|
|
1168
|
+
if (cliOptions.help) {
|
|
1169
|
+
showHelp();
|
|
1170
|
+
return;
|
|
1171
|
+
}
|
|
1172
|
+
if (cliOptions.version) {
|
|
1173
|
+
logger.log(`rolldown v${version}`);
|
|
1174
|
+
return;
|
|
1175
|
+
}
|
|
1568
1176
|
if (cliOptions.config || cliOptions.config === "") {
|
|
1569
1177
|
await bundleWithConfig(cliOptions.config, cliOptions, rawArgs);
|
|
1570
1178
|
return;
|
|
@@ -1573,16 +1181,11 @@ async function main() {
|
|
|
1573
1181
|
await bundleWithCliOptions(cliOptions);
|
|
1574
1182
|
return;
|
|
1575
1183
|
}
|
|
1576
|
-
if (cliOptions.version) {
|
|
1577
|
-
logger.log(`rolldown v${version}`);
|
|
1578
|
-
return;
|
|
1579
|
-
}
|
|
1580
1184
|
showHelp();
|
|
1581
1185
|
}
|
|
1582
1186
|
main().catch((err) => {
|
|
1583
1187
|
logger.error(err);
|
|
1584
1188
|
process$1.exit(1);
|
|
1585
1189
|
});
|
|
1586
|
-
|
|
1587
1190
|
//#endregion
|
|
1588
|
-
export {
|
|
1191
|
+
export {};
|