Skip to content

Commit be4a7ca

Browse files
committed
implement suggestions
1 parent 9df000b commit be4a7ca

3 files changed

Lines changed: 44 additions & 8 deletions

File tree

test/parallel/test-abortcontroller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,9 @@ test('AbortController inspection depth 1 or null works', () => {
161161

162162
test('AbortSignal reason is set correctly', () => {
163163
// Test AbortSignal.reason
164+
// eslint-disable-next-line node-core/prefer-abort-signal-abort
164165
const ac = new AbortController();
165166
ac.abort('reason');
166-
// eslint-disable-next-line node-core/prefer-abort-signal-abort
167167
assert.strictEqual(ac.signal.reason, 'reason');
168168
});
169169

@@ -236,6 +236,7 @@ test('AbortSignal.reason should default', () => {
236236
assert.ok(signal.reason instanceof DOMException);
237237
assert.strictEqual(signal.reason.code, 20);
238238

239+
// eslint-disable-next-line node-core/prefer-abort-signal-abort
239240
const ac = new AbortController();
240241
ac.abort();
241242
assert.ok(ac.signal.reason instanceof DOMException);

test/parallel/test-eslint-prefer-abort-signal-abort.js

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ new RuleTester().run('prefer-abort-signal-abort', rule, {
2121
controller.abort();
2222
fn(controller.signal);
2323
`,
24-
`
25-
const controller = new AbortController();
26-
controller.abort();
27-
fn(controller.signal, controller.signal);
28-
`,
2924
`
3025
const controller = new AbortController();
3126
controller.abort();
@@ -87,5 +82,37 @@ new RuleTester().run('prefer-abort-signal-abort', rule, {
8782
}
8883
`,
8984
},
85+
{
86+
code: `
87+
{
88+
const controller = new AbortController();
89+
controller.abort();
90+
fn(controller.signal, controller.signal);
91+
}
92+
`,
93+
errors: [{ message }],
94+
output: `
95+
{
96+
const controller = AbortSignal.abort();
97+
fn(controller, controller);
98+
}
99+
`,
100+
},
101+
{
102+
code: `
103+
{
104+
const controller = new AbortController();
105+
controller.abort("reason");
106+
fn(controller.signal, controller.signal);
107+
}
108+
`,
109+
errors: [{ message }],
110+
output: `
111+
{
112+
const controller = AbortSignal.abort("reason");
113+
fn(controller, controller);
114+
}
115+
`,
116+
},
90117
]
91118
});

tools/eslint-rules/prefer-abort-signal-abort.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,21 @@ module.exports = {
129129
'' : sourceCode.getText(abortArguments[0]);
130130

131131
context.report({
132-
node: signalNode,
132+
node: declarator,
133133
message,
134134
fix(fixer) {
135+
const abortSignalCreationCall = `AbortSignal.abort(${abortReason})`;
136+
if (signalReferences.length > 1) {
137+
return [
138+
fixer.replaceText(declarator.init, abortSignalCreationCall),
139+
fixer.removeRange(rangeIncludingTrailingLine(abortStatement)),
140+
...signalReferences.map(({ identifier: { parent } }) => fixer.replaceText(parent, name)),
141+
];
142+
}
135143
return [
136144
fixer.removeRange(rangeIncludingTrailingLine(variableDeclaration)),
137145
fixer.removeRange(rangeIncludingTrailingLine(abortStatement)),
138-
fixer.replaceText(signalNode, `AbortSignal.abort(${abortReason})`),
146+
fixer.replaceText(signalNode, abortSignalCreationCall),
139147
];
140148
},
141149
});

0 commit comments

Comments
 (0)