59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
/**
 | 
						|
 * @fileoverview Common utils for regular expressions.
 | 
						|
 * @author Josh Goldberg
 | 
						|
 * @author Toru Nagashima
 | 
						|
 */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
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,
 | 
						|
};
 |