react-doctor 0.9.12 → 0.9.13-dev.fd23edc

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.
Files changed (52) hide show
  1. package/README.md +34 -1
  2. package/bin/react-doctor.js +1 -9
  3. package/dist/active-run-trace-dlIZeEvb.js +18 -0
  4. package/dist/active-scan-abort-registry-DwG6tSPy.js +28 -0
  5. package/dist/{build-section-divider-BsQvH-7I.js → build-section-divider-CUtO-gXD.js} +10 -25
  6. package/dist/{ci-B4x4RjKD.js → ci-DjilJaw4.js} +13 -12
  7. package/dist/cli.js +121 -41
  8. package/dist/{design-A48PNCf_.js → design-CXLKbARh.js} +4 -4
  9. package/dist/{devtools-DPRVRu3S.js → devtools-CC2PAZ85.js} +4 -4
  10. package/dist/{exit-gracefully-Bk531kS-.js → exit-gracefully-DTLgxZZ5.js} +15 -9
  11. package/dist/get-east-asian-width-Bv2TD3Xj.js +444 -0
  12. package/dist/{report-error-Pb2uO8EG.js → handle-error-BqaqFvmc.js} +18 -68
  13. package/dist/index.d.ts +53 -42
  14. package/dist/index.js +55119 -54689
  15. package/dist/{inspect-CwH84aSA.js → inspect-BIfnzKGq.js} +44 -33
  16. package/dist/{install-doctor-script-DLayXS7q.js → install-doctor-script-B1U08lUD.js} +7 -449
  17. package/dist/{install-github-workflow-Goz-KFqb.js → install-github-workflow-CkOl0wCn.js} +10 -6
  18. package/dist/{install-sFN_w425.js → install-nhJ65X-y.js} +9 -8
  19. package/dist/{install-react-doctor-Bq7dfEBI.js → install-react-doctor-Dm35Egex.js} +47 -45
  20. package/dist/{run-scan-app-DXBMW54J.js → jsx-runtime-C1t3eR6p.js} +281 -2759
  21. package/dist/path-format-DnHpmJwG.js +9 -0
  22. package/dist/{print-branded-header-D_J8Qdsj.js → print-branded-header-qOJiGkuW.js} +4 -4
  23. package/dist/project-analysis-worker.d.ts +1 -0
  24. package/dist/project-analysis-worker.js +51901 -0
  25. package/dist/prompt-runtime-scan-url-m88LMtMP.js +240 -0
  26. package/dist/{read-object-file-Hk79zI91.js → read-object-file-Cv41FpZo.js} +4 -4
  27. package/dist/{record-metric-CsQXJewH.js → record-metric-u8youmM2.js} +3257 -6019
  28. package/dist/report-error-CkFgxJTQ.js +64 -0
  29. package/dist/{report-workflow-result-6n_wSqzA.js → report-workflow-result-Wh1SQuOu.js} +5 -5
  30. package/dist/{resolve-scope-DP6rYlNO.js → resolve-scope-CHCpJtks.js} +8 -10
  31. package/dist/{rules-BnIZ4Fq_.js → rules-C30QFptP.js} +6 -6
  32. package/dist/run-scan-app-yTBDucJ3.js +2511 -0
  33. package/dist/runtime-scan/browser-probe.iife.js +855 -0
  34. package/dist/runtime-scan-VH25Yf8H.js +770 -0
  35. package/dist/sanitize-runtime-url-crVHbQlW.js +76 -0
  36. package/dist/scan-CNSRWEtJ.js +47 -0
  37. package/dist/semver-DFtnEmN-.js +3219 -0
  38. package/dist/{should-fail-scan-gate-DzZuTxim.js → should-fail-scan-gate-Cw6KeoRT.js} +160 -184
  39. package/dist/{should-skip-prompts-D1GWG2qN.js → should-skip-prompts-B5zkkkKR.js} +4 -4
  40. package/dist/should-use-tui-S9255AG_.js +25 -0
  41. package/dist/skills/improve-threejs/SKILL.md +102 -0
  42. package/dist/skills/performance/SKILL.md +113 -0
  43. package/dist/skills/react-doctor/SKILL.md +6 -0
  44. package/dist/{unref-stdin-0a_0uwC6.js → telemetry-runtime-B2rpGWMl.js} +57 -33
  45. package/dist/unref-stdin-SK3WfwxS.js +12 -0
  46. package/dist/{version-Bo5QDp7F.js → version-KQbGQSGN.js} +4 -4
  47. package/dist/{why-BFYbtnm8.js → why-B-l2qTCV.js} +4 -4
  48. package/dist/with-run-span-Dk1M8cnH.js +110 -0
  49. package/package.json +9 -10
  50. package/dist/chunk-q7NCDQ7-.js +0 -28
  51. package/dist/lsp.js +0 -81145
  52. package/dist/scan-CnnXz78m.js +0 -53
