react-doctor 0.8.3-dev.3d7ea66 → 0.8.3-dev.416fdcc
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 +250 -162
- package/dist/index.js +16 -7
- package/dist/lsp.js +16 -7
- package/dist/run-scan-app-DZ5jGWFf.js +1661 -0
- package/package.json +9 -3
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]="ef9143d9-5b2e-5eca-adb3-89fde61aafe8")}catch(e){}}();
|
|
3
3
|
import { i as __toESM$1, r as __require, t as __commonJSMin$1 } from "./chunk-ChKA3wi6.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import reactDoctorPlugin, { ALL_REACT_DOCTOR_RULE_KEYS, CROSS_FILE_DEPENDENCY_COLLECTORS, CROSS_FILE_RULE_IDS, FRAMEWORK_SPECIFIC_RULE_KEYS, FRAMEWORK_TOKENS, MOTION_LIBRARY_PACKAGES, REACT_COMPILER_RULES, REACT_DOCTOR_RULES, classifySecurityScanFile, collectCrossFileDependencyProbes, resetManifestCaches, shouldReadSecurityScanContent } from "oxlint-plugin-react-doctor";
|
|
@@ -61762,6 +61762,13 @@ const DIAGNOSTIC_CATEGORY_BUCKETS = [
|
|
|
61762
61762
|
"Maintainability"
|
|
61763
61763
|
];
|
|
61764
61764
|
const OCCURRENCE_MATCHED_CATEGORIES = new Set(["Accessibility"]);
|
|
61765
|
+
new Map(Object.entries({
|
|
61766
|
+
Security: "An attacker can read user data, act as your users, or run code you never shipped.",
|
|
61767
|
+
Bugs: "Real users hit crashes, wrong output, or state that silently corrupts.",
|
|
61768
|
+
Performance: "Users feel extra latency and wasted renders on every interaction.",
|
|
61769
|
+
Accessibility: "Users on screen readers, keyboards, or assistive tech get locked out.",
|
|
61770
|
+
Maintainability: "Every future change gets slower and riskier to make."
|
|
61771
|
+
}));
|
|
61765
61772
|
const APP_ONLY_RULE_KEYS = new Set([
|
|
61766
61773
|
"react-hooks-js/static-components",
|
|
61767
61774
|
"react-doctor/no-render-prop-children",
|
|
@@ -62511,18 +62518,20 @@ const getReactCompilerFlagState = (expression, analysis) => {
|
|
|
62511
62518
|
}
|
|
62512
62519
|
return null;
|
|
62513
62520
|
};
|
|
62514
|
-
const getSelectedObjectProperty = (expression, propertyName, analysis) => {
|
|
62521
|
+
const getSelectedObjectProperty = (expression, propertyName, analysis, visitedExpressions = /* @__PURE__ */ new Set()) => {
|
|
62515
62522
|
let resolvedExpression = expression;
|
|
62516
62523
|
while (ts.isParenthesizedExpression(resolvedExpression) || ts.isAsExpression(resolvedExpression) || ts.isTypeAssertionExpression(resolvedExpression) || ts.isSatisfiesExpression(resolvedExpression) || ts.isNonNullExpression(resolvedExpression)) resolvedExpression = resolvedExpression.expression;
|
|
62524
|
+
if (visitedExpressions.has(resolvedExpression)) return null;
|
|
62525
|
+
visitedExpressions.add(resolvedExpression);
|
|
62517
62526
|
if (ts.isIdentifier(resolvedExpression)) {
|
|
62518
62527
|
if (analysis.localBindings.has(resolvedExpression.text)) {
|
|
62519
62528
|
const localInitializer = analysis.localBindings.get(resolvedExpression.text);
|
|
62520
|
-
return localInitializer ? getSelectedObjectProperty(localInitializer, propertyName, analysis) : null;
|
|
62529
|
+
return localInitializer ? getSelectedObjectProperty(localInitializer, propertyName, analysis, visitedExpressions) : null;
|
|
62521
62530
|
}
|
|
62522
62531
|
const scopedBinding = getScopedConfigBinding(resolvedExpression);
|
|
62523
|
-
if (scopedBinding.wasFound) return scopedBinding.initializer ? getSelectedObjectProperty(scopedBinding.initializer, propertyName, analysis) : null;
|
|
62532
|
+
if (scopedBinding.wasFound) return scopedBinding.initializer ? getSelectedObjectProperty(scopedBinding.initializer, propertyName, analysis, visitedExpressions) : null;
|
|
62524
62533
|
const topLevelBinding = getTopLevelBinding(analysis.sourceFile, resolvedExpression.text);
|
|
62525
|
-
return topLevelBinding && ts.isExpression(topLevelBinding) ? getSelectedObjectProperty(topLevelBinding, propertyName, analysis) : null;
|
|
62534
|
+
return topLevelBinding && ts.isExpression(topLevelBinding) ? getSelectedObjectProperty(topLevelBinding, propertyName, analysis, visitedExpressions) : null;
|
|
62526
62535
|
}
|
|
62527
62536
|
if (!ts.isObjectLiteralExpression(resolvedExpression)) return null;
|
|
62528
62537
|
for (const property of [...resolvedExpression.properties].reverse()) {
|
|
@@ -62530,7 +62539,7 @@ const getSelectedObjectProperty = (expression, propertyName, analysis) => {
|
|
|
62530
62539
|
if (ts.isMethodDeclaration(property) && getStaticPropertyName$1(property.name) === propertyName) return property;
|
|
62531
62540
|
if (ts.isShorthandPropertyAssignment(property) && property.name.text === propertyName) return property.name;
|
|
62532
62541
|
if (ts.isSpreadAssignment(property)) {
|
|
62533
|
-
const spreadProperty = getSelectedObjectProperty(property.expression, propertyName, analysis);
|
|
62542
|
+
const spreadProperty = getSelectedObjectProperty(property.expression, propertyName, analysis, visitedExpressions);
|
|
62534
62543
|
if (spreadProperty) return spreadProperty;
|
|
62535
62544
|
}
|
|
62536
62545
|
}
|
|
@@ -73874,4 +73883,4 @@ const toJsonReport = (result, options) => buildJsonReport({
|
|
|
73874
73883
|
export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
|
|
73875
73884
|
|
|
73876
73885
|
//# sourceMappingURL=index.js.map
|
|
73877
|
-
//# debugId=
|
|
73886
|
+
//# debugId=ef9143d9-5b2e-5eca-adb3-89fde61aafe8
|
package/dist/lsp.js
CHANGED
|
@@ -61815,6 +61815,13 @@ const DIAGNOSTIC_CATEGORY_BUCKETS = [
|
|
|
61815
61815
|
"Maintainability"
|
|
61816
61816
|
];
|
|
61817
61817
|
const OCCURRENCE_MATCHED_CATEGORIES = new Set(["Accessibility"]);
|
|
61818
|
+
new Map(Object.entries({
|
|
61819
|
+
Security: "An attacker can read user data, act as your users, or run code you never shipped.",
|
|
61820
|
+
Bugs: "Real users hit crashes, wrong output, or state that silently corrupts.",
|
|
61821
|
+
Performance: "Users feel extra latency and wasted renders on every interaction.",
|
|
61822
|
+
Accessibility: "Users on screen readers, keyboards, or assistive tech get locked out.",
|
|
61823
|
+
Maintainability: "Every future change gets slower and riskier to make."
|
|
61824
|
+
}));
|
|
61818
61825
|
const APP_ONLY_RULE_KEYS = new Set([
|
|
61819
61826
|
"react-hooks-js/static-components",
|
|
61820
61827
|
"react-doctor/no-render-prop-children",
|
|
@@ -62564,18 +62571,20 @@ const getReactCompilerFlagState = (expression, analysis) => {
|
|
|
62564
62571
|
}
|
|
62565
62572
|
return null;
|
|
62566
62573
|
};
|
|
62567
|
-
const getSelectedObjectProperty = (expression, propertyName, analysis) => {
|
|
62574
|
+
const getSelectedObjectProperty = (expression, propertyName, analysis, visitedExpressions = /* @__PURE__ */ new Set()) => {
|
|
62568
62575
|
let resolvedExpression = expression;
|
|
62569
62576
|
while (ts.isParenthesizedExpression(resolvedExpression) || ts.isAsExpression(resolvedExpression) || ts.isTypeAssertionExpression(resolvedExpression) || ts.isSatisfiesExpression(resolvedExpression) || ts.isNonNullExpression(resolvedExpression)) resolvedExpression = resolvedExpression.expression;
|
|
62577
|
+
if (visitedExpressions.has(resolvedExpression)) return null;
|
|
62578
|
+
visitedExpressions.add(resolvedExpression);
|
|
62570
62579
|
if (ts.isIdentifier(resolvedExpression)) {
|
|
62571
62580
|
if (analysis.localBindings.has(resolvedExpression.text)) {
|
|
62572
62581
|
const localInitializer = analysis.localBindings.get(resolvedExpression.text);
|
|
62573
|
-
return localInitializer ? getSelectedObjectProperty(localInitializer, propertyName, analysis) : null;
|
|
62582
|
+
return localInitializer ? getSelectedObjectProperty(localInitializer, propertyName, analysis, visitedExpressions) : null;
|
|
62574
62583
|
}
|
|
62575
62584
|
const scopedBinding = getScopedConfigBinding(resolvedExpression);
|
|
62576
|
-
if (scopedBinding.wasFound) return scopedBinding.initializer ? getSelectedObjectProperty(scopedBinding.initializer, propertyName, analysis) : null;
|
|
62585
|
+
if (scopedBinding.wasFound) return scopedBinding.initializer ? getSelectedObjectProperty(scopedBinding.initializer, propertyName, analysis, visitedExpressions) : null;
|
|
62577
62586
|
const topLevelBinding = getTopLevelBinding(analysis.sourceFile, resolvedExpression.text);
|
|
62578
|
-
return topLevelBinding && ts.isExpression(topLevelBinding) ? getSelectedObjectProperty(topLevelBinding, propertyName, analysis) : null;
|
|
62587
|
+
return topLevelBinding && ts.isExpression(topLevelBinding) ? getSelectedObjectProperty(topLevelBinding, propertyName, analysis, visitedExpressions) : null;
|
|
62579
62588
|
}
|
|
62580
62589
|
if (!ts.isObjectLiteralExpression(resolvedExpression)) return null;
|
|
62581
62590
|
for (const property of [...resolvedExpression.properties].reverse()) {
|
|
@@ -62583,7 +62592,7 @@ const getSelectedObjectProperty = (expression, propertyName, analysis) => {
|
|
|
62583
62592
|
if (ts.isMethodDeclaration(property) && getStaticPropertyName$1(property.name) === propertyName) return property;
|
|
62584
62593
|
if (ts.isShorthandPropertyAssignment(property) && property.name.text === propertyName) return property.name;
|
|
62585
62594
|
if (ts.isSpreadAssignment(property)) {
|
|
62586
|
-
const spreadProperty = getSelectedObjectProperty(property.expression, propertyName, analysis);
|
|
62595
|
+
const spreadProperty = getSelectedObjectProperty(property.expression, propertyName, analysis, visitedExpressions);
|
|
62587
62596
|
if (spreadProperty) return spreadProperty;
|
|
62588
62597
|
}
|
|
62589
62598
|
}
|
|
@@ -75495,5 +75504,5 @@ const startLanguageServer = () => {
|
|
|
75495
75504
|
};
|
|
75496
75505
|
//#endregion
|
|
75497
75506
|
export { startLanguageServer };
|
|
75498
|
-
!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]="
|
|
75499
|
-
//# debugId=
|
|
75507
|
+
!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]="a35abfab-9805-5633-9c17-c7012a9dc0b3")}catch(e){}}();
|
|
75508
|
+
//# debugId=a35abfab-9805-5633-9c17-c7012a9dc0b3
|