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 43b97c7

Browse filesBrowse files
Trotttargos
authored andcommitted
tools: prepare ESLint rules for 8.0.0 requirements
PR-URL: #40394 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent 282b6eb commit 43b97c7
Copy full SHA for 43b97c7

File tree

Expand file treeCollapse file tree

2 files changed

+124
-122
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+124
-122
lines changed
Open diff view settings
Collapse file

‎tools/eslint-rules/crypto-check.js‎

Copy file name to clipboardExpand all lines: tools/eslint-rules/crypto-check.js
+84-83Lines changed: 84 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -20,107 +20,108 @@ const cryptoModules = ['crypto', 'http2'];
2020
const requireModules = cryptoModules.concat(['tls', 'https']);
2121
const bindingModules = cryptoModules.concat(['tls_wrap']);
2222

23-
module.exports = function(context) {
24-
const missingCheckNodes = [];
25-
const requireNodes = [];
26-
let commonModuleNode = null;
27-
let hasSkipCall = false;
23+
module.exports = {
24+
meta: {
25+
fixable: 'code',
26+
},
27+
create(context) {
28+
const missingCheckNodes = [];
29+
const requireNodes = [];
30+
let commonModuleNode = null;
31+
let hasSkipCall = false;
32+
33+
function testCryptoUsage(node) {
34+
if (utils.isRequired(node, requireModules) ||
35+
utils.isBinding(node, bindingModules)) {
36+
requireNodes.push(node);
37+
}
2838

29-
function testCryptoUsage(node) {
30-
if (utils.isRequired(node, requireModules) ||
31-
utils.isBinding(node, bindingModules)) {
32-
requireNodes.push(node);
39+
if (utils.isCommonModule(node)) {
40+
commonModuleNode = node;
41+
}
3342
}
3443

35-
if (utils.isCommonModule(node)) {
36-
commonModuleNode = node;
44+
function testIfStatement(node) {
45+
if (node.test.argument === undefined) {
46+
return;
47+
}
48+
if (isCryptoCheck(node.test.argument)) {
49+
checkCryptoCall(node);
50+
}
3751
}
38-
}
3952

40-
function testIfStatement(node) {
41-
if (node.test.argument === undefined) {
42-
return;
43-
}
44-
if (isCryptoCheck(node.test.argument)) {
45-
checkCryptoCall(node);
53+
function isCryptoCheck(node) {
54+
return utils.usesCommonProperty(node, ['hasCrypto', 'hasFipsCrypto']);
4655
}
47-
}
48-
49-
function isCryptoCheck(node) {
50-
return utils.usesCommonProperty(node, ['hasCrypto', 'hasFipsCrypto']);
51-
}
5256

53-
function checkCryptoCall(node) {
54-
if (utils.inSkipBlock(node)) {
55-
hasSkipCall = true;
56-
} else {
57-
missingCheckNodes.push(node);
57+
function checkCryptoCall(node) {
58+
if (utils.inSkipBlock(node)) {
59+
hasSkipCall = true;
60+
} else {
61+
missingCheckNodes.push(node);
62+
}
5863
}
59-
}
6064

61-
function testMemberExpression(node) {
62-
if (isCryptoCheck(node)) {
63-
checkCryptoCall(node);
65+
function testMemberExpression(node) {
66+
if (isCryptoCheck(node)) {
67+
checkCryptoCall(node);
68+
}
6469
}
65-
}
66-
67-
function reportIfMissingCheck() {
68-
if (hasSkipCall) {
69-
// There is a skip, which is good, but verify that the require() calls
70-
// in question come after at least one check.
71-
if (missingCheckNodes.length > 0) {
72-
requireNodes.forEach((requireNode) => {
73-
const beforeAllChecks = missingCheckNodes.every((checkNode) => {
74-
return requireNode.range[0] < checkNode.range[0];
75-
});
7670

77-
if (beforeAllChecks) {
78-
context.report({
79-
node: requireNode,
80-
message: msg
71+
function reportIfMissingCheck() {
72+
if (hasSkipCall) {
73+
// There is a skip, which is good, but verify that the require() calls
74+
// in question come after at least one check.
75+
if (missingCheckNodes.length > 0) {
76+
requireNodes.forEach((requireNode) => {
77+
const beforeAllChecks = missingCheckNodes.every((checkNode) => {
78+
return requireNode.range[0] < checkNode.range[0];
8179
});
82-
}
83-
});
80+
81+
if (beforeAllChecks) {
82+
context.report({
83+
node: requireNode,
84+
message: msg
85+
});
86+
}
87+
});
88+
}
89+
return;
8490
}
85-
return;
86-
}
8791

88-
if (requireNodes.length > 0) {
89-
if (missingCheckNodes.length > 0) {
90-
report(missingCheckNodes);
91-
} else {
92-
report(requireNodes);
92+
if (requireNodes.length > 0) {
93+
if (missingCheckNodes.length > 0) {
94+
report(missingCheckNodes);
95+
} else {
96+
report(requireNodes);
97+
}
9398
}
9499
}
95-
}
96100

97-
function report(nodes) {
98-
nodes.forEach((node) => {
99-
context.report({
100-
node,
101-
message: msg,
102-
fix: (fixer) => {
103-
if (commonModuleNode) {
104-
return fixer.insertTextAfter(
105-
commonModuleNode,
106-
'\nif (!common.hasCrypto) {' +
107-
' common.skip("missing crypto");' +
108-
'}'
109-
);
101+
function report(nodes) {
102+
nodes.forEach((node) => {
103+
context.report({
104+
node,
105+
message: msg,
106+
fix: (fixer) => {
107+
if (commonModuleNode) {
108+
return fixer.insertTextAfter(
109+
commonModuleNode,
110+
'\nif (!common.hasCrypto) {' +
111+
' common.skip("missing crypto");' +
112+
'}'
113+
);
114+
}
110115
}
111-
}
116+
});
112117
});
113-
});
114-
}
115-
116-
return {
117-
'CallExpression': (node) => testCryptoUsage(node),
118-
'IfStatement:exit': (node) => testIfStatement(node),
119-
'MemberExpression:exit': (node) => testMemberExpression(node),
120-
'Program:exit': () => reportIfMissingCheck()
121-
};
122-
};
118+
}
123119

124-
module.exports.meta = {
125-
fixable: 'code'
120+
return {
121+
'CallExpression': (node) => testCryptoUsage(node),
122+
'IfStatement:exit': (node) => testIfStatement(node),
123+
'MemberExpression:exit': (node) => testMemberExpression(node),
124+
'Program:exit': () => reportIfMissingCheck()
125+
};
126+
}
126127
};
Collapse file

‎tools/eslint-rules/inspector-check.js‎

Copy file name to clipboardExpand all lines: tools/eslint-rules/inspector-check.js
+40-39Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -13,53 +13,54 @@ const utils = require('./rules-utils.js');
1313
const msg = 'Please add a skipIfInspectorDisabled() call to allow this ' +
1414
'test to be skipped when Node is built \'--without-inspector\'.';
1515

16-
module.exports = function(context) {
17-
const missingCheckNodes = [];
18-
let commonModuleNode = null;
19-
let hasInspectorCheck = false;
16+
module.exports = {
17+
meta: {
18+
fixable: 'code',
19+
},
20+
create(context) {
21+
const missingCheckNodes = [];
22+
let commonModuleNode = null;
23+
let hasInspectorCheck = false;
2024

21-
function testInspectorUsage(context, node) {
22-
if (utils.isRequired(node, ['inspector'])) {
23-
missingCheckNodes.push(node);
24-
}
25+
function testInspectorUsage(context, node) {
26+
if (utils.isRequired(node, ['inspector'])) {
27+
missingCheckNodes.push(node);
28+
}
2529

26-
if (utils.isCommonModule(node)) {
27-
commonModuleNode = node;
30+
if (utils.isCommonModule(node)) {
31+
commonModuleNode = node;
32+
}
2833
}
29-
}
3034

31-
function checkMemberExpression(context, node) {
32-
if (utils.usesCommonProperty(node, ['skipIfInspectorDisabled'])) {
33-
hasInspectorCheck = true;
35+
function checkMemberExpression(context, node) {
36+
if (utils.usesCommonProperty(node, ['skipIfInspectorDisabled'])) {
37+
hasInspectorCheck = true;
38+
}
3439
}
35-
}
3640

37-
function reportIfMissing(context) {
38-
if (!hasInspectorCheck) {
39-
missingCheckNodes.forEach((node) => {
40-
context.report({
41-
node,
42-
message: msg,
43-
fix: (fixer) => {
44-
if (commonModuleNode) {
45-
return fixer.insertTextAfter(
46-
commonModuleNode,
47-
'\ncommon.skipIfInspectorDisabled();'
48-
);
41+
function reportIfMissing(context) {
42+
if (!hasInspectorCheck) {
43+
missingCheckNodes.forEach((node) => {
44+
context.report({
45+
node,
46+
message: msg,
47+
fix: (fixer) => {
48+
if (commonModuleNode) {
49+
return fixer.insertTextAfter(
50+
commonModuleNode,
51+
'\ncommon.skipIfInspectorDisabled();'
52+
);
53+
}
4954
}
50-
}
55+
});
5156
});
52-
});
57+
}
5358
}
54-
}
5559

56-
return {
57-
'CallExpression': (node) => testInspectorUsage(context, node),
58-
'MemberExpression': (node) => checkMemberExpression(context, node),
59-
'Program:exit': () => reportIfMissing(context)
60-
};
61-
};
62-
63-
module.exports.meta = {
64-
fixable: 'code'
60+
return {
61+
'CallExpression': (node) => testInspectorUsage(context, node),
62+
'MemberExpression': (node) => checkMemberExpression(context, node),
63+
'Program:exit': () => reportIfMissing(context)
64+
};
65+
}
6566
};

0 commit comments

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