| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | /** * @fileoverview Rule to flag duplicate arguments * @author Jamund Ferguson */"use strict";//------------------------------------------------------------------------------// Rule Definition//------------------------------------------------------------------------------module.exports = {    meta: {        docs: {            description: "disallow duplicate arguments in `function` definitions",            category: "Possible Errors",            recommended: true,            url: "https://eslint.org/docs/rules/no-dupe-args"        },        schema: [],        messages: {            unexpected: "Duplicate param '{{name}}'."        }    },    create(context) {        //--------------------------------------------------------------------------        // Helpers        //--------------------------------------------------------------------------        /**         * Checks whether or not a given definition is a parameter's.         * @param {eslint-scope.DefEntry} def - A definition to check.         * @returns {boolean} `true` if the definition is a parameter's.         */        function isParameter(def) {            return def.type === "Parameter";        }        /**         * Determines if a given node has duplicate parameters.         * @param {ASTNode} node The node to check.         * @returns {void}         * @private         */        function checkParams(node) {            const variables = context.getDeclaredVariables(node);            for (let i = 0; i < variables.length; ++i) {                const variable = variables[i];                // Checks and reports duplications.                const defs = variable.defs.filter(isParameter);                if (defs.length >= 2) {                    context.report({                        node,                        messageId: "unexpected",                        data: { name: variable.name }                    });                }            }        }        //--------------------------------------------------------------------------        // Public API        //--------------------------------------------------------------------------        return {            FunctionDeclaration: checkParams,            FunctionExpression: checkParams        };    }};
 |