@storybook/cli 9.2.0-alpha.2 → 10.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1874 @@
1
+ import CJS_COMPAT_NODE_URL_b1o87kp8bws from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_b1o87kp8bws from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_b1o87kp8bws from "node:module";
4
+
5
+ var __filename = CJS_COMPAT_NODE_URL_b1o87kp8bws.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_b1o87kp8bws.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_b1o87kp8bws.createRequire(import.meta.url);
8
+
9
+ // ------------------------------------------------------------
10
+ // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
+ // ------------------------------------------------------------
12
+ import {
13
+ globby,
14
+ globbySync
15
+ } from "./chunk-B7KJR623.js";
16
+ import {
17
+ require_semver
18
+ } from "./chunk-6FABMYLL.js";
19
+ import {
20
+ __commonJS,
21
+ __name,
22
+ __toESM
23
+ } from "./chunk-7JKBAKCF.js";
24
+
25
+ // ../../node_modules/picocolors/picocolors.js
26
+ var require_picocolors = __commonJS({
27
+ "../../node_modules/picocolors/picocolors.js"(exports, module) {
28
+ var p = process || {};
29
+ var argv = p.argv || [];
30
+ var env2 = p.env || {};
31
+ var isColorSupported = !(!!env2.NO_COLOR || argv.includes("--no-color")) && (!!env2.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || (p.stdout || {}).isTTY && env2.TERM !== "dumb" || !!env2.CI);
32
+ var formatter = /* @__PURE__ */ __name((open, close, replace = open) => (input) => {
33
+ let string = "" + input, index = string.indexOf(close, open.length);
34
+ return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
35
+ }, "formatter");
36
+ var replaceClose = /* @__PURE__ */ __name((string, close, replace, index) => {
37
+ let result = "", cursor = 0;
38
+ do {
39
+ result += string.substring(cursor, index) + replace;
40
+ cursor = index + close.length;
41
+ index = string.indexOf(close, cursor);
42
+ } while (~index);
43
+ return result + string.substring(cursor);
44
+ }, "replaceClose");
45
+ var createColors = /* @__PURE__ */ __name((enabled = isColorSupported) => {
46
+ let f = enabled ? formatter : () => String;
47
+ return {
48
+ isColorSupported: enabled,
49
+ reset: f("\x1B[0m", "\x1B[0m"),
50
+ bold: f("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
51
+ dim: f("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
52
+ italic: f("\x1B[3m", "\x1B[23m"),
53
+ underline: f("\x1B[4m", "\x1B[24m"),
54
+ inverse: f("\x1B[7m", "\x1B[27m"),
55
+ hidden: f("\x1B[8m", "\x1B[28m"),
56
+ strikethrough: f("\x1B[9m", "\x1B[29m"),
57
+ black: f("\x1B[30m", "\x1B[39m"),
58
+ red: f("\x1B[31m", "\x1B[39m"),
59
+ green: f("\x1B[32m", "\x1B[39m"),
60
+ yellow: f("\x1B[33m", "\x1B[39m"),
61
+ blue: f("\x1B[34m", "\x1B[39m"),
62
+ magenta: f("\x1B[35m", "\x1B[39m"),
63
+ cyan: f("\x1B[36m", "\x1B[39m"),
64
+ white: f("\x1B[37m", "\x1B[39m"),
65
+ gray: f("\x1B[90m", "\x1B[39m"),
66
+ bgBlack: f("\x1B[40m", "\x1B[49m"),
67
+ bgRed: f("\x1B[41m", "\x1B[49m"),
68
+ bgGreen: f("\x1B[42m", "\x1B[49m"),
69
+ bgYellow: f("\x1B[43m", "\x1B[49m"),
70
+ bgBlue: f("\x1B[44m", "\x1B[49m"),
71
+ bgMagenta: f("\x1B[45m", "\x1B[49m"),
72
+ bgCyan: f("\x1B[46m", "\x1B[49m"),
73
+ bgWhite: f("\x1B[47m", "\x1B[49m"),
74
+ blackBright: f("\x1B[90m", "\x1B[39m"),
75
+ redBright: f("\x1B[91m", "\x1B[39m"),
76
+ greenBright: f("\x1B[92m", "\x1B[39m"),
77
+ yellowBright: f("\x1B[93m", "\x1B[39m"),
78
+ blueBright: f("\x1B[94m", "\x1B[39m"),
79
+ magentaBright: f("\x1B[95m", "\x1B[39m"),
80
+ cyanBright: f("\x1B[96m", "\x1B[39m"),
81
+ whiteBright: f("\x1B[97m", "\x1B[39m"),
82
+ bgBlackBright: f("\x1B[100m", "\x1B[49m"),
83
+ bgRedBright: f("\x1B[101m", "\x1B[49m"),
84
+ bgGreenBright: f("\x1B[102m", "\x1B[49m"),
85
+ bgYellowBright: f("\x1B[103m", "\x1B[49m"),
86
+ bgBlueBright: f("\x1B[104m", "\x1B[49m"),
87
+ bgMagentaBright: f("\x1B[105m", "\x1B[49m"),
88
+ bgCyanBright: f("\x1B[106m", "\x1B[49m"),
89
+ bgWhiteBright: f("\x1B[107m", "\x1B[49m")
90
+ };
91
+ }, "createColors");
92
+ module.exports = createColors();
93
+ module.exports.createColors = createColors;
94
+ }
95
+ });
96
+
97
+ // ../../node_modules/eastasianwidth/eastasianwidth.js
98
+ var require_eastasianwidth = __commonJS({
99
+ "../../node_modules/eastasianwidth/eastasianwidth.js"(exports, module) {
100
+ var eaw = {};
101
+ if ("undefined" == typeof module) {
102
+ window.eastasianwidth = eaw;
103
+ } else {
104
+ module.exports = eaw;
105
+ }
106
+ eaw.eastAsianWidth = function(character) {
107
+ var x = character.charCodeAt(0);
108
+ var y = character.length == 2 ? character.charCodeAt(1) : 0;
109
+ var codePoint = x;
110
+ if (55296 <= x && x <= 56319 && (56320 <= y && y <= 57343)) {
111
+ x &= 1023;
112
+ y &= 1023;
113
+ codePoint = x << 10 | y;
114
+ codePoint += 65536;
115
+ }
116
+ if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
117
+ return "F";
118
+ }
119
+ if (8361 == codePoint || 65377 <= codePoint && codePoint <= 65470 || 65474 <= codePoint && codePoint <= 65479 || 65482 <= codePoint && codePoint <= 65487 || 65490 <= codePoint && codePoint <= 65495 || 65498 <= codePoint && codePoint <= 65500 || 65512 <= codePoint && codePoint <= 65518) {
120
+ return "H";
121
+ }
122
+ if (4352 <= codePoint && codePoint <= 4447 || 4515 <= codePoint && codePoint <= 4519 || 4602 <= codePoint && codePoint <= 4607 || 9001 <= codePoint && codePoint <= 9002 || 11904 <= codePoint && codePoint <= 11929 || 11931 <= codePoint && codePoint <= 12019 || 12032 <= codePoint && codePoint <= 12245 || 12272 <= codePoint && codePoint <= 12283 || 12289 <= codePoint && codePoint <= 12350 || 12353 <= codePoint && codePoint <= 12438 || 12441 <= codePoint && codePoint <= 12543 || 12549 <= codePoint && codePoint <= 12589 || 12593 <= codePoint && codePoint <= 12686 || 12688 <= codePoint && codePoint <= 12730 || 12736 <= codePoint && codePoint <= 12771 || 12784 <= codePoint && codePoint <= 12830 || 12832 <= codePoint && codePoint <= 12871 || 12880 <= codePoint && codePoint <= 13054 || 13056 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42124 || 42128 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 55216 <= codePoint && codePoint <= 55238 || 55243 <= codePoint && codePoint <= 55291 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65106 || 65108 <= codePoint && codePoint <= 65126 || 65128 <= codePoint && codePoint <= 65131 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127490 || 127504 <= codePoint && codePoint <= 127546 || 127552 <= codePoint && codePoint <= 127560 || 127568 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 194367 || 177984 <= codePoint && codePoint <= 196605 || 196608 <= codePoint && codePoint <= 262141) {
123
+ return "W";
124
+ }
125
+ if (32 <= codePoint && codePoint <= 126 || 162 <= codePoint && codePoint <= 163 || 165 <= codePoint && codePoint <= 166 || 172 == codePoint || 175 == codePoint || 10214 <= codePoint && codePoint <= 10221 || 10629 <= codePoint && codePoint <= 10630) {
126
+ return "Na";
127
+ }
128
+ if (161 == codePoint || 164 == codePoint || 167 <= codePoint && codePoint <= 168 || 170 == codePoint || 173 <= codePoint && codePoint <= 174 || 176 <= codePoint && codePoint <= 180 || 182 <= codePoint && codePoint <= 186 || 188 <= codePoint && codePoint <= 191 || 198 == codePoint || 208 == codePoint || 215 <= codePoint && codePoint <= 216 || 222 <= codePoint && codePoint <= 225 || 230 == codePoint || 232 <= codePoint && codePoint <= 234 || 236 <= codePoint && codePoint <= 237 || 240 == codePoint || 242 <= codePoint && codePoint <= 243 || 247 <= codePoint && codePoint <= 250 || 252 == codePoint || 254 == codePoint || 257 == codePoint || 273 == codePoint || 275 == codePoint || 283 == codePoint || 294 <= codePoint && codePoint <= 295 || 299 == codePoint || 305 <= codePoint && codePoint <= 307 || 312 == codePoint || 319 <= codePoint && codePoint <= 322 || 324 == codePoint || 328 <= codePoint && codePoint <= 331 || 333 == codePoint || 338 <= codePoint && codePoint <= 339 || 358 <= codePoint && codePoint <= 359 || 363 == codePoint || 462 == codePoint || 464 == codePoint || 466 == codePoint || 468 == codePoint || 470 == codePoint || 472 == codePoint || 474 == codePoint || 476 == codePoint || 593 == codePoint || 609 == codePoint || 708 == codePoint || 711 == codePoint || 713 <= codePoint && codePoint <= 715 || 717 == codePoint || 720 == codePoint || 728 <= codePoint && codePoint <= 731 || 733 == codePoint || 735 == codePoint || 768 <= codePoint && codePoint <= 879 || 913 <= codePoint && codePoint <= 929 || 931 <= codePoint && codePoint <= 937 || 945 <= codePoint && codePoint <= 961 || 963 <= codePoint && codePoint <= 969 || 1025 == codePoint || 1040 <= codePoint && codePoint <= 1103 || 1105 == codePoint || 8208 == codePoint || 8211 <= codePoint && codePoint <= 8214 || 8216 <= codePoint && codePoint <= 8217 || 8220 <= codePoint && codePoint <= 8221 || 8224 <= codePoint && codePoint <= 8226 || 8228 <= codePoint && codePoint <= 8231 || 8240 == codePoint || 8242 <= codePoint && codePoint <= 8243 || 8245 == codePoint || 8251 == codePoint || 8254 == codePoint || 8308 == codePoint || 8319 == codePoint || 8321 <= codePoint && codePoint <= 8324 || 8364 == codePoint || 8451 == codePoint || 8453 == codePoint || 8457 == codePoint || 8467 == codePoint || 8470 == codePoint || 8481 <= codePoint && codePoint <= 8482 || 8486 == codePoint || 8491 == codePoint || 8531 <= codePoint && codePoint <= 8532 || 8539 <= codePoint && codePoint <= 8542 || 8544 <= codePoint && codePoint <= 8555 || 8560 <= codePoint && codePoint <= 8569 || 8585 == codePoint || 8592 <= codePoint && codePoint <= 8601 || 8632 <= codePoint && codePoint <= 8633 || 8658 == codePoint || 8660 == codePoint || 8679 == codePoint || 8704 == codePoint || 8706 <= codePoint && codePoint <= 8707 || 8711 <= codePoint && codePoint <= 8712 || 8715 == codePoint || 8719 == codePoint || 8721 == codePoint || 8725 == codePoint || 8730 == codePoint || 8733 <= codePoint && codePoint <= 8736 || 8739 == codePoint || 8741 == codePoint || 8743 <= codePoint && codePoint <= 8748 || 8750 == codePoint || 8756 <= codePoint && codePoint <= 8759 || 8764 <= codePoint && codePoint <= 8765 || 8776 == codePoint || 8780 == codePoint || 8786 == codePoint || 8800 <= codePoint && codePoint <= 8801 || 8804 <= codePoint && codePoint <= 8807 || 8810 <= codePoint && codePoint <= 8811 || 8814 <= codePoint && codePoint <= 8815 || 8834 <= codePoint && codePoint <= 8835 || 8838 <= codePoint && codePoint <= 8839 || 8853 == codePoint || 8857 == codePoint || 8869 == codePoint || 8895 == codePoint || 8978 == codePoint || 9312 <= codePoint && codePoint <= 9449 || 9451 <= codePoint && codePoint <= 9547 || 9552 <= codePoint && codePoint <= 9587 || 9600 <= codePoint && codePoint <= 9615 || 9618 <= codePoint && codePoint <= 9621 || 9632 <= codePoint && codePoint <= 9633 || 9635 <= codePoint && codePoint <= 9641 || 9650 <= codePoint && codePoint <= 9651 || 9654 <= codePoint && codePoint <= 9655 || 9660 <= codePoint && codePoint <= 9661 || 9664 <= codePoint && codePoint <= 9665 || 9670 <= codePoint && codePoint <= 9672 || 9675 == codePoint || 9678 <= codePoint && codePoint <= 9681 || 9698 <= codePoint && codePoint <= 9701 || 9711 == codePoint || 9733 <= codePoint && codePoint <= 9734 || 9737 == codePoint || 9742 <= codePoint && codePoint <= 9743 || 9748 <= codePoint && codePoint <= 9749 || 9756 == codePoint || 9758 == codePoint || 9792 == codePoint || 9794 == codePoint || 9824 <= codePoint && codePoint <= 9825 || 9827 <= codePoint && codePoint <= 9829 || 9831 <= codePoint && codePoint <= 9834 || 9836 <= codePoint && codePoint <= 9837 || 9839 == codePoint || 9886 <= codePoint && codePoint <= 9887 || 9918 <= codePoint && codePoint <= 9919 || 9924 <= codePoint && codePoint <= 9933 || 9935 <= codePoint && codePoint <= 9953 || 9955 == codePoint || 9960 <= codePoint && codePoint <= 9983 || 10045 == codePoint || 10071 == codePoint || 10102 <= codePoint && codePoint <= 10111 || 11093 <= codePoint && codePoint <= 11097 || 12872 <= codePoint && codePoint <= 12879 || 57344 <= codePoint && codePoint <= 63743 || 65024 <= codePoint && codePoint <= 65039 || 65533 == codePoint || 127232 <= codePoint && codePoint <= 127242 || 127248 <= codePoint && codePoint <= 127277 || 127280 <= codePoint && codePoint <= 127337 || 127344 <= codePoint && codePoint <= 127386 || 917760 <= codePoint && codePoint <= 917999 || 983040 <= codePoint && codePoint <= 1048573 || 1048576 <= codePoint && codePoint <= 1114109) {
129
+ return "A";
130
+ }
131
+ return "N";
132
+ };
133
+ eaw.characterLength = function(character) {
134
+ var code = this.eastAsianWidth(character);
135
+ if (code == "F" || code == "W" || code == "A") {
136
+ return 2;
137
+ } else {
138
+ return 1;
139
+ }
140
+ };
141
+ function stringToArray(string) {
142
+ return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
143
+ }
144
+ __name(stringToArray, "stringToArray");
145
+ eaw.length = function(string) {
146
+ var characters = stringToArray(string);
147
+ var len = 0;
148
+ for (var i = 0; i < characters.length; i++) {
149
+ len = len + this.characterLength(characters[i]);
150
+ }
151
+ return len;
152
+ };
153
+ eaw.slice = function(text, start, end) {
154
+ textLen = eaw.length(text);
155
+ start = start ? start : 0;
156
+ end = end ? end : 1;
157
+ if (start < 0) {
158
+ start = textLen + start;
159
+ }
160
+ if (end < 0) {
161
+ end = textLen + end;
162
+ }
163
+ var result = "";
164
+ var eawLen = 0;
165
+ var chars = stringToArray(text);
166
+ for (var i = 0; i < chars.length; i++) {
167
+ var char = chars[i];
168
+ var charLen = eaw.length(char);
169
+ if (eawLen >= start - (charLen == 2 ? 1 : 0)) {
170
+ if (eawLen + charLen <= end) {
171
+ result += char;
172
+ } else {
173
+ break;
174
+ }
175
+ }
176
+ eawLen += charLen;
177
+ }
178
+ return result;
179
+ };
180
+ }
181
+ });
182
+
183
+ // ../../node_modules/emoji-regex/index.js
184
+ var require_emoji_regex = __commonJS({
185
+ "../../node_modules/emoji-regex/index.js"(exports, module) {
186
+ "use strict";
187
+ module.exports = function() {
188
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
189
+ };
190
+ }
191
+ });
192
+
193
+ // ../../node_modules/cli-boxes/boxes.json
194
+ var require_boxes = __commonJS({
195
+ "../../node_modules/cli-boxes/boxes.json"(exports, module) {
196
+ module.exports = {
197
+ single: {
198
+ topLeft: "\u250C",
199
+ top: "\u2500",
200
+ topRight: "\u2510",
201
+ right: "\u2502",
202
+ bottomRight: "\u2518",
203
+ bottom: "\u2500",
204
+ bottomLeft: "\u2514",
205
+ left: "\u2502"
206
+ },
207
+ double: {
208
+ topLeft: "\u2554",
209
+ top: "\u2550",
210
+ topRight: "\u2557",
211
+ right: "\u2551",
212
+ bottomRight: "\u255D",
213
+ bottom: "\u2550",
214
+ bottomLeft: "\u255A",
215
+ left: "\u2551"
216
+ },
217
+ round: {
218
+ topLeft: "\u256D",
219
+ top: "\u2500",
220
+ topRight: "\u256E",
221
+ right: "\u2502",
222
+ bottomRight: "\u256F",
223
+ bottom: "\u2500",
224
+ bottomLeft: "\u2570",
225
+ left: "\u2502"
226
+ },
227
+ bold: {
228
+ topLeft: "\u250F",
229
+ top: "\u2501",
230
+ topRight: "\u2513",
231
+ right: "\u2503",
232
+ bottomRight: "\u251B",
233
+ bottom: "\u2501",
234
+ bottomLeft: "\u2517",
235
+ left: "\u2503"
236
+ },
237
+ singleDouble: {
238
+ topLeft: "\u2553",
239
+ top: "\u2500",
240
+ topRight: "\u2556",
241
+ right: "\u2551",
242
+ bottomRight: "\u255C",
243
+ bottom: "\u2500",
244
+ bottomLeft: "\u2559",
245
+ left: "\u2551"
246
+ },
247
+ doubleSingle: {
248
+ topLeft: "\u2552",
249
+ top: "\u2550",
250
+ topRight: "\u2555",
251
+ right: "\u2502",
252
+ bottomRight: "\u255B",
253
+ bottom: "\u2550",
254
+ bottomLeft: "\u2558",
255
+ left: "\u2502"
256
+ },
257
+ classic: {
258
+ topLeft: "+",
259
+ top: "-",
260
+ topRight: "+",
261
+ right: "|",
262
+ bottomRight: "+",
263
+ bottom: "-",
264
+ bottomLeft: "+",
265
+ left: "|"
266
+ },
267
+ arrow: {
268
+ topLeft: "\u2198",
269
+ top: "\u2193",
270
+ topRight: "\u2199",
271
+ right: "\u2190",
272
+ bottomRight: "\u2196",
273
+ bottom: "\u2191",
274
+ bottomLeft: "\u2197",
275
+ left: "\u2192"
276
+ }
277
+ };
278
+ }
279
+ });
280
+
281
+ // ../../node_modules/cli-boxes/index.js
282
+ var require_cli_boxes = __commonJS({
283
+ "../../node_modules/cli-boxes/index.js"(exports, module) {
284
+ "use strict";
285
+ var cliBoxes2 = require_boxes();
286
+ module.exports = cliBoxes2;
287
+ module.exports.default = cliBoxes2;
288
+ }
289
+ });
290
+
291
+ // ../../node_modules/string-width/node_modules/ansi-regex/index.js
292
+ var require_ansi_regex = __commonJS({
293
+ "../../node_modules/string-width/node_modules/ansi-regex/index.js"(exports, module) {
294
+ "use strict";
295
+ module.exports = ({ onlyFirst = false } = {}) => {
296
+ const pattern = [
297
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
298
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
299
+ ].join("|");
300
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
301
+ };
302
+ }
303
+ });
304
+
305
+ // ../../node_modules/string-width/node_modules/strip-ansi/index.js
306
+ var require_strip_ansi = __commonJS({
307
+ "../../node_modules/string-width/node_modules/strip-ansi/index.js"(exports, module) {
308
+ "use strict";
309
+ var ansiRegex2 = require_ansi_regex();
310
+ module.exports = (string) => typeof string === "string" ? string.replace(ansiRegex2(), "") : string;
311
+ }
312
+ });
313
+
314
+ // ../../node_modules/is-fullwidth-code-point/index.js
315
+ var require_is_fullwidth_code_point = __commonJS({
316
+ "../../node_modules/is-fullwidth-code-point/index.js"(exports, module) {
317
+ "use strict";
318
+ var isFullwidthCodePoint = /* @__PURE__ */ __name((codePoint) => {
319
+ if (Number.isNaN(codePoint)) {
320
+ return false;
321
+ }
322
+ if (codePoint >= 4352 && (codePoint <= 4447 || // Hangul Jamo
323
+ codePoint === 9001 || // LEFT-POINTING ANGLE BRACKET
324
+ codePoint === 9002 || // RIGHT-POINTING ANGLE BRACKET
325
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
326
+ 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
327
+ 12880 <= codePoint && codePoint <= 19903 || // CJK Unified Ideographs .. Yi Radicals
328
+ 19968 <= codePoint && codePoint <= 42182 || // Hangul Jamo Extended-A
329
+ 43360 <= codePoint && codePoint <= 43388 || // Hangul Syllables
330
+ 44032 <= codePoint && codePoint <= 55203 || // CJK Compatibility Ideographs
331
+ 63744 <= codePoint && codePoint <= 64255 || // Vertical Forms
332
+ 65040 <= codePoint && codePoint <= 65049 || // CJK Compatibility Forms .. Small Form Variants
333
+ 65072 <= codePoint && codePoint <= 65131 || // Halfwidth and Fullwidth Forms
334
+ 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || // Kana Supplement
335
+ 110592 <= codePoint && codePoint <= 110593 || // Enclosed Ideographic Supplement
336
+ 127488 <= codePoint && codePoint <= 127569 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
337
+ 131072 <= codePoint && codePoint <= 262141)) {
338
+ return true;
339
+ }
340
+ return false;
341
+ }, "isFullwidthCodePoint");
342
+ module.exports = isFullwidthCodePoint;
343
+ module.exports.default = isFullwidthCodePoint;
344
+ }
345
+ });
346
+
347
+ // ../../node_modules/string-width/node_modules/emoji-regex/index.js
348
+ var require_emoji_regex2 = __commonJS({
349
+ "../../node_modules/string-width/node_modules/emoji-regex/index.js"(exports, module) {
350
+ "use strict";
351
+ module.exports = function() {
352
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
353
+ };
354
+ }
355
+ });
356
+
357
+ // ../../node_modules/string-width/index.js
358
+ var require_string_width = __commonJS({
359
+ "../../node_modules/string-width/index.js"(exports, module) {
360
+ "use strict";
361
+ var stripAnsi2 = require_strip_ansi();
362
+ var isFullwidthCodePoint = require_is_fullwidth_code_point();
363
+ var emojiRegex3 = require_emoji_regex2();
364
+ var stringWidth3 = /* @__PURE__ */ __name((string) => {
365
+ if (typeof string !== "string" || string.length === 0) {
366
+ return 0;
367
+ }
368
+ string = stripAnsi2(string);
369
+ if (string.length === 0) {
370
+ return 0;
371
+ }
372
+ string = string.replace(emojiRegex3(), " ");
373
+ let width = 0;
374
+ for (let i = 0; i < string.length; i++) {
375
+ const code = string.codePointAt(i);
376
+ if (code <= 31 || code >= 127 && code <= 159) {
377
+ continue;
378
+ }
379
+ if (code >= 768 && code <= 879) {
380
+ continue;
381
+ }
382
+ if (code > 65535) {
383
+ i++;
384
+ }
385
+ width += isFullwidthCodePoint(code) ? 2 : 1;
386
+ }
387
+ return width;
388
+ }, "stringWidth");
389
+ module.exports = stringWidth3;
390
+ module.exports.default = stringWidth3;
391
+ }
392
+ });
393
+
394
+ // ../../node_modules/ansi-align/index.js
395
+ var require_ansi_align = __commonJS({
396
+ "../../node_modules/ansi-align/index.js"(exports, module) {
397
+ "use strict";
398
+ var stringWidth3 = require_string_width();
399
+ function ansiAlign2(text, opts) {
400
+ if (!text) return text;
401
+ opts = opts || {};
402
+ const align = opts.align || "center";
403
+ if (align === "left") return text;
404
+ const split = opts.split || "\n";
405
+ const pad = opts.pad || " ";
406
+ const widthDiffFn = align !== "right" ? halfDiff : fullDiff;
407
+ let returnString = false;
408
+ if (!Array.isArray(text)) {
409
+ returnString = true;
410
+ text = String(text).split(split);
411
+ }
412
+ let width;
413
+ let maxWidth = 0;
414
+ text = text.map(function(str) {
415
+ str = String(str);
416
+ width = stringWidth3(str);
417
+ maxWidth = Math.max(width, maxWidth);
418
+ return {
419
+ str,
420
+ width
421
+ };
422
+ }).map(function(obj) {
423
+ return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str;
424
+ });
425
+ return returnString ? text.join(split) : text;
426
+ }
427
+ __name(ansiAlign2, "ansiAlign");
428
+ ansiAlign2.left = /* @__PURE__ */ __name(function left(text) {
429
+ return ansiAlign2(text, { align: "left" });
430
+ }, "left");
431
+ ansiAlign2.center = /* @__PURE__ */ __name(function center(text) {
432
+ return ansiAlign2(text, { align: "center" });
433
+ }, "center");
434
+ ansiAlign2.right = /* @__PURE__ */ __name(function right(text) {
435
+ return ansiAlign2(text, { align: "right" });
436
+ }, "right");
437
+ module.exports = ansiAlign2;
438
+ function halfDiff(maxWidth, curWidth) {
439
+ return Math.floor((maxWidth - curWidth) / 2);
440
+ }
441
+ __name(halfDiff, "halfDiff");
442
+ function fullDiff(maxWidth, curWidth) {
443
+ return maxWidth - curWidth;
444
+ }
445
+ __name(fullDiff, "fullDiff");
446
+ }
447
+ });
448
+
449
+ // src/autoblock/utils.ts
450
+ var import_semver2 = __toESM(require_semver(), 1);
451
+ import { CLI_COLORS } from "storybook/internal/node-logger";
452
+
453
+ // src/util.ts
454
+ import { HandledError, JsPackageManager, normalizeStories } from "storybook/internal/common";
455
+ import { getProjectRoot, isSatelliteAddon, versions } from "storybook/internal/common";
456
+ import { StoryIndexGenerator, experimental_loadStorybook } from "storybook/internal/core-server";
457
+ import { logTracker, logger as logger2, prompt } from "storybook/internal/node-logger";
458
+ import {
459
+ UpgradeStorybookToLowerVersionError,
460
+ UpgradeStorybookUnknownCurrentVersionError
461
+ } from "storybook/internal/server-errors";
462
+
463
+ // ../../node_modules/ansi-regex/index.js
464
+ function ansiRegex({ onlyFirst = false } = {}) {
465
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
466
+ const pattern = [
467
+ `[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`,
468
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
469
+ ].join("|");
470
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
471
+ }
472
+ __name(ansiRegex, "ansiRegex");
473
+
474
+ // ../../node_modules/strip-ansi/index.js
475
+ var regex = ansiRegex();
476
+
477
+ // ../../node_modules/boxen/node_modules/string-width/index.js
478
+ var import_eastasianwidth = __toESM(require_eastasianwidth(), 1);
479
+ var import_emoji_regex = __toESM(require_emoji_regex(), 1);
480
+
481
+ // ../../node_modules/boxen/node_modules/chalk/source/vendor/ansi-styles/index.js
482
+ var ANSI_BACKGROUND_OFFSET = 10;
483
+ var wrapAnsi16 = /* @__PURE__ */ __name((offset = 0) => (code) => `\x1B[${code + offset}m`, "wrapAnsi16");
484
+ var wrapAnsi256 = /* @__PURE__ */ __name((offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`, "wrapAnsi256");
485
+ var wrapAnsi16m = /* @__PURE__ */ __name((offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`, "wrapAnsi16m");
486
+ var styles = {
487
+ modifier: {
488
+ reset: [0, 0],
489
+ // 21 isn't widely supported and 22 does the same thing
490
+ bold: [1, 22],
491
+ dim: [2, 22],
492
+ italic: [3, 23],
493
+ underline: [4, 24],
494
+ overline: [53, 55],
495
+ inverse: [7, 27],
496
+ hidden: [8, 28],
497
+ strikethrough: [9, 29]
498
+ },
499
+ color: {
500
+ black: [30, 39],
501
+ red: [31, 39],
502
+ green: [32, 39],
503
+ yellow: [33, 39],
504
+ blue: [34, 39],
505
+ magenta: [35, 39],
506
+ cyan: [36, 39],
507
+ white: [37, 39],
508
+ // Bright color
509
+ blackBright: [90, 39],
510
+ gray: [90, 39],
511
+ // Alias of `blackBright`
512
+ grey: [90, 39],
513
+ // Alias of `blackBright`
514
+ redBright: [91, 39],
515
+ greenBright: [92, 39],
516
+ yellowBright: [93, 39],
517
+ blueBright: [94, 39],
518
+ magentaBright: [95, 39],
519
+ cyanBright: [96, 39],
520
+ whiteBright: [97, 39]
521
+ },
522
+ bgColor: {
523
+ bgBlack: [40, 49],
524
+ bgRed: [41, 49],
525
+ bgGreen: [42, 49],
526
+ bgYellow: [43, 49],
527
+ bgBlue: [44, 49],
528
+ bgMagenta: [45, 49],
529
+ bgCyan: [46, 49],
530
+ bgWhite: [47, 49],
531
+ // Bright color
532
+ bgBlackBright: [100, 49],
533
+ bgGray: [100, 49],
534
+ // Alias of `bgBlackBright`
535
+ bgGrey: [100, 49],
536
+ // Alias of `bgBlackBright`
537
+ bgRedBright: [101, 49],
538
+ bgGreenBright: [102, 49],
539
+ bgYellowBright: [103, 49],
540
+ bgBlueBright: [104, 49],
541
+ bgMagentaBright: [105, 49],
542
+ bgCyanBright: [106, 49],
543
+ bgWhiteBright: [107, 49]
544
+ }
545
+ };
546
+ var modifierNames = Object.keys(styles.modifier);
547
+ var foregroundColorNames = Object.keys(styles.color);
548
+ var backgroundColorNames = Object.keys(styles.bgColor);
549
+ var colorNames = [...foregroundColorNames, ...backgroundColorNames];
550
+ function assembleStyles() {
551
+ const codes = /* @__PURE__ */ new Map();
552
+ for (const [groupName, group] of Object.entries(styles)) {
553
+ for (const [styleName, style] of Object.entries(group)) {
554
+ styles[styleName] = {
555
+ open: `\x1B[${style[0]}m`,
556
+ close: `\x1B[${style[1]}m`
557
+ };
558
+ group[styleName] = styles[styleName];
559
+ codes.set(style[0], style[1]);
560
+ }
561
+ Object.defineProperty(styles, groupName, {
562
+ value: group,
563
+ enumerable: false
564
+ });
565
+ }
566
+ Object.defineProperty(styles, "codes", {
567
+ value: codes,
568
+ enumerable: false
569
+ });
570
+ styles.color.close = "\x1B[39m";
571
+ styles.bgColor.close = "\x1B[49m";
572
+ styles.color.ansi = wrapAnsi16();
573
+ styles.color.ansi256 = wrapAnsi256();
574
+ styles.color.ansi16m = wrapAnsi16m();
575
+ styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
576
+ styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
577
+ styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
578
+ Object.defineProperties(styles, {
579
+ rgbToAnsi256: {
580
+ value(red, green, blue) {
581
+ if (red === green && green === blue) {
582
+ if (red < 8) {
583
+ return 16;
584
+ }
585
+ if (red > 248) {
586
+ return 231;
587
+ }
588
+ return Math.round((red - 8) / 247 * 24) + 232;
589
+ }
590
+ return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
591
+ },
592
+ enumerable: false
593
+ },
594
+ hexToRgb: {
595
+ value(hex) {
596
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
597
+ if (!matches) {
598
+ return [0, 0, 0];
599
+ }
600
+ let [colorString] = matches;
601
+ if (colorString.length === 3) {
602
+ colorString = [...colorString].map((character) => character + character).join("");
603
+ }
604
+ const integer = Number.parseInt(colorString, 16);
605
+ return [
606
+ /* eslint-disable no-bitwise */
607
+ integer >> 16 & 255,
608
+ integer >> 8 & 255,
609
+ integer & 255
610
+ /* eslint-enable no-bitwise */
611
+ ];
612
+ },
613
+ enumerable: false
614
+ },
615
+ hexToAnsi256: {
616
+ value: /* @__PURE__ */ __name((hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)), "value"),
617
+ enumerable: false
618
+ },
619
+ ansi256ToAnsi: {
620
+ value(code) {
621
+ if (code < 8) {
622
+ return 30 + code;
623
+ }
624
+ if (code < 16) {
625
+ return 90 + (code - 8);
626
+ }
627
+ let red;
628
+ let green;
629
+ let blue;
630
+ if (code >= 232) {
631
+ red = ((code - 232) * 10 + 8) / 255;
632
+ green = red;
633
+ blue = red;
634
+ } else {
635
+ code -= 16;
636
+ const remainder = code % 36;
637
+ red = Math.floor(code / 36) / 5;
638
+ green = Math.floor(remainder / 6) / 5;
639
+ blue = remainder % 6 / 5;
640
+ }
641
+ const value = Math.max(red, green, blue) * 2;
642
+ if (value === 0) {
643
+ return 30;
644
+ }
645
+ let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
646
+ if (value === 2) {
647
+ result += 60;
648
+ }
649
+ return result;
650
+ },
651
+ enumerable: false
652
+ },
653
+ rgbToAnsi: {
654
+ value: /* @__PURE__ */ __name((red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)), "value"),
655
+ enumerable: false
656
+ },
657
+ hexToAnsi: {
658
+ value: /* @__PURE__ */ __name((hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)), "value"),
659
+ enumerable: false
660
+ }
661
+ });
662
+ return styles;
663
+ }
664
+ __name(assembleStyles, "assembleStyles");
665
+ var ansiStyles = assembleStyles();
666
+ var ansi_styles_default = ansiStyles;
667
+
668
+ // ../../node_modules/boxen/node_modules/chalk/source/vendor/supports-color/index.js
669
+ import process2 from "node:process";
670
+ import os from "node:os";
671
+ import tty from "node:tty";
672
+ function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) {
673
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
674
+ const position = argv.indexOf(prefix + flag);
675
+ const terminatorPosition = argv.indexOf("--");
676
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
677
+ }
678
+ __name(hasFlag, "hasFlag");
679
+ var { env } = process2;
680
+ var flagForceColor;
681
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
682
+ flagForceColor = 0;
683
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
684
+ flagForceColor = 1;
685
+ }
686
+ function envForceColor() {
687
+ if ("FORCE_COLOR" in env) {
688
+ if (env.FORCE_COLOR === "true") {
689
+ return 1;
690
+ }
691
+ if (env.FORCE_COLOR === "false") {
692
+ return 0;
693
+ }
694
+ return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
695
+ }
696
+ }
697
+ __name(envForceColor, "envForceColor");
698
+ function translateLevel(level) {
699
+ if (level === 0) {
700
+ return false;
701
+ }
702
+ return {
703
+ level,
704
+ hasBasic: true,
705
+ has256: level >= 2,
706
+ has16m: level >= 3
707
+ };
708
+ }
709
+ __name(translateLevel, "translateLevel");
710
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
711
+ const noFlagForceColor = envForceColor();
712
+ if (noFlagForceColor !== void 0) {
713
+ flagForceColor = noFlagForceColor;
714
+ }
715
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
716
+ if (forceColor === 0) {
717
+ return 0;
718
+ }
719
+ if (sniffFlags) {
720
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
721
+ return 3;
722
+ }
723
+ if (hasFlag("color=256")) {
724
+ return 2;
725
+ }
726
+ }
727
+ if ("TF_BUILD" in env && "AGENT_NAME" in env) {
728
+ return 1;
729
+ }
730
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
731
+ return 0;
732
+ }
733
+ const min = forceColor || 0;
734
+ if (env.TERM === "dumb") {
735
+ return min;
736
+ }
737
+ if (process2.platform === "win32") {
738
+ const osRelease = os.release().split(".");
739
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
740
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
741
+ }
742
+ return 1;
743
+ }
744
+ if ("CI" in env) {
745
+ if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
746
+ return 3;
747
+ }
748
+ if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
749
+ return 1;
750
+ }
751
+ return min;
752
+ }
753
+ if ("TEAMCITY_VERSION" in env) {
754
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
755
+ }
756
+ if (env.COLORTERM === "truecolor") {
757
+ return 3;
758
+ }
759
+ if (env.TERM === "xterm-kitty") {
760
+ return 3;
761
+ }
762
+ if ("TERM_PROGRAM" in env) {
763
+ const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
764
+ switch (env.TERM_PROGRAM) {
765
+ case "iTerm.app": {
766
+ return version >= 3 ? 3 : 2;
767
+ }
768
+ case "Apple_Terminal": {
769
+ return 2;
770
+ }
771
+ }
772
+ }
773
+ if (/-256(color)?$/i.test(env.TERM)) {
774
+ return 2;
775
+ }
776
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
777
+ return 1;
778
+ }
779
+ if ("COLORTERM" in env) {
780
+ return 1;
781
+ }
782
+ return min;
783
+ }
784
+ __name(_supportsColor, "_supportsColor");
785
+ function createSupportsColor(stream, options = {}) {
786
+ const level = _supportsColor(stream, {
787
+ streamIsTTY: stream && stream.isTTY,
788
+ ...options
789
+ });
790
+ return translateLevel(level);
791
+ }
792
+ __name(createSupportsColor, "createSupportsColor");
793
+ var supportsColor = {
794
+ stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
795
+ stderr: createSupportsColor({ isTTY: tty.isatty(2) })
796
+ };
797
+ var supports_color_default = supportsColor;
798
+
799
+ // ../../node_modules/boxen/node_modules/chalk/source/utilities.js
800
+ function stringReplaceAll(string, substring, replacer) {
801
+ let index = string.indexOf(substring);
802
+ if (index === -1) {
803
+ return string;
804
+ }
805
+ const substringLength = substring.length;
806
+ let endIndex = 0;
807
+ let returnValue = "";
808
+ do {
809
+ returnValue += string.slice(endIndex, index) + substring + replacer;
810
+ endIndex = index + substringLength;
811
+ index = string.indexOf(substring, endIndex);
812
+ } while (index !== -1);
813
+ returnValue += string.slice(endIndex);
814
+ return returnValue;
815
+ }
816
+ __name(stringReplaceAll, "stringReplaceAll");
817
+ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
818
+ let endIndex = 0;
819
+ let returnValue = "";
820
+ do {
821
+ const gotCR = string[index - 1] === "\r";
822
+ returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
823
+ endIndex = index + 1;
824
+ index = string.indexOf("\n", endIndex);
825
+ } while (index !== -1);
826
+ returnValue += string.slice(endIndex);
827
+ return returnValue;
828
+ }
829
+ __name(stringEncaseCRLFWithFirstIndex, "stringEncaseCRLFWithFirstIndex");
830
+
831
+ // ../../node_modules/boxen/node_modules/chalk/source/index.js
832
+ var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
833
+ var GENERATOR = Symbol("GENERATOR");
834
+ var STYLER = Symbol("STYLER");
835
+ var IS_EMPTY = Symbol("IS_EMPTY");
836
+ var levelMapping = [
837
+ "ansi",
838
+ "ansi",
839
+ "ansi256",
840
+ "ansi16m"
841
+ ];
842
+ var styles2 = /* @__PURE__ */ Object.create(null);
843
+ var applyOptions = /* @__PURE__ */ __name((object, options = {}) => {
844
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
845
+ throw new Error("The `level` option should be an integer from 0 to 3");
846
+ }
847
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
848
+ object.level = options.level === void 0 ? colorLevel : options.level;
849
+ }, "applyOptions");
850
+ var chalkFactory = /* @__PURE__ */ __name((options) => {
851
+ const chalk2 = /* @__PURE__ */ __name((...strings) => strings.join(" "), "chalk");
852
+ applyOptions(chalk2, options);
853
+ Object.setPrototypeOf(chalk2, createChalk.prototype);
854
+ return chalk2;
855
+ }, "chalkFactory");
856
+ function createChalk(options) {
857
+ return chalkFactory(options);
858
+ }
859
+ __name(createChalk, "createChalk");
860
+ Object.setPrototypeOf(createChalk.prototype, Function.prototype);
861
+ for (const [styleName, style] of Object.entries(ansi_styles_default)) {
862
+ styles2[styleName] = {
863
+ get() {
864
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
865
+ Object.defineProperty(this, styleName, { value: builder });
866
+ return builder;
867
+ }
868
+ };
869
+ }
870
+ styles2.visible = {
871
+ get() {
872
+ const builder = createBuilder(this, this[STYLER], true);
873
+ Object.defineProperty(this, "visible", { value: builder });
874
+ return builder;
875
+ }
876
+ };
877
+ var getModelAnsi = /* @__PURE__ */ __name((model, level, type, ...arguments_) => {
878
+ if (model === "rgb") {
879
+ if (level === "ansi16m") {
880
+ return ansi_styles_default[type].ansi16m(...arguments_);
881
+ }
882
+ if (level === "ansi256") {
883
+ return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
884
+ }
885
+ return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
886
+ }
887
+ if (model === "hex") {
888
+ return getModelAnsi("rgb", level, type, ...ansi_styles_default.hexToRgb(...arguments_));
889
+ }
890
+ return ansi_styles_default[type][model](...arguments_);
891
+ }, "getModelAnsi");
892
+ var usedModels = ["rgb", "hex", "ansi256"];
893
+ for (const model of usedModels) {
894
+ styles2[model] = {
895
+ get() {
896
+ const { level } = this;
897
+ return function(...arguments_) {
898
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
899
+ return createBuilder(this, styler, this[IS_EMPTY]);
900
+ };
901
+ }
902
+ };
903
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
904
+ styles2[bgModel] = {
905
+ get() {
906
+ const { level } = this;
907
+ return function(...arguments_) {
908
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
909
+ return createBuilder(this, styler, this[IS_EMPTY]);
910
+ };
911
+ }
912
+ };
913
+ }
914
+ var proto = Object.defineProperties(() => {
915
+ }, {
916
+ ...styles2,
917
+ level: {
918
+ enumerable: true,
919
+ get() {
920
+ return this[GENERATOR].level;
921
+ },
922
+ set(level) {
923
+ this[GENERATOR].level = level;
924
+ }
925
+ }
926
+ });
927
+ var createStyler = /* @__PURE__ */ __name((open, close, parent) => {
928
+ let openAll;
929
+ let closeAll;
930
+ if (parent === void 0) {
931
+ openAll = open;
932
+ closeAll = close;
933
+ } else {
934
+ openAll = parent.openAll + open;
935
+ closeAll = close + parent.closeAll;
936
+ }
937
+ return {
938
+ open,
939
+ close,
940
+ openAll,
941
+ closeAll,
942
+ parent
943
+ };
944
+ }, "createStyler");
945
+ var createBuilder = /* @__PURE__ */ __name((self, _styler, _isEmpty) => {
946
+ const builder = /* @__PURE__ */ __name((...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" ")), "builder");
947
+ Object.setPrototypeOf(builder, proto);
948
+ builder[GENERATOR] = self;
949
+ builder[STYLER] = _styler;
950
+ builder[IS_EMPTY] = _isEmpty;
951
+ return builder;
952
+ }, "createBuilder");
953
+ var applyStyle = /* @__PURE__ */ __name((self, string) => {
954
+ if (self.level <= 0 || !string) {
955
+ return self[IS_EMPTY] ? "" : string;
956
+ }
957
+ let styler = self[STYLER];
958
+ if (styler === void 0) {
959
+ return string;
960
+ }
961
+ const { openAll, closeAll } = styler;
962
+ if (string.includes("\x1B")) {
963
+ while (styler !== void 0) {
964
+ string = stringReplaceAll(string, styler.close, styler.open);
965
+ styler = styler.parent;
966
+ }
967
+ }
968
+ const lfIndex = string.indexOf("\n");
969
+ if (lfIndex !== -1) {
970
+ string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
971
+ }
972
+ return openAll + string + closeAll;
973
+ }, "applyStyle");
974
+ Object.defineProperties(createChalk.prototype, styles2);
975
+ var chalk = createChalk();
976
+ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
977
+
978
+ // ../../node_modules/boxen/index.js
979
+ var import_cli_boxes = __toESM(require_cli_boxes(), 1);
980
+
981
+ // ../../node_modules/boxen/node_modules/camelcase/index.js
982
+ var IDENTIFIER = /([\p{Alpha}\p{N}_]|$)/u;
983
+ var SEPARATORS = /[_.\- ]+/;
984
+ var LEADING_SEPARATORS = new RegExp("^" + SEPARATORS.source);
985
+ var SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, "gu");
986
+ var NUMBERS_AND_IDENTIFIER = new RegExp("\\d+" + IDENTIFIER.source, "gu");
987
+
988
+ // ../../node_modules/boxen/index.js
989
+ var import_ansi_align = __toESM(require_ansi_align(), 1);
990
+
991
+ // ../../node_modules/wrap-ansi/node_modules/string-width/index.js
992
+ var import_eastasianwidth2 = __toESM(require_eastasianwidth(), 1);
993
+ var import_emoji_regex2 = __toESM(require_emoji_regex(), 1);
994
+
995
+ // ../../node_modules/wrap-ansi/node_modules/ansi-styles/index.js
996
+ var ANSI_BACKGROUND_OFFSET2 = 10;
997
+ var wrapAnsi162 = /* @__PURE__ */ __name((offset = 0) => (code) => `\x1B[${code + offset}m`, "wrapAnsi16");
998
+ var wrapAnsi2562 = /* @__PURE__ */ __name((offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`, "wrapAnsi256");
999
+ var wrapAnsi16m2 = /* @__PURE__ */ __name((offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`, "wrapAnsi16m");
1000
+ var styles3 = {
1001
+ modifier: {
1002
+ reset: [0, 0],
1003
+ // 21 isn't widely supported and 22 does the same thing
1004
+ bold: [1, 22],
1005
+ dim: [2, 22],
1006
+ italic: [3, 23],
1007
+ underline: [4, 24],
1008
+ overline: [53, 55],
1009
+ inverse: [7, 27],
1010
+ hidden: [8, 28],
1011
+ strikethrough: [9, 29]
1012
+ },
1013
+ color: {
1014
+ black: [30, 39],
1015
+ red: [31, 39],
1016
+ green: [32, 39],
1017
+ yellow: [33, 39],
1018
+ blue: [34, 39],
1019
+ magenta: [35, 39],
1020
+ cyan: [36, 39],
1021
+ white: [37, 39],
1022
+ // Bright color
1023
+ blackBright: [90, 39],
1024
+ gray: [90, 39],
1025
+ // Alias of `blackBright`
1026
+ grey: [90, 39],
1027
+ // Alias of `blackBright`
1028
+ redBright: [91, 39],
1029
+ greenBright: [92, 39],
1030
+ yellowBright: [93, 39],
1031
+ blueBright: [94, 39],
1032
+ magentaBright: [95, 39],
1033
+ cyanBright: [96, 39],
1034
+ whiteBright: [97, 39]
1035
+ },
1036
+ bgColor: {
1037
+ bgBlack: [40, 49],
1038
+ bgRed: [41, 49],
1039
+ bgGreen: [42, 49],
1040
+ bgYellow: [43, 49],
1041
+ bgBlue: [44, 49],
1042
+ bgMagenta: [45, 49],
1043
+ bgCyan: [46, 49],
1044
+ bgWhite: [47, 49],
1045
+ // Bright color
1046
+ bgBlackBright: [100, 49],
1047
+ bgGray: [100, 49],
1048
+ // Alias of `bgBlackBright`
1049
+ bgGrey: [100, 49],
1050
+ // Alias of `bgBlackBright`
1051
+ bgRedBright: [101, 49],
1052
+ bgGreenBright: [102, 49],
1053
+ bgYellowBright: [103, 49],
1054
+ bgBlueBright: [104, 49],
1055
+ bgMagentaBright: [105, 49],
1056
+ bgCyanBright: [106, 49],
1057
+ bgWhiteBright: [107, 49]
1058
+ }
1059
+ };
1060
+ var modifierNames2 = Object.keys(styles3.modifier);
1061
+ var foregroundColorNames2 = Object.keys(styles3.color);
1062
+ var backgroundColorNames2 = Object.keys(styles3.bgColor);
1063
+ var colorNames2 = [...foregroundColorNames2, ...backgroundColorNames2];
1064
+ function assembleStyles2() {
1065
+ const codes = /* @__PURE__ */ new Map();
1066
+ for (const [groupName, group] of Object.entries(styles3)) {
1067
+ for (const [styleName, style] of Object.entries(group)) {
1068
+ styles3[styleName] = {
1069
+ open: `\x1B[${style[0]}m`,
1070
+ close: `\x1B[${style[1]}m`
1071
+ };
1072
+ group[styleName] = styles3[styleName];
1073
+ codes.set(style[0], style[1]);
1074
+ }
1075
+ Object.defineProperty(styles3, groupName, {
1076
+ value: group,
1077
+ enumerable: false
1078
+ });
1079
+ }
1080
+ Object.defineProperty(styles3, "codes", {
1081
+ value: codes,
1082
+ enumerable: false
1083
+ });
1084
+ styles3.color.close = "\x1B[39m";
1085
+ styles3.bgColor.close = "\x1B[49m";
1086
+ styles3.color.ansi = wrapAnsi162();
1087
+ styles3.color.ansi256 = wrapAnsi2562();
1088
+ styles3.color.ansi16m = wrapAnsi16m2();
1089
+ styles3.bgColor.ansi = wrapAnsi162(ANSI_BACKGROUND_OFFSET2);
1090
+ styles3.bgColor.ansi256 = wrapAnsi2562(ANSI_BACKGROUND_OFFSET2);
1091
+ styles3.bgColor.ansi16m = wrapAnsi16m2(ANSI_BACKGROUND_OFFSET2);
1092
+ Object.defineProperties(styles3, {
1093
+ rgbToAnsi256: {
1094
+ value: /* @__PURE__ */ __name((red, green, blue) => {
1095
+ if (red === green && green === blue) {
1096
+ if (red < 8) {
1097
+ return 16;
1098
+ }
1099
+ if (red > 248) {
1100
+ return 231;
1101
+ }
1102
+ return Math.round((red - 8) / 247 * 24) + 232;
1103
+ }
1104
+ return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
1105
+ }, "value"),
1106
+ enumerable: false
1107
+ },
1108
+ hexToRgb: {
1109
+ value: /* @__PURE__ */ __name((hex) => {
1110
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
1111
+ if (!matches) {
1112
+ return [0, 0, 0];
1113
+ }
1114
+ let [colorString] = matches;
1115
+ if (colorString.length === 3) {
1116
+ colorString = [...colorString].map((character) => character + character).join("");
1117
+ }
1118
+ const integer = Number.parseInt(colorString, 16);
1119
+ return [
1120
+ /* eslint-disable no-bitwise */
1121
+ integer >> 16 & 255,
1122
+ integer >> 8 & 255,
1123
+ integer & 255
1124
+ /* eslint-enable no-bitwise */
1125
+ ];
1126
+ }, "value"),
1127
+ enumerable: false
1128
+ },
1129
+ hexToAnsi256: {
1130
+ value: /* @__PURE__ */ __name((hex) => styles3.rgbToAnsi256(...styles3.hexToRgb(hex)), "value"),
1131
+ enumerable: false
1132
+ },
1133
+ ansi256ToAnsi: {
1134
+ value: /* @__PURE__ */ __name((code) => {
1135
+ if (code < 8) {
1136
+ return 30 + code;
1137
+ }
1138
+ if (code < 16) {
1139
+ return 90 + (code - 8);
1140
+ }
1141
+ let red;
1142
+ let green;
1143
+ let blue;
1144
+ if (code >= 232) {
1145
+ red = ((code - 232) * 10 + 8) / 255;
1146
+ green = red;
1147
+ blue = red;
1148
+ } else {
1149
+ code -= 16;
1150
+ const remainder = code % 36;
1151
+ red = Math.floor(code / 36) / 5;
1152
+ green = Math.floor(remainder / 6) / 5;
1153
+ blue = remainder % 6 / 5;
1154
+ }
1155
+ const value = Math.max(red, green, blue) * 2;
1156
+ if (value === 0) {
1157
+ return 30;
1158
+ }
1159
+ let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
1160
+ if (value === 2) {
1161
+ result += 60;
1162
+ }
1163
+ return result;
1164
+ }, "value"),
1165
+ enumerable: false
1166
+ },
1167
+ rgbToAnsi: {
1168
+ value: /* @__PURE__ */ __name((red, green, blue) => styles3.ansi256ToAnsi(styles3.rgbToAnsi256(red, green, blue)), "value"),
1169
+ enumerable: false
1170
+ },
1171
+ hexToAnsi: {
1172
+ value: /* @__PURE__ */ __name((hex) => styles3.ansi256ToAnsi(styles3.hexToAnsi256(hex)), "value"),
1173
+ enumerable: false
1174
+ }
1175
+ });
1176
+ return styles3;
1177
+ }
1178
+ __name(assembleStyles2, "assembleStyles");
1179
+ var ansiStyles2 = assembleStyles2();
1180
+
1181
+ // ../../node_modules/wrap-ansi/index.js
1182
+ var ANSI_OSC = "]";
1183
+ var ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;
1184
+
1185
+ // ../../node_modules/boxen/index.js
1186
+ var import_cli_boxes2 = __toESM(require_cli_boxes(), 1);
1187
+
1188
+ // ../../node_modules/find-up/index.js
1189
+ import path2 from "node:path";
1190
+
1191
+ // ../../node_modules/locate-path/index.js
1192
+ import process3 from "node:process";
1193
+ import path from "node:path";
1194
+ import fs, { promises as fsPromises } from "node:fs";
1195
+ import { fileURLToPath } from "node:url";
1196
+ var typeMappings = {
1197
+ directory: "isDirectory",
1198
+ file: "isFile"
1199
+ };
1200
+ function checkType(type) {
1201
+ if (Object.hasOwnProperty.call(typeMappings, type)) {
1202
+ return;
1203
+ }
1204
+ throw new Error(`Invalid type specified: ${type}`);
1205
+ }
1206
+ __name(checkType, "checkType");
1207
+ var matchType = /* @__PURE__ */ __name((type, stat) => stat[typeMappings[type]](), "matchType");
1208
+ var toPath = /* @__PURE__ */ __name((urlOrPath) => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath, "toPath");
1209
+ function locatePathSync(paths, {
1210
+ cwd = process3.cwd(),
1211
+ type = "file",
1212
+ allowSymlinks = true
1213
+ } = {}) {
1214
+ checkType(type);
1215
+ cwd = toPath(cwd);
1216
+ const statFunction = allowSymlinks ? fs.statSync : fs.lstatSync;
1217
+ for (const path_ of paths) {
1218
+ try {
1219
+ const stat = statFunction(path.resolve(cwd, path_), {
1220
+ throwIfNoEntry: false
1221
+ });
1222
+ if (!stat) {
1223
+ continue;
1224
+ }
1225
+ if (matchType(type, stat)) {
1226
+ return path_;
1227
+ }
1228
+ } catch {
1229
+ }
1230
+ }
1231
+ }
1232
+ __name(locatePathSync, "locatePathSync");
1233
+
1234
+ // ../../node_modules/find-up/node_modules/unicorn-magic/node.js
1235
+ import { fileURLToPath as fileURLToPath2 } from "node:url";
1236
+ function toPath2(urlOrPath) {
1237
+ return urlOrPath instanceof URL ? fileURLToPath2(urlOrPath) : urlOrPath;
1238
+ }
1239
+ __name(toPath2, "toPath");
1240
+
1241
+ // ../../node_modules/find-up/index.js
1242
+ var findUpStop = Symbol("findUpStop");
1243
+ function findUpMultipleSync(name, options = {}) {
1244
+ let directory = path2.resolve(toPath2(options.cwd) ?? "");
1245
+ const { root } = path2.parse(directory);
1246
+ const stopAt = path2.resolve(directory, toPath2(options.stopAt) ?? root);
1247
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
1248
+ const paths = [name].flat();
1249
+ const runMatcher = /* @__PURE__ */ __name((locateOptions) => {
1250
+ if (typeof name !== "function") {
1251
+ return locatePathSync(paths, locateOptions);
1252
+ }
1253
+ const foundPath = name(locateOptions.cwd);
1254
+ if (typeof foundPath === "string") {
1255
+ return locatePathSync([foundPath], locateOptions);
1256
+ }
1257
+ return foundPath;
1258
+ }, "runMatcher");
1259
+ const matches = [];
1260
+ while (true) {
1261
+ const foundPath = runMatcher({ ...options, cwd: directory });
1262
+ if (foundPath === findUpStop) {
1263
+ break;
1264
+ }
1265
+ if (foundPath) {
1266
+ matches.push(path2.resolve(directory, foundPath));
1267
+ }
1268
+ if (directory === stopAt || matches.length >= limit) {
1269
+ break;
1270
+ }
1271
+ directory = path2.dirname(directory);
1272
+ }
1273
+ return matches;
1274
+ }
1275
+ __name(findUpMultipleSync, "findUpMultipleSync");
1276
+
1277
+ // src/util.ts
1278
+ var import_picocolors2 = __toESM(require_picocolors(), 1);
1279
+ var import_semver = __toESM(require_semver(), 1);
1280
+
1281
+ // src/autoblock/index.ts
1282
+ var blockers = /* @__PURE__ */ __name(() => [
1283
+ // add/remove blockers here
1284
+ import("./block-dependencies-versions-GQ3B7SZR.js"),
1285
+ import("./block-node-version-C2SG65VI.js"),
1286
+ import("./block-webpack5-frameworks-2GESSFOP.js"),
1287
+ import("./block-major-version-RKT4EOKH.js"),
1288
+ import("./block-experimental-addon-test-OCFFZMET.js")
1289
+ ], "blockers");
1290
+ var autoblock = /* @__PURE__ */ __name(async (options, list = blockers()) => {
1291
+ if (list.length === 0) {
1292
+ return null;
1293
+ }
1294
+ return await Promise.all(
1295
+ list.map(async (i) => {
1296
+ const blocker = (await i).blocker;
1297
+ const result = await blocker.check(options);
1298
+ return { result, blocker };
1299
+ })
1300
+ );
1301
+ }, "autoblock");
1302
+
1303
+ // src/automigrate/helpers/mainConfigFile.ts
1304
+ var import_picocolors = __toESM(require_picocolors(), 1);
1305
+ import { dirname, isAbsolute, join, normalize } from "node:path";
1306
+ import {
1307
+ JsPackageManagerFactory,
1308
+ builderPackages,
1309
+ extractProperFrameworkName,
1310
+ frameworkPackages,
1311
+ getStorybookInfo,
1312
+ loadMainConfig,
1313
+ rendererPackages
1314
+ } from "storybook/internal/common";
1315
+ import { frameworkToRenderer, getCoercedStorybookVersion } from "storybook/internal/common";
1316
+ import { readConfig, writeConfig as writeConfigFile } from "storybook/internal/csf-tools";
1317
+ import { logger } from "storybook/internal/node-logger";
1318
+ import { dedent } from "ts-dedent";
1319
+ var getFrameworkPackageName = /* @__PURE__ */ __name((mainConfig) => {
1320
+ const packageNameOrPath = typeof mainConfig?.framework === "string" ? mainConfig.framework : mainConfig?.framework?.name;
1321
+ if (!packageNameOrPath) {
1322
+ return null;
1323
+ }
1324
+ return extractProperFrameworkName(packageNameOrPath);
1325
+ }, "getFrameworkPackageName");
1326
+ var getStorybookData = /* @__PURE__ */ __name(async ({
1327
+ configDir: userDefinedConfigDir,
1328
+ cwd,
1329
+ packageManagerName
1330
+ }) => {
1331
+ logger.debug("Getting Storybook info...");
1332
+ const {
1333
+ mainConfigPath,
1334
+ version: storybookVersionSpecifier,
1335
+ configDir: configDirFromScript,
1336
+ previewConfigPath
1337
+ } = await getStorybookInfo(userDefinedConfigDir);
1338
+ const configDir = userDefinedConfigDir || configDirFromScript || ".storybook";
1339
+ logger.debug("Loading main config...");
1340
+ let mainConfig;
1341
+ try {
1342
+ mainConfig = await loadMainConfig({ configDir, cwd });
1343
+ } catch (err) {
1344
+ throw new Error(
1345
+ dedent`Unable to find or evaluate ${import_picocolors.default.blue(mainConfigPath)}: ${String(err)}`
1346
+ );
1347
+ }
1348
+ const workingDir = isAbsolute(configDir) ? dirname(configDir) : dirname(join(cwd ?? process.cwd(), configDir));
1349
+ logger.debug("Getting stories paths...");
1350
+ const storiesPaths = await getStoriesPathsFromConfig({
1351
+ stories: mainConfig.stories,
1352
+ configDir,
1353
+ workingDir
1354
+ });
1355
+ logger.debug("Getting package manager...");
1356
+ const packageManager = JsPackageManagerFactory.getPackageManager({
1357
+ force: packageManagerName,
1358
+ configDir,
1359
+ storiesPaths
1360
+ });
1361
+ logger.debug("Getting Storybook version...");
1362
+ const storybookVersion = await getCoercedStorybookVersion(packageManager);
1363
+ return {
1364
+ configDir,
1365
+ mainConfig,
1366
+ storybookVersionSpecifier,
1367
+ storybookVersion,
1368
+ mainConfigPath,
1369
+ previewConfigPath,
1370
+ packageManager,
1371
+ storiesPaths
1372
+ };
1373
+ }, "getStorybookData");
1374
+ var updateMainConfig = /* @__PURE__ */ __name(async ({ mainConfigPath, dryRun }, callback) => {
1375
+ try {
1376
+ const main = await readConfig(mainConfigPath);
1377
+ await callback(main);
1378
+ if (!dryRun) {
1379
+ await writeConfigFile(main);
1380
+ }
1381
+ } catch (e) {
1382
+ logger.log(
1383
+ `\u274C The migration failed to update your ${import_picocolors.default.blue(
1384
+ mainConfigPath
1385
+ )} on your behalf because of the following error:
1386
+ ${e}
1387
+ `
1388
+ );
1389
+ logger.log(
1390
+ `\u26A0\uFE0F Storybook automigrations are based on AST parsing and it's possible that your ${import_picocolors.default.blue(
1391
+ mainConfigPath
1392
+ )} file contains a non-standard format (e.g. your export is not an object) or that there was an error when parsing dynamic values (e.g. "require" calls, or usage of environment variables). When your main config is non-standard, automigrations are unfortunately not possible. Please follow the instructions given previously and follow the documentation to make the updates manually.`
1393
+ );
1394
+ }
1395
+ }, "updateMainConfig");
1396
+
1397
+ // src/util.ts
1398
+ var STORYBOOK_DIR_PATTERN = ["**/.storybook", "**/.rnstorybook"];
1399
+ var isSuccessResult = /* @__PURE__ */ __name((result) => !("error" in result), "isSuccessResult");
1400
+ var isErrorResult = /* @__PURE__ */ __name((result) => "error" in result, "isErrorResult");
1401
+ var getVersionModifier = /* @__PURE__ */ __name((versionSpecifier) => {
1402
+ if (!versionSpecifier || typeof versionSpecifier !== "string") {
1403
+ return { modifier: "", useFixed: true };
1404
+ }
1405
+ const firstPart = versionSpecifier.split(/\s*\|\|\s*/)[0]?.trim();
1406
+ if (!firstPart) {
1407
+ return { modifier: "", useFixed: true };
1408
+ }
1409
+ const match = firstPart.match(/^([~^><=]+)/);
1410
+ const modifier = match?.[1] ?? "";
1411
+ return {
1412
+ modifier,
1413
+ useFixed: !modifier
1414
+ };
1415
+ }, "getVersionModifier");
1416
+ var isCanaryVersion = /* @__PURE__ */ __name((version) => version.startsWith("0.0.0") || version.startsWith("portal:") || version.startsWith("workspace:"), "isCanaryVersion");
1417
+ function validateVersion(version) {
1418
+ if (!version) {
1419
+ throw new UpgradeStorybookUnknownCurrentVersionError();
1420
+ }
1421
+ }
1422
+ __name(validateVersion, "validateVersion");
1423
+ var validateUpgradeCompatibility = /* @__PURE__ */ __name((currentVersion, beforeVersion, isCanary) => {
1424
+ if (!isCanary && (0, import_semver.lt)(currentVersion, beforeVersion)) {
1425
+ throw new UpgradeStorybookToLowerVersionError({
1426
+ beforeVersion,
1427
+ currentVersion
1428
+ });
1429
+ }
1430
+ }, "validateUpgradeCompatibility");
1431
+ var findStorybookProjects = /* @__PURE__ */ __name(async (cwd = process.cwd()) => {
1432
+ try {
1433
+ logger2.debug(`Finding Storybook projects...`);
1434
+ const storybookDirs = await globby(STORYBOOK_DIR_PATTERN, {
1435
+ cwd,
1436
+ dot: true,
1437
+ gitignore: true,
1438
+ absolute: true,
1439
+ onlyDirectories: true,
1440
+ followSymbolicLinks: false
1441
+ });
1442
+ logger2.debug(`Found ${storybookDirs.length} Storybook projects`);
1443
+ if (storybookDirs.length === 0) {
1444
+ const answer = await prompt.text({
1445
+ message: "No Storybook projects were found. Please enter the path to the .storybook directory for the project you want to upgrade."
1446
+ });
1447
+ return [answer];
1448
+ }
1449
+ return storybookDirs;
1450
+ } catch (error) {
1451
+ logger2.error("Failed to find Storybook projects");
1452
+ throw error;
1453
+ }
1454
+ }, "findStorybookProjects");
1455
+ var processProject = /* @__PURE__ */ __name(async ({
1456
+ configDir,
1457
+ options,
1458
+ currentCLIVersion,
1459
+ onScanStart
1460
+ }) => {
1461
+ try {
1462
+ onScanStart();
1463
+ const name = configDir.replace(getProjectRoot(), "");
1464
+ logger2.debug(`Getting Storybook data...`);
1465
+ const {
1466
+ configDir: resolvedConfigDir,
1467
+ mainConfig,
1468
+ mainConfigPath,
1469
+ packageManager,
1470
+ previewConfigPath,
1471
+ storiesPaths,
1472
+ storybookVersion: beforeVersion
1473
+ } = await getStorybookData({ configDir });
1474
+ logger2.debug(`${name} - Validating before version... ${beforeVersion}`);
1475
+ validateVersion(beforeVersion);
1476
+ const isCanary = isCanaryVersion(currentCLIVersion) || isCanaryVersion(beforeVersion);
1477
+ logger2.debug(`${name} - Validating upgrade compatibility...`);
1478
+ validateUpgradeCompatibility(currentCLIVersion, beforeVersion, isCanary);
1479
+ logger2.debug(`${name} - Fetching NPM version information...`);
1480
+ const [latestCLIVersionOnNPM, latestPrereleaseCLIVersionOnNPM] = await Promise.all([
1481
+ packageManager.latestVersion("storybook"),
1482
+ packageManager.latestVersion("storybook@next")
1483
+ ]);
1484
+ const isCLIOutdated = (0, import_semver.lt)(currentCLIVersion, latestCLIVersionOnNPM);
1485
+ const isCLIExactLatest = currentCLIVersion === latestCLIVersionOnNPM;
1486
+ const isCLIPrerelease = (0, import_semver.prerelease)(currentCLIVersion) !== null;
1487
+ const isCLIExactPrerelease = currentCLIVersion === latestPrereleaseCLIVersionOnNPM;
1488
+ const isUpgrade = (0, import_semver.lt)(beforeVersion, currentCLIVersion);
1489
+ let autoblockerCheckResults = null;
1490
+ if (typeof mainConfig !== "boolean" && typeof mainConfigPath !== "undefined" && !options.force) {
1491
+ logger2.debug(`${name} - Evaluating blockers...`);
1492
+ autoblockerCheckResults = await autoblock({
1493
+ packageManager,
1494
+ configDir: resolvedConfigDir,
1495
+ mainConfig,
1496
+ mainConfigPath
1497
+ });
1498
+ }
1499
+ return {
1500
+ configDir: resolvedConfigDir,
1501
+ mainConfig,
1502
+ mainConfigPath,
1503
+ packageManager,
1504
+ isCanary,
1505
+ isCLIOutdated,
1506
+ isCLIPrerelease,
1507
+ isCLIExactLatest,
1508
+ isUpgrade,
1509
+ beforeVersion,
1510
+ currentCLIVersion,
1511
+ latestCLIVersionOnNPM,
1512
+ isCLIExactPrerelease,
1513
+ autoblockerCheckResults,
1514
+ previewConfigPath,
1515
+ storiesPaths
1516
+ };
1517
+ } catch (error) {
1518
+ logger2.debug(String(error));
1519
+ return {
1520
+ configDir,
1521
+ error
1522
+ };
1523
+ }
1524
+ }, "processProject");
1525
+ var collectProjects = /* @__PURE__ */ __name(async (options, configDirs, onProjectScanStart) => {
1526
+ const { default: pLimit2 } = await import("./p-limit-UCT6CWW2.js");
1527
+ const currentCLIVersion = versions.storybook;
1528
+ const limit = pLimit2(5);
1529
+ const projectPromises = configDirs.map(
1530
+ (configDir) => limit(
1531
+ () => processProject({
1532
+ configDir,
1533
+ options,
1534
+ currentCLIVersion,
1535
+ onScanStart: /* @__PURE__ */ __name(() => onProjectScanStart(), "onScanStart")
1536
+ })
1537
+ )
1538
+ );
1539
+ const result = await Promise.all(projectPromises);
1540
+ return result;
1541
+ }, "collectProjects");
1542
+ var generateUpgradeSpecs = /* @__PURE__ */ __name(async (dependencies = {}, config) => {
1543
+ const {
1544
+ packageManager,
1545
+ isCanary,
1546
+ isCLIOutdated,
1547
+ isCLIPrerelease,
1548
+ isCLIExactPrerelease,
1549
+ isCLIExactLatest
1550
+ } = config;
1551
+ const monorepoDependencies = Object.keys(dependencies).filter(
1552
+ (dependency) => dependency in versions
1553
+ );
1554
+ const storybookCoreUpgrades = monorepoDependencies.map((dependency) => {
1555
+ const versionSpec = dependencies[dependency];
1556
+ if (!versionSpec) {
1557
+ return `${dependency}@${versions[dependency]}`;
1558
+ }
1559
+ const { modifier } = getVersionModifier(versionSpec);
1560
+ const shouldUseFixed = isCLIOutdated || isCanary;
1561
+ const finalModifier = shouldUseFixed ? "" : modifier;
1562
+ return `${dependency}@${finalModifier}${versions[dependency]}`;
1563
+ });
1564
+ let storybookSatelliteUpgrades = [];
1565
+ if (isCLIExactPrerelease || isCLIExactLatest) {
1566
+ const satelliteDependencies = Object.keys(dependencies).filter(isSatelliteAddon);
1567
+ if (satelliteDependencies.length > 0) {
1568
+ try {
1569
+ const upgradePromises = satelliteDependencies.map(async (dependency) => {
1570
+ try {
1571
+ const packageName = isCLIPrerelease ? `${dependency}@next` : dependency;
1572
+ const mostRecentVersion = await packageManager.latestVersion(packageName);
1573
+ if (!mostRecentVersion) {
1574
+ return null;
1575
+ }
1576
+ const { modifier } = getVersionModifier(dependencies[dependency] ?? "");
1577
+ return `${dependency}@${modifier}${mostRecentVersion}`;
1578
+ } catch {
1579
+ return null;
1580
+ }
1581
+ });
1582
+ const results = await Promise.all(upgradePromises);
1583
+ storybookSatelliteUpgrades = results.filter((result) => result !== null);
1584
+ } catch (error) {
1585
+ logger2.warn("Failed to fetch satellite dependencies");
1586
+ }
1587
+ }
1588
+ }
1589
+ return [...storybookCoreUpgrades, ...storybookSatelliteUpgrades];
1590
+ }, "generateUpgradeSpecs");
1591
+ var upgradeStorybookDependencies = /* @__PURE__ */ __name(async (config) => {
1592
+ const { packageManager } = config;
1593
+ for (const packageJsonPath of packageManager.packageJsonPaths) {
1594
+ const packageJson = JsPackageManager.getPackageJson(packageJsonPath);
1595
+ const [upgradedDependencies, upgradedDevDependencies, upgradedPeerDependencies] = await Promise.all([
1596
+ generateUpgradeSpecs(packageJson.dependencies, config),
1597
+ generateUpgradeSpecs(packageJson.devDependencies, config),
1598
+ generateUpgradeSpecs(packageJson.peerDependencies, config)
1599
+ ]);
1600
+ logger2.debug(JSON.stringify({ upgradedDependencies }, null, 2));
1601
+ logger2.debug(JSON.stringify({ upgradedDevDependencies }, null, 2));
1602
+ logger2.debug(JSON.stringify({ upgradedPeerDependencies }, null, 2));
1603
+ await packageManager.addDependencies(
1604
+ {
1605
+ type: "dependencies",
1606
+ skipInstall: true,
1607
+ packageJsonInfo: JsPackageManager.getPackageJsonInfo(packageJsonPath)
1608
+ },
1609
+ upgradedDependencies
1610
+ );
1611
+ await packageManager.addDependencies(
1612
+ {
1613
+ type: "devDependencies",
1614
+ skipInstall: true,
1615
+ packageJsonInfo: JsPackageManager.getPackageJsonInfo(packageJsonPath)
1616
+ },
1617
+ upgradedDevDependencies
1618
+ );
1619
+ await packageManager.addDependencies(
1620
+ {
1621
+ type: "peerDependencies",
1622
+ skipInstall: true,
1623
+ packageJsonInfo: JsPackageManager.getPackageJsonInfo(packageJsonPath)
1624
+ },
1625
+ upgradedPeerDependencies
1626
+ );
1627
+ }
1628
+ }, "upgradeStorybookDependencies");
1629
+ var formatProjectDirectories = /* @__PURE__ */ __name((projectData, modifier) => {
1630
+ if (projectData.length === 0) {
1631
+ return "";
1632
+ }
1633
+ return projectData.map((project) => project.configDir).map((dir) => `${modifier} ${import_picocolors2.default.cyan(shortenPath(dir))}`).join("\n");
1634
+ }, "formatProjectDirectories");
1635
+ var shortenPath = /* @__PURE__ */ __name((path3) => {
1636
+ const gitRoot = getProjectRoot();
1637
+ return path3.replace(gitRoot, "");
1638
+ }, "shortenPath");
1639
+ var handleMultipleProjects = /* @__PURE__ */ __name(async (validProjects, errorProjects, detectedConfigDirs, yes) => {
1640
+ const allPackageJsonPaths = validProjects.flatMap((data) => data.packageManager.packageJsonPaths).filter(JsPackageManager.hasAnyStorybookDependency);
1641
+ const uniquePackageJsonPaths = new Set(allPackageJsonPaths);
1642
+ const hasOverlappingStorybooks = uniquePackageJsonPaths.size !== allPackageJsonPaths.length;
1643
+ if (hasOverlappingStorybooks) {
1644
+ const projectsFoundMessage = [
1645
+ "Multiple Storybook projects found. Storybook can only upgrade all projects at once:"
1646
+ ];
1647
+ if (validProjects.length > 0) {
1648
+ projectsFoundMessage.push(formatProjectDirectories(validProjects, logger2.SYMBOLS.success));
1649
+ }
1650
+ if (errorProjects.length > 0) {
1651
+ logTracker.enableLogWriting();
1652
+ projectsFoundMessage.push(
1653
+ `There were some errors while collecting data for the following projects:
1654
+ ${formatProjectDirectories(errorProjects, logger2.SYMBOLS.error)}`,
1655
+ "",
1656
+ "Full logs will be available in the Storybook debug logs at the end of the run."
1657
+ );
1658
+ }
1659
+ logger2.log(projectsFoundMessage.join("\n"));
1660
+ const continueUpgrade = yes || await prompt.confirm({
1661
+ message: "Continue with the upgrade?",
1662
+ initialValue: true
1663
+ });
1664
+ if (!continueUpgrade) {
1665
+ throw new HandledError("Upgrade cancelled by user");
1666
+ }
1667
+ return [...validProjects];
1668
+ }
1669
+ if (detectedConfigDirs.length > 1) {
1670
+ const selectedConfigDirs = await prompt.multiselect({
1671
+ message: "Select which projects to upgrade",
1672
+ options: detectedConfigDirs.map((configDir) => ({
1673
+ label: shortenPath(configDir),
1674
+ value: configDir
1675
+ }))
1676
+ });
1677
+ return validProjects.filter((data) => selectedConfigDirs.includes(data.configDir));
1678
+ }
1679
+ return void 0;
1680
+ }, "handleMultipleProjects");
1681
+ var getProjects = /* @__PURE__ */ __name(async (options) => {
1682
+ try {
1683
+ const task = prompt.spinner({ id: "detect-projects" });
1684
+ task.start("Detecting projects...");
1685
+ let detectedConfigDirs = options.configDir ?? [];
1686
+ if (!options.configDir || options.configDir.length === 0) {
1687
+ detectedConfigDirs = await findStorybookProjects();
1688
+ }
1689
+ let count = 0;
1690
+ const projects = await collectProjects(
1691
+ options,
1692
+ detectedConfigDirs,
1693
+ () => task.message(`Detecting projects: ${++count} projects`)
1694
+ );
1695
+ task.stop(`${projects.length} ${projects.length > 1 ? "projects" : "project"} detected`);
1696
+ const validProjects = projects.filter(isSuccessResult);
1697
+ const errorProjects = projects.filter(isErrorResult);
1698
+ logger2.debug(
1699
+ `Found ${validProjects.length} valid projects and ${errorProjects.length} error projects`
1700
+ );
1701
+ if (validProjects.length === 1) {
1702
+ return { allProjects: validProjects, selectedProjects: validProjects };
1703
+ }
1704
+ if (validProjects.length === 0 && errorProjects.length > 0) {
1705
+ const errorMessage = errorProjects.map((project) => {
1706
+ const relativePath = shortenPath(project.configDir);
1707
+ return `${relativePath}:
1708
+ ${project.error.stack || project.error.message}`;
1709
+ }).join("\n");
1710
+ throw new Error(
1711
+ `\u274C Storybook found errors while collecting data for the following projects:
1712
+ ${errorMessage}
1713
+ Please fix the errors and run the upgrade command again.`
1714
+ );
1715
+ }
1716
+ const selectedProjects = await handleMultipleProjects(
1717
+ validProjects,
1718
+ errorProjects,
1719
+ detectedConfigDirs,
1720
+ options.yes
1721
+ );
1722
+ return selectedProjects ? { allProjects: validProjects, selectedProjects } : void 0;
1723
+ } catch (error) {
1724
+ if (!(error instanceof HandledError)) {
1725
+ logger2.error("Failed to get projects");
1726
+ }
1727
+ throw error;
1728
+ }
1729
+ }, "getProjects");
1730
+ var findFilesUp = /* @__PURE__ */ __name((matchers, cwd) => {
1731
+ const matchingFiles = [];
1732
+ findUpMultipleSync(
1733
+ (directory) => {
1734
+ matchingFiles.push(
1735
+ ...globbySync(matchers, {
1736
+ gitignore: true,
1737
+ cwd: directory
1738
+ })
1739
+ );
1740
+ return void 0;
1741
+ },
1742
+ {
1743
+ cwd,
1744
+ stopAt: getProjectRoot()
1745
+ }
1746
+ );
1747
+ return matchingFiles;
1748
+ }, "findFilesUp");
1749
+ var getStoriesPathsFromConfig = /* @__PURE__ */ __name(async ({
1750
+ stories,
1751
+ configDir,
1752
+ workingDir
1753
+ }) => {
1754
+ if (stories.length === 0) {
1755
+ return [];
1756
+ }
1757
+ const normalizedStories = normalizeStories(stories, {
1758
+ configDir,
1759
+ workingDir
1760
+ });
1761
+ const matchingStoryFiles = await StoryIndexGenerator.findMatchingFilesForSpecifiers(
1762
+ normalizedStories,
1763
+ workingDir,
1764
+ true
1765
+ );
1766
+ const storiesPaths = matchingStoryFiles.flatMap(([specifier, cache]) => {
1767
+ return StoryIndexGenerator.storyFileNames(/* @__PURE__ */ new Map([[specifier, cache]]));
1768
+ });
1769
+ return storiesPaths;
1770
+ }, "getStoriesPathsFromConfig");
1771
+
1772
+ // src/autoblock/utils.ts
1773
+ var typedKeys = /* @__PURE__ */ __name((obj) => Object.keys(obj), "typedKeys");
1774
+ async function findOutdatedPackage(minimalVersionsMap, options) {
1775
+ const list = await Promise.all(
1776
+ typedKeys(minimalVersionsMap).map(async (packageName) => ({
1777
+ packageName,
1778
+ installedVersion: (await options.packageManager.getModulePackageJSON(packageName))?.version ?? null,
1779
+ minimumVersion: minimalVersionsMap[packageName]
1780
+ }))
1781
+ );
1782
+ return list.reduce(
1783
+ (acc, { installedVersion, minimumVersion, packageName }) => {
1784
+ if (acc) {
1785
+ return acc;
1786
+ }
1787
+ if (packageName && installedVersion && (0, import_semver2.lt)(installedVersion, minimumVersion)) {
1788
+ return {
1789
+ installedVersion,
1790
+ packageName,
1791
+ minimumVersion
1792
+ };
1793
+ }
1794
+ return acc;
1795
+ },
1796
+ false
1797
+ );
1798
+ }
1799
+ __name(findOutdatedPackage, "findOutdatedPackage");
1800
+ function processAutoblockerResults(projects, onError) {
1801
+ const autoblockerMessagesMap = /* @__PURE__ */ new Map();
1802
+ projects.forEach((result) => {
1803
+ result.autoblockerCheckResults?.forEach((blocker) => {
1804
+ if (blocker.result === null || blocker.result === false) {
1805
+ return;
1806
+ }
1807
+ const blockerResult = blocker.blocker.log(blocker.result);
1808
+ const message = blockerResult.message;
1809
+ const link = blockerResult.link;
1810
+ if (autoblockerMessagesMap.has(message)) {
1811
+ autoblockerMessagesMap.get(message).configDirs.push(result.configDir);
1812
+ } else {
1813
+ autoblockerMessagesMap.set(message, {
1814
+ title: blockerResult.title,
1815
+ message,
1816
+ link,
1817
+ configDirs: [result.configDir]
1818
+ });
1819
+ }
1820
+ });
1821
+ });
1822
+ const autoblockerMessages = Array.from(autoblockerMessagesMap.values());
1823
+ if (autoblockerMessages.length > 0) {
1824
+ const formatConfigDirs = /* @__PURE__ */ __name((configDirs) => {
1825
+ const baseMessage = "Affected projects:";
1826
+ const relativeDirs = configDirs.map((dir) => shortenPath(dir) || ".");
1827
+ if (relativeDirs.length <= 3) {
1828
+ return `${baseMessage} ${relativeDirs.join(", ")}`;
1829
+ }
1830
+ const remaining = relativeDirs.length - 3;
1831
+ return `${baseMessage} ${relativeDirs.slice(0, 3).join(", ")}${remaining > 0 ? ` and ${remaining} more...` : ""}`;
1832
+ }, "formatConfigDirs");
1833
+ const formattedMessages = autoblockerMessages.map((item) => {
1834
+ let message = `${CLI_COLORS.warning(item.title)}
1835
+
1836
+ ${item.message}
1837
+
1838
+ ${formatConfigDirs(item.configDirs)}`;
1839
+ if (item.link) {
1840
+ message += `
1841
+
1842
+ More information: ${item.link}`;
1843
+ }
1844
+ return message;
1845
+ });
1846
+ onError(
1847
+ `Storybook has found potential blockers that need to be resolved before upgrading:
1848
+
1849
+ ${[...formattedMessages].join(`
1850
+
1851
+ `)}
1852
+
1853
+ ---
1854
+
1855
+ After addressing this, you can try running the upgrade command again. You can also rerun the upgrade command with the ${CLI_COLORS.info("--force")} flag to skip the blocker check and to proceed with the upgrade.`
1856
+ );
1857
+ return true;
1858
+ }
1859
+ return false;
1860
+ }
1861
+ __name(processAutoblockerResults, "processAutoblockerResults");
1862
+
1863
+ export {
1864
+ require_picocolors,
1865
+ findOutdatedPackage,
1866
+ processAutoblockerResults,
1867
+ upgradeStorybookDependencies,
1868
+ shortenPath,
1869
+ getProjects,
1870
+ findFilesUp,
1871
+ getFrameworkPackageName,
1872
+ getStorybookData,
1873
+ updateMainConfig
1874
+ };