chrome-webstore-upload-keys 1.0.0 → 1.1.1
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/cli.js +1 -1
- package/dist/index.js +881 -0
- package/dist/package.json +3 -0
- package/package.json +13 -12
- package/readme.md +8 -7
package/cli.js
CHANGED
package/dist/index.js
ADDED
|
@@ -0,0 +1,881 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "module";
|
|
3
|
+
/******/ var __webpack_modules__ = ({
|
|
4
|
+
|
|
5
|
+
/***/ 258:
|
|
6
|
+
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
|
|
7
|
+
|
|
8
|
+
var __webpack_unused_export__;
|
|
9
|
+
var spawn = (__nccwpck_require__(81).spawn);
|
|
10
|
+
|
|
11
|
+
var command;
|
|
12
|
+
|
|
13
|
+
switch(process.platform) {
|
|
14
|
+
case 'darwin':
|
|
15
|
+
command = 'open';
|
|
16
|
+
break;
|
|
17
|
+
case 'win32':
|
|
18
|
+
command = 'explorer.exe';
|
|
19
|
+
break;
|
|
20
|
+
case 'linux':
|
|
21
|
+
command = 'xdg-open';
|
|
22
|
+
break;
|
|
23
|
+
default:
|
|
24
|
+
throw new Error('Unsupported platform: ' + process.platform);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Error handling is deliberately minimal, as this function is to be easy to use for shell scripting
|
|
29
|
+
*
|
|
30
|
+
* @param url The URL to open
|
|
31
|
+
* @param callback A function with a single error argument. Optional.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
function open(url, callback) {
|
|
35
|
+
var child = spawn(command, [url]);
|
|
36
|
+
var errorText = "";
|
|
37
|
+
child.stderr.setEncoding('utf8');
|
|
38
|
+
child.stderr.on('data', function (data) {
|
|
39
|
+
errorText += data;
|
|
40
|
+
});
|
|
41
|
+
child.stderr.on('end', function () {
|
|
42
|
+
if (errorText.length > 0) {
|
|
43
|
+
var error = new Error(errorText);
|
|
44
|
+
if (callback) {
|
|
45
|
+
callback(error);
|
|
46
|
+
} else {
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
} else if (callback) {
|
|
50
|
+
callback(error);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param fields Common fields are: "subject", "body".
|
|
57
|
+
* Some email apps let you specify arbitrary headers here.
|
|
58
|
+
* @param recipientsSeparator Default is ",". Use ";" for Outlook.
|
|
59
|
+
*/
|
|
60
|
+
function mailto(recipients, fields, recipientsSeparator, callback) {
|
|
61
|
+
recipientsSeparator = recipientsSeparator || ",";
|
|
62
|
+
|
|
63
|
+
var url = "mailto:"+recipients.join(recipientsSeparator);
|
|
64
|
+
Object.keys(fields).forEach(function (key, index) {
|
|
65
|
+
if (index === 0) {
|
|
66
|
+
url += "?";
|
|
67
|
+
} else {
|
|
68
|
+
url += "&";
|
|
69
|
+
}
|
|
70
|
+
url += key + "=" + encodeURIComponent(fields[key]);
|
|
71
|
+
});
|
|
72
|
+
open(url, callback);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
exports.b = open;
|
|
76
|
+
__webpack_unused_export__ = mailto;
|
|
77
|
+
|
|
78
|
+
/***/ }),
|
|
79
|
+
|
|
80
|
+
/***/ 23:
|
|
81
|
+
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
|
82
|
+
|
|
83
|
+
let tty = __nccwpck_require__(224)
|
|
84
|
+
|
|
85
|
+
let isColorSupported =
|
|
86
|
+
!("NO_COLOR" in process.env || process.argv.includes("--no-color")) &&
|
|
87
|
+
("FORCE_COLOR" in process.env ||
|
|
88
|
+
process.argv.includes("--color") ||
|
|
89
|
+
process.platform === "win32" ||
|
|
90
|
+
(tty.isatty(1) && process.env.TERM !== "dumb") ||
|
|
91
|
+
"CI" in process.env)
|
|
92
|
+
|
|
93
|
+
let formatter =
|
|
94
|
+
(open, close, replace = open) =>
|
|
95
|
+
input => {
|
|
96
|
+
let string = "" + input
|
|
97
|
+
let index = string.indexOf(close, open.length)
|
|
98
|
+
return ~index
|
|
99
|
+
? open + replaceClose(string, close, replace, index) + close
|
|
100
|
+
: open + string + close
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
let replaceClose = (string, close, replace, index) => {
|
|
104
|
+
let start = string.substring(0, index) + replace
|
|
105
|
+
let end = string.substring(index + close.length)
|
|
106
|
+
let nextIndex = end.indexOf(close)
|
|
107
|
+
return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
let createColors = (enabled = isColorSupported) => ({
|
|
111
|
+
isColorSupported: enabled,
|
|
112
|
+
reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,
|
|
113
|
+
bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,
|
|
114
|
+
dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,
|
|
115
|
+
italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,
|
|
116
|
+
underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,
|
|
117
|
+
inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,
|
|
118
|
+
hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,
|
|
119
|
+
strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,
|
|
120
|
+
black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,
|
|
121
|
+
red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,
|
|
122
|
+
green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,
|
|
123
|
+
yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,
|
|
124
|
+
blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,
|
|
125
|
+
magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,
|
|
126
|
+
cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,
|
|
127
|
+
white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,
|
|
128
|
+
gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,
|
|
129
|
+
bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,
|
|
130
|
+
bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,
|
|
131
|
+
bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,
|
|
132
|
+
bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,
|
|
133
|
+
bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,
|
|
134
|
+
bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,
|
|
135
|
+
bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,
|
|
136
|
+
bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
module.exports = createColors()
|
|
140
|
+
module.exports.createColors = createColors
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
/***/ }),
|
|
144
|
+
|
|
145
|
+
/***/ 571:
|
|
146
|
+
/***/ ((module) => {
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
const ESC = '\x1B';
|
|
151
|
+
const CSI = `${ESC}[`;
|
|
152
|
+
const beep = '\u0007';
|
|
153
|
+
|
|
154
|
+
const cursor = {
|
|
155
|
+
to(x, y) {
|
|
156
|
+
if (!y) return `${CSI}${x + 1}G`;
|
|
157
|
+
return `${CSI}${y + 1};${x + 1}H`;
|
|
158
|
+
},
|
|
159
|
+
move(x, y) {
|
|
160
|
+
let ret = '';
|
|
161
|
+
|
|
162
|
+
if (x < 0) ret += `${CSI}${-x}D`;
|
|
163
|
+
else if (x > 0) ret += `${CSI}${x}C`;
|
|
164
|
+
|
|
165
|
+
if (y < 0) ret += `${CSI}${-y}A`;
|
|
166
|
+
else if (y > 0) ret += `${CSI}${y}B`;
|
|
167
|
+
|
|
168
|
+
return ret;
|
|
169
|
+
},
|
|
170
|
+
up: (count = 1) => `${CSI}${count}A`,
|
|
171
|
+
down: (count = 1) => `${CSI}${count}B`,
|
|
172
|
+
forward: (count = 1) => `${CSI}${count}C`,
|
|
173
|
+
backward: (count = 1) => `${CSI}${count}D`,
|
|
174
|
+
nextLine: (count = 1) => `${CSI}E`.repeat(count),
|
|
175
|
+
prevLine: (count = 1) => `${CSI}F`.repeat(count),
|
|
176
|
+
left: `${CSI}G`,
|
|
177
|
+
hide: `${CSI}?25l`,
|
|
178
|
+
show: `${CSI}?25h`,
|
|
179
|
+
save: `${ESC}7`,
|
|
180
|
+
restore: `${ESC}8`
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const scroll = {
|
|
184
|
+
up: (count = 1) => `${CSI}S`.repeat(count),
|
|
185
|
+
down: (count = 1) => `${CSI}T`.repeat(count)
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const erase = {
|
|
189
|
+
screen: `${CSI}2J`,
|
|
190
|
+
up: (count = 1) => `${CSI}1J`.repeat(count),
|
|
191
|
+
down: (count = 1) => `${CSI}J`.repeat(count),
|
|
192
|
+
line: `${CSI}2K`,
|
|
193
|
+
lineEnd: `${CSI}K`,
|
|
194
|
+
lineStart: `${CSI}1K`,
|
|
195
|
+
lines(count) {
|
|
196
|
+
let clear = '';
|
|
197
|
+
for (let i = 0; i < count; i++)
|
|
198
|
+
clear += this.line + (i < count - 1 ? cursor.up() : '');
|
|
199
|
+
if (count)
|
|
200
|
+
clear += cursor.left;
|
|
201
|
+
return clear;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
module.exports = { cursor, scroll, erase, beep };
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
/***/ }),
|
|
209
|
+
|
|
210
|
+
/***/ 81:
|
|
211
|
+
/***/ ((module) => {
|
|
212
|
+
|
|
213
|
+
module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("child_process");
|
|
214
|
+
|
|
215
|
+
/***/ }),
|
|
216
|
+
|
|
217
|
+
/***/ 849:
|
|
218
|
+
/***/ ((module) => {
|
|
219
|
+
|
|
220
|
+
module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http");
|
|
221
|
+
|
|
222
|
+
/***/ }),
|
|
223
|
+
|
|
224
|
+
/***/ 742:
|
|
225
|
+
/***/ ((module) => {
|
|
226
|
+
|
|
227
|
+
module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:process");
|
|
228
|
+
|
|
229
|
+
/***/ }),
|
|
230
|
+
|
|
231
|
+
/***/ 224:
|
|
232
|
+
/***/ ((module) => {
|
|
233
|
+
|
|
234
|
+
module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("tty");
|
|
235
|
+
|
|
236
|
+
/***/ }),
|
|
237
|
+
|
|
238
|
+
/***/ 724:
|
|
239
|
+
/***/ ((__webpack_module__, __unused_webpack___webpack_exports__, __nccwpck_require__) => {
|
|
240
|
+
|
|
241
|
+
__nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
242
|
+
/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(742);
|
|
243
|
+
/* harmony import */ var node_http__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(849);
|
|
244
|
+
/* harmony import */ var _clack_prompts__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(881);
|
|
245
|
+
/* harmony import */ var openurl__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(258);
|
|
246
|
+
/* harmony import */ var get_port__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(133);
|
|
247
|
+
/* harmony import */ var p_defer__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(50);
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
const approvalCode = (0,p_defer__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)();
|
|
256
|
+
const port = await (0,get_port__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z)();
|
|
257
|
+
const localhost = '127.0.0.1';
|
|
258
|
+
|
|
259
|
+
// TODO: Remove after https://github.com/natemoo-re/clack/issues/181
|
|
260
|
+
const tasks = async tasks => {
|
|
261
|
+
for (const task of tasks) {
|
|
262
|
+
if (task.enabled === false) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const s = _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .spinner */ .lY();
|
|
267
|
+
s.start(task.title);
|
|
268
|
+
// eslint-disable-next-line no-await-in-loop -- Sequential
|
|
269
|
+
const result = await task.task(s.message);
|
|
270
|
+
s.stop(result || task.title);
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
const server = (0,node_http__WEBPACK_IMPORTED_MODULE_1__.createServer)((request, response) => {
|
|
275
|
+
const {searchParams} = new URL(request.url, serverUrl);
|
|
276
|
+
if (searchParams.has('code')) {
|
|
277
|
+
approvalCode.resolve(searchParams.get('code'));
|
|
278
|
+
// Html header
|
|
279
|
+
response.writeHead(200, {'Content-Type': 'text/html'});
|
|
280
|
+
response.end('You can close this tab now. <script>window.close()</script>');
|
|
281
|
+
server.close();
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
response.writeHead(400, {'Content-Type': 'text/plain'});
|
|
286
|
+
response.end('No `code` found in the URL. WHO R U?');
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
// Start the server on port 3000
|
|
290
|
+
server.listen(port, localhost);
|
|
291
|
+
|
|
292
|
+
const serverUrl = `http://${localhost}:${port}`;
|
|
293
|
+
|
|
294
|
+
function required(input) {
|
|
295
|
+
if (input.trim() === '') {
|
|
296
|
+
return 'Required';
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
async function getRefreshToken() {
|
|
301
|
+
const request = await fetch('https://accounts.google.com/o/oauth2/token', {
|
|
302
|
+
method: 'POST',
|
|
303
|
+
body: new URLSearchParams([
|
|
304
|
+
['client_id', group.clientId],
|
|
305
|
+
['client_secret', group.clientSecret],
|
|
306
|
+
['code', code],
|
|
307
|
+
['grant_type', 'authorization_code'],
|
|
308
|
+
['redirect_uri', serverUrl], // Unused but required
|
|
309
|
+
]),
|
|
310
|
+
headers: {
|
|
311
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
312
|
+
},
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
if (!request.ok) {
|
|
316
|
+
throw new Error('Error while getting the refresh token: ' + request.statusText);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const response = await request.json();
|
|
320
|
+
|
|
321
|
+
if (response.error) {
|
|
322
|
+
throw new Error('Error while getting the refresh token: ' + response.error);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
return response.refresh_token;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
function getLoginUrl(clientId) {
|
|
329
|
+
const url = new URL('https://accounts.google.com/o/oauth2/auth');
|
|
330
|
+
url.searchParams.set('response_type', 'code');
|
|
331
|
+
url.searchParams.set('access_type', 'offline');
|
|
332
|
+
url.searchParams.set('client_id', clientId);
|
|
333
|
+
url.searchParams.set('scope', 'https://www.googleapis.com/auth/chromewebstore');
|
|
334
|
+
url.searchParams.set('redirect_uri', serverUrl);
|
|
335
|
+
return url.href;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
_clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .intro */ .mf('Follow the steps at this URL to generate the API keys, then enter them below to generate the refresh token.\n https://github.com/fregante/chrome-webstore-upload-keys');
|
|
339
|
+
const group = await _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .group */ .ru(
|
|
340
|
+
{
|
|
341
|
+
// ExtensionId: () => p.text({
|
|
342
|
+
// message: 'Extension ID:',
|
|
343
|
+
// placeholder: 'e.g. bdeobgpddfaegbjfinhldnkfeieakdaf, it’s in the Chrome Web Store URL',
|
|
344
|
+
// }),
|
|
345
|
+
clientId: () => _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .text */ .fL({
|
|
346
|
+
message: 'Client ID:',
|
|
347
|
+
placeholder: 'e.g. 960453266371-2qcq5fppm3d5e.apps.googleusercontent.com',
|
|
348
|
+
validate: required,
|
|
349
|
+
}),
|
|
350
|
+
clientSecret: () => _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .text */ .fL({
|
|
351
|
+
message: 'Client secret:',
|
|
352
|
+
placeholder: 'e.g. GOCSPX-O9uS1FLnCqXDvru7Y_',
|
|
353
|
+
validate: required,
|
|
354
|
+
}),
|
|
355
|
+
open: () => _clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .confirm */ .iG({
|
|
356
|
+
message: 'Open the authentication page in the default browser?',
|
|
357
|
+
}),
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
onCancel() {
|
|
361
|
+
_clack_prompts__WEBPACK_IMPORTED_MODULE_2__/* .cancel */ .al('Operation cancelled.');
|
|
362
|
+
node_process__WEBPACK_IMPORTED_MODULE_0__.exit(0); // `onCancel` continues to the next question
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
let code;
|
|
368
|
+
let refreshToken;
|
|
369
|
+
await tasks([
|
|
370
|
+
{
|
|
371
|
+
title: 'Opening the login page in the browser',
|
|
372
|
+
async task() {
|
|
373
|
+
if (group.open) {
|
|
374
|
+
await (0,openurl__WEBPACK_IMPORTED_MODULE_3__/* .open */ .b)(getLoginUrl(group.clientId));
|
|
375
|
+
return 'Page opened';
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
return 'Continue in: ' + getLoginUrl(group.clientId);
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
title: 'Waiting for you to complete the process in the browser. Follow its steps and warnings (this is your own personal app)',
|
|
383
|
+
async task() {
|
|
384
|
+
code = await approvalCode.promise;
|
|
385
|
+
return 'Approval code received from Google';
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
title: 'Asking Google for the refresh token',
|
|
390
|
+
async task() {
|
|
391
|
+
refreshToken = await getRefreshToken();
|
|
392
|
+
return `Done:
|
|
393
|
+
|
|
394
|
+
CLIENT_ID=${group.clientId}
|
|
395
|
+
CLIENT_SECRET=${group.clientSecret}
|
|
396
|
+
REFRESH_TOKEN=${refreshToken}
|
|
397
|
+
`;
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
]);
|
|
401
|
+
|
|
402
|
+
__webpack_async_result__();
|
|
403
|
+
} catch(e) { __webpack_async_result__(e); } }, 1);
|
|
404
|
+
|
|
405
|
+
/***/ }),
|
|
406
|
+
|
|
407
|
+
/***/ 881:
|
|
408
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
// EXPORTS
|
|
412
|
+
__nccwpck_require__.d(__webpack_exports__, {
|
|
413
|
+
"al": () => (/* binding */ ue),
|
|
414
|
+
"iG": () => (/* binding */ se),
|
|
415
|
+
"ru": () => (/* binding */ he),
|
|
416
|
+
"mf": () => (/* binding */ oe),
|
|
417
|
+
"lY": () => (/* binding */ de),
|
|
418
|
+
"fL": () => (/* binding */ te)
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
// UNUSED EXPORTS: groupMultiselect, isCancel, log, multiselect, note, outro, password, select, selectKey
|
|
422
|
+
|
|
423
|
+
// EXTERNAL MODULE: ./node_modules/sisteransi/src/index.js
|
|
424
|
+
var src = __nccwpck_require__(571);
|
|
425
|
+
// EXTERNAL MODULE: external "node:process"
|
|
426
|
+
var external_node_process_ = __nccwpck_require__(742);
|
|
427
|
+
;// CONCATENATED MODULE: external "node:readline"
|
|
428
|
+
const external_node_readline_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:readline");
|
|
429
|
+
;// CONCATENATED MODULE: external "node:tty"
|
|
430
|
+
const external_node_tty_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tty");
|
|
431
|
+
// EXTERNAL MODULE: ./node_modules/picocolors/picocolors.js
|
|
432
|
+
var picocolors = __nccwpck_require__(23);
|
|
433
|
+
;// CONCATENATED MODULE: ./node_modules/@clack/core/dist/index.mjs
|
|
434
|
+
function z({onlyFirst:t=!1}={}){const u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,t?void 0:"g")}function $(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(z(),"")}var m={},G={get exports(){return m},set exports(t){m=t}};(function(t){var u={};t.exports=u,u.eastAsianWidth=function(e){var s=e.charCodeAt(0),C=e.length==2?e.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=C&&C<=57343&&(s&=1023,C&=1023,D=s<<10|C,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(e){var s=this.eastAsianWidth(e);return s=="F"||s=="W"||s=="A"?2:1};function F(e){return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(e){for(var s=F(e),C=0,D=0;D<s.length;D++)C=C+this.characterLength(s[D]);return C},u.slice=function(e,s,C){textLen=u.length(e),s=s||0,C=C||1,s<0&&(s=textLen+s),C<0&&(C=textLen+C);for(var D="",i=0,o=F(e),E=0;E<o.length;E++){var a=o[E],n=u.length(a);if(i>=s-(n==2?1:0))if(i+n<=C)D+=a;else break;i+=n}return D}})(G);const K=m;var Y=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\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|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\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]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\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-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};function c(t,u={}){if(typeof t!="string"||t.length===0||(u={ambiguousIsNarrow:!0,...u},t=$(t),t.length===0))return 0;t=t.replace(Y()," ");const F=u.ambiguousIsNarrow?1:2;let e=0;for(const s of t){const C=s.codePointAt(0);if(C<=31||C>=127&&C<=159||C>=768&&C<=879)continue;switch(K.eastAsianWidth(s)){case"F":case"W":e+=2;break;case"A":e+=F;break;default:e+=1}}return e}const v=10,M=(t=0)=>u=>`\x1B[${u+t}m`,dist_L=(t=0)=>u=>`\x1B[${38+t};5;${u}m`,T=(t=0)=>(u,F,e)=>`\x1B[${38+t};2;${u};${F};${e}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const Z=Object.keys(r.color),H=Object.keys(r.bgColor);[...Z,...H];function U(){const t=new Map;for(const[u,F]of Object.entries(r)){for(const[e,s]of Object.entries(F))r[e]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},F[e]=r[e],t.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:!1})}return Object.defineProperty(r,"codes",{value:t,enumerable:!1}),r.color.close="\x1B[39m",r.bgColor.close="\x1B[49m",r.color.ansi=M(),r.color.ansi256=dist_L(),r.color.ansi16m=T(),r.bgColor.ansi=M(v),r.bgColor.ansi256=dist_L(v),r.bgColor.ansi16m=T(v),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,e)=>u===F&&F===e?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(e/255*5),enumerable:!1},hexToRgb:{value:u=>{const F=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!F)return[0,0,0];let[e]=F;e.length===3&&(e=[...e].map(C=>C+C).join(""));const s=Number.parseInt(e,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,e,s;if(u>=232)F=((u-232)*10+8)/255,e=F,s=F;else{u-=16;const i=u%36;F=Math.floor(u/36)/5,e=Math.floor(i/6)/5,s=i%6/5}const C=Math.max(F,e,s)*2;if(C===0)return 30;let D=30+(Math.round(s)<<2|Math.round(e)<<1|Math.round(F));return C===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,F,e)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,e)),enumerable:!1},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:!1}}),r}const q=U(),p=new Set(["\x1B","\x9B"]),J=39,b="\x07",dist_W="[",Q="]",I="m",w=`${Q}8;;`,N=t=>`${p.values().next().value}${dist_W}${t}${I}`,dist_j=t=>`${p.values().next().value}${w}${t}${b}`,X=t=>t.split(" ").map(u=>c(u)),_=(t,u,F)=>{const e=[...u];let s=!1,C=!1,D=c($(t[t.length-1]));for(const[i,o]of e.entries()){const E=c(o);if(D+E<=F?t[t.length-1]+=o:(t.push(o),D=0),p.has(o)&&(s=!0,C=e.slice(i+1).join("").startsWith(w)),s){C?o===b&&(s=!1,C=!1):o===I&&(s=!1);continue}D+=E,D===F&&i<e.length-1&&(t.push(""),D=0)}!D&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},DD=t=>{const u=t.split(" ");let F=u.length;for(;F>0&&!(c(u[F-1])>0);)F--;return F===u.length?t:u.slice(0,F).join(" ")+u.slice(F).join("")},uD=(t,u,F={})=>{if(F.trim!==!1&&t.trim()==="")return"";let e="",s,C;const D=X(t);let i=[""];for(const[E,a]of t.split(" ").entries()){F.trim!==!1&&(i[i.length-1]=i[i.length-1].trimStart());let n=c(i[i.length-1]);if(E!==0&&(n>=u&&(F.wordWrap===!1||F.trim===!1)&&(i.push(""),n=0),(n>0||F.trim===!1)&&(i[i.length-1]+=" ",n++)),F.hard&&D[E]>u){const B=u-n,A=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<A&&i.push(""),_(i,a,u);continue}if(n+D[E]>u&&n>0&&D[E]>0){if(F.wordWrap===!1&&n<u){_(i,a,u);continue}i.push("")}if(n+D[E]>u&&F.wordWrap===!1){_(i,a,u);continue}i[i.length-1]+=a}F.trim!==!1&&(i=i.map(E=>DD(E)));const o=[...i.join(`
|
|
435
|
+
`)];for(const[E,a]of o.entries()){if(e+=a,p.has(a)){const{groups:B}=new RegExp(`(?:\\${dist_W}(?<code>\\d+)m|\\${w}(?<uri>.*)${b})`).exec(o.slice(E).join(""))||{groups:{}};if(B.code!==void 0){const A=Number.parseFloat(B.code);s=A===J?void 0:A}else B.uri!==void 0&&(C=B.uri.length===0?void 0:B.uri)}const n=q.codes.get(Number(s));o[E+1]===`
|
|
436
|
+
`?(C&&(e+=dist_j("")),s&&n&&(e+=N(n))):a===`
|
|
437
|
+
`&&(s&&n&&(e+=N(s)),C&&(e+=dist_j(C)))}return e};function P(t,u,F){return String(t).normalize().replace(/\r\n/g,`
|
|
438
|
+
`).split(`
|
|
439
|
+
`).map(e=>uD(e,u,F)).join(`
|
|
440
|
+
`)}function FD(t,u){if(t===u)return;const F=t.split(`
|
|
441
|
+
`),e=u.split(`
|
|
442
|
+
`),s=[];for(let C=0;C<Math.max(F.length,e.length);C++)F[C]!==e[C]&&s.push(C);return s}const R=Symbol("clack:cancel");function eD(t){return t===R}function g(t,u){t.isTTY&&t.setRawMode(u)}const V=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),tD=new Set(["up","down","left","right","space","enter"]);class h{constructor({render:u,input:F=external_node_process_.stdin,output:e=external_node_process_.stdout,...s},C=!0){this._track=!1,this._cursor=0,this.state="initial",this.error="",this.subscribers=new Map,this._prevFrame="",this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=u.bind(this),this._track=C,this.input=F,this.output=e}prompt(){const u=new external_node_tty_namespaceObject.WriteStream(0);return u._write=(F,e,s)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),s()},this.input.pipe(u),this.rl=external_node_readline_namespaceObject.createInterface({input:this.input,output:u,tabSize:2,prompt:"",escapeCodeTimeout:50}),external_node_readline_namespaceObject.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),g(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((F,e)=>{this.once("submit",()=>{this.output.write(src.cursor.show),this.output.off("resize",this.render),g(this.input,!1),F(this.value)}),this.once("cancel",()=>{this.output.write(src.cursor.show),this.output.off("resize",this.render),g(this.input,!1),F(R)})})}on(u,F){const e=this.subscribers.get(u)??[];e.push({cb:F}),this.subscribers.set(u,e)}once(u,F){const e=this.subscribers.get(u)??[];e.push({cb:F,once:!0}),this.subscribers.set(u,e)}emit(u,...F){const e=this.subscribers.get(u)??[],s=[];for(const C of e)C.cb(...F),C.once&&s.push(()=>e.splice(e.indexOf(C),1));for(const C of s)C()}unsubscribe(){this.subscribers.clear()}onKeypress(u,F){if(this.state==="error"&&(this.state="active"),F?.name&&!this._track&&V.has(F.name)&&this.emit("cursor",V.get(F.name)),F?.name&&tD.has(F.name)&&this.emit("cursor",F.name),u&&(u.toLowerCase()==="y"||u.toLowerCase()==="n")&&this.emit("confirm",u.toLowerCase()==="y"),u&&this.emit("key",u.toLowerCase()),F?.name==="return"){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}u===""&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
443
|
+
`),g(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const u=P(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
444
|
+
`).length-1;this.output.write(src.cursor.move(-999,u*-1))}render(){const u=P(this._render(this)??"",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state==="initial")this.output.write(src.cursor.hide);else{const F=FD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const e=F[0];this.output.write(src.cursor.move(0,e)),this.output.write(src.erase.lines(1));const s=u.split(`
|
|
445
|
+
`);this.output.write(s[e]),this._prevFrame=u,this.output.write(src.cursor.move(0,s.length-e-1));return}else if(F&&F?.length>1){const e=F[0];this.output.write(src.cursor.move(0,e)),this.output.write(src.erase.down());const C=u.split(`
|
|
446
|
+
`).slice(e);this.output.write(C.join(`
|
|
447
|
+
`)),this._prevFrame=u;return}this.output.write(src.erase.down())}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u}}}class sD extends h{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",F=>{this.output.write(src.cursor.move(0,-1)),this.value=F,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}class CD extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0;const{options:F}=u;this.options=Object.entries(F).flatMap(([e,s])=>[{value:e,group:!0,label:e},...s.map(C=>({...C,group:e}))]),this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:e})=>e===u.cursorAt),0),this.on("cursor",e=>{switch(e){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}getGroupItems(u){return this.options.filter(F=>F.group===u)}isGroupSelected(u){return this.getGroupItems(u).every(e=>this.value.includes(e.value))}toggleValue(){const u=this.options[this.cursor];if(u.group===!0){const F=u.value,e=this.getGroupItems(F);this.isGroupSelected(F)?this.value=this.value.filter(s=>e.findIndex(C=>C.value===s)===-1):this.value=[...this.value,...e.map(s=>s.value)],this.value=Array.from(new Set(this.value))}else{const F=this.value.includes(u.value);this.value=F?this.value.filter(e=>e!==u.value):[...this.value,u.value]}}}class iD extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0,this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on("key",F=>{F==="a"&&this.toggleAll()}),this.on("cursor",F=>{switch(F){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value)}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value]}}class rD extends (/* unused pure expression or super */ null && (h)){constructor({mask:u,...F}){super(F),this.valueWithCursor="",this._mask="\u2022",this._mask=u??"\u2022",this.on("finalize",()=>{this.valueWithCursor=this.masked}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${l.inverse(l.hidden("_"))}`;else{const e=this.masked.slice(0,this.cursor),s=this.masked.slice(this.cursor);this.valueWithCursor=`${e}${l.inverse(s[0])}${s.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}class ED extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0,this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",F=>{switch(F){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}class nD extends (/* unused pure expression or super */ null && (h)){constructor(u){super(u,!1),this.cursor=0,this.options=u.options;const F=this.options.map(({value:[e]})=>e?.toLowerCase());this.cursor=Math.max(F.indexOf(u.initialValue),0),this.on("key",e=>{if(!F.includes(e))return;const s=this.options.find(({value:[C]})=>C?.toLowerCase()===e);s&&(this.value=s.value,this.state="submit",this.emit("submit"))})}}class oD extends h{constructor(u){super(u),this.valueWithCursor="",this.on("finalize",()=>{this.value||(this.value=u.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${picocolors.inverse(picocolors.hidden("_"))}`;else{const F=this.value.slice(0,this.cursor),e=this.value.slice(this.cursor);this.valueWithCursor=`${F}${picocolors.inverse(e[0])}${e.slice(1)}`}})}get cursor(){return this._cursor}}function aD({input:t=external_node_process_.stdin,output:u=external_node_process_.stdout,overwrite:F=!0,hideCursor:e=!0}={}){const s=external_node_readline_namespaceObject.createInterface({input:t,output:u,prompt:"",tabSize:1});external_node_readline_namespaceObject.emitKeypressEvents(t,s),t.isTTY&&t.setRawMode(!0);const C=(D,{name:i})=>{if(String(D)===""&&process.exit(0),!F)return;let E=i==="return"?0:-1,a=i==="return"?-1:0;external_node_readline_namespaceObject.moveCursor(u,E,a,()=>{external_node_readline_namespaceObject.clearLine(u,1,()=>{t.once("keypress",C)})})};return e&&process.stdout.write(src.cursor.hide),t.once("keypress",C),()=>{t.off("keypress",C),e&&process.stdout.write(src.cursor.show),t.isTTY&&t.setRawMode(!1),s.terminal=!1,s.close()}}
|
|
448
|
+
|
|
449
|
+
;// CONCATENATED MODULE: ./node_modules/@clack/prompts/dist/index.mjs
|
|
450
|
+
function dist_q(){return external_node_process_.platform!=="win32"?external_node_process_.env.TERM!=="linux":Boolean(external_node_process_.env.CI)||Boolean(external_node_process_.env.WT_SESSION)||Boolean(external_node_process_.env.TERMINUS_SUBLIME)||external_node_process_.env.ConEmuTask==="{cmd::Cmder}"||external_node_process_.env.TERM_PROGRAM==="Terminus-Sublime"||external_node_process_.env.TERM_PROGRAM==="vscode"||external_node_process_.env.TERM==="xterm-256color"||external_node_process_.env.TERM==="alacritty"||external_node_process_.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const dist_=dist_q(),o=(r,n)=>dist_?r:n,dist_H=o("\u25C6","*"),dist_I=o("\u25A0","x"),x=o("\u25B2","x"),S=o("\u25C7","o"),dist_K=o("\u250C","T"),a=o("\u2502","|"),d=o("\u2514","\u2014"),dist_b=o("\u25CF",">"),E=o("\u25CB"," "),C=o("\u25FB","[\u2022]"),dist_w=o("\u25FC","[+]"),dist_M=o("\u25FB","[ ]"),dist_U=o("\u25AA","\u2022"),B=o("\u2500","-"),dist_Z=o("\u256E","+"),dist_z=o("\u251C","+"),dist_X=o("\u256F","+"),dist_J=o("\u25CF","\u2022"),dist_Y=o("\u25C6","*"),dist_Q=o("\u25B2","!"),ee=o("\u25A0","x"),y=r=>{switch(r){case"initial":case"active":return picocolors.cyan(dist_H);case"cancel":return picocolors.red(dist_I);case"error":return picocolors.yellow(x);case"submit":return picocolors.green(S)}},te=r=>new oD({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){const n=`${picocolors.gray(a)}
|
|
451
|
+
${y(this.state)} ${r.message}
|
|
452
|
+
`,i=r.placeholder?picocolors.inverse(r.placeholder[0])+picocolors.dim(r.placeholder.slice(1)):picocolors.inverse(picocolors.hidden("_")),t=this.value?this.valueWithCursor:i;switch(this.state){case"error":return`${n.trim()}
|
|
453
|
+
${picocolors.yellow(a)} ${t}
|
|
454
|
+
${picocolors.yellow(d)} ${picocolors.yellow(this.error)}
|
|
455
|
+
`;case"submit":return`${n}${picocolors.gray(a)} ${picocolors.dim(this.value||r.placeholder)}`;case"cancel":return`${n}${picocolors.gray(a)} ${picocolors.strikethrough(picocolors.dim(this.value??""))}${this.value?.trim()?`
|
|
456
|
+
`+picocolors.gray(a):""}`;default:return`${n}${picocolors.cyan(a)} ${t}
|
|
457
|
+
${picocolors.cyan(d)}
|
|
458
|
+
`}}}).prompt(),re=r=>new j({validate:r.validate,mask:r.mask??dist_U,render(){const n=`${e.gray(a)}
|
|
459
|
+
${y(this.state)} ${r.message}
|
|
460
|
+
`,i=this.valueWithCursor,t=this.masked;switch(this.state){case"error":return`${n.trim()}
|
|
461
|
+
${e.yellow(a)} ${t}
|
|
462
|
+
${e.yellow(d)} ${e.yellow(this.error)}
|
|
463
|
+
`;case"submit":return`${n}${e.gray(a)} ${e.dim(t)}`;case"cancel":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(t??""))}${t?`
|
|
464
|
+
`+e.gray(a):""}`;default:return`${n}${e.cyan(a)} ${i}
|
|
465
|
+
${e.cyan(d)}
|
|
466
|
+
`}}}).prompt(),se=r=>{const n=r.active??"Yes",i=r.inactive??"No";return new sD({active:n,inactive:i,initialValue:r.initialValue??!0,render(){const t=`${picocolors.gray(a)}
|
|
467
|
+
${y(this.state)} ${r.message}
|
|
468
|
+
`,s=this.value?n:i;switch(this.state){case"submit":return`${t}${picocolors.gray(a)} ${picocolors.dim(s)}`;case"cancel":return`${t}${picocolors.gray(a)} ${picocolors.strikethrough(picocolors.dim(s))}
|
|
469
|
+
${picocolors.gray(a)}`;default:return`${t}${picocolors.cyan(a)} ${this.value?`${picocolors.green(dist_b)} ${n}`:`${picocolors.dim(E)} ${picocolors.dim(n)}`} ${picocolors.dim("/")} ${this.value?`${picocolors.dim(E)} ${picocolors.dim(i)}`:`${picocolors.green(dist_b)} ${i}`}
|
|
470
|
+
${picocolors.cyan(d)}
|
|
471
|
+
`}}}).prompt()},ie=r=>{const n=(t,s)=>{const c=t.label??String(t.value);return s==="active"?`${e.green(dist_b)} ${c} ${t.hint?e.dim(`(${t.hint})`):""}`:s==="selected"?`${e.dim(c)}`:s==="cancelled"?`${e.strikethrough(e.dim(c))}`:`${e.dim(E)} ${e.dim(c)}`};let i=0;return new k({options:r.options,initialValue:r.initialValue,render(){const t=`${e.gray(a)}
|
|
472
|
+
${y(this.state)} ${r.message}
|
|
473
|
+
`;switch(this.state){case"submit":return`${t}${e.gray(a)} ${n(this.options[this.cursor],"selected")}`;case"cancel":return`${t}${e.gray(a)} ${n(this.options[this.cursor],"cancelled")}
|
|
474
|
+
${e.gray(a)}`;default:{const s=r.maxItems===void 0?1/0:Math.max(r.maxItems,5);this.cursor>=i+s-3?i=Math.max(Math.min(this.cursor-s+3,this.options.length-s),0):this.cursor<i+2&&(i=Math.max(this.cursor-2,0));const c=s<this.options.length&&i>0,l=s<this.options.length&&i+s<this.options.length;return`${t}${e.cyan(a)} ${this.options.slice(i,i+s).map((u,m,$)=>m===0&&c?e.dim("..."):m===$.length-1&&l?e.dim("..."):n(u,m+i===this.cursor?"active":"inactive")).join(`
|
|
475
|
+
${e.cyan(a)} `)}
|
|
476
|
+
${e.cyan(d)}
|
|
477
|
+
`}}}}).prompt()},ne=r=>{const n=(i,t="inactive")=>{const s=i.label??String(i.value);return t==="selected"?`${e.dim(s)}`:t==="cancelled"?`${e.strikethrough(e.dim(s))}`:t==="active"?`${e.bgCyan(e.gray(` ${i.value} `))} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`:`${e.gray(e.bgWhite(e.inverse(` ${i.value} `)))} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`};return new W({options:r.options,initialValue:r.initialValue,render(){const i=`${e.gray(a)}
|
|
478
|
+
${y(this.state)} ${r.message}
|
|
479
|
+
`;switch(this.state){case"submit":return`${i}${e.gray(a)} ${n(this.options.find(t=>t.value===this.value),"selected")}`;case"cancel":return`${i}${e.gray(a)} ${n(this.options[0],"cancelled")}
|
|
480
|
+
${e.gray(a)}`;default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>n(t,s===this.cursor?"active":"inactive")).join(`
|
|
481
|
+
${e.cyan(a)} `)}
|
|
482
|
+
${e.cyan(d)}
|
|
483
|
+
`}}}).prompt()},ae=r=>{const n=(i,t)=>{const s=i.label??String(i.value);return t==="active"?`${e.cyan(C)} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="selected"?`${e.green(dist_w)} ${e.dim(s)}`:t==="cancelled"?`${e.strikethrough(e.dim(s))}`:t==="active-selected"?`${e.green(dist_w)} ${s} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="submitted"?`${e.dim(s)}`:`${e.dim(dist_M)} ${e.dim(s)}`};return new D({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.
|
|
484
|
+
${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(" space ")))} to select, ${e.gray(e.bgWhite(e.inverse(" enter ")))} to submit`))}`},render(){let i=`${e.gray(a)}
|
|
485
|
+
${y(this.state)} ${r.message}
|
|
486
|
+
`;switch(this.state){case"submit":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,"submitted")).join(e.dim(", "))||e.dim("none")}`;case"cancel":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,"cancelled")).join(e.dim(", "));return`${i}${e.gray(a)} ${t.trim()?`${t}
|
|
487
|
+
${e.gray(a)}`:""}`}case"error":{const t=this.error.split(`
|
|
488
|
+
`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`
|
|
489
|
+
`);return i+e.yellow(a)+" "+this.options.map((s,c)=>{const l=this.value.includes(s.value),u=c===this.cursor;return u&&l?n(s,"active-selected"):l?n(s,"selected"):n(s,u?"active":"inactive")}).join(`
|
|
490
|
+
${e.yellow(a)} `)+`
|
|
491
|
+
`+t+`
|
|
492
|
+
`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>{const c=this.value.includes(t.value),l=s===this.cursor;return l&&c?n(t,"active-selected"):c?n(t,"selected"):n(t,l?"active":"inactive")}).join(`
|
|
493
|
+
${e.cyan(a)} `)}
|
|
494
|
+
${e.cyan(d)}
|
|
495
|
+
`}}}).prompt()},ce=r=>{const n=(i,t,s=[])=>{const c=i.label??String(i.value),l=typeof i.group=="string",u=l&&(s[s.indexOf(i)+1]??{group:!0}),m=l&&u.group===!0,$=l?`${m?d:a} `:"";return t==="active"?`${e.dim($)}${e.cyan(C)} ${c} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="group-active"?`${$}${e.cyan(C)} ${e.dim(c)}`:t==="group-active-selected"?`${$}${e.green(dist_w)} ${e.dim(c)}`:t==="selected"?`${e.dim($)}${e.green(dist_w)} ${e.dim(c)}`:t==="cancelled"?`${e.strikethrough(e.dim(c))}`:t==="active-selected"?`${e.dim($)}${e.green(dist_w)} ${c} ${i.hint?e.dim(`(${i.hint})`):""}`:t==="submitted"?`${e.dim(c)}`:`${e.dim($)}${e.dim(dist_M)} ${e.dim(c)}`};return new L({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.
|
|
496
|
+
${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(" space ")))} to select, ${e.gray(e.bgWhite(e.inverse(" enter ")))} to submit`))}`},render(){let i=`${e.gray(a)}
|
|
497
|
+
${y(this.state)} ${r.message}
|
|
498
|
+
`;switch(this.state){case"submit":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,"submitted")).join(e.dim(", "))}`;case"cancel":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,"cancelled")).join(e.dim(", "));return`${i}${e.gray(a)} ${t.trim()?`${t}
|
|
499
|
+
${e.gray(a)}`:""}`}case"error":{const t=this.error.split(`
|
|
500
|
+
`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`
|
|
501
|
+
`);return`${i}${e.yellow(a)} ${this.options.map((s,c,l)=>{const u=this.value.includes(s.value)||s.group===!0&&this.isGroupSelected(`${s.value}`),m=c===this.cursor;return!m&&typeof s.group=="string"&&this.options[this.cursor].value===s.group?n(s,u?"group-active-selected":"group-active",l):m&&u?n(s,"active-selected",l):u?n(s,"selected",l):n(s,m?"active":"inactive",l)}).join(`
|
|
502
|
+
${e.yellow(a)} `)}
|
|
503
|
+
${t}
|
|
504
|
+
`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s,c)=>{const l=this.value.includes(t.value)||t.group===!0&&this.isGroupSelected(`${t.value}`),u=s===this.cursor;return!u&&typeof t.group=="string"&&this.options[this.cursor].value===t.group?n(t,l?"group-active-selected":"group-active",c):u&&l?n(t,"active-selected",c):l?n(t,"selected",c):n(t,u?"active":"inactive",c)}).join(`
|
|
505
|
+
${e.cyan(a)} `)}
|
|
506
|
+
${e.cyan(d)}
|
|
507
|
+
`}}}).prompt()},dist_R=r=>r.replace(me(),""),le=(r="",n="")=>{const i=`
|
|
508
|
+
${r}
|
|
509
|
+
`.split(`
|
|
510
|
+
`),t=dist_R(n).length,s=Math.max(i.reduce((l,u)=>(u=dist_R(u),u.length>l?u.length:l),0),t)+2,c=i.map(l=>`${e.gray(a)} ${e.dim(l)}${" ".repeat(s-dist_R(l).length)}${e.gray(a)}`).join(`
|
|
511
|
+
`);process.stdout.write(`${e.gray(a)}
|
|
512
|
+
${e.green(S)} ${e.reset(n)} ${e.gray(B.repeat(Math.max(s-t-1,1))+dist_Z)}
|
|
513
|
+
${c}
|
|
514
|
+
${e.gray(dist_z+B.repeat(s+2)+dist_X)}
|
|
515
|
+
`)},ue=(r="")=>{process.stdout.write(`${picocolors.gray(d)} ${picocolors.red(r)}
|
|
516
|
+
|
|
517
|
+
`)},oe=(r="")=>{process.stdout.write(`${picocolors.gray(dist_K)} ${r}
|
|
518
|
+
`)},$e=(r="")=>{process.stdout.write(`${e.gray(a)}
|
|
519
|
+
${e.gray(d)} ${r}
|
|
520
|
+
|
|
521
|
+
`)},f={message:(r="",{symbol:n=picocolors.gray(a)}={})=>{const i=[`${picocolors.gray(a)}`];if(r){const[t,...s]=r.split(`
|
|
522
|
+
`);i.push(`${n} ${t}`,...s.map(c=>`${picocolors.gray(a)} ${c}`))}process.stdout.write(`${i.join(`
|
|
523
|
+
`)}
|
|
524
|
+
`)},info:r=>{f.message(r,{symbol:picocolors.blue(dist_J)})},success:r=>{f.message(r,{symbol:picocolors.green(dist_Y)})},step:r=>{f.message(r,{symbol:picocolors.green(S)})},warn:r=>{f.message(r,{symbol:picocolors.yellow(dist_Q)})},warning:r=>{f.warn(r)},error:r=>{f.message(r,{symbol:picocolors.red(ee)})}},de=()=>{const r=dist_?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],n=dist_?80:120;let i,t,s=!1,c="";const l=(v="")=>{s=!0,i=aD(),c=v.replace(/\.+$/,""),process.stdout.write(`${picocolors.gray(a)}
|
|
525
|
+
`);let g=0,p=0;t=setInterval(()=>{const O=picocolors.magenta(r[g]),P=".".repeat(Math.floor(p)).slice(0,3);process.stdout.write(src.cursor.move(-999,0)),process.stdout.write(src.erase.down(1)),process.stdout.write(`${O} ${c}${P}`),g=g+1<r.length?g+1:0,p=p<r.length?p+.125:0},n)},u=(v="",g=0)=>{c=v??c,s=!1,clearInterval(t);const p=g===0?picocolors.green(S):g===1?picocolors.red(dist_I):picocolors.red(x);process.stdout.write(src.cursor.move(-999,0)),process.stdout.write(src.erase.down(1)),process.stdout.write(`${p} ${c}
|
|
526
|
+
`),i()},m=(v="")=>{c=v??c},$=v=>{const g=v>1?"Something went wrong":"Canceled";s&&u(g,v)};return process.on("uncaughtExceptionMonitor",()=>$(2)),process.on("unhandledRejection",()=>$(2)),process.on("SIGINT",()=>$(1)),process.on("SIGTERM",()=>$(1)),process.on("exit",$),{start:l,stop:u,message:m}};function me(){const r=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(r,"g")}const he=async(r,n)=>{const i={},t=Object.keys(r);for(const s of t){const c=r[s],l=await c({results:i})?.catch(u=>{throw u});if(typeof n?.onCancel=="function"&&eD(l)){i[s]="canceled",n.onCancel({results:i});continue}i[s]=l}return i};
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
/***/ }),
|
|
530
|
+
|
|
531
|
+
/***/ 133:
|
|
532
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
// EXPORTS
|
|
536
|
+
__nccwpck_require__.d(__webpack_exports__, {
|
|
537
|
+
"Z": () => (/* binding */ getPorts)
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
// UNUSED EXPORTS: portNumbers
|
|
541
|
+
|
|
542
|
+
;// CONCATENATED MODULE: external "node:net"
|
|
543
|
+
const external_node_net_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:net");
|
|
544
|
+
;// CONCATENATED MODULE: external "node:os"
|
|
545
|
+
const external_node_os_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:os");
|
|
546
|
+
;// CONCATENATED MODULE: ./node_modules/get-port/index.js
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
class Locked extends Error {
|
|
551
|
+
constructor(port) {
|
|
552
|
+
super(`${port} is locked`);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
const lockedPorts = {
|
|
557
|
+
old: new Set(),
|
|
558
|
+
young: new Set(),
|
|
559
|
+
};
|
|
560
|
+
|
|
561
|
+
// On this interval, the old locked ports are discarded,
|
|
562
|
+
// the young locked ports are moved to old locked ports,
|
|
563
|
+
// and a new young set for locked ports are created.
|
|
564
|
+
const releaseOldLockedPortsIntervalMs = 1000 * 15;
|
|
565
|
+
|
|
566
|
+
const minPort = 1024;
|
|
567
|
+
const maxPort = 65_535;
|
|
568
|
+
|
|
569
|
+
// Lazily create timeout on first use
|
|
570
|
+
let timeout;
|
|
571
|
+
|
|
572
|
+
const getLocalHosts = () => {
|
|
573
|
+
const interfaces = external_node_os_namespaceObject.networkInterfaces();
|
|
574
|
+
|
|
575
|
+
// Add undefined value for createServer function to use default host,
|
|
576
|
+
// and default IPv4 host in case createServer defaults to IPv6.
|
|
577
|
+
const results = new Set([undefined, '0.0.0.0']);
|
|
578
|
+
|
|
579
|
+
for (const _interface of Object.values(interfaces)) {
|
|
580
|
+
for (const config of _interface) {
|
|
581
|
+
results.add(config.address);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
return results;
|
|
586
|
+
};
|
|
587
|
+
|
|
588
|
+
const checkAvailablePort = options =>
|
|
589
|
+
new Promise((resolve, reject) => {
|
|
590
|
+
const server = external_node_net_namespaceObject.createServer();
|
|
591
|
+
server.unref();
|
|
592
|
+
server.on('error', reject);
|
|
593
|
+
|
|
594
|
+
server.listen(options, () => {
|
|
595
|
+
const {port} = server.address();
|
|
596
|
+
server.close(() => {
|
|
597
|
+
resolve(port);
|
|
598
|
+
});
|
|
599
|
+
});
|
|
600
|
+
});
|
|
601
|
+
|
|
602
|
+
const getAvailablePort = async (options, hosts) => {
|
|
603
|
+
if (options.host || options.port === 0) {
|
|
604
|
+
return checkAvailablePort(options);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
for (const host of hosts) {
|
|
608
|
+
try {
|
|
609
|
+
await checkAvailablePort({port: options.port, host}); // eslint-disable-line no-await-in-loop
|
|
610
|
+
} catch (error) {
|
|
611
|
+
if (!['EADDRNOTAVAIL', 'EINVAL'].includes(error.code)) {
|
|
612
|
+
throw error;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
return options.port;
|
|
618
|
+
};
|
|
619
|
+
|
|
620
|
+
const portCheckSequence = function * (ports) {
|
|
621
|
+
if (ports) {
|
|
622
|
+
yield * ports;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
yield 0; // Fall back to 0 if anything else failed
|
|
626
|
+
};
|
|
627
|
+
|
|
628
|
+
async function getPorts(options) {
|
|
629
|
+
let ports;
|
|
630
|
+
let exclude = new Set();
|
|
631
|
+
|
|
632
|
+
if (options) {
|
|
633
|
+
if (options.port) {
|
|
634
|
+
ports = typeof options.port === 'number' ? [options.port] : options.port;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
if (options.exclude) {
|
|
638
|
+
const excludeIterable = options.exclude;
|
|
639
|
+
|
|
640
|
+
if (typeof excludeIterable[Symbol.iterator] !== 'function') {
|
|
641
|
+
throw new TypeError('The `exclude` option must be an iterable.');
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
for (const element of excludeIterable) {
|
|
645
|
+
if (typeof element !== 'number') {
|
|
646
|
+
throw new TypeError('Each item in the `exclude` option must be a number corresponding to the port you want excluded.');
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
if (!Number.isSafeInteger(element)) {
|
|
650
|
+
throw new TypeError(`Number ${element} in the exclude option is not a safe integer and can't be used`);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
exclude = new Set(excludeIterable);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
if (timeout === undefined) {
|
|
659
|
+
timeout = setTimeout(() => {
|
|
660
|
+
timeout = undefined;
|
|
661
|
+
|
|
662
|
+
lockedPorts.old = lockedPorts.young;
|
|
663
|
+
lockedPorts.young = new Set();
|
|
664
|
+
}, releaseOldLockedPortsIntervalMs);
|
|
665
|
+
|
|
666
|
+
// Does not exist in some environments (Electron, Jest jsdom env, browser, etc).
|
|
667
|
+
if (timeout.unref) {
|
|
668
|
+
timeout.unref();
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
const hosts = getLocalHosts();
|
|
673
|
+
|
|
674
|
+
for (const port of portCheckSequence(ports)) {
|
|
675
|
+
try {
|
|
676
|
+
if (exclude.has(port)) {
|
|
677
|
+
continue;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
let availablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop
|
|
681
|
+
while (lockedPorts.old.has(availablePort) || lockedPorts.young.has(availablePort)) {
|
|
682
|
+
if (port !== 0) {
|
|
683
|
+
throw new Locked(port);
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
availablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
lockedPorts.young.add(availablePort);
|
|
690
|
+
|
|
691
|
+
return availablePort;
|
|
692
|
+
} catch (error) {
|
|
693
|
+
if (!['EADDRINUSE', 'EACCES'].includes(error.code) && !(error instanceof Locked)) {
|
|
694
|
+
throw error;
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
throw new Error('No available ports found');
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
function portNumbers(from, to) {
|
|
703
|
+
if (!Number.isInteger(from) || !Number.isInteger(to)) {
|
|
704
|
+
throw new TypeError('`from` and `to` must be integer numbers');
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
if (from < minPort || from > maxPort) {
|
|
708
|
+
throw new RangeError(`'from' must be between ${minPort} and ${maxPort}`);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
if (to < minPort || to > maxPort) {
|
|
712
|
+
throw new RangeError(`'to' must be between ${minPort} and ${maxPort}`);
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
if (from > to) {
|
|
716
|
+
throw new RangeError('`to` must be greater than or equal to `from`');
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
const generator = function * (from, to) {
|
|
720
|
+
for (let port = from; port <= to; port++) {
|
|
721
|
+
yield port;
|
|
722
|
+
}
|
|
723
|
+
};
|
|
724
|
+
|
|
725
|
+
return generator(from, to);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
/***/ }),
|
|
730
|
+
|
|
731
|
+
/***/ 50:
|
|
732
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
|
|
733
|
+
|
|
734
|
+
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
735
|
+
/* harmony export */ "Z": () => (/* binding */ pDefer)
|
|
736
|
+
/* harmony export */ });
|
|
737
|
+
function pDefer() {
|
|
738
|
+
const deferred = {};
|
|
739
|
+
|
|
740
|
+
deferred.promise = new Promise((resolve, reject) => {
|
|
741
|
+
deferred.resolve = resolve;
|
|
742
|
+
deferred.reject = reject;
|
|
743
|
+
});
|
|
744
|
+
|
|
745
|
+
return deferred;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
/***/ })
|
|
750
|
+
|
|
751
|
+
/******/ });
|
|
752
|
+
/************************************************************************/
|
|
753
|
+
/******/ // The module cache
|
|
754
|
+
/******/ var __webpack_module_cache__ = {};
|
|
755
|
+
/******/
|
|
756
|
+
/******/ // The require function
|
|
757
|
+
/******/ function __nccwpck_require__(moduleId) {
|
|
758
|
+
/******/ // Check if module is in cache
|
|
759
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
760
|
+
/******/ if (cachedModule !== undefined) {
|
|
761
|
+
/******/ return cachedModule.exports;
|
|
762
|
+
/******/ }
|
|
763
|
+
/******/ // Create a new module (and put it into the cache)
|
|
764
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
765
|
+
/******/ // no module.id needed
|
|
766
|
+
/******/ // no module.loaded needed
|
|
767
|
+
/******/ exports: {}
|
|
768
|
+
/******/ };
|
|
769
|
+
/******/
|
|
770
|
+
/******/ // Execute the module function
|
|
771
|
+
/******/ var threw = true;
|
|
772
|
+
/******/ try {
|
|
773
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __nccwpck_require__);
|
|
774
|
+
/******/ threw = false;
|
|
775
|
+
/******/ } finally {
|
|
776
|
+
/******/ if(threw) delete __webpack_module_cache__[moduleId];
|
|
777
|
+
/******/ }
|
|
778
|
+
/******/
|
|
779
|
+
/******/ // Return the exports of the module
|
|
780
|
+
/******/ return module.exports;
|
|
781
|
+
/******/ }
|
|
782
|
+
/******/
|
|
783
|
+
/************************************************************************/
|
|
784
|
+
/******/ /* webpack/runtime/async module */
|
|
785
|
+
/******/ (() => {
|
|
786
|
+
/******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__";
|
|
787
|
+
/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__";
|
|
788
|
+
/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__";
|
|
789
|
+
/******/ var resolveQueue = (queue) => {
|
|
790
|
+
/******/ if(queue && !queue.d) {
|
|
791
|
+
/******/ queue.d = 1;
|
|
792
|
+
/******/ queue.forEach((fn) => (fn.r--));
|
|
793
|
+
/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));
|
|
794
|
+
/******/ }
|
|
795
|
+
/******/ }
|
|
796
|
+
/******/ var wrapDeps = (deps) => (deps.map((dep) => {
|
|
797
|
+
/******/ if(dep !== null && typeof dep === "object") {
|
|
798
|
+
/******/ if(dep[webpackQueues]) return dep;
|
|
799
|
+
/******/ if(dep.then) {
|
|
800
|
+
/******/ var queue = [];
|
|
801
|
+
/******/ queue.d = 0;
|
|
802
|
+
/******/ dep.then((r) => {
|
|
803
|
+
/******/ obj[webpackExports] = r;
|
|
804
|
+
/******/ resolveQueue(queue);
|
|
805
|
+
/******/ }, (e) => {
|
|
806
|
+
/******/ obj[webpackError] = e;
|
|
807
|
+
/******/ resolveQueue(queue);
|
|
808
|
+
/******/ });
|
|
809
|
+
/******/ var obj = {};
|
|
810
|
+
/******/ obj[webpackQueues] = (fn) => (fn(queue));
|
|
811
|
+
/******/ return obj;
|
|
812
|
+
/******/ }
|
|
813
|
+
/******/ }
|
|
814
|
+
/******/ var ret = {};
|
|
815
|
+
/******/ ret[webpackQueues] = x => {};
|
|
816
|
+
/******/ ret[webpackExports] = dep;
|
|
817
|
+
/******/ return ret;
|
|
818
|
+
/******/ }));
|
|
819
|
+
/******/ __nccwpck_require__.a = (module, body, hasAwait) => {
|
|
820
|
+
/******/ var queue;
|
|
821
|
+
/******/ hasAwait && ((queue = []).d = 1);
|
|
822
|
+
/******/ var depQueues = new Set();
|
|
823
|
+
/******/ var exports = module.exports;
|
|
824
|
+
/******/ var currentDeps;
|
|
825
|
+
/******/ var outerResolve;
|
|
826
|
+
/******/ var reject;
|
|
827
|
+
/******/ var promise = new Promise((resolve, rej) => {
|
|
828
|
+
/******/ reject = rej;
|
|
829
|
+
/******/ outerResolve = resolve;
|
|
830
|
+
/******/ });
|
|
831
|
+
/******/ promise[webpackExports] = exports;
|
|
832
|
+
/******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {}));
|
|
833
|
+
/******/ module.exports = promise;
|
|
834
|
+
/******/ body((deps) => {
|
|
835
|
+
/******/ currentDeps = wrapDeps(deps);
|
|
836
|
+
/******/ var fn;
|
|
837
|
+
/******/ var getResult = () => (currentDeps.map((d) => {
|
|
838
|
+
/******/ if(d[webpackError]) throw d[webpackError];
|
|
839
|
+
/******/ return d[webpackExports];
|
|
840
|
+
/******/ }))
|
|
841
|
+
/******/ var promise = new Promise((resolve) => {
|
|
842
|
+
/******/ fn = () => (resolve(getResult));
|
|
843
|
+
/******/ fn.r = 0;
|
|
844
|
+
/******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));
|
|
845
|
+
/******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue)));
|
|
846
|
+
/******/ });
|
|
847
|
+
/******/ return fn.r ? promise : getResult();
|
|
848
|
+
/******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));
|
|
849
|
+
/******/ queue && (queue.d = 0);
|
|
850
|
+
/******/ };
|
|
851
|
+
/******/ })();
|
|
852
|
+
/******/
|
|
853
|
+
/******/ /* webpack/runtime/define property getters */
|
|
854
|
+
/******/ (() => {
|
|
855
|
+
/******/ // define getter functions for harmony exports
|
|
856
|
+
/******/ __nccwpck_require__.d = (exports, definition) => {
|
|
857
|
+
/******/ for(var key in definition) {
|
|
858
|
+
/******/ if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) {
|
|
859
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
860
|
+
/******/ }
|
|
861
|
+
/******/ }
|
|
862
|
+
/******/ };
|
|
863
|
+
/******/ })();
|
|
864
|
+
/******/
|
|
865
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
866
|
+
/******/ (() => {
|
|
867
|
+
/******/ __nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
868
|
+
/******/ })();
|
|
869
|
+
/******/
|
|
870
|
+
/******/ /* webpack/runtime/compat */
|
|
871
|
+
/******/
|
|
872
|
+
/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = new URL('.', import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/) ? 1 : 0, -1) + "/";
|
|
873
|
+
/******/
|
|
874
|
+
/************************************************************************/
|
|
875
|
+
/******/
|
|
876
|
+
/******/ // startup
|
|
877
|
+
/******/ // Load entry module and return exports
|
|
878
|
+
/******/ // This entry module used 'module' so it can't be inlined
|
|
879
|
+
/******/ var __webpack_exports__ = __nccwpck_require__(724);
|
|
880
|
+
/******/ __webpack_exports__ = await __webpack_exports__;
|
|
881
|
+
/******/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chrome-webstore-upload-keys",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "CLI tool to generate OAuth keys for the Chrome Web Store",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chrome",
|
|
@@ -18,21 +18,22 @@
|
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"author": "Federico Brigante <me@fregante.com> (https://fregante.com)",
|
|
20
20
|
"type": "module",
|
|
21
|
-
"bin": "
|
|
21
|
+
"bin": "./dist/index.js",
|
|
22
22
|
"scripts": {
|
|
23
|
-
"
|
|
24
|
-
"
|
|
23
|
+
"build": "ncc build cli.js",
|
|
24
|
+
"prepack": "npm run build",
|
|
25
|
+
"start": "ncc run cli.js",
|
|
26
|
+
"test": "xo"
|
|
25
27
|
},
|
|
26
|
-
"
|
|
27
|
-
"node": ">=18"
|
|
28
|
-
},
|
|
29
|
-
"dependencies": {
|
|
28
|
+
"devDependencies": {
|
|
30
29
|
"@clack/prompts": "^0.7.0",
|
|
30
|
+
"@vercel/ncc": "^0.38.1",
|
|
31
31
|
"get-port": "^7.0.0",
|
|
32
|
-
"
|
|
33
|
-
"p-defer": "^4.0.0"
|
|
34
|
-
},
|
|
35
|
-
"devDependencies": {
|
|
32
|
+
"openurl": "^1.1.1",
|
|
33
|
+
"p-defer": "^4.0.0",
|
|
36
34
|
"xo": "^0.56.0"
|
|
35
|
+
},
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=18"
|
|
37
38
|
}
|
|
38
39
|
}
|
package/readme.md
CHANGED
|
@@ -49,14 +49,15 @@ You can follow this complete guide or the official-but-partial one at: https://d
|
|
|
49
49
|
> <img width="771" alt="Publish app" src="https://user-images.githubusercontent.com/27696701/114265946-2da2a280-9a26-11eb-9567-c4e00f572500.png">
|
|
50
50
|
|
|
51
51
|
0. Run this CLI tool to generate the required `refreshToken`
|
|
52
|
-
```sh
|
|
53
|
-
npx chrome-webstore-upload-keys
|
|
54
|
-
```
|
|
55
|
-
or
|
|
56
|
-
```sh
|
|
57
|
-
bunx chrome-webstore-upload-keys
|
|
58
|
-
```
|
|
59
52
|
|
|
53
|
+
```sh
|
|
54
|
+
npx chrome-webstore-upload-keys
|
|
55
|
+
```
|
|
56
|
+
or
|
|
57
|
+
```sh
|
|
58
|
+
bunx chrome-webstore-upload-keys
|
|
59
|
+
```
|
|
60
|
+
|
|
60
61
|
> <img width="771" alt="chrome-webstore-upload-keys demo" src="./demo.gif">
|
|
61
62
|
|
|
62
63
|
9001. Done. Now you should have ✅ `clientId`, ✅ `clientSecret` and ✅ `refreshToken`. You can use these for all your extensions, but don't share them!
|