|                                                            |  | /** * @fileoverview Rule to flag when using constructor for wrapper objects * @author Ilya Volodin */
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const { getVariableByName } = require("./utils/ast-utils");
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
/** @type {import('../shared/types').Rule} */module.exports = {    meta: {        type: "suggestion",
        docs: {            description: "Disallow `new` operators with the `String`, `Number`, and `Boolean` objects",            recommended: false,            url: "https://eslint.org/docs/latest/rules/no-new-wrappers"        },
        schema: [],
        messages: {            noConstructor: "Do not use {{fn}} as a constructor."        }    },
    create(context) {        const { sourceCode } = context;
        return {
            NewExpression(node) {                const wrapperObjects = ["String", "Number", "Boolean"];                const { name } = node.callee;
                if (wrapperObjects.includes(name)) {                    const variable = getVariableByName(sourceCode.getScope(node), name);
                    if (variable && variable.identifiers.length === 0) {                        context.report({                            node,                            messageId: "noConstructor",                            data: { fn: name }                        });                    }                }            }        };
    }};
 |