react-doctor 0.5.6-dev.431e515 → 0.5.6-dev.5b742fa
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 +14 -47
- package/dist/index.js +11 -44
- package/dist/lsp.js +11 -44
- package/package.json +4 -4
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]="
|
|
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]="54905d6a-f06f-5f80-9fb6-7d4ab857d553")}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";
|
|
@@ -41325,8 +41325,8 @@ const buildUserPluginRules = (userPlugin, severityControls) => {
|
|
|
41325
41325
|
}
|
|
41326
41326
|
return enabled;
|
|
41327
41327
|
};
|
|
41328
|
-
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), serverAuthFunctionNames, severityControls, userPlugins = []
|
|
41329
|
-
const reactHooksJsPlugin =
|
|
41328
|
+
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), serverAuthFunctionNames, severityControls, userPlugins = [] }) => {
|
|
41329
|
+
const reactHooksJsPlugin = resolveReactHooksJsPlugin(project.hasReactCompiler, customRulesOnly);
|
|
41330
41330
|
const reactCompilerRules = reactHooksJsPlugin ? applyRuleSeverityControls(filterRulesToAvailable(REACT_COMPILER_RULES, "react-hooks-js", reactHooksJsPlugin.availableRuleNames), severityControls) : {};
|
|
41331
41331
|
const jsPlugins = [];
|
|
41332
41332
|
if (reactHooksJsPlugin) jsPlugins.push(reactHooksJsPlugin.entry);
|
|
@@ -42023,9 +42023,9 @@ const parseOxlintOutput = (stdout, project, rootDirectory) => {
|
|
|
42023
42023
|
try {
|
|
42024
42024
|
parsed = JSON.parse(sanitizedStdout);
|
|
42025
42025
|
} catch {
|
|
42026
|
-
throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0,
|
|
42026
|
+
throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0, 200) }) });
|
|
42027
42027
|
}
|
|
42028
|
-
if (!isOxlintOutput(parsed)) throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0,
|
|
42028
|
+
if (!isOxlintOutput(parsed)) throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0, 200) }) });
|
|
42029
42029
|
const minifiedFileCache = /* @__PURE__ */ new Map();
|
|
42030
42030
|
const isMinifiedDiagnosticFile = (filename) => {
|
|
42031
42031
|
const absolutePath = Path.isAbsolute(filename) ? filename : Path.resolve(rootDirectory || ".", filename);
|
|
@@ -42316,28 +42316,6 @@ const writeOxlintConfig = (configPath, configToWrite) => {
|
|
|
42316
42316
|
NFS.closeSync(fileHandle);
|
|
42317
42317
|
}
|
|
42318
42318
|
};
|
|
42319
|
-
const REACT_HOOKS_JS_DROP_PREFIX = "React Compiler rules (react-hooks-js/*) skipped — eslint-plugin-react-hooks failed to load in this environment";
|
|
42320
|
-
/**
|
|
42321
|
-
* Detects an oxlint config-load crash caused by the optional
|
|
42322
|
-
* `react-hooks-js` (eslint-plugin-react-hooks) React Compiler plugin and
|
|
42323
|
-
* builds the partial-failure note for it; returns `null` when the failure
|
|
42324
|
-
* was anything else.
|
|
42325
|
-
*
|
|
42326
|
-
* oxlint prints a framed error to stdout (not stderr) and exits non-zero
|
|
42327
|
-
* when a `jsPlugins` entry can't be imported; that non-JSON stdout
|
|
42328
|
-
* surfaces as `OxlintOutputUnparseable`. Because oxlint fails the WHOLE
|
|
42329
|
-
* config load on it, leaving the plugin in would drop every curated
|
|
42330
|
-
* react-doctor diagnostic too — so the caller retries with the plugin
|
|
42331
|
-
* stripped (issue #833). Both markers sit at the start of oxlint's
|
|
42332
|
-
* message, so they survive the `preview` slice even for deep pnpm paths.
|
|
42333
|
-
*/
|
|
42334
|
-
const reactHooksJsPluginDropNote = (error) => {
|
|
42335
|
-
if (!(error instanceof ReactDoctorError) || error.reason._tag !== "OxlintOutputUnparseable") return null;
|
|
42336
|
-
const { preview } = error.reason;
|
|
42337
|
-
if (!preview.includes("Failed to load JS plugin") || !preview.includes("eslint-plugin-react-hooks")) return null;
|
|
42338
|
-
const underlyingReason = preview.match(/Error:[^\n]*/)?.[0]?.trim();
|
|
42339
|
-
return `${REACT_HOOKS_JS_DROP_PREFIX}${underlyingReason ? `: ${underlyingReason}` : ""}. Other rules ran normally.`;
|
|
42340
|
-
};
|
|
42341
42319
|
/**
|
|
42342
42320
|
* The oxlint runner. Composed of three pieces in `runners/oxlint/`:
|
|
42343
42321
|
*
|
|
@@ -42365,16 +42343,15 @@ const runOxlint = async (options) => {
|
|
|
42365
42343
|
const pluginPath = resolvePluginPath();
|
|
42366
42344
|
const extendsPaths = (adoptExistingLintConfig && !customRulesOnly ? detectUserLintConfigPaths(rootDirectory) : []).filter(canOxlintExtendConfig);
|
|
42367
42345
|
const userPlugins = resolveUserPlugins(userConfig?.plugins, configSourceDirectory);
|
|
42368
|
-
const buildConfig = (
|
|
42346
|
+
const buildConfig = (extendsForThisAttempt) => createOxlintConfig({
|
|
42369
42347
|
pluginPath,
|
|
42370
42348
|
project,
|
|
42371
42349
|
customRulesOnly,
|
|
42372
|
-
extendsPaths:
|
|
42350
|
+
extendsPaths: extendsForThisAttempt,
|
|
42373
42351
|
ignoredTags,
|
|
42374
42352
|
serverAuthFunctionNames,
|
|
42375
42353
|
severityControls,
|
|
42376
|
-
userPlugins
|
|
42377
|
-
disableReactHooksJsPlugin: overrides.disableReactHooksJsPlugin
|
|
42354
|
+
userPlugins
|
|
42378
42355
|
});
|
|
42379
42356
|
const restoreDisableDirectives = respectInlineDisables ? () => {} : await neutralizeDisableDirectives(rootDirectory, includePaths);
|
|
42380
42357
|
const configDirectory = NFS.mkdtempSync(Path.join(os.tmpdir(), "react-doctor-oxlintrc-"));
|
|
@@ -42410,22 +42387,12 @@ const runOxlint = async (options) => {
|
|
|
42410
42387
|
outputMaxBytes,
|
|
42411
42388
|
concurrency: options.concurrency
|
|
42412
42389
|
});
|
|
42413
|
-
writeOxlintConfig(configPath, buildConfig(
|
|
42390
|
+
writeOxlintConfig(configPath, buildConfig(extendsPaths));
|
|
42414
42391
|
try {
|
|
42415
42392
|
return await runBatches();
|
|
42416
42393
|
} catch (error) {
|
|
42417
|
-
const reactHooksJsDropNote = reactHooksJsPluginDropNote(error);
|
|
42418
|
-
if (reactHooksJsDropNote !== null) {
|
|
42419
|
-
writeOxlintConfig(configPath, buildConfig({
|
|
42420
|
-
extendsPaths,
|
|
42421
|
-
disableReactHooksJsPlugin: true
|
|
42422
|
-
}));
|
|
42423
|
-
const diagnostics = await runBatches();
|
|
42424
|
-
onPartialFailure?.(reactHooksJsDropNote);
|
|
42425
|
-
return diagnostics;
|
|
42426
|
-
}
|
|
42427
42394
|
if (extendsPaths.length === 0) throw error;
|
|
42428
|
-
writeOxlintConfig(configPath, buildConfig(
|
|
42395
|
+
writeOxlintConfig(configPath, buildConfig([]));
|
|
42429
42396
|
return await runBatches();
|
|
42430
42397
|
}
|
|
42431
42398
|
} finally {
|
|
@@ -44008,7 +43975,7 @@ const makeNoopConsole = () => ({
|
|
|
44008
43975
|
});
|
|
44009
43976
|
//#endregion
|
|
44010
43977
|
//#region src/cli/utils/version.ts
|
|
44011
|
-
const VERSION = "0.5.6-dev.
|
|
43978
|
+
const VERSION = "0.5.6-dev.5b742fa";
|
|
44012
43979
|
//#endregion
|
|
44013
43980
|
//#region src/cli/utils/json-mode.ts
|
|
44014
43981
|
let context = null;
|
|
@@ -44366,13 +44333,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
|
|
|
44366
44333
|
* uploads source-map artifacts under, so stack frames symbolicate. Honors the
|
|
44367
44334
|
* standard `SENTRY_RELEASE` override.
|
|
44368
44335
|
*/
|
|
44369
|
-
const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.5.6-dev.
|
|
44336
|
+
const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.5.6-dev.5b742fa`;
|
|
44370
44337
|
/**
|
|
44371
44338
|
* Deployment environment shown in Sentry's environment filter. Defaults to
|
|
44372
44339
|
* `production` for tagged releases and `development` for dev/unbuilt versions,
|
|
44373
44340
|
* overridable via the standard `SENTRY_ENVIRONMENT` env var.
|
|
44374
44341
|
*/
|
|
44375
|
-
const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.5.6-dev.
|
|
44342
|
+
const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.5.6-dev.5b742fa") ? "development" : "production");
|
|
44376
44343
|
/**
|
|
44377
44344
|
* Performance-tracing sample rate in `[0, 1]`. Reads `SENTRY_TRACES_SAMPLE_RATE`
|
|
44378
44345
|
* (set to `0` to disable tracing) and falls back to
|
|
@@ -53984,4 +53951,4 @@ Promise.resolve().then(() => assertNoRemovedFlags(process.argv)).then(() => prog
|
|
|
53984
53951
|
export {};
|
|
53985
53952
|
|
|
53986
53953
|
//# sourceMappingURL=cli.js.map
|
|
53987
|
-
//# debugId=
|
|
53954
|
+
//# debugId=54905d6a-f06f-5f80-9fb6-7d4ab857d553
|
package/dist/index.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]="
|
|
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]="b4f6f7e7-99db-553a-aa15-14b646162f39")}catch(e){}}();
|
|
3
3
|
import { r as __toESM$1, t as __commonJSMin$1 } from "./chunk-N93fKeF6.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import * as NFS from "node:fs";
|
|
@@ -38089,8 +38089,8 @@ const buildUserPluginRules = (userPlugin, severityControls) => {
|
|
|
38089
38089
|
}
|
|
38090
38090
|
return enabled;
|
|
38091
38091
|
};
|
|
38092
|
-
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), serverAuthFunctionNames, severityControls, userPlugins = []
|
|
38093
|
-
const reactHooksJsPlugin =
|
|
38092
|
+
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), serverAuthFunctionNames, severityControls, userPlugins = [] }) => {
|
|
38093
|
+
const reactHooksJsPlugin = resolveReactHooksJsPlugin(project.hasReactCompiler, customRulesOnly);
|
|
38094
38094
|
const reactCompilerRules = reactHooksJsPlugin ? applyRuleSeverityControls(filterRulesToAvailable(REACT_COMPILER_RULES, "react-hooks-js", reactHooksJsPlugin.availableRuleNames), severityControls) : {};
|
|
38095
38095
|
const jsPlugins = [];
|
|
38096
38096
|
if (reactHooksJsPlugin) jsPlugins.push(reactHooksJsPlugin.entry);
|
|
@@ -38787,9 +38787,9 @@ const parseOxlintOutput = (stdout, project, rootDirectory) => {
|
|
|
38787
38787
|
try {
|
|
38788
38788
|
parsed = JSON.parse(sanitizedStdout);
|
|
38789
38789
|
} catch {
|
|
38790
|
-
throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0,
|
|
38790
|
+
throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0, 200) }) });
|
|
38791
38791
|
}
|
|
38792
|
-
if (!isOxlintOutput(parsed)) throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0,
|
|
38792
|
+
if (!isOxlintOutput(parsed)) throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0, 200) }) });
|
|
38793
38793
|
const minifiedFileCache = /* @__PURE__ */ new Map();
|
|
38794
38794
|
const isMinifiedDiagnosticFile = (filename) => {
|
|
38795
38795
|
const absolutePath = Path.isAbsolute(filename) ? filename : Path.resolve(rootDirectory || ".", filename);
|
|
@@ -39080,28 +39080,6 @@ const writeOxlintConfig = (configPath, configToWrite) => {
|
|
|
39080
39080
|
NFS.closeSync(fileHandle);
|
|
39081
39081
|
}
|
|
39082
39082
|
};
|
|
39083
|
-
const REACT_HOOKS_JS_DROP_PREFIX = "React Compiler rules (react-hooks-js/*) skipped — eslint-plugin-react-hooks failed to load in this environment";
|
|
39084
|
-
/**
|
|
39085
|
-
* Detects an oxlint config-load crash caused by the optional
|
|
39086
|
-
* `react-hooks-js` (eslint-plugin-react-hooks) React Compiler plugin and
|
|
39087
|
-
* builds the partial-failure note for it; returns `null` when the failure
|
|
39088
|
-
* was anything else.
|
|
39089
|
-
*
|
|
39090
|
-
* oxlint prints a framed error to stdout (not stderr) and exits non-zero
|
|
39091
|
-
* when a `jsPlugins` entry can't be imported; that non-JSON stdout
|
|
39092
|
-
* surfaces as `OxlintOutputUnparseable`. Because oxlint fails the WHOLE
|
|
39093
|
-
* config load on it, leaving the plugin in would drop every curated
|
|
39094
|
-
* react-doctor diagnostic too — so the caller retries with the plugin
|
|
39095
|
-
* stripped (issue #833). Both markers sit at the start of oxlint's
|
|
39096
|
-
* message, so they survive the `preview` slice even for deep pnpm paths.
|
|
39097
|
-
*/
|
|
39098
|
-
const reactHooksJsPluginDropNote = (error) => {
|
|
39099
|
-
if (!(error instanceof ReactDoctorError) || error.reason._tag !== "OxlintOutputUnparseable") return null;
|
|
39100
|
-
const { preview } = error.reason;
|
|
39101
|
-
if (!preview.includes("Failed to load JS plugin") || !preview.includes("eslint-plugin-react-hooks")) return null;
|
|
39102
|
-
const underlyingReason = preview.match(/Error:[^\n]*/)?.[0]?.trim();
|
|
39103
|
-
return `${REACT_HOOKS_JS_DROP_PREFIX}${underlyingReason ? `: ${underlyingReason}` : ""}. Other rules ran normally.`;
|
|
39104
|
-
};
|
|
39105
39083
|
/**
|
|
39106
39084
|
* The oxlint runner. Composed of three pieces in `runners/oxlint/`:
|
|
39107
39085
|
*
|
|
@@ -39129,16 +39107,15 @@ const runOxlint = async (options) => {
|
|
|
39129
39107
|
const pluginPath = resolvePluginPath();
|
|
39130
39108
|
const extendsPaths = (adoptExistingLintConfig && !customRulesOnly ? detectUserLintConfigPaths(rootDirectory) : []).filter(canOxlintExtendConfig);
|
|
39131
39109
|
const userPlugins = resolveUserPlugins(userConfig?.plugins, configSourceDirectory);
|
|
39132
|
-
const buildConfig = (
|
|
39110
|
+
const buildConfig = (extendsForThisAttempt) => createOxlintConfig({
|
|
39133
39111
|
pluginPath,
|
|
39134
39112
|
project,
|
|
39135
39113
|
customRulesOnly,
|
|
39136
|
-
extendsPaths:
|
|
39114
|
+
extendsPaths: extendsForThisAttempt,
|
|
39137
39115
|
ignoredTags,
|
|
39138
39116
|
serverAuthFunctionNames,
|
|
39139
39117
|
severityControls,
|
|
39140
|
-
userPlugins
|
|
39141
|
-
disableReactHooksJsPlugin: overrides.disableReactHooksJsPlugin
|
|
39118
|
+
userPlugins
|
|
39142
39119
|
});
|
|
39143
39120
|
const restoreDisableDirectives = respectInlineDisables ? () => {} : await neutralizeDisableDirectives(rootDirectory, includePaths);
|
|
39144
39121
|
const configDirectory = NFS.mkdtempSync(Path.join(os.tmpdir(), "react-doctor-oxlintrc-"));
|
|
@@ -39174,22 +39151,12 @@ const runOxlint = async (options) => {
|
|
|
39174
39151
|
outputMaxBytes,
|
|
39175
39152
|
concurrency: options.concurrency
|
|
39176
39153
|
});
|
|
39177
|
-
writeOxlintConfig(configPath, buildConfig(
|
|
39154
|
+
writeOxlintConfig(configPath, buildConfig(extendsPaths));
|
|
39178
39155
|
try {
|
|
39179
39156
|
return await runBatches();
|
|
39180
39157
|
} catch (error) {
|
|
39181
|
-
const reactHooksJsDropNote = reactHooksJsPluginDropNote(error);
|
|
39182
|
-
if (reactHooksJsDropNote !== null) {
|
|
39183
|
-
writeOxlintConfig(configPath, buildConfig({
|
|
39184
|
-
extendsPaths,
|
|
39185
|
-
disableReactHooksJsPlugin: true
|
|
39186
|
-
}));
|
|
39187
|
-
const diagnostics = await runBatches();
|
|
39188
|
-
onPartialFailure?.(reactHooksJsDropNote);
|
|
39189
|
-
return diagnostics;
|
|
39190
|
-
}
|
|
39191
39158
|
if (extendsPaths.length === 0) throw error;
|
|
39192
|
-
writeOxlintConfig(configPath, buildConfig(
|
|
39159
|
+
writeOxlintConfig(configPath, buildConfig([]));
|
|
39193
39160
|
return await runBatches();
|
|
39194
39161
|
}
|
|
39195
39162
|
} finally {
|
|
@@ -40609,4 +40576,4 @@ const toJsonReport = (result, options) => buildJsonReport({
|
|
|
40609
40576
|
export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
|
|
40610
40577
|
|
|
40611
40578
|
//# sourceMappingURL=index.js.map
|
|
40612
|
-
//# debugId=
|
|
40579
|
+
//# debugId=b4f6f7e7-99db-553a-aa15-14b646162f39
|
package/dist/lsp.js
CHANGED
|
@@ -38075,8 +38075,8 @@ const buildUserPluginRules = (userPlugin, severityControls) => {
|
|
|
38075
38075
|
}
|
|
38076
38076
|
return enabled;
|
|
38077
38077
|
};
|
|
38078
|
-
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), serverAuthFunctionNames, severityControls, userPlugins = []
|
|
38079
|
-
const reactHooksJsPlugin =
|
|
38078
|
+
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), serverAuthFunctionNames, severityControls, userPlugins = [] }) => {
|
|
38079
|
+
const reactHooksJsPlugin = resolveReactHooksJsPlugin(project.hasReactCompiler, customRulesOnly);
|
|
38080
38080
|
const reactCompilerRules = reactHooksJsPlugin ? applyRuleSeverityControls(filterRulesToAvailable(REACT_COMPILER_RULES, "react-hooks-js", reactHooksJsPlugin.availableRuleNames), severityControls) : {};
|
|
38081
38081
|
const jsPlugins = [];
|
|
38082
38082
|
if (reactHooksJsPlugin) jsPlugins.push(reactHooksJsPlugin.entry);
|
|
@@ -38773,9 +38773,9 @@ const parseOxlintOutput = (stdout, project, rootDirectory) => {
|
|
|
38773
38773
|
try {
|
|
38774
38774
|
parsed = JSON.parse(sanitizedStdout);
|
|
38775
38775
|
} catch {
|
|
38776
|
-
throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0,
|
|
38776
|
+
throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0, 200) }) });
|
|
38777
38777
|
}
|
|
38778
|
-
if (!isOxlintOutput(parsed)) throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0,
|
|
38778
|
+
if (!isOxlintOutput(parsed)) throw new ReactDoctorError({ reason: new OxlintOutputUnparseable({ preview: stdout.slice(0, 200) }) });
|
|
38779
38779
|
const minifiedFileCache = /* @__PURE__ */ new Map();
|
|
38780
38780
|
const isMinifiedDiagnosticFile = (filename) => {
|
|
38781
38781
|
const absolutePath = Path.isAbsolute(filename) ? filename : Path.resolve(rootDirectory || ".", filename);
|
|
@@ -39066,28 +39066,6 @@ const writeOxlintConfig = (configPath, configToWrite) => {
|
|
|
39066
39066
|
NFS.closeSync(fileHandle);
|
|
39067
39067
|
}
|
|
39068
39068
|
};
|
|
39069
|
-
const REACT_HOOKS_JS_DROP_PREFIX = "React Compiler rules (react-hooks-js/*) skipped — eslint-plugin-react-hooks failed to load in this environment";
|
|
39070
|
-
/**
|
|
39071
|
-
* Detects an oxlint config-load crash caused by the optional
|
|
39072
|
-
* `react-hooks-js` (eslint-plugin-react-hooks) React Compiler plugin and
|
|
39073
|
-
* builds the partial-failure note for it; returns `null` when the failure
|
|
39074
|
-
* was anything else.
|
|
39075
|
-
*
|
|
39076
|
-
* oxlint prints a framed error to stdout (not stderr) and exits non-zero
|
|
39077
|
-
* when a `jsPlugins` entry can't be imported; that non-JSON stdout
|
|
39078
|
-
* surfaces as `OxlintOutputUnparseable`. Because oxlint fails the WHOLE
|
|
39079
|
-
* config load on it, leaving the plugin in would drop every curated
|
|
39080
|
-
* react-doctor diagnostic too — so the caller retries with the plugin
|
|
39081
|
-
* stripped (issue #833). Both markers sit at the start of oxlint's
|
|
39082
|
-
* message, so they survive the `preview` slice even for deep pnpm paths.
|
|
39083
|
-
*/
|
|
39084
|
-
const reactHooksJsPluginDropNote = (error) => {
|
|
39085
|
-
if (!(error instanceof ReactDoctorError) || error.reason._tag !== "OxlintOutputUnparseable") return null;
|
|
39086
|
-
const { preview } = error.reason;
|
|
39087
|
-
if (!preview.includes("Failed to load JS plugin") || !preview.includes("eslint-plugin-react-hooks")) return null;
|
|
39088
|
-
const underlyingReason = preview.match(/Error:[^\n]*/)?.[0]?.trim();
|
|
39089
|
-
return `${REACT_HOOKS_JS_DROP_PREFIX}${underlyingReason ? `: ${underlyingReason}` : ""}. Other rules ran normally.`;
|
|
39090
|
-
};
|
|
39091
39069
|
/**
|
|
39092
39070
|
* The oxlint runner. Composed of three pieces in `runners/oxlint/`:
|
|
39093
39071
|
*
|
|
@@ -39115,16 +39093,15 @@ const runOxlint = async (options) => {
|
|
|
39115
39093
|
const pluginPath = resolvePluginPath();
|
|
39116
39094
|
const extendsPaths = (adoptExistingLintConfig && !customRulesOnly ? detectUserLintConfigPaths(rootDirectory) : []).filter(canOxlintExtendConfig);
|
|
39117
39095
|
const userPlugins = resolveUserPlugins(userConfig?.plugins, configSourceDirectory);
|
|
39118
|
-
const buildConfig = (
|
|
39096
|
+
const buildConfig = (extendsForThisAttempt) => createOxlintConfig({
|
|
39119
39097
|
pluginPath,
|
|
39120
39098
|
project,
|
|
39121
39099
|
customRulesOnly,
|
|
39122
|
-
extendsPaths:
|
|
39100
|
+
extendsPaths: extendsForThisAttempt,
|
|
39123
39101
|
ignoredTags,
|
|
39124
39102
|
serverAuthFunctionNames,
|
|
39125
39103
|
severityControls,
|
|
39126
|
-
userPlugins
|
|
39127
|
-
disableReactHooksJsPlugin: overrides.disableReactHooksJsPlugin
|
|
39104
|
+
userPlugins
|
|
39128
39105
|
});
|
|
39129
39106
|
const restoreDisableDirectives = respectInlineDisables ? () => {} : await neutralizeDisableDirectives(rootDirectory, includePaths);
|
|
39130
39107
|
const configDirectory = NFS.mkdtempSync(Path.join(os.tmpdir(), "react-doctor-oxlintrc-"));
|
|
@@ -39160,22 +39137,12 @@ const runOxlint = async (options) => {
|
|
|
39160
39137
|
outputMaxBytes,
|
|
39161
39138
|
concurrency: options.concurrency
|
|
39162
39139
|
});
|
|
39163
|
-
writeOxlintConfig(configPath, buildConfig(
|
|
39140
|
+
writeOxlintConfig(configPath, buildConfig(extendsPaths));
|
|
39164
39141
|
try {
|
|
39165
39142
|
return await runBatches();
|
|
39166
39143
|
} catch (error) {
|
|
39167
|
-
const reactHooksJsDropNote = reactHooksJsPluginDropNote(error);
|
|
39168
|
-
if (reactHooksJsDropNote !== null) {
|
|
39169
|
-
writeOxlintConfig(configPath, buildConfig({
|
|
39170
|
-
extendsPaths,
|
|
39171
|
-
disableReactHooksJsPlugin: true
|
|
39172
|
-
}));
|
|
39173
|
-
const diagnostics = await runBatches();
|
|
39174
|
-
onPartialFailure?.(reactHooksJsDropNote);
|
|
39175
|
-
return diagnostics;
|
|
39176
|
-
}
|
|
39177
39144
|
if (extendsPaths.length === 0) throw error;
|
|
39178
|
-
writeOxlintConfig(configPath, buildConfig(
|
|
39145
|
+
writeOxlintConfig(configPath, buildConfig([]));
|
|
39179
39146
|
return await runBatches();
|
|
39180
39147
|
}
|
|
39181
39148
|
} finally {
|
|
@@ -42394,5 +42361,5 @@ const startLanguageServer = () => {
|
|
|
42394
42361
|
};
|
|
42395
42362
|
//#endregion
|
|
42396
42363
|
export { startLanguageServer };
|
|
42397
|
-
!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]="
|
|
42398
|
-
//# debugId=
|
|
42364
|
+
!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]="9421149c-0ed9-5e00-81da-4f7dd8faf332")}catch(e){}}();
|
|
42365
|
+
//# debugId=9421149c-0ed9-5e00-81da-4f7dd8faf332
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-doctor",
|
|
3
|
-
"version": "0.5.6-dev.
|
|
3
|
+
"version": "0.5.6-dev.5b742fa",
|
|
4
4
|
"description": "Your agent writes bad React. This catches it",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"accessibility",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"vscode-languageserver": "^9.0.1",
|
|
65
65
|
"vscode-languageserver-textdocument": "^1.0.12",
|
|
66
66
|
"vscode-uri": "^3.1.0",
|
|
67
|
-
"oxlint-plugin-react-doctor": "0.5.6-dev.
|
|
67
|
+
"oxlint-plugin-react-doctor": "0.5.6-dev.5b742fa"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@types/babel__code-frame": "^7.27.0",
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
"commander": "^14.0.3",
|
|
74
74
|
"ora": "^9.4.0",
|
|
75
75
|
"@react-doctor/api": "0.5.6",
|
|
76
|
-
"@react-doctor/
|
|
77
|
-
"@react-doctor/
|
|
76
|
+
"@react-doctor/language-server": "0.5.6",
|
|
77
|
+
"@react-doctor/core": "0.5.6"
|
|
78
78
|
},
|
|
79
79
|
"engines": {
|
|
80
80
|
"node": "^20.19.0 || >=22.13.0"
|