@@ -1,8 +1,9 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b03ec39f-1fdc-5feb-ba0a-80af779ff84f")}catch(e){}}();
3
- import { d as isJsonModeActive, m as writeJsonErrorReport } from "./record-metric-CsQXJewH.js";
4
- import { s as shutdownTelemetry } from "./unref-stdin-0a_0uwC6.js";
5
- import { i as flushSentry, n as buildFooterLinkLines, r as activeScanAbortRegistry, t as buildSectionDivider } from "./build-section-divider-BsQvH-7I.js";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ac280e3d-f449-54c6-95f5-93b1fbe35579")}catch(e){}}();
3
+ import { d as isJsonModeActive, m as writeJsonCancellationReport } from "./record-metric-u8youmM2.js";
4
+ import { n as shutdownTelemetry } from "./telemetry-runtime-B2rpGWMl.js";
5
+ import { n as buildFooterLinkLines, r as flushSentry, t as buildSectionDivider } from "./build-section-divider-CUtO-gXD.js";
6
+ import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-DwG6tSPy.js";
6
7
  //#region src/cli/utils/active-tui-renderer.ts
7
8
  let activeTuiRenderer = null;
8
9
  const registerActiveTuiRenderer = (renderer) => {
@@ -22,14 +23,15 @@ let didStartExiting = false;
22
23
  const exitGracefully = () => {
23
24
  if (didStartExiting) return process.exit(130);
24
25
  didStartExiting = true;
26
+ let activeScanCleanup = Promise.resolve();
25
27
  try {
26
- activeScanAbortRegistry.abortAll();
28
+ activeScanCleanup = activeScanAbortRegistry.abortAll();
27
29
  } catch {}
28
30
  try {
29
31
  preserveActiveTuiRendererOutput();
30
32
  } catch {}
31
33
  try {
32
- if (isJsonModeActive()) writeJsonErrorReport(/* @__PURE__ */ new Error("Scan cancelled by user (SIGINT/SIGTERM)"));
34
+ if (isJsonModeActive()) writeJsonCancellationReport();
33
35
  else console.log([
34
36
  "",
35
37
  "Cancelled.",
@@ -39,10 +41,14 @@ const exitGracefully = () => {
39
41
  ...buildFooterLinkLines({ shareUrl: null })
40
42
  ].join("\n"));
41
43
  } catch {}
42
- Promise.all([flushSentry(), shutdownTelemetry()]).finally(() => process.exit(130));
44
+ Promise.all([
45
+ activeScanCleanup,
46
+ flushSentry(),
47
+ shutdownTelemetry()
48
+ ]).finally(() => process.exit(130));
43
49
  };
44
50
  //#endregion
45
51
  export { registerActiveTuiRenderer as n, exitGracefully as t };
46
52
 
47
- //# sourceMappingURL=exit-gracefully-Bk531kS-.js.map
48
- //# debugId=b03ec39f-1fdc-5feb-ba0a-80af779ff84f
53
+ //# sourceMappingURL=exit-gracefully-DTLgxZZ5.js.map
54
+ //# debugId=ac280e3d-f449-54c6-95f5-93b1fbe35579
@@ -0,0 +1,444 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="db817079-8f8f-50ee-bae1-5d0182c74255")}catch(e){}}();
3
+ import process from "node:process";
4
+ import os from "node:os";
5
+ import tty from "node:tty";
6
+ //#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
7
+ const ANSI_BACKGROUND_OFFSET = 10;
8
+ const wrapAnsi16 = (offset = 0) => (code) => `\u001B[${code + offset}m`;
9
+ const wrapAnsi256 = (offset = 0) => (code) => `\u001B[${38 + offset};5;${code}m`;
10
+ const wrapAnsi16m = (offset = 0) => (red, green, blue) => `\u001B[${38 + offset};2;${red};${green};${blue}m`;
11
+ const styles$1 = {
12
+ modifier: {
13
+ reset: [0, 0],
14
+ bold: [1, 22],
15
+ dim: [2, 22],
16
+ italic: [3, 23],
17
+ underline: [4, 24],
18
+ overline: [53, 55],
19
+ inverse: [7, 27],
20
+ hidden: [8, 28],
21
+ strikethrough: [9, 29]
22
+ },
23
+ color: {
24
+ black: [30, 39],
25
+ red: [31, 39],
26
+ green: [32, 39],
27
+ yellow: [33, 39],
28
+ blue: [34, 39],
29
+ magenta: [35, 39],
30
+ cyan: [36, 39],
31
+ white: [37, 39],
32
+ blackBright: [90, 39],
33
+ gray: [90, 39],
34
+ grey: [90, 39],
35
+ redBright: [91, 39],
36
+ greenBright: [92, 39],
37
+ yellowBright: [93, 39],
38
+ blueBright: [94, 39],
39
+ magentaBright: [95, 39],
40
+ cyanBright: [96, 39],
41
+ whiteBright: [97, 39]
42
+ },
43
+ bgColor: {
44
+ bgBlack: [40, 49],
45
+ bgRed: [41, 49],
46
+ bgGreen: [42, 49],
47
+ bgYellow: [43, 49],
48
+ bgBlue: [44, 49],
49
+ bgMagenta: [45, 49],
50
+ bgCyan: [46, 49],
51
+ bgWhite: [47, 49],
52
+ bgBlackBright: [100, 49],
53
+ bgGray: [100, 49],
54
+ bgGrey: [100, 49],
55
+ bgRedBright: [101, 49],
56
+ bgGreenBright: [102, 49],
57
+ bgYellowBright: [103, 49],
58
+ bgBlueBright: [104, 49],
59
+ bgMagentaBright: [105, 49],
60
+ bgCyanBright: [106, 49],
61
+ bgWhiteBright: [107, 49]
62
+ }
63
+ };
64
+ Object.keys(styles$1.modifier);
65
+ const foregroundColorNames = Object.keys(styles$1.color);
66
+ const backgroundColorNames = Object.keys(styles$1.bgColor);
67
+ [...foregroundColorNames, ...backgroundColorNames];
68
+ function assembleStyles() {
69
+ const codes = /* @__PURE__ */ new Map();
70
+ for (const [groupName, group] of Object.entries(styles$1)) {
71
+ for (const [styleName, style] of Object.entries(group)) {
72
+ styles$1[styleName] = {
73
+ open: `\u001B[${style[0]}m`,
74
+ close: `\u001B[${style[1]}m`
75
+ };
76
+ group[styleName] = styles$1[styleName];
77
+ codes.set(style[0], style[1]);
78
+ }
79
+ Object.defineProperty(styles$1, groupName, {
80
+ value: group,
81
+ enumerable: false
82
+ });
83
+ }
84
+ Object.defineProperty(styles$1, "codes", {
85
+ value: codes,
86
+ enumerable: false
87
+ });
88
+ styles$1.color.close = "\x1B[39m";
89
+ styles$1.bgColor.close = "\x1B[49m";
90
+ styles$1.color.ansi = wrapAnsi16();
91
+ styles$1.color.ansi256 = wrapAnsi256();
92
+ styles$1.color.ansi16m = wrapAnsi16m();
93
+ styles$1.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
94
+ styles$1.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
95
+ styles$1.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
96
+ Object.defineProperties(styles$1, {
97
+ rgbToAnsi256: {
98
+ value(red, green, blue) {
99
+ if (red === green && green === blue) {
100
+ if (red < 8) return 16;
101
+ if (red > 248) return 231;
102
+ return Math.round((red - 8) / 247 * 24) + 232;
103
+ }
104
+ return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
105
+ },
106
+ enumerable: false
107
+ },
108
+ hexToRgb: {
109
+ value(hex) {
110
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
111
+ if (!matches) return [
112
+ 0,
113
+ 0,
114
+ 0
115
+ ];
116
+ let [colorString] = matches;
117
+ if (colorString.length === 3) colorString = [...colorString].map((character) => character + character).join("");
118
+ const integer = Number.parseInt(colorString, 16);
119
+ return [
120
+ integer >> 16 & 255,
121
+ integer >> 8 & 255,
122
+ integer & 255
123
+ ];
124
+ },
125
+ enumerable: false
126
+ },
127
+ hexToAnsi256: {
128
+ value: (hex) => styles$1.rgbToAnsi256(...styles$1.hexToRgb(hex)),
129
+ enumerable: false
130
+ },
131
+ ansi256ToAnsi: {
132
+ value(code) {
133
+ if (code < 8) return 30 + code;
134
+ if (code < 16) return 90 + (code - 8);
135
+ let red;
136
+ let green;
137
+ let blue;
138
+ if (code >= 232) {
139
+ red = ((code - 232) * 10 + 8) / 255;
140
+ green = red;
141
+ blue = red;
142
+ } else {
143
+ code -= 16;
144
+ const remainder = code % 36;
145
+ red = Math.floor(code / 36) / 5;
146
+ green = Math.floor(remainder / 6) / 5;
147
+ blue = remainder % 6 / 5;
148
+ }
149
+ const value = Math.max(red, green, blue) * 2;
150
+ if (value === 0) return 30;
151
+ let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
152
+ if (value === 2) result += 60;
153
+ return result;
154
+ },
155
+ enumerable: false
156
+ },
157
+ rgbToAnsi: {
158
+ value: (red, green, blue) => styles$1.ansi256ToAnsi(styles$1.rgbToAnsi256(red, green, blue)),
159
+ enumerable: false
160
+ },
161
+ hexToAnsi: {
162
+ value: (hex) => styles$1.ansi256ToAnsi(styles$1.hexToAnsi256(hex)),
163
+ enumerable: false
164
+ }
165
+ });
166
+ return styles$1;
167
+ }
168
+ const ansiStyles = assembleStyles();
169
+ //#endregion
170
+ //#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
171
+ function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {
172
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
173
+ const position = argv.indexOf(prefix + flag);
174
+ const terminatorPosition = argv.indexOf("--");
175
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
176
+ }
177
+ const { env: env$1 } = process;
178
+ let flagForceColor;
179
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) flagForceColor = 0;
180
+ else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) flagForceColor = 1;
181
+ function envForceColor() {
182
+ if ("FORCE_COLOR" in env$1) {
183
+ if (env$1.FORCE_COLOR === "true") return 1;
184
+ if (env$1.FORCE_COLOR === "false") return 0;
185
+ return env$1.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env$1.FORCE_COLOR, 10), 3);
186
+ }
187
+ }
188
+ function translateLevel(level) {
189
+ if (level === 0) return false;
190
+ return {
191
+ level,
192
+ hasBasic: true,
193
+ has256: level >= 2,
194
+ has16m: level >= 3
195
+ };
196
+ }
197
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
198
+ const noFlagForceColor = envForceColor();
199
+ if (noFlagForceColor !== void 0) flagForceColor = noFlagForceColor;
200
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
201
+ if (forceColor === 0) return 0;
202
+ if (sniffFlags) {
203
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) return 3;
204
+ if (hasFlag("color=256")) return 2;
205
+ }
206
+ if ("TF_BUILD" in env$1 && "AGENT_NAME" in env$1) return 1;
207
+ if (haveStream && !streamIsTTY && forceColor === void 0) return 0;
208
+ const min = forceColor || 0;
209
+ if (env$1.TERM === "dumb") return min;
210
+ if (process.platform === "win32") {
211
+ const osRelease = os.release().split(".");
212
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
213
+ return 1;
214
+ }
215
+ if ("CI" in env$1) {
216
+ if ([
217
+ "GITHUB_ACTIONS",
218
+ "GITEA_ACTIONS",
219
+ "CIRCLECI"
220
+ ].some((key) => key in env$1)) return 3;
221
+ if ([
222
+ "TRAVIS",
223
+ "APPVEYOR",
224
+ "GITLAB_CI",
225
+ "BUILDKITE",
226
+ "DRONE"
227
+ ].some((sign) => sign in env$1) || env$1.CI_NAME === "codeship") return 1;
228
+ return min;
229
+ }
230
+ if ("TEAMCITY_VERSION" in env$1) return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env$1.TEAMCITY_VERSION) ? 1 : 0;
231
+ if (env$1.COLORTERM === "truecolor") return 3;
232
+ if (env$1.TERM === "xterm-kitty") return 3;
233
+ if (env$1.TERM === "xterm-ghostty") return 3;
234
+ if (env$1.TERM === "wezterm") return 3;
235
+ if ("TERM_PROGRAM" in env$1) {
236
+ const version = Number.parseInt((env$1.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
237
+ switch (env$1.TERM_PROGRAM) {
238
+ case "iTerm.app": return version >= 3 ? 3 : 2;
239
+ case "Apple_Terminal": return 2;
240
+ }
241
+ }
242
+ if (/-256(color)?$/i.test(env$1.TERM)) return 2;
243
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env$1.TERM)) return 1;
244
+ if ("COLORTERM" in env$1) return 1;
245
+ return min;
246
+ }
247
+ function createSupportsColor(stream, options = {}) {
248
+ return translateLevel(_supportsColor(stream, {
249
+ streamIsTTY: stream && stream.isTTY,
250
+ ...options
251
+ }));
252
+ }
253
+ const supportsColor = {
254
+ stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
255
+ stderr: createSupportsColor({ isTTY: tty.isatty(2) })
256
+ };
257
+ //#endregion
258
+ //#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js
259
+ function stringReplaceAll(string, substring, replacer) {
260
+ let index = string.indexOf(substring);
261
+ if (index === -1) return string;
262
+ const substringLength = substring.length;
263
+ let endIndex = 0;
264
+ let returnValue = "";
265
+ do {
266
+ returnValue += string.slice(endIndex, index) + substring + replacer;
267
+ endIndex = index + substringLength;
268
+ index = string.indexOf(substring, endIndex);
269
+ } while (index !== -1);
270
+ returnValue += string.slice(endIndex);
271
+ return returnValue;
272
+ }
273
+ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
274
+ let endIndex = 0;
275
+ let returnValue = "";
276
+ do {
277
+ const gotCR = string[index - 1] === "\r";
278
+ returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
279
+ endIndex = index + 1;
280
+ index = string.indexOf("\n", endIndex);
281
+ } while (index !== -1);
282
+ returnValue += string.slice(endIndex);
283
+ return returnValue;
284
+ }
285
+ //#endregion
286
+ //#region ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js
287
+ const { stdout: stdoutColor, stderr: stderrColor } = supportsColor;
288
+ const GENERATOR = Symbol("GENERATOR");
289
+ const STYLER = Symbol("STYLER");
290
+ const IS_EMPTY = Symbol("IS_EMPTY");
291
+ const levelMapping = [
292
+ "ansi",
293
+ "ansi",
294
+ "ansi256",
295
+ "ansi16m"
296
+ ];
297
+ const styles = Object.create(null);
298
+ const applyOptions = (object, options = {}) => {
299
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) throw new Error("The `level` option should be an integer from 0 to 3");
300
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
301
+ object.level = options.level === void 0 ? colorLevel : options.level;
302
+ };
303
+ const chalkFactory = (options) => {
304
+ const chalk = (...strings) => strings.join(" ");
305
+ applyOptions(chalk, options);
306
+ Object.setPrototypeOf(chalk, createChalk.prototype);
307
+ return chalk;
308
+ };
309
+ function createChalk(options) {
310
+ return chalkFactory(options);
311
+ }
312
+ Object.setPrototypeOf(createChalk.prototype, Function.prototype);
313
+ for (const [styleName, style] of Object.entries(ansiStyles)) styles[styleName] = { get() {
314
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
315
+ Object.defineProperty(this, styleName, { value: builder });
316
+ return builder;
317
+ } };
318
+ styles.visible = { get() {
319
+ const builder = createBuilder(this, this[STYLER], true);
320
+ Object.defineProperty(this, "visible", { value: builder });
321
+ return builder;
322
+ } };
323
+ const getModelAnsi = (model, level, type, ...arguments_) => {
324
+ if (model === "rgb") {
325
+ if (level === "ansi16m") return ansiStyles[type].ansi16m(...arguments_);
326
+ if (level === "ansi256") return ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));
327
+ return ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));
328
+ }
329
+ if (model === "hex") return getModelAnsi("rgb", level, type, ...ansiStyles.hexToRgb(...arguments_));
330
+ return ansiStyles[type][model](...arguments_);
331
+ };
332
+ for (const model of [
333
+ "rgb",
334
+ "hex",
335
+ "ansi256"
336
+ ]) {
337
+ styles[model] = { get() {
338
+ const { level } = this;
339
+ return function(...arguments_) {
340
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansiStyles.color.close, this[STYLER]);
341
+ return createBuilder(this, styler, this[IS_EMPTY]);
342
+ };
343
+ } };
344
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
345
+ styles[bgModel] = { get() {
346
+ const { level } = this;
347
+ return function(...arguments_) {
348
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansiStyles.bgColor.close, this[STYLER]);
349
+ return createBuilder(this, styler, this[IS_EMPTY]);
350
+ };
351
+ } };
352
+ }
353
+ const proto = Object.defineProperties(() => {}, {
354
+ ...styles,
355
+ level: {
356
+ enumerable: true,
357
+ get() {
358
+ return this[GENERATOR].level;
359
+ },
360
+ set(level) {
361
+ this[GENERATOR].level = level;
362
+ }
363
+ }
364
+ });
365
+ const createStyler = (open, close, parent) => {
366
+ let openAll;
367
+ let closeAll;
368
+ if (parent === void 0) {
369
+ openAll = open;
370
+ closeAll = close;
371
+ } else {
372
+ openAll = parent.openAll + open;
373
+ closeAll = close + parent.closeAll;
374
+ }
375
+ return {
376
+ open,
377
+ close,
378
+ openAll,
379
+ closeAll,
380
+ parent
381
+ };
382
+ };
383
+ const createBuilder = (self, _styler, _isEmpty) => {
384
+ const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
385
+ Object.setPrototypeOf(builder, proto);
386
+ builder[GENERATOR] = self;
387
+ builder[STYLER] = _styler;
388
+ builder[IS_EMPTY] = _isEmpty;
389
+ return builder;
390
+ };
391
+ const applyStyle = (self, string) => {
392
+ if (self.level <= 0 || !string) return self[IS_EMPTY] ? "" : string;
393
+ let styler = self[STYLER];
394
+ if (styler === void 0) return string;
395
+ const { openAll, closeAll } = styler;
396
+ if (string.includes("\x1B")) while (styler !== void 0) {
397
+ string = stringReplaceAll(string, styler.close, styler.open);
398
+ styler = styler.parent;
399
+ }
400
+ const lfIndex = string.indexOf("\n");
401
+ if (lfIndex !== -1) string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
402
+ return openAll + string + closeAll;
403
+ };
404
+ Object.defineProperties(createChalk.prototype, styles);
405
+ const chalk = createChalk();
406
+ createChalk({ level: stderrColor ? stderrColor.level : 0 });
407
+ //#endregion
408
+ //#region ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
409
+ function ansiRegex({ onlyFirst = false } = {}) {
410
+ return new RegExp(`(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]`, onlyFirst ? void 0 : "g");
411
+ }
412
+ //#endregion
413
+ //#region ../../node_modules/.pnpm/strip-ansi@7.1.2/node_modules/strip-ansi/index.js
414
+ const regex = ansiRegex();
415
+ function stripAnsi(string) {
416
+ if (typeof string !== "string") throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
417
+ return string.replace(regex, "");
418
+ }
419
+ //#endregion
420
+ //#region ../../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js
421
+ function isAmbiguous(x) {
422
+ return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
423
+ }
424
+ function isFullWidth(x) {
425
+ return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
426
+ }
427
+ function isWide(x) {
428
+ return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x >= 94192 && x <= 94198 || x >= 94208 && x <= 101589 || x >= 101631 && x <= 101662 || x >= 101760 && x <= 101874 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128728 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129674 || x >= 129678 && x <= 129734 || x === 129736 || x >= 129741 && x <= 129756 || x >= 129759 && x <= 129770 || x >= 129775 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
429
+ }
430
+ //#endregion
431
+ //#region ../../node_modules/.pnpm/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js
432
+ function validate(codePoint) {
433
+ if (!Number.isSafeInteger(codePoint)) throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
434
+ }
435
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
436
+ validate(codePoint);
437
+ if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) return 2;
438
+ return 1;
439
+ }
440
+ //#endregion
441
+ export { chalk as a, stripAnsi as i, isFullWidth as n, isWide as r, eastAsianWidth as t };
442
+
443
+ //# sourceMappingURL=get-east-asian-width-Bv2TD3Xj.js.map
444
+ //# debugId=db817079-8f8f-50ee-bae1-5d0182c74255
@@ -1,8 +1,7 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0d91c458-5ff3-5270-bf5b-f8fd8cd192fd")}catch(e){}}();
3
- import { J as CANONICAL_DISCORD_URL, M as SENTRY_FLUSH_TIMEOUT_MS, Un as error, Xn as gen, Xt as formatErrorChain, Y as CANONICAL_GITHUB_URL, Zt as formatReactDoctorError, ar as runSync, cn as highlighter, g as VERSION, gn as isReactDoctorError, l as getRunId, o as buildSentryScope, t as recordCount, un as isErrnoException, w as METRIC } from "./record-metric-CsQXJewH.js";
4
- import { c as isExpectedUserError, i as recordRunTraceId, l as formatEnvironmentError, n as getActiveRunTrace, s as shutdownTelemetry, u as isEnvironmentError } from "./unref-stdin-0a_0uwC6.js";
5
- import * as Sentry from "@sentry/node";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5915d35c-02a8-5e33-8c31-74d9ddd09127")}catch(e){}}();
3
+ import { $n as CANONICAL_DISCORD_URL, An as gen, Cn as error, Ft as formatErrorChain, It as formatReactDoctorError, Kt as highlighter, T as METRIC, Xt as isReactDoctorError, _ as VERSION, br as isErrnoException, er as CANONICAL_GITHUB_URL, t as recordCount, zn as runSync } from "./record-metric-u8youmM2.js";
4
+ import { a as isNpmCacheCorruptionError, i as formatNpmCacheCorruptionError, o as formatEnvironmentError, s as isEnvironmentError } from "./telemetry-runtime-B2rpGWMl.js";
6
5
  //#region src/cli/utils/handle-error.ts
