Skip to content

Commit 728f968

Browse files
aduh95danielleadams
authored andcommitted
tools: update ESLint custom rules to not use the deprecated format
Refs: https://eslint.org/docs/latest/extend/custom-rules-deprecated PR-URL: #46460 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 6c454af commit 728f968

File tree

5 files changed

+200
-199
lines changed

5 files changed

+200
-199
lines changed

tools/eslint-rules/lowercase-name-for-primitive.js

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -14,46 +14,45 @@ const astSelector = 'NewExpression[callee.property.name="TypeError"]' +
1414

1515
const primitives = [ 'number', 'string', 'boolean', 'null', 'undefined' ];
1616

17-
module.exports = function(context) {
18-
function checkNamesArgument(node) {
19-
const names = node.arguments[2];
20-
21-
switch (names.type) {
22-
case 'Literal':
23-
checkName(names);
24-
break;
25-
case 'ArrayExpression':
26-
names.elements.forEach((name) => {
27-
checkName(name);
28-
});
29-
break;
30-
}
31-
}
32-
33-
function checkName(node) {
34-
const name = node.value;
35-
const lowercaseName = name.toLowerCase();
36-
if (name !== lowercaseName && primitives.includes(lowercaseName)) {
37-
const msg = `primitive should use lowercase: ${name}`;
38-
context.report({
39-
node,
40-
message: msg,
41-
fix: (fixer) => {
42-
return fixer.replaceText(
43-
node,
44-
`'${lowercaseName}'`,
45-
);
46-
},
47-
});
17+
module.exports = {
18+
meta: { fixable: 'code' },
19+
create(context) {
20+
function checkNamesArgument(node) {
21+
const names = node.arguments[2];
22+
23+
switch (names.type) {
24+
case 'Literal':
25+
checkName(names);
26+
break;
27+
case 'ArrayExpression':
28+
names.elements.forEach((name) => {
29+
checkName(name);
30+
});
31+
break;
32+
}
4833
}
4934

50-
}
35+
function checkName(node) {
36+
const name = node.value;
37+
const lowercaseName = name.toLowerCase();
38+
if (name !== lowercaseName && primitives.includes(lowercaseName)) {
39+
const msg = `primitive should use lowercase: ${name}`;
40+
context.report({
41+
node,
42+
message: msg,
43+
fix: (fixer) => {
44+
return fixer.replaceText(
45+
node,
46+
`'${lowercaseName}'`,
47+
);
48+
},
49+
});
50+
}
5151

52-
return {
53-
[astSelector]: (node) => checkNamesArgument(node),
54-
};
55-
};
52+
}
5653

57-
module.exports.meta = {
58-
fixable: 'code',
54+
return {
55+
[astSelector]: (node) => checkNamesArgument(node),
56+
};
57+
},
5958
};

tools/eslint-rules/prefer-assert-methods.js

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,29 @@ const preferredAssertMethod = {
1919
'!=': 'notEqual',
2020
};
2121

22-
module.exports = function(context) {
23-
return {
24-
[astSelector]: function(node) {
25-
const arg = node.expression.arguments[0];
26-
const assertMethod = preferredAssertMethod[arg.operator];
27-
if (assertMethod) {
28-
context.report({
29-
node,
30-
message: parseError(assertMethod, arg.operator),
31-
fix: (fixer) => {
32-
const sourceCode = context.getSourceCode();
33-
const left = sourceCode.getText(arg.left);
34-
const right = sourceCode.getText(arg.right);
35-
return fixer.replaceText(
36-
node,
37-
`assert.${assertMethod}(${left}, ${right});`,
38-
);
39-
},
40-
});
41-
}
42-
},
43-
};
44-
};
45-
46-
module.exports.meta = {
47-
fixable: 'code',
22+
module.exports = {
23+
meta: { fixable: 'code' },
24+
create(context) {
25+
return {
26+
[astSelector]: function(node) {
27+
const arg = node.expression.arguments[0];
28+
const assertMethod = preferredAssertMethod[arg.operator];
29+
if (assertMethod) {
30+
context.report({
31+
node,
32+
message: parseError(assertMethod, arg.operator),
33+
fix: (fixer) => {
34+
const sourceCode = context.getSourceCode();
35+
const left = sourceCode.getText(arg.left);
36+
const right = sourceCode.getText(arg.right);
37+
return fixer.replaceText(
38+
node,
39+
`assert.${assertMethod}(${left}, ${right});`,
40+
);
41+
},
42+
});
43+
}
44+
},
45+
};
46+
},
4847
};

tools/eslint-rules/prefer-common-mustnotcall.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,18 @@ const mustCallSelector = 'CallExpression[callee.object.name="common"]' +
1515
const arg0Selector = `${mustCallSelector}[arguments.0.value=0]`;
1616
const arg1Selector = `${mustCallSelector}[arguments.1.value=0]`;
1717

18-
module.exports = function(context) {
19-
function report(node) {
20-
context.report(node, msg);
21-
}
18+
module.exports = {
19+
create(context) {
20+
function report(node) {
21+
context.report(node, msg);
22+
}
2223

23-
return {
24+
return {
2425
// Catch common.mustCall(0)
25-
[arg0Selector]: report,
26+
[arg0Selector]: report,
2627

27-
// Catch common.mustCall(fn, 0)
28-
[arg1Selector]: report,
29-
};
28+
// Catch common.mustCall(fn, 0)
29+
[arg1Selector]: report,
30+
};
31+
},
3032
};

tools/eslint-rules/require-common-first.js

Lines changed: 56 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -10,72 +10,74 @@ const { isRequireCall, isString } = require('./rules-utils.js');
1010
// Rule Definition
1111
//------------------------------------------------------------------------------
1212

13-
module.exports = function(context) {
14-
const requiredModule = 'common';
15-
const isESM = context.parserOptions.sourceType === 'module';
16-
const foundModules = [];
13+
module.exports = {
14+
create(context) {
15+
const requiredModule = 'common';
16+
const isESM = context.parserOptions.sourceType === 'module';
17+
const foundModules = [];
1718

18-
/**
19-
* Function to check if the path is a module and return its name.
20-
* @param {string} str The path to check
21-
* @returns {string} module name
22-
*/
23-
function getModuleName(str) {
24-
if (str === '../common/index.mjs') {
25-
return 'common';
26-
}
19+
/**
20+
* Function to check if the path is a module and return its name.
21+
* @param {string} str The path to check
22+
* @returns {string} module name
23+
*/
24+
function getModuleName(str) {
25+
if (str === '../common/index.mjs') {
26+
return 'common';
27+
}
2728

28-
return path.basename(str);
29-
}
29+
return path.basename(str);
30+
}
3031

31-
/**
32-
* Function to check if a node has an argument that is a module and
33-
* return its name.
34-
* @param {ASTNode} node The node to check
35-
* @returns {undefined | string} module name or undefined
36-
*/
37-
function getModuleNameFromCall(node) {
32+
/**
33+
* Function to check if a node has an argument that is a module and
34+
* return its name.
35+
* @param {ASTNode} node The node to check
36+
* @returns {undefined | string} module name or undefined
37+
*/
38+
function getModuleNameFromCall(node) {
3839
// Node has arguments and first argument is string
39-
if (node.arguments.length && isString(node.arguments[0])) {
40-
return getModuleName(node.arguments[0].value.trim());
41-
}
40+
if (node.arguments.length && isString(node.arguments[0])) {
41+
return getModuleName(node.arguments[0].value.trim());
42+
}
4243

43-
return undefined;
44-
}
44+
return undefined;
45+
}
4546

46-
const rules = {
47-
'Program:exit'(node) {
47+
const rules = {
48+
'Program:exit'(node) {
4849
// The common module should be loaded in the first place.
49-
const notLoadedFirst = foundModules.indexOf(requiredModule) !== 0;
50-
if (notLoadedFirst) {
51-
context.report(
52-
node,
53-
'Mandatory module "{{moduleName}}" must be loaded ' +
50+
const notLoadedFirst = foundModules.indexOf(requiredModule) !== 0;
51+
if (notLoadedFirst) {
52+
context.report(
53+
node,
54+
'Mandatory module "{{moduleName}}" must be loaded ' +
5455
'before any other modules.',
55-
{ moduleName: requiredModule },
56-
);
57-
}
58-
},
59-
};
60-
61-
if (isESM) {
62-
rules.ImportDeclaration = (node) => {
63-
const moduleName = getModuleName(node.source.value);
64-
if (moduleName) {
65-
foundModules.push(moduleName);
66-
}
56+
{ moduleName: requiredModule },
57+
);
58+
}
59+
},
6760
};
68-
} else {
69-
rules.CallExpression = (node) => {
70-
if (isRequireCall(node)) {
71-
const moduleName = getModuleNameFromCall(node);
7261

62+
if (isESM) {
63+
rules.ImportDeclaration = (node) => {
64+
const moduleName = getModuleName(node.source.value);
7365
if (moduleName) {
7466
foundModules.push(moduleName);
7567
}
76-
}
77-
};
78-
}
68+
};
69+
} else {
70+
rules.CallExpression = (node) => {
71+
if (isRequireCall(node)) {
72+
const moduleName = getModuleNameFromCall(node);
73+
74+
if (moduleName) {
75+
foundModules.push(moduleName);
76+
}
77+
}
78+
};
79+
}
7980

80-
return rules;
81+
return rules;
82+
},
8183
};

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy