| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 'use strict';const {	isParenthesized,	getParenthesizedRange,} = require('./utils/parentheses.js');const toLocation = require('./utils/to-location.js');const MESSAGE_ID_ERROR = 'no-unreadable-iife';const messages = {	[MESSAGE_ID_ERROR]: 'IIFE with parenthesized arrow function body is considered unreadable.',};const selector = [	'CallExpression',	' > ',	'ArrowFunctionExpression.callee',	' > ',	':not(BlockStatement).body',].join('');/** @param {import('eslint').Rule.RuleContext} context */const create = context => ({	[selector](node) {		const sourceCode = context.getSourceCode();		if (!isParenthesized(node, sourceCode)) {			return;		}		return {			node,			loc: toLocation(getParenthesizedRange(node, sourceCode), sourceCode),			messageId: MESSAGE_ID_ERROR,		};	},});/** @type {import('eslint').Rule.RuleModule} */module.exports = {	create,	meta: {		type: 'suggestion',		docs: {			description: 'Disallow unreadable IIFEs.',		},		hasSuggestions: false,		messages,	},};
 |