react-doctor 0.9.2-dev.86add14 → 0.9.2-dev.b10cd4c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
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]="2a10a6ef-ec19-5a23-88d5-c2e4d5e30eec")}catch(e){}}();
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]="bb982094-8280-5afe-b061-eb103665c55c")}catch(e){}}();
3
3
  import { createRequire } from "node:module";
4
4
  import * as NodeChildProcess from "node:child_process";
5
5
  import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
@@ -20,6 +20,7 @@ import os, { tmpdir } from "node:os";
20
20
  import { parseJSON5 } from "confbox";
21
21
  import { createJiti } from "jiti";
22
22
  import { ANALYZED_MANIFEST_FILENAMES, DEFAULT_EXTENSIONS } from "deslop-js/analyzed-inputs";
23
+ import { convertToTSX } from "@astrojs/compiler/sync";
23
24
  import { gzipSync } from "node:zlib";
24
25
  import * as Sentry from "@sentry/node";
25
26
  import { performance as performance$1 } from "node:perf_hooks";
@@ -13342,7 +13343,7 @@ const Number$4 = globalThis.Number;
13342
13343
  * @category constructors
13343
13344
  * @since 2.0.0
13344
13345
  */
13345
- const parse = (s) => {
13346
+ const parse$1 = (s) => {
13346
13347
  if (s === "NaN") return some(NaN);
13347
13348
  if (s === "Infinity") return some(Infinity);
13348
13349
  if (s === "-Infinity") return some(-Infinity);
@@ -17405,12 +17406,12 @@ TaggedError("EncodingError");
17405
17406
  //#endregion
17406
17407
  //#region ../../node_modules/.pnpm/effect@4.0.0-beta.70/node_modules/effect/dist/internal/schema/annotations.js
17407
17408
  /** @internal */
17408
- function resolve(ast) {
17409
+ function resolve$1(ast) {
17409
17410
  return ast.checks ? ast.checks[ast.checks.length - 1].annotations : ast.annotations;
17410
17411
  }
17411
17412
  /** @internal */
17412
17413
  function resolveAt(key) {
17413
- return (ast) => resolve(ast)?.[key];
17414
+ return (ast) => resolve$1(ast)?.[key];
17414
17415
  }
17415
17416
  /** @internal */
17416
17417
  const resolveIdentifier = /* @__PURE__ */ resolveAt("identifier");
@@ -21162,7 +21163,7 @@ function asSync(parser) {
21162
21163
  }
21163
21164
  const recur$1 = /* @__PURE__ */ memoize((ast) => {
21164
21165
  let parser;
21165
- const astOptions = resolve(ast)?.["parseOptions"];
21166
+ const astOptions = resolve$1(ast)?.["parseOptions"];
21166
21167
  if (!ast.context && !ast.encoding && !ast.checks) return (ou, options) => {
21167
21168
  parser ??= ast.getParser(recur$1);
21168
21169
  if (astOptions) options = {
@@ -60767,7 +60768,7 @@ var UrlParamsError = class extends TaggedError("UrlParamsError") {};
60767
60768
  * @category converting
60768
60769
  * @since 4.0.0
60769
60770
  */
60770
- const makeUrl = (url, params, hash) => {
60771
+ const makeUrl$1 = (url, params, hash) => {
60771
60772
  try {
60772
60773
  const urlInstance = new URL(url, baseUrl());
60773
60774
  for (let i = 0; i < params.params.length; i++) {
@@ -61401,7 +61402,7 @@ const Proto$2 = {
61401
61402
  const make$10 = (f) => makeWith$1((effect) => flatMap$2(effect, (request) => withFiber((fiber) => {
61402
61403
  const scopedController = scopedRequests.get(request);
61403
61404
  const controller = scopedController ?? new AbortController();
61404
- const urlResult = makeUrl(request.url, request.urlParams, getOrUndefined(request.hash));
61405
+ const urlResult = makeUrl$1(request.url, request.urlParams, getOrUndefined(request.hash));
61405
61406
  if (isFailure(urlResult)) return fail$4(new HttpClientError({ reason: new InvalidUrlError({
61406
61407
  request,
61407
61408
  cause: urlResult.failure
@@ -61840,7 +61841,7 @@ const layer$8 = (loggers, options) => effect(CurrentLoggers, withFiber$1(fnUntra
61840
61841
  * @since 4.0.0
61841
61842
  */
61842
61843
  const policy = /* @__PURE__ */ forever$1.pipe(passthrough$2, /* @__PURE__ */ addDelay((error) => {
61843
- if (isHttpClientError(error) && error.reason._tag === "StatusCodeError" && error.reason.response.status === 429) return succeed$2(seconds(fromUndefinedOr(error.reason.response.headers["retry-after"]).pipe(flatMap$5(parse), getOrElse$1(() => 5))));
61844
+ if (isHttpClientError(error) && error.reason._tag === "StatusCodeError" && error.reason.response.status === 429) return succeed$2(seconds(fromUndefinedOr(error.reason.response.headers["retry-after"]).pipe(flatMap$5(parse$1), getOrElse$1(() => 5))));
61844
61845
  return succeed$2(seconds(1));
61845
61846
  }));
61846
61847
  /**
@@ -64549,6 +64550,428 @@ const layer$1 = /* @__PURE__ */ succeed$3(Path$1)({
64549
64550
  toFileUrl
64550
64551
  });
64551
64552
  //#endregion
64553
+ //#region ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
64554
+ var comma = ",".charCodeAt(0);
64555
+ ";".charCodeAt(0);
64556
+ var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
64557
+ var intToChar = new Uint8Array(64);
64558
+ var charToInt = new Uint8Array(128);
64559
+ for (let i = 0; i < chars.length; i++) {
64560
+ const c = chars.charCodeAt(i);
64561
+ intToChar[i] = c;
64562
+ charToInt[c] = i;
64563
+ }
64564
+ function decodeInteger(reader, relative) {
64565
+ let value = 0;
64566
+ let shift = 0;
64567
+ let integer = 0;
64568
+ do {
64569
+ integer = charToInt[reader.next()];
64570
+ value |= (integer & 31) << shift;
64571
+ shift += 5;
64572
+ } while (integer & 32);
64573
+ const shouldNegate = value & 1;
64574
+ value >>>= 1;
64575
+ if (shouldNegate) value = -2147483648 | -value;
64576
+ return relative + value;
64577
+ }
64578
+ function hasMoreVlq(reader, max) {
64579
+ if (reader.pos >= max) return false;
64580
+ return reader.peek() !== comma;
64581
+ }
64582
+ var StringReader = class {
64583
+ constructor(buffer) {
64584
+ this.pos = 0;
64585
+ this.buffer = buffer;
64586
+ }
64587
+ next() {
64588
+ return this.buffer.charCodeAt(this.pos++);
64589
+ }
64590
+ peek() {
64591
+ return this.buffer.charCodeAt(this.pos);
64592
+ }
64593
+ indexOf(char) {
64594
+ const { buffer, pos } = this;
64595
+ const idx = buffer.indexOf(char, pos);
64596
+ return idx === -1 ? buffer.length : idx;
64597
+ }
64598
+ };
64599
+ function decode(mappings) {
64600
+ const { length } = mappings;
64601
+ const reader = new StringReader(mappings);
64602
+ const decoded = [];
64603
+ let genColumn = 0;
64604
+ let sourcesIndex = 0;
64605
+ let sourceLine = 0;
64606
+ let sourceColumn = 0;
64607
+ let namesIndex = 0;
64608
+ do {
64609
+ const semi = reader.indexOf(";");
64610
+ const line = [];
64611
+ let sorted = true;
64612
+ let lastCol = 0;
64613
+ genColumn = 0;
64614
+ while (reader.pos < semi) {
64615
+ let seg;
64616
+ genColumn = decodeInteger(reader, genColumn);
64617
+ if (genColumn < lastCol) sorted = false;
64618
+ lastCol = genColumn;
64619
+ if (hasMoreVlq(reader, semi)) {
64620
+ sourcesIndex = decodeInteger(reader, sourcesIndex);
64621
+ sourceLine = decodeInteger(reader, sourceLine);
64622
+ sourceColumn = decodeInteger(reader, sourceColumn);
64623
+ if (hasMoreVlq(reader, semi)) {
64624
+ namesIndex = decodeInteger(reader, namesIndex);
64625
+ seg = [
64626
+ genColumn,
64627
+ sourcesIndex,
64628
+ sourceLine,
64629
+ sourceColumn,
64630
+ namesIndex
64631
+ ];
64632
+ } else seg = [
64633
+ genColumn,
64634
+ sourcesIndex,
64635
+ sourceLine,
64636
+ sourceColumn
64637
+ ];
64638
+ } else seg = [genColumn];
64639
+ line.push(seg);
64640
+ reader.pos++;
64641
+ }
64642
+ if (!sorted) sort(line);
64643
+ decoded.push(line);
64644
+ reader.pos = semi + 1;
64645
+ } while (reader.pos <= length);
64646
+ return decoded;
64647
+ }
64648
+ function sort(line) {
64649
+ line.sort(sortComparator$1);
64650
+ }
64651
+ function sortComparator$1(a, b) {
64652
+ return a[0] - b[0];
64653
+ }
64654
+ //#endregion
64655
+ //#region ../../node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
64656
+ const schemeRegex = /^[\w+.-]+:\/\//;
64657
+ /**
64658
+ * Matches the parts of a URL:
64659
+ * 1. Scheme, including ":", guaranteed.
64660
+ * 2. User/password, including "@", optional.
64661
+ * 3. Host, guaranteed.
64662
+ * 4. Port, including ":", optional.
64663
+ * 5. Path, including "/", optional.
64664
+ * 6. Query, including "?", optional.
64665
+ * 7. Hash, including "#", optional.
64666
+ */
64667
+ const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
64668
+ /**
64669
+ * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start
64670
+ * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).
64671
+ *
64672
+ * 1. Host, optional.
64673
+ * 2. Path, which may include "/", guaranteed.
64674
+ * 3. Query, including "?", optional.
64675
+ * 4. Hash, including "#", optional.
64676
+ */
64677
+ const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
64678
+ function isAbsoluteUrl(input) {
64679
+ return schemeRegex.test(input);
64680
+ }
64681
+ function isSchemeRelativeUrl(input) {
64682
+ return input.startsWith("//");
64683
+ }
64684
+ function isAbsolutePath(input) {
64685
+ return input.startsWith("/");
64686
+ }
64687
+ function isFileUrl(input) {
64688
+ return input.startsWith("file:");
64689
+ }
64690
+ function isRelative(input) {
64691
+ return /^[.?#]/.test(input);
64692
+ }
64693
+ function parseAbsoluteUrl(input) {
64694
+ const match = urlRegex.exec(input);
64695
+ return makeUrl(match[1], match[2] || "", match[3], match[4] || "", match[5] || "/", match[6] || "", match[7] || "");
64696
+ }
64697
+ function parseFileUrl(input) {
64698
+ const match = fileRegex.exec(input);
64699
+ const path = match[2];
64700
+ return makeUrl("file:", "", match[1] || "", "", isAbsolutePath(path) ? path : "/" + path, match[3] || "", match[4] || "");
64701
+ }
64702
+ function makeUrl(scheme, user, host, port, path, query, hash) {
64703
+ return {
64704
+ scheme,
64705
+ user,
64706
+ host,
64707
+ port,
64708
+ path,
64709
+ query,
64710
+ hash,
64711
+ type: 7
64712
+ };
64713
+ }
64714
+ function parseUrl(input) {
64715
+ if (isSchemeRelativeUrl(input)) {
64716
+ const url = parseAbsoluteUrl("http:" + input);
64717
+ url.scheme = "";
64718
+ url.type = 6;
64719
+ return url;
64720
+ }
64721
+ if (isAbsolutePath(input)) {
64722
+ const url = parseAbsoluteUrl("http://foo.com" + input);
64723
+ url.scheme = "";
64724
+ url.host = "";
64725
+ url.type = 5;
64726
+ return url;
64727
+ }
64728
+ if (isFileUrl(input)) return parseFileUrl(input);
64729
+ if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);
64730
+ const url = parseAbsoluteUrl("http://foo.com/" + input);
64731
+ url.scheme = "";
64732
+ url.host = "";
64733
+ url.type = input ? input.startsWith("?") ? 3 : input.startsWith("#") ? 2 : 4 : 1;
64734
+ return url;
64735
+ }
64736
+ function stripPathFilename(path) {
64737
+ if (path.endsWith("/..")) return path;
64738
+ const index = path.lastIndexOf("/");
64739
+ return path.slice(0, index + 1);
64740
+ }
64741
+ function mergePaths(url, base) {
64742
+ normalizePath(base, base.type);
64743
+ if (url.path === "/") url.path = base.path;
64744
+ else url.path = stripPathFilename(base.path) + url.path;
64745
+ }
64746
+ /**
64747
+ * The path can have empty directories "//", unneeded parents "foo/..", or current directory
64748
+ * "foo/.". We need to normalize to a standard representation.
64749
+ */
64750
+ function normalizePath(url, type) {
64751
+ const rel = type <= 4;
64752
+ const pieces = url.path.split("/");
64753
+ let pointer = 1;
64754
+ let positive = 0;
64755
+ let addTrailingSlash = false;
64756
+ for (let i = 1; i < pieces.length; i++) {
64757
+ const piece = pieces[i];
64758
+ if (!piece) {
64759
+ addTrailingSlash = true;
64760
+ continue;
64761
+ }
64762
+ addTrailingSlash = false;
64763
+ if (piece === ".") continue;
64764
+ if (piece === "..") {
64765
+ if (positive) {
64766
+ addTrailingSlash = true;
64767
+ positive--;
64768
+ pointer--;
64769
+ } else if (rel) pieces[pointer++] = piece;
64770
+ continue;
64771
+ }
64772
+ pieces[pointer++] = piece;
64773
+ positive++;
64774
+ }
64775
+ let path = "";
64776
+ for (let i = 1; i < pointer; i++) path += "/" + pieces[i];
64777
+ if (!path || addTrailingSlash && !path.endsWith("/..")) path += "/";
64778
+ url.path = path;
64779
+ }
64780
+ /**
64781
+ * Attempts to resolve `input` URL/path relative to `base`.
64782
+ */
64783
+ function resolve(input, base) {
64784
+ if (!input && !base) return "";
64785
+ const url = parseUrl(input);
64786
+ let inputType = url.type;
64787
+ if (base && inputType !== 7) {
64788
+ const baseUrl = parseUrl(base);
64789
+ const baseType = baseUrl.type;
64790
+ switch (inputType) {
64791
+ case 1: url.hash = baseUrl.hash;
64792
+ case 2: url.query = baseUrl.query;
64793
+ case 3:
64794
+ case 4: mergePaths(url, baseUrl);
64795
+ case 5:
64796
+ url.user = baseUrl.user;
64797
+ url.host = baseUrl.host;
64798
+ url.port = baseUrl.port;
64799
+ case 6: url.scheme = baseUrl.scheme;
64800
+ }
64801
+ if (baseType > inputType) inputType = baseType;
64802
+ }
64803
+ normalizePath(url, inputType);
64804
+ const queryHash = url.query + url.hash;
64805
+ switch (inputType) {
64806
+ case 2:
64807
+ case 3: return queryHash;
64808
+ case 4: {
64809
+ const path = url.path.slice(1);
64810
+ if (!path) return queryHash || ".";
64811
+ if (isRelative(base || input) && !isRelative(path)) return "./" + path + queryHash;
64812
+ return path + queryHash;
64813
+ }
64814
+ case 5: return url.path + queryHash;
64815
+ default: return url.scheme + "//" + url.user + url.host + url.port + url.path + queryHash;
64816
+ }
64817
+ }
64818
+ //#endregion
64819
+ //#region ../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs
64820
+ function stripFilename(path) {
64821
+ if (!path) return "";
64822
+ const index = path.lastIndexOf("/");
64823
+ return path.slice(0, index + 1);
64824
+ }
64825
+ function resolver(mapUrl, sourceRoot) {
64826
+ const from = stripFilename(mapUrl);
64827
+ const prefix = sourceRoot ? sourceRoot + "/" : "";
64828
+ return (source) => resolve(prefix + (source || ""), from);
64829
+ }
64830
+ var COLUMN = 0;
64831
+ var SOURCES_INDEX = 1;
64832
+ var SOURCE_LINE = 2;
64833
+ var SOURCE_COLUMN = 3;
64834
+ var NAMES_INDEX = 4;
64835
+ function maybeSort(mappings, owned) {
64836
+ const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);
64837
+ if (unsortedIndex === mappings.length) return mappings;
64838
+ if (!owned) mappings = mappings.slice();
64839
+ for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) mappings[i] = sortSegments(mappings[i], owned);
64840
+ return mappings;
64841
+ }
64842
+ function nextUnsortedSegmentLine(mappings, start) {
64843
+ for (let i = start; i < mappings.length; i++) if (!isSorted(mappings[i])) return i;
64844
+ return mappings.length;
64845
+ }
64846
+ function isSorted(line) {
64847
+ for (let j = 1; j < line.length; j++) if (line[j][COLUMN] < line[j - 1][COLUMN]) return false;
64848
+ return true;
64849
+ }
64850
+ function sortSegments(line, owned) {
64851
+ if (!owned) line = line.slice();
64852
+ return line.sort(sortComparator);
64853
+ }
64854
+ function sortComparator(a, b) {
64855
+ return a[COLUMN] - b[COLUMN];
64856
+ }
64857
+ var found = false;
64858
+ function binarySearch(haystack, needle, low, high) {
64859
+ while (low <= high) {
64860
+ const mid = low + (high - low >> 1);
64861
+ const cmp = haystack[mid][COLUMN] - needle;
64862
+ if (cmp === 0) {
64863
+ found = true;
64864
+ return mid;
64865
+ }
64866
+ if (cmp < 0) low = mid + 1;
64867
+ else high = mid - 1;
64868
+ }
64869
+ found = false;
64870
+ return low - 1;
64871
+ }
64872
+ function upperBound(haystack, needle, index) {
64873
+ for (let i = index + 1; i < haystack.length; index = i++) if (haystack[i][COLUMN] !== needle) break;
64874
+ return index;
64875
+ }
64876
+ function lowerBound(haystack, needle, index) {
64877
+ for (let i = index - 1; i >= 0; index = i--) if (haystack[i][COLUMN] !== needle) break;
64878
+ return index;
64879
+ }
64880
+ function memoizedState() {
64881
+ return {
64882
+ lastKey: -1,
64883
+ lastNeedle: -1,
64884
+ lastIndex: -1
64885
+ };
64886
+ }
64887
+ function memoizedBinarySearch(haystack, needle, state, key) {
64888
+ const { lastKey, lastNeedle, lastIndex } = state;
64889
+ let low = 0;
64890
+ let high = haystack.length - 1;
64891
+ if (key === lastKey) {
64892
+ if (needle === lastNeedle) {
64893
+ found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;
64894
+ return lastIndex;
64895
+ }
64896
+ if (needle >= lastNeedle) low = lastIndex === -1 ? 0 : lastIndex;
64897
+ else high = lastIndex;
64898
+ }
64899
+ state.lastKey = key;
64900
+ state.lastNeedle = needle;
64901
+ return state.lastIndex = binarySearch(haystack, needle, low, high);
64902
+ }
64903
+ function parse(map) {
64904
+ return typeof map === "string" ? JSON.parse(map) : map;
64905
+ }
64906
+ var LINE_GTR_ZERO = "`line` must be greater than 0 (lines start at line 1)";
64907
+ var COL_GTR_EQ_ZERO = "`column` must be greater than or equal to 0 (columns start at column 0)";
64908
+ var TraceMap = class {
64909
+ constructor(map, mapUrl) {
64910
+ const isString = typeof map === "string";
64911
+ if (!isString && map._decodedMemo) return map;
64912
+ const parsed = parse(map);
64913
+ const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;
64914
+ this.version = version;
64915
+ this.file = file;
64916
+ this.names = names || [];
64917
+ this.sourceRoot = sourceRoot;
64918
+ this.sources = sources;
64919
+ this.sourcesContent = sourcesContent;
64920
+ this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || void 0;
64921
+ const resolve = resolver(mapUrl, sourceRoot);
64922
+ this.resolvedSources = sources.map(resolve);
64923
+ const { mappings } = parsed;
64924
+ if (typeof mappings === "string") {
64925
+ this._encoded = mappings;
64926
+ this._decoded = void 0;
64927
+ } else if (Array.isArray(mappings)) {
64928
+ this._encoded = void 0;
64929
+ this._decoded = maybeSort(mappings, isString);
64930
+ } else if (parsed.sections) throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`);
64931
+ else throw new Error(`invalid source map: ${JSON.stringify(parsed)}`);
64932
+ this._decodedMemo = memoizedState();
64933
+ this._bySources = void 0;
64934
+ this._bySourceMemos = void 0;
64935
+ }
64936
+ };
64937
+ function cast(map) {
64938
+ return map;
64939
+ }
64940
+ function decodedMappings(map) {
64941
+ var _a;
64942
+ return (_a = cast(map))._decoded || (_a._decoded = decode(cast(map)._encoded));
64943
+ }
64944
+ function originalPositionFor(map, needle) {
64945
+ let { line, column, bias } = needle;
64946
+ line--;
64947
+ if (line < 0) throw new Error(LINE_GTR_ZERO);
64948
+ if (column < 0) throw new Error(COL_GTR_EQ_ZERO);
64949
+ const decoded = decodedMappings(map);
64950
+ if (line >= decoded.length) return OMapping(null, null, null, null);
64951
+ const segments = decoded[line];
64952
+ const index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, bias || 1);
64953
+ if (index === -1) return OMapping(null, null, null, null);
64954
+ const segment = segments[index];
64955
+ if (segment.length === 1) return OMapping(null, null, null, null);
64956
+ const { names, resolvedSources } = map;
64957
+ return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);
64958
+ }
64959
+ function OMapping(source, line, column, name) {
64960
+ return {
64961
+ source,
64962
+ line,
64963
+ column,
64964
+ name
64965
+ };
64966
+ }
64967
+ function traceSegmentInternal(segments, memo, line, column, bias) {
64968
+ let index = memoizedBinarySearch(segments, column, memo, line);
64969
+ if (found) index = (bias === -1 ? upperBound : lowerBound)(segments, column, index);
64970
+ else if (bias === -1) index++;
64971
+ if (index === -1 || index === segments.length) return -1;
64972
+ return index;
64973
+ }
64974
+ //#endregion
64552
64975
  //#region ../core/dist/index.js
64553
64976
  var __create = Object.create;
64554
64977
  var __defProp = Object.defineProperty;
@@ -64618,7 +65041,7 @@ var AmbiguousProjectError = class extends Error {
64618
65041
  };
64619
65042
  const isProjectDiscoveryError = (value) => value instanceof ProjectNotFoundError || value instanceof NoReactDependencyError || value instanceof PackageJsonNotFoundError || value instanceof NotADirectoryError || value instanceof AmbiguousProjectError;
64620
65043
  const HTML_FILE_PATTERN = /\.html$/i;
64621
- const SOURCE_FILE_PATTERN = /\.(?:tsx?|jsx?|mts|mjs|[hH][tT][mM][lL])$/;
65044
+ const SOURCE_FILE_PATTERN = /\.(?:astro|tsx?|jsx?|mts|mjs|[hH][tT][mM][lL])$/;
64622
65045
  const GENERATED_BUNDLE_FILE_PATTERN = /\.(iife|umd|global|min)\.m?js$/i;
64623
65046
  const GENERATED_SOURCE_DIRECTORY_PATTERN = /(?:^|\/)__generated__\//;
64624
65047
  const MINIFIED_SNIFF_BYTES = 65536;
@@ -65375,6 +65798,7 @@ const FRAMEWORK_PACKAGES = {
65375
65798
  "@tanstack/react-start": "tanstack-start",
65376
65799
  "@remix-run/react": "remix",
65377
65800
  gatsby: "gatsby",
65801
+ astro: "astro",
65378
65802
  vite: "vite",
65379
65803
  "react-scripts": "cra",
65380
65804
  expo: "expo",
@@ -74269,6 +74693,50 @@ const columnOfUtf8Offset = (sourceBuffer, utf8Offset) => {
74269
74693
  while (lineStartOffset > 0 && sourceBuffer[lineStartOffset - 1] !== 10) lineStartOffset--;
74270
74694
  return sourceBuffer.subarray(lineStartOffset, boundedOffset).toString("utf8").length + 1;
74271
74695
  };
74696
+ const utf8OffsetFromSourcePosition = (sourceBuffer, lineNumber, zeroBasedColumn) => {
74697
+ if (lineNumber < 1 || zeroBasedColumn < 0) return null;
74698
+ const sourceLines = sourceBuffer.toString("utf8").split("\n");
74699
+ const sourceLine = sourceLines[lineNumber - 1];
74700
+ if (sourceLine === void 0 || zeroBasedColumn > sourceLine.length) return null;
74701
+ const precedingLines = sourceLines.slice(0, lineNumber - 1).join("\n");
74702
+ return (lineNumber === 1 ? 0 : Buffer.byteLength(precedingLines) + Buffer.byteLength("\n")) + Buffer.byteLength(sourceLine.slice(0, zeroBasedColumn));
74703
+ };
74704
+ const mapPreparedSourceSpan = (span, preparedSourceMap) => {
74705
+ const generatedLine = lineOfUtf8Offset(preparedSourceMap.generatedBuffer, span.offset);
74706
+ const generatedColumn = columnOfUtf8Offset(preparedSourceMap.generatedBuffer, span.offset) - 1;
74707
+ const originalStart = originalPositionFor(preparedSourceMap.traceMap, {
74708
+ line: generatedLine,
74709
+ column: generatedColumn
74710
+ });
74711
+ if (originalStart.source === null || originalStart.line === null || originalStart.column === null) return null;
74712
+ const originalOffset = utf8OffsetFromSourcePosition(preparedSourceMap.sourceBuffer, originalStart.line, originalStart.column);
74713
+ if (originalOffset === null) return null;
74714
+ const generatedSpan = preparedSourceMap.generatedBuffer.subarray(span.offset, span.offset + span.length);
74715
+ return {
74716
+ offset: originalOffset,
74717
+ length: preparedSourceMap.sourceBuffer.subarray(originalOffset, originalOffset + generatedSpan.length).equals(generatedSpan) ? generatedSpan.length : 0,
74718
+ line: originalStart.line,
74719
+ column: originalStart.column + 1
74720
+ };
74721
+ };
74722
+ const mapPreparedSourceLabels = (labels, preparedSourceMap) => {
74723
+ const primaryLabel = labels[0];
74724
+ if (primaryLabel === void 0) return null;
74725
+ const primarySpan = mapPreparedSourceSpan(primaryLabel.span, preparedSourceMap);
74726
+ if (primarySpan === null) return null;
74727
+ const mappedLabels = [{
74728
+ ...primaryLabel,
74729
+ span: primarySpan
74730
+ }];
74731
+ for (const relatedLabel of labels.slice(1)) {
74732
+ const relatedSpan = mapPreparedSourceSpan(relatedLabel.span, preparedSourceMap);
74733
+ if (relatedSpan !== null) mappedLabels.push({
74734
+ ...relatedLabel,
74735
+ span: relatedSpan
74736
+ });
74737
+ }
74738
+ return mappedLabels;
74739
+ };
74272
74740
  const REDACTED_PLACEHOLDER = "<redacted>";
74273
74741
  const KEEP_PREFIX = `$1${REDACTED_PLACEHOLDER}`;
74274
74742
  const KNOWN_SECRET_RULES = [
@@ -75013,7 +75481,7 @@ const isOxlintOutput = (value) => isRecord$1(value) && Array.isArray(value.diagn
75013
75481
  * to the first `{`. Raises `OxlintOutputUnparseable` when the
75014
75482
  * stdout isn't valid JSON or doesn't carry a `diagnostics` array.
75015
75483
  */
75016
- const parseOxlintOutput = (stdout, project, rootDirectory, sourcePathByLintPath) => {
75484
+ const parseOxlintOutput = (stdout, project, rootDirectory, sourcePathByLintPath, sourceMapByLintPath) => {
75017
75485
  if (!stdout) return [];
75018
75486
  const jsonStart = stdout.indexOf("{");
75019
75487
  const sanitizedStdout = jsonStart > 0 ? stdout.slice(jsonStart) : stdout;
@@ -75031,6 +75499,7 @@ const parseOxlintOutput = (stdout, project, rootDirectory, sourcePathByLintPath)
75031
75499
  const sourceLinesCache = /* @__PURE__ */ new Map();
75032
75500
  const resolveAbsolutePath = (filename) => Path.isAbsolute(filename) ? filename : Path.resolve(rootDirectory || ".", filename);
75033
75501
  const resolveMappedSourceFilename = (filename) => sourcePathByLintPath?.get(Path.normalize(resolveAbsolutePath(filename)));
75502
+ const resolvePreparedSourceMap = (filename) => sourceMapByLintPath?.get(Path.normalize(resolveAbsolutePath(filename)));
75034
75503
  const resolveSourceFilename = (filename) => resolveMappedSourceFilename(filename) ?? filename;
75035
75504
  const readSourceBuffer = (filename) => {
75036
75505
  const absolutePath = resolveAbsolutePath(resolveSourceFilename(filename));
@@ -75062,7 +75531,19 @@ const parseOxlintOutput = (stdout, project, rootDirectory, sourcePathByLintPath)
75062
75531
  minifiedFileCache.set(absolutePath, minified);
75063
75532
  return minified;
75064
75533
  };
75065
- return suppressMemoizationInBailedOutFunctions(parsed.diagnostics.filter((diagnostic) => isMappableOxlintDiagnostic(diagnostic) && isLintableSourceFile(resolveSourceFilename(diagnostic.filename)) && !(TYPESCRIPT_DECLARATION_FILE_PATTERN.test(diagnostic.filename) && OXLINT_IGNORED_DECLARATION_DIAGNOSTIC_CODES.has(diagnostic.code)) && !isMinifiedDiagnosticFile(diagnostic.filename) && !shouldSuppressLocalUseHookDiagnostic(diagnostic, rootDirectory) && !shouldSuppressCompilerFindingInWorklet(diagnostic, project, rootDirectory)).map((diagnostic) => {
75534
+ return suppressMemoizationInBailedOutFunctions(parsed.diagnostics.flatMap((diagnostic) => {
75535
+ const preparedSourceMap = resolvePreparedSourceMap(diagnostic.filename);
75536
+ if (preparedSourceMap === void 0) return [diagnostic];
75537
+ const { plugin, rule } = parseRuleCode(diagnostic.code);
75538
+ if (plugin !== "react-doctor" || !reactDoctorPlugin.rules[rule]?.tags?.includes("design")) return [];
75539
+ const labels = mapPreparedSourceLabels(diagnostic.labels, preparedSourceMap);
75540
+ const sourceFilename = resolveMappedSourceFilename(diagnostic.filename);
75541
+ return labels === null || sourceFilename === void 0 ? [] : [{
75542
+ ...diagnostic,
75543
+ filename: sourceFilename,
75544
+ labels
75545
+ }];
75546
+ }).filter((diagnostic) => isMappableOxlintDiagnostic(diagnostic) && isLintableSourceFile(resolveSourceFilename(diagnostic.filename)) && !(TYPESCRIPT_DECLARATION_FILE_PATTERN.test(diagnostic.filename) && OXLINT_IGNORED_DECLARATION_DIAGNOSTIC_CODES.has(diagnostic.code)) && !isMinifiedDiagnosticFile(diagnostic.filename) && !shouldSuppressLocalUseHookDiagnostic(diagnostic, rootDirectory) && !shouldSuppressCompilerFindingInWorklet(diagnostic, project, rootDirectory)).map((diagnostic) => {
75066
75547
  const { plugin, rule } = parseRuleCode(diagnostic.code);
75067
75548
  const primaryLabel = diagnostic.labels[0];
75068
75549
  const cleaned = cleanDiagnosticMessage(diagnostic.message, diagnostic.help, plugin, rule, project);
@@ -75280,7 +75761,7 @@ const isParallelismRelatedSpawnError = (error) => {
75280
75761
  * loop with a slimmer config in that case.
75281
75762
  */
75282
75763
  const spawnLintBatches = async (input) => {
75283
- const { baseArgs, fileBatches, rootDirectory, nodeBinaryPath, project, sourcePathByLintPath, onPartialFailure, onFileProgress, spawnTimeoutMs, outputMaxBytes, splitTotalBudgetMs = OXLINT_SPLIT_TOTAL_BUDGET_MS, splitMaxDepth = 8, signal, deadlineEpochMs } = input;
75764
+ const { baseArgs, fileBatches, rootDirectory, nodeBinaryPath, project, sourcePathByLintPath, sourceMapByLintPath, onPartialFailure, onFileProgress, spawnTimeoutMs, outputMaxBytes, splitTotalBudgetMs = OXLINT_SPLIT_TOTAL_BUDGET_MS, splitMaxDepth = 8, signal, deadlineEpochMs } = input;
75284
75765
  const resolveSourcePath = (filePath) => {
75285
75766
  const absoluteFilePath = Path.isAbsolute(filePath) ? filePath : Path.resolve(rootDirectory, filePath);
75286
75767
  return sourcePathByLintPath?.get(Path.normalize(absoluteFilePath)) ?? filePath;
@@ -75304,7 +75785,7 @@ const spawnLintBatches = async (input) => {
75304
75785
  }
75305
75786
  const batchArgs = [...baseArgs, ...batch];
75306
75787
  try {
75307
- return parseOxlintOutput(await spawnOxlint(batchArgs, rootDirectory, nodeBinaryPath, spawnTimeoutMs, outputMaxBytes, signal), project, rootDirectory, sourcePathByLintPath);
75788
+ return parseOxlintOutput(await spawnOxlint(batchArgs, rootDirectory, nodeBinaryPath, spawnTimeoutMs, outputMaxBytes, signal), project, rootDirectory, sourcePathByLintPath, sourceMapByLintPath);
75308
75789
  } catch (error) {
75309
75790
  if (!isSplittableReactDoctorError(error)) throw error;
75310
75791
  if (isPastDeadline()) {
@@ -75743,20 +76224,47 @@ const prepareHtmlScriptSource = (sourceBuffer) => {
75743
76224
  lintBuffer: maskedBuffer ?? sourceBuffer
75744
76225
  };
75745
76226
  };
75746
- const prepareHtmlLintSources = (rootDirectory, temporaryDirectory, candidateFiles) => {
76227
+ const ASTRO_FILE_PATTERN = /\.astro$/;
76228
+ const prepareLintSources = (rootDirectory, temporaryDirectory, candidateFiles) => {
75747
76229
  const lintFiles = [];
75748
76230
  const sourcePathByLintPath = /* @__PURE__ */ new Map();
76231
+ const sourceMapByLintPath = /* @__PURE__ */ new Map();
75749
76232
  const sizeByLintPath = /* @__PURE__ */ new Map();
75750
76233
  const htmlSourcesDirectory = Path.join(temporaryDirectory, "html-sources");
76234
+ const astroSourcesDirectory = Path.join(temporaryDirectory, "astro-sources");
75751
76235
  let htmlFileIndex = 0;
76236
+ let astroFileIndex = 0;
75752
76237
  let hasThreeModuleImport = false;
75753
76238
  for (const candidateFile of candidateFiles) {
75754
- if (!HTML_FILE_PATTERN.test(candidateFile)) {
76239
+ if (!HTML_FILE_PATTERN.test(candidateFile) && !ASTRO_FILE_PATTERN.test(candidateFile)) {
75755
76240
  lintFiles.push(candidateFile);
75756
76241
  continue;
75757
76242
  }
75758
76243
  const absoluteSourcePath = Path.isAbsolute(candidateFile) ? candidateFile : Path.resolve(rootDirectory, candidateFile);
75759
76244
  const sourceBuffer = NFS.readFileSync(absoluteSourcePath);
76245
+ if (ASTRO_FILE_PATTERN.test(candidateFile)) {
76246
+ const compilerSourcePath = absoluteSourcePath.replaceAll("\\", "/");
76247
+ const convertedSource = convertToTSX(sourceBuffer.toString("utf8"), {
76248
+ filename: compilerSourcePath,
76249
+ sourcemap: "external",
76250
+ includeScripts: true
76251
+ });
76252
+ if (astroFileIndex === 0) NFS.mkdirSync(astroSourcesDirectory, { recursive: true });
76253
+ const lintPath = Path.join(astroSourcesDirectory, `${astroFileIndex}.tsx`);
76254
+ const generatedBuffer = Buffer.from(convertedSource.code);
76255
+ NFS.writeFileSync(lintPath, generatedBuffer);
76256
+ lintFiles.push(candidateFile);
76257
+ lintFiles.push(lintPath);
76258
+ sourcePathByLintPath.set(Path.resolve(lintPath), candidateFile);
76259
+ sourceMapByLintPath.set(Path.resolve(lintPath), {
76260
+ traceMap: new TraceMap(JSON.stringify(convertedSource.map)),
76261
+ generatedBuffer,
76262
+ sourceBuffer
76263
+ });
76264
+ sizeByLintPath.set(lintPath, sourceBuffer.length);
76265
+ astroFileIndex++;
76266
+ continue;
76267
+ }
75760
76268
  const { executableScriptBodies, lintBuffer } = prepareHtmlScriptSource(sourceBuffer);
75761
76269
  if (htmlFileIndex === 0) NFS.mkdirSync(htmlSourcesDirectory, { recursive: true });
75762
76270
  const lintPath = Path.join(htmlSourcesDirectory, `${htmlFileIndex}.astro`);
@@ -75770,6 +76278,7 @@ const prepareHtmlLintSources = (rootDirectory, temporaryDirectory, candidateFile
75770
76278
  return {
75771
76279
  lintFiles,
75772
76280
  sourcePathByLintPath,
76281
+ sourceMapByLintPath,
75773
76282
  sizeByLintPath,
75774
76283
  hasThreeModuleImport
75775
76284
  };
@@ -75988,10 +76497,10 @@ const runOxlint = async (options) => {
75988
76497
  rootDirectory,
75989
76498
  candidateFiles
75990
76499
  });
75991
- const preparedHtmlSources = prepareHtmlLintSources(rootDirectory, configDirectory, candidateFiles);
75992
- const lintFiles = preparedHtmlSources.lintFiles;
75993
- const hasHtmlFiles = preparedHtmlSources.sourcePathByLintPath.size > 0;
75994
- const lintProject = !project.hasThree && preparedHtmlSources.hasThreeModuleImport ? {
76500
+ const preparedLintSources = prepareLintSources(rootDirectory, configDirectory, candidateFiles);
76501
+ const lintFiles = preparedLintSources.lintFiles;
76502
+ const hasPreparedFiles = preparedLintSources.sourcePathByLintPath.size > 0;
76503
+ const lintProject = !project.hasThree && preparedLintSources.hasThreeModuleImport ? {
75995
76504
  ...project,
75996
76505
  hasThree: true
75997
76506
  } : project;
@@ -76013,7 +76522,7 @@ const runOxlint = async (options) => {
76013
76522
  sidecarRuleIdFilter: overrides.sidecarRuleIdFilter
76014
76523
  });
76015
76524
  const sizeByFile = sizedScanFiles !== null && lintBatchOrdering === "cost" ? new Map(sizedScanFiles.map((entry) => [entry.path, entry.sizeBytes])) : null;
76016
- if (sizeByFile !== null) for (const [lintPath, sizeBytes] of preparedHtmlSources.sizeByLintPath) sizeByFile.set(lintPath, sizeBytes);
76525
+ if (sizeByFile !== null) for (const [lintPath, sizeBytes] of preparedLintSources.sizeByLintPath) sizeByFile.set(lintPath, sizeBytes);
76017
76526
  const buildFileBatches = (passBaseArgs, passFiles) => sizeByFile !== null ? planLintBatches({
76018
76527
  baseArgs: passBaseArgs,
76019
76528
  files: passFiles,
@@ -76043,7 +76552,8 @@ const runOxlint = async (options) => {
76043
76552
  rootDirectory,
76044
76553
  nodeBinaryPath,
76045
76554
  project: lintProject,
76046
- sourcePathByLintPath: preparedHtmlSources.sourcePathByLintPath,
76555
+ sourcePathByLintPath: preparedLintSources.sourcePathByLintPath,
76556
+ sourceMapByLintPath: preparedLintSources.sourceMapByLintPath,
76047
76557
  onPartialFailure: reportPartialFailure,
76048
76558
  onAnalyzedFiles: (filePaths) => {
76049
76559
  analyzedFiles = filePaths;
@@ -76078,7 +76588,7 @@ const runOxlint = async (options) => {
76078
76588
  };
76079
76589
  }
76080
76590
  };
76081
- if (perFileLintCacheEnabled && !project.hasReactCompiler && project.hasReactCompilerLintPlugin !== true && extendsPaths.length === 0 && userPlugins.length === 0 && !hasHtmlFiles) {
76591
+ if (perFileLintCacheEnabled && !project.hasReactCompiler && project.hasReactCompilerLintPlugin !== true && extendsPaths.length === 0 && userPlugins.length === 0 && !hasPreparedFiles) {
76082
76592
  const rulesetHash = computeRulesetHash({
76083
76593
  config: buildConfig({
76084
76594
  extendsPaths: [],
@@ -76244,7 +76754,8 @@ const runOxlint = async (options) => {
76244
76754
  rootDirectory,
76245
76755
  nodeBinaryPath,
76246
76756
  project: lintProject,
76247
- sourcePathByLintPath: preparedHtmlSources.sourcePathByLintPath,
76757
+ sourcePathByLintPath: preparedLintSources.sourcePathByLintPath,
76758
+ sourceMapByLintPath: preparedLintSources.sourceMapByLintPath,
76248
76759
  onPartialFailure,
76249
76760
  onAnalyzedFiles: (filePaths) => {
76250
76761
  analyzedFiles = filePaths;
@@ -78465,7 +78976,7 @@ const makeNoopConsole = () => ({
78465
78976
  });
78466
78977
  //#endregion
78467
78978
  //#region src/cli/utils/version.ts
78468
- const VERSION = "0.9.2-dev.86add14";
78979
+ const VERSION = "0.9.2-dev.b10cd4c";
78469
78980
  //#endregion
78470
78981
  //#region src/cli/utils/json-mode.ts
78471
78982
  let context = null;
@@ -78823,13 +79334,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
78823
79334
  * uploads source-map artifacts under, so stack frames symbolicate. Honors the
78824
79335
  * standard `SENTRY_RELEASE` override.
78825
79336
  */
78826
- const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.2-dev.86add14`;
79337
+ const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.2-dev.b10cd4c`;
78827
79338
  /**
78828
79339
  * Deployment environment shown in Sentry's environment filter. Defaults to
78829
79340
  * `production` for tagged releases and `development` for dev/unbuilt versions,
78830
79341
  * overridable via the standard `SENTRY_ENVIRONMENT` env var.
78831
79342
  */
78832
- const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.2-dev.86add14") ? "development" : "production");
79343
+ const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.2-dev.b10cd4c") ? "development" : "production");
78833
79344
  /**
78834
79345
  * Performance-tracing sample rate in `[0, 1]`. Reads `SENTRY_TRACES_SAMPLE_RATE`
78835
79346
  * (set to `0` to disable tracing) and falls back to
@@ -97839,4 +98350,4 @@ Promise.resolve().then(() => assertNoRemovedFlags(process.argv)).then(() => prog
97839
98350
  export { toForwardSlashes as A, getCategoryImpact as B, buildRulePriorityMap as C, resolveBlockingLevel as D, formatLearnMoreLine as E, TUI_REPORT_DETAIL_WIDTH_FRACTION as F, runPromise as G, mapWithConcurrency as H, isCiEnvironment as I, succeed$3 as J, sync as K, DIAGNOSTIC_CATEGORY_BUCKETS as L, isUnicodeSupported as M, METRIC as N, isReactDoctorWorkflowInstalled as O, TUI_REPORT_COMPACT_MAX_ROWS as P, Progress as R, hasLintHardFailure as S, formatFixRecipeLine as T, mergeReactDoctorConfigs as U, highlighter as V, resolveScanTarget as W, canAnimateOnboarding as _, resolveCliInspectOptions as a, buildCodeFrame as b, detectLaunchableAgents as c, launchCliAgent as d, isShareOptedOut as f, doctorFace as g, easeOutCubic as h, selectProjects as i, findNearestPackageDirectory as j, recordCount as k, CLI_AGENT_BINARIES as l, printFooter as m, shouldFailScanGate as n, countUniqueScannedFiles as o, inspect as p, void_ as q, discoverWorkspacePackages as r, setUpGitHubActions as s, exitGracefully as t, copyToClipboard as u, computeProjectedScore as v, buildSortedRuleGroups as w, buildNoScoreMessage as x, formatElapsedTime as y, Reporter as z };
97840
98351
 
97841
98352
  //# sourceMappingURL=cli.js.map
97842
- //# debugId=2a10a6ef-ec19-5a23-88d5-c2e4d5e30eec
98353
+ //# debugId=bb982094-8280-5afe-b061-eb103665c55c