Umama-at-Bluchip/Quick-UI
0
1/**2 * @fileoverview Ensure handling of errors when we know they exist.3 * @author Jamund Ferguson4 * @deprecated in ESLint v7.0.05 */6 7"use strict";8 9//------------------------------------------------------------------------------10// Rule Definition11//------------------------------------------------------------------------------12 13/** @type {import('../shared/types').Rule} */14module.exports = {15 meta: {16 deprecated: true,17 18 replacedBy: [],19 20 type: "suggestion",21 22 docs: {23 description: "Require error handling in callbacks",24 recommended: false,25 url: "https://eslint.org/docs/latest/rules/handle-callback-err"26 },27 28 schema: [29 {30 type: "string"31 }32 ],33 messages: {34 expected: "Expected error to be handled."35 }36 },37 38 create(context) {39 40 const errorArgument = context.options[0] || "err";41 const sourceCode = context.sourceCode;42 43 /**44 * Checks if the given argument should be interpreted as a regexp pattern.45 * @param {string} stringToCheck The string which should be checked.46 * @returns {boolean} Whether or not the string should be interpreted as a pattern.47 */48 function isPattern(stringToCheck) {49 const firstChar = stringToCheck[0];50 51 return firstChar === "^";52 }53 54 /**55 * Checks if the given name matches the configured error argument.56 * @param {string} name The name which should be compared.57 * @returns {boolean} Whether or not the given name matches the configured error variable name.58 */59 function matchesConfiguredErrorName(name) {60 if (isPattern(errorArgument)) {61 const regexp = new RegExp(errorArgument, "u");62 63 return regexp.test(name);64 }65 return name === errorArgument;66 }67 68 /**69 * Get the parameters of a given function scope.70 * @param {Object} scope The function scope.71 * @returns {Array} All parameters of the given scope.72 */73 function getParameters(scope) {74 return scope.variables.filter(variable => variable.defs[0] && variable.defs[0].type === "Parameter");75 }76 77 /**78 * Check to see if we're handling the error object properly.79 * @param {ASTNode} node The AST node to check.80 * @returns {void}81 */82 function checkForError(node) {83 const scope = sourceCode.getScope(node),84 parameters = getParameters(scope),85 firstParameter = parameters[0];86 87 if (firstParameter && matchesConfiguredErrorName(firstParameter.name)) {88 if (firstParameter.references.length === 0) {89 context.report({ node, messageId: "expected" });90 }91 }92 }93 94 return {95 FunctionDeclaration: checkForError,96 FunctionExpression: checkForError,97 ArrowFunctionExpression: checkForError98 };99 100 }101};102 