sourceverity 1.0.3 → 1.0.5
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/README.md +91 -3
- package/dist/analysis/arrayBounds.d.ts +4 -0
- package/dist/analysis/arrayBounds.d.ts.map +1 -0
- package/dist/analysis/arrayBounds.js +4 -0
- package/dist/analysis/arrayBounds.js.map +1 -0
- package/dist/analysis/arrayBoundsCore.d.ts +69 -0
- package/dist/analysis/arrayBoundsCore.d.ts.map +1 -0
- package/dist/analysis/arrayBoundsCore.js +957 -0
- package/dist/analysis/arrayBoundsCore.js.map +1 -0
- package/dist/analysis/arrayConstructionBounds.d.ts +14 -0
- package/dist/analysis/arrayConstructionBounds.d.ts.map +1 -0
- package/dist/analysis/arrayConstructionBounds.js +445 -0
- package/dist/analysis/arrayConstructionBounds.js.map +1 -0
- package/dist/analysis/arrayIterationBounds.d.ts +12 -0
- package/dist/analysis/arrayIterationBounds.d.ts.map +1 -0
- package/dist/analysis/arrayIterationBounds.js +578 -0
- package/dist/analysis/arrayIterationBounds.js.map +1 -0
- package/dist/analysis/{controlFlow.d.ts → controlFlowGuards.d.ts} +1 -9
- package/dist/analysis/controlFlowGuards.d.ts.map +1 -0
- package/dist/analysis/controlFlowGuards.js +119 -0
- package/dist/analysis/controlFlowGuards.js.map +1 -0
- package/dist/analysis/controlFlowTypes.d.ts +5 -0
- package/dist/analysis/controlFlowTypes.d.ts.map +1 -0
- package/dist/analysis/controlFlowTypes.js +2 -0
- package/dist/analysis/controlFlowTypes.js.map +1 -0
- package/dist/analysis/frameworks.d.ts.map +1 -1
- package/dist/analysis/frameworks.js +11 -23
- package/dist/analysis/frameworks.js.map +1 -1
- package/dist/analysis/functions.d.ts.map +1 -1
- package/dist/analysis/functions.js +70 -30
- package/dist/analysis/functions.js.map +1 -1
- package/dist/analysis/nonNullGuards.d.ts +7 -0
- package/dist/analysis/nonNullGuards.d.ts.map +1 -0
- package/dist/analysis/nonNullGuards.js +409 -0
- package/dist/analysis/nonNullGuards.js.map +1 -0
- package/dist/analysis/promiseFlow.d.ts +5 -0
- package/dist/analysis/promiseFlow.d.ts.map +1 -1
- package/dist/analysis/promiseFlow.js +331 -1
- package/dist/analysis/promiseFlow.js.map +1 -1
- package/dist/analysis/reactStateBounds.d.ts +8 -0
- package/dist/analysis/reactStateBounds.d.ts.map +1 -0
- package/dist/analysis/reactStateBounds.js +390 -0
- package/dist/analysis/reactStateBounds.js.map +1 -0
- package/dist/analysis/values.d.ts.map +1 -1
- package/dist/analysis/values.js +3 -0
- package/dist/analysis/values.js.map +1 -1
- package/dist/baseline/manager.d.ts +2 -0
- package/dist/baseline/manager.d.ts.map +1 -1
- package/dist/baseline/manager.js +45 -18
- package/dist/baseline/manager.js.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +22 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/core/config.d.ts +7 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +42 -0
- package/dist/core/config.js.map +1 -0
- package/dist/engine/runner.js +1 -1
- package/dist/engine/runner.js.map +1 -1
- package/dist/engine/symbols.d.ts +0 -1
- package/dist/engine/symbols.d.ts.map +1 -1
- package/dist/engine/symbols.js +2 -12
- package/dist/engine/symbols.js.map +1 -1
- package/dist/repository/detector.d.ts.map +1 -1
- package/dist/repository/detector.js +31 -11
- package/dist/repository/detector.js.map +1 -1
- package/dist/rules/async/floatingPromise.d.ts.map +1 -1
- package/dist/rules/async/floatingPromise.js +23 -3
- package/dist/rules/async/floatingPromise.js.map +1 -1
- package/dist/rules/network/fetchStatusUnchecked.js +1 -1
- package/dist/rules/network/fetchStatusUnchecked.js.map +1 -1
- package/dist/rules/react/derivedStateEffect.d.ts.map +1 -1
- package/dist/rules/react/derivedStateEffect.js +60 -5
- package/dist/rules/react/derivedStateEffect.js.map +1 -1
- package/dist/rules/typescript/nonNullAssertionRisk.js +1 -1
- package/dist/rules/typescript/nonNullAssertionRisk.js.map +1 -1
- package/package.json +1 -1
- package/dist/analysis/controlFlow.d.ts.map +0 -1
- package/dist/analysis/controlFlow.js +0 -2592
- package/dist/analysis/controlFlow.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivedStateEffect.d.ts","sourceRoot":"","sources":["../../../src/rules/react/derivedStateEffect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"derivedStateEffect.d.ts","sourceRoot":"","sources":["../../../src/rules/react/derivedStateEffect.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,qBAAqB,CAAC;AA0H7D,eAAO,MAAM,sBAAsB,EAAE,IAsIpC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getNodeSourceRange, isReactLifecycleHookCall } from "../../engine/symbols.js";
|
|
1
|
+
import { getNodeSourceRange, isReactLifecycleHookCall, } from "../../engine/symbols.js";
|
|
2
2
|
import { isResetValue, resolveConstantValue, unwrapExpression } from "../../analysis/values.js";
|
|
3
3
|
/**
|
|
4
4
|
* Collects all identifier names referenced within an AST node, following local const variable initializers.
|
|
@@ -48,6 +48,57 @@ function extractDependencyNames(depsArg, ts) {
|
|
|
48
48
|
}
|
|
49
49
|
return depNames;
|
|
50
50
|
}
|
|
51
|
+
function containsPassedSetter(expression, setterSymbol, ts, checker) {
|
|
52
|
+
if (!setterSymbol)
|
|
53
|
+
return false;
|
|
54
|
+
const unwrapped = unwrapExpression(expression, ts);
|
|
55
|
+
if (ts.isIdentifier(unwrapped)) {
|
|
56
|
+
return checker.getSymbolAtLocation(unwrapped) === setterSymbol;
|
|
57
|
+
}
|
|
58
|
+
if (ts.isObjectLiteralExpression(unwrapped)) {
|
|
59
|
+
return unwrapped.properties.some((property) => {
|
|
60
|
+
if (ts.isPropertyAssignment(property)) {
|
|
61
|
+
return containsPassedSetter(property.initializer, setterSymbol, ts, checker);
|
|
62
|
+
}
|
|
63
|
+
if (ts.isShorthandPropertyAssignment(property)) {
|
|
64
|
+
return checker.getSymbolAtLocation(property.name) === setterSymbol;
|
|
65
|
+
}
|
|
66
|
+
return ts.isSpreadAssignment(property) &&
|
|
67
|
+
containsPassedSetter(property.expression, setterSymbol, ts, checker);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (ts.isArrayLiteralExpression(unwrapped)) {
|
|
71
|
+
return unwrapped.elements.some((element) => !ts.isOmittedExpression(element) &&
|
|
72
|
+
(ts.isSpreadElement(element)
|
|
73
|
+
? containsPassedSetter(element.expression, setterSymbol, ts, checker)
|
|
74
|
+
: containsPassedSetter(element, setterSymbol, ts, checker)));
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
function isSetterPassedToAnotherCall(setter, setterCall, sourceFile, ts, checker) {
|
|
79
|
+
if (!checker)
|
|
80
|
+
return false;
|
|
81
|
+
const typeChecker = checker;
|
|
82
|
+
const resolvedSetterSymbol = typeChecker.getSymbolAtLocation(setter);
|
|
83
|
+
if (!resolvedSetterSymbol)
|
|
84
|
+
return false;
|
|
85
|
+
let isPassed = false;
|
|
86
|
+
function visit(node) {
|
|
87
|
+
if (isPassed)
|
|
88
|
+
return;
|
|
89
|
+
if (node !== setterCall && ts.isCallExpression(node)) {
|
|
90
|
+
for (const argument of node.arguments) {
|
|
91
|
+
if (containsPassedSetter(argument, resolvedSetterSymbol, ts, typeChecker)) {
|
|
92
|
+
isPassed = true;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
node.forEachChild(visit);
|
|
98
|
+
}
|
|
99
|
+
sourceFile.forEachChild(visit);
|
|
100
|
+
return isPassed;
|
|
101
|
+
}
|
|
51
102
|
export const derivedStateEffectRule = {
|
|
52
103
|
meta: {
|
|
53
104
|
id: "react/derived-state-effect",
|
|
@@ -141,22 +192,26 @@ export const derivedStateEffectRule = {
|
|
|
141
192
|
return;
|
|
142
193
|
}
|
|
143
194
|
}
|
|
195
|
+
const setterCrossesBoundary = ts.isIdentifier(setterCallExpr.expression) &&
|
|
196
|
+
isSetterPassedToAnotherCall(setterCallExpr.expression, setterCallExpr, sourceFile, ts, checker);
|
|
144
197
|
const range = getNodeSourceRange(node, sourceFile);
|
|
145
198
|
context.report({
|
|
146
199
|
ruleId: "react/derived-state-effect",
|
|
147
200
|
category: "react",
|
|
148
201
|
severity: "warning",
|
|
149
|
-
confidence: "high",
|
|
150
|
-
message: `State setter '${setterName}'
|
|
202
|
+
confidence: setterCrossesBoundary ? "medium" : "high",
|
|
203
|
+
message: `State setter '${setterName}' synchronizes state from Effect dependencies.`,
|
|
151
204
|
file: sourceFile.fileName,
|
|
152
205
|
range,
|
|
153
206
|
evidence: [
|
|
154
207
|
{
|
|
155
|
-
message:
|
|
208
|
+
message: setterCrossesBoundary
|
|
209
|
+
? "The setter is passed to another function, so the state may be independently writable."
|
|
210
|
+
: "Synchronizing state in useEffect causes an extra render cycle and potential UI flicker.",
|
|
156
211
|
range,
|
|
157
212
|
},
|
|
158
213
|
],
|
|
159
|
-
suggestedAction: "
|
|
214
|
+
suggestedAction: "If this state is not independently writable, compute the value directly during render.",
|
|
160
215
|
safeAutomaticFix: false,
|
|
161
216
|
});
|
|
162
217
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derivedStateEffect.js","sourceRoot":"","sources":["../../../src/rules/react/derivedStateEffect.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"derivedStateEffect.js","sourceRoot":"","sources":["../../../src/rules/react/derivedStateEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getNodeSourceRange } from "../../engine/symbols.js";
|
|
2
|
-
import { isGuardedNonNullAssertion } from "../../analysis/
|
|
2
|
+
import { isGuardedNonNullAssertion } from "../../analysis/nonNullGuards.js";
|
|
3
3
|
/**
|
|
4
4
|
* Checks if a type contains null or undefined in its flags or union members.
|
|
5
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nonNullAssertionRisk.js","sourceRoot":"","sources":["../../../src/rules/typescript/nonNullAssertionRisk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"nonNullAssertionRisk.js","sourceRoot":"","sources":["../../../src/rules/typescript/nonNullAssertionRisk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAG5E;;GAEG;AACH,SAAS,cAAc,CAAC,IAAiB,EAAE,EAAiB;IAC1D,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC5C,IAAI,EAAE;QACJ,EAAE,EAAE,oCAAoC;QACxC,QAAQ,EAAE,YAAY;QACtB,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,MAAM;QACzB,WAAW,EAAE,sEAAsE;QACnF,uBAAuB,EAAE,IAAI;KAC9B;IAED,OAAO,CAAC,OAAoB;QAC1B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;QAC5C,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE;YAAE,OAAO;QAE5B,OAAO,CAAC,UAAU,CAAC,CAAC,IAAiB,EAAE,EAAE;YACvC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAE1C,8CAA8C;YAC9C,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAChE,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,IAAI,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACnD,OAAO,CAAC,MAAM,CAAC;wBACb,MAAM,EAAE,oCAAoC;wBAC5C,QAAQ,EAAE,YAAY;wBACtB,QAAQ,EAAE,SAAS;wBACnB,UAAU,EAAE,MAAM;wBAClB,OAAO,EAAE,wEAAwE;wBACjF,IAAI,EAAE,UAAU,CAAC,QAAQ;wBACzB,KAAK;wBACL,QAAQ,EAAE;4BACR;gCACE,OAAO,EAAE,+DAA+D;gCACxE,KAAK;6BACN;yBACF;wBACD,eAAe,EAAE,qFAAqF;wBACtG,gBAAgB,EAAE,KAAK;qBACxB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controlFlow.d.ts","sourceRoot":"","sources":["../../src/analysis/controlFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,YAAY,CAAC;AAI1C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,MAAM,GAAG,OAAO,CAkB5F;AAuBD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,EACvC,EAAE,EAAE,OAAO,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,EACxC,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAoFT;AA2jFD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAC9B,EAAE,EAAE,OAAO,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,GACvC,gBAAgB,CAiPlB"}
|