7
6
  const OTLP_ENDPOINT_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_ENDPOINT";
8
7
  const OTLP_AUTH_HEADER_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_AUTH_HEADER";
@@ -86,15 +85,20 @@ const handleError = (error, options = {}) => {
86
85
  };
87
86
  /**
88
87
  * Renderer for expected, user-actionable failures — a bad `--diff` value,
89
- * a base branch that isn't fetched, or environment errors like disk-full or
90
- * permission-denied. Prints just the (already human-readable) message — no
91
- * "Something went wrong", prefilled issue, Discord link, or Sentry reference
92
- * — because there is no bug to report.
88
+ * a base branch that isn't fetched, environment errors like disk-full or
89
+ * permission-denied, or npm cache corruption. Prints just the (already
90
+ * human-readable) message — no "Something went wrong", prefilled issue,
91
+ * Discord link, or Sentry reference — because there is no bug to report.
93
92
  */
94
93
  const handleUserError = (error$1, options = {}) => {
95
- const isEnvError = isEnvironmentError(error$1);
96
- if (isEnvError) recordCount(METRIC.cliEnvironmentError, 1, { code: (isErrnoException(error$1) ? error$1.code : void 0) ?? "unknown" });
97
- const message = isEnvError ? formatEnvironmentError(error$1) : formatErrorForReport(error$1);
94
+ let message = formatErrorForReport(error$1);
95
+ if (isNpmCacheCorruptionError(error$1)) {
96
+ recordCount(METRIC.cliEnvironmentError, 1, { code: "NPX_CACHE_CORRUPTION" });
97
+ message = formatNpmCacheCorruptionError(error$1);
98
+ } else if (isEnvironmentError(error$1)) {
99
+ recordCount(METRIC.cliEnvironmentError, 1, { code: (isErrnoException(error$1) ? error$1.code : void 0) ?? "unknown" });
100
+ message = formatEnvironmentError(error$1);
101
+ }
98
102
  runSync(gen(function* () {
99
103
  yield* error("");
100
104
  yield* error(highlighter.error(message));
@@ -104,61 +108,7 @@ const handleUserError = (error$1, options = {}) => {
104
108
  process.exitCode = 1;
105
109
  };
106
110
  //#endregion
107
- //#region src/cli/utils/report-error.ts
108
- /**
109
- * Sends an error to Sentry — enriched with a fresh snapshot of the current run
110
- * (version, platform, CI/agent, invocation, scanned project) and, when a run
111
- * transaction is in flight, linked to its trace via the scope's propagation
112
- * context so the crash and its transaction share a `trace_id` — then waits for
113
- * delivery before the caller exits. The CLI tears down synchronously after
114
- * rendering an error, so the awaited `flush` is what actually gets the event
115
- * (and any in-flight transaction) off the machine.
116
- *
117
- * Returns the Sentry event id so the caller can surface it as a reference the
118
- * user can quote when reporting the bug; returns `undefined` when Sentry was
119
- * never initialized (`--no-score`, tests, or a missing DSN) or delivery failed.
120
- * Swallows any transport failure so telemetry can never mask the user's
121
- * original error.
122
- */
123
- const reportErrorToSentry = async (error) => {
124
- if (!Sentry.isInitialized()) return void 0;
125
- if (isExpectedUserError(error)) return void 0;
126
- try {
127
- const { tags, contexts } = buildSentryScope();
128
- let reason = "unknown";
129
- if (isReactDoctorError(error)) reason = error.reason._tag;
130
- else if (error instanceof Error) reason = error.name;
131
- recordCount(METRIC.cliError, 1, {
132
- command: typeof tags.command === "string" ? tags.command : void 0,
133
- reason
134
- });
135
- const runTrace = getActiveRunTrace();
136
- const eventId = Sentry.withScope((scope) => {
137
- for (const [name, context] of Object.entries(contexts)) scope.setContext(name, context);
138
- scope.setTags(tags);
139
- if (runTrace) {
140
- scope.setContext("axiom", {
141
- traceId: runTrace.traceId,
142
- runId: getRunId()
143
- });
144
- scope.setPropagationContext({
145
- traceId: runTrace.traceId,
146
- parentSpanId: runTrace.spanId,
147
- sampled: runTrace.sampled,
148
- sampleRand: Math.random()
149
- });
150
- }
151
- recordRunTraceId(scope.getPropagationContext().traceId);
152
- return Sentry.captureException(error);
153
- });
154
- await Promise.all([Sentry.flush(SENTRY_FLUSH_TIMEOUT_MS), shutdownTelemetry()]);
155
- return eventId;
156
- } catch {
157
- return;
158
- }
159
- };
160
- //#endregion
161
- export { handleError as n, handleUserError as r, reportErrorToSentry as t };
111
+ export { handleUserError as n, handleError as t };
162
112
 
163
- //# sourceMappingURL=report-error-Pb2uO8EG.js.map
164
- //# debugId=0d91c458-5ff3-5270-bf5b-f8fd8cd192fd
113
+ //# sourceMappingURL=handle-error-BqaqFvmc.js.map
114
+ //# debugId=5915d35c-02a8-5e33-8c31-74d9ddd09127