Add a custom ESLint rule to require that setTimeout() and setInterval() get called with at least two arguments. This prevents omitting the duration or interval. PR-URL: https://github.com/nodejs/node/pull/9472 Reviewed-By: Teddy Katz <teddy.katz@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
25 lines
679 B
JavaScript
25 lines
679 B
JavaScript
/**
|
|
* @fileoverview Require at least two arguments when calling setTimeout() or
|
|
* setInterval().
|
|
* @author Rich Trott
|
|
*/
|
|
'use strict';
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Rule Definition
|
|
//------------------------------------------------------------------------------
|
|
|
|
function isTimer(name) {
|
|
return ['setTimeout', 'setInterval'].includes(name);
|
|
}
|
|
|
|
module.exports = function(context) {
|
|
return {
|
|
'CallExpression': function(node) {
|
|
const name = node.callee.name;
|
|
if (isTimer(name) && node.arguments.length < 2) {
|
|
context.report(node, `${name} must have at least 2 arguments`);
|
|
}
|
|
}
|
|
};
|
|
};
|