| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | /** * @author Toru Nagashima <https://github.com/mysticatea> * See LICENSE file in root directory for full license. */"use strict"const { READ, ReferenceTracker } = require("eslint-utils")module.exports = {    meta: {        docs: {            description: "disallow the subclassing of the built-in classes.",            category: "ES2015",            recommended: false,            url:                "http://mysticatea.github.io/eslint-plugin-es/rules/no-subclassing-builtins.html",        },        fixable: null,        schema: [],        messages: {            forbidden: "ES2015 subclassing of '{{name}}' is forbidden.",        },    },    create(context) {        return {            "Program:exit"() {                const tracker = new ReferenceTracker(context.getScope())                for (const { node, path } of tracker.iterateGlobalReferences({                    Array: { [READ]: true },                    Boolean: { [READ]: true },                    Error: { [READ]: true },                    RegExp: { [READ]: true },                    Function: { [READ]: true },                    Map: { [READ]: true },                    Number: { [READ]: true },                    Promise: { [READ]: true },                    Set: { [READ]: true },                    String: { [READ]: true },                })) {                    if (                        node.parent.type.startsWith("Class") &&                        node.parent.superClass === node                    ) {                        context.report({                            node,                            messageId: "forbidden",                            data: { name: path.join(".") },                        })                    }                }            },        }    },}
 |