eslint-plugin-green
Version:
ESLint plugin for evaluating and promoting green coding practices
32 lines (30 loc) • 1.09 kB
text/typescript
import type { Rule } from 'eslint';
import type { CallExpression, MemberExpression, Identifier } from 'estree';
const rule: Rule.RuleModule = {
meta: {
type: 'suggestion',
docs: {
description: 'Enforce efficient DOM operations',
category: 'DOM',
recommended: true,
},
schema: [], // no options
},
create(context: Rule.RuleContext): Rule.RuleListener {
return {
CallExpression(node: CallExpression): void {
if (node.callee.type === 'MemberExpression' &&
(node.callee as MemberExpression).object.type === 'Identifier' &&
((node.callee as MemberExpression).object as Identifier).name === 'document' &&
(node.callee as MemberExpression).property.type === 'Identifier' &&
((node.callee as MemberExpression).property as Identifier).name === 'getElementById') {
context.report({
node,
message: 'Consider caching DOM elements in variables to avoid repeated lookups'
});
}
}
};
}
};
export = rule;