Spaces:
Sleeping
Sleeping
| /** | |
| * @fileoverview Common utils for regular expressions. | |
| * @author Josh Goldberg | |
| * @author Toru Nagashima | |
| */ | |
| ; | |
| const { RegExpValidator } = require("@eslint-community/regexpp"); | |
| const REGEXPP_LATEST_ECMA_VERSION = 2025; | |
| /** | |
| * Checks if the given regular expression pattern would be valid with the `u` flag. | |
| * @param {number} ecmaVersion ECMAScript version to parse in. | |
| * @param {string} pattern The regular expression pattern to verify. | |
| * @param {"u"|"v"} flag The type of Unicode flag | |
| * @returns {boolean} `true` if the pattern would be valid with the `u` flag. | |
| * `false` if the pattern would be invalid with the `u` flag or the configured | |
| * ecmaVersion doesn't support the `u` flag. | |
| */ | |
| function isValidWithUnicodeFlag(ecmaVersion, pattern, flag = "u") { | |
| if (flag === "u" && ecmaVersion <= 5) { | |
| // ecmaVersion <= 5 doesn't support the 'u' flag | |
| return false; | |
| } | |
| if (flag === "v" && ecmaVersion <= 2023) { | |
| return false; | |
| } | |
| const validator = new RegExpValidator({ | |
| ecmaVersion: Math.min(ecmaVersion, REGEXPP_LATEST_ECMA_VERSION), | |
| }); | |
| try { | |
| validator.validatePattern( | |
| pattern, | |
| void 0, | |
| void 0, | |
| flag === "u" | |
| ? { | |
| unicode: /* uFlag = */ true, | |
| } | |
| : { | |
| unicodeSets: true, | |
| }, | |
| ); | |
| } catch { | |
| return false; | |
| } | |
| return true; | |
| } | |
| module.exports = { | |
| isValidWithUnicodeFlag, | |
| REGEXPP_LATEST_ECMA_VERSION, | |
| }; | |