nural 0.3.7 → 0.3.8

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.
@@ -2,2042 +2,20 @@
2
2
  'use strict';
3
3
 
4
4
  var commander = require('commander');
5
- var async_hooks = require('async_hooks');
6
- var util = require('util');
7
- var process2 = require('process');
8
- var readline2 = require('readline');
5
+ var inquirer = require('inquirer');
9
6
  var chalk = require('chalk');
10
7
  var fs = require('fs-extra');
11
8
  var path = require('path');
12
9
 
13
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
11
 
15
- function _interopNamespace(e) {
16
- if (e && e.__esModule) return e;
17
- var n = Object.create(null);
18
- if (e) {
19
- Object.keys(e).forEach(function (k) {
20
- if (k !== 'default') {
21
- var d = Object.getOwnPropertyDescriptor(e, k);
22
- Object.defineProperty(n, k, d.get ? d : {
23
- enumerable: true,
24
- get: function () { return e[k]; }
25
- });
26
- }
27
- });
28
- }
29
- n.default = e;
30
- return Object.freeze(n);
31
- }
32
-
33
- var process2__default = /*#__PURE__*/_interopDefault(process2);
34
- var readline2__namespace = /*#__PURE__*/_interopNamespace(readline2);
12
+ var inquirer__default = /*#__PURE__*/_interopDefault(inquirer);
35
13
  var chalk__default = /*#__PURE__*/_interopDefault(chalk);
36
14
  var fs__default = /*#__PURE__*/_interopDefault(fs);
37
15
  var path__default = /*#__PURE__*/_interopDefault(path);
38
16
 
