| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | /** * @fileoverview Rule to flag when a function has too many parameters * @author Ilya Volodin */"use strict";//------------------------------------------------------------------------------// Requirements//------------------------------------------------------------------------------const lodash = require("lodash");const astUtils = require("../ast-utils");//------------------------------------------------------------------------------// Rule Definition//------------------------------------------------------------------------------module.exports = {    meta: {        docs: {            description: "enforce a maximum number of parameters in function definitions",            category: "Stylistic Issues",            recommended: false,            url: "https://eslint.org/docs/rules/max-params"        },        schema: [            {                oneOf: [                    {                        type: "integer",                        minimum: 0                    },                    {                        type: "object",                        properties: {                            maximum: {                                type: "integer",                                minimum: 0                            },                            max: {                                type: "integer",                                minimum: 0                            }                        },                        additionalProperties: false                    }                ]            }        ]    },    create(context) {        const option = context.options[0];        let numParams = 3;        if (typeof option === "object" && option.hasOwnProperty("maximum") && typeof option.maximum === "number") {            numParams = option.maximum;        }        if (typeof option === "object" && option.hasOwnProperty("max") && typeof option.max === "number") {            numParams = option.max;        }        if (typeof option === "number") {            numParams = option;        }        /**         * Checks a function to see if it has too many parameters.         * @param {ASTNode} node The node to check.         * @returns {void}         * @private         */        function checkFunction(node) {            if (node.params.length > numParams) {                context.report({                    node,                    message: "{{name}} has too many parameters ({{count}}). Maximum allowed is {{max}}.",                    data: {                        name: lodash.upperFirst(astUtils.getFunctionNameWithKind(node)),                        count: node.params.length,                        max: numParams                    }                });            }        }        return {            FunctionDeclaration: checkFunction,            ArrowFunctionExpression: checkFunction,            FunctionExpression: checkFunction        };    }};
 |