Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit f007426

Browse filesBrowse files
Bamiehgibfahn
authored andcommitted
tools: add lint fixer for require-buffer
Adds `require-buffer` lint fixer. If the buffer module is not required while `Buffer` is used, require the `buffer` module. If the file has a `'use strict';` line, add the require after it on a separate line. If the file does not have any (currently impossible with the `strict` rule) add it after the first comment (before the real code starts). Fixes: #16636 PR-URL: #17144 Reviewed-By: Michaël Zasso <targos@protonmail.com>
1 parent da40417 commit f007426
Copy full SHA for f007426

File tree

Expand file treeCollapse file tree

2 files changed

+42
-5
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+42
-5
lines changed
Open diff view settings
Collapse file

‎test/parallel/test-eslint-require-buffer.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-eslint-require-buffer.js
+25-4Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,36 @@ const ruleTester = new RuleTester({
1212
const message = "Use const Buffer = require('buffer').Buffer; " +
1313
'at the beginning of this file';
1414

15+
const useStrict = '\'use strict\';\n\n';
16+
const bufferModule = 'const { Buffer } = require(\'buffer\');\n';
17+
const mockComment = '// Some Comment\n//\n// Another Comment\n\n';
18+
const useBuffer = 'Buffer;';
1519
ruleTester.run('require-buffer', rule, {
1620
valid: [
1721
'foo',
18-
'const Buffer = require("Buffer"); Buffer;'
22+
'const Buffer = require("Buffer"); Buffer;',
23+
'const { Buffer } = require(\'buffer\'); Buffer;',
1924
],
2025
invalid: [
2126
{
22-
code: 'Buffer;',
23-
errors: [{ message }]
24-
}
27+
code: useBuffer,
28+
errors: [{ message }],
29+
output: bufferModule + useBuffer,
30+
},
31+
{
32+
code: useStrict + useBuffer,
33+
errors: [{ message }],
34+
output: useStrict + bufferModule + useBuffer,
35+
},
36+
{
37+
code: mockComment + useBuffer,
38+
errors: [{ message }],
39+
output: mockComment + bufferModule + useBuffer,
40+
},
41+
{
42+
code: mockComment + useStrict + useBuffer,
43+
errors: [{ message }],
44+
output: mockComment + useStrict + bufferModule + useBuffer,
45+
},
2546
]
2647
});
Collapse file

‎tools/eslint-rules/require-buffer.js‎

Copy file name to clipboardExpand all lines: tools/eslint-rules/require-buffer.js
+17-1Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,26 @@
11
'use strict';
2+
const BUFFER_REQUIRE = 'const { Buffer } = require(\'buffer\');\n';
23

34
module.exports = function(context) {
5+
46
function flagIt(reference) {
57
const msg = 'Use const Buffer = require(\'buffer\').Buffer; ' +
68
'at the beginning of this file';
7-
context.report(reference.identifier, msg);
9+
10+
context.report({
11+
node: reference.identifier,
12+
message: msg,
13+
fix: (fixer) => {
14+
const sourceCode = context.getSourceCode();
15+
16+
const useStrict = /'use strict';\n\n?/g;
17+
const hasUseStrict = !!useStrict.exec(sourceCode.text);
18+
const firstLOC = sourceCode.ast.range[0];
19+
const rangeNeedle = hasUseStrict ? useStrict.lastIndex : firstLOC;
20+
21+
return fixer.insertTextBeforeRange([rangeNeedle], BUFFER_REQUIRE);
22+
}
23+
});
824
}
925

1026
return {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.