39
- var __create = Object.create;
40
- var __defProp = Object.defineProperty;
41
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
42
- var __getOwnPropNames = Object.getOwnPropertyNames;
43
- var __getProtoOf = Object.getPrototypeOf;
44
- var __hasOwnProp = Object.prototype.hasOwnProperty;
45
- var __typeError = (msg) => {
46
- throw TypeError(msg);
47
- };
48
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
49
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
50
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
51
- }) : x)(function(x) {
52
- if (typeof require !== "undefined") return require.apply(this, arguments);
53
- throw Error('Dynamic require of "' + x + '" is not supported');
54
- });
55
- var __esm = (fn, res) => function __init() {
56
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
57
- };
58
- var __commonJS = (cb, mod) => function __require2() {
59
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
60
- };
61
- var __copyProps = (to, from, except, desc) => {
62
- if (from && typeof from === "object" || typeof from === "function") {
63
- for (let key of __getOwnPropNames(from))
64
- if (!__hasOwnProp.call(to, key) && key !== except)
65
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
66
- }
67
- return to;
68
- };
69
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
70
- // If the importer is in node compatibility mode or this is not an ESM
71
- // file that has been converted to a CommonJS file using a Babel-
72
- // compatible transform (i.e. "__esModule" has not been set), then set
73
- // "default" to the CommonJS "module.exports" for node compatibility.
74
- __defProp(target, "default", { value: mod, enumerable: true }) ,
75
- mod
76
- ));
77
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
78
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
79
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
80
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
81
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
82
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
83
-
84
- // node_modules/tsup/assets/cjs_shims.js
85
- var init_cjs_shims = __esm({
86
- "node_modules/tsup/assets/cjs_shims.js"() {
87
- }
88
- });
89
-
90
- // node_modules/cli-width/index.js
91
- var require_cli_width = __commonJS({
92
- "node_modules/cli-width/index.js"(exports$1, module) {
93
- init_cjs_shims();
94
- module.exports = cliWidth2;
95
- function normalizeOpts(options) {
96
- const defaultOpts = {
97
- defaultWidth: 0,
98
- output: process.stdout,
99
- tty: __require("tty")
100
- };
101
- if (!options) {
102
- return defaultOpts;
103
- }
104
- Object.keys(defaultOpts).forEach(function(key) {
105
- if (!options[key]) {
106
- options[key] = defaultOpts[key];
107
- }
108
- });
109
- return options;
110
- }
111
- function cliWidth2(options) {
112
- const opts = normalizeOpts(options);
113
- if (opts.output.getWindowSize) {
114
- return opts.output.getWindowSize()[0] || opts.defaultWidth;
115
- }
116
- if (opts.tty.getWindowSize) {
117
- return opts.tty.getWindowSize()[1] || opts.defaultWidth;
118
- }
119
- if (opts.output.columns) {
120
- return opts.output.columns;
121
- }
122
- if (process.env.CLI_WIDTH) {
123
- const width = parseInt(process.env.CLI_WIDTH, 10);
124
- if (!isNaN(width) && width !== 0) {
125
- return width;
126
- }
127
- }
128
- return opts.defaultWidth;
129
- }
130
- }
131
- });
132
-
133
- // node_modules/mute-stream/lib/index.js
134
- var require_lib = __commonJS({
135
- "node_modules/mute-stream/lib/index.js"(exports$1, module) {
136
- init_cjs_shims();
137
- var Stream = __require("stream");
138
- var _isTTY, _MuteStream_instances, destSrc_fn, proxy_fn;
139
- var MuteStream2 = class extends Stream {
140
- constructor(opts = {}) {
141
- super(opts);
142
- __privateAdd(this, _MuteStream_instances);
143
- __privateAdd(this, _isTTY, null);
144
- this.writable = this.readable = true;
145
- this.muted = false;
146
- this.on("pipe", this._onpipe);
147
- this.replace = opts.replace;
148
- this._prompt = opts.prompt || null;
149
- this._hadControl = false;
150
- }
151
- get isTTY() {
152
- if (__privateGet(this, _isTTY) !== null) {
153
- return __privateGet(this, _isTTY);
154
- }
155
- return __privateMethod(this, _MuteStream_instances, destSrc_fn).call(this, "isTTY", false);
156
- }
157
- // basically just get replace the getter/setter with a regular value
158
- set isTTY(val) {
159
- __privateSet(this, _isTTY, val);
160
- }
161
- get rows() {
162
- return __privateMethod(this, _MuteStream_instances, destSrc_fn).call(this, "rows");
163
- }
164
- get columns() {
165
- return __privateMethod(this, _MuteStream_instances, destSrc_fn).call(this, "columns");
166
- }
167
- mute() {
168
- this.muted = true;
169
- }
170
- unmute() {
171
- this.muted = false;
172
- }
173
- _onpipe(src) {
174
- this._src = src;
175
- }
176
- pipe(dest, options) {
177
- this._dest = dest;
178
- return super.pipe(dest, options);
179
- }
180
- pause() {
181
- if (this._src) {
182
- return this._src.pause();
183
- }
184
- }
185
- resume() {
186
- if (this._src) {
187
- return this._src.resume();
188
- }
189
- }
190
- write(c) {
191
- if (this.muted) {
192
- if (!this.replace) {
193
- return true;
194
- }
195
- if (c.match(/^\u001b/)) {
196
- if (c.indexOf(this._prompt) === 0) {
197
- c = c.slice(this._prompt.length);
198
- c = c.replace(/./g, this.replace);
199
- c = this._prompt + c;
200
- }
201
- this._hadControl = true;
202
- return this.emit("data", c);
203
- } else {
204
- if (this._prompt && this._hadControl && c.indexOf(this._prompt) === 0) {
205
- this._hadControl = false;
206
- this.emit("data", this._prompt);
207
- c = c.slice(this._prompt.length);
208
- }
209
- c = c.toString().replace(/./g, this.replace);
210
- }
211
- }
212
- this.emit("data", c);
213
- }
214
- end(c) {
215
- if (this.muted) {
216
- if (c && this.replace) {
217
- c = c.toString().replace(/./g, this.replace);
218
- } else {
219
- c = null;
220
- }
221
- }
222
- if (c) {
223
- this.emit("data", c);
224
- }
225
- this.emit("end");
226
- }
227
- destroy(...args) {
228
- return __privateMethod(this, _MuteStream_instances, proxy_fn).call(this, "destroy", ...args);
229
- }
230
- destroySoon(...args) {
231
- return __privateMethod(this, _MuteStream_instances, proxy_fn).call(this, "destroySoon", ...args);
232
- }
233
- close(...args) {
234
- return __privateMethod(this, _MuteStream_instances, proxy_fn).call(this, "close", ...args);
235
- }
236
- };
237
- _isTTY = new WeakMap();
238
- _MuteStream_instances = new WeakSet();
239
- destSrc_fn = function(key, def) {
240
- if (this._dest) {
241
- return this._dest[key];
242
- }
243
- if (this._src) {
244
- return this._src[key];
245
- }
246
- return def;
247
- };
248
- proxy_fn = function(method, ...args) {
249
- if (typeof this._dest?.[method] === "function") {
250
- this._dest[method](...args);
251
- }
252
- if (typeof this._src?.[method] === "function") {
253
- this._src[method](...args);
254
- }
255
- };
256
- module.exports = MuteStream2;
257
- }
258
- });
259
-
260
- // src/cli/index.ts
261
- init_cjs_shims();
262
-
263
- // node_modules/@inquirer/select/dist/index.js
264
- init_cjs_shims();
265
-
266
- // node_modules/@inquirer/core/dist/index.js
267
- init_cjs_shims();
268
-
269
- // node_modules/@inquirer/core/dist/lib/key.js
270
- init_cjs_shims();
271
- var isUpKey = (key, keybindings = []) => (
272
- // The up key
273
- key.name === "up" || // Vim keybinding: hjkl keys map to left/down/up/right
274
- keybindings.includes("vim") && key.name === "k" || // Emacs keybinding: Ctrl+P means "previous" in Emacs navigation conventions
275
- keybindings.includes("emacs") && key.ctrl && key.name === "p"
276
- );
277
- var isDownKey = (key, keybindings = []) => (
278
- // The down key
279
- key.name === "down" || // Vim keybinding: hjkl keys map to left/down/up/right
280
- keybindings.includes("vim") && key.name === "j" || // Emacs keybinding: Ctrl+N means "next" in Emacs navigation conventions
281
- keybindings.includes("emacs") && key.ctrl && key.name === "n"
282
- );
283
- var isBackspaceKey = (key) => key.name === "backspace";
284
- var isNumberKey = (key) => "1234567890".includes(key.name);
285
- var isEnterKey = (key) => key.name === "enter" || key.name === "return";
286
-
287
- // node_modules/@inquirer/core/dist/lib/errors.js
288
- init_cjs_shims();
289
- var AbortPromptError = class extends Error {
290
- constructor(options) {
291
- super();
292
- __publicField(this, "name", "AbortPromptError");
293
- __publicField(this, "message", "Prompt was aborted");
294
- this.cause = options?.cause;
295
- }
296
- };
297
- var CancelPromptError = class extends Error {
298
- constructor() {
299
- super(...arguments);
300
- __publicField(this, "name", "CancelPromptError");
301
- __publicField(this, "message", "Prompt was canceled");
302
- }
303
- };
304
- var ExitPromptError = class extends Error {
305
- constructor() {
306
- super(...arguments);
307
- __publicField(this, "name", "ExitPromptError");
308
- }
309
- };
310
- var HookError = class extends Error {
311
- constructor() {
312
- super(...arguments);
313
- __publicField(this, "name", "HookError");
314
- }
315
- };
316
- var ValidationError = class extends Error {
317
- constructor() {
318
- super(...arguments);
319
- __publicField(this, "name", "ValidationError");
320
- }
321
- };
322
-
323
- // node_modules/@inquirer/core/dist/lib/use-prefix.js
324
- init_cjs_shims();
325
-
326
- // node_modules/@inquirer/core/dist/lib/use-state.js
327
- init_cjs_shims();
328
-
329
- // node_modules/@inquirer/core/dist/lib/hook-engine.js
330
- init_cjs_shims();
331
- var hookStorage = new async_hooks.AsyncLocalStorage();
332
- function createStore(rl) {
333
- const store = {
334
- rl,
335
- hooks: [],
336
- hooksCleanup: [],
337
- hooksEffect: [],
338
- index: 0,
339
- handleChange() {
340
- }
341
- };
342
- return store;
343
- }
344
- function withHooks(rl, cb) {
345
- const store = createStore(rl);
346
- return hookStorage.run(store, () => {
347
- function cycle(render) {
348
- store.handleChange = () => {
349
- store.index = 0;
350
- render();
351
- };
352
- store.handleChange();
353
- }
354
- return cb(cycle);
355
- });
356
- }
357
- function getStore() {
358
- const store = hookStorage.getStore();
359
- if (!store) {
360
- throw new HookError("[Inquirer] Hook functions can only be called from within a prompt");
361
- }
362
- return store;
363
- }
364
- function readline() {
365
- return getStore().rl;
366
- }
367
- function withUpdates(fn) {
368
- const wrapped = (...args) => {
369
- const store = getStore();
370
- let shouldUpdate = false;
371
- const oldHandleChange = store.handleChange;
372
- store.handleChange = () => {
373
- shouldUpdate = true;
374
- };
375
- const returnValue = fn(...args);
376
- if (shouldUpdate) {
377
- oldHandleChange();
378
- }
379
- store.handleChange = oldHandleChange;
380
- return returnValue;
381
- };
382
- return async_hooks.AsyncResource.bind(wrapped);
383
- }
384
- function withPointer(cb) {
385
- const store = getStore();
386
- const { index } = store;
387
- const pointer = {
388
- get() {
389
- return store.hooks[index];
390
- },
391
- set(value) {
392
- store.hooks[index] = value;
393
- },
394
- initialized: index in store.hooks
395
- };
396
- const returnValue = cb(pointer);
397
- store.index++;
398
- return returnValue;
399
- }
400
- function handleChange() {
401
- getStore().handleChange();
402
- }
403
- var effectScheduler = {
404
- queue(cb) {
405
- const store = getStore();
406
- const { index } = store;
407
- store.hooksEffect.push(() => {
408
- store.hooksCleanup[index]?.();
409
- const cleanFn = cb(readline());
410
- if (cleanFn != null && typeof cleanFn !== "function") {
411
- throw new ValidationError("useEffect return value must be a cleanup function or nothing.");
412
- }
413
- store.hooksCleanup[index] = cleanFn;
414
- });
415
- },
416
- run() {
417
- const store = getStore();
418
- withUpdates(() => {
419
- store.hooksEffect.forEach((effect) => {
420
- effect();
421
- });
422
- store.hooksEffect.length = 0;
423
- })();
424
- },
425
- clearAll() {
426
- const store = getStore();
427
- store.hooksCleanup.forEach((cleanFn) => {
428
- cleanFn?.();
429
- });
430
- store.hooksEffect.length = 0;
431
- store.hooksCleanup.length = 0;
432
- }
433
- };
434
-
435
- // node_modules/@inquirer/core/dist/lib/use-state.js
436
- function useState(defaultValue) {
437
- return withPointer((pointer) => {
438
- const setState = async_hooks.AsyncResource.bind(function setState2(newValue) {
439
- if (pointer.get() !== newValue) {
440
- pointer.set(newValue);
441
- handleChange();
442
- }
443
- });
444
- if (pointer.initialized) {
445
- return [pointer.get(), setState];
446
- }
447
- const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
448
- pointer.set(value);
449
- return [value, setState];
450
- });
451
- }
452
-
453
- // node_modules/@inquirer/core/dist/lib/use-effect.js
454
- init_cjs_shims();
455
- function useEffect(cb, depArray) {
456
- withPointer((pointer) => {
457
- const oldDeps = pointer.get();
458
- const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));
459
- if (hasChanged) {
460
- effectScheduler.queue(cb);
461
- }
462
- pointer.set(depArray);
463
- });
464
- }
465
-
466
- // node_modules/@inquirer/core/dist/lib/make-theme.js
467
- init_cjs_shims();
468
-
469
- // node_modules/@inquirer/core/dist/lib/theme.js
470
- init_cjs_shims();
471
-
472
- // node_modules/@inquirer/figures/dist/index.js
473
- init_cjs_shims();
474
- function isUnicodeSupported() {
475
- if (process2__default.default.platform !== "win32") {
476
- return process2__default.default.env["TERM"] !== "linux";
477
- }
478
- return Boolean(process2__default.default.env["WT_SESSION"]) || // Windows Terminal
479
- Boolean(process2__default.default.env["TERMINUS_SUBLIME"]) || // Terminus (<0.2.27)
480
- process2__default.default.env["ConEmuTask"] === "{cmd::Cmder}" || // ConEmu and cmder
481
- process2__default.default.env["TERM_PROGRAM"] === "Terminus-Sublime" || process2__default.default.env["TERM_PROGRAM"] === "vscode" || process2__default.default.env["TERM"] === "xterm-256color" || process2__default.default.env["TERM"] === "alacritty" || process2__default.default.env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm";
482
- }
483
- var common = {
484
- circleQuestionMark: "(?)",
485
- questionMarkPrefix: "(?)",
486
- square: "\u2588",
487
- squareDarkShade: "\u2593",
488
- squareMediumShade: "\u2592",
489
- squareLightShade: "\u2591",
490
- squareTop: "\u2580",
491
- squareBottom: "\u2584",
492
- squareLeft: "\u258C",
493
- squareRight: "\u2590",
494
- squareCenter: "\u25A0",
495
- bullet: "\u25CF",
496
- dot: "\u2024",
497
- ellipsis: "\u2026",
498
- pointerSmall: "\u203A",
499
- triangleUp: "\u25B2",
500
- triangleUpSmall: "\u25B4",
501
- triangleDown: "\u25BC",
502
- triangleDownSmall: "\u25BE",
503
- triangleLeftSmall: "\u25C2",
504
- triangleRightSmall: "\u25B8",
505
- home: "\u2302",
506
- heart: "\u2665",
507
- musicNote: "\u266A",
508
- musicNoteBeamed: "\u266B",
509
- arrowUp: "\u2191",
510
- arrowDown: "\u2193",
511
- arrowLeft: "\u2190",
512
- arrowRight: "\u2192",
513
- arrowLeftRight: "\u2194",
514
- arrowUpDown: "\u2195",
515
- almostEqual: "\u2248",
516
- notEqual: "\u2260",
517
- lessOrEqual: "\u2264",
518
- greaterOrEqual: "\u2265",
519
- identical: "\u2261",
520
- infinity: "\u221E",
521
- subscriptZero: "\u2080",
522
- subscriptOne: "\u2081",
523
- subscriptTwo: "\u2082",
524
- subscriptThree: "\u2083",
525
- subscriptFour: "\u2084",
526
- subscriptFive: "\u2085",
527
- subscriptSix: "\u2086",
528
- subscriptSeven: "\u2087",
529
- subscriptEight: "\u2088",
530
- subscriptNine: "\u2089",
531
- oneHalf: "\xBD",
532
- oneThird: "\u2153",
533
- oneQuarter: "\xBC",
534
- oneFifth: "\u2155",
535
- oneSixth: "\u2159",
536
- oneEighth: "\u215B",
537
- twoThirds: "\u2154",
538
- twoFifths: "\u2156",
539
- threeQuarters: "\xBE",
540
- threeFifths: "\u2157",
541
- threeEighths: "\u215C",
542
- fourFifths: "\u2158",
543
- fiveSixths: "\u215A",
544
- fiveEighths: "\u215D",
545
- sevenEighths: "\u215E",
546
- line: "\u2500",
547
- lineBold: "\u2501",
548
- lineDouble: "\u2550",
549
- lineDashed0: "\u2504",
550
- lineDashed1: "\u2505",
551
- lineDashed2: "\u2508",
552
- lineDashed3: "\u2509",
553
- lineDashed4: "\u254C",
554
- lineDashed5: "\u254D",
555
- lineDashed6: "\u2574",
556
- lineDashed7: "\u2576",
557
- lineDashed8: "\u2578",
558
- lineDashed9: "\u257A",
559
- lineDashed10: "\u257C",
560
- lineDashed11: "\u257E",
561
- lineDashed12: "\u2212",
562
- lineDashed13: "\u2013",
563
- lineDashed14: "\u2010",
564
- lineDashed15: "\u2043",
565
- lineVertical: "\u2502",
566
- lineVerticalBold: "\u2503",
567
- lineVerticalDouble: "\u2551",
568
- lineVerticalDashed0: "\u2506",
569
- lineVerticalDashed1: "\u2507",
570
- lineVerticalDashed2: "\u250A",
571
- lineVerticalDashed3: "\u250B",
572
- lineVerticalDashed4: "\u254E",
573
- lineVerticalDashed5: "\u254F",
574
- lineVerticalDashed6: "\u2575",
575
- lineVerticalDashed7: "\u2577",
576
- lineVerticalDashed8: "\u2579",
577
- lineVerticalDashed9: "\u257B",
578
- lineVerticalDashed10: "\u257D",
579
- lineVerticalDashed11: "\u257F",
580
- lineDownLeft: "\u2510",
581
- lineDownLeftArc: "\u256E",
582
- lineDownBoldLeftBold: "\u2513",
583
- lineDownBoldLeft: "\u2512",
584
- lineDownLeftBold: "\u2511",
585
- lineDownDoubleLeftDouble: "\u2557",
586
- lineDownDoubleLeft: "\u2556",
587
- lineDownLeftDouble: "\u2555",
588
- lineDownRight: "\u250C",
589
- lineDownRightArc: "\u256D",
590
- lineDownBoldRightBold: "\u250F",
591
- lineDownBoldRight: "\u250E",
592
- lineDownRightBold: "\u250D",
593
- lineDownDoubleRightDouble: "\u2554",
594
- lineDownDoubleRight: "\u2553",
595
- lineDownRightDouble: "\u2552",
596
- lineUpLeft: "\u2518",
597
- lineUpLeftArc: "\u256F",
598
- lineUpBoldLeftBold: "\u251B",
599
- lineUpBoldLeft: "\u251A",
600
- lineUpLeftBold: "\u2519",
601
- lineUpDoubleLeftDouble: "\u255D",
602
- lineUpDoubleLeft: "\u255C",
603
- lineUpLeftDouble: "\u255B",
604
- lineUpRight: "\u2514",
605
- lineUpRightArc: "\u2570",
606
- lineUpBoldRightBold: "\u2517",
607
- lineUpBoldRight: "\u2516",
608
- lineUpRightBold: "\u2515",
609
- lineUpDoubleRightDouble: "\u255A",
610
- lineUpDoubleRight: "\u2559",
611
- lineUpRightDouble: "\u2558",
612
- lineUpDownLeft: "\u2524",
613
- lineUpBoldDownBoldLeftBold: "\u252B",
614
- lineUpBoldDownBoldLeft: "\u2528",
615
- lineUpDownLeftBold: "\u2525",
616
- lineUpBoldDownLeftBold: "\u2529",
617
- lineUpDownBoldLeftBold: "\u252A",
618
- lineUpDownBoldLeft: "\u2527",
619
- lineUpBoldDownLeft: "\u2526",
620
- lineUpDoubleDownDoubleLeftDouble: "\u2563",
621
- lineUpDoubleDownDoubleLeft: "\u2562",
622
- lineUpDownLeftDouble: "\u2561",
623
- lineUpDownRight: "\u251C",
624
- lineUpBoldDownBoldRightBold: "\u2523",
625
- lineUpBoldDownBoldRight: "\u2520",
626
- lineUpDownRightBold: "\u251D",
627
- lineUpBoldDownRightBold: "\u2521",
628
- lineUpDownBoldRightBold: "\u2522",
629
- lineUpDownBoldRight: "\u251F",
630
- lineUpBoldDownRight: "\u251E",
631
- lineUpDoubleDownDoubleRightDouble: "\u2560",
632
- lineUpDoubleDownDoubleRight: "\u255F",
633
- lineUpDownRightDouble: "\u255E",
634
- lineDownLeftRight: "\u252C",
635
- lineDownBoldLeftBoldRightBold: "\u2533",
636
- lineDownLeftBoldRightBold: "\u252F",
637
- lineDownBoldLeftRight: "\u2530",
638
- lineDownBoldLeftBoldRight: "\u2531",
639
- lineDownBoldLeftRightBold: "\u2532",
640
- lineDownLeftRightBold: "\u252E",
641
- lineDownLeftBoldRight: "\u252D",
642
- lineDownDoubleLeftDoubleRightDouble: "\u2566",
643
- lineDownDoubleLeftRight: "\u2565",
644
- lineDownLeftDoubleRightDouble: "\u2564",
645
- lineUpLeftRight: "\u2534",
646
- lineUpBoldLeftBoldRightBold: "\u253B",
647
- lineUpLeftBoldRightBold: "\u2537",
648
- lineUpBoldLeftRight: "\u2538",
649
- lineUpBoldLeftBoldRight: "\u2539",
650
- lineUpBoldLeftRightBold: "\u253A",
651
- lineUpLeftRightBold: "\u2536",
652
- lineUpLeftBoldRight: "\u2535",
653
- lineUpDoubleLeftDoubleRightDouble: "\u2569",
654
- lineUpDoubleLeftRight: "\u2568",
655
- lineUpLeftDoubleRightDouble: "\u2567",
656
- lineUpDownLeftRight: "\u253C",
657
- lineUpBoldDownBoldLeftBoldRightBold: "\u254B",
658
- lineUpDownBoldLeftBoldRightBold: "\u2548",
659
- lineUpBoldDownLeftBoldRightBold: "\u2547",
660
- lineUpBoldDownBoldLeftRightBold: "\u254A",
661
- lineUpBoldDownBoldLeftBoldRight: "\u2549",
662
- lineUpBoldDownLeftRight: "\u2540",
663
- lineUpDownBoldLeftRight: "\u2541",
664
- lineUpDownLeftBoldRight: "\u253D",
665
- lineUpDownLeftRightBold: "\u253E",
666
- lineUpBoldDownBoldLeftRight: "\u2542",
667
- lineUpDownLeftBoldRightBold: "\u253F",
668
- lineUpBoldDownLeftBoldRight: "\u2543",
669
- lineUpBoldDownLeftRightBold: "\u2544",
670
- lineUpDownBoldLeftBoldRight: "\u2545",
671
- lineUpDownBoldLeftRightBold: "\u2546",
672
- lineUpDoubleDownDoubleLeftDoubleRightDouble: "\u256C",
673
- lineUpDoubleDownDoubleLeftRight: "\u256B",
674
- lineUpDownLeftDoubleRightDouble: "\u256A",
675
- lineCross: "\u2573",
676
- lineBackslash: "\u2572",
677
- lineSlash: "\u2571"
678
- };
679
- var specialMainSymbols = {
680
- tick: "\u2714",
681
- info: "\u2139",
682
- warning: "\u26A0",
683
- cross: "\u2718",
684
- squareSmall: "\u25FB",
685
- squareSmallFilled: "\u25FC",
686
- circle: "\u25EF",
687
- circleFilled: "\u25C9",
688
- circleDotted: "\u25CC",
689
- circleDouble: "\u25CE",
690
- circleCircle: "\u24DE",
691
- circleCross: "\u24E7",
692
- circlePipe: "\u24BE",
693
- radioOn: "\u25C9",
694
- radioOff: "\u25EF",
695
- checkboxOn: "\u2612",
696
- checkboxOff: "\u2610",
697
- checkboxCircleOn: "\u24E7",
698
- checkboxCircleOff: "\u24BE",
699
- pointer: "\u276F",
700
- triangleUpOutline: "\u25B3",
701
- triangleLeft: "\u25C0",
702
- triangleRight: "\u25B6",
703
- lozenge: "\u25C6",
704
- lozengeOutline: "\u25C7",
705
- hamburger: "\u2630",
706
- smiley: "\u32E1",
707
- mustache: "\u0DF4",
708
- star: "\u2605",
709
- play: "\u25B6",
710
- nodejs: "\u2B22",
711
- oneSeventh: "\u2150",
712
- oneNinth: "\u2151",
713
- oneTenth: "\u2152"
714
- };
715
- var specialFallbackSymbols = {
716
- tick: "\u221A",
717
- info: "i",
718
- warning: "\u203C",
719
- cross: "\xD7",
720
- squareSmall: "\u25A1",
721
- squareSmallFilled: "\u25A0",
722
- circle: "( )",
723
- circleFilled: "(*)",
724
- circleDotted: "( )",
725
- circleDouble: "( )",
726
- circleCircle: "(\u25CB)",
727
- circleCross: "(\xD7)",
728
- circlePipe: "(\u2502)",
729
- radioOn: "(*)",
730
- radioOff: "( )",
731
- checkboxOn: "[\xD7]",
732
- checkboxOff: "[ ]",
733
- checkboxCircleOn: "(\xD7)",
734
- checkboxCircleOff: "( )",
735
- pointer: ">",
736
- triangleUpOutline: "\u2206",
737
- triangleLeft: "\u25C4",
738
- triangleRight: "\u25BA",
739
- lozenge: "\u2666",
740
- lozengeOutline: "\u25CA",
741
- hamburger: "\u2261",
742
- smiley: "\u263A",
743
- mustache: "\u250C\u2500\u2510",
744
- star: "\u2736",
745
- play: "\u25BA",
746
- nodejs: "\u2666",
747
- oneSeventh: "1/7",
748
- oneNinth: "1/9",
749
- oneTenth: "1/10"
750
- };
751
- var mainSymbols = {
752
- ...common,
753
- ...specialMainSymbols
754
- };
755
- var fallbackSymbols = {
756
- ...common,
757
- ...specialFallbackSymbols
758
- };
759
- var shouldUseMain = isUnicodeSupported();
760
- var figures = shouldUseMain ? mainSymbols : fallbackSymbols;
761
- var dist_default = figures;
762
-
763
- // node_modules/@inquirer/core/dist/lib/theme.js
764
- var defaultTheme = {
765
- prefix: {
766
- idle: util.styleText("blue", "?"),
767
- done: util.styleText("green", dist_default.tick)
768
- },
769
- spinner: {
770
- interval: 80,
771
- frames: ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"].map((frame) => util.styleText("yellow", frame))
772
- },
773
- style: {
774
- answer: (text) => util.styleText("cyan", text),
775
- message: (text) => util.styleText("bold", text),
776
- error: (text) => util.styleText("red", `> ${text}`),
777
- defaultAnswer: (text) => util.styleText("dim", `(${text})`),
778
- help: (text) => util.styleText("dim", text),
779
- highlight: (text) => util.styleText("cyan", text),
780
- key: (text) => util.styleText("cyan", util.styleText("bold", `<${text}>`))
781
- }
782
- };
783
-
784
- // node_modules/@inquirer/core/dist/lib/make-theme.js
785
- function isPlainObject(value) {
786
- if (typeof value !== "object" || value === null)
787
- return false;
788
- let proto = value;
789
- while (Object.getPrototypeOf(proto) !== null) {
790
- proto = Object.getPrototypeOf(proto);
791
- }
792
- return Object.getPrototypeOf(value) === proto;
793
- }
794
- function deepMerge(...objects) {
795
- const output = {};
796
- for (const obj of objects) {
797
- for (const [key, value] of Object.entries(obj)) {
798
- const prevValue = output[key];
799
- output[key] = isPlainObject(prevValue) && isPlainObject(value) ? deepMerge(prevValue, value) : value;
800
- }
801
- }
802
- return output;
803
- }
804
- function makeTheme(...themes) {
805
- const themesToMerge = [
806
- defaultTheme,
807
- ...themes.filter((theme) => theme != null)
808
- ];
809
- return deepMerge(...themesToMerge);
810
- }
811
-
812
- // node_modules/@inquirer/core/dist/lib/use-prefix.js
813
- function usePrefix({ status = "idle", theme }) {
814
- const [showLoader, setShowLoader] = useState(false);
815
- const [tick, setTick] = useState(0);
816
- const { prefix, spinner } = makeTheme(theme);
817
- useEffect(() => {
818
- if (status === "loading") {
819
- let tickInterval;
820
- let inc = -1;
821
- const delayTimeout = setTimeout(() => {
822
- setShowLoader(true);
823
- tickInterval = setInterval(() => {
824
- inc = inc + 1;
825
- setTick(inc % spinner.frames.length);
826
- }, spinner.interval);
827
- }, 300);
828
- return () => {
829
- clearTimeout(delayTimeout);
830
- clearInterval(tickInterval);
831
- };
832
- } else {
833
- setShowLoader(false);
834
- }
835
- }, [status]);
836
- if (showLoader) {
837
- return spinner.frames[tick];
838
- }
839
- const iconName = status === "loading" ? "idle" : status;
840
- return typeof prefix === "string" ? prefix : prefix[iconName] ?? prefix["idle"];
841
- }
842
-
843
- // node_modules/@inquirer/core/dist/lib/use-memo.js
844
- init_cjs_shims();
845
- function useMemo(fn, dependencies) {
846
- return withPointer((pointer) => {
847
- const prev = pointer.get();
848
- if (!prev || prev.dependencies.length !== dependencies.length || prev.dependencies.some((dep, i) => dep !== dependencies[i])) {
849
- const value = fn();
850
- pointer.set({ value, dependencies });
851
- return value;
852
- }
853
- return prev.value;
854
- });
855
- }
856
-
857
- // node_modules/@inquirer/core/dist/lib/use-ref.js
858
- init_cjs_shims();
859
- function useRef(val) {
860
- return useState({ current: val })[0];
861
- }
862
-
863
- // node_modules/@inquirer/core/dist/lib/use-keypress.js
864
- init_cjs_shims();
865
- function useKeypress(userHandler) {
866
- const signal = useRef(userHandler);
867
- signal.current = userHandler;
868
- useEffect((rl) => {
869
- let ignore = false;
870
- const handler = withUpdates((_input, event) => {
871
- if (ignore)
872
- return;
873
- void signal.current(event, rl);
874
- });
875
- rl.input.on("keypress", handler);
876
- return () => {
877
- ignore = true;
878
- rl.input.removeListener("keypress", handler);
879
- };
880
- }, []);
881
- }
882
-
883
- // node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
884
- init_cjs_shims();
885
-
886
- // node_modules/@inquirer/core/dist/lib/utils.js
887
- init_cjs_shims();
888
- var import_cli_width = __toESM(require_cli_width());
889
-
890
- // node_modules/wrap-ansi/index.js
891
- init_cjs_shims();
892
-
893
- // node_modules/string-width/index.js
894
- init_cjs_shims();
895
-
896
- // node_modules/strip-ansi/index.js
897
- init_cjs_shims();
898
-
899
- // node_modules/ansi-regex/index.js
900
- init_cjs_shims();
901
- function ansiRegex({ onlyFirst = false } = {}) {
902
- const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
903
- const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
904
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
905
- const pattern = `${osc}|${csi}`;
906
- return new RegExp(pattern, onlyFirst ? void 0 : "g");
907
- }
908
-
909
- // node_modules/strip-ansi/index.js
910
- var regex = ansiRegex();
911
- function stripAnsi(string) {
912
- if (typeof string !== "string") {
913
- throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
914
- }
915
- return string.replace(regex, "");
916
- }
917
-
918
- // node_modules/get-east-asian-width/index.js
919
- init_cjs_shims();
920
-
921
- // node_modules/get-east-asian-width/lookup.js
922
- init_cjs_shims();
923
- function isAmbiguous(x) {
924
- 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;
925
- }
926
- function isFullWidth(x) {
927
- return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
928
- }
929
- function isWide(x) {
930
- 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 <= 94198 || x >= 94208 && x <= 101589 || x >= 101631 && x <= 101662 || x >= 101760 && x <= 101874 || 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 <= 128728 || 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 <= 129674 || x >= 129678 && x <= 129734 || x === 129736 || x >= 129741 && x <= 129756 || x >= 129759 && x <= 129770 || x >= 129775 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
931
- }
932
-
933
- // node_modules/get-east-asian-width/index.js
934
- function validate(codePoint) {
935
- if (!Number.isSafeInteger(codePoint)) {
936
- throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
937
- }
938
- }
939
- function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
940
- validate(codePoint);
941
- if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
942
- return 2;
943
- }
944
- return 1;
945
- }
946
-
947
- // node_modules/emoji-regex/index.mjs
948
- init_cjs_shims();
949
- var emoji_regex_default = () => {
950
- 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-\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-\uDED8\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\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]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\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]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\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\uDD3C-\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-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\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\uDE70]|\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\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]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\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;
951
- };
952
-
953
- // node_modules/string-width/index.js
954
- var segmenter = new Intl.Segmenter();
955
- var defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
956
- function stringWidth(string, options = {}) {
957
- if (typeof string !== "string" || string.length === 0) {
958
- return 0;
959
- }
960
- const {
961
- ambiguousIsNarrow = true,
962
- countAnsiEscapeCodes = false
963
- } = options;
964
- if (!countAnsiEscapeCodes) {
965
- string = stripAnsi(string);
966
- }
967
- if (string.length === 0) {
968
- return 0;
969
- }
970
- let width = 0;
971
- const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
972
- for (const { segment: character } of segmenter.segment(string)) {
973
- const codePoint = character.codePointAt(0);
974
- if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
975
- continue;
976
- }
977
- if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) {
978
- continue;
979
- }
980
- if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) {
981
- continue;
982
- }
983
- if (codePoint >= 55296 && codePoint <= 57343) {
984
- continue;
985
- }
986
- if (codePoint >= 65024 && codePoint <= 65039) {
987
- continue;
988
- }
989
- if (defaultIgnorableCodePointRegex.test(character)) {
990
- continue;
991
- }
992
- if (emoji_regex_default().test(character)) {
993
- width += 2;
994
- continue;
995
- }
996
- width += eastAsianWidth(codePoint, eastAsianWidthOptions);
997
- }
998
- return width;
999
- }
1000
-
1001
- // node_modules/ansi-styles/index.js
1002
- init_cjs_shims();
1003
- var ANSI_BACKGROUND_OFFSET = 10;
1004
- var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
1005
- var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
1006
- var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
1007
- var styles = {
1008
- modifier: {
1009
- reset: [0, 0],
1010
- // 21 isn't widely supported and 22 does the same thing
1011
- bold: [1, 22],
1012
- dim: [2, 22],
1013
- italic: [3, 23],
1014
- underline: [4, 24],
1015
- overline: [53, 55],
1016
- inverse: [7, 27],
1017
- hidden: [8, 28],
1018
- strikethrough: [9, 29]
1019
- },
1020
- color: {
1021
- black: [30, 39],
1022
- red: [31, 39],
1023
- green: [32, 39],
1024
- yellow: [33, 39],
1025
- blue: [34, 39],
1026
- magenta: [35, 39],
1027
- cyan: [36, 39],
1028
- white: [37, 39],
1029
- // Bright color
1030
- blackBright: [90, 39],
1031
- gray: [90, 39],
1032
- // Alias of `blackBright`
1033
- grey: [90, 39],
1034
- // Alias of `blackBright`
1035
- redBright: [91, 39],
1036
- greenBright: [92, 39],
1037
- yellowBright: [93, 39],
1038
- blueBright: [94, 39],
1039
- magentaBright: [95, 39],
1040
- cyanBright: [96, 39],
1041
- whiteBright: [97, 39]
1042
- },
1043
- bgColor: {
1044
- bgBlack: [40, 49],
1045
- bgRed: [41, 49],
1046
- bgGreen: [42, 49],
1047
- bgYellow: [43, 49],
1048
- bgBlue: [44, 49],
1049
- bgMagenta: [45, 49],
1050
- bgCyan: [46, 49],
1051
- bgWhite: [47, 49],
1052
- // Bright color
1053
- bgBlackBright: [100, 49],
1054
- bgGray: [100, 49],
1055
- // Alias of `bgBlackBright`
1056
- bgGrey: [100, 49],
1057
- // Alias of `bgBlackBright`
1058
- bgRedBright: [101, 49],
1059
- bgGreenBright: [102, 49],
1060
- bgYellowBright: [103, 49],
1061
- bgBlueBright: [104, 49],
1062
- bgMagentaBright: [105, 49],
1063
- bgCyanBright: [106, 49],
1064
- bgWhiteBright: [107, 49]
1065
- }
1066
- };
1067
- Object.keys(styles.modifier);
1068
- var foregroundColorNames = Object.keys(styles.color);
1069
- var backgroundColorNames = Object.keys(styles.bgColor);
1070
- [...foregroundColorNames, ...backgroundColorNames];
1071
- function assembleStyles() {
1072
- const codes = /* @__PURE__ */ new Map();
1073
- for (const [groupName, group] of Object.entries(styles)) {
1074
- for (const [styleName, style] of Object.entries(group)) {
1075
- styles[styleName] = {
1076
- open: `\x1B[${style[0]}m`,
1077
- close: `\x1B[${style[1]}m`
1078
- };
1079
- group[styleName] = styles[styleName];
1080
- codes.set(style[0], style[1]);
1081
- }
1082
- Object.defineProperty(styles, groupName, {
1083
- value: group,
1084
- enumerable: false
1085
- });
1086
- }
1087
- Object.defineProperty(styles, "codes", {
1088
- value: codes,
1089
- enumerable: false
1090
- });
1091
- styles.color.close = "\x1B[39m";
1092
- styles.bgColor.close = "\x1B[49m";
1093
- styles.color.ansi = wrapAnsi16();
1094
- styles.color.ansi256 = wrapAnsi256();
1095
- styles.color.ansi16m = wrapAnsi16m();
1096
- styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
1097
- styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
1098
- styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
1099
- Object.defineProperties(styles, {
1100
- rgbToAnsi256: {
1101
- value(red, green, blue) {
1102
- if (red === green && green === blue) {
1103
- if (red < 8) {
1104
- return 16;
1105
- }
1106
- if (red > 248) {
1107
- return 231;
1108
- }
1109
- return Math.round((red - 8) / 247 * 24) + 232;
1110
- }
1111
- return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
1112
- },
1113
- enumerable: false
1114
- },
1115
- hexToRgb: {
1116
- value(hex) {
1117
- const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
1118
- if (!matches) {
1119
- return [0, 0, 0];
1120
- }
1121
- let [colorString] = matches;
1122
- if (colorString.length === 3) {
1123
- colorString = [...colorString].map((character) => character + character).join("");
1124
- }
1125
- const integer = Number.parseInt(colorString, 16);
1126
- return [
1127
- /* eslint-disable no-bitwise */
1128
- integer >> 16 & 255,
1129
- integer >> 8 & 255,
1130
- integer & 255
1131
- /* eslint-enable no-bitwise */
1132
- ];
1133
- },
1134
- enumerable: false
1135
- },
1136
- hexToAnsi256: {
1137
- value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
1138
- enumerable: false
1139
- },
1140
- ansi256ToAnsi: {
1141
- value(code) {
1142
- if (code < 8) {
1143
- return 30 + code;
1144
- }
1145
- if (code < 16) {
1146
- return 90 + (code - 8);
1147
- }
1148
- let red;
1149
- let green;
1150
- let blue;
1151
- if (code >= 232) {
1152
- red = ((code - 232) * 10 + 8) / 255;
1153
- green = red;
1154
- blue = red;
1155
- } else {
1156
- code -= 16;
1157
- const remainder = code % 36;
1158
- red = Math.floor(code / 36) / 5;
1159
- green = Math.floor(remainder / 6) / 5;
1160
- blue = remainder % 6 / 5;
1161
- }
1162
- const value = Math.max(red, green, blue) * 2;
1163
- if (value === 0) {
1164
- return 30;
1165
- }
1166
- let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
1167
- if (value === 2) {
1168
- result += 60;
1169
- }
1170
- return result;
1171
- },
1172
- enumerable: false
1173
- },
1174
- rgbToAnsi: {
1175
- value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
1176
- enumerable: false
1177
- },
1178
- hexToAnsi: {
1179
- value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
1180
- enumerable: false
1181
- }
1182
- });
1183
- return styles;
1184
- }
1185
- var ansiStyles = assembleStyles();
1186
- var ansi_styles_default = ansiStyles;
1187
-
1188
- // node_modules/wrap-ansi/index.js
1189
- var ESCAPES = /* @__PURE__ */ new Set([
1190
- "\x1B",
1191
- "\x9B"
1192
- ]);
1193
- var END_CODE = 39;
1194
- var ANSI_ESCAPE_BELL = "\x07";
1195
- var ANSI_CSI = "[";
1196
- var ANSI_OSC = "]";
1197
- var ANSI_SGR_TERMINATOR = "m";
1198
- var ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;
1199
- var wrapAnsiCode = (code) => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;
1200
- var wrapAnsiHyperlink = (url) => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;
1201
- var wordLengths = (string) => string.split(" ").map((character) => stringWidth(character));
1202
- var wrapWord = (rows, word, columns) => {
1203
- const characters = [...word];
1204
- let isInsideEscape = false;
1205
- let isInsideLinkEscape = false;
1206
- let visible = stringWidth(stripAnsi(rows.at(-1)));
1207
- for (const [index, character] of characters.entries()) {
1208
- const characterLength = stringWidth(character);
1209
- if (visible + characterLength <= columns) {
1210
- rows[rows.length - 1] += character;
1211
- } else {
1212
- rows.push(character);
1213
- visible = 0;
1214
- }
1215
- if (ESCAPES.has(character)) {
1216
- isInsideEscape = true;
1217
- const ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join("");
1218
- isInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;
1219
- }
1220
- if (isInsideEscape) {
1221
- if (isInsideLinkEscape) {
1222
- if (character === ANSI_ESCAPE_BELL) {
1223
- isInsideEscape = false;
1224
- isInsideLinkEscape = false;
1225
- }
1226
- } else if (character === ANSI_SGR_TERMINATOR) {
1227
- isInsideEscape = false;
1228
- }
1229
- continue;
1230
- }
1231
- visible += characterLength;
1232
- if (visible === columns && index < characters.length - 1) {
1233
- rows.push("");
1234
- visible = 0;
1235
- }
1236
- }
1237
- if (!visible && rows.at(-1).length > 0 && rows.length > 1) {
1238
- rows[rows.length - 2] += rows.pop();
1239
- }
1240
- };
1241
- var stringVisibleTrimSpacesRight = (string) => {
1242
- const words = string.split(" ");
1243
- let last = words.length;
1244
- while (last > 0) {
1245
- if (stringWidth(words[last - 1]) > 0) {
1246
- break;
1247
- }
1248
- last--;
1249
- }
1250
- if (last === words.length) {
1251
- return string;
1252
- }
1253
- return words.slice(0, last).join(" ") + words.slice(last).join("");
1254
- };
1255
- var exec = (string, columns, options = {}) => {
1256
- if (options.trim !== false && string.trim() === "") {
1257
- return "";
1258
- }
1259
- let returnValue = "";
1260
- let escapeCode;
1261
- let escapeUrl;
1262
- const lengths = wordLengths(string);
1263
- let rows = [""];
1264
- for (const [index, word] of string.split(" ").entries()) {
1265
- if (options.trim !== false) {
1266
- rows[rows.length - 1] = rows.at(-1).trimStart();
1267
- }
1268
- let rowLength = stringWidth(rows.at(-1));
1269
- if (index !== 0) {
1270
- if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
1271
- rows.push("");
1272
- rowLength = 0;
1273
- }
1274
- if (rowLength > 0 || options.trim === false) {
1275
- rows[rows.length - 1] += " ";
1276
- rowLength++;
1277
- }
1278
- }
1279
- if (options.hard && lengths[index] > columns) {
1280
- const remainingColumns = columns - rowLength;
1281
- const breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);
1282
- const breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);
1283
- if (breaksStartingNextLine < breaksStartingThisLine) {
1284
- rows.push("");
1285
- }
1286
- wrapWord(rows, word, columns);
1287
- continue;
1288
- }
1289
- if (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {
1290
- if (options.wordWrap === false && rowLength < columns) {
1291
- wrapWord(rows, word, columns);
1292
- continue;
1293
- }
1294
- rows.push("");
1295
- }
1296
- if (rowLength + lengths[index] > columns && options.wordWrap === false) {
1297
- wrapWord(rows, word, columns);
1298
- continue;
1299
- }
1300
- rows[rows.length - 1] += word;
1301
- }
1302
- if (options.trim !== false) {
1303
- rows = rows.map((row) => stringVisibleTrimSpacesRight(row));
1304
- }
1305
- const preString = rows.join("\n");
1306
- const pre = [...preString];
1307
- let preStringIndex = 0;
1308
- for (const [index, character] of pre.entries()) {
1309
- returnValue += character;
1310
- if (ESCAPES.has(character)) {
1311
- const { groups } = new RegExp(`(?:\\${ANSI_CSI}(?<code>\\d+)m|\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || { groups: {} };
1312
- if (groups.code !== void 0) {
1313
- const code2 = Number.parseFloat(groups.code);
1314
- escapeCode = code2 === END_CODE ? void 0 : code2;
1315
- } else if (groups.uri !== void 0) {
1316
- escapeUrl = groups.uri.length === 0 ? void 0 : groups.uri;
1317
- }
1318
- }
1319
- const code = ansi_styles_default.codes.get(Number(escapeCode));
1320
- if (pre[index + 1] === "\n") {
1321
- if (escapeUrl) {
1322
- returnValue += wrapAnsiHyperlink("");
1323
- }
1324
- if (escapeCode && code) {
1325
- returnValue += wrapAnsiCode(code);
1326
- }
1327
- } else if (character === "\n") {
1328
- if (escapeCode && code) {
1329
- returnValue += wrapAnsiCode(escapeCode);
1330
- }
1331
- if (escapeUrl) {
1332
- returnValue += wrapAnsiHyperlink(escapeUrl);
1333
- }
1334
- }
1335
- preStringIndex += character.length;
1336
- }
1337
- return returnValue;
1338
- };
1339
- function wrapAnsi(string, columns, options) {
1340
- return String(string).normalize().replaceAll("\r\n", "\n").split("\n").map((line) => exec(line, columns, options)).join("\n");
1341
- }
1342
-
1343
- // node_modules/@inquirer/core/dist/lib/utils.js
1344
- function breakLines(content, width) {
1345
- return content.split("\n").flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true }).split("\n").map((str) => str.trimEnd())).join("\n");
1346
- }
1347
- function readlineWidth() {
1348
- return (0, import_cli_width.default)({ defaultWidth: 80, output: readline().output });
1349
- }
1350
-
1351
- // node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
1352
- function usePointerPosition({ active, renderedItems, pageSize, loop }) {
1353
- const state = useRef({
1354
- lastPointer: active,
1355
- lastActive: void 0
1356
- });
1357
- const { lastPointer, lastActive } = state.current;
1358
- const middle = Math.floor(pageSize / 2);
1359
- const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);
1360
- const defaultPointerPosition = renderedItems.slice(0, active).reduce((acc, item) => acc + item.length, 0);
1361
- let pointer = defaultPointerPosition;
1362
- if (renderedLength > pageSize) {
1363
- if (loop) {
1364
- pointer = lastPointer;
1365
- if (
1366
- // First render, skip this logic.
1367
- lastActive != null && // Only move the pointer down when the user moves down.
1368
- lastActive < active && // Check user didn't move up across page boundary.
1369
- active - lastActive < pageSize
1370
- ) {
1371
- pointer = Math.min(
1372
- // Furthest allowed position for the pointer is the middle of the list
1373
- middle,
1374
- Math.abs(active - lastActive) === 1 ? Math.min(
1375
- // Move the pointer at most the height of the last active item.
1376
- lastPointer + (renderedItems[lastActive]?.length ?? 0),
1377
- // If the user moved by one item, move the pointer to the natural position of the active item as
1378
- // long as it doesn't move the cursor up.
1379
- Math.max(defaultPointerPosition, lastPointer)
1380
- ) : (
1381
- // Otherwise, move the pointer down by the difference between the active and last active item.
1382
- lastPointer + active - lastActive
1383
- )
1384
- );
1385
- }
1386
- } else {
1387
- const spaceUnderActive = renderedItems.slice(active).reduce((acc, item) => acc + item.length, 0);
1388
- pointer = spaceUnderActive < pageSize - middle ? (
1389
- // If the active item is near the end of the list, progressively move the cursor towards the end.
1390
- pageSize - spaceUnderActive
1391
- ) : (
1392
- // Otherwise, progressively move the pointer to the middle of the list.
1393
- Math.min(defaultPointerPosition, middle)
1394
- );
1395
- }
1396
- }
1397
- state.current.lastPointer = pointer;
1398
- state.current.lastActive = active;
1399
- return pointer;
1400
- }
1401
- function usePagination({ items, active, renderItem, pageSize, loop = true }) {
1402
- const width = readlineWidth();
1403
- const bound = (num) => (num % items.length + items.length) % items.length;
1404
- const renderedItems = items.map((item, index) => {
1405
- if (item == null)
1406
- return [];
1407
- return breakLines(renderItem({ item, index, isActive: index === active }), width).split("\n");
1408
- });
1409
- const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);
1410
- const renderItemAtIndex = (index) => renderedItems[index] ?? [];
1411
- const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });
1412
- const activeItem = renderItemAtIndex(active).slice(0, pageSize);
1413
- const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;
1414
- const pageBuffer = Array.from({ length: pageSize });
1415
- pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);
1416
- const itemVisited = /* @__PURE__ */ new Set([active]);
1417
- let bufferPointer = activeItemPosition + activeItem.length;
1418
- let itemPointer = bound(active + 1);
1419
- while (bufferPointer < pageSize && !itemVisited.has(itemPointer) && (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {
1420
- const lines = renderItemAtIndex(itemPointer);
1421
- const linesToAdd = lines.slice(0, pageSize - bufferPointer);
1422
- pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);
1423
- itemVisited.add(itemPointer);
1424
- bufferPointer += linesToAdd.length;
1425
- itemPointer = bound(itemPointer + 1);
1426
- }
1427
- bufferPointer = activeItemPosition - 1;
1428
- itemPointer = bound(active - 1);
1429
- while (bufferPointer >= 0 && !itemVisited.has(itemPointer) && (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {
1430
- const lines = renderItemAtIndex(itemPointer);
1431
- const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));
1432
- pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);
1433
- itemVisited.add(itemPointer);
1434
- bufferPointer -= linesToAdd.length;
1435
- itemPointer = bound(itemPointer - 1);
1436
- }
1437
- return pageBuffer.filter((line) => typeof line === "string").join("\n");
1438
- }
1439
-
1440
- // node_modules/@inquirer/core/dist/lib/create-prompt.js
1441
- init_cjs_shims();
1442
- var import_mute_stream = __toESM(require_lib());
1443
-
1444
- // node_modules/signal-exit/dist/mjs/index.js
1445
- init_cjs_shims();
1446
-
1447
- // node_modules/signal-exit/dist/mjs/signals.js
1448
- init_cjs_shims();
1449
- var signals = [];
1450
- signals.push("SIGHUP", "SIGINT", "SIGTERM");
1451
- if (process.platform !== "win32") {
1452
- signals.push(
1453
- "SIGALRM",
1454
- "SIGABRT",
1455
- "SIGVTALRM",
1456
- "SIGXCPU",
1457
- "SIGXFSZ",
1458
- "SIGUSR2",
1459
- "SIGTRAP",
1460
- "SIGSYS",
1461
- "SIGQUIT",
1462
- "SIGIOT"
1463
- // should detect profiler and enable/disable accordingly.
1464
- // see #21
1465
- // 'SIGPROF'
1466
- );
1467
- }
1468
- if (process.platform === "linux") {
1469
- signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
1470
- }
1471
-
1472
- // node_modules/signal-exit/dist/mjs/index.js
1473
- var processOk = (process4) => !!process4 && typeof process4 === "object" && typeof process4.removeListener === "function" && typeof process4.emit === "function" && typeof process4.reallyExit === "function" && typeof process4.listeners === "function" && typeof process4.kill === "function" && typeof process4.pid === "number" && typeof process4.on === "function";
1474
- var kExitEmitter = /* @__PURE__ */ Symbol.for("signal-exit emitter");
1475
- var global = globalThis;
1476
- var ObjectDefineProperty = Object.defineProperty.bind(Object);
1477
- var Emitter = class {
1478
- constructor() {
1479
- __publicField(this, "emitted", {
1480
- afterExit: false,
1481
- exit: false
1482
- });
1483
- __publicField(this, "listeners", {
1484
- afterExit: [],
1485
- exit: []
1486
- });
1487
- __publicField(this, "count", 0);
1488
- __publicField(this, "id", Math.random());
1489
- if (global[kExitEmitter]) {
1490
- return global[kExitEmitter];
1491
- }
1492
- ObjectDefineProperty(global, kExitEmitter, {
1493
- value: this,
1494
- writable: false,
1495
- enumerable: false,
1496
- configurable: false
1497
- });
1498
- }
1499
- on(ev, fn) {
1500
- this.listeners[ev].push(fn);
1501
- }
1502
- removeListener(ev, fn) {
1503
- const list = this.listeners[ev];
1504
- const i = list.indexOf(fn);
1505
- if (i === -1) {
1506
- return;
1507
- }
1508
- if (i === 0 && list.length === 1) {
1509
- list.length = 0;
1510
- } else {
1511
- list.splice(i, 1);
1512
- }
1513
- }
1514
- emit(ev, code, signal) {
1515
- if (this.emitted[ev]) {
1516
- return false;
1517
- }
1518
- this.emitted[ev] = true;
1519
- let ret = false;
1520
- for (const fn of this.listeners[ev]) {
1521
- ret = fn(code, signal) === true || ret;
1522
- }
1523
- if (ev === "exit") {
1524
- ret = this.emit("afterExit", code, signal) || ret;
1525
- }
1526
- return ret;
1527
- }
1528
- };
1529
- var SignalExitBase = class {
1530
- };
1531
- var signalExitWrap = (handler) => {
1532
- return {
1533
- onExit(cb, opts) {
1534
- return handler.onExit(cb, opts);
1535
- },
1536
- load() {
1537
- return handler.load();
1538
- },
1539
- unload() {
1540
- return handler.unload();
1541
- }
1542
- };
1543
- };
1544
- var SignalExitFallback = class extends SignalExitBase {
1545
- onExit() {
1546
- return () => {
1547
- };
1548
- }
1549
- load() {
1550
- }
1551
- unload() {
1552
- }
1553
- };
1554
- var _hupSig, _emitter, _process, _originalProcessEmit, _originalProcessReallyExit, _sigListeners, _loaded, _SignalExit_instances, processReallyExit_fn, processEmit_fn;
1555
- var SignalExit = class extends SignalExitBase {
1556
- constructor(process4) {
1557
- super();
1558
- __privateAdd(this, _SignalExit_instances);
1559
- // "SIGHUP" throws an `ENOSYS` error on Windows,
1560
- // so use a supported signal instead
1561
- /* c8 ignore start */
1562
- __privateAdd(this, _hupSig, process3.platform === "win32" ? "SIGINT" : "SIGHUP");
1563
- /* c8 ignore stop */
1564
- __privateAdd(this, _emitter, new Emitter());
1565
- __privateAdd(this, _process);
1566
- __privateAdd(this, _originalProcessEmit);
1567
- __privateAdd(this, _originalProcessReallyExit);
1568
- __privateAdd(this, _sigListeners, {});
1569
- __privateAdd(this, _loaded, false);
1570
- __privateSet(this, _process, process4);
1571
- __privateSet(this, _sigListeners, {});
1572
- for (const sig of signals) {
1573
- __privateGet(this, _sigListeners)[sig] = () => {
1574
- const listeners = __privateGet(this, _process).listeners(sig);
1575
- let { count } = __privateGet(this, _emitter);
1576
- const p = process4;
1577
- if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
1578
- count += p.__signal_exit_emitter__.count;
1579
- }
1580
- if (listeners.length === count) {
1581
- this.unload();
1582
- const ret = __privateGet(this, _emitter).emit("exit", null, sig);
1583
- const s = sig === "SIGHUP" ? __privateGet(this, _hupSig) : sig;
1584
- if (!ret)
1585
- process4.kill(process4.pid, s);
1586
- }
1587
- };
1588
- }
1589
- __privateSet(this, _originalProcessReallyExit, process4.reallyExit);
1590
- __privateSet(this, _originalProcessEmit, process4.emit);
1591
- }
1592
- onExit(cb, opts) {
1593
- if (!processOk(__privateGet(this, _process))) {
1594
- return () => {
1595
- };
1596
- }
1597
- if (__privateGet(this, _loaded) === false) {
1598
- this.load();
1599
- }
1600
- const ev = opts?.alwaysLast ? "afterExit" : "exit";
1601
- __privateGet(this, _emitter).on(ev, cb);
1602
- return () => {
1603
- __privateGet(this, _emitter).removeListener(ev, cb);
1604
- if (__privateGet(this, _emitter).listeners["exit"].length === 0 && __privateGet(this, _emitter).listeners["afterExit"].length === 0) {
1605
- this.unload();
1606
- }
1607
- };
1608
- }
1609
- load() {
1610
- if (__privateGet(this, _loaded)) {
1611
- return;
1612
- }
1613
- __privateSet(this, _loaded, true);
1614
- __privateGet(this, _emitter).count += 1;
1615
- for (const sig of signals) {
1616
- try {
1617
- const fn = __privateGet(this, _sigListeners)[sig];
1618
- if (fn)
1619
- __privateGet(this, _process).on(sig, fn);
1620
- } catch (_) {
1621
- }
1622
- }
1623
- __privateGet(this, _process).emit = (ev, ...a) => {
1624
- return __privateMethod(this, _SignalExit_instances, processEmit_fn).call(this, ev, ...a);
1625
- };
1626
- __privateGet(this, _process).reallyExit = (code) => {
1627
- return __privateMethod(this, _SignalExit_instances, processReallyExit_fn).call(this, code);
1628
- };
1629
- }
1630
- unload() {
1631
- if (!__privateGet(this, _loaded)) {
1632
- return;
1633
- }
1634
- __privateSet(this, _loaded, false);
1635
- signals.forEach((sig) => {
1636
- const listener = __privateGet(this, _sigListeners)[sig];
1637
- if (!listener) {
1638
- throw new Error("Listener not defined for signal: " + sig);
1639
- }
1640
- try {
1641
- __privateGet(this, _process).removeListener(sig, listener);
1642
- } catch (_) {
1643
- }
1644
- });
1645
- __privateGet(this, _process).emit = __privateGet(this, _originalProcessEmit);
1646
- __privateGet(this, _process).reallyExit = __privateGet(this, _originalProcessReallyExit);
1647
- __privateGet(this, _emitter).count -= 1;
1648
- }
1649
- };
1650
- _hupSig = new WeakMap();
1651
- _emitter = new WeakMap();
1652
- _process = new WeakMap();
1653
- _originalProcessEmit = new WeakMap();
1654
- _originalProcessReallyExit = new WeakMap();
1655
- _sigListeners = new WeakMap();
1656
- _loaded = new WeakMap();
1657
- _SignalExit_instances = new WeakSet();
1658
- processReallyExit_fn = function(code) {
1659
- if (!processOk(__privateGet(this, _process))) {
1660
- return 0;
1661
- }
1662
- __privateGet(this, _process).exitCode = code || 0;
1663
- __privateGet(this, _emitter).emit("exit", __privateGet(this, _process).exitCode, null);
1664
- return __privateGet(this, _originalProcessReallyExit).call(__privateGet(this, _process), __privateGet(this, _process).exitCode);
1665
- };
1666
- processEmit_fn = function(ev, ...args) {
1667
- const og = __privateGet(this, _originalProcessEmit);
1668
- if (ev === "exit" && processOk(__privateGet(this, _process))) {
1669
- if (typeof args[0] === "number") {
1670
- __privateGet(this, _process).exitCode = args[0];
1671
- }
1672
- const ret = og.call(__privateGet(this, _process), ev, ...args);
1673
- __privateGet(this, _emitter).emit("exit", __privateGet(this, _process).exitCode, null);
1674
- return ret;
1675
- } else {
1676
- return og.call(__privateGet(this, _process), ev, ...args);
1677
- }
1678
- };
1679
- var process3 = globalThis.process;
1680
- var {
1681
- /**
1682
- * Called when the process is exiting, whether via signal, explicit
1683
- * exit, or running out of stuff to do.
1684
- *
1685
- * If the global process object is not suitable for instrumentation,
1686
- * then this will be a no-op.
1687
- *
1688
- * Returns a function that may be used to unload signal-exit.
1689
- */
1690
- onExit} = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback());
1691
-
1692
- // node_modules/@inquirer/core/dist/lib/screen-manager.js
1693
- init_cjs_shims();
1694
-
1695
- // node_modules/@inquirer/ansi/dist/index.js
1696
- init_cjs_shims();
1697
- var ESC = "\x1B[";
1698
- var cursorLeft = ESC + "G";
1699
- var cursorHide = ESC + "?25l";
1700
- var cursorShow = ESC + "?25h";
1701
- var cursorUp = (rows = 1) => rows > 0 ? `${ESC}${rows}A` : "";
1702
- var cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : "";
1703
- var cursorTo = (x, y) => {
1704
- return `${ESC}${x + 1}G`;
1705
- };
1706
- var eraseLine = ESC + "2K";
1707
- var eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : "";
1708
-
1709
- // node_modules/@inquirer/core/dist/lib/screen-manager.js
1710
- var height = (content) => content.split("\n").length;
1711
- var lastLine = (content) => content.split("\n").pop() ?? "";
1712
- var ScreenManager = class {
1713
- constructor(rl) {
1714
- // These variables are keeping information to allow correct prompt re-rendering
1715
- __publicField(this, "height", 0);
1716
- __publicField(this, "extraLinesUnderPrompt", 0);
1717
- __publicField(this, "cursorPos");
1718
- __publicField(this, "rl");
1719
- this.rl = rl;
1720
- this.cursorPos = rl.getCursorPos();
1721
- }
1722
- write(content) {
1723
- this.rl.output.unmute();
1724
- this.rl.output.write(content);
1725
- this.rl.output.mute();
1726
- }
1727
- render(content, bottomContent = "") {
1728
- const promptLine = lastLine(content);
1729
- const rawPromptLine = util.stripVTControlCharacters(promptLine);
1730
- let prompt = rawPromptLine;
1731
- if (this.rl.line.length > 0) {
1732
- prompt = prompt.slice(0, -this.rl.line.length);
1733
- }
1734
- this.rl.setPrompt(prompt);
1735
- this.cursorPos = this.rl.getCursorPos();
1736
- const width = readlineWidth();
1737
- content = breakLines(content, width);
1738
- bottomContent = breakLines(bottomContent, width);
1739
- if (rawPromptLine.length % width === 0) {
1740
- content += "\n";
1741
- }
1742
- let output = content + (bottomContent ? "\n" + bottomContent : "");
1743
- const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;
1744
- const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);
1745
- if (bottomContentHeight > 0)
1746
- output += cursorUp(bottomContentHeight);
1747
- output += cursorTo(this.cursorPos.cols);
1748
- this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);
1749
- this.extraLinesUnderPrompt = bottomContentHeight;
1750
- this.height = height(output);
1751
- }
1752
- checkCursorPos() {
1753
- const cursorPos = this.rl.getCursorPos();
1754
- if (cursorPos.cols !== this.cursorPos.cols) {
1755
- this.write(cursorTo(cursorPos.cols));
1756
- this.cursorPos = cursorPos;
1757
- }
1758
- }
1759
- done({ clearContent }) {
1760
- this.rl.setPrompt("");
1761
- let output = cursorDown(this.extraLinesUnderPrompt);
1762
- output += clearContent ? eraseLines(this.height) : "\n";
1763
- output += cursorShow;
1764
- this.write(output);
1765
- this.rl.close();
1766
- }
1767
- };
1768
-
1769
- // node_modules/@inquirer/core/dist/lib/promise-polyfill.js
1770
- init_cjs_shims();
1771
- var PromisePolyfill = class extends Promise {
1772
- // Available starting from Node 22
1773
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers
1774
- static withResolver() {
1775
- let resolve;
1776
- let reject;
1777
- const promise = new Promise((res, rej) => {
1778
- resolve = res;
1779
- reject = rej;
1780
- });
1781
- return { promise, resolve, reject };
1782
- }
1783
- };
1784
-
1785
- // node_modules/@inquirer/core/dist/lib/create-prompt.js
1786
- function getCallSites() {
1787
- const _prepareStackTrace = Error.prepareStackTrace;
1788
- let result = [];
1789
- try {
1790
- Error.prepareStackTrace = (_, callSites) => {
1791
- const callSitesWithoutCurrent = callSites.slice(1);
1792
- result = callSitesWithoutCurrent;
1793
- return callSitesWithoutCurrent;
1794
- };
1795
- new Error().stack;
1796
- } catch {
1797
- return result;
1798
- }
1799
- Error.prepareStackTrace = _prepareStackTrace;
1800
- return result;
1801
- }
1802
- function createPrompt(view) {
1803
- const callSites = getCallSites();
1804
- const prompt = (config, context = {}) => {
1805
- const { input = process.stdin, signal } = context;
1806
- const cleanups = /* @__PURE__ */ new Set();
1807
- const output = new import_mute_stream.default();
1808
- output.pipe(context.output ?? process.stdout);
1809
- const rl = readline2__namespace.createInterface({
1810
- terminal: true,
1811
- input,
1812
- output
1813
- });
1814
- const screen = new ScreenManager(rl);
1815
- const { promise, resolve, reject } = PromisePolyfill.withResolver();
1816
- const cancel = () => reject(new CancelPromptError());
1817
- if (signal) {
1818
- const abort = () => reject(new AbortPromptError({ cause: signal.reason }));
1819
- if (signal.aborted) {
1820
- abort();
1821
- return Object.assign(promise, { cancel });
1822
- }
1823
- signal.addEventListener("abort", abort);
1824
- cleanups.add(() => signal.removeEventListener("abort", abort));
1825
- }
1826
- cleanups.add(onExit((code, signal2) => {
1827
- reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal2}`));
1828
- }));
1829
- const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));
1830
- rl.on("SIGINT", sigint);
1831
- cleanups.add(() => rl.removeListener("SIGINT", sigint));
1832
- const checkCursorPos = () => screen.checkCursorPos();
1833
- rl.input.on("keypress", checkCursorPos);
1834
- cleanups.add(() => rl.input.removeListener("keypress", checkCursorPos));
1835
- return withHooks(rl, (cycle) => {
1836
- const hooksCleanup = async_hooks.AsyncResource.bind(() => effectScheduler.clearAll());
1837
- rl.on("close", hooksCleanup);
1838
- cleanups.add(() => rl.removeListener("close", hooksCleanup));
1839
- cycle(() => {
1840
- try {
1841
- const nextView = view(config, (value) => {
1842
- setImmediate(() => resolve(value));
1843
- });
1844
- if (nextView === void 0) {
1845
- const callerFilename = callSites[1]?.getFileName();
1846
- throw new Error(`Prompt functions must return a string.
1847
- at ${callerFilename}`);
1848
- }
1849
- const [content, bottomContent] = typeof nextView === "string" ? [nextView] : nextView;
1850
- screen.render(content, bottomContent);
1851
- effectScheduler.run();
1852
- } catch (error) {
1853
- reject(error);
1854
- }
1855
- });
1856
- return Object.assign(promise.then((answer) => {
1857
- effectScheduler.clearAll();
1858
- return answer;
1859
- }, (error) => {
1860
- effectScheduler.clearAll();
1861
- throw error;
1862
- }).finally(() => {
1863
- cleanups.forEach((cleanup) => cleanup());
1864
- screen.done({ clearContent: Boolean(context.clearPromptOnDone) });
1865
- output.end();
1866
- }).then(() => promise), { cancel });
1867
- });
1868
- };
1869
- return prompt;
1870
- }
1871
-
1872
- // node_modules/@inquirer/core/dist/lib/Separator.js
1873
- init_cjs_shims();
1874
- var Separator = class {
1875
- constructor(separator) {
1876
- __publicField(this, "separator", util.styleText("dim", Array.from({ length: 15 }).join(dist_default.line)));
1877
- __publicField(this, "type", "separator");
1878
- if (separator) {
1879
- this.separator = separator;
1880
- }
1881
- }
1882
- static isSeparator(choice) {
1883
- return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator");
1884
- }
1885
- };
1886
- var selectTheme = {
1887
- icon: { cursor: dist_default.pointer },
1888
- style: {
1889
- disabled: (text) => util.styleText("dim", `- ${text}`),
1890
- description: (text) => util.styleText("cyan", text),
1891
- keysHelpTip: (keys) => keys.map(([key, action]) => `${util.styleText("bold", key)} ${util.styleText("dim", action)}`).join(util.styleText("dim", " \u2022 "))
1892
- },
1893
- indexMode: "hidden",
1894
- keybindings: []
1895
- };
1896
- function isSelectable(item) {
1897
- return !Separator.isSeparator(item) && !item.disabled;
1898
- }
1899
- function normalizeChoices(choices) {
1900
- return choices.map((choice) => {
1901
- if (Separator.isSeparator(choice))
1902
- return choice;
1903
- if (typeof choice !== "object" || choice === null || !("value" in choice)) {
1904
- const name2 = String(choice);
1905
- return {
1906
- value: choice,
1907
- name: name2,
1908
- short: name2,
1909
- disabled: false
1910
- };
1911
- }
1912
- const name = choice.name ?? String(choice.value);
1913
- const normalizedChoice = {
1914
- value: choice.value,
1915
- name,
1916
- short: choice.short ?? name,
1917
- disabled: choice.disabled ?? false
1918
- };
1919
- if (choice.description) {
1920
- normalizedChoice.description = choice.description;
1921
- }
1922
- return normalizedChoice;
1923
- });
1924
- }
1925
- var dist_default2 = createPrompt((config, done) => {
1926
- const { loop = true, pageSize = 7 } = config;
1927
- const theme = makeTheme(selectTheme, config.theme);
1928
- const { keybindings } = theme;
1929
- const [status, setStatus] = useState("idle");
1930
- const prefix = usePrefix({ status, theme });
1931
- const searchTimeoutRef = useRef();
1932
- const searchEnabled = !keybindings.includes("vim");
1933
- const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);
1934
- const bounds = useMemo(() => {
1935
- const first = items.findIndex(isSelectable);
1936
- const last = items.findLastIndex(isSelectable);
1937
- if (first === -1) {
1938
- throw new ValidationError("[select prompt] No selectable choices. All choices are disabled.");
1939
- }
1940
- return { first, last };
1941
- }, [items]);
1942
- const defaultItemIndex = useMemo(() => {
1943
- if (!("default" in config))
1944
- return -1;
1945
- return items.findIndex((item) => isSelectable(item) && item.value === config.default);
1946
- }, [config.default, items]);
1947
- const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);
1948
- const selectedChoice = items[active];
1949
- useKeypress((key, rl) => {
1950
- clearTimeout(searchTimeoutRef.current);
1951
- if (isEnterKey(key)) {
1952
- setStatus("done");
1953
- done(selectedChoice.value);
1954
- } else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {
1955
- rl.clearLine(0);
1956
- if (loop || isUpKey(key, keybindings) && active !== bounds.first || isDownKey(key, keybindings) && active !== bounds.last) {
1957
- const offset = isUpKey(key, keybindings) ? -1 : 1;
1958
- let next = active;
1959
- do {
1960
- next = (next + offset + items.length) % items.length;
1961
- } while (!isSelectable(items[next]));
1962
- setActive(next);
1963
- }
1964
- } else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) {
1965
- const selectedIndex = Number(rl.line) - 1;
1966
- let selectableIndex = -1;
1967
- const position = items.findIndex((item2) => {
1968
- if (Separator.isSeparator(item2))
1969
- return false;
1970
- selectableIndex++;
1971
- return selectableIndex === selectedIndex;
1972
- });
1973
- const item = items[position];
1974
- if (item != null && isSelectable(item)) {
1975
- setActive(position);
1976
- }
1977
- searchTimeoutRef.current = setTimeout(() => {
1978
- rl.clearLine(0);
1979
- }, 700);
1980
- } else if (isBackspaceKey(key)) {
1981
- rl.clearLine(0);
1982
- } else if (searchEnabled) {
1983
- const searchTerm = rl.line.toLowerCase();
1984
- const matchIndex = items.findIndex((item) => {
1985
- if (Separator.isSeparator(item) || !isSelectable(item))
1986
- return false;
1987
- return item.name.toLowerCase().startsWith(searchTerm);
1988
- });
1989
- if (matchIndex !== -1) {
1990
- setActive(matchIndex);
1991
- }
1992
- searchTimeoutRef.current = setTimeout(() => {
1993
- rl.clearLine(0);
1994
- }, 700);
1995
- }
1996
- });
1997
- useEffect(() => () => {
1998
- clearTimeout(searchTimeoutRef.current);
1999
- }, []);
2000
- const message = theme.style.message(config.message, status);
2001
- const helpLine = theme.style.keysHelpTip([
2002
- ["\u2191\u2193", "navigate"],
2003
- ["\u23CE", "select"]
2004
- ]);
2005
- let separatorCount = 0;
2006
- const page = usePagination({
2007
- items,
2008
- active,
2009
- renderItem({ item, isActive, index }) {
2010
- if (Separator.isSeparator(item)) {
2011
- separatorCount++;
2012
- return ` ${item.separator}`;
2013
- }
2014
- const indexLabel = theme.indexMode === "number" ? `${index + 1 - separatorCount}. ` : "";
2015
- if (item.disabled) {
2016
- const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)";
2017
- return theme.style.disabled(`${indexLabel}${item.name} ${disabledLabel}`);
2018
- }
2019
- const color = isActive ? theme.style.highlight : (x) => x;
2020
- const cursor = isActive ? theme.icon.cursor : ` `;
2021
- return color(`${cursor} ${indexLabel}${item.name}`);
2022
- },
2023
- pageSize,
2024
- loop
2025
- });
2026
- if (status === "done") {
2027
- return [prefix, message, theme.style.answer(selectedChoice.short)].filter(Boolean).join(" ");
2028
- }
2029
- const { description } = selectedChoice;
2030
- const lines = [
2031
- [prefix, message].filter(Boolean).join(" "),
2032
- page,
2033
- " ",
2034
- description ? theme.style.description(description) : "",
2035
- helpLine
2036
- ].filter(Boolean).join("\n").trimEnd();
2037
- return `${lines}${cursorHide}`;
2038
- });
2039
17
  var program = new commander.Command();
