CoolFace
Apppublic

Umama-at-Bluchip/Quick-UI

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
handle-callback-err.js102 linesDownload Raw Back to rules
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