|                                                                                               |  | /** * @fileoverview Rule to disallow a negated condition * @author Alberto Rodríguez */"use strict";
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
/** @type {import('../shared/types').Rule} */module.exports = {    meta: {        type: "suggestion",
        docs: {            description: "Disallow negated conditions",            recommended: false,            url: "https://eslint.org/docs/latest/rules/no-negated-condition"        },
        schema: [],
        messages: {            unexpectedNegated: "Unexpected negated condition."        }    },
    create(context) {
        /**         * Determines if a given node is an if-else without a condition on the else         * @param {ASTNode} node The node to check.         * @returns {boolean} True if the node has an else without an if.         * @private         */        function hasElseWithoutCondition(node) {            return node.alternate && node.alternate.type !== "IfStatement";        }
        /**         * Determines if a given node is a negated unary expression         * @param {Object} test The test object to check.         * @returns {boolean} True if the node is a negated unary expression.         * @private         */        function isNegatedUnaryExpression(test) {            return test.type === "UnaryExpression" && test.operator === "!";        }
        /**         * Determines if a given node is a negated binary expression         * @param {Test} test The test to check.         * @returns {boolean} True if the node is a negated binary expression.         * @private         */        function isNegatedBinaryExpression(test) {            return test.type === "BinaryExpression" &&                (test.operator === "!=" || test.operator === "!==");        }
        /**         * Determines if a given node has a negated if expression         * @param {ASTNode} node The node to check.         * @returns {boolean} True if the node has a negated if expression.         * @private         */        function isNegatedIf(node) {            return isNegatedUnaryExpression(node.test) || isNegatedBinaryExpression(node.test);        }
        return {            IfStatement(node) {                if (!hasElseWithoutCondition(node)) {                    return;                }
                if (isNegatedIf(node)) {                    context.report({                        node,                        messageId: "unexpectedNegated"                    });                }            },            ConditionalExpression(node) {                if (isNegatedIf(node)) {                    context.report({                        node,                        messageId: "unexpectedNegated"                    });                }            }        };    }};
 |