const observerMap = { scroll: 'IntersectionObserver', resize: 'ResizeObserver' } module.exports = { meta: { type: 'suggestion', docs: { description: 'disallow poorly performing event listeners', url: require('../url')(module) }, schema: [] }, create(context) { return { ['CallExpression[callee.property.name="addEventListener"]']: function (node) { const [name] = node.arguments if (name.type !== 'Literal') return if (!(name.value in observerMap)) return context.report({ node, message: `Avoid using "${name.value}" event listener. Consider using ${observerMap[name.value]} instead` }) } } } }