| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | /** * @fileoverview Rule to enforce the use of `u` flag on RegExp. * @author Toru Nagashima */"use strict";//------------------------------------------------------------------------------// Requirements//------------------------------------------------------------------------------const {    CALL,    CONSTRUCT,    ReferenceTracker,    getStringIfConstant} = require("eslint-utils");//------------------------------------------------------------------------------// Rule Definition//------------------------------------------------------------------------------/** @type {import('../shared/types').Rule} */module.exports = {    meta: {        type: "suggestion",        docs: {            description: "Enforce the use of `u` flag on RegExp",            recommended: false,            url: "https://eslint.org/docs/rules/require-unicode-regexp"        },        messages: {            requireUFlag: "Use the 'u' flag."        },        schema: []    },    create(context) {        return {            "Literal[regex]"(node) {                const flags = node.regex.flags || "";                if (!flags.includes("u")) {                    context.report({ node, messageId: "requireUFlag" });                }            },            Program() {                const scope = context.getScope();                const tracker = new ReferenceTracker(scope);                const trackMap = {                    RegExp: { [CALL]: true, [CONSTRUCT]: true }                };                for (const { node } of tracker.iterateGlobalReferences(trackMap)) {                    const flagsNode = node.arguments[1];                    const flags = getStringIfConstant(flagsNode, scope);                    if (!flagsNode || (typeof flags === "string" && !flags.includes("u"))) {                        context.report({ node, messageId: "requireUFlag" });                    }                }            }        };    }};
 |