2040
- program.name("nural").description("Nural Framework CLI").version("0.3.7");
18
+ program.name("nural").description("Nural Framework CLI").version("0.3.8");
2041
19
  program.command("new <project-name>").description("Create a new Nural project").action(async (projectName) => {
2042
20
  const projectPath = path__default.default.join(process.cwd(), projectName);
2043
21
  if (fs__default.default.existsSync(projectPath)) {
@@ -2046,22 +24,26 @@ program.command("new <project-name>").description("Create a new Nural project").
2046
24
  );
2047
25
  process.exit(1);
2048
26
  }
2049
- const framework = await dist_default2({
2050
- message: "Select a framework:",
2051
- choices: [
2052
- {
2053
- name: "express",
2054
- value: "express",
2055
- description: "Fast, unopinionated, minimalist web framework"
2056
- },
2057
- {
2058
- name: "fastify",
2059
- value: "fastify",
2060
- description: "Fast and low overhead web framework"
2061
- }
2062
- ],
2063
- default: "express"
2064
- });
27
+ const { framework } = await inquirer__default.default.prompt([
28
+ {
29
+ type: "list",
30
+ name: "framework",
31
+ message: "Select a framework (express/fastify):",
32
+ choices: [
33
+ {
34
+ name: "express",
35
+ value: "express",
36
+ description: "Fast, unopinionated, minimalist web framework"
37
+ },
38
+ {
39
+ name: "fastify",
40
+ value: "fastify",
41
+ description: "Fast and low overhead web framework"
42
+ }
43
+ ],
44
+ default: "express"
45
+ }
46
+ ]);
2065
47
  console.log(
2066
48
  chalk__default.default.blue(`
2067
49
  Initializing new Nural project in ${projectName}...`)
@@ -2080,7 +62,7 @@ Initializing new Nural project in ${projectName}...`)
2080
62
  start: "node dist/index.js"
2081
63
  },
2082
64
  dependencies: {
2083
- nural: "^0.3.7",
65
+ nural: "^0.3.8",
2084
66
  [framework]: framework === "express" ? "^5.0.0" : "^5.0.0",
2085
67
  // Using explicit versions for peer deps
2086
68
  zod: "^3.22.4"