Skip to content

Commit d865ce0

Browse files
authored
fix: prevent unchecked indexed access (#1132)
1 parent 166e37c commit d865ce0

18 files changed

+166
-136
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
"semantic-release": "^25.0.2",
8787
"semver": "^7.6.3",
8888
"tsdown": "^0.17.3",
89-
"typescript": "^5.7.2",
89+
"typescript": "^5.9.3",
9090
"typescript-eslint": "^8.15.0",
9191
"vitest": "^3.2.4"
9292
},

pnpm-lock.yaml

Lines changed: 113 additions & 113 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/create-testing-library-rule/detect-testing-library-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ export function detectTestingLibraryUtils<
317317

318318
// Helpers for Testing Library detection.
319319
const getTestingLibraryImportNode: GetTestingLibraryImportNodeFn = () => {
320-
return importedTestingLibraryNodes[0];
320+
return importedTestingLibraryNodes[0] ?? null;
321321
};
322322

323323
const getAllTestingLibraryImportNodes: GetTestingLibraryImportNodesFn =

src/node-utils/accessors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ const isSimpleTemplateLiteral = <V extends string>(
4747
): node is TemplateLiteral<V> =>
4848
isTemplateLiteral(node) &&
4949
node.quasis.length === 1 && // bail out if not simple
50-
(value === undefined || node.quasis[0].value.raw === value);
50+
(value === undefined || node.quasis[0]?.value.raw === value);
5151

5252
export type StringNode<S extends string = string> =
5353
| StringLiteral<S>

src/rules/no-container.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
144144
);
145145

146146
const nodeValue =
147-
containerIndex !== -1 && node.id.properties[containerIndex].value;
147+
containerIndex !== -1 && node.id.properties[containerIndex]?.value;
148148

149149
if (!nodeValue) {
150150
return;

src/rules/no-global-regexp-flag-in-query.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ export default createTestingLibraryRule<Options, MessageIds>({
124124

125125
const [firstArg, secondArg] = getArguments(identifierNode);
126126

127-
const firstArgumentHasError = reportLiteralWithRegex(firstArg);
127+
const firstArgumentHasError = firstArg
128+
? reportLiteralWithRegex(firstArg)
129+
: false;
128130
if (firstArgumentHasError) {
129131
return;
130132
}

src/rules/no-manual-cleanup.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,14 @@ export default createTestingLibraryRule<Options, MessageIds>({
6969
if (isImportDeclaration(moduleNode)) {
7070
// case: import utils from 'testing-library-module'
7171
if (isImportDefaultSpecifier(moduleNode.specifiers[0])) {
72-
const { references } = getDeclaredVariables(context, moduleNode)[0];
72+
const declaredVariables = getDeclaredVariables(
73+
context,
74+
moduleNode
75+
)[0];
7376

74-
reportImportReferences(references);
77+
if (declaredVariables) {
78+
reportImportReferences(declaredVariables.references);
79+
}
7580
}
7681

7782
// case: import { cleanup } from 'testing-library-module'

src/rules/no-promise-in-fire-event.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ export default createTestingLibraryRule<Options, MessageIds>({
111111

112112
const domElementArgument = closestCallExpression.arguments[0];
113113

114+
if (!domElementArgument) {
115+
return;
116+
}
114117
checkSuspiciousNode(domElementArgument);
115118
},
116119
};

src/rules/no-wait-for-multiple-assertions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
122122
});
123123
const lines = sourceCode.getText().split('\n');
124124
const line = lines[callExpressionNode.loc.start.line - 1];
125-
const indent = line.match(/^\s*/)?.[0] ?? '';
125+
const indent = line?.match(/^\s*/)?.[0] ?? '';
126126

127127
const expressionStatementLines = lines.slice(
128128
expressionStatement.loc.start.line - 1,

src/rules/no-wait-for-side-effects.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
227227

228228
const lines = sourceCode.getText().split('\n');
229229
const line = lines[targetNode.loc.start.line - 1];
230-
const indent = line.match(/^\s*/)?.[0] ?? '';
230+
const indent = line?.match(/^\s*/)?.[0] ?? '';
231231
const sideEffectLines = lines.slice(
232232
sideEffectNode.loc.start.line - 1,
233233
sideEffectNode.loc.end.line

0 commit comments

Comments
 (0)