UNPKG

eslint-plugin-func-params-args

Version:

Limit the number of function parameters and arguments with ease and flexibility

1 lines 1.75 kB
"use strict";const{BASE_URL,isOptionConfigured}=require("../utils"),utils=require("@eslint-community/eslint-utils");function mapTypeToConfigKey(a){return"FunctionDeclaration"===a?"funcDefinition":"ArrowFunctionExpression"===a?"arrowFuncExpression":"FunctionExpression"===a?"funcExpression":"TSFunctionType"===a||"TSMethodSignature"===a?"funcTypeAnnotation":void 0}function getFunctionNameWithKind(a){return"TSFunctionType"===a.type?"TSTypeAliasDeclaration"===a.parent?.type?`function '${a.parent.id.name}'`:"TSTypeAnnotation"===a.parent?.type&&"Identifier"===a.parent.parent?.type?`function '${a.parent.parent.name}'`:`function '${a.parent?.parent?.key?.name}'`:"TSMethodSignature"===a.type?`function '${a.key?.name}'`:utils.getFunctionNameWithKind(a)}module.exports={meta:{type:"problem",docs:{description:"enforce the number of parameters used in a function definition or expression",url:BASE_URL+"func-params.md"},schema:[{type:"object",properties:{global:{type:"integer",minimum:-1},funcDefinition:{type:"integer",minimum:-1},funcExpression:{type:"integer",minimum:-1},arrowFuncExpression:{type:"integer",minimum:-1},funcTypeAnnotation:{type:"integer",minimum:-1}},additionalProperties:!1}],messages:{exceed:"{{name}} has too many parameters ({{count}}). Maximum allowed is ({{max}})."}},create(a){function b(b,c){a.report({node:b,messageId:"exceed",data:c})}function c(a,c){0<=c&&a.params.length>c&&b(a,{count:a.params.length,max:c,name:getFunctionNameWithKind(a)})}function d(a){const b=mapTypeToConfigKey(a.type);let d=-1;isOptionConfigured(e,b)?d=e[b]:isOptionConfigured(e,"global")&&(d=e.global),c(a,d)}const e=a.options[0]||{};return{FunctionDeclaration:d,ArrowFunctionExpression:d,FunctionExpression:d,TSFunctionType:d,TSMethodSignature:d}}};