diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..f1ef2a3
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,12 @@
+{
+ "env": {
+ "browser": true,
+ "es2021": true
+ },
+ "extends": "google",
+ "parserOptions": {
+ "ecmaVersion": "latest"
+ },
+ "rules": {
+ }
+}
diff --git a/js/script.js b/js/script.js
index ec5b155..43476e7 100644
--- a/js/script.js
+++ b/js/script.js
@@ -1,32 +1,32 @@
-document.addEventListener("DOMContentLoaded", function () {
- var videoSection = document.getElementById("video-section");
- if(videoSection!=null){
- videoSection.innerHTML =
+document.addEventListener('DOMContentLoaded', function() {
+ const videoSection = document.getElementById('video-section');
+ if (videoSection!=null) {
+ videoSection.innerHTML =
'
The best goal ever! It was better than everything!
';
-}
- document.getElementById("toggle-menu").addEventListener("click", function () {
- var nav = document.querySelector("nav");
- nav.classList.toggle("show-menu");
+ }
+ document.getElementById('toggle-menu').addEventListener('click', function() {
+ const nav = document.querySelector('nav');
+ nav.classList.toggle('show-menu');
});
document
- .getElementById("toggle-dark-mode")
- .addEventListener("click", function () {
- var body = document.body;
- body.classList.toggle("dark-mode");
- });
-
+ .getElementById('toggle-dark-mode')
+ .addEventListener('click', function() {
+ const body = document.body;
+ body.classList.toggle('dark-mode');
+ });
+
document
- .getElementById("toggle-dark-mode-nav")
- .addEventListener("click", function () {
- var body = document.body;
- body.classList.toggle("dark-mode");
- });
+ .getElementById('toggle-dark-mode-nav')
+ .addEventListener('click', function() {
+ const body = document.body;
+ body.classList.toggle('dark-mode');
+ });
- document.addEventListener("click", function (event) {
- var nav = document.querySelector("nav");
- if (!event.target.closest("nav") && event.target.id !== "toggle-menu") {
- nav.classList.remove("show-menu");
+ document.addEventListener('click', function(event) {
+ const nav = document.querySelector('nav');
+ if (!event.target.closest('nav') && event.target.id !== 'toggle-menu') {
+ nav.classList.remove('show-menu');
}
});
});
diff --git a/node_modules/.bin/acorn b/node_modules/.bin/acorn
new file mode 100644
index 0000000..679bd16
--- /dev/null
+++ b/node_modules/.bin/acorn
@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*)
+ if command -v cygpath > /dev/null 2>&1; then
+ basedir=`cygpath -w "$basedir"`
+ fi
+ ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@"
+else
+ exec node "$basedir/../acorn/bin/acorn" "$@"
+fi
diff --git a/node_modules/.bin/acorn.cmd b/node_modules/.bin/acorn.cmd
new file mode 100644
index 0000000..a9324df
--- /dev/null
+++ b/node_modules/.bin/acorn.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %*
diff --git a/node_modules/.bin/acorn.ps1 b/node_modules/.bin/acorn.ps1
new file mode 100644
index 0000000..6f6dcdd
--- /dev/null
+++ b/node_modules/.bin/acorn.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../acorn/bin/acorn" $args
+ } else {
+ & "node$exe" "$basedir/../acorn/bin/acorn" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/eslint b/node_modules/.bin/eslint
new file mode 100644
index 0000000..d450ee1
--- /dev/null
+++ b/node_modules/.bin/eslint
@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*)
+ if command -v cygpath > /dev/null 2>&1; then
+ basedir=`cygpath -w "$basedir"`
+ fi
+ ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../eslint/bin/eslint.js" "$@"
+else
+ exec node "$basedir/../eslint/bin/eslint.js" "$@"
+fi
diff --git a/node_modules/.bin/eslint.cmd b/node_modules/.bin/eslint.cmd
new file mode 100644
index 0000000..032901a
--- /dev/null
+++ b/node_modules/.bin/eslint.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\eslint\bin\eslint.js" %*
diff --git a/node_modules/.bin/eslint.ps1 b/node_modules/.bin/eslint.ps1
new file mode 100644
index 0000000..155bec4
--- /dev/null
+++ b/node_modules/.bin/eslint.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ } else {
+ & "node$exe" "$basedir/../eslint/bin/eslint.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml
new file mode 100644
index 0000000..82416ef
--- /dev/null
+++ b/node_modules/.bin/js-yaml
@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*)
+ if command -v cygpath > /dev/null 2>&1; then
+ basedir=`cygpath -w "$basedir"`
+ fi
+ ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+else
+ exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@"
+fi
diff --git a/node_modules/.bin/js-yaml.cmd b/node_modules/.bin/js-yaml.cmd
new file mode 100644
index 0000000..453312b
--- /dev/null
+++ b/node_modules/.bin/js-yaml.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %*
diff --git a/node_modules/.bin/js-yaml.ps1 b/node_modules/.bin/js-yaml.ps1
new file mode 100644
index 0000000..2acfc61
--- /dev/null
+++ b/node_modules/.bin/js-yaml.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ } else {
+ & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/node-which b/node_modules/.bin/node-which
new file mode 100644
index 0000000..b49b03f
--- /dev/null
+++ b/node_modules/.bin/node-which
@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*)
+ if command -v cygpath > /dev/null 2>&1; then
+ basedir=`cygpath -w "$basedir"`
+ fi
+ ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../which/bin/node-which" "$@"
+else
+ exec node "$basedir/../which/bin/node-which" "$@"
+fi
diff --git a/node_modules/.bin/node-which.cmd b/node_modules/.bin/node-which.cmd
new file mode 100644
index 0000000..8738aed
--- /dev/null
+++ b/node_modules/.bin/node-which.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %*
diff --git a/node_modules/.bin/node-which.ps1 b/node_modules/.bin/node-which.ps1
new file mode 100644
index 0000000..cfb09e8
--- /dev/null
+++ b/node_modules/.bin/node-which.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../which/bin/node-which" $args
+ } else {
+ & "node$exe" "$basedir/../which/bin/node-which" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.bin/rimraf b/node_modules/.bin/rimraf
new file mode 100644
index 0000000..6d6240a
--- /dev/null
+++ b/node_modules/.bin/rimraf
@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+ *CYGWIN*|*MINGW*|*MSYS*)
+ if command -v cygpath > /dev/null 2>&1; then
+ basedir=`cygpath -w "$basedir"`
+ fi
+ ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ exec "$basedir/node" "$basedir/../rimraf/bin.js" "$@"
+else
+ exec node "$basedir/../rimraf/bin.js" "$@"
+fi
diff --git a/node_modules/.bin/rimraf.cmd b/node_modules/.bin/rimraf.cmd
new file mode 100644
index 0000000..13f45ec
--- /dev/null
+++ b/node_modules/.bin/rimraf.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+ SET "_prog=%dp0%\node.exe"
+) ELSE (
+ SET "_prog=node"
+ SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rimraf\bin.js" %*
diff --git a/node_modules/.bin/rimraf.ps1 b/node_modules/.bin/rimraf.ps1
new file mode 100644
index 0000000..1716791
--- /dev/null
+++ b/node_modules/.bin/rimraf.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+ # Fix case when both the Windows and Linux builds of Node
+ # are installed in the same directory
+ $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
+ } else {
+ & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args
+ }
+ $ret=$LASTEXITCODE
+} else {
+ # Support pipeline input
+ if ($MyInvocation.ExpectingInput) {
+ $input | & "node$exe" "$basedir/../rimraf/bin.js" $args
+ } else {
+ & "node$exe" "$basedir/../rimraf/bin.js" $args
+ }
+ $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 0000000..92b586e
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,1139 @@
+{
+ "name": "2023-fall-lab-portfolio-amiri-z.-f",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "dev": true
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-google": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
+ "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=5.16.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+ "dev": true
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/node_modules/@aashutoshrathi/word-wrap/LICENSE b/node_modules/@aashutoshrathi/word-wrap/LICENSE
new file mode 100644
index 0000000..842218c
--- /dev/null
+++ b/node_modules/@aashutoshrathi/word-wrap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2016, Jon Schlinkert
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@aashutoshrathi/word-wrap/README.md b/node_modules/@aashutoshrathi/word-wrap/README.md
new file mode 100644
index 0000000..3abb882
--- /dev/null
+++ b/node_modules/@aashutoshrathi/word-wrap/README.md
@@ -0,0 +1,182 @@
+# word-wrap [![NPM version](https://img.shields.io/npm/v/word-wrap.svg?style=flat)](https://www.npmjs.com/package/word-wrap) [![NPM monthly downloads](https://img.shields.io/npm/dm/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![NPM total downloads](https://img.shields.io/npm/dt/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/word-wrap.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/word-wrap)
+
+> Wrap words to a specified length.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save word-wrap
+```
+
+## Usage
+
+```js
+var wrap = require('word-wrap');
+
+wrap('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.');
+```
+
+Results in:
+
+```
+ Lorem ipsum dolor sit amet, consectetur adipiscing
+ elit, sed do eiusmod tempor incididunt ut labore
+ et dolore magna aliqua. Ut enim ad minim veniam,
+ quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat.
+```
+
+## Options
+
+![image](https://cloud.githubusercontent.com/assets/383994/6543728/7a381c08-c4f6-11e4-8b7d-b6ba197569c9.png)
+
+### options.width
+
+Type: `Number`
+
+Default: `50`
+
+The width of the text before wrapping to a new line.
+
+**Example:**
+
+```js
+wrap(str, {width: 60});
+```
+
+### options.indent
+
+Type: `String`
+
+Default: `` (none)
+
+The string to use at the beginning of each line.
+
+**Example:**
+
+```js
+wrap(str, {indent: ' '});
+```
+
+### options.newline
+
+Type: `String`
+
+Default: `\n`
+
+The string to use at the end of each line.
+
+**Example:**
+
+```js
+wrap(str, {newline: '\n\n'});
+```
+
+### options.escape
+
+Type: `function`
+
+Default: `function(str){return str;}`
+
+An escape function to run on each line after splitting them.
+
+**Example:**
+
+```js
+var xmlescape = require('xml-escape');
+wrap(str, {
+ escape: function(string){
+ return xmlescape(string);
+ }
+});
+```
+
+### options.trim
+
+Type: `Boolean`
+
+Default: `false`
+
+Trim trailing whitespace from the returned string. This option is included since `.trim()` would also strip the leading indentation from the first line.
+
+**Example:**
+
+```js
+wrap(str, {trim: true});
+```
+
+### options.cut
+
+Type: `Boolean`
+
+Default: `false`
+
+Break a word between any two letters when the word is longer than the specified width.
+
+**Example:**
+
+```js
+wrap(str, {cut: true});
+```
+
+## About
+
+### Related projects
+
+* [common-words](https://www.npmjs.com/package/common-words): Updated list (JSON) of the 100 most common words in the English language. Useful for… [more](https://github.com/jonschlinkert/common-words) | [homepage](https://github.com/jonschlinkert/common-words "Updated list (JSON) of the 100 most common words in the English language. Useful for excluding these words from arrays.")
+* [shuffle-words](https://www.npmjs.com/package/shuffle-words): Shuffle the words in a string and optionally the letters in each word using the… [more](https://github.com/jonschlinkert/shuffle-words) | [homepage](https://github.com/jonschlinkert/shuffle-words "Shuffle the words in a string and optionally the letters in each word using the Fisher-Yates algorithm. Useful for creating test fixtures, benchmarking samples, etc.")
+* [unique-words](https://www.npmjs.com/package/unique-words): Return the unique words in a string or array. | [homepage](https://github.com/jonschlinkert/unique-words "Return the unique words in a string or array.")
+* [wordcount](https://www.npmjs.com/package/wordcount): Count the words in a string. Support for english, CJK and Cyrillic. | [homepage](https://github.com/jonschlinkert/wordcount "Count the words in a string. Support for english, CJK and Cyrillic.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Contributors
+
+| **Commits** | **Contributor** |
+| --- | --- |
+| 43 | [jonschlinkert](https://github.com/jonschlinkert) |
+| 2 | [lordvlad](https://github.com/lordvlad) |
+| 2 | [hildjj](https://github.com/hildjj) |
+| 1 | [danilosampaio](https://github.com/danilosampaio) |
+| 1 | [2fd](https://github.com/2fd) |
+| 1 | [toddself](https://github.com/toddself) |
+| 1 | [wolfgang42](https://github.com/wolfgang42) |
+| 1 | [zachhale](https://github.com/zachhale) |
+
+### Building docs
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+### Running tests
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+### Author
+
+**Jon Schlinkert**
+
+* [github/jonschlinkert](https://github.com/jonschlinkert)
+* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
+
+### License
+
+Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 02, 2017._
diff --git a/node_modules/@aashutoshrathi/word-wrap/index.d.ts b/node_modules/@aashutoshrathi/word-wrap/index.d.ts
new file mode 100644
index 0000000..1acd425
--- /dev/null
+++ b/node_modules/@aashutoshrathi/word-wrap/index.d.ts
@@ -0,0 +1,50 @@
+/**
+ * Wrap words to a specified length.
+ */
+export = wrap;
+
+declare function wrap(str: string, options?: wrap.IOptions): string;
+
+declare namespace wrap {
+ export interface IOptions {
+
+ /**
+ * The width of the text before wrapping to a new line.
+ * @default ´50´
+ */
+ width?: number;
+
+ /**
+ * The string to use at the beginning of each line.
+ * @default ´´ (none)
+ */
+ indent?: string;
+
+ /**
+ * The string to use at the end of each line.
+ * @default ´\n´
+ */
+ newline?: string;
+
+ /**
+ * An escape function to run on each line after splitting them.
+ * @default (str: string) => string;
+ */
+ escape?: (str: string) => string;
+
+ /**
+ * Trim trailing whitespace from the returned string.
+ * This option is included since .trim() would also strip
+ * the leading indentation from the first line.
+ * @default true
+ */
+ trim?: boolean;
+
+ /**
+ * Break a word between any two letters when the word is longer
+ * than the specified width.
+ * @default false
+ */
+ cut?: boolean;
+ }
+}
diff --git a/node_modules/@aashutoshrathi/word-wrap/index.js b/node_modules/@aashutoshrathi/word-wrap/index.js
new file mode 100644
index 0000000..461a17c
--- /dev/null
+++ b/node_modules/@aashutoshrathi/word-wrap/index.js
@@ -0,0 +1,52 @@
+/*!
+ * word-wrap
+ *
+ * Copyright (c) 2014-2023, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+function trimTabAndSpaces(str) {
+ const lines = str.split('\n');
+ const trimmedLines = lines.map((line) => line.trimEnd());
+ return trimmedLines.join('\n');
+}
+
+module.exports = function(str, options) {
+ options = options || {};
+ if (str == null) {
+ return str;
+ }
+
+ var width = options.width || 50;
+ var indent = (typeof options.indent === 'string')
+ ? options.indent
+ : '';
+
+ var newline = options.newline || '\n' + indent;
+ var escape = typeof options.escape === 'function'
+ ? options.escape
+ : identity;
+
+ var regexString = '.{1,' + width + '}';
+ if (options.cut !== true) {
+ regexString += '([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)';
+ }
+
+ var re = new RegExp(regexString, 'g');
+ var lines = str.match(re) || [];
+ var result = indent + lines.map(function(line) {
+ if (line.slice(-1) === '\n') {
+ line = line.slice(0, line.length - 1);
+ }
+ return escape(line);
+ }).join(newline);
+
+ if (options.trim === true) {
+ result = trimTabAndSpaces(result);
+ }
+ return result;
+};
+
+function identity(str) {
+ return str;
+}
diff --git a/node_modules/@aashutoshrathi/word-wrap/package.json b/node_modules/@aashutoshrathi/word-wrap/package.json
new file mode 100644
index 0000000..e33e077
--- /dev/null
+++ b/node_modules/@aashutoshrathi/word-wrap/package.json
@@ -0,0 +1,81 @@
+{
+ "name": "@aashutoshrathi/word-wrap",
+ "description": "Wrap words to a specified length.",
+ "version": "1.2.6",
+ "homepage": "https://github.com/aashutoshrathi/word-wrap",
+ "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
+ "contributors": [
+ "Aashutosh Rathi ",
+ "Danilo Sampaio (localhost:8080)",
+ "Fede Ramirez (https://2fd.github.io)",
+ "Joe Hildebrand (https://twitter.com/hildjj)",
+ "Jon Schlinkert (http://twitter.com/jonschlinkert)",
+ "Todd Kennedy (https://tck.io)",
+ "Waldemar Reusch (https://github.com/lordvlad)",
+ "Wolfgang Faust (http://www.linestarve.com)",
+ "Zach Hale (http://zachhale.com)"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/aashutoshrathi/word-wrap.git"
+ },
+ "bugs": {
+ "url": "https://github.com/aashutoshrathi/word-wrap/issues"
+ },
+ "license": "MIT",
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "main": "index.js",
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "devDependencies": {
+ "gulp-format-md": "^0.1.11",
+ "mocha": "^10.2.0"
+ },
+ "keywords": [
+ "break",
+ "carriage",
+ "line",
+ "new-line",
+ "newline",
+ "return",
+ "soft",
+ "text",
+ "word",
+ "word-wrap",
+ "words",
+ "wrap"
+ ],
+ "typings": "index.d.ts",
+ "verb": {
+ "toc": false,
+ "layout": "default",
+ "tasks": [
+ "readme"
+ ],
+ "plugins": [
+ "gulp-format-md"
+ ],
+ "lint": {
+ "reflinks": true
+ },
+ "related": {
+ "list": [
+ "common-words",
+ "shuffle-words",
+ "unique-words",
+ "wordcount"
+ ]
+ },
+ "reflinks": [
+ "verb",
+ "verb-generate-readme"
+ ]
+ }
+}
diff --git a/node_modules/@eslint-community/eslint-utils/LICENSE b/node_modules/@eslint-community/eslint-utils/LICENSE
new file mode 100644
index 0000000..883ee1f
--- /dev/null
+++ b/node_modules/@eslint-community/eslint-utils/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Toru Nagashima
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@eslint-community/eslint-utils/README.md b/node_modules/@eslint-community/eslint-utils/README.md
new file mode 100644
index 0000000..90552a9
--- /dev/null
+++ b/node_modules/@eslint-community/eslint-utils/README.md
@@ -0,0 +1,37 @@
+# @eslint-community/eslint-utils
+
+[![npm version](https://img.shields.io/npm/v/@eslint-community/eslint-utils.svg)](https://www.npmjs.com/package/@eslint-community/eslint-utils)
+[![Downloads/month](https://img.shields.io/npm/dm/@eslint-community/eslint-utils.svg)](http://www.npmtrends.com/@eslint-community/eslint-utils)
+[![Build Status](https://github.com/eslint-community/eslint-utils/workflows/CI/badge.svg)](https://github.com/eslint-community/eslint-utils/actions)
+[![Coverage Status](https://codecov.io/gh/eslint-community/eslint-utils/branch/main/graph/badge.svg)](https://codecov.io/gh/eslint-community/eslint-utils)
+
+## 🏁 Goal
+
+This package provides utility functions and classes for make ESLint custom rules.
+
+For examples:
+
+- [`getStaticValue`](https://eslint-community.github.io/eslint-utils/api/ast-utils.html#getstaticvalue) evaluates static value on AST.
+- [`ReferenceTracker`](https://eslint-community.github.io/eslint-utils/api/scope-utils.html#referencetracker-class) checks the members of modules/globals as handling assignments and destructuring.
+
+## 📖 Usage
+
+See [documentation](https://eslint-community.github.io/eslint-utils).
+
+## 📰 Changelog
+
+See [releases](https://github.com/eslint-community/eslint-utils/releases).
+
+## ❤️ Contributing
+
+Welcome contributing!
+
+Please use GitHub's Issues/PRs.
+
+### Development Tools
+
+- `npm test` runs tests and measures coverage.
+- `npm run clean` removes the coverage result of `npm test` command.
+- `npm run coverage` shows the coverage result of the last `npm test` command.
+- `npm run lint` runs ESLint.
+- `npm run watch` runs tests on each file change.
diff --git a/node_modules/@eslint-community/eslint-utils/index.js b/node_modules/@eslint-community/eslint-utils/index.js
new file mode 100644
index 0000000..156015e
--- /dev/null
+++ b/node_modules/@eslint-community/eslint-utils/index.js
@@ -0,0 +1,2068 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var eslintVisitorKeys = require('eslint-visitor-keys');
+
+/**
+ * Get the innermost scope which contains a given location.
+ * @param {Scope} initialScope The initial scope to search.
+ * @param {Node} node The location to search.
+ * @returns {Scope} The innermost scope.
+ */
+function getInnermostScope(initialScope, node) {
+ const location = node.range[0];
+
+ let scope = initialScope;
+ let found = false;
+ do {
+ found = false;
+ for (const childScope of scope.childScopes) {
+ const range = childScope.block.range;
+
+ if (range[0] <= location && location < range[1]) {
+ scope = childScope;
+ found = true;
+ break
+ }
+ }
+ } while (found)
+
+ return scope
+}
+
+/**
+ * Find the variable of a given name.
+ * @param {Scope} initialScope The scope to start finding.
+ * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.
+ * @returns {Variable|null} The found variable or null.
+ */
+function findVariable(initialScope, nameOrNode) {
+ let name = "";
+ let scope = initialScope;
+
+ if (typeof nameOrNode === "string") {
+ name = nameOrNode;
+ } else {
+ name = nameOrNode.name;
+ scope = getInnermostScope(scope, nameOrNode);
+ }
+
+ while (scope != null) {
+ const variable = scope.set.get(name);
+ if (variable != null) {
+ return variable
+ }
+ scope = scope.upper;
+ }
+
+ return null
+}
+
+/**
+ * Negate the result of `this` calling.
+ * @param {Token} token The token to check.
+ * @returns {boolean} `true` if the result of `this(token)` is `false`.
+ */
+function negate0(token) {
+ return !this(token) //eslint-disable-line no-invalid-this
+}
+
+/**
+ * Creates the negate function of the given function.
+ * @param {function(Token):boolean} f - The function to negate.
+ * @returns {function(Token):boolean} Negated function.
+ */
+function negate(f) {
+ return negate0.bind(f)
+}
+
+/**
+ * Checks if the given token is a PunctuatorToken with the given value
+ * @param {Token} token - The token to check.
+ * @param {string} value - The value to check.
+ * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.
+ */
+function isPunctuatorTokenWithValue(token, value) {
+ return token.type === "Punctuator" && token.value === value
+}
+
+/**
+ * Checks if the given token is an arrow token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an arrow token.
+ */
+function isArrowToken(token) {
+ return isPunctuatorTokenWithValue(token, "=>")
+}
+
+/**
+ * Checks if the given token is a comma token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comma token.
+ */
+function isCommaToken(token) {
+ return isPunctuatorTokenWithValue(token, ",")
+}
+
+/**
+ * Checks if the given token is a semicolon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a semicolon token.
+ */
+function isSemicolonToken(token) {
+ return isPunctuatorTokenWithValue(token, ";")
+}
+
+/**
+ * Checks if the given token is a colon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a colon token.
+ */
+function isColonToken(token) {
+ return isPunctuatorTokenWithValue(token, ":")
+}
+
+/**
+ * Checks if the given token is an opening parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening parenthesis token.
+ */
+function isOpeningParenToken(token) {
+ return isPunctuatorTokenWithValue(token, "(")
+}
+
+/**
+ * Checks if the given token is a closing parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing parenthesis token.
+ */
+function isClosingParenToken(token) {
+ return isPunctuatorTokenWithValue(token, ")")
+}
+
+/**
+ * Checks if the given token is an opening square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening square bracket token.
+ */
+function isOpeningBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "[")
+}
+
+/**
+ * Checks if the given token is a closing square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing square bracket token.
+ */
+function isClosingBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "]")
+}
+
+/**
+ * Checks if the given token is an opening brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening brace token.
+ */
+function isOpeningBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "{")
+}
+
+/**
+ * Checks if the given token is a closing brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing brace token.
+ */
+function isClosingBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "}")
+}
+
+/**
+ * Checks if the given token is a comment token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comment token.
+ */
+function isCommentToken(token) {
+ return ["Block", "Line", "Shebang"].includes(token.type)
+}
+
+const isNotArrowToken = negate(isArrowToken);
+const isNotCommaToken = negate(isCommaToken);
+const isNotSemicolonToken = negate(isSemicolonToken);
+const isNotColonToken = negate(isColonToken);
+const isNotOpeningParenToken = negate(isOpeningParenToken);
+const isNotClosingParenToken = negate(isClosingParenToken);
+const isNotOpeningBracketToken = negate(isOpeningBracketToken);
+const isNotClosingBracketToken = negate(isClosingBracketToken);
+const isNotOpeningBraceToken = negate(isOpeningBraceToken);
+const isNotClosingBraceToken = negate(isClosingBraceToken);
+const isNotCommentToken = negate(isCommentToken);
+
+/**
+ * Get the `(` token of the given function node.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {Token} `(` token.
+ */
+function getOpeningParenOfParams(node, sourceCode) {
+ return node.id
+ ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)
+ : sourceCode.getFirstToken(node, isOpeningParenToken)
+}
+
+/**
+ * Get the location of the given function node for reporting.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {string} The location of the function node for reporting.
+ */
+function getFunctionHeadLocation(node, sourceCode) {
+ const parent = node.parent;
+ let start = null;
+ let end = null;
+
+ if (node.type === "ArrowFunctionExpression") {
+ const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken);
+
+ start = arrowToken.loc.start;
+ end = arrowToken.loc.end;
+ } else if (
+ parent.type === "Property" ||
+ parent.type === "MethodDefinition" ||
+ parent.type === "PropertyDefinition"
+ ) {
+ start = parent.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ } else {
+ start = node.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ }
+
+ return {
+ start: { ...start },
+ end: { ...end },
+ }
+}
+
+/* globals globalThis, global, self, window */
+
+const globalObject =
+ typeof globalThis !== "undefined"
+ ? globalThis
+ : typeof self !== "undefined"
+ ? self
+ : typeof window !== "undefined"
+ ? window
+ : typeof global !== "undefined"
+ ? global
+ : {};
+
+const builtinNames = Object.freeze(
+ new Set([
+ "Array",
+ "ArrayBuffer",
+ "BigInt",
+ "BigInt64Array",
+ "BigUint64Array",
+ "Boolean",
+ "DataView",
+ "Date",
+ "decodeURI",
+ "decodeURIComponent",
+ "encodeURI",
+ "encodeURIComponent",
+ "escape",
+ "Float32Array",
+ "Float64Array",
+ "Function",
+ "Infinity",
+ "Int16Array",
+ "Int32Array",
+ "Int8Array",
+ "isFinite",
+ "isNaN",
+ "isPrototypeOf",
+ "JSON",
+ "Map",
+ "Math",
+ "NaN",
+ "Number",
+ "Object",
+ "parseFloat",
+ "parseInt",
+ "Promise",
+ "Proxy",
+ "Reflect",
+ "RegExp",
+ "Set",
+ "String",
+ "Symbol",
+ "Uint16Array",
+ "Uint32Array",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "undefined",
+ "unescape",
+ "WeakMap",
+ "WeakSet",
+ ]),
+);
+const callAllowed = new Set(
+ [
+ Array.isArray,
+ Array.of,
+ Array.prototype.at,
+ Array.prototype.concat,
+ Array.prototype.entries,
+ Array.prototype.every,
+ Array.prototype.filter,
+ Array.prototype.find,
+ Array.prototype.findIndex,
+ Array.prototype.flat,
+ Array.prototype.includes,
+ Array.prototype.indexOf,
+ Array.prototype.join,
+ Array.prototype.keys,
+ Array.prototype.lastIndexOf,
+ Array.prototype.slice,
+ Array.prototype.some,
+ Array.prototype.toString,
+ Array.prototype.values,
+ typeof BigInt === "function" ? BigInt : undefined,
+ Boolean,
+ Date,
+ Date.parse,
+ decodeURI,
+ decodeURIComponent,
+ encodeURI,
+ encodeURIComponent,
+ escape,
+ isFinite,
+ isNaN,
+ isPrototypeOf,
+ Map,
+ Map.prototype.entries,
+ Map.prototype.get,
+ Map.prototype.has,
+ Map.prototype.keys,
+ Map.prototype.values,
+ ...Object.getOwnPropertyNames(Math)
+ .filter((k) => k !== "random")
+ .map((k) => Math[k])
+ .filter((f) => typeof f === "function"),
+ Number,
+ Number.isFinite,
+ Number.isNaN,
+ Number.parseFloat,
+ Number.parseInt,
+ Number.prototype.toExponential,
+ Number.prototype.toFixed,
+ Number.prototype.toPrecision,
+ Number.prototype.toString,
+ Object,
+ Object.entries,
+ Object.is,
+ Object.isExtensible,
+ Object.isFrozen,
+ Object.isSealed,
+ Object.keys,
+ Object.values,
+ parseFloat,
+ parseInt,
+ RegExp,
+ Set,
+ Set.prototype.entries,
+ Set.prototype.has,
+ Set.prototype.keys,
+ Set.prototype.values,
+ String,
+ String.fromCharCode,
+ String.fromCodePoint,
+ String.raw,
+ String.prototype.at,
+ String.prototype.charAt,
+ String.prototype.charCodeAt,
+ String.prototype.codePointAt,
+ String.prototype.concat,
+ String.prototype.endsWith,
+ String.prototype.includes,
+ String.prototype.indexOf,
+ String.prototype.lastIndexOf,
+ String.prototype.normalize,
+ String.prototype.padEnd,
+ String.prototype.padStart,
+ String.prototype.slice,
+ String.prototype.startsWith,
+ String.prototype.substr,
+ String.prototype.substring,
+ String.prototype.toLowerCase,
+ String.prototype.toString,
+ String.prototype.toUpperCase,
+ String.prototype.trim,
+ String.prototype.trimEnd,
+ String.prototype.trimLeft,
+ String.prototype.trimRight,
+ String.prototype.trimStart,
+ Symbol.for,
+ Symbol.keyFor,
+ unescape,
+ ].filter((f) => typeof f === "function"),
+);
+const callPassThrough = new Set([
+ Object.freeze,
+ Object.preventExtensions,
+ Object.seal,
+]);
+
+/** @type {ReadonlyArray]>} */
+const getterAllowed = [
+ [Map, new Set(["size"])],
+ [
+ RegExp,
+ new Set([
+ "dotAll",
+ "flags",
+ "global",
+ "hasIndices",
+ "ignoreCase",
+ "multiline",
+ "source",
+ "sticky",
+ "unicode",
+ ]),
+ ],
+ [Set, new Set(["size"])],
+];
+
+/**
+ * Get the property descriptor.
+ * @param {object} object The object to get.
+ * @param {string|number|symbol} name The property name to get.
+ */
+function getPropertyDescriptor(object, name) {
+ let x = object;
+ while ((typeof x === "object" || typeof x === "function") && x !== null) {
+ const d = Object.getOwnPropertyDescriptor(x, name);
+ if (d) {
+ return d
+ }
+ x = Object.getPrototypeOf(x);
+ }
+ return null
+}
+
+/**
+ * Check if a property is getter or not.
+ * @param {object} object The object to check.
+ * @param {string|number|symbol} name The property name to check.
+ */
+function isGetter(object, name) {
+ const d = getPropertyDescriptor(object, name);
+ return d != null && d.get != null
+}
+
+/**
+ * Get the element values of a given node list.
+ * @param {Node[]} nodeList The node list to get values.
+ * @param {Scope|undefined} initialScope The initial scope to find variables.
+ * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.
+ */
+function getElementValues(nodeList, initialScope) {
+ const valueList = [];
+
+ for (let i = 0; i < nodeList.length; ++i) {
+ const elementNode = nodeList[i];
+
+ if (elementNode == null) {
+ valueList.length = i + 1;
+ } else if (elementNode.type === "SpreadElement") {
+ const argument = getStaticValueR(elementNode.argument, initialScope);
+ if (argument == null) {
+ return null
+ }
+ valueList.push(...argument.value);
+ } else {
+ const element = getStaticValueR(elementNode, initialScope);
+ if (element == null) {
+ return null
+ }
+ valueList.push(element.value);
+ }
+ }
+
+ return valueList
+}
+
+/**
+ * Returns whether the given variable is never written to after initialization.
+ * @param {import("eslint").Scope.Variable} variable
+ * @returns {boolean}
+ */
+function isEffectivelyConst(variable) {
+ const refs = variable.references;
+
+ const inits = refs.filter((r) => r.init).length;
+ const reads = refs.filter((r) => r.isReadOnly()).length;
+ if (inits === 1 && reads + inits === refs.length) {
+ // there is only one init and all other references only read
+ return true
+ }
+ return false
+}
+
+const operations = Object.freeze({
+ ArrayExpression(node, initialScope) {
+ const elements = getElementValues(node.elements, initialScope);
+ return elements != null ? { value: elements } : null
+ },
+
+ AssignmentExpression(node, initialScope) {
+ if (node.operator === "=") {
+ return getStaticValueR(node.right, initialScope)
+ }
+ return null
+ },
+
+ //eslint-disable-next-line complexity
+ BinaryExpression(node, initialScope) {
+ if (node.operator === "in" || node.operator === "instanceof") {
+ // Not supported.
+ return null
+ }
+
+ const left = getStaticValueR(node.left, initialScope);
+ const right = getStaticValueR(node.right, initialScope);
+ if (left != null && right != null) {
+ switch (node.operator) {
+ case "==":
+ return { value: left.value == right.value } //eslint-disable-line eqeqeq
+ case "!=":
+ return { value: left.value != right.value } //eslint-disable-line eqeqeq
+ case "===":
+ return { value: left.value === right.value }
+ case "!==":
+ return { value: left.value !== right.value }
+ case "<":
+ return { value: left.value < right.value }
+ case "<=":
+ return { value: left.value <= right.value }
+ case ">":
+ return { value: left.value > right.value }
+ case ">=":
+ return { value: left.value >= right.value }
+ case "<<":
+ return { value: left.value << right.value }
+ case ">>":
+ return { value: left.value >> right.value }
+ case ">>>":
+ return { value: left.value >>> right.value }
+ case "+":
+ return { value: left.value + right.value }
+ case "-":
+ return { value: left.value - right.value }
+ case "*":
+ return { value: left.value * right.value }
+ case "/":
+ return { value: left.value / right.value }
+ case "%":
+ return { value: left.value % right.value }
+ case "**":
+ return { value: left.value ** right.value }
+ case "|":
+ return { value: left.value | right.value }
+ case "^":
+ return { value: left.value ^ right.value }
+ case "&":
+ return { value: left.value & right.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+
+ CallExpression(node, initialScope) {
+ const calleeNode = node.callee;
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (args != null) {
+ if (calleeNode.type === "MemberExpression") {
+ if (calleeNode.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(calleeNode.object, initialScope);
+ if (object != null) {
+ if (
+ object.value == null &&
+ (object.optional || node.optional)
+ ) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(
+ calleeNode,
+ initialScope,
+ );
+
+ if (property != null) {
+ const receiver = object.value;
+ const methodName = property.value;
+ if (callAllowed.has(receiver[methodName])) {
+ return { value: receiver[methodName](...args) }
+ }
+ if (callPassThrough.has(receiver[methodName])) {
+ return { value: args[0] }
+ }
+ }
+ }
+ } else {
+ const callee = getStaticValueR(calleeNode, initialScope);
+ if (callee != null) {
+ if (callee.value == null && node.optional) {
+ return { value: undefined, optional: true }
+ }
+ const func = callee.value;
+ if (callAllowed.has(func)) {
+ return { value: func(...args) }
+ }
+ if (callPassThrough.has(func)) {
+ return { value: args[0] }
+ }
+ }
+ }
+ }
+
+ return null
+ },
+
+ ConditionalExpression(node, initialScope) {
+ const test = getStaticValueR(node.test, initialScope);
+ if (test != null) {
+ return test.value
+ ? getStaticValueR(node.consequent, initialScope)
+ : getStaticValueR(node.alternate, initialScope)
+ }
+ return null
+ },
+
+ ExpressionStatement(node, initialScope) {
+ return getStaticValueR(node.expression, initialScope)
+ },
+
+ Identifier(node, initialScope) {
+ if (initialScope != null) {
+ const variable = findVariable(initialScope, node);
+
+ // Built-in globals.
+ if (
+ variable != null &&
+ variable.defs.length === 0 &&
+ builtinNames.has(variable.name) &&
+ variable.name in globalObject
+ ) {
+ return { value: globalObject[variable.name] }
+ }
+
+ // Constants.
+ if (variable != null && variable.defs.length === 1) {
+ const def = variable.defs[0];
+ if (
+ def.parent &&
+ def.type === "Variable" &&
+ (def.parent.kind === "const" ||
+ isEffectivelyConst(variable)) &&
+ // TODO(mysticatea): don't support destructuring here.
+ def.node.id.type === "Identifier"
+ ) {
+ return getStaticValueR(def.node.init, initialScope)
+ }
+ }
+ }
+ return null
+ },
+
+ Literal(node) {
+ //istanbul ignore if : this is implementation-specific behavior.
+ if ((node.regex != null || node.bigint != null) && node.value == null) {
+ // It was a RegExp/BigInt literal, but Node.js didn't support it.
+ return null
+ }
+ return { value: node.value }
+ },
+
+ LogicalExpression(node, initialScope) {
+ const left = getStaticValueR(node.left, initialScope);
+ if (left != null) {
+ if (
+ (node.operator === "||" && Boolean(left.value) === true) ||
+ (node.operator === "&&" && Boolean(left.value) === false) ||
+ (node.operator === "??" && left.value != null)
+ ) {
+ return left
+ }
+
+ const right = getStaticValueR(node.right, initialScope);
+ if (right != null) {
+ return right
+ }
+ }
+
+ return null
+ },
+
+ MemberExpression(node, initialScope) {
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(node.object, initialScope);
+ if (object != null) {
+ if (object.value == null && (object.optional || node.optional)) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(node, initialScope);
+
+ if (property != null) {
+ if (!isGetter(object.value, property.value)) {
+ return { value: object.value[property.value] }
+ }
+
+ for (const [classFn, allowed] of getterAllowed) {
+ if (
+ object.value instanceof classFn &&
+ allowed.has(property.value)
+ ) {
+ return { value: object.value[property.value] }
+ }
+ }
+ }
+ }
+ return null
+ },
+
+ ChainExpression(node, initialScope) {
+ const expression = getStaticValueR(node.expression, initialScope);
+ if (expression != null) {
+ return { value: expression.value }
+ }
+ return null
+ },
+
+ NewExpression(node, initialScope) {
+ const callee = getStaticValueR(node.callee, initialScope);
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (callee != null && args != null) {
+ const Func = callee.value;
+ if (callAllowed.has(Func)) {
+ return { value: new Func(...args) }
+ }
+ }
+
+ return null
+ },
+
+ ObjectExpression(node, initialScope) {
+ const object = {};
+
+ for (const propertyNode of node.properties) {
+ if (propertyNode.type === "Property") {
+ if (propertyNode.kind !== "init") {
+ return null
+ }
+ const key = getStaticPropertyNameValue(
+ propertyNode,
+ initialScope,
+ );
+ const value = getStaticValueR(propertyNode.value, initialScope);
+ if (key == null || value == null) {
+ return null
+ }
+ object[key.value] = value.value;
+ } else if (
+ propertyNode.type === "SpreadElement" ||
+ propertyNode.type === "ExperimentalSpreadProperty"
+ ) {
+ const argument = getStaticValueR(
+ propertyNode.argument,
+ initialScope,
+ );
+ if (argument == null) {
+ return null
+ }
+ Object.assign(object, argument.value);
+ } else {
+ return null
+ }
+ }
+
+ return { value: object }
+ },
+
+ SequenceExpression(node, initialScope) {
+ const last = node.expressions[node.expressions.length - 1];
+ return getStaticValueR(last, initialScope)
+ },
+
+ TaggedTemplateExpression(node, initialScope) {
+ const tag = getStaticValueR(node.tag, initialScope);
+ const expressions = getElementValues(
+ node.quasi.expressions,
+ initialScope,
+ );
+
+ if (tag != null && expressions != null) {
+ const func = tag.value;
+ const strings = node.quasi.quasis.map((q) => q.value.cooked);
+ strings.raw = node.quasi.quasis.map((q) => q.value.raw);
+
+ if (func === String.raw) {
+ return { value: func(strings, ...expressions) }
+ }
+ }
+
+ return null
+ },
+
+ TemplateLiteral(node, initialScope) {
+ const expressions = getElementValues(node.expressions, initialScope);
+ if (expressions != null) {
+ let value = node.quasis[0].value.cooked;
+ for (let i = 0; i < expressions.length; ++i) {
+ value += expressions[i];
+ value += node.quasis[i + 1].value.cooked;
+ }
+ return { value }
+ }
+ return null
+ },
+
+ UnaryExpression(node, initialScope) {
+ if (node.operator === "delete") {
+ // Not supported.
+ return null
+ }
+ if (node.operator === "void") {
+ return { value: undefined }
+ }
+
+ const arg = getStaticValueR(node.argument, initialScope);
+ if (arg != null) {
+ switch (node.operator) {
+ case "-":
+ return { value: -arg.value }
+ case "+":
+ return { value: +arg.value } //eslint-disable-line no-implicit-coercion
+ case "!":
+ return { value: !arg.value }
+ case "~":
+ return { value: ~arg.value }
+ case "typeof":
+ return { value: typeof arg.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+});
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope|undefined} initialScope The scope to start finding variable.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValueR(node, initialScope) {
+ if (node != null && Object.hasOwnProperty.call(operations, node.type)) {
+ return operations[node.type](node, initialScope)
+ }
+ return null
+}
+
+/**
+ * Get the static value of property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.
+ */
+function getStaticPropertyNameValue(node, initialScope) {
+ const nameNode = node.type === "Property" ? node.key : node.property;
+
+ if (node.computed) {
+ return getStaticValueR(nameNode, initialScope)
+ }
+
+ if (nameNode.type === "Identifier") {
+ return { value: nameNode.name }
+ }
+
+ if (nameNode.type === "Literal") {
+ if (nameNode.bigint) {
+ return { value: nameNode.bigint }
+ }
+ return { value: String(nameNode.value) }
+ }
+
+ return null
+}
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValue(node, initialScope = null) {
+ try {
+ return getStaticValueR(node, initialScope)
+ } catch (_error) {
+ return null
+ }
+}
+
+/**
+ * Get the value of a given node if it's a literal or a template literal.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.
+ * @returns {string|null} The value of the node, or `null`.
+ */
+function getStringIfConstant(node, initialScope = null) {
+ // Handle the literals that the platform doesn't support natively.
+ if (node && node.type === "Literal" && node.value === null) {
+ if (node.regex) {
+ return `/${node.regex.pattern}/${node.regex.flags}`
+ }
+ if (node.bigint) {
+ return node.bigint
+ }
+ }
+
+ const evaluated = getStaticValue(node, initialScope);
+ return evaluated && String(evaluated.value)
+}
+
+/**
+ * Get the property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {string|null} The property name of the node.
+ */
+function getPropertyName(node, initialScope) {
+ switch (node.type) {
+ case "MemberExpression":
+ if (node.computed) {
+ return getStringIfConstant(node.property, initialScope)
+ }
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.property.name
+
+ case "Property":
+ case "MethodDefinition":
+ case "PropertyDefinition":
+ if (node.computed) {
+ return getStringIfConstant(node.key, initialScope)
+ }
+ if (node.key.type === "Literal") {
+ return String(node.key.value)
+ }
+ if (node.key.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.key.name
+
+ // no default
+ }
+
+ return null
+}
+
+/**
+ * Get the name and kind of the given function node.
+ * @param {ASTNode} node - The function node to get.
+ * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.
+ * @returns {string} The name and kind of the function node.
+ */
+// eslint-disable-next-line complexity
+function getFunctionNameWithKind(node, sourceCode) {
+ const parent = node.parent;
+ const tokens = [];
+ const isObjectMethod = parent.type === "Property" && parent.value === node;
+ const isClassMethod =
+ parent.type === "MethodDefinition" && parent.value === node;
+ const isClassFieldMethod =
+ parent.type === "PropertyDefinition" && parent.value === node;
+
+ // Modifiers.
+ if (isClassMethod || isClassFieldMethod) {
+ if (parent.static) {
+ tokens.push("static");
+ }
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push("private");
+ }
+ }
+ if (node.async) {
+ tokens.push("async");
+ }
+ if (node.generator) {
+ tokens.push("generator");
+ }
+
+ // Kinds.
+ if (isObjectMethod || isClassMethod) {
+ if (parent.kind === "constructor") {
+ return "constructor"
+ }
+ if (parent.kind === "get") {
+ tokens.push("getter");
+ } else if (parent.kind === "set") {
+ tokens.push("setter");
+ } else {
+ tokens.push("method");
+ }
+ } else if (isClassFieldMethod) {
+ tokens.push("method");
+ } else {
+ if (node.type === "ArrowFunctionExpression") {
+ tokens.push("arrow");
+ }
+ tokens.push("function");
+ }
+
+ // Names.
+ if (isObjectMethod || isClassMethod || isClassFieldMethod) {
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push(`#${parent.key.name}`);
+ } else {
+ const name = getPropertyName(parent);
+ if (name) {
+ tokens.push(`'${name}'`);
+ } else if (sourceCode) {
+ const keyText = sourceCode.getText(parent.key);
+ if (!keyText.includes("\n")) {
+ tokens.push(`[${keyText}]`);
+ }
+ }
+ }
+ } else if (node.id) {
+ tokens.push(`'${node.id.name}'`);
+ } else if (
+ parent.type === "VariableDeclarator" &&
+ parent.id &&
+ parent.id.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.id.name}'`);
+ } else if (
+ (parent.type === "AssignmentExpression" ||
+ parent.type === "AssignmentPattern") &&
+ parent.left &&
+ parent.left.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.left.name}'`);
+ } else if (
+ parent.type === "ExportDefaultDeclaration" &&
+ parent.declaration === node
+ ) {
+ tokens.push("'default'");
+ }
+
+ return tokens.join(" ")
+}
+
+const typeConversionBinaryOps = Object.freeze(
+ new Set([
+ "==",
+ "!=",
+ "<",
+ "<=",
+ ">",
+ ">=",
+ "<<",
+ ">>",
+ ">>>",
+ "+",
+ "-",
+ "*",
+ "/",
+ "%",
+ "|",
+ "^",
+ "&",
+ "in",
+ ]),
+);
+const typeConversionUnaryOps = Object.freeze(new Set(["-", "+", "!", "~"]));
+
+/**
+ * Check whether the given value is an ASTNode or not.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is an ASTNode.
+ */
+function isNode(x) {
+ return x !== null && typeof x === "object" && typeof x.type === "string"
+}
+
+const visitor = Object.freeze(
+ Object.assign(Object.create(null), {
+ $visit(node, options, visitorKeys) {
+ const { type } = node;
+
+ if (typeof this[type] === "function") {
+ return this[type](node, options, visitorKeys)
+ }
+
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+
+ $visitChildren(node, options, visitorKeys) {
+ const { type } = node;
+
+ for (const key of visitorKeys[type] || eslintVisitorKeys.getKeys(node)) {
+ const value = node[key];
+
+ if (Array.isArray(value)) {
+ for (const element of value) {
+ if (
+ isNode(element) &&
+ this.$visit(element, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+ } else if (
+ isNode(value) &&
+ this.$visit(value, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+
+ return false
+ },
+
+ ArrowFunctionExpression() {
+ return false
+ },
+ AssignmentExpression() {
+ return true
+ },
+ AwaitExpression() {
+ return true
+ },
+ BinaryExpression(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionBinaryOps.has(node.operator) &&
+ (node.left.type !== "Literal" || node.right.type !== "Literal")
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ CallExpression() {
+ return true
+ },
+ FunctionExpression() {
+ return false
+ },
+ ImportExpression() {
+ return true
+ },
+ MemberExpression(node, options, visitorKeys) {
+ if (options.considerGetters) {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.property.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ MethodDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ NewExpression() {
+ return true
+ },
+ Property(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ PropertyDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UnaryExpression(node, options, visitorKeys) {
+ if (node.operator === "delete") {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionUnaryOps.has(node.operator) &&
+ node.argument.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UpdateExpression() {
+ return true
+ },
+ YieldExpression() {
+ return true
+ },
+ }),
+);
+
+/**
+ * Check whether a given node has any side effect or not.
+ * @param {Node} node The node to get.
+ * @param {SourceCode} sourceCode The source code object.
+ * @param {object} [options] The option object.
+ * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.
+ * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.
+ * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.
+ * @returns {boolean} `true` if the node has a certain side effect.
+ */
+function hasSideEffect(
+ node,
+ sourceCode,
+ { considerGetters = false, considerImplicitTypeConversion = false } = {},
+) {
+ return visitor.$visit(
+ node,
+ { considerGetters, considerImplicitTypeConversion },
+ sourceCode.visitorKeys || eslintVisitorKeys.KEYS,
+ )
+}
+
+/**
+ * Get the left parenthesis of the parent node syntax if it exists.
+ * E.g., `if (a) {}` then the `(`.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {Token|null} The left parenthesis of the parent node syntax
+ */
+function getParentSyntaxParen(node, sourceCode) {
+ const parent = node.parent;
+
+ switch (parent.type) {
+ case "CallExpression":
+ case "NewExpression":
+ if (parent.arguments.length === 1 && parent.arguments[0] === node) {
+ return sourceCode.getTokenAfter(
+ parent.callee,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "DoWhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getTokenAfter(
+ parent.body,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "IfStatement":
+ case "WhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "ImportExpression":
+ if (parent.source === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "SwitchStatement":
+ if (parent.discriminant === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "WithStatement":
+ if (parent.object === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ default:
+ return null
+ }
+}
+
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {number} times The number of parantheses.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized the given times.
+ */
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized.
+ */
+function isParenthesized(
+ timesOrNode,
+ nodeOrSourceCode,
+ optionalSourceCode,
+) {
+ let times, node, sourceCode, maybeLeftParen, maybeRightParen;
+ if (typeof timesOrNode === "number") {
+ times = timesOrNode | 0;
+ node = nodeOrSourceCode;
+ sourceCode = optionalSourceCode;
+ if (!(times >= 1)) {
+ throw new TypeError("'times' should be a positive integer.")
+ }
+ } else {
+ times = 1;
+ node = timesOrNode;
+ sourceCode = nodeOrSourceCode;
+ }
+
+ if (
+ node == null ||
+ // `Program` can't be parenthesized
+ node.parent == null ||
+ // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`
+ (node.parent.type === "CatchClause" && node.parent.param === node)
+ ) {
+ return false
+ }
+
+ maybeLeftParen = maybeRightParen = node;
+ do {
+ maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen);
+ maybeRightParen = sourceCode.getTokenAfter(maybeRightParen);
+ } while (
+ maybeLeftParen != null &&
+ maybeRightParen != null &&
+ isOpeningParenToken(maybeLeftParen) &&
+ isClosingParenToken(maybeRightParen) &&
+ // Avoid false positive such as `if (a) {}`
+ maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&
+ --times > 0
+ )
+
+ return times === 0
+}
+
+/**
+ * @author Toru Nagashima
+ * See LICENSE file in root directory for full license.
+ */
+
+const placeholder = /\$(?:[$&`']|[1-9][0-9]?)/gu;
+
+/** @type {WeakMap} */
+const internal = new WeakMap();
+
+/**
+ * Check whether a given character is escaped or not.
+ * @param {string} str The string to check.
+ * @param {number} index The location of the character to check.
+ * @returns {boolean} `true` if the character is escaped.
+ */
+function isEscaped(str, index) {
+ let escaped = false;
+ for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {
+ escaped = !escaped;
+ }
+ return escaped
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {string} replacement The new substring to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceS(matcher, str, replacement) {
+ const chunks = [];
+ let index = 0;
+
+ /** @type {RegExpExecArray} */
+ let match = null;
+
+ /**
+ * @param {string} key The placeholder.
+ * @returns {string} The replaced string.
+ */
+ function replacer(key) {
+ switch (key) {
+ case "$$":
+ return "$"
+ case "$&":
+ return match[0]
+ case "$`":
+ return str.slice(0, match.index)
+ case "$'":
+ return str.slice(match.index + match[0].length)
+ default: {
+ const i = key.slice(1);
+ if (i in match) {
+ return match[i]
+ }
+ return key
+ }
+ }
+ }
+
+ for (match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(replacement.replace(placeholder, replacer));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {(...strs[])=>string} replace The function to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceF(matcher, str, replace) {
+ const chunks = [];
+ let index = 0;
+
+ for (const match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(String(replace(...match, match.index, match.input)));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * The class to find patterns as considering escape sequences.
+ */
+class PatternMatcher {
+ /**
+ * Initialize this matcher.
+ * @param {RegExp} pattern The pattern to match.
+ * @param {{escaped:boolean}} options The options.
+ */
+ constructor(pattern, { escaped = false } = {}) {
+ if (!(pattern instanceof RegExp)) {
+ throw new TypeError("'pattern' should be a RegExp instance.")
+ }
+ if (!pattern.flags.includes("g")) {
+ throw new Error("'pattern' should contains 'g' flag.")
+ }
+
+ internal.set(this, {
+ pattern: new RegExp(pattern.source, pattern.flags),
+ escaped: Boolean(escaped),
+ });
+ }
+
+ /**
+ * Find the pattern in a given string.
+ * @param {string} str The string to find.
+ * @returns {IterableIterator} The iterator which iterate the matched information.
+ */
+ *execAll(str) {
+ const { pattern, escaped } = internal.get(this);
+ let match = null;
+ let lastIndex = 0;
+
+ pattern.lastIndex = 0;
+ while ((match = pattern.exec(str)) != null) {
+ if (escaped || !isEscaped(str, match.index)) {
+ lastIndex = pattern.lastIndex;
+ yield match;
+ pattern.lastIndex = lastIndex;
+ }
+ }
+ }
+
+ /**
+ * Check whether the pattern is found in a given string.
+ * @param {string} str The string to check.
+ * @returns {boolean} `true` if the pattern was found in the string.
+ */
+ test(str) {
+ const it = this.execAll(str);
+ const ret = it.next();
+ return !ret.done
+ }
+
+ /**
+ * Replace a given string.
+ * @param {string} str The string to be replaced.
+ * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.
+ * @returns {string} The replaced string.
+ */
+ [Symbol.replace](str, replacer) {
+ return typeof replacer === "function"
+ ? replaceF(this, String(str), replacer)
+ : replaceS(this, String(str), String(replacer))
+ }
+}
+
+const IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u;
+const has = Function.call.bind(Object.hasOwnProperty);
+
+const READ = Symbol("read");
+const CALL = Symbol("call");
+const CONSTRUCT = Symbol("construct");
+const ESM = Symbol("esm");
+
+const requireCall = { require: { [CALL]: true } };
+
+/**
+ * Check whether a given variable is modified or not.
+ * @param {Variable} variable The variable to check.
+ * @returns {boolean} `true` if the variable is modified.
+ */
+function isModifiedGlobal(variable) {
+ return (
+ variable == null ||
+ variable.defs.length !== 0 ||
+ variable.references.some((r) => r.isWrite())
+ )
+}
+
+/**
+ * Check if the value of a given node is passed through to the parent syntax as-is.
+ * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.
+ * @param {Node} node A node to check.
+ * @returns {boolean} `true` if the node is passed through.
+ */
+function isPassThrough(node) {
+ const parent = node.parent;
+
+ switch (parent && parent.type) {
+ case "ConditionalExpression":
+ return parent.consequent === node || parent.alternate === node
+ case "LogicalExpression":
+ return true
+ case "SequenceExpression":
+ return parent.expressions[parent.expressions.length - 1] === node
+ case "ChainExpression":
+ return true
+
+ default:
+ return false
+ }
+}
+
+/**
+ * The reference tracker.
+ */
+class ReferenceTracker {
+ /**
+ * Initialize this tracker.
+ * @param {Scope} globalScope The global scope.
+ * @param {object} [options] The options.
+ * @param {"legacy"|"strict"} [options.mode="strict"] The mode to determine the ImportDeclaration's behavior for CJS modules.
+ * @param {string[]} [options.globalObjectNames=["global","globalThis","self","window"]] The variable names for Global Object.
+ */
+ constructor(
+ globalScope,
+ {
+ mode = "strict",
+ globalObjectNames = ["global", "globalThis", "self", "window"],
+ } = {},
+ ) {
+ this.variableStack = [];
+ this.globalScope = globalScope;
+ this.mode = mode;
+ this.globalObjectNames = globalObjectNames.slice(0);
+ }
+
+ /**
+ * Iterate the references of global variables.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateGlobalReferences(traceMap) {
+ for (const key of Object.keys(traceMap)) {
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ nextTraceMap,
+ true,
+ );
+ }
+
+ for (const key of this.globalObjectNames) {
+ const path = [];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ }
+
+ /**
+ * Iterate the references of CommonJS modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateCjsReferences(traceMap) {
+ for (const { node } of this.iterateGlobalReferences(requireCall)) {
+ const key = getStringIfConstant(node.arguments[0]);
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+
+ if (nextTraceMap[READ]) {
+ yield {
+ node,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(node, path, nextTraceMap);
+ }
+ }
+
+ /**
+ * Iterate the references of ES modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateEsmReferences(traceMap) {
+ const programNode = this.globalScope.block;
+
+ for (const node of programNode.body) {
+ if (!IMPORT_TYPE.test(node.type) || node.source == null) {
+ continue
+ }
+ const moduleId = node.source.value;
+
+ if (!has(traceMap, moduleId)) {
+ continue
+ }
+ const nextTraceMap = traceMap[moduleId];
+ const path = [moduleId];
+
+ if (nextTraceMap[READ]) {
+ yield { node, path, type: READ, info: nextTraceMap[READ] };
+ }
+
+ if (node.type === "ExportAllDeclaration") {
+ for (const key of Object.keys(nextTraceMap)) {
+ const exportTraceMap = nextTraceMap[key];
+ if (exportTraceMap[READ]) {
+ yield {
+ node,
+ path: path.concat(key),
+ type: READ,
+ info: exportTraceMap[READ],
+ };
+ }
+ }
+ } else {
+ for (const specifier of node.specifiers) {
+ const esm = has(nextTraceMap, ESM);
+ const it = this._iterateImportReferences(
+ specifier,
+ path,
+ esm
+ ? nextTraceMap
+ : this.mode === "legacy"
+ ? { default: nextTraceMap, ...nextTraceMap }
+ : { default: nextTraceMap },
+ );
+
+ if (esm) {
+ yield* it;
+ } else {
+ for (const report of it) {
+ report.path = report.path.filter(exceptDefault);
+ if (
+ report.path.length >= 2 ||
+ report.type !== READ
+ ) {
+ yield report;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given variable.
+ * @param {Variable} variable The variable to iterate that references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @param {boolean} shouldReport = The flag to report those references.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateVariableReferences(variable, path, traceMap, shouldReport) {
+ if (this.variableStack.includes(variable)) {
+ return
+ }
+ this.variableStack.push(variable);
+ try {
+ for (const reference of variable.references) {
+ if (!reference.isRead()) {
+ continue
+ }
+ const node = reference.identifier;
+
+ if (shouldReport && traceMap[READ]) {
+ yield { node, path, type: READ, info: traceMap[READ] };
+ }
+ yield* this._iteratePropertyReferences(node, path, traceMap);
+ }
+ } finally {
+ this.variableStack.pop();
+ }
+ }
+
+ /**
+ * Iterate the references for a given AST node.
+ * @param rootNode The AST node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ //eslint-disable-next-line complexity
+ *_iteratePropertyReferences(rootNode, path, traceMap) {
+ let node = rootNode;
+ while (isPassThrough(node)) {
+ node = node.parent;
+ }
+
+ const parent = node.parent;
+ if (parent.type === "MemberExpression") {
+ if (parent.object === node) {
+ const key = getPropertyName(parent);
+ if (key == null || !has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: parent,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(
+ parent,
+ path,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (parent.type === "CallExpression") {
+ if (parent.callee === node && traceMap[CALL]) {
+ yield { node: parent, path, type: CALL, info: traceMap[CALL] };
+ }
+ return
+ }
+ if (parent.type === "NewExpression") {
+ if (parent.callee === node && traceMap[CONSTRUCT]) {
+ yield {
+ node: parent,
+ path,
+ type: CONSTRUCT,
+ info: traceMap[CONSTRUCT],
+ };
+ }
+ return
+ }
+ if (parent.type === "AssignmentExpression") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ yield* this._iteratePropertyReferences(parent, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "AssignmentPattern") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "VariableDeclarator") {
+ if (parent.init === node) {
+ yield* this._iterateLhsReferences(parent.id, path, traceMap);
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given Pattern node.
+ * @param {Node} patternNode The Pattern node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateLhsReferences(patternNode, path, traceMap) {
+ if (patternNode.type === "Identifier") {
+ const variable = findVariable(this.globalScope, patternNode);
+ if (variable != null) {
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "ObjectPattern") {
+ for (const property of patternNode.properties) {
+ const key = getPropertyName(property);
+
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextPath = path.concat(key);
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: property,
+ path: nextPath,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateLhsReferences(
+ property.value,
+ nextPath,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "AssignmentPattern") {
+ yield* this._iterateLhsReferences(patternNode.left, path, traceMap);
+ }
+ }
+
+ /**
+ * Iterate the references for a given ModuleSpecifier node.
+ * @param {Node} specifierNode The ModuleSpecifier node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateImportReferences(specifierNode, path, traceMap) {
+ const type = specifierNode.type;
+
+ if (type === "ImportSpecifier" || type === "ImportDefaultSpecifier") {
+ const key =
+ type === "ImportDefaultSpecifier"
+ ? "default"
+ : specifierNode.imported.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ nextTraceMap,
+ false,
+ );
+
+ return
+ }
+
+ if (type === "ImportNamespaceSpecifier") {
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ traceMap,
+ false,
+ );
+ return
+ }
+
+ if (type === "ExportSpecifier") {
+ const key = specifierNode.local.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ }
+ }
+}
+
+ReferenceTracker.READ = READ;
+ReferenceTracker.CALL = CALL;
+ReferenceTracker.CONSTRUCT = CONSTRUCT;
+ReferenceTracker.ESM = ESM;
+
+/**
+ * This is a predicate function for Array#filter.
+ * @param {string} name A name part.
+ * @param {number} index The index of the name.
+ * @returns {boolean} `false` if it's default.
+ */
+function exceptDefault(name, index) {
+ return !(index === 1 && name === "default")
+}
+
+var index = {
+ CALL,
+ CONSTRUCT,
+ ESM,
+ findVariable,
+ getFunctionHeadLocation,
+ getFunctionNameWithKind,
+ getInnermostScope,
+ getPropertyName,
+ getStaticValue,
+ getStringIfConstant,
+ hasSideEffect,
+ isArrowToken,
+ isClosingBraceToken,
+ isClosingBracketToken,
+ isClosingParenToken,
+ isColonToken,
+ isCommaToken,
+ isCommentToken,
+ isNotArrowToken,
+ isNotClosingBraceToken,
+ isNotClosingBracketToken,
+ isNotClosingParenToken,
+ isNotColonToken,
+ isNotCommaToken,
+ isNotCommentToken,
+ isNotOpeningBraceToken,
+ isNotOpeningBracketToken,
+ isNotOpeningParenToken,
+ isNotSemicolonToken,
+ isOpeningBraceToken,
+ isOpeningBracketToken,
+ isOpeningParenToken,
+ isParenthesized,
+ isSemicolonToken,
+ PatternMatcher,
+ READ,
+ ReferenceTracker,
+};
+
+exports.CALL = CALL;
+exports.CONSTRUCT = CONSTRUCT;
+exports.ESM = ESM;
+exports.PatternMatcher = PatternMatcher;
+exports.READ = READ;
+exports.ReferenceTracker = ReferenceTracker;
+exports["default"] = index;
+exports.findVariable = findVariable;
+exports.getFunctionHeadLocation = getFunctionHeadLocation;
+exports.getFunctionNameWithKind = getFunctionNameWithKind;
+exports.getInnermostScope = getInnermostScope;
+exports.getPropertyName = getPropertyName;
+exports.getStaticValue = getStaticValue;
+exports.getStringIfConstant = getStringIfConstant;
+exports.hasSideEffect = hasSideEffect;
+exports.isArrowToken = isArrowToken;
+exports.isClosingBraceToken = isClosingBraceToken;
+exports.isClosingBracketToken = isClosingBracketToken;
+exports.isClosingParenToken = isClosingParenToken;
+exports.isColonToken = isColonToken;
+exports.isCommaToken = isCommaToken;
+exports.isCommentToken = isCommentToken;
+exports.isNotArrowToken = isNotArrowToken;
+exports.isNotClosingBraceToken = isNotClosingBraceToken;
+exports.isNotClosingBracketToken = isNotClosingBracketToken;
+exports.isNotClosingParenToken = isNotClosingParenToken;
+exports.isNotColonToken = isNotColonToken;
+exports.isNotCommaToken = isNotCommaToken;
+exports.isNotCommentToken = isNotCommentToken;
+exports.isNotOpeningBraceToken = isNotOpeningBraceToken;
+exports.isNotOpeningBracketToken = isNotOpeningBracketToken;
+exports.isNotOpeningParenToken = isNotOpeningParenToken;
+exports.isNotSemicolonToken = isNotSemicolonToken;
+exports.isOpeningBraceToken = isOpeningBraceToken;
+exports.isOpeningBracketToken = isOpeningBracketToken;
+exports.isOpeningParenToken = isOpeningParenToken;
+exports.isParenthesized = isParenthesized;
+exports.isSemicolonToken = isSemicolonToken;
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/@eslint-community/eslint-utils/index.js.map b/node_modules/@eslint-community/eslint-utils/index.js.map
new file mode 100644
index 0000000..bcadeff
--- /dev/null
+++ b/node_modules/@eslint-community/eslint-utils/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["src/get-innermost-scope.mjs","src/find-variable.mjs","src/token-predicate.mjs","src/get-function-head-location.mjs","src/get-static-value.mjs","src/get-string-if-constant.mjs","src/get-property-name.mjs","src/get-function-name-with-kind.mjs","src/has-side-effect.mjs","src/is-parenthesized.mjs","src/pattern-matcher.mjs","src/reference-tracker.mjs","src/index.mjs"],"sourcesContent":["/**\n * Get the innermost scope which contains a given location.\n * @param {Scope} initialScope The initial scope to search.\n * @param {Node} node The location to search.\n * @returns {Scope} The innermost scope.\n */\nexport function getInnermostScope(initialScope, node) {\n const location = node.range[0]\n\n let scope = initialScope\n let found = false\n do {\n found = false\n for (const childScope of scope.childScopes) {\n const range = childScope.block.range\n\n if (range[0] <= location && location < range[1]) {\n scope = childScope\n found = true\n break\n }\n }\n } while (found)\n\n return scope\n}\n","import { getInnermostScope } from \"./get-innermost-scope.mjs\"\n\n/**\n * Find the variable of a given name.\n * @param {Scope} initialScope The scope to start finding.\n * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.\n * @returns {Variable|null} The found variable or null.\n */\nexport function findVariable(initialScope, nameOrNode) {\n let name = \"\"\n let scope = initialScope\n\n if (typeof nameOrNode === \"string\") {\n name = nameOrNode\n } else {\n name = nameOrNode.name\n scope = getInnermostScope(scope, nameOrNode)\n }\n\n while (scope != null) {\n const variable = scope.set.get(name)\n if (variable != null) {\n return variable\n }\n scope = scope.upper\n }\n\n return null\n}\n","/**\n * Negate the result of `this` calling.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the result of `this(token)` is `false`.\n */\nfunction negate0(token) {\n return !this(token) //eslint-disable-line no-invalid-this\n}\n\n/**\n * Creates the negate function of the given function.\n * @param {function(Token):boolean} f - The function to negate.\n * @returns {function(Token):boolean} Negated function.\n */\nfunction negate(f) {\n return negate0.bind(f)\n}\n\n/**\n * Checks if the given token is a PunctuatorToken with the given value\n * @param {Token} token - The token to check.\n * @param {string} value - The value to check.\n * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.\n */\nfunction isPunctuatorTokenWithValue(token, value) {\n return token.type === \"Punctuator\" && token.value === value\n}\n\n/**\n * Checks if the given token is an arrow token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an arrow token.\n */\nexport function isArrowToken(token) {\n return isPunctuatorTokenWithValue(token, \"=>\")\n}\n\n/**\n * Checks if the given token is a comma token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comma token.\n */\nexport function isCommaToken(token) {\n return isPunctuatorTokenWithValue(token, \",\")\n}\n\n/**\n * Checks if the given token is a semicolon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a semicolon token.\n */\nexport function isSemicolonToken(token) {\n return isPunctuatorTokenWithValue(token, \";\")\n}\n\n/**\n * Checks if the given token is a colon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a colon token.\n */\nexport function isColonToken(token) {\n return isPunctuatorTokenWithValue(token, \":\")\n}\n\n/**\n * Checks if the given token is an opening parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening parenthesis token.\n */\nexport function isOpeningParenToken(token) {\n return isPunctuatorTokenWithValue(token, \"(\")\n}\n\n/**\n * Checks if the given token is a closing parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing parenthesis token.\n */\nexport function isClosingParenToken(token) {\n return isPunctuatorTokenWithValue(token, \")\")\n}\n\n/**\n * Checks if the given token is an opening square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening square bracket token.\n */\nexport function isOpeningBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"[\")\n}\n\n/**\n * Checks if the given token is a closing square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing square bracket token.\n */\nexport function isClosingBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"]\")\n}\n\n/**\n * Checks if the given token is an opening brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening brace token.\n */\nexport function isOpeningBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"{\")\n}\n\n/**\n * Checks if the given token is a closing brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing brace token.\n */\nexport function isClosingBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"}\")\n}\n\n/**\n * Checks if the given token is a comment token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comment token.\n */\nexport function isCommentToken(token) {\n return [\"Block\", \"Line\", \"Shebang\"].includes(token.type)\n}\n\nexport const isNotArrowToken = negate(isArrowToken)\nexport const isNotCommaToken = negate(isCommaToken)\nexport const isNotSemicolonToken = negate(isSemicolonToken)\nexport const isNotColonToken = negate(isColonToken)\nexport const isNotOpeningParenToken = negate(isOpeningParenToken)\nexport const isNotClosingParenToken = negate(isClosingParenToken)\nexport const isNotOpeningBracketToken = negate(isOpeningBracketToken)\nexport const isNotClosingBracketToken = negate(isClosingBracketToken)\nexport const isNotOpeningBraceToken = negate(isOpeningBraceToken)\nexport const isNotClosingBraceToken = negate(isClosingBraceToken)\nexport const isNotCommentToken = negate(isCommentToken)\n","import { isArrowToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the `(` token of the given function node.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {Token} `(` token.\n */\nfunction getOpeningParenOfParams(node, sourceCode) {\n return node.id\n ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)\n : sourceCode.getFirstToken(node, isOpeningParenToken)\n}\n\n/**\n * Get the location of the given function node for reporting.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {string} The location of the function node for reporting.\n */\nexport function getFunctionHeadLocation(node, sourceCode) {\n const parent = node.parent\n let start = null\n let end = null\n\n if (node.type === \"ArrowFunctionExpression\") {\n const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken)\n\n start = arrowToken.loc.start\n end = arrowToken.loc.end\n } else if (\n parent.type === \"Property\" ||\n parent.type === \"MethodDefinition\" ||\n parent.type === \"PropertyDefinition\"\n ) {\n start = parent.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n } else {\n start = node.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n }\n\n return {\n start: { ...start },\n end: { ...end },\n }\n}\n","/* globals globalThis, global, self, window */\n\nimport { findVariable } from \"./find-variable.mjs\"\n\nconst globalObject =\n typeof globalThis !== \"undefined\"\n ? globalThis\n : typeof self !== \"undefined\"\n ? self\n : typeof window !== \"undefined\"\n ? window\n : typeof global !== \"undefined\"\n ? global\n : {}\n\nconst builtinNames = Object.freeze(\n new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"BigInt\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"isFinite\",\n \"isNaN\",\n \"isPrototypeOf\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"Object\",\n \"parseFloat\",\n \"parseInt\",\n \"Promise\",\n \"Proxy\",\n \"Reflect\",\n \"RegExp\",\n \"Set\",\n \"String\",\n \"Symbol\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"undefined\",\n \"unescape\",\n \"WeakMap\",\n \"WeakSet\",\n ]),\n)\nconst callAllowed = new Set(\n [\n Array.isArray,\n Array.of,\n Array.prototype.at,\n Array.prototype.concat,\n Array.prototype.entries,\n Array.prototype.every,\n Array.prototype.filter,\n Array.prototype.find,\n Array.prototype.findIndex,\n Array.prototype.flat,\n Array.prototype.includes,\n Array.prototype.indexOf,\n Array.prototype.join,\n Array.prototype.keys,\n Array.prototype.lastIndexOf,\n Array.prototype.slice,\n Array.prototype.some,\n Array.prototype.toString,\n Array.prototype.values,\n typeof BigInt === \"function\" ? BigInt : undefined,\n Boolean,\n Date,\n Date.parse,\n decodeURI,\n decodeURIComponent,\n encodeURI,\n encodeURIComponent,\n escape,\n isFinite,\n isNaN,\n isPrototypeOf,\n Map,\n Map.prototype.entries,\n Map.prototype.get,\n Map.prototype.has,\n Map.prototype.keys,\n Map.prototype.values,\n ...Object.getOwnPropertyNames(Math)\n .filter((k) => k !== \"random\")\n .map((k) => Math[k])\n .filter((f) => typeof f === \"function\"),\n Number,\n Number.isFinite,\n Number.isNaN,\n Number.parseFloat,\n Number.parseInt,\n Number.prototype.toExponential,\n Number.prototype.toFixed,\n Number.prototype.toPrecision,\n Number.prototype.toString,\n Object,\n Object.entries,\n Object.is,\n Object.isExtensible,\n Object.isFrozen,\n Object.isSealed,\n Object.keys,\n Object.values,\n parseFloat,\n parseInt,\n RegExp,\n Set,\n Set.prototype.entries,\n Set.prototype.has,\n Set.prototype.keys,\n Set.prototype.values,\n String,\n String.fromCharCode,\n String.fromCodePoint,\n String.raw,\n String.prototype.at,\n String.prototype.charAt,\n String.prototype.charCodeAt,\n String.prototype.codePointAt,\n String.prototype.concat,\n String.prototype.endsWith,\n String.prototype.includes,\n String.prototype.indexOf,\n String.prototype.lastIndexOf,\n String.prototype.normalize,\n String.prototype.padEnd,\n String.prototype.padStart,\n String.prototype.slice,\n String.prototype.startsWith,\n String.prototype.substr,\n String.prototype.substring,\n String.prototype.toLowerCase,\n String.prototype.toString,\n String.prototype.toUpperCase,\n String.prototype.trim,\n String.prototype.trimEnd,\n String.prototype.trimLeft,\n String.prototype.trimRight,\n String.prototype.trimStart,\n Symbol.for,\n Symbol.keyFor,\n unescape,\n ].filter((f) => typeof f === \"function\"),\n)\nconst callPassThrough = new Set([\n Object.freeze,\n Object.preventExtensions,\n Object.seal,\n])\n\n/** @type {ReadonlyArray]>} */\nconst getterAllowed = [\n [Map, new Set([\"size\"])],\n [\n RegExp,\n new Set([\n \"dotAll\",\n \"flags\",\n \"global\",\n \"hasIndices\",\n \"ignoreCase\",\n \"multiline\",\n \"source\",\n \"sticky\",\n \"unicode\",\n ]),\n ],\n [Set, new Set([\"size\"])],\n]\n\n/**\n * Get the property descriptor.\n * @param {object} object The object to get.\n * @param {string|number|symbol} name The property name to get.\n */\nfunction getPropertyDescriptor(object, name) {\n let x = object\n while ((typeof x === \"object\" || typeof x === \"function\") && x !== null) {\n const d = Object.getOwnPropertyDescriptor(x, name)\n if (d) {\n return d\n }\n x = Object.getPrototypeOf(x)\n }\n return null\n}\n\n/**\n * Check if a property is getter or not.\n * @param {object} object The object to check.\n * @param {string|number|symbol} name The property name to check.\n */\nfunction isGetter(object, name) {\n const d = getPropertyDescriptor(object, name)\n return d != null && d.get != null\n}\n\n/**\n * Get the element values of a given node list.\n * @param {Node[]} nodeList The node list to get values.\n * @param {Scope|undefined} initialScope The initial scope to find variables.\n * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.\n */\nfunction getElementValues(nodeList, initialScope) {\n const valueList = []\n\n for (let i = 0; i < nodeList.length; ++i) {\n const elementNode = nodeList[i]\n\n if (elementNode == null) {\n valueList.length = i + 1\n } else if (elementNode.type === \"SpreadElement\") {\n const argument = getStaticValueR(elementNode.argument, initialScope)\n if (argument == null) {\n return null\n }\n valueList.push(...argument.value)\n } else {\n const element = getStaticValueR(elementNode, initialScope)\n if (element == null) {\n return null\n }\n valueList.push(element.value)\n }\n }\n\n return valueList\n}\n\n/**\n * Returns whether the given variable is never written to after initialization.\n * @param {import(\"eslint\").Scope.Variable} variable\n * @returns {boolean}\n */\nfunction isEffectivelyConst(variable) {\n const refs = variable.references\n\n const inits = refs.filter((r) => r.init).length\n const reads = refs.filter((r) => r.isReadOnly()).length\n if (inits === 1 && reads + inits === refs.length) {\n // there is only one init and all other references only read\n return true\n }\n return false\n}\n\nconst operations = Object.freeze({\n ArrayExpression(node, initialScope) {\n const elements = getElementValues(node.elements, initialScope)\n return elements != null ? { value: elements } : null\n },\n\n AssignmentExpression(node, initialScope) {\n if (node.operator === \"=\") {\n return getStaticValueR(node.right, initialScope)\n }\n return null\n },\n\n //eslint-disable-next-line complexity\n BinaryExpression(node, initialScope) {\n if (node.operator === \"in\" || node.operator === \"instanceof\") {\n // Not supported.\n return null\n }\n\n const left = getStaticValueR(node.left, initialScope)\n const right = getStaticValueR(node.right, initialScope)\n if (left != null && right != null) {\n switch (node.operator) {\n case \"==\":\n return { value: left.value == right.value } //eslint-disable-line eqeqeq\n case \"!=\":\n return { value: left.value != right.value } //eslint-disable-line eqeqeq\n case \"===\":\n return { value: left.value === right.value }\n case \"!==\":\n return { value: left.value !== right.value }\n case \"<\":\n return { value: left.value < right.value }\n case \"<=\":\n return { value: left.value <= right.value }\n case \">\":\n return { value: left.value > right.value }\n case \">=\":\n return { value: left.value >= right.value }\n case \"<<\":\n return { value: left.value << right.value }\n case \">>\":\n return { value: left.value >> right.value }\n case \">>>\":\n return { value: left.value >>> right.value }\n case \"+\":\n return { value: left.value + right.value }\n case \"-\":\n return { value: left.value - right.value }\n case \"*\":\n return { value: left.value * right.value }\n case \"/\":\n return { value: left.value / right.value }\n case \"%\":\n return { value: left.value % right.value }\n case \"**\":\n return { value: left.value ** right.value }\n case \"|\":\n return { value: left.value | right.value }\n case \"^\":\n return { value: left.value ^ right.value }\n case \"&\":\n return { value: left.value & right.value }\n\n // no default\n }\n }\n\n return null\n },\n\n CallExpression(node, initialScope) {\n const calleeNode = node.callee\n const args = getElementValues(node.arguments, initialScope)\n\n if (args != null) {\n if (calleeNode.type === \"MemberExpression\") {\n if (calleeNode.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(calleeNode.object, initialScope)\n if (object != null) {\n if (\n object.value == null &&\n (object.optional || node.optional)\n ) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(\n calleeNode,\n initialScope,\n )\n\n if (property != null) {\n const receiver = object.value\n const methodName = property.value\n if (callAllowed.has(receiver[methodName])) {\n return { value: receiver[methodName](...args) }\n }\n if (callPassThrough.has(receiver[methodName])) {\n return { value: args[0] }\n }\n }\n }\n } else {\n const callee = getStaticValueR(calleeNode, initialScope)\n if (callee != null) {\n if (callee.value == null && node.optional) {\n return { value: undefined, optional: true }\n }\n const func = callee.value\n if (callAllowed.has(func)) {\n return { value: func(...args) }\n }\n if (callPassThrough.has(func)) {\n return { value: args[0] }\n }\n }\n }\n }\n\n return null\n },\n\n ConditionalExpression(node, initialScope) {\n const test = getStaticValueR(node.test, initialScope)\n if (test != null) {\n return test.value\n ? getStaticValueR(node.consequent, initialScope)\n : getStaticValueR(node.alternate, initialScope)\n }\n return null\n },\n\n ExpressionStatement(node, initialScope) {\n return getStaticValueR(node.expression, initialScope)\n },\n\n Identifier(node, initialScope) {\n if (initialScope != null) {\n const variable = findVariable(initialScope, node)\n\n // Built-in globals.\n if (\n variable != null &&\n variable.defs.length === 0 &&\n builtinNames.has(variable.name) &&\n variable.name in globalObject\n ) {\n return { value: globalObject[variable.name] }\n }\n\n // Constants.\n if (variable != null && variable.defs.length === 1) {\n const def = variable.defs[0]\n if (\n def.parent &&\n def.type === \"Variable\" &&\n (def.parent.kind === \"const\" ||\n isEffectivelyConst(variable)) &&\n // TODO(mysticatea): don't support destructuring here.\n def.node.id.type === \"Identifier\"\n ) {\n return getStaticValueR(def.node.init, initialScope)\n }\n }\n }\n return null\n },\n\n Literal(node) {\n //istanbul ignore if : this is implementation-specific behavior.\n if ((node.regex != null || node.bigint != null) && node.value == null) {\n // It was a RegExp/BigInt literal, but Node.js didn't support it.\n return null\n }\n return { value: node.value }\n },\n\n LogicalExpression(node, initialScope) {\n const left = getStaticValueR(node.left, initialScope)\n if (left != null) {\n if (\n (node.operator === \"||\" && Boolean(left.value) === true) ||\n (node.operator === \"&&\" && Boolean(left.value) === false) ||\n (node.operator === \"??\" && left.value != null)\n ) {\n return left\n }\n\n const right = getStaticValueR(node.right, initialScope)\n if (right != null) {\n return right\n }\n }\n\n return null\n },\n\n MemberExpression(node, initialScope) {\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(node.object, initialScope)\n if (object != null) {\n if (object.value == null && (object.optional || node.optional)) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(node, initialScope)\n\n if (property != null) {\n if (!isGetter(object.value, property.value)) {\n return { value: object.value[property.value] }\n }\n\n for (const [classFn, allowed] of getterAllowed) {\n if (\n object.value instanceof classFn &&\n allowed.has(property.value)\n ) {\n return { value: object.value[property.value] }\n }\n }\n }\n }\n return null\n },\n\n ChainExpression(node, initialScope) {\n const expression = getStaticValueR(node.expression, initialScope)\n if (expression != null) {\n return { value: expression.value }\n }\n return null\n },\n\n NewExpression(node, initialScope) {\n const callee = getStaticValueR(node.callee, initialScope)\n const args = getElementValues(node.arguments, initialScope)\n\n if (callee != null && args != null) {\n const Func = callee.value\n if (callAllowed.has(Func)) {\n return { value: new Func(...args) }\n }\n }\n\n return null\n },\n\n ObjectExpression(node, initialScope) {\n const object = {}\n\n for (const propertyNode of node.properties) {\n if (propertyNode.type === \"Property\") {\n if (propertyNode.kind !== \"init\") {\n return null\n }\n const key = getStaticPropertyNameValue(\n propertyNode,\n initialScope,\n )\n const value = getStaticValueR(propertyNode.value, initialScope)\n if (key == null || value == null) {\n return null\n }\n object[key.value] = value.value\n } else if (\n propertyNode.type === \"SpreadElement\" ||\n propertyNode.type === \"ExperimentalSpreadProperty\"\n ) {\n const argument = getStaticValueR(\n propertyNode.argument,\n initialScope,\n )\n if (argument == null) {\n return null\n }\n Object.assign(object, argument.value)\n } else {\n return null\n }\n }\n\n return { value: object }\n },\n\n SequenceExpression(node, initialScope) {\n const last = node.expressions[node.expressions.length - 1]\n return getStaticValueR(last, initialScope)\n },\n\n TaggedTemplateExpression(node, initialScope) {\n const tag = getStaticValueR(node.tag, initialScope)\n const expressions = getElementValues(\n node.quasi.expressions,\n initialScope,\n )\n\n if (tag != null && expressions != null) {\n const func = tag.value\n const strings = node.quasi.quasis.map((q) => q.value.cooked)\n strings.raw = node.quasi.quasis.map((q) => q.value.raw)\n\n if (func === String.raw) {\n return { value: func(strings, ...expressions) }\n }\n }\n\n return null\n },\n\n TemplateLiteral(node, initialScope) {\n const expressions = getElementValues(node.expressions, initialScope)\n if (expressions != null) {\n let value = node.quasis[0].value.cooked\n for (let i = 0; i < expressions.length; ++i) {\n value += expressions[i]\n value += node.quasis[i + 1].value.cooked\n }\n return { value }\n }\n return null\n },\n\n UnaryExpression(node, initialScope) {\n if (node.operator === \"delete\") {\n // Not supported.\n return null\n }\n if (node.operator === \"void\") {\n return { value: undefined }\n }\n\n const arg = getStaticValueR(node.argument, initialScope)\n if (arg != null) {\n switch (node.operator) {\n case \"-\":\n return { value: -arg.value }\n case \"+\":\n return { value: +arg.value } //eslint-disable-line no-implicit-coercion\n case \"!\":\n return { value: !arg.value }\n case \"~\":\n return { value: ~arg.value }\n case \"typeof\":\n return { value: typeof arg.value }\n\n // no default\n }\n }\n\n return null\n },\n})\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope|undefined} initialScope The scope to start finding variable.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nfunction getStaticValueR(node, initialScope) {\n if (node != null && Object.hasOwnProperty.call(operations, node.type)) {\n return operations[node.type](node, initialScope)\n }\n return null\n}\n\n/**\n * Get the static value of property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.\n */\nfunction getStaticPropertyNameValue(node, initialScope) {\n const nameNode = node.type === \"Property\" ? node.key : node.property\n\n if (node.computed) {\n return getStaticValueR(nameNode, initialScope)\n }\n\n if (nameNode.type === \"Identifier\") {\n return { value: nameNode.name }\n }\n\n if (nameNode.type === \"Literal\") {\n if (nameNode.bigint) {\n return { value: nameNode.bigint }\n }\n return { value: String(nameNode.value) }\n }\n\n return null\n}\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nexport function getStaticValue(node, initialScope = null) {\n try {\n return getStaticValueR(node, initialScope)\n } catch (_error) {\n return null\n }\n}\n","import { getStaticValue } from \"./get-static-value.mjs\"\n\n/**\n * Get the value of a given node if it's a literal or a template literal.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.\n * @returns {string|null} The value of the node, or `null`.\n */\nexport function getStringIfConstant(node, initialScope = null) {\n // Handle the literals that the platform doesn't support natively.\n if (node && node.type === \"Literal\" && node.value === null) {\n if (node.regex) {\n return `/${node.regex.pattern}/${node.regex.flags}`\n }\n if (node.bigint) {\n return node.bigint\n }\n }\n\n const evaluated = getStaticValue(node, initialScope)\n return evaluated && String(evaluated.value)\n}\n","import { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\n/**\n * Get the property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {string|null} The property name of the node.\n */\nexport function getPropertyName(node, initialScope) {\n switch (node.type) {\n case \"MemberExpression\":\n if (node.computed) {\n return getStringIfConstant(node.property, initialScope)\n }\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n return node.property.name\n\n case \"Property\":\n case \"MethodDefinition\":\n case \"PropertyDefinition\":\n if (node.computed) {\n return getStringIfConstant(node.key, initialScope)\n }\n if (node.key.type === \"Literal\") {\n return String(node.key.value)\n }\n if (node.key.type === \"PrivateIdentifier\") {\n return null\n }\n return node.key.name\n\n // no default\n }\n\n return null\n}\n","import { getPropertyName } from \"./get-property-name.mjs\"\n\n/**\n * Get the name and kind of the given function node.\n * @param {ASTNode} node - The function node to get.\n * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.\n * @returns {string} The name and kind of the function node.\n */\n// eslint-disable-next-line complexity\nexport function getFunctionNameWithKind(node, sourceCode) {\n const parent = node.parent\n const tokens = []\n const isObjectMethod = parent.type === \"Property\" && parent.value === node\n const isClassMethod =\n parent.type === \"MethodDefinition\" && parent.value === node\n const isClassFieldMethod =\n parent.type === \"PropertyDefinition\" && parent.value === node\n\n // Modifiers.\n if (isClassMethod || isClassFieldMethod) {\n if (parent.static) {\n tokens.push(\"static\")\n }\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(\"private\")\n }\n }\n if (node.async) {\n tokens.push(\"async\")\n }\n if (node.generator) {\n tokens.push(\"generator\")\n }\n\n // Kinds.\n if (isObjectMethod || isClassMethod) {\n if (parent.kind === \"constructor\") {\n return \"constructor\"\n }\n if (parent.kind === \"get\") {\n tokens.push(\"getter\")\n } else if (parent.kind === \"set\") {\n tokens.push(\"setter\")\n } else {\n tokens.push(\"method\")\n }\n } else if (isClassFieldMethod) {\n tokens.push(\"method\")\n } else {\n if (node.type === \"ArrowFunctionExpression\") {\n tokens.push(\"arrow\")\n }\n tokens.push(\"function\")\n }\n\n // Names.\n if (isObjectMethod || isClassMethod || isClassFieldMethod) {\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(`#${parent.key.name}`)\n } else {\n const name = getPropertyName(parent)\n if (name) {\n tokens.push(`'${name}'`)\n } else if (sourceCode) {\n const keyText = sourceCode.getText(parent.key)\n if (!keyText.includes(\"\\n\")) {\n tokens.push(`[${keyText}]`)\n }\n }\n }\n } else if (node.id) {\n tokens.push(`'${node.id.name}'`)\n } else if (\n parent.type === \"VariableDeclarator\" &&\n parent.id &&\n parent.id.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.id.name}'`)\n } else if (\n (parent.type === \"AssignmentExpression\" ||\n parent.type === \"AssignmentPattern\") &&\n parent.left &&\n parent.left.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.left.name}'`)\n } else if (\n parent.type === \"ExportDefaultDeclaration\" &&\n parent.declaration === node\n ) {\n tokens.push(\"'default'\")\n }\n\n return tokens.join(\" \")\n}\n","import { getKeys, KEYS } from \"eslint-visitor-keys\"\n\nconst typeConversionBinaryOps = Object.freeze(\n new Set([\n \"==\",\n \"!=\",\n \"<\",\n \"<=\",\n \">\",\n \">=\",\n \"<<\",\n \">>\",\n \">>>\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"|\",\n \"^\",\n \"&\",\n \"in\",\n ]),\n)\nconst typeConversionUnaryOps = Object.freeze(new Set([\"-\", \"+\", \"!\", \"~\"]))\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an ASTNode.\n */\nfunction isNode(x) {\n return x !== null && typeof x === \"object\" && typeof x.type === \"string\"\n}\n\nconst visitor = Object.freeze(\n Object.assign(Object.create(null), {\n $visit(node, options, visitorKeys) {\n const { type } = node\n\n if (typeof this[type] === \"function\") {\n return this[type](node, options, visitorKeys)\n }\n\n return this.$visitChildren(node, options, visitorKeys)\n },\n\n $visitChildren(node, options, visitorKeys) {\n const { type } = node\n\n for (const key of visitorKeys[type] || getKeys(node)) {\n const value = node[key]\n\n if (Array.isArray(value)) {\n for (const element of value) {\n if (\n isNode(element) &&\n this.$visit(element, options, visitorKeys)\n ) {\n return true\n }\n }\n } else if (\n isNode(value) &&\n this.$visit(value, options, visitorKeys)\n ) {\n return true\n }\n }\n\n return false\n },\n\n ArrowFunctionExpression() {\n return false\n },\n AssignmentExpression() {\n return true\n },\n AwaitExpression() {\n return true\n },\n BinaryExpression(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n typeConversionBinaryOps.has(node.operator) &&\n (node.left.type !== \"Literal\" || node.right.type !== \"Literal\")\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n CallExpression() {\n return true\n },\n FunctionExpression() {\n return false\n },\n ImportExpression() {\n return true\n },\n MemberExpression(node, options, visitorKeys) {\n if (options.considerGetters) {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.property.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n MethodDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n NewExpression() {\n return true\n },\n Property(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n PropertyDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UnaryExpression(node, options, visitorKeys) {\n if (node.operator === \"delete\") {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n typeConversionUnaryOps.has(node.operator) &&\n node.argument.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UpdateExpression() {\n return true\n },\n YieldExpression() {\n return true\n },\n }),\n)\n\n/**\n * Check whether a given node has any side effect or not.\n * @param {Node} node The node to get.\n * @param {SourceCode} sourceCode The source code object.\n * @param {object} [options] The option object.\n * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.\n * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.\n * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.\n * @returns {boolean} `true` if the node has a certain side effect.\n */\nexport function hasSideEffect(\n node,\n sourceCode,\n { considerGetters = false, considerImplicitTypeConversion = false } = {},\n) {\n return visitor.$visit(\n node,\n { considerGetters, considerImplicitTypeConversion },\n sourceCode.visitorKeys || KEYS,\n )\n}\n","import { isClosingParenToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the left parenthesis of the parent node syntax if it exists.\n * E.g., `if (a) {}` then the `(`.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token|null} The left parenthesis of the parent node syntax\n */\nfunction getParentSyntaxParen(node, sourceCode) {\n const parent = node.parent\n\n switch (parent.type) {\n case \"CallExpression\":\n case \"NewExpression\":\n if (parent.arguments.length === 1 && parent.arguments[0] === node) {\n return sourceCode.getTokenAfter(\n parent.callee,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"DoWhileStatement\":\n if (parent.test === node) {\n return sourceCode.getTokenAfter(\n parent.body,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"IfStatement\":\n case \"WhileStatement\":\n if (parent.test === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"ImportExpression\":\n if (parent.source === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"SwitchStatement\":\n if (parent.discriminant === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"WithStatement\":\n if (parent.object === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n default:\n return null\n }\n}\n\n/**\n * Check whether a given node is parenthesized or not.\n * @param {number} times The number of parantheses.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized the given times.\n */\n/**\n * Check whether a given node is parenthesized or not.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized.\n */\nexport function isParenthesized(\n timesOrNode,\n nodeOrSourceCode,\n optionalSourceCode,\n) {\n let times, node, sourceCode, maybeLeftParen, maybeRightParen\n if (typeof timesOrNode === \"number\") {\n times = timesOrNode | 0\n node = nodeOrSourceCode\n sourceCode = optionalSourceCode\n if (!(times >= 1)) {\n throw new TypeError(\"'times' should be a positive integer.\")\n }\n } else {\n times = 1\n node = timesOrNode\n sourceCode = nodeOrSourceCode\n }\n\n if (\n node == null ||\n // `Program` can't be parenthesized\n node.parent == null ||\n // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`\n (node.parent.type === \"CatchClause\" && node.parent.param === node)\n ) {\n return false\n }\n\n maybeLeftParen = maybeRightParen = node\n do {\n maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen)\n maybeRightParen = sourceCode.getTokenAfter(maybeRightParen)\n } while (\n maybeLeftParen != null &&\n maybeRightParen != null &&\n isOpeningParenToken(maybeLeftParen) &&\n isClosingParenToken(maybeRightParen) &&\n // Avoid false positive such as `if (a) {}`\n maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&\n --times > 0\n )\n\n return times === 0\n}\n","/**\n * @author Toru Nagashima \n * See LICENSE file in root directory for full license.\n */\n\nconst placeholder = /\\$(?:[$&`']|[1-9][0-9]?)/gu\n\n/** @type {WeakMap} */\nconst internal = new WeakMap()\n\n/**\n * Check whether a given character is escaped or not.\n * @param {string} str The string to check.\n * @param {number} index The location of the character to check.\n * @returns {boolean} `true` if the character is escaped.\n */\nfunction isEscaped(str, index) {\n let escaped = false\n for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {\n escaped = !escaped\n }\n return escaped\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {string} replacement The new substring to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceS(matcher, str, replacement) {\n const chunks = []\n let index = 0\n\n /** @type {RegExpExecArray} */\n let match = null\n\n /**\n * @param {string} key The placeholder.\n * @returns {string} The replaced string.\n */\n function replacer(key) {\n switch (key) {\n case \"$$\":\n return \"$\"\n case \"$&\":\n return match[0]\n case \"$`\":\n return str.slice(0, match.index)\n case \"$'\":\n return str.slice(match.index + match[0].length)\n default: {\n const i = key.slice(1)\n if (i in match) {\n return match[i]\n }\n return key\n }\n }\n }\n\n for (match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(replacement.replace(placeholder, replacer))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {(...strs[])=>string} replace The function to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceF(matcher, str, replace) {\n const chunks = []\n let index = 0\n\n for (const match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(String(replace(...match, match.index, match.input)))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * The class to find patterns as considering escape sequences.\n */\nexport class PatternMatcher {\n /**\n * Initialize this matcher.\n * @param {RegExp} pattern The pattern to match.\n * @param {{escaped:boolean}} options The options.\n */\n constructor(pattern, { escaped = false } = {}) {\n if (!(pattern instanceof RegExp)) {\n throw new TypeError(\"'pattern' should be a RegExp instance.\")\n }\n if (!pattern.flags.includes(\"g\")) {\n throw new Error(\"'pattern' should contains 'g' flag.\")\n }\n\n internal.set(this, {\n pattern: new RegExp(pattern.source, pattern.flags),\n escaped: Boolean(escaped),\n })\n }\n\n /**\n * Find the pattern in a given string.\n * @param {string} str The string to find.\n * @returns {IterableIterator} The iterator which iterate the matched information.\n */\n *execAll(str) {\n const { pattern, escaped } = internal.get(this)\n let match = null\n let lastIndex = 0\n\n pattern.lastIndex = 0\n while ((match = pattern.exec(str)) != null) {\n if (escaped || !isEscaped(str, match.index)) {\n lastIndex = pattern.lastIndex\n yield match\n pattern.lastIndex = lastIndex\n }\n }\n }\n\n /**\n * Check whether the pattern is found in a given string.\n * @param {string} str The string to check.\n * @returns {boolean} `true` if the pattern was found in the string.\n */\n test(str) {\n const it = this.execAll(str)\n const ret = it.next()\n return !ret.done\n }\n\n /**\n * Replace a given string.\n * @param {string} str The string to be replaced.\n * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.\n * @returns {string} The replaced string.\n */\n [Symbol.replace](str, replacer) {\n return typeof replacer === \"function\"\n ? replaceF(this, String(str), replacer)\n : replaceS(this, String(str), String(replacer))\n }\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\nconst IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u\nconst has = Function.call.bind(Object.hasOwnProperty)\n\nexport const READ = Symbol(\"read\")\nexport const CALL = Symbol(\"call\")\nexport const CONSTRUCT = Symbol(\"construct\")\nexport const ESM = Symbol(\"esm\")\n\nconst requireCall = { require: { [CALL]: true } }\n\n/**\n * Check whether a given variable is modified or not.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable is modified.\n */\nfunction isModifiedGlobal(variable) {\n return (\n variable == null ||\n variable.defs.length !== 0 ||\n variable.references.some((r) => r.isWrite())\n )\n}\n\n/**\n * Check if the value of a given node is passed through to the parent syntax as-is.\n * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.\n * @param {Node} node A node to check.\n * @returns {boolean} `true` if the node is passed through.\n */\nfunction isPassThrough(node) {\n const parent = node.parent\n\n switch (parent && parent.type) {\n case \"ConditionalExpression\":\n return parent.consequent === node || parent.alternate === node\n case \"LogicalExpression\":\n return true\n case \"SequenceExpression\":\n return parent.expressions[parent.expressions.length - 1] === node\n case \"ChainExpression\":\n return true\n\n default:\n return false\n }\n}\n\n/**\n * The reference tracker.\n */\nexport class ReferenceTracker {\n /**\n * Initialize this tracker.\n * @param {Scope} globalScope The global scope.\n * @param {object} [options] The options.\n * @param {\"legacy\"|\"strict\"} [options.mode=\"strict\"] The mode to determine the ImportDeclaration's behavior for CJS modules.\n * @param {string[]} [options.globalObjectNames=[\"global\",\"globalThis\",\"self\",\"window\"]] The variable names for Global Object.\n */\n constructor(\n globalScope,\n {\n mode = \"strict\",\n globalObjectNames = [\"global\", \"globalThis\", \"self\", \"window\"],\n } = {},\n ) {\n this.variableStack = []\n this.globalScope = globalScope\n this.mode = mode\n this.globalObjectNames = globalObjectNames.slice(0)\n }\n\n /**\n * Iterate the references of global variables.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateGlobalReferences(traceMap) {\n for (const key of Object.keys(traceMap)) {\n const nextTraceMap = traceMap[key]\n const path = [key]\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n nextTraceMap,\n true,\n )\n }\n\n for (const key of this.globalObjectNames) {\n const path = []\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n }\n\n /**\n * Iterate the references of CommonJS modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateCjsReferences(traceMap) {\n for (const { node } of this.iterateGlobalReferences(requireCall)) {\n const key = getStringIfConstant(node.arguments[0])\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextTraceMap = traceMap[key]\n const path = [key]\n\n if (nextTraceMap[READ]) {\n yield {\n node,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(node, path, nextTraceMap)\n }\n }\n\n /**\n * Iterate the references of ES modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateEsmReferences(traceMap) {\n const programNode = this.globalScope.block\n\n for (const node of programNode.body) {\n if (!IMPORT_TYPE.test(node.type) || node.source == null) {\n continue\n }\n const moduleId = node.source.value\n\n if (!has(traceMap, moduleId)) {\n continue\n }\n const nextTraceMap = traceMap[moduleId]\n const path = [moduleId]\n\n if (nextTraceMap[READ]) {\n yield { node, path, type: READ, info: nextTraceMap[READ] }\n }\n\n if (node.type === \"ExportAllDeclaration\") {\n for (const key of Object.keys(nextTraceMap)) {\n const exportTraceMap = nextTraceMap[key]\n if (exportTraceMap[READ]) {\n yield {\n node,\n path: path.concat(key),\n type: READ,\n info: exportTraceMap[READ],\n }\n }\n }\n } else {\n for (const specifier of node.specifiers) {\n const esm = has(nextTraceMap, ESM)\n const it = this._iterateImportReferences(\n specifier,\n path,\n esm\n ? nextTraceMap\n : this.mode === \"legacy\"\n ? { default: nextTraceMap, ...nextTraceMap }\n : { default: nextTraceMap },\n )\n\n if (esm) {\n yield* it\n } else {\n for (const report of it) {\n report.path = report.path.filter(exceptDefault)\n if (\n report.path.length >= 2 ||\n report.type !== READ\n ) {\n yield report\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Iterate the references for a given variable.\n * @param {Variable} variable The variable to iterate that references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @param {boolean} shouldReport = The flag to report those references.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateVariableReferences(variable, path, traceMap, shouldReport) {\n if (this.variableStack.includes(variable)) {\n return\n }\n this.variableStack.push(variable)\n try {\n for (const reference of variable.references) {\n if (!reference.isRead()) {\n continue\n }\n const node = reference.identifier\n\n if (shouldReport && traceMap[READ]) {\n yield { node, path, type: READ, info: traceMap[READ] }\n }\n yield* this._iteratePropertyReferences(node, path, traceMap)\n }\n } finally {\n this.variableStack.pop()\n }\n }\n\n /**\n * Iterate the references for a given AST node.\n * @param rootNode The AST node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n //eslint-disable-next-line complexity\n *_iteratePropertyReferences(rootNode, path, traceMap) {\n let node = rootNode\n while (isPassThrough(node)) {\n node = node.parent\n }\n\n const parent = node.parent\n if (parent.type === \"MemberExpression\") {\n if (parent.object === node) {\n const key = getPropertyName(parent)\n if (key == null || !has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: parent,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(\n parent,\n path,\n nextTraceMap,\n )\n }\n return\n }\n if (parent.type === \"CallExpression\") {\n if (parent.callee === node && traceMap[CALL]) {\n yield { node: parent, path, type: CALL, info: traceMap[CALL] }\n }\n return\n }\n if (parent.type === \"NewExpression\") {\n if (parent.callee === node && traceMap[CONSTRUCT]) {\n yield {\n node: parent,\n path,\n type: CONSTRUCT,\n info: traceMap[CONSTRUCT],\n }\n }\n return\n }\n if (parent.type === \"AssignmentExpression\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n yield* this._iteratePropertyReferences(parent, path, traceMap)\n }\n return\n }\n if (parent.type === \"AssignmentPattern\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n }\n return\n }\n if (parent.type === \"VariableDeclarator\") {\n if (parent.init === node) {\n yield* this._iterateLhsReferences(parent.id, path, traceMap)\n }\n }\n }\n\n /**\n * Iterate the references for a given Pattern node.\n * @param {Node} patternNode The Pattern node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateLhsReferences(patternNode, path, traceMap) {\n if (patternNode.type === \"Identifier\") {\n const variable = findVariable(this.globalScope, patternNode)\n if (variable != null) {\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n return\n }\n if (patternNode.type === \"ObjectPattern\") {\n for (const property of patternNode.properties) {\n const key = getPropertyName(property)\n\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextPath = path.concat(key)\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: property,\n path: nextPath,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateLhsReferences(\n property.value,\n nextPath,\n nextTraceMap,\n )\n }\n return\n }\n if (patternNode.type === \"AssignmentPattern\") {\n yield* this._iterateLhsReferences(patternNode.left, path, traceMap)\n }\n }\n\n /**\n * Iterate the references for a given ModuleSpecifier node.\n * @param {Node} specifierNode The ModuleSpecifier node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateImportReferences(specifierNode, path, traceMap) {\n const type = specifierNode.type\n\n if (type === \"ImportSpecifier\" || type === \"ImportDefaultSpecifier\") {\n const key =\n type === \"ImportDefaultSpecifier\"\n ? \"default\"\n : specifierNode.imported.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n nextTraceMap,\n false,\n )\n\n return\n }\n\n if (type === \"ImportNamespaceSpecifier\") {\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n traceMap,\n false,\n )\n return\n }\n\n if (type === \"ExportSpecifier\") {\n const key = specifierNode.local.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n }\n }\n}\n\nReferenceTracker.READ = READ\nReferenceTracker.CALL = CALL\nReferenceTracker.CONSTRUCT = CONSTRUCT\nReferenceTracker.ESM = ESM\n\n/**\n * This is a predicate function for Array#filter.\n * @param {string} name A name part.\n * @param {number} index The index of the name.\n * @returns {boolean} `false` if it's default.\n */\nfunction exceptDefault(name, index) {\n return !(index === 1 && name === \"default\")\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getFunctionHeadLocation } from \"./get-function-head-location.mjs\"\nimport { getFunctionNameWithKind } from \"./get-function-name-with-kind.mjs\"\nimport { getInnermostScope } from \"./get-innermost-scope.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStaticValue } from \"./get-static-value.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\nimport { hasSideEffect } from \"./has-side-effect.mjs\"\nimport { isParenthesized } from \"./is-parenthesized.mjs\"\nimport { PatternMatcher } from \"./pattern-matcher.mjs\"\nimport {\n CALL,\n CONSTRUCT,\n ESM,\n READ,\n ReferenceTracker,\n} from \"./reference-tracker.mjs\"\nimport {\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isSemicolonToken,\n} from \"./token-predicate.mjs\"\n\nexport default {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\nexport {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\n"],"names":["getKeys","KEYS"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@eslint-community/eslint-utils/index.mjs b/node_modules/@eslint-community/eslint-utils/index.mjs
new file mode 100644
index 0000000..54b2581
--- /dev/null
+++ b/node_modules/@eslint-community/eslint-utils/index.mjs
@@ -0,0 +1,2027 @@
+import { getKeys, KEYS } from 'eslint-visitor-keys';
+
+/**
+ * Get the innermost scope which contains a given location.
+ * @param {Scope} initialScope The initial scope to search.
+ * @param {Node} node The location to search.
+ * @returns {Scope} The innermost scope.
+ */
+function getInnermostScope(initialScope, node) {
+ const location = node.range[0];
+
+ let scope = initialScope;
+ let found = false;
+ do {
+ found = false;
+ for (const childScope of scope.childScopes) {
+ const range = childScope.block.range;
+
+ if (range[0] <= location && location < range[1]) {
+ scope = childScope;
+ found = true;
+ break
+ }
+ }
+ } while (found)
+
+ return scope
+}
+
+/**
+ * Find the variable of a given name.
+ * @param {Scope} initialScope The scope to start finding.
+ * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.
+ * @returns {Variable|null} The found variable or null.
+ */
+function findVariable(initialScope, nameOrNode) {
+ let name = "";
+ let scope = initialScope;
+
+ if (typeof nameOrNode === "string") {
+ name = nameOrNode;
+ } else {
+ name = nameOrNode.name;
+ scope = getInnermostScope(scope, nameOrNode);
+ }
+
+ while (scope != null) {
+ const variable = scope.set.get(name);
+ if (variable != null) {
+ return variable
+ }
+ scope = scope.upper;
+ }
+
+ return null
+}
+
+/**
+ * Negate the result of `this` calling.
+ * @param {Token} token The token to check.
+ * @returns {boolean} `true` if the result of `this(token)` is `false`.
+ */
+function negate0(token) {
+ return !this(token) //eslint-disable-line no-invalid-this
+}
+
+/**
+ * Creates the negate function of the given function.
+ * @param {function(Token):boolean} f - The function to negate.
+ * @returns {function(Token):boolean} Negated function.
+ */
+function negate(f) {
+ return negate0.bind(f)
+}
+
+/**
+ * Checks if the given token is a PunctuatorToken with the given value
+ * @param {Token} token - The token to check.
+ * @param {string} value - The value to check.
+ * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.
+ */
+function isPunctuatorTokenWithValue(token, value) {
+ return token.type === "Punctuator" && token.value === value
+}
+
+/**
+ * Checks if the given token is an arrow token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an arrow token.
+ */
+function isArrowToken(token) {
+ return isPunctuatorTokenWithValue(token, "=>")
+}
+
+/**
+ * Checks if the given token is a comma token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comma token.
+ */
+function isCommaToken(token) {
+ return isPunctuatorTokenWithValue(token, ",")
+}
+
+/**
+ * Checks if the given token is a semicolon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a semicolon token.
+ */
+function isSemicolonToken(token) {
+ return isPunctuatorTokenWithValue(token, ";")
+}
+
+/**
+ * Checks if the given token is a colon token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a colon token.
+ */
+function isColonToken(token) {
+ return isPunctuatorTokenWithValue(token, ":")
+}
+
+/**
+ * Checks if the given token is an opening parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening parenthesis token.
+ */
+function isOpeningParenToken(token) {
+ return isPunctuatorTokenWithValue(token, "(")
+}
+
+/**
+ * Checks if the given token is a closing parenthesis token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing parenthesis token.
+ */
+function isClosingParenToken(token) {
+ return isPunctuatorTokenWithValue(token, ")")
+}
+
+/**
+ * Checks if the given token is an opening square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening square bracket token.
+ */
+function isOpeningBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "[")
+}
+
+/**
+ * Checks if the given token is a closing square bracket token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing square bracket token.
+ */
+function isClosingBracketToken(token) {
+ return isPunctuatorTokenWithValue(token, "]")
+}
+
+/**
+ * Checks if the given token is an opening brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening brace token.
+ */
+function isOpeningBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "{")
+}
+
+/**
+ * Checks if the given token is a closing brace token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing brace token.
+ */
+function isClosingBraceToken(token) {
+ return isPunctuatorTokenWithValue(token, "}")
+}
+
+/**
+ * Checks if the given token is a comment token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comment token.
+ */
+function isCommentToken(token) {
+ return ["Block", "Line", "Shebang"].includes(token.type)
+}
+
+const isNotArrowToken = negate(isArrowToken);
+const isNotCommaToken = negate(isCommaToken);
+const isNotSemicolonToken = negate(isSemicolonToken);
+const isNotColonToken = negate(isColonToken);
+const isNotOpeningParenToken = negate(isOpeningParenToken);
+const isNotClosingParenToken = negate(isClosingParenToken);
+const isNotOpeningBracketToken = negate(isOpeningBracketToken);
+const isNotClosingBracketToken = negate(isClosingBracketToken);
+const isNotOpeningBraceToken = negate(isOpeningBraceToken);
+const isNotClosingBraceToken = negate(isClosingBraceToken);
+const isNotCommentToken = negate(isCommentToken);
+
+/**
+ * Get the `(` token of the given function node.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {Token} `(` token.
+ */
+function getOpeningParenOfParams(node, sourceCode) {
+ return node.id
+ ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)
+ : sourceCode.getFirstToken(node, isOpeningParenToken)
+}
+
+/**
+ * Get the location of the given function node for reporting.
+ * @param {Node} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {string} The location of the function node for reporting.
+ */
+function getFunctionHeadLocation(node, sourceCode) {
+ const parent = node.parent;
+ let start = null;
+ let end = null;
+
+ if (node.type === "ArrowFunctionExpression") {
+ const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken);
+
+ start = arrowToken.loc.start;
+ end = arrowToken.loc.end;
+ } else if (
+ parent.type === "Property" ||
+ parent.type === "MethodDefinition" ||
+ parent.type === "PropertyDefinition"
+ ) {
+ start = parent.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ } else {
+ start = node.loc.start;
+ end = getOpeningParenOfParams(node, sourceCode).loc.start;
+ }
+
+ return {
+ start: { ...start },
+ end: { ...end },
+ }
+}
+
+/* globals globalThis, global, self, window */
+
+const globalObject =
+ typeof globalThis !== "undefined"
+ ? globalThis
+ : typeof self !== "undefined"
+ ? self
+ : typeof window !== "undefined"
+ ? window
+ : typeof global !== "undefined"
+ ? global
+ : {};
+
+const builtinNames = Object.freeze(
+ new Set([
+ "Array",
+ "ArrayBuffer",
+ "BigInt",
+ "BigInt64Array",
+ "BigUint64Array",
+ "Boolean",
+ "DataView",
+ "Date",
+ "decodeURI",
+ "decodeURIComponent",
+ "encodeURI",
+ "encodeURIComponent",
+ "escape",
+ "Float32Array",
+ "Float64Array",
+ "Function",
+ "Infinity",
+ "Int16Array",
+ "Int32Array",
+ "Int8Array",
+ "isFinite",
+ "isNaN",
+ "isPrototypeOf",
+ "JSON",
+ "Map",
+ "Math",
+ "NaN",
+ "Number",
+ "Object",
+ "parseFloat",
+ "parseInt",
+ "Promise",
+ "Proxy",
+ "Reflect",
+ "RegExp",
+ "Set",
+ "String",
+ "Symbol",
+ "Uint16Array",
+ "Uint32Array",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "undefined",
+ "unescape",
+ "WeakMap",
+ "WeakSet",
+ ]),
+);
+const callAllowed = new Set(
+ [
+ Array.isArray,
+ Array.of,
+ Array.prototype.at,
+ Array.prototype.concat,
+ Array.prototype.entries,
+ Array.prototype.every,
+ Array.prototype.filter,
+ Array.prototype.find,
+ Array.prototype.findIndex,
+ Array.prototype.flat,
+ Array.prototype.includes,
+ Array.prototype.indexOf,
+ Array.prototype.join,
+ Array.prototype.keys,
+ Array.prototype.lastIndexOf,
+ Array.prototype.slice,
+ Array.prototype.some,
+ Array.prototype.toString,
+ Array.prototype.values,
+ typeof BigInt === "function" ? BigInt : undefined,
+ Boolean,
+ Date,
+ Date.parse,
+ decodeURI,
+ decodeURIComponent,
+ encodeURI,
+ encodeURIComponent,
+ escape,
+ isFinite,
+ isNaN,
+ isPrototypeOf,
+ Map,
+ Map.prototype.entries,
+ Map.prototype.get,
+ Map.prototype.has,
+ Map.prototype.keys,
+ Map.prototype.values,
+ ...Object.getOwnPropertyNames(Math)
+ .filter((k) => k !== "random")
+ .map((k) => Math[k])
+ .filter((f) => typeof f === "function"),
+ Number,
+ Number.isFinite,
+ Number.isNaN,
+ Number.parseFloat,
+ Number.parseInt,
+ Number.prototype.toExponential,
+ Number.prototype.toFixed,
+ Number.prototype.toPrecision,
+ Number.prototype.toString,
+ Object,
+ Object.entries,
+ Object.is,
+ Object.isExtensible,
+ Object.isFrozen,
+ Object.isSealed,
+ Object.keys,
+ Object.values,
+ parseFloat,
+ parseInt,
+ RegExp,
+ Set,
+ Set.prototype.entries,
+ Set.prototype.has,
+ Set.prototype.keys,
+ Set.prototype.values,
+ String,
+ String.fromCharCode,
+ String.fromCodePoint,
+ String.raw,
+ String.prototype.at,
+ String.prototype.charAt,
+ String.prototype.charCodeAt,
+ String.prototype.codePointAt,
+ String.prototype.concat,
+ String.prototype.endsWith,
+ String.prototype.includes,
+ String.prototype.indexOf,
+ String.prototype.lastIndexOf,
+ String.prototype.normalize,
+ String.prototype.padEnd,
+ String.prototype.padStart,
+ String.prototype.slice,
+ String.prototype.startsWith,
+ String.prototype.substr,
+ String.prototype.substring,
+ String.prototype.toLowerCase,
+ String.prototype.toString,
+ String.prototype.toUpperCase,
+ String.prototype.trim,
+ String.prototype.trimEnd,
+ String.prototype.trimLeft,
+ String.prototype.trimRight,
+ String.prototype.trimStart,
+ Symbol.for,
+ Symbol.keyFor,
+ unescape,
+ ].filter((f) => typeof f === "function"),
+);
+const callPassThrough = new Set([
+ Object.freeze,
+ Object.preventExtensions,
+ Object.seal,
+]);
+
+/** @type {ReadonlyArray]>} */
+const getterAllowed = [
+ [Map, new Set(["size"])],
+ [
+ RegExp,
+ new Set([
+ "dotAll",
+ "flags",
+ "global",
+ "hasIndices",
+ "ignoreCase",
+ "multiline",
+ "source",
+ "sticky",
+ "unicode",
+ ]),
+ ],
+ [Set, new Set(["size"])],
+];
+
+/**
+ * Get the property descriptor.
+ * @param {object} object The object to get.
+ * @param {string|number|symbol} name The property name to get.
+ */
+function getPropertyDescriptor(object, name) {
+ let x = object;
+ while ((typeof x === "object" || typeof x === "function") && x !== null) {
+ const d = Object.getOwnPropertyDescriptor(x, name);
+ if (d) {
+ return d
+ }
+ x = Object.getPrototypeOf(x);
+ }
+ return null
+}
+
+/**
+ * Check if a property is getter or not.
+ * @param {object} object The object to check.
+ * @param {string|number|symbol} name The property name to check.
+ */
+function isGetter(object, name) {
+ const d = getPropertyDescriptor(object, name);
+ return d != null && d.get != null
+}
+
+/**
+ * Get the element values of a given node list.
+ * @param {Node[]} nodeList The node list to get values.
+ * @param {Scope|undefined} initialScope The initial scope to find variables.
+ * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.
+ */
+function getElementValues(nodeList, initialScope) {
+ const valueList = [];
+
+ for (let i = 0; i < nodeList.length; ++i) {
+ const elementNode = nodeList[i];
+
+ if (elementNode == null) {
+ valueList.length = i + 1;
+ } else if (elementNode.type === "SpreadElement") {
+ const argument = getStaticValueR(elementNode.argument, initialScope);
+ if (argument == null) {
+ return null
+ }
+ valueList.push(...argument.value);
+ } else {
+ const element = getStaticValueR(elementNode, initialScope);
+ if (element == null) {
+ return null
+ }
+ valueList.push(element.value);
+ }
+ }
+
+ return valueList
+}
+
+/**
+ * Returns whether the given variable is never written to after initialization.
+ * @param {import("eslint").Scope.Variable} variable
+ * @returns {boolean}
+ */
+function isEffectivelyConst(variable) {
+ const refs = variable.references;
+
+ const inits = refs.filter((r) => r.init).length;
+ const reads = refs.filter((r) => r.isReadOnly()).length;
+ if (inits === 1 && reads + inits === refs.length) {
+ // there is only one init and all other references only read
+ return true
+ }
+ return false
+}
+
+const operations = Object.freeze({
+ ArrayExpression(node, initialScope) {
+ const elements = getElementValues(node.elements, initialScope);
+ return elements != null ? { value: elements } : null
+ },
+
+ AssignmentExpression(node, initialScope) {
+ if (node.operator === "=") {
+ return getStaticValueR(node.right, initialScope)
+ }
+ return null
+ },
+
+ //eslint-disable-next-line complexity
+ BinaryExpression(node, initialScope) {
+ if (node.operator === "in" || node.operator === "instanceof") {
+ // Not supported.
+ return null
+ }
+
+ const left = getStaticValueR(node.left, initialScope);
+ const right = getStaticValueR(node.right, initialScope);
+ if (left != null && right != null) {
+ switch (node.operator) {
+ case "==":
+ return { value: left.value == right.value } //eslint-disable-line eqeqeq
+ case "!=":
+ return { value: left.value != right.value } //eslint-disable-line eqeqeq
+ case "===":
+ return { value: left.value === right.value }
+ case "!==":
+ return { value: left.value !== right.value }
+ case "<":
+ return { value: left.value < right.value }
+ case "<=":
+ return { value: left.value <= right.value }
+ case ">":
+ return { value: left.value > right.value }
+ case ">=":
+ return { value: left.value >= right.value }
+ case "<<":
+ return { value: left.value << right.value }
+ case ">>":
+ return { value: left.value >> right.value }
+ case ">>>":
+ return { value: left.value >>> right.value }
+ case "+":
+ return { value: left.value + right.value }
+ case "-":
+ return { value: left.value - right.value }
+ case "*":
+ return { value: left.value * right.value }
+ case "/":
+ return { value: left.value / right.value }
+ case "%":
+ return { value: left.value % right.value }
+ case "**":
+ return { value: left.value ** right.value }
+ case "|":
+ return { value: left.value | right.value }
+ case "^":
+ return { value: left.value ^ right.value }
+ case "&":
+ return { value: left.value & right.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+
+ CallExpression(node, initialScope) {
+ const calleeNode = node.callee;
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (args != null) {
+ if (calleeNode.type === "MemberExpression") {
+ if (calleeNode.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(calleeNode.object, initialScope);
+ if (object != null) {
+ if (
+ object.value == null &&
+ (object.optional || node.optional)
+ ) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(
+ calleeNode,
+ initialScope,
+ );
+
+ if (property != null) {
+ const receiver = object.value;
+ const methodName = property.value;
+ if (callAllowed.has(receiver[methodName])) {
+ return { value: receiver[methodName](...args) }
+ }
+ if (callPassThrough.has(receiver[methodName])) {
+ return { value: args[0] }
+ }
+ }
+ }
+ } else {
+ const callee = getStaticValueR(calleeNode, initialScope);
+ if (callee != null) {
+ if (callee.value == null && node.optional) {
+ return { value: undefined, optional: true }
+ }
+ const func = callee.value;
+ if (callAllowed.has(func)) {
+ return { value: func(...args) }
+ }
+ if (callPassThrough.has(func)) {
+ return { value: args[0] }
+ }
+ }
+ }
+ }
+
+ return null
+ },
+
+ ConditionalExpression(node, initialScope) {
+ const test = getStaticValueR(node.test, initialScope);
+ if (test != null) {
+ return test.value
+ ? getStaticValueR(node.consequent, initialScope)
+ : getStaticValueR(node.alternate, initialScope)
+ }
+ return null
+ },
+
+ ExpressionStatement(node, initialScope) {
+ return getStaticValueR(node.expression, initialScope)
+ },
+
+ Identifier(node, initialScope) {
+ if (initialScope != null) {
+ const variable = findVariable(initialScope, node);
+
+ // Built-in globals.
+ if (
+ variable != null &&
+ variable.defs.length === 0 &&
+ builtinNames.has(variable.name) &&
+ variable.name in globalObject
+ ) {
+ return { value: globalObject[variable.name] }
+ }
+
+ // Constants.
+ if (variable != null && variable.defs.length === 1) {
+ const def = variable.defs[0];
+ if (
+ def.parent &&
+ def.type === "Variable" &&
+ (def.parent.kind === "const" ||
+ isEffectivelyConst(variable)) &&
+ // TODO(mysticatea): don't support destructuring here.
+ def.node.id.type === "Identifier"
+ ) {
+ return getStaticValueR(def.node.init, initialScope)
+ }
+ }
+ }
+ return null
+ },
+
+ Literal(node) {
+ //istanbul ignore if : this is implementation-specific behavior.
+ if ((node.regex != null || node.bigint != null) && node.value == null) {
+ // It was a RegExp/BigInt literal, but Node.js didn't support it.
+ return null
+ }
+ return { value: node.value }
+ },
+
+ LogicalExpression(node, initialScope) {
+ const left = getStaticValueR(node.left, initialScope);
+ if (left != null) {
+ if (
+ (node.operator === "||" && Boolean(left.value) === true) ||
+ (node.operator === "&&" && Boolean(left.value) === false) ||
+ (node.operator === "??" && left.value != null)
+ ) {
+ return left
+ }
+
+ const right = getStaticValueR(node.right, initialScope);
+ if (right != null) {
+ return right
+ }
+ }
+
+ return null
+ },
+
+ MemberExpression(node, initialScope) {
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ const object = getStaticValueR(node.object, initialScope);
+ if (object != null) {
+ if (object.value == null && (object.optional || node.optional)) {
+ return { value: undefined, optional: true }
+ }
+ const property = getStaticPropertyNameValue(node, initialScope);
+
+ if (property != null) {
+ if (!isGetter(object.value, property.value)) {
+ return { value: object.value[property.value] }
+ }
+
+ for (const [classFn, allowed] of getterAllowed) {
+ if (
+ object.value instanceof classFn &&
+ allowed.has(property.value)
+ ) {
+ return { value: object.value[property.value] }
+ }
+ }
+ }
+ }
+ return null
+ },
+
+ ChainExpression(node, initialScope) {
+ const expression = getStaticValueR(node.expression, initialScope);
+ if (expression != null) {
+ return { value: expression.value }
+ }
+ return null
+ },
+
+ NewExpression(node, initialScope) {
+ const callee = getStaticValueR(node.callee, initialScope);
+ const args = getElementValues(node.arguments, initialScope);
+
+ if (callee != null && args != null) {
+ const Func = callee.value;
+ if (callAllowed.has(Func)) {
+ return { value: new Func(...args) }
+ }
+ }
+
+ return null
+ },
+
+ ObjectExpression(node, initialScope) {
+ const object = {};
+
+ for (const propertyNode of node.properties) {
+ if (propertyNode.type === "Property") {
+ if (propertyNode.kind !== "init") {
+ return null
+ }
+ const key = getStaticPropertyNameValue(
+ propertyNode,
+ initialScope,
+ );
+ const value = getStaticValueR(propertyNode.value, initialScope);
+ if (key == null || value == null) {
+ return null
+ }
+ object[key.value] = value.value;
+ } else if (
+ propertyNode.type === "SpreadElement" ||
+ propertyNode.type === "ExperimentalSpreadProperty"
+ ) {
+ const argument = getStaticValueR(
+ propertyNode.argument,
+ initialScope,
+ );
+ if (argument == null) {
+ return null
+ }
+ Object.assign(object, argument.value);
+ } else {
+ return null
+ }
+ }
+
+ return { value: object }
+ },
+
+ SequenceExpression(node, initialScope) {
+ const last = node.expressions[node.expressions.length - 1];
+ return getStaticValueR(last, initialScope)
+ },
+
+ TaggedTemplateExpression(node, initialScope) {
+ const tag = getStaticValueR(node.tag, initialScope);
+ const expressions = getElementValues(
+ node.quasi.expressions,
+ initialScope,
+ );
+
+ if (tag != null && expressions != null) {
+ const func = tag.value;
+ const strings = node.quasi.quasis.map((q) => q.value.cooked);
+ strings.raw = node.quasi.quasis.map((q) => q.value.raw);
+
+ if (func === String.raw) {
+ return { value: func(strings, ...expressions) }
+ }
+ }
+
+ return null
+ },
+
+ TemplateLiteral(node, initialScope) {
+ const expressions = getElementValues(node.expressions, initialScope);
+ if (expressions != null) {
+ let value = node.quasis[0].value.cooked;
+ for (let i = 0; i < expressions.length; ++i) {
+ value += expressions[i];
+ value += node.quasis[i + 1].value.cooked;
+ }
+ return { value }
+ }
+ return null
+ },
+
+ UnaryExpression(node, initialScope) {
+ if (node.operator === "delete") {
+ // Not supported.
+ return null
+ }
+ if (node.operator === "void") {
+ return { value: undefined }
+ }
+
+ const arg = getStaticValueR(node.argument, initialScope);
+ if (arg != null) {
+ switch (node.operator) {
+ case "-":
+ return { value: -arg.value }
+ case "+":
+ return { value: +arg.value } //eslint-disable-line no-implicit-coercion
+ case "!":
+ return { value: !arg.value }
+ case "~":
+ return { value: ~arg.value }
+ case "typeof":
+ return { value: typeof arg.value }
+
+ // no default
+ }
+ }
+
+ return null
+ },
+});
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope|undefined} initialScope The scope to start finding variable.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValueR(node, initialScope) {
+ if (node != null && Object.hasOwnProperty.call(operations, node.type)) {
+ return operations[node.type](node, initialScope)
+ }
+ return null
+}
+
+/**
+ * Get the static value of property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.
+ */
+function getStaticPropertyNameValue(node, initialScope) {
+ const nameNode = node.type === "Property" ? node.key : node.property;
+
+ if (node.computed) {
+ return getStaticValueR(nameNode, initialScope)
+ }
+
+ if (nameNode.type === "Identifier") {
+ return { value: nameNode.name }
+ }
+
+ if (nameNode.type === "Literal") {
+ if (nameNode.bigint) {
+ return { value: nameNode.bigint }
+ }
+ return { value: String(nameNode.value) }
+ }
+
+ return null
+}
+
+/**
+ * Get the value of a given node if it's a static value.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.
+ * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.
+ */
+function getStaticValue(node, initialScope = null) {
+ try {
+ return getStaticValueR(node, initialScope)
+ } catch (_error) {
+ return null
+ }
+}
+
+/**
+ * Get the value of a given node if it's a literal or a template literal.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.
+ * @returns {string|null} The value of the node, or `null`.
+ */
+function getStringIfConstant(node, initialScope = null) {
+ // Handle the literals that the platform doesn't support natively.
+ if (node && node.type === "Literal" && node.value === null) {
+ if (node.regex) {
+ return `/${node.regex.pattern}/${node.regex.flags}`
+ }
+ if (node.bigint) {
+ return node.bigint
+ }
+ }
+
+ const evaluated = getStaticValue(node, initialScope);
+ return evaluated && String(evaluated.value)
+}
+
+/**
+ * Get the property name from a MemberExpression node or a Property node.
+ * @param {Node} node The node to get.
+ * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.
+ * @returns {string|null} The property name of the node.
+ */
+function getPropertyName(node, initialScope) {
+ switch (node.type) {
+ case "MemberExpression":
+ if (node.computed) {
+ return getStringIfConstant(node.property, initialScope)
+ }
+ if (node.property.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.property.name
+
+ case "Property":
+ case "MethodDefinition":
+ case "PropertyDefinition":
+ if (node.computed) {
+ return getStringIfConstant(node.key, initialScope)
+ }
+ if (node.key.type === "Literal") {
+ return String(node.key.value)
+ }
+ if (node.key.type === "PrivateIdentifier") {
+ return null
+ }
+ return node.key.name
+
+ // no default
+ }
+
+ return null
+}
+
+/**
+ * Get the name and kind of the given function node.
+ * @param {ASTNode} node - The function node to get.
+ * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.
+ * @returns {string} The name and kind of the function node.
+ */
+// eslint-disable-next-line complexity
+function getFunctionNameWithKind(node, sourceCode) {
+ const parent = node.parent;
+ const tokens = [];
+ const isObjectMethod = parent.type === "Property" && parent.value === node;
+ const isClassMethod =
+ parent.type === "MethodDefinition" && parent.value === node;
+ const isClassFieldMethod =
+ parent.type === "PropertyDefinition" && parent.value === node;
+
+ // Modifiers.
+ if (isClassMethod || isClassFieldMethod) {
+ if (parent.static) {
+ tokens.push("static");
+ }
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push("private");
+ }
+ }
+ if (node.async) {
+ tokens.push("async");
+ }
+ if (node.generator) {
+ tokens.push("generator");
+ }
+
+ // Kinds.
+ if (isObjectMethod || isClassMethod) {
+ if (parent.kind === "constructor") {
+ return "constructor"
+ }
+ if (parent.kind === "get") {
+ tokens.push("getter");
+ } else if (parent.kind === "set") {
+ tokens.push("setter");
+ } else {
+ tokens.push("method");
+ }
+ } else if (isClassFieldMethod) {
+ tokens.push("method");
+ } else {
+ if (node.type === "ArrowFunctionExpression") {
+ tokens.push("arrow");
+ }
+ tokens.push("function");
+ }
+
+ // Names.
+ if (isObjectMethod || isClassMethod || isClassFieldMethod) {
+ if (parent.key.type === "PrivateIdentifier") {
+ tokens.push(`#${parent.key.name}`);
+ } else {
+ const name = getPropertyName(parent);
+ if (name) {
+ tokens.push(`'${name}'`);
+ } else if (sourceCode) {
+ const keyText = sourceCode.getText(parent.key);
+ if (!keyText.includes("\n")) {
+ tokens.push(`[${keyText}]`);
+ }
+ }
+ }
+ } else if (node.id) {
+ tokens.push(`'${node.id.name}'`);
+ } else if (
+ parent.type === "VariableDeclarator" &&
+ parent.id &&
+ parent.id.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.id.name}'`);
+ } else if (
+ (parent.type === "AssignmentExpression" ||
+ parent.type === "AssignmentPattern") &&
+ parent.left &&
+ parent.left.type === "Identifier"
+ ) {
+ tokens.push(`'${parent.left.name}'`);
+ } else if (
+ parent.type === "ExportDefaultDeclaration" &&
+ parent.declaration === node
+ ) {
+ tokens.push("'default'");
+ }
+
+ return tokens.join(" ")
+}
+
+const typeConversionBinaryOps = Object.freeze(
+ new Set([
+ "==",
+ "!=",
+ "<",
+ "<=",
+ ">",
+ ">=",
+ "<<",
+ ">>",
+ ">>>",
+ "+",
+ "-",
+ "*",
+ "/",
+ "%",
+ "|",
+ "^",
+ "&",
+ "in",
+ ]),
+);
+const typeConversionUnaryOps = Object.freeze(new Set(["-", "+", "!", "~"]));
+
+/**
+ * Check whether the given value is an ASTNode or not.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is an ASTNode.
+ */
+function isNode(x) {
+ return x !== null && typeof x === "object" && typeof x.type === "string"
+}
+
+const visitor = Object.freeze(
+ Object.assign(Object.create(null), {
+ $visit(node, options, visitorKeys) {
+ const { type } = node;
+
+ if (typeof this[type] === "function") {
+ return this[type](node, options, visitorKeys)
+ }
+
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+
+ $visitChildren(node, options, visitorKeys) {
+ const { type } = node;
+
+ for (const key of visitorKeys[type] || getKeys(node)) {
+ const value = node[key];
+
+ if (Array.isArray(value)) {
+ for (const element of value) {
+ if (
+ isNode(element) &&
+ this.$visit(element, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+ } else if (
+ isNode(value) &&
+ this.$visit(value, options, visitorKeys)
+ ) {
+ return true
+ }
+ }
+
+ return false
+ },
+
+ ArrowFunctionExpression() {
+ return false
+ },
+ AssignmentExpression() {
+ return true
+ },
+ AwaitExpression() {
+ return true
+ },
+ BinaryExpression(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionBinaryOps.has(node.operator) &&
+ (node.left.type !== "Literal" || node.right.type !== "Literal")
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ CallExpression() {
+ return true
+ },
+ FunctionExpression() {
+ return false
+ },
+ ImportExpression() {
+ return true
+ },
+ MemberExpression(node, options, visitorKeys) {
+ if (options.considerGetters) {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.property.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ MethodDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ NewExpression() {
+ return true
+ },
+ Property(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ PropertyDefinition(node, options, visitorKeys) {
+ if (
+ options.considerImplicitTypeConversion &&
+ node.computed &&
+ node.key.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UnaryExpression(node, options, visitorKeys) {
+ if (node.operator === "delete") {
+ return true
+ }
+ if (
+ options.considerImplicitTypeConversion &&
+ typeConversionUnaryOps.has(node.operator) &&
+ node.argument.type !== "Literal"
+ ) {
+ return true
+ }
+ return this.$visitChildren(node, options, visitorKeys)
+ },
+ UpdateExpression() {
+ return true
+ },
+ YieldExpression() {
+ return true
+ },
+ }),
+);
+
+/**
+ * Check whether a given node has any side effect or not.
+ * @param {Node} node The node to get.
+ * @param {SourceCode} sourceCode The source code object.
+ * @param {object} [options] The option object.
+ * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.
+ * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.
+ * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.
+ * @returns {boolean} `true` if the node has a certain side effect.
+ */
+function hasSideEffect(
+ node,
+ sourceCode,
+ { considerGetters = false, considerImplicitTypeConversion = false } = {},
+) {
+ return visitor.$visit(
+ node,
+ { considerGetters, considerImplicitTypeConversion },
+ sourceCode.visitorKeys || KEYS,
+ )
+}
+
+/**
+ * Get the left parenthesis of the parent node syntax if it exists.
+ * E.g., `if (a) {}` then the `(`.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {Token|null} The left parenthesis of the parent node syntax
+ */
+function getParentSyntaxParen(node, sourceCode) {
+ const parent = node.parent;
+
+ switch (parent.type) {
+ case "CallExpression":
+ case "NewExpression":
+ if (parent.arguments.length === 1 && parent.arguments[0] === node) {
+ return sourceCode.getTokenAfter(
+ parent.callee,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "DoWhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getTokenAfter(
+ parent.body,
+ isOpeningParenToken,
+ )
+ }
+ return null
+
+ case "IfStatement":
+ case "WhileStatement":
+ if (parent.test === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "ImportExpression":
+ if (parent.source === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "SwitchStatement":
+ if (parent.discriminant === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ case "WithStatement":
+ if (parent.object === node) {
+ return sourceCode.getFirstToken(parent, 1)
+ }
+ return null
+
+ default:
+ return null
+ }
+}
+
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {number} times The number of parantheses.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized the given times.
+ */
+/**
+ * Check whether a given node is parenthesized or not.
+ * @param {Node} node The AST node to check.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
+ * @returns {boolean} `true` if the node is parenthesized.
+ */
+function isParenthesized(
+ timesOrNode,
+ nodeOrSourceCode,
+ optionalSourceCode,
+) {
+ let times, node, sourceCode, maybeLeftParen, maybeRightParen;
+ if (typeof timesOrNode === "number") {
+ times = timesOrNode | 0;
+ node = nodeOrSourceCode;
+ sourceCode = optionalSourceCode;
+ if (!(times >= 1)) {
+ throw new TypeError("'times' should be a positive integer.")
+ }
+ } else {
+ times = 1;
+ node = timesOrNode;
+ sourceCode = nodeOrSourceCode;
+ }
+
+ if (
+ node == null ||
+ // `Program` can't be parenthesized
+ node.parent == null ||
+ // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`
+ (node.parent.type === "CatchClause" && node.parent.param === node)
+ ) {
+ return false
+ }
+
+ maybeLeftParen = maybeRightParen = node;
+ do {
+ maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen);
+ maybeRightParen = sourceCode.getTokenAfter(maybeRightParen);
+ } while (
+ maybeLeftParen != null &&
+ maybeRightParen != null &&
+ isOpeningParenToken(maybeLeftParen) &&
+ isClosingParenToken(maybeRightParen) &&
+ // Avoid false positive such as `if (a) {}`
+ maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&
+ --times > 0
+ )
+
+ return times === 0
+}
+
+/**
+ * @author Toru Nagashima
+ * See LICENSE file in root directory for full license.
+ */
+
+const placeholder = /\$(?:[$&`']|[1-9][0-9]?)/gu;
+
+/** @type {WeakMap} */
+const internal = new WeakMap();
+
+/**
+ * Check whether a given character is escaped or not.
+ * @param {string} str The string to check.
+ * @param {number} index The location of the character to check.
+ * @returns {boolean} `true` if the character is escaped.
+ */
+function isEscaped(str, index) {
+ let escaped = false;
+ for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {
+ escaped = !escaped;
+ }
+ return escaped
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {string} replacement The new substring to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceS(matcher, str, replacement) {
+ const chunks = [];
+ let index = 0;
+
+ /** @type {RegExpExecArray} */
+ let match = null;
+
+ /**
+ * @param {string} key The placeholder.
+ * @returns {string} The replaced string.
+ */
+ function replacer(key) {
+ switch (key) {
+ case "$$":
+ return "$"
+ case "$&":
+ return match[0]
+ case "$`":
+ return str.slice(0, match.index)
+ case "$'":
+ return str.slice(match.index + match[0].length)
+ default: {
+ const i = key.slice(1);
+ if (i in match) {
+ return match[i]
+ }
+ return key
+ }
+ }
+ }
+
+ for (match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(replacement.replace(placeholder, replacer));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * Replace a given string by a given matcher.
+ * @param {PatternMatcher} matcher The pattern matcher.
+ * @param {string} str The string to be replaced.
+ * @param {(...strs[])=>string} replace The function to replace each matched part.
+ * @returns {string} The replaced string.
+ */
+function replaceF(matcher, str, replace) {
+ const chunks = [];
+ let index = 0;
+
+ for (const match of matcher.execAll(str)) {
+ chunks.push(str.slice(index, match.index));
+ chunks.push(String(replace(...match, match.index, match.input)));
+ index = match.index + match[0].length;
+ }
+ chunks.push(str.slice(index));
+
+ return chunks.join("")
+}
+
+/**
+ * The class to find patterns as considering escape sequences.
+ */
+class PatternMatcher {
+ /**
+ * Initialize this matcher.
+ * @param {RegExp} pattern The pattern to match.
+ * @param {{escaped:boolean}} options The options.
+ */
+ constructor(pattern, { escaped = false } = {}) {
+ if (!(pattern instanceof RegExp)) {
+ throw new TypeError("'pattern' should be a RegExp instance.")
+ }
+ if (!pattern.flags.includes("g")) {
+ throw new Error("'pattern' should contains 'g' flag.")
+ }
+
+ internal.set(this, {
+ pattern: new RegExp(pattern.source, pattern.flags),
+ escaped: Boolean(escaped),
+ });
+ }
+
+ /**
+ * Find the pattern in a given string.
+ * @param {string} str The string to find.
+ * @returns {IterableIterator} The iterator which iterate the matched information.
+ */
+ *execAll(str) {
+ const { pattern, escaped } = internal.get(this);
+ let match = null;
+ let lastIndex = 0;
+
+ pattern.lastIndex = 0;
+ while ((match = pattern.exec(str)) != null) {
+ if (escaped || !isEscaped(str, match.index)) {
+ lastIndex = pattern.lastIndex;
+ yield match;
+ pattern.lastIndex = lastIndex;
+ }
+ }
+ }
+
+ /**
+ * Check whether the pattern is found in a given string.
+ * @param {string} str The string to check.
+ * @returns {boolean} `true` if the pattern was found in the string.
+ */
+ test(str) {
+ const it = this.execAll(str);
+ const ret = it.next();
+ return !ret.done
+ }
+
+ /**
+ * Replace a given string.
+ * @param {string} str The string to be replaced.
+ * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.
+ * @returns {string} The replaced string.
+ */
+ [Symbol.replace](str, replacer) {
+ return typeof replacer === "function"
+ ? replaceF(this, String(str), replacer)
+ : replaceS(this, String(str), String(replacer))
+ }
+}
+
+const IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u;
+const has = Function.call.bind(Object.hasOwnProperty);
+
+const READ = Symbol("read");
+const CALL = Symbol("call");
+const CONSTRUCT = Symbol("construct");
+const ESM = Symbol("esm");
+
+const requireCall = { require: { [CALL]: true } };
+
+/**
+ * Check whether a given variable is modified or not.
+ * @param {Variable} variable The variable to check.
+ * @returns {boolean} `true` if the variable is modified.
+ */
+function isModifiedGlobal(variable) {
+ return (
+ variable == null ||
+ variable.defs.length !== 0 ||
+ variable.references.some((r) => r.isWrite())
+ )
+}
+
+/**
+ * Check if the value of a given node is passed through to the parent syntax as-is.
+ * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.
+ * @param {Node} node A node to check.
+ * @returns {boolean} `true` if the node is passed through.
+ */
+function isPassThrough(node) {
+ const parent = node.parent;
+
+ switch (parent && parent.type) {
+ case "ConditionalExpression":
+ return parent.consequent === node || parent.alternate === node
+ case "LogicalExpression":
+ return true
+ case "SequenceExpression":
+ return parent.expressions[parent.expressions.length - 1] === node
+ case "ChainExpression":
+ return true
+
+ default:
+ return false
+ }
+}
+
+/**
+ * The reference tracker.
+ */
+class ReferenceTracker {
+ /**
+ * Initialize this tracker.
+ * @param {Scope} globalScope The global scope.
+ * @param {object} [options] The options.
+ * @param {"legacy"|"strict"} [options.mode="strict"] The mode to determine the ImportDeclaration's behavior for CJS modules.
+ * @param {string[]} [options.globalObjectNames=["global","globalThis","self","window"]] The variable names for Global Object.
+ */
+ constructor(
+ globalScope,
+ {
+ mode = "strict",
+ globalObjectNames = ["global", "globalThis", "self", "window"],
+ } = {},
+ ) {
+ this.variableStack = [];
+ this.globalScope = globalScope;
+ this.mode = mode;
+ this.globalObjectNames = globalObjectNames.slice(0);
+ }
+
+ /**
+ * Iterate the references of global variables.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateGlobalReferences(traceMap) {
+ for (const key of Object.keys(traceMap)) {
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ nextTraceMap,
+ true,
+ );
+ }
+
+ for (const key of this.globalObjectNames) {
+ const path = [];
+ const variable = this.globalScope.set.get(key);
+
+ if (isModifiedGlobal(variable)) {
+ continue
+ }
+
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ }
+
+ /**
+ * Iterate the references of CommonJS modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateCjsReferences(traceMap) {
+ for (const { node } of this.iterateGlobalReferences(requireCall)) {
+ const key = getStringIfConstant(node.arguments[0]);
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextTraceMap = traceMap[key];
+ const path = [key];
+
+ if (nextTraceMap[READ]) {
+ yield {
+ node,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(node, path, nextTraceMap);
+ }
+ }
+
+ /**
+ * Iterate the references of ES modules.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *iterateEsmReferences(traceMap) {
+ const programNode = this.globalScope.block;
+
+ for (const node of programNode.body) {
+ if (!IMPORT_TYPE.test(node.type) || node.source == null) {
+ continue
+ }
+ const moduleId = node.source.value;
+
+ if (!has(traceMap, moduleId)) {
+ continue
+ }
+ const nextTraceMap = traceMap[moduleId];
+ const path = [moduleId];
+
+ if (nextTraceMap[READ]) {
+ yield { node, path, type: READ, info: nextTraceMap[READ] };
+ }
+
+ if (node.type === "ExportAllDeclaration") {
+ for (const key of Object.keys(nextTraceMap)) {
+ const exportTraceMap = nextTraceMap[key];
+ if (exportTraceMap[READ]) {
+ yield {
+ node,
+ path: path.concat(key),
+ type: READ,
+ info: exportTraceMap[READ],
+ };
+ }
+ }
+ } else {
+ for (const specifier of node.specifiers) {
+ const esm = has(nextTraceMap, ESM);
+ const it = this._iterateImportReferences(
+ specifier,
+ path,
+ esm
+ ? nextTraceMap
+ : this.mode === "legacy"
+ ? { default: nextTraceMap, ...nextTraceMap }
+ : { default: nextTraceMap },
+ );
+
+ if (esm) {
+ yield* it;
+ } else {
+ for (const report of it) {
+ report.path = report.path.filter(exceptDefault);
+ if (
+ report.path.length >= 2 ||
+ report.type !== READ
+ ) {
+ yield report;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given variable.
+ * @param {Variable} variable The variable to iterate that references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @param {boolean} shouldReport = The flag to report those references.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateVariableReferences(variable, path, traceMap, shouldReport) {
+ if (this.variableStack.includes(variable)) {
+ return
+ }
+ this.variableStack.push(variable);
+ try {
+ for (const reference of variable.references) {
+ if (!reference.isRead()) {
+ continue
+ }
+ const node = reference.identifier;
+
+ if (shouldReport && traceMap[READ]) {
+ yield { node, path, type: READ, info: traceMap[READ] };
+ }
+ yield* this._iteratePropertyReferences(node, path, traceMap);
+ }
+ } finally {
+ this.variableStack.pop();
+ }
+ }
+
+ /**
+ * Iterate the references for a given AST node.
+ * @param rootNode The AST node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ //eslint-disable-next-line complexity
+ *_iteratePropertyReferences(rootNode, path, traceMap) {
+ let node = rootNode;
+ while (isPassThrough(node)) {
+ node = node.parent;
+ }
+
+ const parent = node.parent;
+ if (parent.type === "MemberExpression") {
+ if (parent.object === node) {
+ const key = getPropertyName(parent);
+ if (key == null || !has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: parent,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iteratePropertyReferences(
+ parent,
+ path,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (parent.type === "CallExpression") {
+ if (parent.callee === node && traceMap[CALL]) {
+ yield { node: parent, path, type: CALL, info: traceMap[CALL] };
+ }
+ return
+ }
+ if (parent.type === "NewExpression") {
+ if (parent.callee === node && traceMap[CONSTRUCT]) {
+ yield {
+ node: parent,
+ path,
+ type: CONSTRUCT,
+ info: traceMap[CONSTRUCT],
+ };
+ }
+ return
+ }
+ if (parent.type === "AssignmentExpression") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ yield* this._iteratePropertyReferences(parent, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "AssignmentPattern") {
+ if (parent.right === node) {
+ yield* this._iterateLhsReferences(parent.left, path, traceMap);
+ }
+ return
+ }
+ if (parent.type === "VariableDeclarator") {
+ if (parent.init === node) {
+ yield* this._iterateLhsReferences(parent.id, path, traceMap);
+ }
+ }
+ }
+
+ /**
+ * Iterate the references for a given Pattern node.
+ * @param {Node} patternNode The Pattern node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateLhsReferences(patternNode, path, traceMap) {
+ if (patternNode.type === "Identifier") {
+ const variable = findVariable(this.globalScope, patternNode);
+ if (variable != null) {
+ yield* this._iterateVariableReferences(
+ variable,
+ path,
+ traceMap,
+ false,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "ObjectPattern") {
+ for (const property of patternNode.properties) {
+ const key = getPropertyName(property);
+
+ if (key == null || !has(traceMap, key)) {
+ continue
+ }
+
+ const nextPath = path.concat(key);
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: property,
+ path: nextPath,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateLhsReferences(
+ property.value,
+ nextPath,
+ nextTraceMap,
+ );
+ }
+ return
+ }
+ if (patternNode.type === "AssignmentPattern") {
+ yield* this._iterateLhsReferences(patternNode.left, path, traceMap);
+ }
+ }
+
+ /**
+ * Iterate the references for a given ModuleSpecifier node.
+ * @param {Node} specifierNode The ModuleSpecifier node to iterate references.
+ * @param {string[]} path The current path.
+ * @param {object} traceMap The trace map.
+ * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.
+ */
+ *_iterateImportReferences(specifierNode, path, traceMap) {
+ const type = specifierNode.type;
+
+ if (type === "ImportSpecifier" || type === "ImportDefaultSpecifier") {
+ const key =
+ type === "ImportDefaultSpecifier"
+ ? "default"
+ : specifierNode.imported.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ nextTraceMap,
+ false,
+ );
+
+ return
+ }
+
+ if (type === "ImportNamespaceSpecifier") {
+ yield* this._iterateVariableReferences(
+ findVariable(this.globalScope, specifierNode.local),
+ path,
+ traceMap,
+ false,
+ );
+ return
+ }
+
+ if (type === "ExportSpecifier") {
+ const key = specifierNode.local.name;
+ if (!has(traceMap, key)) {
+ return
+ }
+
+ path = path.concat(key); //eslint-disable-line no-param-reassign
+ const nextTraceMap = traceMap[key];
+ if (nextTraceMap[READ]) {
+ yield {
+ node: specifierNode,
+ path,
+ type: READ,
+ info: nextTraceMap[READ],
+ };
+ }
+ }
+ }
+}
+
+ReferenceTracker.READ = READ;
+ReferenceTracker.CALL = CALL;
+ReferenceTracker.CONSTRUCT = CONSTRUCT;
+ReferenceTracker.ESM = ESM;
+
+/**
+ * This is a predicate function for Array#filter.
+ * @param {string} name A name part.
+ * @param {number} index The index of the name.
+ * @returns {boolean} `false` if it's default.
+ */
+function exceptDefault(name, index) {
+ return !(index === 1 && name === "default")
+}
+
+var index = {
+ CALL,
+ CONSTRUCT,
+ ESM,
+ findVariable,
+ getFunctionHeadLocation,
+ getFunctionNameWithKind,
+ getInnermostScope,
+ getPropertyName,
+ getStaticValue,
+ getStringIfConstant,
+ hasSideEffect,
+ isArrowToken,
+ isClosingBraceToken,
+ isClosingBracketToken,
+ isClosingParenToken,
+ isColonToken,
+ isCommaToken,
+ isCommentToken,
+ isNotArrowToken,
+ isNotClosingBraceToken,
+ isNotClosingBracketToken,
+ isNotClosingParenToken,
+ isNotColonToken,
+ isNotCommaToken,
+ isNotCommentToken,
+ isNotOpeningBraceToken,
+ isNotOpeningBracketToken,
+ isNotOpeningParenToken,
+ isNotSemicolonToken,
+ isOpeningBraceToken,
+ isOpeningBracketToken,
+ isOpeningParenToken,
+ isParenthesized,
+ isSemicolonToken,
+ PatternMatcher,
+ READ,
+ ReferenceTracker,
+};
+
+export { CALL, CONSTRUCT, ESM, PatternMatcher, READ, ReferenceTracker, index as default, findVariable, getFunctionHeadLocation, getFunctionNameWithKind, getInnermostScope, getPropertyName, getStaticValue, getStringIfConstant, hasSideEffect, isArrowToken, isClosingBraceToken, isClosingBracketToken, isClosingParenToken, isColonToken, isCommaToken, isCommentToken, isNotArrowToken, isNotClosingBraceToken, isNotClosingBracketToken, isNotClosingParenToken, isNotColonToken, isNotCommaToken, isNotCommentToken, isNotOpeningBraceToken, isNotOpeningBracketToken, isNotOpeningParenToken, isNotSemicolonToken, isOpeningBraceToken, isOpeningBracketToken, isOpeningParenToken, isParenthesized, isSemicolonToken };
+//# sourceMappingURL=index.mjs.map
diff --git a/node_modules/@eslint-community/eslint-utils/index.mjs.map b/node_modules/@eslint-community/eslint-utils/index.mjs.map
new file mode 100644
index 0000000..24ffb8e
--- /dev/null
+++ b/node_modules/@eslint-community/eslint-utils/index.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.mjs","sources":["src/get-innermost-scope.mjs","src/find-variable.mjs","src/token-predicate.mjs","src/get-function-head-location.mjs","src/get-static-value.mjs","src/get-string-if-constant.mjs","src/get-property-name.mjs","src/get-function-name-with-kind.mjs","src/has-side-effect.mjs","src/is-parenthesized.mjs","src/pattern-matcher.mjs","src/reference-tracker.mjs","src/index.mjs"],"sourcesContent":["/**\n * Get the innermost scope which contains a given location.\n * @param {Scope} initialScope The initial scope to search.\n * @param {Node} node The location to search.\n * @returns {Scope} The innermost scope.\n */\nexport function getInnermostScope(initialScope, node) {\n const location = node.range[0]\n\n let scope = initialScope\n let found = false\n do {\n found = false\n for (const childScope of scope.childScopes) {\n const range = childScope.block.range\n\n if (range[0] <= location && location < range[1]) {\n scope = childScope\n found = true\n break\n }\n }\n } while (found)\n\n return scope\n}\n","import { getInnermostScope } from \"./get-innermost-scope.mjs\"\n\n/**\n * Find the variable of a given name.\n * @param {Scope} initialScope The scope to start finding.\n * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.\n * @returns {Variable|null} The found variable or null.\n */\nexport function findVariable(initialScope, nameOrNode) {\n let name = \"\"\n let scope = initialScope\n\n if (typeof nameOrNode === \"string\") {\n name = nameOrNode\n } else {\n name = nameOrNode.name\n scope = getInnermostScope(scope, nameOrNode)\n }\n\n while (scope != null) {\n const variable = scope.set.get(name)\n if (variable != null) {\n return variable\n }\n scope = scope.upper\n }\n\n return null\n}\n","/**\n * Negate the result of `this` calling.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the result of `this(token)` is `false`.\n */\nfunction negate0(token) {\n return !this(token) //eslint-disable-line no-invalid-this\n}\n\n/**\n * Creates the negate function of the given function.\n * @param {function(Token):boolean} f - The function to negate.\n * @returns {function(Token):boolean} Negated function.\n */\nfunction negate(f) {\n return negate0.bind(f)\n}\n\n/**\n * Checks if the given token is a PunctuatorToken with the given value\n * @param {Token} token - The token to check.\n * @param {string} value - The value to check.\n * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.\n */\nfunction isPunctuatorTokenWithValue(token, value) {\n return token.type === \"Punctuator\" && token.value === value\n}\n\n/**\n * Checks if the given token is an arrow token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an arrow token.\n */\nexport function isArrowToken(token) {\n return isPunctuatorTokenWithValue(token, \"=>\")\n}\n\n/**\n * Checks if the given token is a comma token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comma token.\n */\nexport function isCommaToken(token) {\n return isPunctuatorTokenWithValue(token, \",\")\n}\n\n/**\n * Checks if the given token is a semicolon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a semicolon token.\n */\nexport function isSemicolonToken(token) {\n return isPunctuatorTokenWithValue(token, \";\")\n}\n\n/**\n * Checks if the given token is a colon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a colon token.\n */\nexport function isColonToken(token) {\n return isPunctuatorTokenWithValue(token, \":\")\n}\n\n/**\n * Checks if the given token is an opening parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening parenthesis token.\n */\nexport function isOpeningParenToken(token) {\n return isPunctuatorTokenWithValue(token, \"(\")\n}\n\n/**\n * Checks if the given token is a closing parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing parenthesis token.\n */\nexport function isClosingParenToken(token) {\n return isPunctuatorTokenWithValue(token, \")\")\n}\n\n/**\n * Checks if the given token is an opening square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening square bracket token.\n */\nexport function isOpeningBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"[\")\n}\n\n/**\n * Checks if the given token is a closing square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing square bracket token.\n */\nexport function isClosingBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"]\")\n}\n\n/**\n * Checks if the given token is an opening brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening brace token.\n */\nexport function isOpeningBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"{\")\n}\n\n/**\n * Checks if the given token is a closing brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing brace token.\n */\nexport function isClosingBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"}\")\n}\n\n/**\n * Checks if the given token is a comment token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comment token.\n */\nexport function isCommentToken(token) {\n return [\"Block\", \"Line\", \"Shebang\"].includes(token.type)\n}\n\nexport const isNotArrowToken = negate(isArrowToken)\nexport const isNotCommaToken = negate(isCommaToken)\nexport const isNotSemicolonToken = negate(isSemicolonToken)\nexport const isNotColonToken = negate(isColonToken)\nexport const isNotOpeningParenToken = negate(isOpeningParenToken)\nexport const isNotClosingParenToken = negate(isClosingParenToken)\nexport const isNotOpeningBracketToken = negate(isOpeningBracketToken)\nexport const isNotClosingBracketToken = negate(isClosingBracketToken)\nexport const isNotOpeningBraceToken = negate(isOpeningBraceToken)\nexport const isNotClosingBraceToken = negate(isClosingBraceToken)\nexport const isNotCommentToken = negate(isCommentToken)\n","import { isArrowToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the `(` token of the given function node.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {Token} `(` token.\n */\nfunction getOpeningParenOfParams(node, sourceCode) {\n return node.id\n ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)\n : sourceCode.getFirstToken(node, isOpeningParenToken)\n}\n\n/**\n * Get the location of the given function node for reporting.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {string} The location of the function node for reporting.\n */\nexport function getFunctionHeadLocation(node, sourceCode) {\n const parent = node.parent\n let start = null\n let end = null\n\n if (node.type === \"ArrowFunctionExpression\") {\n const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken)\n\n start = arrowToken.loc.start\n end = arrowToken.loc.end\n } else if (\n parent.type === \"Property\" ||\n parent.type === \"MethodDefinition\" ||\n parent.type === \"PropertyDefinition\"\n ) {\n start = parent.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n } else {\n start = node.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n }\n\n return {\n start: { ...start },\n end: { ...end },\n }\n}\n","/* globals globalThis, global, self, window */\n\nimport { findVariable } from \"./find-variable.mjs\"\n\nconst globalObject =\n typeof globalThis !== \"undefined\"\n ? globalThis\n : typeof self !== \"undefined\"\n ? self\n : typeof window !== \"undefined\"\n ? window\n : typeof global !== \"undefined\"\n ? global\n : {}\n\nconst builtinNames = Object.freeze(\n new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"BigInt\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"isFinite\",\n \"isNaN\",\n \"isPrototypeOf\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"Object\",\n \"parseFloat\",\n \"parseInt\",\n \"Promise\",\n \"Proxy\",\n \"Reflect\",\n \"RegExp\",\n \"Set\",\n \"String\",\n \"Symbol\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"undefined\",\n \"unescape\",\n \"WeakMap\",\n \"WeakSet\",\n ]),\n)\nconst callAllowed = new Set(\n [\n Array.isArray,\n Array.of,\n Array.prototype.at,\n Array.prototype.concat,\n Array.prototype.entries,\n Array.prototype.every,\n Array.prototype.filter,\n Array.prototype.find,\n Array.prototype.findIndex,\n Array.prototype.flat,\n Array.prototype.includes,\n Array.prototype.indexOf,\n Array.prototype.join,\n Array.prototype.keys,\n Array.prototype.lastIndexOf,\n Array.prototype.slice,\n Array.prototype.some,\n Array.prototype.toString,\n Array.prototype.values,\n typeof BigInt === \"function\" ? BigInt : undefined,\n Boolean,\n Date,\n Date.parse,\n decodeURI,\n decodeURIComponent,\n encodeURI,\n encodeURIComponent,\n escape,\n isFinite,\n isNaN,\n isPrototypeOf,\n Map,\n Map.prototype.entries,\n Map.prototype.get,\n Map.prototype.has,\n Map.prototype.keys,\n Map.prototype.values,\n ...Object.getOwnPropertyNames(Math)\n .filter((k) => k !== \"random\")\n .map((k) => Math[k])\n .filter((f) => typeof f === \"function\"),\n Number,\n Number.isFinite,\n Number.isNaN,\n Number.parseFloat,\n Number.parseInt,\n Number.prototype.toExponential,\n Number.prototype.toFixed,\n Number.prototype.toPrecision,\n Number.prototype.toString,\n Object,\n Object.entries,\n Object.is,\n Object.isExtensible,\n Object.isFrozen,\n Object.isSealed,\n Object.keys,\n Object.values,\n parseFloat,\n parseInt,\n RegExp,\n Set,\n Set.prototype.entries,\n Set.prototype.has,\n Set.prototype.keys,\n Set.prototype.values,\n String,\n String.fromCharCode,\n String.fromCodePoint,\n String.raw,\n String.prototype.at,\n String.prototype.charAt,\n String.prototype.charCodeAt,\n String.prototype.codePointAt,\n String.prototype.concat,\n String.prototype.endsWith,\n String.prototype.includes,\n String.prototype.indexOf,\n String.prototype.lastIndexOf,\n String.prototype.normalize,\n String.prototype.padEnd,\n String.prototype.padStart,\n String.prototype.slice,\n String.prototype.startsWith,\n String.prototype.substr,\n String.prototype.substring,\n String.prototype.toLowerCase,\n String.prototype.toString,\n String.prototype.toUpperCase,\n String.prototype.trim,\n String.prototype.trimEnd,\n String.prototype.trimLeft,\n String.prototype.trimRight,\n String.prototype.trimStart,\n Symbol.for,\n Symbol.keyFor,\n unescape,\n ].filter((f) => typeof f === \"function\"),\n)\nconst callPassThrough = new Set([\n Object.freeze,\n Object.preventExtensions,\n Object.seal,\n])\n\n/** @type {ReadonlyArray]>} */\nconst getterAllowed = [\n [Map, new Set([\"size\"])],\n [\n RegExp,\n new Set([\n \"dotAll\",\n \"flags\",\n \"global\",\n \"hasIndices\",\n \"ignoreCase\",\n \"multiline\",\n \"source\",\n \"sticky\",\n \"unicode\",\n ]),\n ],\n [Set, new Set([\"size\"])],\n]\n\n/**\n * Get the property descriptor.\n * @param {object} object The object to get.\n * @param {string|number|symbol} name The property name to get.\n */\nfunction getPropertyDescriptor(object, name) {\n let x = object\n while ((typeof x === \"object\" || typeof x === \"function\") && x !== null) {\n const d = Object.getOwnPropertyDescriptor(x, name)\n if (d) {\n return d\n }\n x = Object.getPrototypeOf(x)\n }\n return null\n}\n\n/**\n * Check if a property is getter or not.\n * @param {object} object The object to check.\n * @param {string|number|symbol} name The property name to check.\n */\nfunction isGetter(object, name) {\n const d = getPropertyDescriptor(object, name)\n return d != null && d.get != null\n}\n\n/**\n * Get the element values of a given node list.\n * @param {Node[]} nodeList The node list to get values.\n * @param {Scope|undefined} initialScope The initial scope to find variables.\n * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.\n */\nfunction getElementValues(nodeList, initialScope) {\n const valueList = []\n\n for (let i = 0; i < nodeList.length; ++i) {\n const elementNode = nodeList[i]\n\n if (elementNode == null) {\n valueList.length = i + 1\n } else if (elementNode.type === \"SpreadElement\") {\n const argument = getStaticValueR(elementNode.argument, initialScope)\n if (argument == null) {\n return null\n }\n valueList.push(...argument.value)\n } else {\n const element = getStaticValueR(elementNode, initialScope)\n if (element == null) {\n return null\n }\n valueList.push(element.value)\n }\n }\n\n return valueList\n}\n\n/**\n * Returns whether the given variable is never written to after initialization.\n * @param {import(\"eslint\").Scope.Variable} variable\n * @returns {boolean}\n */\nfunction isEffectivelyConst(variable) {\n const refs = variable.references\n\n const inits = refs.filter((r) => r.init).length\n const reads = refs.filter((r) => r.isReadOnly()).length\n if (inits === 1 && reads + inits === refs.length) {\n // there is only one init and all other references only read\n return true\n }\n return false\n}\n\nconst operations = Object.freeze({\n ArrayExpression(node, initialScope) {\n const elements = getElementValues(node.elements, initialScope)\n return elements != null ? { value: elements } : null\n },\n\n AssignmentExpression(node, initialScope) {\n if (node.operator === \"=\") {\n return getStaticValueR(node.right, initialScope)\n }\n return null\n },\n\n //eslint-disable-next-line complexity\n BinaryExpression(node, initialScope) {\n if (node.operator === \"in\" || node.operator === \"instanceof\") {\n // Not supported.\n return null\n }\n\n const left = getStaticValueR(node.left, initialScope)\n const right = getStaticValueR(node.right, initialScope)\n if (left != null && right != null) {\n switch (node.operator) {\n case \"==\":\n return { value: left.value == right.value } //eslint-disable-line eqeqeq\n case \"!=\":\n return { value: left.value != right.value } //eslint-disable-line eqeqeq\n case \"===\":\n return { value: left.value === right.value }\n case \"!==\":\n return { value: left.value !== right.value }\n case \"<\":\n return { value: left.value < right.value }\n case \"<=\":\n return { value: left.value <= right.value }\n case \">\":\n return { value: left.value > right.value }\n case \">=\":\n return { value: left.value >= right.value }\n case \"<<\":\n return { value: left.value << right.value }\n case \">>\":\n return { value: left.value >> right.value }\n case \">>>\":\n return { value: left.value >>> right.value }\n case \"+\":\n return { value: left.value + right.value }\n case \"-\":\n return { value: left.value - right.value }\n case \"*\":\n return { value: left.value * right.value }\n case \"/\":\n return { value: left.value / right.value }\n case \"%\":\n return { value: left.value % right.value }\n case \"**\":\n return { value: left.value ** right.value }\n case \"|\":\n return { value: left.value | right.value }\n case \"^\":\n return { value: left.value ^ right.value }\n case \"&\":\n return { value: left.value & right.value }\n\n // no default\n }\n }\n\n return null\n },\n\n CallExpression(node, initialScope) {\n const calleeNode = node.callee\n const args = getElementValues(node.arguments, initialScope)\n\n if (args != null) {\n if (calleeNode.type === \"MemberExpression\") {\n if (calleeNode.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(calleeNode.object, initialScope)\n if (object != null) {\n if (\n object.value == null &&\n (object.optional || node.optional)\n ) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(\n calleeNode,\n initialScope,\n )\n\n if (property != null) {\n const receiver = object.value\n const methodName = property.value\n if (callAllowed.has(receiver[methodName])) {\n return { value: receiver[methodName](...args) }\n }\n if (callPassThrough.has(receiver[methodName])) {\n return { value: args[0] }\n }\n }\n }\n } else {\n const callee = getStaticValueR(calleeNode, initialScope)\n if (callee != null) {\n if (callee.value == null && node.optional) {\n return { value: undefined, optional: true }\n }\n const func = callee.value\n if (callAllowed.has(func)) {\n return { value: func(...args) }\n }\n if (callPassThrough.has(func)) {\n return { value: args[0] }\n }\n }\n }\n }\n\n return null\n },\n\n ConditionalExpression(node, initialScope) {\n const test = getStaticValueR(node.test, initialScope)\n if (test != null) {\n return test.value\n ? getStaticValueR(node.consequent, initialScope)\n : getStaticValueR(node.alternate, initialScope)\n }\n return null\n },\n\n ExpressionStatement(node, initialScope) {\n return getStaticValueR(node.expression, initialScope)\n },\n\n Identifier(node, initialScope) {\n if (initialScope != null) {\n const variable = findVariable(initialScope, node)\n\n // Built-in globals.\n if (\n variable != null &&\n variable.defs.length === 0 &&\n builtinNames.has(variable.name) &&\n variable.name in globalObject\n ) {\n return { value: globalObject[variable.name] }\n }\n\n // Constants.\n if (variable != null && variable.defs.length === 1) {\n const def = variable.defs[0]\n if (\n def.parent &&\n def.type === \"Variable\" &&\n (def.parent.kind === \"const\" ||\n isEffectivelyConst(variable)) &&\n // TODO(mysticatea): don't support destructuring here.\n def.node.id.type === \"Identifier\"\n ) {\n return getStaticValueR(def.node.init, initialScope)\n }\n }\n }\n return null\n },\n\n Literal(node) {\n //istanbul ignore if : this is implementation-specific behavior.\n if ((node.regex != null || node.bigint != null) && node.value == null) {\n // It was a RegExp/BigInt literal, but Node.js didn't support it.\n return null\n }\n return { value: node.value }\n },\n\n LogicalExpression(node, initialScope) {\n const left = getStaticValueR(node.left, initialScope)\n if (left != null) {\n if (\n (node.operator === \"||\" && Boolean(left.value) === true) ||\n (node.operator === \"&&\" && Boolean(left.value) === false) ||\n (node.operator === \"??\" && left.value != null)\n ) {\n return left\n }\n\n const right = getStaticValueR(node.right, initialScope)\n if (right != null) {\n return right\n }\n }\n\n return null\n },\n\n MemberExpression(node, initialScope) {\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(node.object, initialScope)\n if (object != null) {\n if (object.value == null && (object.optional || node.optional)) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(node, initialScope)\n\n if (property != null) {\n if (!isGetter(object.value, property.value)) {\n return { value: object.value[property.value] }\n }\n\n for (const [classFn, allowed] of getterAllowed) {\n if (\n object.value instanceof classFn &&\n allowed.has(property.value)\n ) {\n return { value: object.value[property.value] }\n }\n }\n }\n }\n return null\n },\n\n ChainExpression(node, initialScope) {\n const expression = getStaticValueR(node.expression, initialScope)\n if (expression != null) {\n return { value: expression.value }\n }\n return null\n },\n\n NewExpression(node, initialScope) {\n const callee = getStaticValueR(node.callee, initialScope)\n const args = getElementValues(node.arguments, initialScope)\n\n if (callee != null && args != null) {\n const Func = callee.value\n if (callAllowed.has(Func)) {\n return { value: new Func(...args) }\n }\n }\n\n return null\n },\n\n ObjectExpression(node, initialScope) {\n const object = {}\n\n for (const propertyNode of node.properties) {\n if (propertyNode.type === \"Property\") {\n if (propertyNode.kind !== \"init\") {\n return null\n }\n const key = getStaticPropertyNameValue(\n propertyNode,\n initialScope,\n )\n const value = getStaticValueR(propertyNode.value, initialScope)\n if (key == null || value == null) {\n return null\n }\n object[key.value] = value.value\n } else if (\n propertyNode.type === \"SpreadElement\" ||\n propertyNode.type === \"ExperimentalSpreadProperty\"\n ) {\n const argument = getStaticValueR(\n propertyNode.argument,\n initialScope,\n )\n if (argument == null) {\n return null\n }\n Object.assign(object, argument.value)\n } else {\n return null\n }\n }\n\n return { value: object }\n },\n\n SequenceExpression(node, initialScope) {\n const last = node.expressions[node.expressions.length - 1]\n return getStaticValueR(last, initialScope)\n },\n\n TaggedTemplateExpression(node, initialScope) {\n const tag = getStaticValueR(node.tag, initialScope)\n const expressions = getElementValues(\n node.quasi.expressions,\n initialScope,\n )\n\n if (tag != null && expressions != null) {\n const func = tag.value\n const strings = node.quasi.quasis.map((q) => q.value.cooked)\n strings.raw = node.quasi.quasis.map((q) => q.value.raw)\n\n if (func === String.raw) {\n return { value: func(strings, ...expressions) }\n }\n }\n\n return null\n },\n\n TemplateLiteral(node, initialScope) {\n const expressions = getElementValues(node.expressions, initialScope)\n if (expressions != null) {\n let value = node.quasis[0].value.cooked\n for (let i = 0; i < expressions.length; ++i) {\n value += expressions[i]\n value += node.quasis[i + 1].value.cooked\n }\n return { value }\n }\n return null\n },\n\n UnaryExpression(node, initialScope) {\n if (node.operator === \"delete\") {\n // Not supported.\n return null\n }\n if (node.operator === \"void\") {\n return { value: undefined }\n }\n\n const arg = getStaticValueR(node.argument, initialScope)\n if (arg != null) {\n switch (node.operator) {\n case \"-\":\n return { value: -arg.value }\n case \"+\":\n return { value: +arg.value } //eslint-disable-line no-implicit-coercion\n case \"!\":\n return { value: !arg.value }\n case \"~\":\n return { value: ~arg.value }\n case \"typeof\":\n return { value: typeof arg.value }\n\n // no default\n }\n }\n\n return null\n },\n})\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope|undefined} initialScope The scope to start finding variable.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nfunction getStaticValueR(node, initialScope) {\n if (node != null && Object.hasOwnProperty.call(operations, node.type)) {\n return operations[node.type](node, initialScope)\n }\n return null\n}\n\n/**\n * Get the static value of property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.\n */\nfunction getStaticPropertyNameValue(node, initialScope) {\n const nameNode = node.type === \"Property\" ? node.key : node.property\n\n if (node.computed) {\n return getStaticValueR(nameNode, initialScope)\n }\n\n if (nameNode.type === \"Identifier\") {\n return { value: nameNode.name }\n }\n\n if (nameNode.type === \"Literal\") {\n if (nameNode.bigint) {\n return { value: nameNode.bigint }\n }\n return { value: String(nameNode.value) }\n }\n\n return null\n}\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nexport function getStaticValue(node, initialScope = null) {\n try {\n return getStaticValueR(node, initialScope)\n } catch (_error) {\n return null\n }\n}\n","import { getStaticValue } from \"./get-static-value.mjs\"\n\n/**\n * Get the value of a given node if it's a literal or a template literal.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.\n * @returns {string|null} The value of the node, or `null`.\n */\nexport function getStringIfConstant(node, initialScope = null) {\n // Handle the literals that the platform doesn't support natively.\n if (node && node.type === \"Literal\" && node.value === null) {\n if (node.regex) {\n return `/${node.regex.pattern}/${node.regex.flags}`\n }\n if (node.bigint) {\n return node.bigint\n }\n }\n\n const evaluated = getStaticValue(node, initialScope)\n return evaluated && String(evaluated.value)\n}\n","import { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\n/**\n * Get the property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {string|null} The property name of the node.\n */\nexport function getPropertyName(node, initialScope) {\n switch (node.type) {\n case \"MemberExpression\":\n if (node.computed) {\n return getStringIfConstant(node.property, initialScope)\n }\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n return node.property.name\n\n case \"Property\":\n case \"MethodDefinition\":\n case \"PropertyDefinition\":\n if (node.computed) {\n return getStringIfConstant(node.key, initialScope)\n }\n if (node.key.type === \"Literal\") {\n return String(node.key.value)\n }\n if (node.key.type === \"PrivateIdentifier\") {\n return null\n }\n return node.key.name\n\n // no default\n }\n\n return null\n}\n","import { getPropertyName } from \"./get-property-name.mjs\"\n\n/**\n * Get the name and kind of the given function node.\n * @param {ASTNode} node - The function node to get.\n * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.\n * @returns {string} The name and kind of the function node.\n */\n// eslint-disable-next-line complexity\nexport function getFunctionNameWithKind(node, sourceCode) {\n const parent = node.parent\n const tokens = []\n const isObjectMethod = parent.type === \"Property\" && parent.value === node\n const isClassMethod =\n parent.type === \"MethodDefinition\" && parent.value === node\n const isClassFieldMethod =\n parent.type === \"PropertyDefinition\" && parent.value === node\n\n // Modifiers.\n if (isClassMethod || isClassFieldMethod) {\n if (parent.static) {\n tokens.push(\"static\")\n }\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(\"private\")\n }\n }\n if (node.async) {\n tokens.push(\"async\")\n }\n if (node.generator) {\n tokens.push(\"generator\")\n }\n\n // Kinds.\n if (isObjectMethod || isClassMethod) {\n if (parent.kind === \"constructor\") {\n return \"constructor\"\n }\n if (parent.kind === \"get\") {\n tokens.push(\"getter\")\n } else if (parent.kind === \"set\") {\n tokens.push(\"setter\")\n } else {\n tokens.push(\"method\")\n }\n } else if (isClassFieldMethod) {\n tokens.push(\"method\")\n } else {\n if (node.type === \"ArrowFunctionExpression\") {\n tokens.push(\"arrow\")\n }\n tokens.push(\"function\")\n }\n\n // Names.\n if (isObjectMethod || isClassMethod || isClassFieldMethod) {\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(`#${parent.key.name}`)\n } else {\n const name = getPropertyName(parent)\n if (name) {\n tokens.push(`'${name}'`)\n } else if (sourceCode) {\n const keyText = sourceCode.getText(parent.key)\n if (!keyText.includes(\"\\n\")) {\n tokens.push(`[${keyText}]`)\n }\n }\n }\n } else if (node.id) {\n tokens.push(`'${node.id.name}'`)\n } else if (\n parent.type === \"VariableDeclarator\" &&\n parent.id &&\n parent.id.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.id.name}'`)\n } else if (\n (parent.type === \"AssignmentExpression\" ||\n parent.type === \"AssignmentPattern\") &&\n parent.left &&\n parent.left.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.left.name}'`)\n } else if (\n parent.type === \"ExportDefaultDeclaration\" &&\n parent.declaration === node\n ) {\n tokens.push(\"'default'\")\n }\n\n return tokens.join(\" \")\n}\n","import { getKeys, KEYS } from \"eslint-visitor-keys\"\n\nconst typeConversionBinaryOps = Object.freeze(\n new Set([\n \"==\",\n \"!=\",\n \"<\",\n \"<=\",\n \">\",\n \">=\",\n \"<<\",\n \">>\",\n \">>>\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"|\",\n \"^\",\n \"&\",\n \"in\",\n ]),\n)\nconst typeConversionUnaryOps = Object.freeze(new Set([\"-\", \"+\", \"!\", \"~\"]))\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an ASTNode.\n */\nfunction isNode(x) {\n return x !== null && typeof x === \"object\" && typeof x.type === \"string\"\n}\n\nconst visitor = Object.freeze(\n Object.assign(Object.create(null), {\n $visit(node, options, visitorKeys) {\n const { type } = node\n\n if (typeof this[type] === \"function\") {\n return this[type](node, options, visitorKeys)\n }\n\n return this.$visitChildren(node, options, visitorKeys)\n },\n\n $visitChildren(node, options, visitorKeys) {\n const { type } = node\n\n for (const key of visitorKeys[type] || getKeys(node)) {\n const value = node[key]\n\n if (Array.isArray(value)) {\n for (const element of value) {\n if (\n isNode(element) &&\n this.$visit(element, options, visitorKeys)\n ) {\n return true\n }\n }\n } else if (\n isNode(value) &&\n this.$visit(value, options, visitorKeys)\n ) {\n return true\n }\n }\n\n return false\n },\n\n ArrowFunctionExpression() {\n return false\n },\n AssignmentExpression() {\n return true\n },\n AwaitExpression() {\n return true\n },\n BinaryExpression(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n typeConversionBinaryOps.has(node.operator) &&\n (node.left.type !== \"Literal\" || node.right.type !== \"Literal\")\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n CallExpression() {\n return true\n },\n FunctionExpression() {\n return false\n },\n ImportExpression() {\n return true\n },\n MemberExpression(node, options, visitorKeys) {\n if (options.considerGetters) {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.property.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n MethodDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n NewExpression() {\n return true\n },\n Property(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n PropertyDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UnaryExpression(node, options, visitorKeys) {\n if (node.operator === \"delete\") {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n typeConversionUnaryOps.has(node.operator) &&\n node.argument.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UpdateExpression() {\n return true\n },\n YieldExpression() {\n return true\n },\n }),\n)\n\n/**\n * Check whether a given node has any side effect or not.\n * @param {Node} node The node to get.\n * @param {SourceCode} sourceCode The source code object.\n * @param {object} [options] The option object.\n * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.\n * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.\n * @param {object} [options.visitorKeys=KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.\n * @returns {boolean} `true` if the node has a certain side effect.\n */\nexport function hasSideEffect(\n node,\n sourceCode,\n { considerGetters = false, considerImplicitTypeConversion = false } = {},\n) {\n return visitor.$visit(\n node,\n { considerGetters, considerImplicitTypeConversion },\n sourceCode.visitorKeys || KEYS,\n )\n}\n","import { isClosingParenToken, isOpeningParenToken } from \"./token-predicate.mjs\"\n\n/**\n * Get the left parenthesis of the parent node syntax if it exists.\n * E.g., `if (a) {}` then the `(`.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token|null} The left parenthesis of the parent node syntax\n */\nfunction getParentSyntaxParen(node, sourceCode) {\n const parent = node.parent\n\n switch (parent.type) {\n case \"CallExpression\":\n case \"NewExpression\":\n if (parent.arguments.length === 1 && parent.arguments[0] === node) {\n return sourceCode.getTokenAfter(\n parent.callee,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"DoWhileStatement\":\n if (parent.test === node) {\n return sourceCode.getTokenAfter(\n parent.body,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"IfStatement\":\n case \"WhileStatement\":\n if (parent.test === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"ImportExpression\":\n if (parent.source === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"SwitchStatement\":\n if (parent.discriminant === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"WithStatement\":\n if (parent.object === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n default:\n return null\n }\n}\n\n/**\n * Check whether a given node is parenthesized or not.\n * @param {number} times The number of parantheses.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized the given times.\n */\n/**\n * Check whether a given node is parenthesized or not.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized.\n */\nexport function isParenthesized(\n timesOrNode,\n nodeOrSourceCode,\n optionalSourceCode,\n) {\n let times, node, sourceCode, maybeLeftParen, maybeRightParen\n if (typeof timesOrNode === \"number\") {\n times = timesOrNode | 0\n node = nodeOrSourceCode\n sourceCode = optionalSourceCode\n if (!(times >= 1)) {\n throw new TypeError(\"'times' should be a positive integer.\")\n }\n } else {\n times = 1\n node = timesOrNode\n sourceCode = nodeOrSourceCode\n }\n\n if (\n node == null ||\n // `Program` can't be parenthesized\n node.parent == null ||\n // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`\n (node.parent.type === \"CatchClause\" && node.parent.param === node)\n ) {\n return false\n }\n\n maybeLeftParen = maybeRightParen = node\n do {\n maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen)\n maybeRightParen = sourceCode.getTokenAfter(maybeRightParen)\n } while (\n maybeLeftParen != null &&\n maybeRightParen != null &&\n isOpeningParenToken(maybeLeftParen) &&\n isClosingParenToken(maybeRightParen) &&\n // Avoid false positive such as `if (a) {}`\n maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&\n --times > 0\n )\n\n return times === 0\n}\n","/**\n * @author Toru Nagashima \n * See LICENSE file in root directory for full license.\n */\n\nconst placeholder = /\\$(?:[$&`']|[1-9][0-9]?)/gu\n\n/** @type {WeakMap} */\nconst internal = new WeakMap()\n\n/**\n * Check whether a given character is escaped or not.\n * @param {string} str The string to check.\n * @param {number} index The location of the character to check.\n * @returns {boolean} `true` if the character is escaped.\n */\nfunction isEscaped(str, index) {\n let escaped = false\n for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {\n escaped = !escaped\n }\n return escaped\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {string} replacement The new substring to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceS(matcher, str, replacement) {\n const chunks = []\n let index = 0\n\n /** @type {RegExpExecArray} */\n let match = null\n\n /**\n * @param {string} key The placeholder.\n * @returns {string} The replaced string.\n */\n function replacer(key) {\n switch (key) {\n case \"$$\":\n return \"$\"\n case \"$&\":\n return match[0]\n case \"$`\":\n return str.slice(0, match.index)\n case \"$'\":\n return str.slice(match.index + match[0].length)\n default: {\n const i = key.slice(1)\n if (i in match) {\n return match[i]\n }\n return key\n }\n }\n }\n\n for (match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(replacement.replace(placeholder, replacer))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {(...strs[])=>string} replace The function to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceF(matcher, str, replace) {\n const chunks = []\n let index = 0\n\n for (const match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(String(replace(...match, match.index, match.input)))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * The class to find patterns as considering escape sequences.\n */\nexport class PatternMatcher {\n /**\n * Initialize this matcher.\n * @param {RegExp} pattern The pattern to match.\n * @param {{escaped:boolean}} options The options.\n */\n constructor(pattern, { escaped = false } = {}) {\n if (!(pattern instanceof RegExp)) {\n throw new TypeError(\"'pattern' should be a RegExp instance.\")\n }\n if (!pattern.flags.includes(\"g\")) {\n throw new Error(\"'pattern' should contains 'g' flag.\")\n }\n\n internal.set(this, {\n pattern: new RegExp(pattern.source, pattern.flags),\n escaped: Boolean(escaped),\n })\n }\n\n /**\n * Find the pattern in a given string.\n * @param {string} str The string to find.\n * @returns {IterableIterator} The iterator which iterate the matched information.\n */\n *execAll(str) {\n const { pattern, escaped } = internal.get(this)\n let match = null\n let lastIndex = 0\n\n pattern.lastIndex = 0\n while ((match = pattern.exec(str)) != null) {\n if (escaped || !isEscaped(str, match.index)) {\n lastIndex = pattern.lastIndex\n yield match\n pattern.lastIndex = lastIndex\n }\n }\n }\n\n /**\n * Check whether the pattern is found in a given string.\n * @param {string} str The string to check.\n * @returns {boolean} `true` if the pattern was found in the string.\n */\n test(str) {\n const it = this.execAll(str)\n const ret = it.next()\n return !ret.done\n }\n\n /**\n * Replace a given string.\n * @param {string} str The string to be replaced.\n * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.\n * @returns {string} The replaced string.\n */\n [Symbol.replace](str, replacer) {\n return typeof replacer === \"function\"\n ? replaceF(this, String(str), replacer)\n : replaceS(this, String(str), String(replacer))\n }\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\n\nconst IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u\nconst has = Function.call.bind(Object.hasOwnProperty)\n\nexport const READ = Symbol(\"read\")\nexport const CALL = Symbol(\"call\")\nexport const CONSTRUCT = Symbol(\"construct\")\nexport const ESM = Symbol(\"esm\")\n\nconst requireCall = { require: { [CALL]: true } }\n\n/**\n * Check whether a given variable is modified or not.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable is modified.\n */\nfunction isModifiedGlobal(variable) {\n return (\n variable == null ||\n variable.defs.length !== 0 ||\n variable.references.some((r) => r.isWrite())\n )\n}\n\n/**\n * Check if the value of a given node is passed through to the parent syntax as-is.\n * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.\n * @param {Node} node A node to check.\n * @returns {boolean} `true` if the node is passed through.\n */\nfunction isPassThrough(node) {\n const parent = node.parent\n\n switch (parent && parent.type) {\n case \"ConditionalExpression\":\n return parent.consequent === node || parent.alternate === node\n case \"LogicalExpression\":\n return true\n case \"SequenceExpression\":\n return parent.expressions[parent.expressions.length - 1] === node\n case \"ChainExpression\":\n return true\n\n default:\n return false\n }\n}\n\n/**\n * The reference tracker.\n */\nexport class ReferenceTracker {\n /**\n * Initialize this tracker.\n * @param {Scope} globalScope The global scope.\n * @param {object} [options] The options.\n * @param {\"legacy\"|\"strict\"} [options.mode=\"strict\"] The mode to determine the ImportDeclaration's behavior for CJS modules.\n * @param {string[]} [options.globalObjectNames=[\"global\",\"globalThis\",\"self\",\"window\"]] The variable names for Global Object.\n */\n constructor(\n globalScope,\n {\n mode = \"strict\",\n globalObjectNames = [\"global\", \"globalThis\", \"self\", \"window\"],\n } = {},\n ) {\n this.variableStack = []\n this.globalScope = globalScope\n this.mode = mode\n this.globalObjectNames = globalObjectNames.slice(0)\n }\n\n /**\n * Iterate the references of global variables.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateGlobalReferences(traceMap) {\n for (const key of Object.keys(traceMap)) {\n const nextTraceMap = traceMap[key]\n const path = [key]\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n nextTraceMap,\n true,\n )\n }\n\n for (const key of this.globalObjectNames) {\n const path = []\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n }\n\n /**\n * Iterate the references of CommonJS modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateCjsReferences(traceMap) {\n for (const { node } of this.iterateGlobalReferences(requireCall)) {\n const key = getStringIfConstant(node.arguments[0])\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextTraceMap = traceMap[key]\n const path = [key]\n\n if (nextTraceMap[READ]) {\n yield {\n node,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(node, path, nextTraceMap)\n }\n }\n\n /**\n * Iterate the references of ES modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateEsmReferences(traceMap) {\n const programNode = this.globalScope.block\n\n for (const node of programNode.body) {\n if (!IMPORT_TYPE.test(node.type) || node.source == null) {\n continue\n }\n const moduleId = node.source.value\n\n if (!has(traceMap, moduleId)) {\n continue\n }\n const nextTraceMap = traceMap[moduleId]\n const path = [moduleId]\n\n if (nextTraceMap[READ]) {\n yield { node, path, type: READ, info: nextTraceMap[READ] }\n }\n\n if (node.type === \"ExportAllDeclaration\") {\n for (const key of Object.keys(nextTraceMap)) {\n const exportTraceMap = nextTraceMap[key]\n if (exportTraceMap[READ]) {\n yield {\n node,\n path: path.concat(key),\n type: READ,\n info: exportTraceMap[READ],\n }\n }\n }\n } else {\n for (const specifier of node.specifiers) {\n const esm = has(nextTraceMap, ESM)\n const it = this._iterateImportReferences(\n specifier,\n path,\n esm\n ? nextTraceMap\n : this.mode === \"legacy\"\n ? { default: nextTraceMap, ...nextTraceMap }\n : { default: nextTraceMap },\n )\n\n if (esm) {\n yield* it\n } else {\n for (const report of it) {\n report.path = report.path.filter(exceptDefault)\n if (\n report.path.length >= 2 ||\n report.type !== READ\n ) {\n yield report\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Iterate the references for a given variable.\n * @param {Variable} variable The variable to iterate that references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @param {boolean} shouldReport = The flag to report those references.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateVariableReferences(variable, path, traceMap, shouldReport) {\n if (this.variableStack.includes(variable)) {\n return\n }\n this.variableStack.push(variable)\n try {\n for (const reference of variable.references) {\n if (!reference.isRead()) {\n continue\n }\n const node = reference.identifier\n\n if (shouldReport && traceMap[READ]) {\n yield { node, path, type: READ, info: traceMap[READ] }\n }\n yield* this._iteratePropertyReferences(node, path, traceMap)\n }\n } finally {\n this.variableStack.pop()\n }\n }\n\n /**\n * Iterate the references for a given AST node.\n * @param rootNode The AST node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n //eslint-disable-next-line complexity\n *_iteratePropertyReferences(rootNode, path, traceMap) {\n let node = rootNode\n while (isPassThrough(node)) {\n node = node.parent\n }\n\n const parent = node.parent\n if (parent.type === \"MemberExpression\") {\n if (parent.object === node) {\n const key = getPropertyName(parent)\n if (key == null || !has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: parent,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(\n parent,\n path,\n nextTraceMap,\n )\n }\n return\n }\n if (parent.type === \"CallExpression\") {\n if (parent.callee === node && traceMap[CALL]) {\n yield { node: parent, path, type: CALL, info: traceMap[CALL] }\n }\n return\n }\n if (parent.type === \"NewExpression\") {\n if (parent.callee === node && traceMap[CONSTRUCT]) {\n yield {\n node: parent,\n path,\n type: CONSTRUCT,\n info: traceMap[CONSTRUCT],\n }\n }\n return\n }\n if (parent.type === \"AssignmentExpression\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n yield* this._iteratePropertyReferences(parent, path, traceMap)\n }\n return\n }\n if (parent.type === \"AssignmentPattern\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n }\n return\n }\n if (parent.type === \"VariableDeclarator\") {\n if (parent.init === node) {\n yield* this._iterateLhsReferences(parent.id, path, traceMap)\n }\n }\n }\n\n /**\n * Iterate the references for a given Pattern node.\n * @param {Node} patternNode The Pattern node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateLhsReferences(patternNode, path, traceMap) {\n if (patternNode.type === \"Identifier\") {\n const variable = findVariable(this.globalScope, patternNode)\n if (variable != null) {\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n return\n }\n if (patternNode.type === \"ObjectPattern\") {\n for (const property of patternNode.properties) {\n const key = getPropertyName(property)\n\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextPath = path.concat(key)\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: property,\n path: nextPath,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateLhsReferences(\n property.value,\n nextPath,\n nextTraceMap,\n )\n }\n return\n }\n if (patternNode.type === \"AssignmentPattern\") {\n yield* this._iterateLhsReferences(patternNode.left, path, traceMap)\n }\n }\n\n /**\n * Iterate the references for a given ModuleSpecifier node.\n * @param {Node} specifierNode The ModuleSpecifier node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateImportReferences(specifierNode, path, traceMap) {\n const type = specifierNode.type\n\n if (type === \"ImportSpecifier\" || type === \"ImportDefaultSpecifier\") {\n const key =\n type === \"ImportDefaultSpecifier\"\n ? \"default\"\n : specifierNode.imported.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n nextTraceMap,\n false,\n )\n\n return\n }\n\n if (type === \"ImportNamespaceSpecifier\") {\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n traceMap,\n false,\n )\n return\n }\n\n if (type === \"ExportSpecifier\") {\n const key = specifierNode.local.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n }\n }\n}\n\nReferenceTracker.READ = READ\nReferenceTracker.CALL = CALL\nReferenceTracker.CONSTRUCT = CONSTRUCT\nReferenceTracker.ESM = ESM\n\n/**\n * This is a predicate function for Array#filter.\n * @param {string} name A name part.\n * @param {number} index The index of the name.\n * @returns {boolean} `false` if it's default.\n */\nfunction exceptDefault(name, index) {\n return !(index === 1 && name === \"default\")\n}\n","import { findVariable } from \"./find-variable.mjs\"\nimport { getFunctionHeadLocation } from \"./get-function-head-location.mjs\"\nimport { getFunctionNameWithKind } from \"./get-function-name-with-kind.mjs\"\nimport { getInnermostScope } from \"./get-innermost-scope.mjs\"\nimport { getPropertyName } from \"./get-property-name.mjs\"\nimport { getStaticValue } from \"./get-static-value.mjs\"\nimport { getStringIfConstant } from \"./get-string-if-constant.mjs\"\nimport { hasSideEffect } from \"./has-side-effect.mjs\"\nimport { isParenthesized } from \"./is-parenthesized.mjs\"\nimport { PatternMatcher } from \"./pattern-matcher.mjs\"\nimport {\n CALL,\n CONSTRUCT,\n ESM,\n READ,\n ReferenceTracker,\n} from \"./reference-tracker.mjs\"\nimport {\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isSemicolonToken,\n} from \"./token-predicate.mjs\"\n\nexport default {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\nexport {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@eslint-community/eslint-utils/package.json b/node_modules/@eslint-community/eslint-utils/package.json
new file mode 100644
index 0000000..c4ee587
--- /dev/null
+++ b/node_modules/@eslint-community/eslint-utils/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "@eslint-community/eslint-utils",
+ "version": "4.4.0",
+ "description": "Utilities for ESLint plugins.",
+ "keywords": [
+ "eslint"
+ ],
+ "homepage": "https://github.com/eslint-community/eslint-utils#readme",
+ "bugs": {
+ "url": "https://github.com/eslint-community/eslint-utils/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/eslint-community/eslint-utils"
+ },
+ "license": "MIT",
+ "author": "Toru Nagashima",
+ "sideEffects": false,
+ "exports": {
+ ".": {
+ "import": "./index.mjs",
+ "require": "./index.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "main": "index",
+ "module": "index.mjs",
+ "files": [
+ "index.*"
+ ],
+ "scripts": {
+ "prebuild": "npm run -s clean",
+ "build": "rollup -c",
+ "clean": "rimraf .nyc_output coverage index.*",
+ "coverage": "opener ./coverage/lcov-report/index.html",
+ "docs:build": "vitepress build docs",
+ "docs:watch": "vitepress dev docs",
+ "format": "npm run -s format:prettier -- --write",
+ "format:prettier": "prettier .",
+ "format:check": "npm run -s format:prettier -- --check",
+ "lint": "eslint .",
+ "test": "c8 mocha --reporter dot \"test/*.mjs\"",
+ "preversion": "npm test && npm run -s build",
+ "postversion": "git push && git push --tags",
+ "prewatch": "npm run -s clean",
+ "watch": "warun \"{src,test}/**/*.mjs\" -- npm run -s test:mocha"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "devDependencies": {
+ "@eslint-community/eslint-plugin-mysticatea": "^15.2.0",
+ "c8": "^7.12.0",
+ "dot-prop": "^6.0.1",
+ "eslint": "^8.28.0",
+ "mocha": "^9.2.2",
+ "npm-run-all": "^4.1.5",
+ "opener": "^1.5.2",
+ "prettier": "2.8.4",
+ "rimraf": "^3.0.2",
+ "rollup": "^2.79.1",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "semver": "^7.3.8",
+ "vitepress": "^1.0.0-alpha.40",
+ "warun": "^1.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+}
diff --git a/node_modules/@eslint-community/regexpp/LICENSE b/node_modules/@eslint-community/regexpp/LICENSE
new file mode 100644
index 0000000..883ee1f
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Toru Nagashima
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@eslint-community/regexpp/README.md b/node_modules/@eslint-community/regexpp/README.md
new file mode 100644
index 0000000..9728af5
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/README.md
@@ -0,0 +1,177 @@
+# @eslint-community/regexpp
+
+[![npm version](https://img.shields.io/npm/v/@eslint-community/regexpp.svg)](https://www.npmjs.com/package/@eslint-community/regexpp)
+[![Downloads/month](https://img.shields.io/npm/dm/@eslint-community/regexpp.svg)](http://www.npmtrends.com/@eslint-community/regexpp)
+[![Build Status](https://github.com/eslint-community/regexpp/workflows/CI/badge.svg)](https://github.com/eslint-community/regexpp/actions)
+[![codecov](https://codecov.io/gh/eslint-community/regexpp/branch/main/graph/badge.svg)](https://codecov.io/gh/eslint-community/regexpp)
+
+A regular expression parser for ECMAScript.
+
+## 💿 Installation
+
+```bash
+$ npm install @eslint-community/regexpp
+```
+
+- require Node@^12.0.0 || ^14.0.0 || >=16.0.0.
+
+## 📖 Usage
+
+```ts
+import {
+ AST,
+ RegExpParser,
+ RegExpValidator,
+ RegExpVisitor,
+ parseRegExpLiteral,
+ validateRegExpLiteral,
+ visitRegExpAST
+} from "@eslint-community/regexpp"
+```
+
+### parseRegExpLiteral(source, options?)
+
+Parse a given regular expression literal then make AST object.
+
+This is equivalent to `new RegExpParser(options).parseLiteral(source)`.
+
+- **Parameters:**
+ - `source` (`string | RegExp`) The source code to parse.
+ - `options?` ([`RegExpParser.Options`]) The options to parse.
+- **Return:**
+ - The AST of the regular expression.
+
+### validateRegExpLiteral(source, options?)
+
+Validate a given regular expression literal.
+
+This is equivalent to `new RegExpValidator(options).validateLiteral(source)`.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `options?` ([`RegExpValidator.Options`]) The options to validate.
+
+### visitRegExpAST(ast, handlers)
+
+Visit each node of a given AST.
+
+This is equivalent to `new RegExpVisitor(handlers).visit(ast)`.
+
+- **Parameters:**
+ - `ast` ([`AST.Node`]) The AST to visit.
+ - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks.
+
+### RegExpParser
+
+#### new RegExpParser(options?)
+
+- **Parameters:**
+ - `options?` ([`RegExpParser.Options`]) The options to parse.
+
+#### parser.parseLiteral(source, start?, end?)
+
+Parse a regular expression literal.
+
+- **Parameters:**
+ - `source` (`string`) The source code to parse. E.g. `"/abc/g"`.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+- **Return:**
+ - The AST of the regular expression.
+
+#### parser.parsePattern(source, start?, end?, flags?)
+
+Parse a regular expression pattern.
+
+- **Parameters:**
+ - `source` (`string`) The source code to parse. E.g. `"abc"`.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+ - `flags?` (`{ unicode?: boolean, unicodeSets?: boolean }`) The flags to enable Unicode mode, and Unicode Set mode.
+- **Return:**
+ - The AST of the regular expression pattern.
+
+#### parser.parseFlags(source, start?, end?)
+
+Parse a regular expression flags.
+
+- **Parameters:**
+ - `source` (`string`) The source code to parse. E.g. `"gim"`.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+- **Return:**
+ - The AST of the regular expression flags.
+
+### RegExpValidator
+
+#### new RegExpValidator(options)
+
+- **Parameters:**
+ - `options` ([`RegExpValidator.Options`]) The options to validate.
+
+#### validator.validateLiteral(source, start, end)
+
+Validate a regular expression literal.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+
+#### validator.validatePattern(source, start, end, flags)
+
+Validate a regular expression pattern.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+ - `flags?` (`{ unicode?: boolean, unicodeSets?: boolean }`) The flags to enable Unicode mode, and Unicode Set mode.
+
+#### validator.validateFlags(source, start, end)
+
+Validate a regular expression flags.
+
+- **Parameters:**
+ - `source` (`string`) The source code to validate.
+ - `start?` (`number`) The start index in the source code. Default is `0`.
+ - `end?` (`number`) The end index in the source code. Default is `source.length`.
+
+### RegExpVisitor
+
+#### new RegExpVisitor(handlers)
+
+- **Parameters:**
+ - `handlers` ([`RegExpVisitor.Handlers`]) The callbacks.
+
+#### visitor.visit(ast)
+
+Validate a regular expression literal.
+
+- **Parameters:**
+ - `ast` ([`AST.Node`]) The AST to visit.
+
+## 📰 Changelog
+
+- [GitHub Releases](https://github.com/eslint-community/regexpp/releases)
+
+## 🍻 Contributing
+
+Welcome contributing!
+
+Please use GitHub's Issues/PRs.
+
+### Development Tools
+
+- `npm test` runs tests and measures coverage.
+- `npm run build` compiles TypeScript source code to `index.js`, `index.js.map`, and `index.d.ts`.
+- `npm run clean` removes the temporary files which are created by `npm test` and `npm run build`.
+- `npm run lint` runs ESLint.
+- `npm run update:test` updates test fixtures.
+- `npm run update:ids` updates `src/unicode/ids.ts`.
+- `npm run watch` runs tests with `--watch` option.
+
+[`AST.Node`]: src/ast.ts#L4
+[`RegExpParser.Options`]: src/parser.ts#L743
+[`RegExpValidator.Options`]: src/validator.ts#L220
+[`RegExpVisitor.Handlers`]: src/visitor.ts#L291
diff --git a/node_modules/@eslint-community/regexpp/index.d.ts b/node_modules/@eslint-community/regexpp/index.d.ts
new file mode 100644
index 0000000..d553b10
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/index.d.ts
@@ -0,0 +1,1065 @@
+// Generated by dts-bundle v0.7.3
+
+declare module "@eslint-community/regexpp" {
+ import * as AST from "@eslint-community/regexpp/ast";
+ import { RegExpParser } from "@eslint-community/regexpp/parser";
+ import { RegExpValidator } from "@eslint-community/regexpp/validator";
+ import { RegExpVisitor } from "@eslint-community/regexpp/visitor";
+ export { RegExpSyntaxError } from "@eslint-community/regexpp/regexp-syntax-error";
+ export { AST, RegExpParser, RegExpValidator };
+ /**
+ * Parse a given regular expression literal then make AST object.
+ * @param source The source code to parse.
+ * @param options The options to parse.
+ * @returns The AST of the regular expression.
+ */
+ export function parseRegExpLiteral(
+ source: RegExp | string,
+ options?: RegExpParser.Options
+ ): AST.RegExpLiteral;
+ /**
+ * Validate a given regular expression literal.
+ * @param source The source code to validate.
+ * @param options The options to validate.
+ */
+ export function validateRegExpLiteral(
+ source: string,
+ options?: RegExpValidator.Options
+ ): void;
+ export function visitRegExpAST(
+ node: AST.Node,
+ handlers: RegExpVisitor.Handlers
+ ): void;
+}
+
+declare module "@eslint-community/regexpp/ast" {
+ /**
+ * The type which includes all nodes.
+ */
+ export type Node = BranchNode | LeafNode;
+ /**
+ * The type which includes all branch nodes.
+ */
+ export type BranchNode =
+ | Alternative
+ | CapturingGroup
+ | CharacterClass
+ | CharacterClassRange
+ | ClassIntersection
+ | ClassStringDisjunction
+ | ClassSubtraction
+ | ExpressionCharacterClass
+ | Group
+ | LookaroundAssertion
+ | Pattern
+ | Quantifier
+ | RegExpLiteral
+ | StringAlternative;
+ /**
+ * The type which includes all leaf nodes.
+ */
+ export type LeafNode =
+ | Backreference
+ | BoundaryAssertion
+ | Character
+ | CharacterSet
+ | Flags;
+ /**
+ * The type which includes all atom nodes.
+ */
+ export type Element = Assertion | QuantifiableElement | Quantifier;
+ /**
+ * The type which includes all atom nodes that Quantifier node can have as children.
+ */
+ export type QuantifiableElement =
+ | Backreference
+ | CapturingGroup
+ | Character
+ | CharacterClass
+ | CharacterSet
+ | ExpressionCharacterClass
+ | Group
+ | LookaheadAssertion;
+ /**
+ * The type which includes all character class atom nodes.
+ */
+ export type CharacterClassElement =
+ | ClassRangesCharacterClassElement
+ | UnicodeSetsCharacterClassElement;
+ export type ClassRangesCharacterClassElement =
+ | Character
+ | CharacterClassRange
+ | CharacterUnicodePropertyCharacterSet
+ | EscapeCharacterSet;
+ export type UnicodeSetsCharacterClassElement =
+ | Character
+ | CharacterClassRange
+ | ClassStringDisjunction
+ | EscapeCharacterSet
+ | ExpressionCharacterClass
+ | UnicodePropertyCharacterSet
+ | UnicodeSetsCharacterClass;
+ /**
+ * The type which defines common properties for all node types.
+ */
+ export interface NodeBase {
+ /** The node type. */
+ type: Node["type"];
+ /** The parent node. */
+ parent: Node["parent"];
+ /** The 0-based index that this node starts. */
+ start: number;
+ /** The 0-based index that this node ends. */
+ end: number;
+ /** The raw text of this node. */
+ raw: string;
+ }
+ /**
+ * The root node.
+ */
+ export interface RegExpLiteral extends NodeBase {
+ type: "RegExpLiteral";
+ parent: null;
+ pattern: Pattern;
+ flags: Flags;
+ }
+ /**
+ * The pattern.
+ */
+ export interface Pattern extends NodeBase {
+ type: "Pattern";
+ parent: RegExpLiteral | null;
+ alternatives: Alternative[];
+ }
+ /**
+ * The alternative.
+ * E.g. `a|b`
+ */
+ export interface Alternative extends NodeBase {
+ type: "Alternative";
+ parent: CapturingGroup | Group | LookaroundAssertion | Pattern;
+ elements: Element[];
+ }
+ /**
+ * The uncapturing group.
+ * E.g. `(?:ab)`
+ */
+ export interface Group extends NodeBase {
+ type: "Group";
+ parent: Alternative | Quantifier;
+ alternatives: Alternative[];
+ }
+ /**
+ * The capturing group.
+ * E.g. `(ab)`, `(?ab)`
+ */
+ export interface CapturingGroup extends NodeBase {
+ type: "CapturingGroup";
+ parent: Alternative | Quantifier;
+ name: string | null;
+ alternatives: Alternative[];
+ references: Backreference[];
+ }
+ /**
+ * The lookaround assertion.
+ */
+ export type LookaroundAssertion = LookaheadAssertion | LookbehindAssertion;
+ /**
+ * The lookahead assertion.
+ * E.g. `(?=ab)`, `(?!ab)`
+ */
+ export interface LookaheadAssertion extends NodeBase {
+ type: "Assertion";
+ parent: Alternative | Quantifier;
+ kind: "lookahead";
+ negate: boolean;
+ alternatives: Alternative[];
+ }
+ /**
+ * The lookbehind assertion.
+ * E.g. `(?<=ab)`, `(?`
+ */
+ export interface Backreference extends NodeBase {
+ type: "Backreference";
+ parent: Alternative | Quantifier;
+ ref: number | string;
+ resolved: CapturingGroup;
+ }
+ /**
+ * The flags.
+ */
+ export interface Flags extends NodeBase {
+ type: "Flags";
+ parent: RegExpLiteral | null;
+ dotAll: boolean;
+ global: boolean;
+ hasIndices: boolean;
+ ignoreCase: boolean;
+ multiline: boolean;
+ sticky: boolean;
+ unicode: boolean;
+ unicodeSets: boolean;
+ }
+ export {};
+}
+
+declare module "@eslint-community/regexpp/parser" {
+ import type {
+ Flags,
+ RegExpLiteral,
+ Pattern,
+ } from "@eslint-community/regexpp/ast";
+ import type { EcmaVersion } from "@eslint-community/regexpp/ecma-versions";
+ export namespace RegExpParser {
+ /**
+ * The options for RegExpParser construction.
+ */
+ interface Options {
+ /**
+ * The flag to disable Annex B syntax. Default is `false`.
+ */
+ strict?: boolean;
+ /**
+ * ECMAScript version. Default is `2024`.
+ * - `2015` added `u` and `y` flags.
+ * - `2018` added `s` flag, Named Capturing Group, Lookbehind Assertion,
+ * and Unicode Property Escape.
+ * - `2019`, `2020`, and `2021` added more valid Unicode Property Escapes.
+ * - `2022` added `d` flag.
+ * - `2023` added more valid Unicode Property Escapes.
+ * - `2024` added `v` flag.
+ */
+ ecmaVersion?: EcmaVersion;
+ }
+ }
+ export class RegExpParser {
+ /**
+ * Initialize this parser.
+ * @param options The options of parser.
+ */
+ constructor(options?: RegExpParser.Options);
+ /**
+ * Parse a regular expression literal. E.g. "/abc/g"
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @returns The AST of the given regular expression.
+ */
+ parseLiteral(source: string, start?: number, end?: number): RegExpLiteral;
+ /**
+ * Parse a regular expression flags. E.g. "gim"
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @returns The AST of the given flags.
+ */
+ parseFlags(source: string, start?: number, end?: number): Flags;
+ /**
+ * Parse a regular expression pattern. E.g. "abc"
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param flags The flags.
+ * @returns The AST of the given pattern.
+ */
+ parsePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ flags?: {
+ unicode?: boolean;
+ unicodeSets?: boolean;
+ }
+ ): Pattern;
+ /**
+ * @deprecated Backward compatibility
+ * Use object `flags` instead of boolean `uFlag`.
+ *
+ * @param source The source code to parse.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param uFlag The flag to set unicode mode.
+ * @returns The AST of the given pattern.
+ */
+ parsePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ uFlag?: boolean
+ ): Pattern;
+ }
+}
+
+declare module "@eslint-community/regexpp/validator" {
+ import type { EcmaVersion } from "@eslint-community/regexpp/ecma-versions";
+ export type RegExpValidatorSourceContext = {
+ readonly source: string;
+ readonly start: number;
+ readonly end: number;
+ readonly kind: "flags" | "literal" | "pattern";
+ };
+ export namespace RegExpValidator {
+ /**
+ * The options for RegExpValidator construction.
+ */
+ interface Options {
+ /**
+ * The flag to disable Annex B syntax. Default is `false`.
+ */
+ strict?: boolean;
+ /**
+ * ECMAScript version. Default is `2024`.
+ * - `2015` added `u` and `y` flags.
+ * - `2018` added `s` flag, Named Capturing Group, Lookbehind Assertion,
+ * and Unicode Property Escape.
+ * - `2019`, `2020`, and `2021` added more valid Unicode Property Escapes.
+ * - `2022` added `d` flag.
+ * - `2023` added more valid Unicode Property Escapes.
+ * - `2024` added `v` flag.
+ */
+ ecmaVersion?: EcmaVersion;
+ /**
+ * A function that is called when the validator entered a RegExp literal.
+ * @param start The 0-based index of the first character.
+ */
+ onLiteralEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a RegExp literal.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onLiteralLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator found flags.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param flags.global `g` flag.
+ * @param flags.ignoreCase `i` flag.
+ * @param flags.multiline `m` flag.
+ * @param flags.unicode `u` flag.
+ * @param flags.sticky `y` flag.
+ * @param flags.dotAll `s` flag.
+ * @param flags.hasIndices `d` flag.
+ * @param flags.unicodeSets `v` flag.
+ */
+ onRegExpFlags?: (
+ start: number,
+ end: number,
+ flags: {
+ global: boolean;
+ ignoreCase: boolean;
+ multiline: boolean;
+ unicode: boolean;
+ sticky: boolean;
+ dotAll: boolean;
+ hasIndices: boolean;
+ unicodeSets: boolean;
+ }
+ ) => void;
+ /**
+ * A function that is called when the validator found flags.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param global `g` flag.
+ * @param ignoreCase `i` flag.
+ * @param multiline `m` flag.
+ * @param unicode `u` flag.
+ * @param sticky `y` flag.
+ * @param dotAll `s` flag.
+ * @param hasIndices `d` flag.
+ *
+ * @deprecated Use `onRegExpFlags` instead.
+ */
+ onFlags?: (
+ start: number,
+ end: number,
+ global: boolean,
+ ignoreCase: boolean,
+ multiline: boolean,
+ unicode: boolean,
+ sticky: boolean,
+ dotAll: boolean,
+ hasIndices: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator entered a pattern.
+ * @param start The 0-based index of the first character.
+ */
+ onPatternEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a pattern.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onPatternLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a disjunction.
+ * @param start The 0-based index of the first character.
+ */
+ onDisjunctionEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a disjunction.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onDisjunctionLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered an alternative.
+ * @param start The 0-based index of the first character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onAlternativeEnter?: (start: number, index: number) => void;
+ /**
+ * A function that is called when the validator left an alternative.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onAlternativeLeave?: (start: number, end: number, index: number) => void;
+ /**
+ * A function that is called when the validator entered an uncapturing group.
+ * @param start The 0-based index of the first character.
+ */
+ onGroupEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left an uncapturing group.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onGroupLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a capturing group.
+ * @param start The 0-based index of the first character.
+ * @param name The group name.
+ */
+ onCapturingGroupEnter?: (start: number, name: string | null) => void;
+ /**
+ * A function that is called when the validator left a capturing group.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param name The group name.
+ */
+ onCapturingGroupLeave?: (
+ start: number,
+ end: number,
+ name: string | null
+ ) => void;
+ /**
+ * A function that is called when the validator found a quantifier.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param min The minimum number of repeating.
+ * @param max The maximum number of repeating.
+ * @param greedy The flag to choose the longest matching.
+ */
+ onQuantifier?: (
+ start: number,
+ end: number,
+ min: number,
+ max: number,
+ greedy: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator entered a lookahead/lookbehind assertion.
+ * @param start The 0-based index of the first character.
+ * @param kind The kind of the assertion.
+ * @param negate The flag which represents that the assertion is negative.
+ */
+ onLookaroundAssertionEnter?: (
+ start: number,
+ kind: "lookahead" | "lookbehind",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator left a lookahead/lookbehind assertion.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the assertion.
+ * @param negate The flag which represents that the assertion is negative.
+ */
+ onLookaroundAssertionLeave?: (
+ start: number,
+ end: number,
+ kind: "lookahead" | "lookbehind",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found an edge boundary assertion.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the assertion.
+ */
+ onEdgeAssertion?: (
+ start: number,
+ end: number,
+ kind: "end" | "start"
+ ) => void;
+ /**
+ * A function that is called when the validator found a word boundary assertion.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the assertion.
+ * @param negate The flag which represents that the assertion is negative.
+ */
+ onWordBoundaryAssertion?: (
+ start: number,
+ end: number,
+ kind: "word",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a dot.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the character set.
+ */
+ onAnyCharacterSet?: (start: number, end: number, kind: "any") => void;
+ /**
+ * A function that is called when the validator found a character set escape.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the character set.
+ * @param negate The flag which represents that the character set is negative.
+ */
+ onEscapeCharacterSet?: (
+ start: number,
+ end: number,
+ kind: "digit" | "space" | "word",
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a Unicode proerty escape.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param kind The kind of the character set.
+ * @param key The property name.
+ * @param value The property value.
+ * @param negate The flag which represents that the character set is negative.
+ * @param strings If true, the given property is property of strings.
+ */
+ onUnicodePropertyCharacterSet?: (
+ start: number,
+ end: number,
+ kind: "property",
+ key: string,
+ value: string | null,
+ negate: boolean,
+ strings: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a character.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param value The code point of the character.
+ */
+ onCharacter?: (start: number, end: number, value: number) => void;
+ /**
+ * A function that is called when the validator found a backreference.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param ref The key of the referred capturing group.
+ */
+ onBackreference?: (
+ start: number,
+ end: number,
+ ref: number | string
+ ) => void;
+ /**
+ * A function that is called when the validator entered a character class.
+ * @param start The 0-based index of the first character.
+ * @param negate The flag which represents that the character class is negative.
+ * @param unicodeSets `true` if unicodeSets mode.
+ */
+ onCharacterClassEnter?: (
+ start: number,
+ negate: boolean,
+ unicodeSets: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator left a character class.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param negate The flag which represents that the character class is negative.
+ */
+ onCharacterClassLeave?: (
+ start: number,
+ end: number,
+ negate: boolean
+ ) => void;
+ /**
+ * A function that is called when the validator found a character class range.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param min The minimum code point of the range.
+ * @param max The maximum code point of the range.
+ */
+ onCharacterClassRange?: (
+ start: number,
+ end: number,
+ min: number,
+ max: number
+ ) => void;
+ /**
+ * A function that is called when the validator found a class intersection.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onClassIntersection?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator found a class subtraction.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onClassSubtraction?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a class string disjunction.
+ * @param start The 0-based index of the first character.
+ */
+ onClassStringDisjunctionEnter?: (start: number) => void;
+ /**
+ * A function that is called when the validator left a class string disjunction.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ */
+ onClassStringDisjunctionLeave?: (start: number, end: number) => void;
+ /**
+ * A function that is called when the validator entered a string alternative.
+ * @param start The 0-based index of the first character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onStringAlternativeEnter?: (start: number, index: number) => void;
+ /**
+ * A function that is called when the validator left a string alternative.
+ * @param start The 0-based index of the first character.
+ * @param end The next 0-based index of the last character.
+ * @param index The 0-based index of alternatives in a disjunction.
+ */
+ onStringAlternativeLeave?: (
+ start: number,
+ end: number,
+ index: number
+ ) => void;
+ }
+ }
+ /**
+ * The regular expression validator.
+ */
+ export class RegExpValidator {
+ /**
+ * Initialize this validator.
+ * @param options The options of validator.
+ */
+ constructor(options?: RegExpValidator.Options);
+ /**
+ * Validate a regular expression literal. E.g. "/abc/g"
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ */
+ validateLiteral(source: string, start?: number, end?: number): void;
+ /**
+ * Validate a regular expression flags. E.g. "gim"
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ */
+ validateFlags(source: string, start?: number, end?: number): void;
+ /**
+ * Validate a regular expression pattern. E.g. "abc"
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param flags The flags.
+ */
+ validatePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ flags?: {
+ unicode?: boolean;
+ unicodeSets?: boolean;
+ }
+ ): void;
+ /**
+ * @deprecated Backward compatibility
+ * Use object `flags` instead of boolean `uFlag`.
+ * @param source The source code to validate.
+ * @param start The start index in the source code.
+ * @param end The end index in the source code.
+ * @param uFlag The flag to set unicode mode.
+ */
+ validatePattern(
+ source: string,
+ start?: number,
+ end?: number,
+ uFlag?: boolean
+ ): void;
+ }
+}
+
+declare module "@eslint-community/regexpp/visitor" {
+ import type {
+ Alternative,
+ Assertion,
+ Backreference,
+ CapturingGroup,
+ Character,
+ CharacterClass,
+ CharacterClassRange,
+ CharacterSet,
+ ClassIntersection,
+ ClassStringDisjunction,
+ ClassSubtraction,
+ ExpressionCharacterClass,
+ Flags,
+ Group,
+ Node,
+ Pattern,
+ Quantifier,
+ RegExpLiteral,
+ StringAlternative,
+ } from "@eslint-community/regexpp/ast";
+ /**
+ * The visitor to walk on AST.
+ */
+ export class RegExpVisitor {
+ /**
+ * Initialize this visitor.
+ * @param handlers Callbacks for each node.
+ */
+ constructor(handlers: RegExpVisitor.Handlers);
+ /**
+ * Visit a given node and descendant nodes.
+ * @param node The root node to visit tree.
+ */
+ visit(node: Node): void;
+ }
+ export namespace RegExpVisitor {
+ interface Handlers {
+ onAlternativeEnter?: (node: Alternative) => void;
+ onAlternativeLeave?: (node: Alternative) => void;
+ onAssertionEnter?: (node: Assertion) => void;
+ onAssertionLeave?: (node: Assertion) => void;
+ onBackreferenceEnter?: (node: Backreference) => void;
+ onBackreferenceLeave?: (node: Backreference) => void;
+ onCapturingGroupEnter?: (node: CapturingGroup) => void;
+ onCapturingGroupLeave?: (node: CapturingGroup) => void;
+ onCharacterEnter?: (node: Character) => void;
+ onCharacterLeave?: (node: Character) => void;
+ onCharacterClassEnter?: (node: CharacterClass) => void;
+ onCharacterClassLeave?: (node: CharacterClass) => void;
+ onCharacterClassRangeEnter?: (node: CharacterClassRange) => void;
+ onCharacterClassRangeLeave?: (node: CharacterClassRange) => void;
+ onCharacterSetEnter?: (node: CharacterSet) => void;
+ onCharacterSetLeave?: (node: CharacterSet) => void;
+ onClassIntersectionEnter?: (node: ClassIntersection) => void;
+ onClassIntersectionLeave?: (node: ClassIntersection) => void;
+ onClassStringDisjunctionEnter?: (node: ClassStringDisjunction) => void;
+ onClassStringDisjunctionLeave?: (node: ClassStringDisjunction) => void;
+ onClassSubtractionEnter?: (node: ClassSubtraction) => void;
+ onClassSubtractionLeave?: (node: ClassSubtraction) => void;
+ onExpressionCharacterClassEnter?: (
+ node: ExpressionCharacterClass
+ ) => void;
+ onExpressionCharacterClassLeave?: (
+ node: ExpressionCharacterClass
+ ) => void;
+ onFlagsEnter?: (node: Flags) => void;
+ onFlagsLeave?: (node: Flags) => void;
+ onGroupEnter?: (node: Group) => void;
+ onGroupLeave?: (node: Group) => void;
+ onPatternEnter?: (node: Pattern) => void;
+ onPatternLeave?: (node: Pattern) => void;
+ onQuantifierEnter?: (node: Quantifier) => void;
+ onQuantifierLeave?: (node: Quantifier) => void;
+ onRegExpLiteralEnter?: (node: RegExpLiteral) => void;
+ onRegExpLiteralLeave?: (node: RegExpLiteral) => void;
+ onStringAlternativeEnter?: (node: StringAlternative) => void;
+ onStringAlternativeLeave?: (node: StringAlternative) => void;
+ }
+ }
+}
+
+declare module "@eslint-community/regexpp/regexp-syntax-error" {
+ import type { RegExpValidatorSourceContext } from "@eslint-community/regexpp/validator";
+ export class RegExpSyntaxError extends SyntaxError {
+ index: number;
+ constructor(message: string, index: number);
+ }
+ export function newRegExpSyntaxError(
+ srcCtx: RegExpValidatorSourceContext,
+ flags: {
+ unicode: boolean;
+ unicodeSets: boolean;
+ },
+ index: number,
+ message: string
+ ): RegExpSyntaxError;
+}
+
+declare module "@eslint-community/regexpp/ecma-versions" {
+ export type EcmaVersion =
+ | 5
+ | 2015
+ | 2016
+ | 2017
+ | 2018
+ | 2019
+ | 2020
+ | 2021
+ | 2022
+ | 2023
+ | 2024;
+ export const latestEcmaVersion = 2024;
+}
diff --git a/node_modules/@eslint-community/regexpp/index.js b/node_modules/@eslint-community/regexpp/index.js
new file mode 100644
index 0000000..545dc08
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/index.js
@@ -0,0 +1,2747 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var ast = /*#__PURE__*/Object.freeze({
+ __proto__: null
+});
+
+const latestEcmaVersion = 2024;
+
+let largeIdStartRanges = undefined;
+let largeIdContinueRanges = undefined;
+function isIdStart(cp) {
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp);
+}
+function isIdContinue(cp) {
+ if (cp < 0x30)
+ return false;
+ if (cp < 0x3a)
+ return true;
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp === 0x5f)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp) || isLargeIdContinue(cp);
+}
+function isLargeIdStart(cp) {
+ return isInRange(cp, largeIdStartRanges !== null && largeIdStartRanges !== void 0 ? largeIdStartRanges : (largeIdStartRanges = initLargeIdStartRanges()));
+}
+function isLargeIdContinue(cp) {
+ return isInRange(cp, largeIdContinueRanges !== null && largeIdContinueRanges !== void 0 ? largeIdContinueRanges : (largeIdContinueRanges = initLargeIdContinueRanges()));
+}
+function initLargeIdStartRanges() {
+ return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 6 n 2 5 i 15 1n 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 3 0 3 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 w 1 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 h e i f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 7 1j t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 6c 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t h3g 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1r 6 1 2 0 2 4 p f 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f d a 2 e 2 6 2 1 2 a 2 e 2 6 2 1 1w 8m a l b 7 p 5 2 15 2 8 1y 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 17 h 1b k s m d 1g 1m 1 3 0 e 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o k 1 1s 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 12 6 56 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 j 20 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i g 0 2 c 2 x 3h 0 28 pl 2v 32 i 5f 219 2o g tr i 5 33u g6 6nu fs 8 u i 26 i t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6w8 3 2 6 2 1 2 82 g 0 u 2 3 0 f 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1f9 u 7 5 7a 1p 43 18 b 6 h 0 8y t j 17 dh r l1 6 2 3 2 1 2 e 2 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyn x 37d 7 65 3 4g1 f 5rk g h9 1wj f1 15v 3t6 6 38f");
+}
+function initLargeIdContinueRanges() {
+ return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 1p 7 17 n 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1k 0 2 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 4 0 d 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 6 2 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 3 t 2 u 1 v 1 1t v a 0 3 9 y 2 2 a 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 f 1e 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1r el 1 1e 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 2p 0 n51 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 12 0 ig 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 29 2 1z a 1e 3 3f 2 1i e w a 3 1 b 3 1a a 8 0 1a 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 3 0 4e b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 a 1 2 0 1d 6 4 4 e 9 44n 0 7 e aob 9 2f 9 13 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 3mq 19 3 m f3 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 2t 0 4h 6 a 9 9x 0 1q d dv d rb 6 32 6 6 9 3o7 9 gvt3 6n");
+}
+function isInRange(cp, ranges) {
+ let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0;
+ while (l < r) {
+ i = ((l + r) / 2) | 0;
+ min = ranges[2 * i];
+ max = ranges[2 * i + 1];
+ if (cp < min) {
+ r = i;
+ }
+ else if (cp > max) {
+ l = i + 1;
+ }
+ else {
+ return true;
+ }
+ }
+ return false;
+}
+function restoreRanges(data) {
+ let last = 0;
+ return data.split(" ").map((s) => (last += parseInt(s, 36) | 0));
+}
+
+class DataSet {
+ constructor(raw2018, raw2019, raw2020, raw2021, raw2022, raw2023, raw2024) {
+ this._raw2018 = raw2018;
+ this._raw2019 = raw2019;
+ this._raw2020 = raw2020;
+ this._raw2021 = raw2021;
+ this._raw2022 = raw2022;
+ this._raw2023 = raw2023;
+ this._raw2024 = raw2024;
+ }
+ get es2018() {
+ var _a;
+ return ((_a = this._set2018) !== null && _a !== void 0 ? _a : (this._set2018 = new Set(this._raw2018.split(" "))));
+ }
+ get es2019() {
+ var _a;
+ return ((_a = this._set2019) !== null && _a !== void 0 ? _a : (this._set2019 = new Set(this._raw2019.split(" "))));
+ }
+ get es2020() {
+ var _a;
+ return ((_a = this._set2020) !== null && _a !== void 0 ? _a : (this._set2020 = new Set(this._raw2020.split(" "))));
+ }
+ get es2021() {
+ var _a;
+ return ((_a = this._set2021) !== null && _a !== void 0 ? _a : (this._set2021 = new Set(this._raw2021.split(" "))));
+ }
+ get es2022() {
+ var _a;
+ return ((_a = this._set2022) !== null && _a !== void 0 ? _a : (this._set2022 = new Set(this._raw2022.split(" "))));
+ }
+ get es2023() {
+ var _a;
+ return ((_a = this._set2023) !== null && _a !== void 0 ? _a : (this._set2023 = new Set(this._raw2023.split(" "))));
+ }
+ get es2024() {
+ var _a;
+ return ((_a = this._set2024) !== null && _a !== void 0 ? _a : (this._set2024 = new Set(this._raw2024.split(" "))));
+ }
+}
+const gcNameSet = new Set(["General_Category", "gc"]);
+const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]);
+const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", "", "", "", "");
+const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz", "");
+const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict", "", "", "");
+const binPropertyOfStringsSets = new DataSet("", "", "", "", "", "", "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji RGI_Emoji_Flag_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence");
+function isValidUnicodeProperty(version, name, value) {
+ if (gcNameSet.has(name)) {
+ return version >= 2018 && gcValueSets.es2018.has(value);
+ }
+ if (scNameSet.has(name)) {
+ return ((version >= 2018 && scValueSets.es2018.has(value)) ||
+ (version >= 2019 && scValueSets.es2019.has(value)) ||
+ (version >= 2020 && scValueSets.es2020.has(value)) ||
+ (version >= 2021 && scValueSets.es2021.has(value)) ||
+ (version >= 2022 && scValueSets.es2022.has(value)) ||
+ (version >= 2023 && scValueSets.es2023.has(value)));
+ }
+ return false;
+}
+function isValidLoneUnicodeProperty(version, value) {
+ return ((version >= 2018 && binPropertySets.es2018.has(value)) ||
+ (version >= 2019 && binPropertySets.es2019.has(value)) ||
+ (version >= 2021 && binPropertySets.es2021.has(value)));
+}
+function isValidLoneUnicodePropertyOfString(version, value) {
+ return version >= 2024 && binPropertyOfStringsSets.es2024.has(value);
+}
+
+const BACKSPACE = 0x08;
+const CHARACTER_TABULATION = 0x09;
+const LINE_FEED = 0x0a;
+const LINE_TABULATION = 0x0b;
+const FORM_FEED = 0x0c;
+const CARRIAGE_RETURN = 0x0d;
+const EXCLAMATION_MARK = 0x21;
+const NUMBER_SIGN = 0x23;
+const DOLLAR_SIGN = 0x24;
+const PERCENT_SIGN = 0x25;
+const AMPERSAND = 0x26;
+const LEFT_PARENTHESIS = 0x28;
+const RIGHT_PARENTHESIS = 0x29;
+const ASTERISK = 0x2a;
+const PLUS_SIGN = 0x2b;
+const COMMA = 0x2c;
+const HYPHEN_MINUS = 0x2d;
+const FULL_STOP = 0x2e;
+const SOLIDUS = 0x2f;
+const DIGIT_ZERO = 0x30;
+const DIGIT_ONE = 0x31;
+const DIGIT_SEVEN = 0x37;
+const DIGIT_NINE = 0x39;
+const COLON = 0x3a;
+const SEMICOLON = 0x3b;
+const LESS_THAN_SIGN = 0x3c;
+const EQUALS_SIGN = 0x3d;
+const GREATER_THAN_SIGN = 0x3e;
+const QUESTION_MARK = 0x3f;
+const COMMERCIAL_AT = 0x40;
+const LATIN_CAPITAL_LETTER_A = 0x41;
+const LATIN_CAPITAL_LETTER_B = 0x42;
+const LATIN_CAPITAL_LETTER_D = 0x44;
+const LATIN_CAPITAL_LETTER_F = 0x46;
+const LATIN_CAPITAL_LETTER_P = 0x50;
+const LATIN_CAPITAL_LETTER_S = 0x53;
+const LATIN_CAPITAL_LETTER_W = 0x57;
+const LATIN_CAPITAL_LETTER_Z = 0x5a;
+const LOW_LINE = 0x5f;
+const LATIN_SMALL_LETTER_A = 0x61;
+const LATIN_SMALL_LETTER_B = 0x62;
+const LATIN_SMALL_LETTER_C = 0x63;
+const LATIN_SMALL_LETTER_D = 0x64;
+const LATIN_SMALL_LETTER_F = 0x66;
+const LATIN_SMALL_LETTER_G = 0x67;
+const LATIN_SMALL_LETTER_I = 0x69;
+const LATIN_SMALL_LETTER_K = 0x6b;
+const LATIN_SMALL_LETTER_M = 0x6d;
+const LATIN_SMALL_LETTER_N = 0x6e;
+const LATIN_SMALL_LETTER_P = 0x70;
+const LATIN_SMALL_LETTER_Q = 0x71;
+const LATIN_SMALL_LETTER_R = 0x72;
+const LATIN_SMALL_LETTER_S = 0x73;
+const LATIN_SMALL_LETTER_T = 0x74;
+const LATIN_SMALL_LETTER_U = 0x75;
+const LATIN_SMALL_LETTER_V = 0x76;
+const LATIN_SMALL_LETTER_W = 0x77;
+const LATIN_SMALL_LETTER_X = 0x78;
+const LATIN_SMALL_LETTER_Y = 0x79;
+const LATIN_SMALL_LETTER_Z = 0x7a;
+const LEFT_SQUARE_BRACKET = 0x5b;
+const REVERSE_SOLIDUS = 0x5c;
+const RIGHT_SQUARE_BRACKET = 0x5d;
+const CIRCUMFLEX_ACCENT = 0x5e;
+const GRAVE_ACCENT = 0x60;
+const LEFT_CURLY_BRACKET = 0x7b;
+const VERTICAL_LINE = 0x7c;
+const RIGHT_CURLY_BRACKET = 0x7d;
+const TILDE = 0x7e;
+const ZERO_WIDTH_NON_JOINER = 0x200c;
+const ZERO_WIDTH_JOINER = 0x200d;
+const LINE_SEPARATOR = 0x2028;
+const PARAGRAPH_SEPARATOR = 0x2029;
+const MIN_CODE_POINT = 0x00;
+const MAX_CODE_POINT = 0x10ffff;
+function isLatinLetter(code) {
+ return ((code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_Z) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_Z));
+}
+function isDecimalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_NINE;
+}
+function isOctalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_SEVEN;
+}
+function isHexDigit(code) {
+ return ((code >= DIGIT_ZERO && code <= DIGIT_NINE) ||
+ (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F));
+}
+function isLineTerminator(code) {
+ return (code === LINE_FEED ||
+ code === CARRIAGE_RETURN ||
+ code === LINE_SEPARATOR ||
+ code === PARAGRAPH_SEPARATOR);
+}
+function isValidUnicode(code) {
+ return code >= MIN_CODE_POINT && code <= MAX_CODE_POINT;
+}
+function digitToInt(code) {
+ if (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F) {
+ return code - LATIN_SMALL_LETTER_A + 10;
+ }
+ if (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) {
+ return code - LATIN_CAPITAL_LETTER_A + 10;
+ }
+ return code - DIGIT_ZERO;
+}
+function isLeadSurrogate(code) {
+ return code >= 0xd800 && code <= 0xdbff;
+}
+function isTrailSurrogate(code) {
+ return code >= 0xdc00 && code <= 0xdfff;
+}
+function combineSurrogatePair(lead, trail) {
+ return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000;
+}
+
+const legacyImpl = {
+ at(s, end, i) {
+ return i < end ? s.charCodeAt(i) : -1;
+ },
+ width(c) {
+ return 1;
+ },
+};
+const unicodeImpl = {
+ at(s, end, i) {
+ return i < end ? s.codePointAt(i) : -1;
+ },
+ width(c) {
+ return c > 0xffff ? 2 : 1;
+ },
+};
+class Reader {
+ constructor() {
+ this._impl = legacyImpl;
+ this._s = "";
+ this._i = 0;
+ this._end = 0;
+ this._cp1 = -1;
+ this._w1 = 1;
+ this._cp2 = -1;
+ this._w2 = 1;
+ this._cp3 = -1;
+ this._w3 = 1;
+ this._cp4 = -1;
+ }
+ get source() {
+ return this._s;
+ }
+ get index() {
+ return this._i;
+ }
+ get currentCodePoint() {
+ return this._cp1;
+ }
+ get nextCodePoint() {
+ return this._cp2;
+ }
+ get nextCodePoint2() {
+ return this._cp3;
+ }
+ get nextCodePoint3() {
+ return this._cp4;
+ }
+ reset(source, start, end, uFlag) {
+ this._impl = uFlag ? unicodeImpl : legacyImpl;
+ this._s = source;
+ this._end = end;
+ this.rewind(start);
+ }
+ rewind(index) {
+ const impl = this._impl;
+ this._i = index;
+ this._cp1 = impl.at(this._s, this._end, index);
+ this._w1 = impl.width(this._cp1);
+ this._cp2 = impl.at(this._s, this._end, index + this._w1);
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2);
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3);
+ }
+ advance() {
+ if (this._cp1 !== -1) {
+ const impl = this._impl;
+ this._i += this._w1;
+ this._cp1 = this._cp2;
+ this._w1 = this._w2;
+ this._cp2 = this._cp3;
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = this._cp4;
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3);
+ }
+ }
+ eat(cp) {
+ if (this._cp1 === cp) {
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat2(cp1, cp2) {
+ if (this._cp1 === cp1 && this._cp2 === cp2) {
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat3(cp1, cp2, cp3) {
+ if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) {
+ this.advance();
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+}
+
+class RegExpSyntaxError extends SyntaxError {
+ constructor(message, index) {
+ super(message);
+ this.index = index;
+ }
+}
+function newRegExpSyntaxError(srcCtx, flags, index, message) {
+ let source = "";
+ if (srcCtx.kind === "literal") {
+ const literal = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ if (literal) {
+ source = `: ${literal}`;
+ }
+ }
+ else if (srcCtx.kind === "pattern") {
+ const pattern = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ const flagsText = `${flags.unicode ? "u" : ""}${flags.unicodeSets ? "v" : ""}`;
+ source = `: /${pattern}/${flagsText}`;
+ }
+ return new RegExpSyntaxError(`Invalid regular expression${source}: ${message}`, index);
+}
+
+const SYNTAX_CHARACTER = new Set([
+ CIRCUMFLEX_ACCENT,
+ DOLLAR_SIGN,
+ REVERSE_SOLIDUS,
+ FULL_STOP,
+ ASTERISK,
+ PLUS_SIGN,
+ QUESTION_MARK,
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER = new Set([
+ AMPERSAND,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ DOLLAR_SIGN,
+ PERCENT_SIGN,
+ ASTERISK,
+ PLUS_SIGN,
+ COMMA,
+ FULL_STOP,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ QUESTION_MARK,
+ COMMERCIAL_AT,
+ CIRCUMFLEX_ACCENT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+const CLASS_SET_SYNTAX_CHARACTER = new Set([
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ SOLIDUS,
+ HYPHEN_MINUS,
+ REVERSE_SOLIDUS,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_PUNCTUATOR = new Set([
+ AMPERSAND,
+ HYPHEN_MINUS,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ PERCENT_SIGN,
+ COMMA,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ COMMERCIAL_AT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+function isSyntaxCharacter(cp) {
+ return SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedDoublePunctuatorCharacter(cp) {
+ return CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER.has(cp);
+}
+function isClassSetSyntaxCharacter(cp) {
+ return CLASS_SET_SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedPunctuator(cp) {
+ return CLASS_SET_RESERVED_PUNCTUATOR.has(cp);
+}
+function isIdentifierStartChar(cp) {
+ return isIdStart(cp) || cp === DOLLAR_SIGN || cp === LOW_LINE;
+}
+function isIdentifierPartChar(cp) {
+ return (isIdContinue(cp) ||
+ cp === DOLLAR_SIGN ||
+ cp === ZERO_WIDTH_NON_JOINER ||
+ cp === ZERO_WIDTH_JOINER);
+}
+function isUnicodePropertyNameCharacter(cp) {
+ return isLatinLetter(cp) || cp === LOW_LINE;
+}
+function isUnicodePropertyValueCharacter(cp) {
+ return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp);
+}
+class RegExpValidator {
+ constructor(options) {
+ this._reader = new Reader();
+ this._unicodeMode = false;
+ this._unicodeSetsMode = false;
+ this._nFlag = false;
+ this._lastIntValue = 0;
+ this._lastRange = {
+ min: 0,
+ max: Number.POSITIVE_INFINITY,
+ };
+ this._lastStrValue = "";
+ this._lastAssertionIsQuantifiable = false;
+ this._numCapturingParens = 0;
+ this._groupNames = new Set();
+ this._backreferenceNames = new Set();
+ this._srcCtx = null;
+ this._options = options !== null && options !== void 0 ? options : {};
+ }
+ validateLiteral(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "literal" };
+ this._unicodeSetsMode = this._unicodeMode = this._nFlag = false;
+ this.reset(source, start, end);
+ this.onLiteralEnter(start);
+ if (this.eat(SOLIDUS) && this.eatRegExpBody() && this.eat(SOLIDUS)) {
+ const flagStart = this.index;
+ const unicode = source.includes("u", flagStart);
+ const unicodeSets = source.includes("v", flagStart);
+ this.validateFlagsInternal(source, flagStart, end);
+ this.validatePatternInternal(source, start + 1, flagStart - 1, {
+ unicode,
+ unicodeSets,
+ });
+ }
+ else if (start >= end) {
+ this.raise("Empty");
+ }
+ else {
+ const c = String.fromCodePoint(this.currentCodePoint);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ this.onLiteralLeave(start, end);
+ }
+ validateFlags(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "flags" };
+ this.validateFlagsInternal(source, start, end);
+ }
+ validatePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._srcCtx = { source, start, end, kind: "pattern" };
+ this.validatePatternInternal(source, start, end, uFlagOrFlags);
+ }
+ validatePatternInternal(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ const mode = this._parseFlagsOptionToMode(uFlagOrFlags, end);
+ this._unicodeMode = mode.unicodeMode;
+ this._nFlag = mode.nFlag;
+ this._unicodeSetsMode = mode.unicodeSetsMode;
+ this.reset(source, start, end);
+ this.consumePattern();
+ if (!this._nFlag &&
+ this.ecmaVersion >= 2018 &&
+ this._groupNames.size > 0) {
+ this._nFlag = true;
+ this.rewind(start);
+ this.consumePattern();
+ }
+ }
+ validateFlagsInternal(source, start, end) {
+ const existingFlags = new Set();
+ let global = false;
+ let ignoreCase = false;
+ let multiline = false;
+ let sticky = false;
+ let unicode = false;
+ let dotAll = false;
+ let hasIndices = false;
+ let unicodeSets = false;
+ for (let i = start; i < end; ++i) {
+ const flag = source.charCodeAt(i);
+ if (existingFlags.has(flag)) {
+ this.raise(`Duplicated flag '${source[i]}'`, { index: start });
+ }
+ existingFlags.add(flag);
+ if (flag === LATIN_SMALL_LETTER_G) {
+ global = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_I) {
+ ignoreCase = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_M) {
+ multiline = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_U &&
+ this.ecmaVersion >= 2015) {
+ unicode = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_Y &&
+ this.ecmaVersion >= 2015) {
+ sticky = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_S &&
+ this.ecmaVersion >= 2018) {
+ dotAll = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_D &&
+ this.ecmaVersion >= 2022) {
+ hasIndices = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_V &&
+ this.ecmaVersion >= 2024) {
+ unicodeSets = true;
+ }
+ else {
+ this.raise(`Invalid flag '${source[i]}'`, { index: start });
+ }
+ }
+ this.onRegExpFlags(start, end, {
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ });
+ }
+ _parseFlagsOptionToMode(uFlagOrFlags, sourceEnd) {
+ let unicode = false;
+ let unicodeSets = false;
+ if (uFlagOrFlags && this.ecmaVersion >= 2015) {
+ if (typeof uFlagOrFlags === "object") {
+ unicode = Boolean(uFlagOrFlags.unicode);
+ if (this.ecmaVersion >= 2024) {
+ unicodeSets = Boolean(uFlagOrFlags.unicodeSets);
+ }
+ }
+ else {
+ unicode = uFlagOrFlags;
+ }
+ }
+ if (unicode && unicodeSets) {
+ this.raise("Invalid regular expression flags", {
+ index: sourceEnd + 1,
+ unicode,
+ unicodeSets,
+ });
+ }
+ const unicodeMode = unicode || unicodeSets;
+ const nFlag = (unicode && this.ecmaVersion >= 2018) ||
+ unicodeSets ||
+ Boolean(this._options.strict && this.ecmaVersion >= 2023);
+ const unicodeSetsMode = unicodeSets;
+ return { unicodeMode, nFlag, unicodeSetsMode };
+ }
+ get strict() {
+ return Boolean(this._options.strict) || this._unicodeMode;
+ }
+ get ecmaVersion() {
+ var _a;
+ return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ onLiteralEnter(start) {
+ if (this._options.onLiteralEnter) {
+ this._options.onLiteralEnter(start);
+ }
+ }
+ onLiteralLeave(start, end) {
+ if (this._options.onLiteralLeave) {
+ this._options.onLiteralLeave(start, end);
+ }
+ }
+ onRegExpFlags(start, end, flags) {
+ if (this._options.onRegExpFlags) {
+ this._options.onRegExpFlags(start, end, flags);
+ }
+ if (this._options.onFlags) {
+ this._options.onFlags(start, end, flags.global, flags.ignoreCase, flags.multiline, flags.unicode, flags.sticky, flags.dotAll, flags.hasIndices);
+ }
+ }
+ onPatternEnter(start) {
+ if (this._options.onPatternEnter) {
+ this._options.onPatternEnter(start);
+ }
+ }
+ onPatternLeave(start, end) {
+ if (this._options.onPatternLeave) {
+ this._options.onPatternLeave(start, end);
+ }
+ }
+ onDisjunctionEnter(start) {
+ if (this._options.onDisjunctionEnter) {
+ this._options.onDisjunctionEnter(start);
+ }
+ }
+ onDisjunctionLeave(start, end) {
+ if (this._options.onDisjunctionLeave) {
+ this._options.onDisjunctionLeave(start, end);
+ }
+ }
+ onAlternativeEnter(start, index) {
+ if (this._options.onAlternativeEnter) {
+ this._options.onAlternativeEnter(start, index);
+ }
+ }
+ onAlternativeLeave(start, end, index) {
+ if (this._options.onAlternativeLeave) {
+ this._options.onAlternativeLeave(start, end, index);
+ }
+ }
+ onGroupEnter(start) {
+ if (this._options.onGroupEnter) {
+ this._options.onGroupEnter(start);
+ }
+ }
+ onGroupLeave(start, end) {
+ if (this._options.onGroupLeave) {
+ this._options.onGroupLeave(start, end);
+ }
+ }
+ onCapturingGroupEnter(start, name) {
+ if (this._options.onCapturingGroupEnter) {
+ this._options.onCapturingGroupEnter(start, name);
+ }
+ }
+ onCapturingGroupLeave(start, end, name) {
+ if (this._options.onCapturingGroupLeave) {
+ this._options.onCapturingGroupLeave(start, end, name);
+ }
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ if (this._options.onQuantifier) {
+ this._options.onQuantifier(start, end, min, max, greedy);
+ }
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ if (this._options.onLookaroundAssertionEnter) {
+ this._options.onLookaroundAssertionEnter(start, kind, negate);
+ }
+ }
+ onLookaroundAssertionLeave(start, end, kind, negate) {
+ if (this._options.onLookaroundAssertionLeave) {
+ this._options.onLookaroundAssertionLeave(start, end, kind, negate);
+ }
+ }
+ onEdgeAssertion(start, end, kind) {
+ if (this._options.onEdgeAssertion) {
+ this._options.onEdgeAssertion(start, end, kind);
+ }
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ if (this._options.onWordBoundaryAssertion) {
+ this._options.onWordBoundaryAssertion(start, end, kind, negate);
+ }
+ }
+ onAnyCharacterSet(start, end, kind) {
+ if (this._options.onAnyCharacterSet) {
+ this._options.onAnyCharacterSet(start, end, kind);
+ }
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ if (this._options.onEscapeCharacterSet) {
+ this._options.onEscapeCharacterSet(start, end, kind, negate);
+ }
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ if (this._options.onUnicodePropertyCharacterSet) {
+ this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings);
+ }
+ }
+ onCharacter(start, end, value) {
+ if (this._options.onCharacter) {
+ this._options.onCharacter(start, end, value);
+ }
+ }
+ onBackreference(start, end, ref) {
+ if (this._options.onBackreference) {
+ this._options.onBackreference(start, end, ref);
+ }
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ if (this._options.onCharacterClassEnter) {
+ this._options.onCharacterClassEnter(start, negate, unicodeSets);
+ }
+ }
+ onCharacterClassLeave(start, end, negate) {
+ if (this._options.onCharacterClassLeave) {
+ this._options.onCharacterClassLeave(start, end, negate);
+ }
+ }
+ onCharacterClassRange(start, end, min, max) {
+ if (this._options.onCharacterClassRange) {
+ this._options.onCharacterClassRange(start, end, min, max);
+ }
+ }
+ onClassIntersection(start, end) {
+ if (this._options.onClassIntersection) {
+ this._options.onClassIntersection(start, end);
+ }
+ }
+ onClassSubtraction(start, end) {
+ if (this._options.onClassSubtraction) {
+ this._options.onClassSubtraction(start, end);
+ }
+ }
+ onClassStringDisjunctionEnter(start) {
+ if (this._options.onClassStringDisjunctionEnter) {
+ this._options.onClassStringDisjunctionEnter(start);
+ }
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ if (this._options.onClassStringDisjunctionLeave) {
+ this._options.onClassStringDisjunctionLeave(start, end);
+ }
+ }
+ onStringAlternativeEnter(start, index) {
+ if (this._options.onStringAlternativeEnter) {
+ this._options.onStringAlternativeEnter(start, index);
+ }
+ }
+ onStringAlternativeLeave(start, end, index) {
+ if (this._options.onStringAlternativeLeave) {
+ this._options.onStringAlternativeLeave(start, end, index);
+ }
+ }
+ get index() {
+ return this._reader.index;
+ }
+ get currentCodePoint() {
+ return this._reader.currentCodePoint;
+ }
+ get nextCodePoint() {
+ return this._reader.nextCodePoint;
+ }
+ get nextCodePoint2() {
+ return this._reader.nextCodePoint2;
+ }
+ get nextCodePoint3() {
+ return this._reader.nextCodePoint3;
+ }
+ reset(source, start, end) {
+ this._reader.reset(source, start, end, this._unicodeMode);
+ }
+ rewind(index) {
+ this._reader.rewind(index);
+ }
+ advance() {
+ this._reader.advance();
+ }
+ eat(cp) {
+ return this._reader.eat(cp);
+ }
+ eat2(cp1, cp2) {
+ return this._reader.eat2(cp1, cp2);
+ }
+ eat3(cp1, cp2, cp3) {
+ return this._reader.eat3(cp1, cp2, cp3);
+ }
+ raise(message, context) {
+ var _a, _b, _c;
+ throw newRegExpSyntaxError(this._srcCtx, {
+ unicode: (_a = context === null || context === void 0 ? void 0 : context.unicode) !== null && _a !== void 0 ? _a : (this._unicodeMode && !this._unicodeSetsMode),
+ unicodeSets: (_b = context === null || context === void 0 ? void 0 : context.unicodeSets) !== null && _b !== void 0 ? _b : this._unicodeSetsMode,
+ }, (_c = context === null || context === void 0 ? void 0 : context.index) !== null && _c !== void 0 ? _c : this.index, message);
+ }
+ eatRegExpBody() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ for (;;) {
+ const cp = this.currentCodePoint;
+ if (cp === -1 || isLineTerminator(cp)) {
+ const kind = inClass ? "character class" : "regular expression";
+ this.raise(`Unterminated ${kind}`);
+ }
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if ((cp === SOLIDUS && !inClass) ||
+ (cp === ASTERISK && this.index === start)) {
+ break;
+ }
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ consumePattern() {
+ const start = this.index;
+ this._numCapturingParens = this.countCapturingParens();
+ this._groupNames.clear();
+ this._backreferenceNames.clear();
+ this.onPatternEnter(start);
+ this.consumeDisjunction();
+ const cp = this.currentCodePoint;
+ if (this.currentCodePoint !== -1) {
+ if (cp === RIGHT_PARENTHESIS) {
+ this.raise("Unmatched ')'");
+ }
+ if (cp === REVERSE_SOLIDUS) {
+ this.raise("\\ at end of pattern");
+ }
+ if (cp === RIGHT_SQUARE_BRACKET || cp === RIGHT_CURLY_BRACKET) {
+ this.raise("Lone quantifier brackets");
+ }
+ const c = String.fromCodePoint(cp);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ for (const name of this._backreferenceNames) {
+ if (!this._groupNames.has(name)) {
+ this.raise("Invalid named capture referenced");
+ }
+ }
+ this.onPatternLeave(start, this.index);
+ }
+ countCapturingParens() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ let count = 0;
+ let cp = 0;
+ while ((cp = this.currentCodePoint) !== -1) {
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if (cp === LEFT_PARENTHESIS &&
+ !inClass &&
+ (this.nextCodePoint !== QUESTION_MARK ||
+ (this.nextCodePoint2 === LESS_THAN_SIGN &&
+ this.nextCodePoint3 !== EQUALS_SIGN &&
+ this.nextCodePoint3 !== EXCLAMATION_MARK))) {
+ count += 1;
+ }
+ this.advance();
+ }
+ this.rewind(start);
+ return count;
+ }
+ consumeDisjunction() {
+ const start = this.index;
+ let i = 0;
+ this.onDisjunctionEnter(start);
+ do {
+ this.consumeAlternative(i++);
+ } while (this.eat(VERTICAL_LINE));
+ if (this.consumeQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ this.raise("Lone quantifier brackets");
+ }
+ this.onDisjunctionLeave(start, this.index);
+ }
+ consumeAlternative(i) {
+ const start = this.index;
+ this.onAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 && this.consumeTerm()) {
+ }
+ this.onAlternativeLeave(start, this.index, i);
+ }
+ consumeTerm() {
+ if (this._unicodeMode || this.strict) {
+ return (this.consumeAssertion() ||
+ (this.consumeAtom() && this.consumeOptionalQuantifier()));
+ }
+ return ((this.consumeAssertion() &&
+ (!this._lastAssertionIsQuantifiable ||
+ this.consumeOptionalQuantifier())) ||
+ (this.consumeExtendedAtom() && this.consumeOptionalQuantifier()));
+ }
+ consumeOptionalQuantifier() {
+ this.consumeQuantifier();
+ return true;
+ }
+ consumeAssertion() {
+ const start = this.index;
+ this._lastAssertionIsQuantifiable = false;
+ if (this.eat(CIRCUMFLEX_ACCENT)) {
+ this.onEdgeAssertion(start, this.index, "start");
+ return true;
+ }
+ if (this.eat(DOLLAR_SIGN)) {
+ this.onEdgeAssertion(start, this.index, "end");
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_CAPITAL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", true);
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", false);
+ return true;
+ }
+ if (this.eat2(LEFT_PARENTHESIS, QUESTION_MARK)) {
+ const lookbehind = this.ecmaVersion >= 2018 && this.eat(LESS_THAN_SIGN);
+ let negate = false;
+ if (this.eat(EQUALS_SIGN) ||
+ (negate = this.eat(EXCLAMATION_MARK))) {
+ const kind = lookbehind ? "lookbehind" : "lookahead";
+ this.onLookaroundAssertionEnter(start, kind, negate);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this._lastAssertionIsQuantifiable = !lookbehind && !this.strict;
+ this.onLookaroundAssertionLeave(start, this.index, kind, negate);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeQuantifier(noConsume = false) {
+ const start = this.index;
+ let min = 0;
+ let max = 0;
+ let greedy = false;
+ if (this.eat(ASTERISK)) {
+ min = 0;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(PLUS_SIGN)) {
+ min = 1;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(QUESTION_MARK)) {
+ min = 0;
+ max = 1;
+ }
+ else if (this.eatBracedQuantifier(noConsume)) {
+ ({ min, max } = this._lastRange);
+ }
+ else {
+ return false;
+ }
+ greedy = !this.eat(QUESTION_MARK);
+ if (!noConsume) {
+ this.onQuantifier(start, this.index, min, max, greedy);
+ }
+ return true;
+ }
+ eatBracedQuantifier(noError) {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ if (this.eatDecimalDigits()) {
+ const min = this._lastIntValue;
+ let max = min;
+ if (this.eat(COMMA)) {
+ max = this.eatDecimalDigits()
+ ? this._lastIntValue
+ : Number.POSITIVE_INFINITY;
+ }
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ if (!noError && max < min) {
+ this.raise("numbers out of order in {} quantifier");
+ }
+ this._lastRange = { min, max };
+ return true;
+ }
+ }
+ if (!noError && (this._unicodeMode || this.strict)) {
+ this.raise("Incomplete quantifier");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeAtom() {
+ return (this.consumePatternCharacter() ||
+ this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup());
+ }
+ consumeDot() {
+ if (this.eat(FULL_STOP)) {
+ this.onAnyCharacterSet(this.index - 1, this.index, "any");
+ return true;
+ }
+ return false;
+ }
+ consumeReverseSolidusAtomEscape() {
+ const start = this.index;
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeAtomEscape()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeUncapturingGroup() {
+ const start = this.index;
+ if (this.eat3(LEFT_PARENTHESIS, QUESTION_MARK, COLON)) {
+ this.onGroupEnter(start);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onGroupLeave(start, this.index);
+ return true;
+ }
+ return false;
+ }
+ consumeCapturingGroup() {
+ const start = this.index;
+ if (this.eat(LEFT_PARENTHESIS)) {
+ let name = null;
+ if (this.ecmaVersion >= 2018) {
+ if (this.consumeGroupSpecifier()) {
+ name = this._lastStrValue;
+ }
+ }
+ else if (this.currentCodePoint === QUESTION_MARK) {
+ this.raise("Invalid group");
+ }
+ this.onCapturingGroupEnter(start, name);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onCapturingGroupLeave(start, this.index, name);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedAtom() {
+ return (this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ this.consumeReverseSolidusFollowedByC() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup() ||
+ this.consumeInvalidBracedQuantifier() ||
+ this.consumeExtendedPatternCharacter());
+ }
+ consumeReverseSolidusFollowedByC() {
+ const start = this.index;
+ if (this.currentCodePoint === REVERSE_SOLIDUS &&
+ this.nextCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, REVERSE_SOLIDUS);
+ return true;
+ }
+ return false;
+ }
+ consumeInvalidBracedQuantifier() {
+ if (this.eatBracedQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ return false;
+ }
+ consumePatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 && !isSyntaxCharacter(cp)) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedPatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== CIRCUMFLEX_ACCENT &&
+ cp !== DOLLAR_SIGN &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== FULL_STOP &&
+ cp !== ASTERISK &&
+ cp !== PLUS_SIGN &&
+ cp !== QUESTION_MARK &&
+ cp !== LEFT_PARENTHESIS &&
+ cp !== RIGHT_PARENTHESIS &&
+ cp !== LEFT_SQUARE_BRACKET &&
+ cp !== VERTICAL_LINE) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeGroupSpecifier() {
+ if (this.eat(QUESTION_MARK)) {
+ if (this.eatGroupName()) {
+ if (!this._groupNames.has(this._lastStrValue)) {
+ this._groupNames.add(this._lastStrValue);
+ return true;
+ }
+ this.raise("Duplicate capture group name");
+ }
+ this.raise("Invalid group");
+ }
+ return false;
+ }
+ consumeAtomEscape() {
+ if (this.consumeBackreference() ||
+ this.consumeCharacterClassEscape() ||
+ this.consumeCharacterEscape() ||
+ (this._nFlag && this.consumeKGroupName())) {
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ return false;
+ }
+ consumeBackreference() {
+ const start = this.index;
+ if (this.eatDecimalEscape()) {
+ const n = this._lastIntValue;
+ if (n <= this._numCapturingParens) {
+ this.onBackreference(start - 1, this.index, n);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeCharacterClassEscape() {
+ var _a;
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", true);
+ return {};
+ }
+ let negate = false;
+ if (this._unicodeMode &&
+ this.ecmaVersion >= 2018 &&
+ (this.eat(LATIN_SMALL_LETTER_P) ||
+ (negate = this.eat(LATIN_CAPITAL_LETTER_P)))) {
+ this._lastIntValue = -1;
+ let result = null;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ (result = this.eatUnicodePropertyValueExpression()) &&
+ this.eat(RIGHT_CURLY_BRACKET)) {
+ if (negate && result.strings) {
+ this.raise("Invalid property name");
+ }
+ this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", result.key, result.value, negate, (_a = result.strings) !== null && _a !== void 0 ? _a : false);
+ return { mayContainStrings: result.strings };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ consumeCharacterEscape() {
+ const start = this.index;
+ if (this.eatControlEscape() ||
+ this.eatCControlLetter() ||
+ this.eatZero() ||
+ this.eatHexEscapeSequence() ||
+ this.eatRegExpUnicodeEscapeSequence() ||
+ (!this.strict &&
+ !this._unicodeMode &&
+ this.eatLegacyOctalEscapeSequence()) ||
+ this.eatIdentityEscape()) {
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return false;
+ }
+ consumeKGroupName() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_K)) {
+ if (this.eatGroupName()) {
+ const groupName = this._lastStrValue;
+ this._backreferenceNames.add(groupName);
+ this.onBackreference(start - 1, this.index, groupName);
+ return true;
+ }
+ this.raise("Invalid named reference");
+ }
+ return false;
+ }
+ consumeCharacterClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, this._unicodeSetsMode);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ if (this.currentCodePoint === -1) {
+ this.raise("Unterminated character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ return null;
+ }
+ consumeClassContents() {
+ if (this._unicodeSetsMode) {
+ if (this.currentCodePoint === RIGHT_SQUARE_BRACKET) {
+ return {};
+ }
+ const result = this.consumeClassSetExpression();
+ return result;
+ }
+ const strict = this.strict || this._unicodeMode;
+ for (;;) {
+ const rangeStart = this.index;
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const min = this._lastIntValue;
+ if (!this.eat(HYPHEN_MINUS)) {
+ continue;
+ }
+ this.onCharacter(this.index - 1, this.index, HYPHEN_MINUS);
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ if (strict) {
+ this.raise("Invalid character class");
+ }
+ continue;
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(rangeStart, this.index, min, max);
+ }
+ return {};
+ }
+ consumeClassAtom() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== RIGHT_SQUARE_BRACKET) {
+ this.advance();
+ this._lastIntValue = cp;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeClassEscape()) {
+ return true;
+ }
+ if (!this.strict &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = REVERSE_SOLIDUS;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeClassEscape() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this._unicodeMode && this.eat(HYPHEN_MINUS)) {
+ this._lastIntValue = HYPHEN_MINUS;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ let cp = 0;
+ if (!this.strict &&
+ !this._unicodeMode &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C &&
+ (isDecimalDigit((cp = this.nextCodePoint)) || cp === LOW_LINE)) {
+ this.advance();
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return (Boolean(this.consumeCharacterClassEscape()) ||
+ this.consumeCharacterEscape());
+ }
+ consumeClassSetExpression() {
+ const start = this.index;
+ let mayContainStrings = false;
+ let result = null;
+ if (this.consumeClassSetCharacter()) {
+ if (this.consumeClassSetRangeFromOperator(start)) {
+ this.consumeClassUnionRight({});
+ return {};
+ }
+ mayContainStrings = false;
+ }
+ else if ((result = this.consumeClassSetOperand())) {
+ mayContainStrings = result.mayContainStrings;
+ }
+ else {
+ const cp = this.currentCodePoint;
+ if (cp === REVERSE_SOLIDUS) {
+ this.advance();
+ this.raise("Invalid escape");
+ }
+ if (cp === this.nextCodePoint &&
+ isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ this.raise("Invalid set operation in character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ while (this.currentCodePoint !== AMPERSAND &&
+ (result = this.consumeClassSetOperand())) {
+ this.onClassIntersection(start, this.index);
+ if (!result.mayContainStrings) {
+ mayContainStrings = false;
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ while (this.consumeClassSetOperand()) {
+ this.onClassSubtraction(start, this.index);
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ return this.consumeClassUnionRight({ mayContainStrings });
+ }
+ consumeClassUnionRight(leftResult) {
+ let mayContainStrings = leftResult.mayContainStrings;
+ for (;;) {
+ const start = this.index;
+ if (this.consumeClassSetCharacter()) {
+ this.consumeClassSetRangeFromOperator(start);
+ continue;
+ }
+ const result = this.consumeClassSetOperand();
+ if (result) {
+ if (result.mayContainStrings) {
+ mayContainStrings = true;
+ }
+ continue;
+ }
+ break;
+ }
+ return { mayContainStrings };
+ }
+ consumeClassSetRangeFromOperator(start) {
+ const currentStart = this.index;
+ const min = this._lastIntValue;
+ if (this.eat(HYPHEN_MINUS)) {
+ if (this.consumeClassSetCharacter()) {
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ this.raise("Invalid character class");
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(start, this.index, min, max);
+ return true;
+ }
+ this.rewind(currentStart);
+ }
+ return false;
+ }
+ consumeClassSetOperand() {
+ let result = null;
+ if ((result = this.consumeNestedClass())) {
+ return result;
+ }
+ if ((result = this.consumeClassStringDisjunction())) {
+ return result;
+ }
+ if (this.consumeClassSetCharacter()) {
+ return {};
+ }
+ return null;
+ }
+ consumeNestedClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, true);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ this.raise("Unterminated character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ const result = this.consumeCharacterClassEscape();
+ if (result) {
+ return result;
+ }
+ this.rewind(start);
+ }
+ return null;
+ }
+ consumeClassStringDisjunction() {
+ const start = this.index;
+ if (this.eat3(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_Q, LEFT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionEnter(start);
+ let i = 0;
+ let mayContainStrings = false;
+ do {
+ if (this.consumeClassString(i++).mayContainStrings) {
+ mayContainStrings = true;
+ }
+ } while (this.eat(VERTICAL_LINE));
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionLeave(start, this.index);
+ return { mayContainStrings };
+ }
+ this.raise("Unterminated class string disjunction");
+ }
+ return null;
+ }
+ consumeClassString(i) {
+ const start = this.index;
+ let count = 0;
+ this.onStringAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 &&
+ this.consumeClassSetCharacter()) {
+ count++;
+ }
+ this.onStringAlternativeLeave(start, this.index, i);
+ return { mayContainStrings: count !== 1 };
+ }
+ consumeClassSetCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== this.nextCodePoint ||
+ !isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ if (cp !== -1 && !isClassSetSyntaxCharacter(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeCharacterEscape()) {
+ return true;
+ }
+ if (isClassSetReservedPunctuator(this.currentCodePoint)) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatGroupName() {
+ if (this.eat(LESS_THAN_SIGN)) {
+ if (this.eatRegExpIdentifierName() && this.eat(GREATER_THAN_SIGN)) {
+ return true;
+ }
+ this.raise("Invalid capture group name");
+ }
+ return false;
+ }
+ eatRegExpIdentifierName() {
+ if (this.eatRegExpIdentifierStart()) {
+ this._lastStrValue = String.fromCodePoint(this._lastIntValue);
+ while (this.eatRegExpIdentifierPart()) {
+ this._lastStrValue += String.fromCodePoint(this._lastIntValue);
+ }
+ return true;
+ }
+ return false;
+ }
+ eatRegExpIdentifierStart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierStartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpIdentifierPart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierPartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatCControlLetter() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_C)) {
+ if (this.eatControlLetter()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatZero() {
+ if (this.currentCodePoint === DIGIT_ZERO &&
+ !isDecimalDigit(this.nextCodePoint)) {
+ this._lastIntValue = 0;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eatControlEscape() {
+ if (this.eat(LATIN_SMALL_LETTER_F)) {
+ this._lastIntValue = FORM_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_N)) {
+ this._lastIntValue = LINE_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_R)) {
+ this._lastIntValue = CARRIAGE_RETURN;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_T)) {
+ this._lastIntValue = CHARACTER_TABULATION;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_V)) {
+ this._lastIntValue = LINE_TABULATION;
+ return true;
+ }
+ return false;
+ }
+ eatControlLetter() {
+ const cp = this.currentCodePoint;
+ if (isLatinLetter(cp)) {
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ return true;
+ }
+ return false;
+ }
+ eatRegExpUnicodeEscapeSequence(forceUFlag = false) {
+ const start = this.index;
+ const uFlag = forceUFlag || this._unicodeMode;
+ if (this.eat(LATIN_SMALL_LETTER_U)) {
+ if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) ||
+ this.eatFixedHexDigits(4) ||
+ (uFlag && this.eatRegExpUnicodeCodePointEscape())) {
+ return true;
+ }
+ if (this.strict || uFlag) {
+ this.raise("Invalid unicode escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeSurrogatePairEscape() {
+ const start = this.index;
+ if (this.eatFixedHexDigits(4)) {
+ const lead = this._lastIntValue;
+ if (isLeadSurrogate(lead) &&
+ this.eat(REVERSE_SOLIDUS) &&
+ this.eat(LATIN_SMALL_LETTER_U) &&
+ this.eatFixedHexDigits(4)) {
+ const trail = this._lastIntValue;
+ if (isTrailSurrogate(trail)) {
+ this._lastIntValue = combineSurrogatePair(lead, trail);
+ return true;
+ }
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeCodePointEscape() {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ this.eatHexDigits() &&
+ this.eat(RIGHT_CURLY_BRACKET) &&
+ isValidUnicode(this._lastIntValue)) {
+ return true;
+ }
+ this.rewind(start);
+ return false;
+ }
+ eatIdentityEscape() {
+ const cp = this.currentCodePoint;
+ if (this.isValidIdentityEscape(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ isValidIdentityEscape(cp) {
+ if (cp === -1) {
+ return false;
+ }
+ if (this._unicodeMode) {
+ return isSyntaxCharacter(cp) || cp === SOLIDUS;
+ }
+ if (this.strict) {
+ return !isIdContinue(cp);
+ }
+ if (this._nFlag) {
+ return !(cp === LATIN_SMALL_LETTER_C || cp === LATIN_SMALL_LETTER_K);
+ }
+ return cp !== LATIN_SMALL_LETTER_C;
+ }
+ eatDecimalEscape() {
+ this._lastIntValue = 0;
+ let cp = this.currentCodePoint;
+ if (cp >= DIGIT_ONE && cp <= DIGIT_NINE) {
+ do {
+ this._lastIntValue = 10 * this._lastIntValue + (cp - DIGIT_ZERO);
+ this.advance();
+ } while ((cp = this.currentCodePoint) >= DIGIT_ZERO &&
+ cp <= DIGIT_NINE);
+ return true;
+ }
+ return false;
+ }
+ eatUnicodePropertyValueExpression() {
+ const start = this.index;
+ if (this.eatUnicodePropertyName() && this.eat(EQUALS_SIGN)) {
+ const key = this._lastStrValue;
+ if (this.eatUnicodePropertyValue()) {
+ const value = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, key, value)) {
+ return {
+ key,
+ value: value || null,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ }
+ this.rewind(start);
+ if (this.eatLoneUnicodePropertyNameOrValue()) {
+ const nameOrValue = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) {
+ return {
+ key: "General_Category",
+ value: nameOrValue || null,
+ };
+ }
+ if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ };
+ }
+ if (this._unicodeSetsMode &&
+ isValidLoneUnicodePropertyOfString(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ strings: true,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ eatUnicodePropertyName() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyNameCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatUnicodePropertyValue() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyValueCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatLoneUnicodePropertyNameOrValue() {
+ return this.eatUnicodePropertyValue();
+ }
+ eatHexEscapeSequence() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_X)) {
+ if (this.eatFixedHexDigits(2)) {
+ return true;
+ }
+ if (this._unicodeMode || this.strict) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatDecimalDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isDecimalDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 10 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatHexDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isHexDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 16 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatLegacyOctalEscapeSequence() {
+ if (this.eatOctalDigit()) {
+ const n1 = this._lastIntValue;
+ if (this.eatOctalDigit()) {
+ const n2 = this._lastIntValue;
+ if (n1 <= 3 && this.eatOctalDigit()) {
+ this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue;
+ }
+ else {
+ this._lastIntValue = n1 * 8 + n2;
+ }
+ }
+ else {
+ this._lastIntValue = n1;
+ }
+ return true;
+ }
+ return false;
+ }
+ eatOctalDigit() {
+ const cp = this.currentCodePoint;
+ if (isOctalDigit(cp)) {
+ this.advance();
+ this._lastIntValue = cp - DIGIT_ZERO;
+ return true;
+ }
+ this._lastIntValue = 0;
+ return false;
+ }
+ eatFixedHexDigits(length) {
+ const start = this.index;
+ this._lastIntValue = 0;
+ for (let i = 0; i < length; ++i) {
+ const cp = this.currentCodePoint;
+ if (!isHexDigit(cp)) {
+ this.rewind(start);
+ return false;
+ }
+ this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp);
+ this.advance();
+ }
+ return true;
+ }
+}
+
+const DUMMY_PATTERN = {};
+const DUMMY_FLAGS = {};
+const DUMMY_CAPTURING_GROUP = {};
+function isClassSetOperand(node) {
+ return (node.type === "Character" ||
+ node.type === "CharacterSet" ||
+ node.type === "CharacterClass" ||
+ node.type === "ExpressionCharacterClass" ||
+ node.type === "ClassStringDisjunction");
+}
+class RegExpParserState {
+ constructor(options) {
+ var _a;
+ this._node = DUMMY_PATTERN;
+ this._expressionBufferMap = new Map();
+ this._flags = DUMMY_FLAGS;
+ this._backreferences = [];
+ this._capturingGroups = [];
+ this.source = "";
+ this.strict = Boolean(options === null || options === void 0 ? void 0 : options.strict);
+ this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ get pattern() {
+ if (this._node.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ return this._node;
+ }
+ get flags() {
+ if (this._flags.type !== "Flags") {
+ throw new Error("UnknownError");
+ }
+ return this._flags;
+ }
+ onRegExpFlags(start, end, { global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices, unicodeSets, }) {
+ this._flags = {
+ type: "Flags",
+ parent: null,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ };
+ }
+ onPatternEnter(start) {
+ this._node = {
+ type: "Pattern",
+ parent: null,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ this._backreferences.length = 0;
+ this._capturingGroups.length = 0;
+ }
+ onPatternLeave(start, end) {
+ this._node.end = end;
+ this._node.raw = this.source.slice(start, end);
+ for (const reference of this._backreferences) {
+ const ref = reference.ref;
+ const group = typeof ref === "number"
+ ? this._capturingGroups[ref - 1]
+ : this._capturingGroups.find((g) => g.name === ref);
+ reference.resolved = group;
+ group.references.push(reference);
+ }
+ }
+ onAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Assertion" &&
+ parent.type !== "CapturingGroup" &&
+ parent.type !== "Group" &&
+ parent.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Alternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onGroupEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Group",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Group" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onCapturingGroupEnter(start, name) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "CapturingGroup",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ name,
+ alternatives: [],
+ references: [],
+ };
+ parent.elements.push(this._node);
+ this._capturingGroups.push(this._node);
+ }
+ onCapturingGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CapturingGroup" ||
+ node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const element = parent.elements.pop();
+ if (element == null ||
+ element.type === "Quantifier" ||
+ (element.type === "Assertion" && element.kind !== "lookahead")) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Quantifier",
+ parent,
+ start: element.start,
+ end,
+ raw: this.source.slice(element.start, end),
+ min,
+ max,
+ greedy,
+ element,
+ };
+ parent.elements.push(node);
+ element.parent = node;
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = (this._node = {
+ type: "Assertion",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ kind,
+ negate,
+ alternatives: [],
+ });
+ parent.elements.push(node);
+ }
+ onLookaroundAssertionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Assertion" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onEdgeAssertion(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onAnyCharacterSet(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const base = {
+ type: "CharacterSet",
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ key,
+ };
+ if (strings) {
+ if ((parent.type === "CharacterClass" && !parent.unicodeSets) ||
+ negate ||
+ value !== null) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ else {
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ }
+ onCharacter(start, end, value) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" &&
+ parent.type !== "CharacterClass" &&
+ parent.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Character",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ value,
+ });
+ }
+ onBackreference(start, end, ref) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Backreference",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ ref,
+ resolved: DUMMY_CAPTURING_GROUP,
+ };
+ parent.elements.push(node);
+ this._backreferences.push(node);
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ const parent = this._node;
+ const base = {
+ type: "CharacterClass",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ unicodeSets,
+ negate,
+ elements: [],
+ };
+ if (parent.type === "Alternative") {
+ const node = Object.assign(Object.assign({}, base), { parent });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else if (parent.type === "CharacterClass" &&
+ parent.unicodeSets &&
+ unicodeSets) {
+ const node = Object.assign(Object.assign({}, base), { parent,
+ unicodeSets });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else {
+ throw new Error("UnknownError");
+ }
+ }
+ onCharacterClassLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CharacterClass" ||
+ (node.parent.type !== "Alternative" &&
+ node.parent.type !== "CharacterClass")) {
+ throw new Error("UnknownError");
+ }
+ const parent = node.parent;
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = parent;
+ const expression = this._expressionBufferMap.get(node);
+ if (!expression) {
+ return;
+ }
+ if (node.elements.length > 0) {
+ throw new Error("UnknownError");
+ }
+ this._expressionBufferMap.delete(node);
+ const newNode = {
+ type: "ExpressionCharacterClass",
+ parent,
+ start: node.start,
+ end: node.end,
+ raw: node.raw,
+ negate: node.negate,
+ expression,
+ };
+ expression.parent = newNode;
+ if (node !== parent.elements.pop()) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(newNode);
+ }
+ onCharacterClassRange(start, end) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const elements = parent.elements;
+ const max = elements.pop();
+ if (!max || max.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ if (!parent.unicodeSets) {
+ const hyphen = elements.pop();
+ if (!hyphen ||
+ hyphen.type !== "Character" ||
+ hyphen.value !== HYPHEN_MINUS) {
+ throw new Error("UnknownError");
+ }
+ }
+ const min = elements.pop();
+ if (!min || min.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "CharacterClassRange",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ min,
+ max,
+ };
+ min.parent = node;
+ max.parent = node;
+ elements.push(node);
+ }
+ onClassIntersection(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBufferMap.get(parent)) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassSubtraction" ||
+ (left.type !== "ClassIntersection" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassIntersection",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBufferMap.set(parent, node);
+ }
+ onClassSubtraction(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBufferMap.get(parent)) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassIntersection" ||
+ (left.type !== "ClassSubtraction" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassSubtraction",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBufferMap.set(parent, node);
+ }
+ onClassStringDisjunctionEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "ClassStringDisjunction",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "ClassStringDisjunction" ||
+ node.parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onStringAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "ClassStringDisjunction") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "StringAlternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onStringAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+}
+class RegExpParser {
+ constructor(options) {
+ this._state = new RegExpParserState(options);
+ this._validator = new RegExpValidator(this._state);
+ }
+ parseLiteral(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateLiteral(source, start, end);
+ const pattern = this._state.pattern;
+ const flags = this._state.flags;
+ const literal = {
+ type: "RegExpLiteral",
+ parent: null,
+ start,
+ end,
+ raw: source,
+ pattern,
+ flags,
+ };
+ pattern.parent = literal;
+ flags.parent = literal;
+ return literal;
+ }
+ parseFlags(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateFlags(source, start, end);
+ return this._state.flags;
+ }
+ parsePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._state.source = source;
+ this._validator.validatePattern(source, start, end, uFlagOrFlags);
+ return this._state.pattern;
+ }
+}
+
+class RegExpVisitor {
+ constructor(handlers) {
+ this._handlers = handlers;
+ }
+ visit(node) {
+ switch (node.type) {
+ case "Alternative":
+ this.visitAlternative(node);
+ break;
+ case "Assertion":
+ this.visitAssertion(node);
+ break;
+ case "Backreference":
+ this.visitBackreference(node);
+ break;
+ case "CapturingGroup":
+ this.visitCapturingGroup(node);
+ break;
+ case "Character":
+ this.visitCharacter(node);
+ break;
+ case "CharacterClass":
+ this.visitCharacterClass(node);
+ break;
+ case "CharacterClassRange":
+ this.visitCharacterClassRange(node);
+ break;
+ case "CharacterSet":
+ this.visitCharacterSet(node);
+ break;
+ case "ClassIntersection":
+ this.visitClassIntersection(node);
+ break;
+ case "ClassStringDisjunction":
+ this.visitClassStringDisjunction(node);
+ break;
+ case "ClassSubtraction":
+ this.visitClassSubtraction(node);
+ break;
+ case "ExpressionCharacterClass":
+ this.visitExpressionCharacterClass(node);
+ break;
+ case "Flags":
+ this.visitFlags(node);
+ break;
+ case "Group":
+ this.visitGroup(node);
+ break;
+ case "Pattern":
+ this.visitPattern(node);
+ break;
+ case "Quantifier":
+ this.visitQuantifier(node);
+ break;
+ case "RegExpLiteral":
+ this.visitRegExpLiteral(node);
+ break;
+ case "StringAlternative":
+ this.visitStringAlternative(node);
+ break;
+ default:
+ throw new Error(`Unknown type: ${node.type}`);
+ }
+ }
+ visitAlternative(node) {
+ if (this._handlers.onAlternativeEnter) {
+ this._handlers.onAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onAlternativeLeave) {
+ this._handlers.onAlternativeLeave(node);
+ }
+ }
+ visitAssertion(node) {
+ if (this._handlers.onAssertionEnter) {
+ this._handlers.onAssertionEnter(node);
+ }
+ if (node.kind === "lookahead" || node.kind === "lookbehind") {
+ node.alternatives.forEach(this.visit, this);
+ }
+ if (this._handlers.onAssertionLeave) {
+ this._handlers.onAssertionLeave(node);
+ }
+ }
+ visitBackreference(node) {
+ if (this._handlers.onBackreferenceEnter) {
+ this._handlers.onBackreferenceEnter(node);
+ }
+ if (this._handlers.onBackreferenceLeave) {
+ this._handlers.onBackreferenceLeave(node);
+ }
+ }
+ visitCapturingGroup(node) {
+ if (this._handlers.onCapturingGroupEnter) {
+ this._handlers.onCapturingGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onCapturingGroupLeave) {
+ this._handlers.onCapturingGroupLeave(node);
+ }
+ }
+ visitCharacter(node) {
+ if (this._handlers.onCharacterEnter) {
+ this._handlers.onCharacterEnter(node);
+ }
+ if (this._handlers.onCharacterLeave) {
+ this._handlers.onCharacterLeave(node);
+ }
+ }
+ visitCharacterClass(node) {
+ if (this._handlers.onCharacterClassEnter) {
+ this._handlers.onCharacterClassEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onCharacterClassLeave) {
+ this._handlers.onCharacterClassLeave(node);
+ }
+ }
+ visitCharacterClassRange(node) {
+ if (this._handlers.onCharacterClassRangeEnter) {
+ this._handlers.onCharacterClassRangeEnter(node);
+ }
+ this.visitCharacter(node.min);
+ this.visitCharacter(node.max);
+ if (this._handlers.onCharacterClassRangeLeave) {
+ this._handlers.onCharacterClassRangeLeave(node);
+ }
+ }
+ visitCharacterSet(node) {
+ if (this._handlers.onCharacterSetEnter) {
+ this._handlers.onCharacterSetEnter(node);
+ }
+ if (this._handlers.onCharacterSetLeave) {
+ this._handlers.onCharacterSetLeave(node);
+ }
+ }
+ visitClassIntersection(node) {
+ if (this._handlers.onClassIntersectionEnter) {
+ this._handlers.onClassIntersectionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassIntersectionLeave) {
+ this._handlers.onClassIntersectionLeave(node);
+ }
+ }
+ visitClassStringDisjunction(node) {
+ if (this._handlers.onClassStringDisjunctionEnter) {
+ this._handlers.onClassStringDisjunctionEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onClassStringDisjunctionLeave) {
+ this._handlers.onClassStringDisjunctionLeave(node);
+ }
+ }
+ visitClassSubtraction(node) {
+ if (this._handlers.onClassSubtractionEnter) {
+ this._handlers.onClassSubtractionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassSubtractionLeave) {
+ this._handlers.onClassSubtractionLeave(node);
+ }
+ }
+ visitExpressionCharacterClass(node) {
+ if (this._handlers.onExpressionCharacterClassEnter) {
+ this._handlers.onExpressionCharacterClassEnter(node);
+ }
+ this.visit(node.expression);
+ if (this._handlers.onExpressionCharacterClassLeave) {
+ this._handlers.onExpressionCharacterClassLeave(node);
+ }
+ }
+ visitFlags(node) {
+ if (this._handlers.onFlagsEnter) {
+ this._handlers.onFlagsEnter(node);
+ }
+ if (this._handlers.onFlagsLeave) {
+ this._handlers.onFlagsLeave(node);
+ }
+ }
+ visitGroup(node) {
+ if (this._handlers.onGroupEnter) {
+ this._handlers.onGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onGroupLeave) {
+ this._handlers.onGroupLeave(node);
+ }
+ }
+ visitPattern(node) {
+ if (this._handlers.onPatternEnter) {
+ this._handlers.onPatternEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onPatternLeave) {
+ this._handlers.onPatternLeave(node);
+ }
+ }
+ visitQuantifier(node) {
+ if (this._handlers.onQuantifierEnter) {
+ this._handlers.onQuantifierEnter(node);
+ }
+ this.visit(node.element);
+ if (this._handlers.onQuantifierLeave) {
+ this._handlers.onQuantifierLeave(node);
+ }
+ }
+ visitRegExpLiteral(node) {
+ if (this._handlers.onRegExpLiteralEnter) {
+ this._handlers.onRegExpLiteralEnter(node);
+ }
+ this.visitPattern(node.pattern);
+ this.visitFlags(node.flags);
+ if (this._handlers.onRegExpLiteralLeave) {
+ this._handlers.onRegExpLiteralLeave(node);
+ }
+ }
+ visitStringAlternative(node) {
+ if (this._handlers.onStringAlternativeEnter) {
+ this._handlers.onStringAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onStringAlternativeLeave) {
+ this._handlers.onStringAlternativeLeave(node);
+ }
+ }
+}
+
+function parseRegExpLiteral(source, options) {
+ return new RegExpParser(options).parseLiteral(String(source));
+}
+function validateRegExpLiteral(source, options) {
+ new RegExpValidator(options).validateLiteral(source);
+}
+function visitRegExpAST(node, handlers) {
+ new RegExpVisitor(handlers).visit(node);
+}
+
+exports.AST = ast;
+exports.RegExpParser = RegExpParser;
+exports.RegExpSyntaxError = RegExpSyntaxError;
+exports.RegExpValidator = RegExpValidator;
+exports.parseRegExpLiteral = parseRegExpLiteral;
+exports.validateRegExpLiteral = validateRegExpLiteral;
+exports.visitRegExpAST = visitRegExpAST;
+//# sourceMappingURL=index.js.map
diff --git a/node_modules/@eslint-community/regexpp/index.js.map b/node_modules/@eslint-community/regexpp/index.js.map
new file mode 100644
index 0000000..fbd0e1e
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js.map","sources":[".temp/src/ecma-versions.ts",".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@eslint-community/regexpp/index.mjs b/node_modules/@eslint-community/regexpp/index.mjs
new file mode 100644
index 0000000..75510d8
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/index.mjs
@@ -0,0 +1,2737 @@
+var ast = /*#__PURE__*/Object.freeze({
+ __proto__: null
+});
+
+const latestEcmaVersion = 2024;
+
+let largeIdStartRanges = undefined;
+let largeIdContinueRanges = undefined;
+function isIdStart(cp) {
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp);
+}
+function isIdContinue(cp) {
+ if (cp < 0x30)
+ return false;
+ if (cp < 0x3a)
+ return true;
+ if (cp < 0x41)
+ return false;
+ if (cp < 0x5b)
+ return true;
+ if (cp === 0x5f)
+ return true;
+ if (cp < 0x61)
+ return false;
+ if (cp < 0x7b)
+ return true;
+ return isLargeIdStart(cp) || isLargeIdContinue(cp);
+}
+function isLargeIdStart(cp) {
+ return isInRange(cp, largeIdStartRanges !== null && largeIdStartRanges !== void 0 ? largeIdStartRanges : (largeIdStartRanges = initLargeIdStartRanges()));
+}
+function isLargeIdContinue(cp) {
+ return isInRange(cp, largeIdContinueRanges !== null && largeIdContinueRanges !== void 0 ? largeIdContinueRanges : (largeIdContinueRanges = initLargeIdContinueRanges()));
+}
+function initLargeIdStartRanges() {
+ return restoreRanges("4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 2 0 7 0 2 2 2 0 2 j 2 2a 2 3u 9 4l 2 11 3 0 7 14 20 q 5 3 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 8 a 6 n 2 5 i 15 1n 1h 4 0 j 0 8 9 g f 5 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 b 0 9 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 o 0 c 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 f 4 0 r 2 3 0 3 1 v 0 5 7 2 2 2 m 2 9 2 4 4 0 w 1 2 1 g 1 i 8 2 2 2 14 3 0 h 0 6 2 9 2 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 2 4 2 n 2 0 2 9 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2d 3 5 4 h7 3 g 2 p 6 22 4 a 8 h e i f h f c 2 2 g 1f 10 0 5 0 1w 2g 8 14 2 0 6 1x b u 1e t 3 4 c 17 5 p 1j m a 1g 2b 0 2m 1a i 7 1j t e 1 b 17 r z 16 2 b z 3 8 8 16 3 2 16 3 2 5 2 1 4 0 6 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 3 5 7 0 2 0 2 0 2 f 3 3 6 4 5 0 i 14 22g 6c 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 fb 2 q 8 8 4 3 4 5 2d 5 4 2 2h 2 3 6 16 2 2l i v 1d f e9 533 1t h3g 1w 19 3 7g 4 f b 1 l 1a h u 3 27 14 8 3 2u 3 1r 6 1 2 0 2 4 p f 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 2 1 c r b m q s 8 1a t 0 h 4 2 9 b 4 2 14 o 2 2 7 l m 4 0 4 1d 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 2 16 2 d 7 36 u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2 10 b 2 p 2 i 2 1 2 e 3 d z 3e 1y 1g 7g s 4 1c 1c v e t 6 11 b t 3 z 5 7 2 4 17 4d j z 5 z 5 13 9 1f d a 2 e 2 6 2 1 2 a 2 e 2 6 2 1 1w 8m a l b 7 p 5 2 15 2 8 1y 5 3 0 2 17 2 1 4 0 3 m b m a u 1u i 2 1 b l b p 1z 1j 7 1 1t 0 g 3 2 2 2 s 17 s 4 s 10 7 2 r s 1h b l b i e h 33 20 1k 1e e 1e e z 9p 15 7 1 27 s b 0 9 l 17 h 1b k s m d 1g 1m 1 3 0 e 18 x o r z u 0 3 0 9 y 4 0 d 1b f 3 m 0 2 0 10 h 2 o k 1 1s 6 2 0 2 3 2 e 2 9 8 1a 13 7 3 1 3 l 2 6 2 1 2 4 4 0 j 0 d 4 4f 1g j 3 l 2 v 1b l 1 2 0 55 1a 16 3 11 1b l 0 1o 16 e 0 20 q 12 6 56 17 39 1r w 7 3 0 3 7 2 1 2 n g 0 2 0 2n 7 3 12 h 0 2 0 t 0 b 13 8 0 m 0 c 19 k 0 j 20 7c 8 2 10 i 0 1e t 35 6 2 1 2 11 m 0 q 5 2 1 2 v f 0 94 i g 0 2 c 2 x 3h 0 28 pl 2v 32 i 5f 219 2o g tr i 5 33u g6 6nu fs 8 u i 26 i t j 1b h 3 w k 6 i j5 1r 3l 22 6 0 1v c 1t 1 2 0 t 4qf 9 yd 17 8 6w8 3 2 6 2 1 2 82 g 0 u 2 3 0 f 3 9 az 1s5 2y 6 c 4 8 8 9 4mf 2c 2 1y 2 1 3 0 3 1 3 3 2 b 2 0 2 6 2 1s 2 3 3 7 2 6 2 r 2 3 2 4 2 0 4 6 2 9f 3 o 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 u 2 o 2 7 1f9 u 7 5 7a 1p 43 18 b 6 h 0 8y t j 17 dh r l1 6 2 3 2 1 2 e 2 5g 1o 1v 8 0 xh 3 2 q 2 1 2 0 3 0 2 9 2 3 2 0 2 0 7 0 5 0 2 0 2 0 2 2 2 1 2 0 3 0 2 0 2 0 2 0 2 0 2 1 2 0 3 3 2 6 2 3 2 3 2 0 2 9 2 g 6 2 2 4 2 g 3et wyn x 37d 7 65 3 4g1 f 5rk g h9 1wj f1 15v 3t6 6 38f");
+}
+function initLargeIdContinueRanges() {
+ return restoreRanges("53 0 g9 33 o 0 70 4 7e 18 2 0 2 1 2 1 2 0 21 a 1d u 7 0 2u 6 3 5 3 1 2 3 3 9 o 0 v q 2k a g 9 y 8 a 0 p 3 2 8 2 2 2 4 18 2 1p 7 17 n 2 w 1j 2 2 h 2 6 b 1 3 9 i 2 1l 0 2 6 3 1 3 2 a 0 b 1 3 9 f 0 3 2 1l 0 2 4 5 1 3 2 4 0 l b 4 0 c 2 1l 0 2 7 2 2 2 2 l 1 3 9 b 5 2 2 1l 0 2 6 3 1 3 2 8 2 b 1 3 9 j 0 1o 4 4 2 2 3 a 0 f 9 h 4 1k 0 2 6 2 2 2 3 8 1 c 1 3 9 i 2 1l 0 2 6 2 2 2 3 8 1 c 1 3 9 4 0 d 3 1k 1 2 6 2 2 2 3 a 0 b 1 3 9 i 2 1z 0 5 5 2 0 2 7 7 9 3 1 1q 0 3 6 d 7 2 9 2g 0 3 8 c 6 2 9 1r 1 7 9 c 0 2 0 2 0 5 1 1e j 2 1 6 a 2 z a 0 2t j 2 9 d 3 5 2 2 2 3 6 4 3 e b 2 e jk 2 a 8 pt 3 t 2 u 1 v 1 1t v a 0 3 9 y 2 2 a 40 0 3b b 5 b b 9 3l a 1p 4 1m 9 2 s 3 a 7 9 n d 2 f 1e 4 1c g c 9 i 8 d 2 v c 3 9 19 d 1d j 9 9 7 9 3b 2 2 k 5 0 7 0 3 2 5j 1r el 1 1e 1 k 0 3g c 5 0 4 b 2db 2 3y 0 2p v ff 5 2y 1 2p 0 n51 9 1y 0 5 9 x 1 29 1 7l 0 4 0 5 0 o 4 5 0 2c 1 1f h b 9 7 h e a t 7 q c 19 3 1c d g 9 c 0 b 9 1c d d 0 9 1 3 9 y 2 1f 0 2 2 3 1 6 1 2 0 16 4 6 1 6l 7 2 1 3 9 fmt 0 ki f h f 4 1 p 2 5d 9 12 0 12 0 ig 0 6b 0 46 4 86 9 120 2 2 1 6 3 15 2 5 0 4m 1 fy 3 9 9 aa 1 29 2 1z a 1e 3 3f 2 1i e w a 3 1 b 3 1a a 8 0 1a 9 7 2 11 d 2 9 6 1 19 0 d 2 1d d 9 3 2 b 2b b 7 0 3 0 4e b 6 9 7 3 1k 1 2 6 3 1 3 2 a 0 b 1 3 6 4 4 5d h a 9 5 0 2a j d 9 5y 6 3 8 s 1 2b g g 9 2a c 9 9 2c e 5 9 6r e 4m 9 1z 5 2 1 3 3 2 0 2 1 d 9 3c 6 3 6 4 0 t 9 15 6 2 3 9 0 a a 1b f ba 7 2 7 h 9 1l l 2 d 3f 5 4 0 2 1 2 6 2 0 9 9 1d 4 2 1 2 4 9 9 96 3 a 1 2 0 1d 6 4 4 e 9 44n 0 7 e aob 9 2f 9 13 4 1o 6 q 9 s6 0 2 1i 8 3 2a 0 c 1 f58 1 3mq 19 3 m f3 4 4 5 9 7 3 6 v 3 45 2 13e 1d e9 1i 5 1d 9 0 f 0 n 4 2 e 11t 6 2 g 3 6 2 1 2 4 2t 0 4h 6 a 9 9x 0 1q d dv d rb 6 32 6 6 9 3o7 9 gvt3 6n");
+}
+function isInRange(cp, ranges) {
+ let l = 0, r = (ranges.length / 2) | 0, i = 0, min = 0, max = 0;
+ while (l < r) {
+ i = ((l + r) / 2) | 0;
+ min = ranges[2 * i];
+ max = ranges[2 * i + 1];
+ if (cp < min) {
+ r = i;
+ }
+ else if (cp > max) {
+ l = i + 1;
+ }
+ else {
+ return true;
+ }
+ }
+ return false;
+}
+function restoreRanges(data) {
+ let last = 0;
+ return data.split(" ").map((s) => (last += parseInt(s, 36) | 0));
+}
+
+class DataSet {
+ constructor(raw2018, raw2019, raw2020, raw2021, raw2022, raw2023, raw2024) {
+ this._raw2018 = raw2018;
+ this._raw2019 = raw2019;
+ this._raw2020 = raw2020;
+ this._raw2021 = raw2021;
+ this._raw2022 = raw2022;
+ this._raw2023 = raw2023;
+ this._raw2024 = raw2024;
+ }
+ get es2018() {
+ var _a;
+ return ((_a = this._set2018) !== null && _a !== void 0 ? _a : (this._set2018 = new Set(this._raw2018.split(" "))));
+ }
+ get es2019() {
+ var _a;
+ return ((_a = this._set2019) !== null && _a !== void 0 ? _a : (this._set2019 = new Set(this._raw2019.split(" "))));
+ }
+ get es2020() {
+ var _a;
+ return ((_a = this._set2020) !== null && _a !== void 0 ? _a : (this._set2020 = new Set(this._raw2020.split(" "))));
+ }
+ get es2021() {
+ var _a;
+ return ((_a = this._set2021) !== null && _a !== void 0 ? _a : (this._set2021 = new Set(this._raw2021.split(" "))));
+ }
+ get es2022() {
+ var _a;
+ return ((_a = this._set2022) !== null && _a !== void 0 ? _a : (this._set2022 = new Set(this._raw2022.split(" "))));
+ }
+ get es2023() {
+ var _a;
+ return ((_a = this._set2023) !== null && _a !== void 0 ? _a : (this._set2023 = new Set(this._raw2023.split(" "))));
+ }
+ get es2024() {
+ var _a;
+ return ((_a = this._set2024) !== null && _a !== void 0 ? _a : (this._set2024 = new Set(this._raw2024.split(" "))));
+ }
+}
+const gcNameSet = new Set(["General_Category", "gc"]);
+const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]);
+const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", "", "", "", "");
+const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz", "");
+const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict", "", "", "");
+const binPropertyOfStringsSets = new DataSet("", "", "", "", "", "", "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji RGI_Emoji_Flag_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence");
+function isValidUnicodeProperty(version, name, value) {
+ if (gcNameSet.has(name)) {
+ return version >= 2018 && gcValueSets.es2018.has(value);
+ }
+ if (scNameSet.has(name)) {
+ return ((version >= 2018 && scValueSets.es2018.has(value)) ||
+ (version >= 2019 && scValueSets.es2019.has(value)) ||
+ (version >= 2020 && scValueSets.es2020.has(value)) ||
+ (version >= 2021 && scValueSets.es2021.has(value)) ||
+ (version >= 2022 && scValueSets.es2022.has(value)) ||
+ (version >= 2023 && scValueSets.es2023.has(value)));
+ }
+ return false;
+}
+function isValidLoneUnicodeProperty(version, value) {
+ return ((version >= 2018 && binPropertySets.es2018.has(value)) ||
+ (version >= 2019 && binPropertySets.es2019.has(value)) ||
+ (version >= 2021 && binPropertySets.es2021.has(value)));
+}
+function isValidLoneUnicodePropertyOfString(version, value) {
+ return version >= 2024 && binPropertyOfStringsSets.es2024.has(value);
+}
+
+const BACKSPACE = 0x08;
+const CHARACTER_TABULATION = 0x09;
+const LINE_FEED = 0x0a;
+const LINE_TABULATION = 0x0b;
+const FORM_FEED = 0x0c;
+const CARRIAGE_RETURN = 0x0d;
+const EXCLAMATION_MARK = 0x21;
+const NUMBER_SIGN = 0x23;
+const DOLLAR_SIGN = 0x24;
+const PERCENT_SIGN = 0x25;
+const AMPERSAND = 0x26;
+const LEFT_PARENTHESIS = 0x28;
+const RIGHT_PARENTHESIS = 0x29;
+const ASTERISK = 0x2a;
+const PLUS_SIGN = 0x2b;
+const COMMA = 0x2c;
+const HYPHEN_MINUS = 0x2d;
+const FULL_STOP = 0x2e;
+const SOLIDUS = 0x2f;
+const DIGIT_ZERO = 0x30;
+const DIGIT_ONE = 0x31;
+const DIGIT_SEVEN = 0x37;
+const DIGIT_NINE = 0x39;
+const COLON = 0x3a;
+const SEMICOLON = 0x3b;
+const LESS_THAN_SIGN = 0x3c;
+const EQUALS_SIGN = 0x3d;
+const GREATER_THAN_SIGN = 0x3e;
+const QUESTION_MARK = 0x3f;
+const COMMERCIAL_AT = 0x40;
+const LATIN_CAPITAL_LETTER_A = 0x41;
+const LATIN_CAPITAL_LETTER_B = 0x42;
+const LATIN_CAPITAL_LETTER_D = 0x44;
+const LATIN_CAPITAL_LETTER_F = 0x46;
+const LATIN_CAPITAL_LETTER_P = 0x50;
+const LATIN_CAPITAL_LETTER_S = 0x53;
+const LATIN_CAPITAL_LETTER_W = 0x57;
+const LATIN_CAPITAL_LETTER_Z = 0x5a;
+const LOW_LINE = 0x5f;
+const LATIN_SMALL_LETTER_A = 0x61;
+const LATIN_SMALL_LETTER_B = 0x62;
+const LATIN_SMALL_LETTER_C = 0x63;
+const LATIN_SMALL_LETTER_D = 0x64;
+const LATIN_SMALL_LETTER_F = 0x66;
+const LATIN_SMALL_LETTER_G = 0x67;
+const LATIN_SMALL_LETTER_I = 0x69;
+const LATIN_SMALL_LETTER_K = 0x6b;
+const LATIN_SMALL_LETTER_M = 0x6d;
+const LATIN_SMALL_LETTER_N = 0x6e;
+const LATIN_SMALL_LETTER_P = 0x70;
+const LATIN_SMALL_LETTER_Q = 0x71;
+const LATIN_SMALL_LETTER_R = 0x72;
+const LATIN_SMALL_LETTER_S = 0x73;
+const LATIN_SMALL_LETTER_T = 0x74;
+const LATIN_SMALL_LETTER_U = 0x75;
+const LATIN_SMALL_LETTER_V = 0x76;
+const LATIN_SMALL_LETTER_W = 0x77;
+const LATIN_SMALL_LETTER_X = 0x78;
+const LATIN_SMALL_LETTER_Y = 0x79;
+const LATIN_SMALL_LETTER_Z = 0x7a;
+const LEFT_SQUARE_BRACKET = 0x5b;
+const REVERSE_SOLIDUS = 0x5c;
+const RIGHT_SQUARE_BRACKET = 0x5d;
+const CIRCUMFLEX_ACCENT = 0x5e;
+const GRAVE_ACCENT = 0x60;
+const LEFT_CURLY_BRACKET = 0x7b;
+const VERTICAL_LINE = 0x7c;
+const RIGHT_CURLY_BRACKET = 0x7d;
+const TILDE = 0x7e;
+const ZERO_WIDTH_NON_JOINER = 0x200c;
+const ZERO_WIDTH_JOINER = 0x200d;
+const LINE_SEPARATOR = 0x2028;
+const PARAGRAPH_SEPARATOR = 0x2029;
+const MIN_CODE_POINT = 0x00;
+const MAX_CODE_POINT = 0x10ffff;
+function isLatinLetter(code) {
+ return ((code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_Z) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_Z));
+}
+function isDecimalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_NINE;
+}
+function isOctalDigit(code) {
+ return code >= DIGIT_ZERO && code <= DIGIT_SEVEN;
+}
+function isHexDigit(code) {
+ return ((code >= DIGIT_ZERO && code <= DIGIT_NINE) ||
+ (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) ||
+ (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F));
+}
+function isLineTerminator(code) {
+ return (code === LINE_FEED ||
+ code === CARRIAGE_RETURN ||
+ code === LINE_SEPARATOR ||
+ code === PARAGRAPH_SEPARATOR);
+}
+function isValidUnicode(code) {
+ return code >= MIN_CODE_POINT && code <= MAX_CODE_POINT;
+}
+function digitToInt(code) {
+ if (code >= LATIN_SMALL_LETTER_A && code <= LATIN_SMALL_LETTER_F) {
+ return code - LATIN_SMALL_LETTER_A + 10;
+ }
+ if (code >= LATIN_CAPITAL_LETTER_A && code <= LATIN_CAPITAL_LETTER_F) {
+ return code - LATIN_CAPITAL_LETTER_A + 10;
+ }
+ return code - DIGIT_ZERO;
+}
+function isLeadSurrogate(code) {
+ return code >= 0xd800 && code <= 0xdbff;
+}
+function isTrailSurrogate(code) {
+ return code >= 0xdc00 && code <= 0xdfff;
+}
+function combineSurrogatePair(lead, trail) {
+ return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000;
+}
+
+const legacyImpl = {
+ at(s, end, i) {
+ return i < end ? s.charCodeAt(i) : -1;
+ },
+ width(c) {
+ return 1;
+ },
+};
+const unicodeImpl = {
+ at(s, end, i) {
+ return i < end ? s.codePointAt(i) : -1;
+ },
+ width(c) {
+ return c > 0xffff ? 2 : 1;
+ },
+};
+class Reader {
+ constructor() {
+ this._impl = legacyImpl;
+ this._s = "";
+ this._i = 0;
+ this._end = 0;
+ this._cp1 = -1;
+ this._w1 = 1;
+ this._cp2 = -1;
+ this._w2 = 1;
+ this._cp3 = -1;
+ this._w3 = 1;
+ this._cp4 = -1;
+ }
+ get source() {
+ return this._s;
+ }
+ get index() {
+ return this._i;
+ }
+ get currentCodePoint() {
+ return this._cp1;
+ }
+ get nextCodePoint() {
+ return this._cp2;
+ }
+ get nextCodePoint2() {
+ return this._cp3;
+ }
+ get nextCodePoint3() {
+ return this._cp4;
+ }
+ reset(source, start, end, uFlag) {
+ this._impl = uFlag ? unicodeImpl : legacyImpl;
+ this._s = source;
+ this._end = end;
+ this.rewind(start);
+ }
+ rewind(index) {
+ const impl = this._impl;
+ this._i = index;
+ this._cp1 = impl.at(this._s, this._end, index);
+ this._w1 = impl.width(this._cp1);
+ this._cp2 = impl.at(this._s, this._end, index + this._w1);
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = impl.at(this._s, this._end, index + this._w1 + this._w2);
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, index + this._w1 + this._w2 + this._w3);
+ }
+ advance() {
+ if (this._cp1 !== -1) {
+ const impl = this._impl;
+ this._i += this._w1;
+ this._cp1 = this._cp2;
+ this._w1 = this._w2;
+ this._cp2 = this._cp3;
+ this._w2 = impl.width(this._cp2);
+ this._cp3 = this._cp4;
+ this._w3 = impl.width(this._cp3);
+ this._cp4 = impl.at(this._s, this._end, this._i + this._w1 + this._w2 + this._w3);
+ }
+ }
+ eat(cp) {
+ if (this._cp1 === cp) {
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat2(cp1, cp2) {
+ if (this._cp1 === cp1 && this._cp2 === cp2) {
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eat3(cp1, cp2, cp3) {
+ if (this._cp1 === cp1 && this._cp2 === cp2 && this._cp3 === cp3) {
+ this.advance();
+ this.advance();
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+}
+
+class RegExpSyntaxError extends SyntaxError {
+ constructor(message, index) {
+ super(message);
+ this.index = index;
+ }
+}
+function newRegExpSyntaxError(srcCtx, flags, index, message) {
+ let source = "";
+ if (srcCtx.kind === "literal") {
+ const literal = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ if (literal) {
+ source = `: ${literal}`;
+ }
+ }
+ else if (srcCtx.kind === "pattern") {
+ const pattern = srcCtx.source.slice(srcCtx.start, srcCtx.end);
+ const flagsText = `${flags.unicode ? "u" : ""}${flags.unicodeSets ? "v" : ""}`;
+ source = `: /${pattern}/${flagsText}`;
+ }
+ return new RegExpSyntaxError(`Invalid regular expression${source}: ${message}`, index);
+}
+
+const SYNTAX_CHARACTER = new Set([
+ CIRCUMFLEX_ACCENT,
+ DOLLAR_SIGN,
+ REVERSE_SOLIDUS,
+ FULL_STOP,
+ ASTERISK,
+ PLUS_SIGN,
+ QUESTION_MARK,
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER = new Set([
+ AMPERSAND,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ DOLLAR_SIGN,
+ PERCENT_SIGN,
+ ASTERISK,
+ PLUS_SIGN,
+ COMMA,
+ FULL_STOP,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ QUESTION_MARK,
+ COMMERCIAL_AT,
+ CIRCUMFLEX_ACCENT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+const CLASS_SET_SYNTAX_CHARACTER = new Set([
+ LEFT_PARENTHESIS,
+ RIGHT_PARENTHESIS,
+ LEFT_SQUARE_BRACKET,
+ RIGHT_SQUARE_BRACKET,
+ LEFT_CURLY_BRACKET,
+ RIGHT_CURLY_BRACKET,
+ SOLIDUS,
+ HYPHEN_MINUS,
+ REVERSE_SOLIDUS,
+ VERTICAL_LINE,
+]);
+const CLASS_SET_RESERVED_PUNCTUATOR = new Set([
+ AMPERSAND,
+ HYPHEN_MINUS,
+ EXCLAMATION_MARK,
+ NUMBER_SIGN,
+ PERCENT_SIGN,
+ COMMA,
+ COLON,
+ SEMICOLON,
+ LESS_THAN_SIGN,
+ EQUALS_SIGN,
+ GREATER_THAN_SIGN,
+ COMMERCIAL_AT,
+ GRAVE_ACCENT,
+ TILDE,
+]);
+function isSyntaxCharacter(cp) {
+ return SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedDoublePunctuatorCharacter(cp) {
+ return CLASS_SET_RESERVED_DOUBLE_PUNCTUATOR_CHARACTER.has(cp);
+}
+function isClassSetSyntaxCharacter(cp) {
+ return CLASS_SET_SYNTAX_CHARACTER.has(cp);
+}
+function isClassSetReservedPunctuator(cp) {
+ return CLASS_SET_RESERVED_PUNCTUATOR.has(cp);
+}
+function isIdentifierStartChar(cp) {
+ return isIdStart(cp) || cp === DOLLAR_SIGN || cp === LOW_LINE;
+}
+function isIdentifierPartChar(cp) {
+ return (isIdContinue(cp) ||
+ cp === DOLLAR_SIGN ||
+ cp === ZERO_WIDTH_NON_JOINER ||
+ cp === ZERO_WIDTH_JOINER);
+}
+function isUnicodePropertyNameCharacter(cp) {
+ return isLatinLetter(cp) || cp === LOW_LINE;
+}
+function isUnicodePropertyValueCharacter(cp) {
+ return isUnicodePropertyNameCharacter(cp) || isDecimalDigit(cp);
+}
+class RegExpValidator {
+ constructor(options) {
+ this._reader = new Reader();
+ this._unicodeMode = false;
+ this._unicodeSetsMode = false;
+ this._nFlag = false;
+ this._lastIntValue = 0;
+ this._lastRange = {
+ min: 0,
+ max: Number.POSITIVE_INFINITY,
+ };
+ this._lastStrValue = "";
+ this._lastAssertionIsQuantifiable = false;
+ this._numCapturingParens = 0;
+ this._groupNames = new Set();
+ this._backreferenceNames = new Set();
+ this._srcCtx = null;
+ this._options = options !== null && options !== void 0 ? options : {};
+ }
+ validateLiteral(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "literal" };
+ this._unicodeSetsMode = this._unicodeMode = this._nFlag = false;
+ this.reset(source, start, end);
+ this.onLiteralEnter(start);
+ if (this.eat(SOLIDUS) && this.eatRegExpBody() && this.eat(SOLIDUS)) {
+ const flagStart = this.index;
+ const unicode = source.includes("u", flagStart);
+ const unicodeSets = source.includes("v", flagStart);
+ this.validateFlagsInternal(source, flagStart, end);
+ this.validatePatternInternal(source, start + 1, flagStart - 1, {
+ unicode,
+ unicodeSets,
+ });
+ }
+ else if (start >= end) {
+ this.raise("Empty");
+ }
+ else {
+ const c = String.fromCodePoint(this.currentCodePoint);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ this.onLiteralLeave(start, end);
+ }
+ validateFlags(source, start = 0, end = source.length) {
+ this._srcCtx = { source, start, end, kind: "flags" };
+ this.validateFlagsInternal(source, start, end);
+ }
+ validatePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._srcCtx = { source, start, end, kind: "pattern" };
+ this.validatePatternInternal(source, start, end, uFlagOrFlags);
+ }
+ validatePatternInternal(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ const mode = this._parseFlagsOptionToMode(uFlagOrFlags, end);
+ this._unicodeMode = mode.unicodeMode;
+ this._nFlag = mode.nFlag;
+ this._unicodeSetsMode = mode.unicodeSetsMode;
+ this.reset(source, start, end);
+ this.consumePattern();
+ if (!this._nFlag &&
+ this.ecmaVersion >= 2018 &&
+ this._groupNames.size > 0) {
+ this._nFlag = true;
+ this.rewind(start);
+ this.consumePattern();
+ }
+ }
+ validateFlagsInternal(source, start, end) {
+ const existingFlags = new Set();
+ let global = false;
+ let ignoreCase = false;
+ let multiline = false;
+ let sticky = false;
+ let unicode = false;
+ let dotAll = false;
+ let hasIndices = false;
+ let unicodeSets = false;
+ for (let i = start; i < end; ++i) {
+ const flag = source.charCodeAt(i);
+ if (existingFlags.has(flag)) {
+ this.raise(`Duplicated flag '${source[i]}'`, { index: start });
+ }
+ existingFlags.add(flag);
+ if (flag === LATIN_SMALL_LETTER_G) {
+ global = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_I) {
+ ignoreCase = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_M) {
+ multiline = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_U &&
+ this.ecmaVersion >= 2015) {
+ unicode = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_Y &&
+ this.ecmaVersion >= 2015) {
+ sticky = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_S &&
+ this.ecmaVersion >= 2018) {
+ dotAll = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_D &&
+ this.ecmaVersion >= 2022) {
+ hasIndices = true;
+ }
+ else if (flag === LATIN_SMALL_LETTER_V &&
+ this.ecmaVersion >= 2024) {
+ unicodeSets = true;
+ }
+ else {
+ this.raise(`Invalid flag '${source[i]}'`, { index: start });
+ }
+ }
+ this.onRegExpFlags(start, end, {
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ });
+ }
+ _parseFlagsOptionToMode(uFlagOrFlags, sourceEnd) {
+ let unicode = false;
+ let unicodeSets = false;
+ if (uFlagOrFlags && this.ecmaVersion >= 2015) {
+ if (typeof uFlagOrFlags === "object") {
+ unicode = Boolean(uFlagOrFlags.unicode);
+ if (this.ecmaVersion >= 2024) {
+ unicodeSets = Boolean(uFlagOrFlags.unicodeSets);
+ }
+ }
+ else {
+ unicode = uFlagOrFlags;
+ }
+ }
+ if (unicode && unicodeSets) {
+ this.raise("Invalid regular expression flags", {
+ index: sourceEnd + 1,
+ unicode,
+ unicodeSets,
+ });
+ }
+ const unicodeMode = unicode || unicodeSets;
+ const nFlag = (unicode && this.ecmaVersion >= 2018) ||
+ unicodeSets ||
+ Boolean(this._options.strict && this.ecmaVersion >= 2023);
+ const unicodeSetsMode = unicodeSets;
+ return { unicodeMode, nFlag, unicodeSetsMode };
+ }
+ get strict() {
+ return Boolean(this._options.strict) || this._unicodeMode;
+ }
+ get ecmaVersion() {
+ var _a;
+ return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ onLiteralEnter(start) {
+ if (this._options.onLiteralEnter) {
+ this._options.onLiteralEnter(start);
+ }
+ }
+ onLiteralLeave(start, end) {
+ if (this._options.onLiteralLeave) {
+ this._options.onLiteralLeave(start, end);
+ }
+ }
+ onRegExpFlags(start, end, flags) {
+ if (this._options.onRegExpFlags) {
+ this._options.onRegExpFlags(start, end, flags);
+ }
+ if (this._options.onFlags) {
+ this._options.onFlags(start, end, flags.global, flags.ignoreCase, flags.multiline, flags.unicode, flags.sticky, flags.dotAll, flags.hasIndices);
+ }
+ }
+ onPatternEnter(start) {
+ if (this._options.onPatternEnter) {
+ this._options.onPatternEnter(start);
+ }
+ }
+ onPatternLeave(start, end) {
+ if (this._options.onPatternLeave) {
+ this._options.onPatternLeave(start, end);
+ }
+ }
+ onDisjunctionEnter(start) {
+ if (this._options.onDisjunctionEnter) {
+ this._options.onDisjunctionEnter(start);
+ }
+ }
+ onDisjunctionLeave(start, end) {
+ if (this._options.onDisjunctionLeave) {
+ this._options.onDisjunctionLeave(start, end);
+ }
+ }
+ onAlternativeEnter(start, index) {
+ if (this._options.onAlternativeEnter) {
+ this._options.onAlternativeEnter(start, index);
+ }
+ }
+ onAlternativeLeave(start, end, index) {
+ if (this._options.onAlternativeLeave) {
+ this._options.onAlternativeLeave(start, end, index);
+ }
+ }
+ onGroupEnter(start) {
+ if (this._options.onGroupEnter) {
+ this._options.onGroupEnter(start);
+ }
+ }
+ onGroupLeave(start, end) {
+ if (this._options.onGroupLeave) {
+ this._options.onGroupLeave(start, end);
+ }
+ }
+ onCapturingGroupEnter(start, name) {
+ if (this._options.onCapturingGroupEnter) {
+ this._options.onCapturingGroupEnter(start, name);
+ }
+ }
+ onCapturingGroupLeave(start, end, name) {
+ if (this._options.onCapturingGroupLeave) {
+ this._options.onCapturingGroupLeave(start, end, name);
+ }
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ if (this._options.onQuantifier) {
+ this._options.onQuantifier(start, end, min, max, greedy);
+ }
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ if (this._options.onLookaroundAssertionEnter) {
+ this._options.onLookaroundAssertionEnter(start, kind, negate);
+ }
+ }
+ onLookaroundAssertionLeave(start, end, kind, negate) {
+ if (this._options.onLookaroundAssertionLeave) {
+ this._options.onLookaroundAssertionLeave(start, end, kind, negate);
+ }
+ }
+ onEdgeAssertion(start, end, kind) {
+ if (this._options.onEdgeAssertion) {
+ this._options.onEdgeAssertion(start, end, kind);
+ }
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ if (this._options.onWordBoundaryAssertion) {
+ this._options.onWordBoundaryAssertion(start, end, kind, negate);
+ }
+ }
+ onAnyCharacterSet(start, end, kind) {
+ if (this._options.onAnyCharacterSet) {
+ this._options.onAnyCharacterSet(start, end, kind);
+ }
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ if (this._options.onEscapeCharacterSet) {
+ this._options.onEscapeCharacterSet(start, end, kind, negate);
+ }
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ if (this._options.onUnicodePropertyCharacterSet) {
+ this._options.onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings);
+ }
+ }
+ onCharacter(start, end, value) {
+ if (this._options.onCharacter) {
+ this._options.onCharacter(start, end, value);
+ }
+ }
+ onBackreference(start, end, ref) {
+ if (this._options.onBackreference) {
+ this._options.onBackreference(start, end, ref);
+ }
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ if (this._options.onCharacterClassEnter) {
+ this._options.onCharacterClassEnter(start, negate, unicodeSets);
+ }
+ }
+ onCharacterClassLeave(start, end, negate) {
+ if (this._options.onCharacterClassLeave) {
+ this._options.onCharacterClassLeave(start, end, negate);
+ }
+ }
+ onCharacterClassRange(start, end, min, max) {
+ if (this._options.onCharacterClassRange) {
+ this._options.onCharacterClassRange(start, end, min, max);
+ }
+ }
+ onClassIntersection(start, end) {
+ if (this._options.onClassIntersection) {
+ this._options.onClassIntersection(start, end);
+ }
+ }
+ onClassSubtraction(start, end) {
+ if (this._options.onClassSubtraction) {
+ this._options.onClassSubtraction(start, end);
+ }
+ }
+ onClassStringDisjunctionEnter(start) {
+ if (this._options.onClassStringDisjunctionEnter) {
+ this._options.onClassStringDisjunctionEnter(start);
+ }
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ if (this._options.onClassStringDisjunctionLeave) {
+ this._options.onClassStringDisjunctionLeave(start, end);
+ }
+ }
+ onStringAlternativeEnter(start, index) {
+ if (this._options.onStringAlternativeEnter) {
+ this._options.onStringAlternativeEnter(start, index);
+ }
+ }
+ onStringAlternativeLeave(start, end, index) {
+ if (this._options.onStringAlternativeLeave) {
+ this._options.onStringAlternativeLeave(start, end, index);
+ }
+ }
+ get index() {
+ return this._reader.index;
+ }
+ get currentCodePoint() {
+ return this._reader.currentCodePoint;
+ }
+ get nextCodePoint() {
+ return this._reader.nextCodePoint;
+ }
+ get nextCodePoint2() {
+ return this._reader.nextCodePoint2;
+ }
+ get nextCodePoint3() {
+ return this._reader.nextCodePoint3;
+ }
+ reset(source, start, end) {
+ this._reader.reset(source, start, end, this._unicodeMode);
+ }
+ rewind(index) {
+ this._reader.rewind(index);
+ }
+ advance() {
+ this._reader.advance();
+ }
+ eat(cp) {
+ return this._reader.eat(cp);
+ }
+ eat2(cp1, cp2) {
+ return this._reader.eat2(cp1, cp2);
+ }
+ eat3(cp1, cp2, cp3) {
+ return this._reader.eat3(cp1, cp2, cp3);
+ }
+ raise(message, context) {
+ var _a, _b, _c;
+ throw newRegExpSyntaxError(this._srcCtx, {
+ unicode: (_a = context === null || context === void 0 ? void 0 : context.unicode) !== null && _a !== void 0 ? _a : (this._unicodeMode && !this._unicodeSetsMode),
+ unicodeSets: (_b = context === null || context === void 0 ? void 0 : context.unicodeSets) !== null && _b !== void 0 ? _b : this._unicodeSetsMode,
+ }, (_c = context === null || context === void 0 ? void 0 : context.index) !== null && _c !== void 0 ? _c : this.index, message);
+ }
+ eatRegExpBody() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ for (;;) {
+ const cp = this.currentCodePoint;
+ if (cp === -1 || isLineTerminator(cp)) {
+ const kind = inClass ? "character class" : "regular expression";
+ this.raise(`Unterminated ${kind}`);
+ }
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if ((cp === SOLIDUS && !inClass) ||
+ (cp === ASTERISK && this.index === start)) {
+ break;
+ }
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ consumePattern() {
+ const start = this.index;
+ this._numCapturingParens = this.countCapturingParens();
+ this._groupNames.clear();
+ this._backreferenceNames.clear();
+ this.onPatternEnter(start);
+ this.consumeDisjunction();
+ const cp = this.currentCodePoint;
+ if (this.currentCodePoint !== -1) {
+ if (cp === RIGHT_PARENTHESIS) {
+ this.raise("Unmatched ')'");
+ }
+ if (cp === REVERSE_SOLIDUS) {
+ this.raise("\\ at end of pattern");
+ }
+ if (cp === RIGHT_SQUARE_BRACKET || cp === RIGHT_CURLY_BRACKET) {
+ this.raise("Lone quantifier brackets");
+ }
+ const c = String.fromCodePoint(cp);
+ this.raise(`Unexpected character '${c}'`);
+ }
+ for (const name of this._backreferenceNames) {
+ if (!this._groupNames.has(name)) {
+ this.raise("Invalid named capture referenced");
+ }
+ }
+ this.onPatternLeave(start, this.index);
+ }
+ countCapturingParens() {
+ const start = this.index;
+ let inClass = false;
+ let escaped = false;
+ let count = 0;
+ let cp = 0;
+ while ((cp = this.currentCodePoint) !== -1) {
+ if (escaped) {
+ escaped = false;
+ }
+ else if (cp === REVERSE_SOLIDUS) {
+ escaped = true;
+ }
+ else if (cp === LEFT_SQUARE_BRACKET) {
+ inClass = true;
+ }
+ else if (cp === RIGHT_SQUARE_BRACKET) {
+ inClass = false;
+ }
+ else if (cp === LEFT_PARENTHESIS &&
+ !inClass &&
+ (this.nextCodePoint !== QUESTION_MARK ||
+ (this.nextCodePoint2 === LESS_THAN_SIGN &&
+ this.nextCodePoint3 !== EQUALS_SIGN &&
+ this.nextCodePoint3 !== EXCLAMATION_MARK))) {
+ count += 1;
+ }
+ this.advance();
+ }
+ this.rewind(start);
+ return count;
+ }
+ consumeDisjunction() {
+ const start = this.index;
+ let i = 0;
+ this.onDisjunctionEnter(start);
+ do {
+ this.consumeAlternative(i++);
+ } while (this.eat(VERTICAL_LINE));
+ if (this.consumeQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ this.raise("Lone quantifier brackets");
+ }
+ this.onDisjunctionLeave(start, this.index);
+ }
+ consumeAlternative(i) {
+ const start = this.index;
+ this.onAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 && this.consumeTerm()) {
+ }
+ this.onAlternativeLeave(start, this.index, i);
+ }
+ consumeTerm() {
+ if (this._unicodeMode || this.strict) {
+ return (this.consumeAssertion() ||
+ (this.consumeAtom() && this.consumeOptionalQuantifier()));
+ }
+ return ((this.consumeAssertion() &&
+ (!this._lastAssertionIsQuantifiable ||
+ this.consumeOptionalQuantifier())) ||
+ (this.consumeExtendedAtom() && this.consumeOptionalQuantifier()));
+ }
+ consumeOptionalQuantifier() {
+ this.consumeQuantifier();
+ return true;
+ }
+ consumeAssertion() {
+ const start = this.index;
+ this._lastAssertionIsQuantifiable = false;
+ if (this.eat(CIRCUMFLEX_ACCENT)) {
+ this.onEdgeAssertion(start, this.index, "start");
+ return true;
+ }
+ if (this.eat(DOLLAR_SIGN)) {
+ this.onEdgeAssertion(start, this.index, "end");
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_CAPITAL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", true);
+ return true;
+ }
+ if (this.eat2(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_B)) {
+ this.onWordBoundaryAssertion(start, this.index, "word", false);
+ return true;
+ }
+ if (this.eat2(LEFT_PARENTHESIS, QUESTION_MARK)) {
+ const lookbehind = this.ecmaVersion >= 2018 && this.eat(LESS_THAN_SIGN);
+ let negate = false;
+ if (this.eat(EQUALS_SIGN) ||
+ (negate = this.eat(EXCLAMATION_MARK))) {
+ const kind = lookbehind ? "lookbehind" : "lookahead";
+ this.onLookaroundAssertionEnter(start, kind, negate);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this._lastAssertionIsQuantifiable = !lookbehind && !this.strict;
+ this.onLookaroundAssertionLeave(start, this.index, kind, negate);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeQuantifier(noConsume = false) {
+ const start = this.index;
+ let min = 0;
+ let max = 0;
+ let greedy = false;
+ if (this.eat(ASTERISK)) {
+ min = 0;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(PLUS_SIGN)) {
+ min = 1;
+ max = Number.POSITIVE_INFINITY;
+ }
+ else if (this.eat(QUESTION_MARK)) {
+ min = 0;
+ max = 1;
+ }
+ else if (this.eatBracedQuantifier(noConsume)) {
+ ({ min, max } = this._lastRange);
+ }
+ else {
+ return false;
+ }
+ greedy = !this.eat(QUESTION_MARK);
+ if (!noConsume) {
+ this.onQuantifier(start, this.index, min, max, greedy);
+ }
+ return true;
+ }
+ eatBracedQuantifier(noError) {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET)) {
+ if (this.eatDecimalDigits()) {
+ const min = this._lastIntValue;
+ let max = min;
+ if (this.eat(COMMA)) {
+ max = this.eatDecimalDigits()
+ ? this._lastIntValue
+ : Number.POSITIVE_INFINITY;
+ }
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ if (!noError && max < min) {
+ this.raise("numbers out of order in {} quantifier");
+ }
+ this._lastRange = { min, max };
+ return true;
+ }
+ }
+ if (!noError && (this._unicodeMode || this.strict)) {
+ this.raise("Incomplete quantifier");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeAtom() {
+ return (this.consumePatternCharacter() ||
+ this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup());
+ }
+ consumeDot() {
+ if (this.eat(FULL_STOP)) {
+ this.onAnyCharacterSet(this.index - 1, this.index, "any");
+ return true;
+ }
+ return false;
+ }
+ consumeReverseSolidusAtomEscape() {
+ const start = this.index;
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeAtomEscape()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeUncapturingGroup() {
+ const start = this.index;
+ if (this.eat3(LEFT_PARENTHESIS, QUESTION_MARK, COLON)) {
+ this.onGroupEnter(start);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onGroupLeave(start, this.index);
+ return true;
+ }
+ return false;
+ }
+ consumeCapturingGroup() {
+ const start = this.index;
+ if (this.eat(LEFT_PARENTHESIS)) {
+ let name = null;
+ if (this.ecmaVersion >= 2018) {
+ if (this.consumeGroupSpecifier()) {
+ name = this._lastStrValue;
+ }
+ }
+ else if (this.currentCodePoint === QUESTION_MARK) {
+ this.raise("Invalid group");
+ }
+ this.onCapturingGroupEnter(start, name);
+ this.consumeDisjunction();
+ if (!this.eat(RIGHT_PARENTHESIS)) {
+ this.raise("Unterminated group");
+ }
+ this.onCapturingGroupLeave(start, this.index, name);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedAtom() {
+ return (this.consumeDot() ||
+ this.consumeReverseSolidusAtomEscape() ||
+ this.consumeReverseSolidusFollowedByC() ||
+ Boolean(this.consumeCharacterClass()) ||
+ this.consumeUncapturingGroup() ||
+ this.consumeCapturingGroup() ||
+ this.consumeInvalidBracedQuantifier() ||
+ this.consumeExtendedPatternCharacter());
+ }
+ consumeReverseSolidusFollowedByC() {
+ const start = this.index;
+ if (this.currentCodePoint === REVERSE_SOLIDUS &&
+ this.nextCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, REVERSE_SOLIDUS);
+ return true;
+ }
+ return false;
+ }
+ consumeInvalidBracedQuantifier() {
+ if (this.eatBracedQuantifier(true)) {
+ this.raise("Nothing to repeat");
+ }
+ return false;
+ }
+ consumePatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 && !isSyntaxCharacter(cp)) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeExtendedPatternCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== CIRCUMFLEX_ACCENT &&
+ cp !== DOLLAR_SIGN &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== FULL_STOP &&
+ cp !== ASTERISK &&
+ cp !== PLUS_SIGN &&
+ cp !== QUESTION_MARK &&
+ cp !== LEFT_PARENTHESIS &&
+ cp !== RIGHT_PARENTHESIS &&
+ cp !== LEFT_SQUARE_BRACKET &&
+ cp !== VERTICAL_LINE) {
+ this.advance();
+ this.onCharacter(start, this.index, cp);
+ return true;
+ }
+ return false;
+ }
+ consumeGroupSpecifier() {
+ if (this.eat(QUESTION_MARK)) {
+ if (this.eatGroupName()) {
+ if (!this._groupNames.has(this._lastStrValue)) {
+ this._groupNames.add(this._lastStrValue);
+ return true;
+ }
+ this.raise("Duplicate capture group name");
+ }
+ this.raise("Invalid group");
+ }
+ return false;
+ }
+ consumeAtomEscape() {
+ if (this.consumeBackreference() ||
+ this.consumeCharacterClassEscape() ||
+ this.consumeCharacterEscape() ||
+ (this._nFlag && this.consumeKGroupName())) {
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ return false;
+ }
+ consumeBackreference() {
+ const start = this.index;
+ if (this.eatDecimalEscape()) {
+ const n = this._lastIntValue;
+ if (n <= this._numCapturingParens) {
+ this.onBackreference(start - 1, this.index, n);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeCharacterClassEscape() {
+ var _a;
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_D)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "digit", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_S)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "space", true);
+ return {};
+ }
+ if (this.eat(LATIN_SMALL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", false);
+ return {};
+ }
+ if (this.eat(LATIN_CAPITAL_LETTER_W)) {
+ this._lastIntValue = -1;
+ this.onEscapeCharacterSet(start - 1, this.index, "word", true);
+ return {};
+ }
+ let negate = false;
+ if (this._unicodeMode &&
+ this.ecmaVersion >= 2018 &&
+ (this.eat(LATIN_SMALL_LETTER_P) ||
+ (negate = this.eat(LATIN_CAPITAL_LETTER_P)))) {
+ this._lastIntValue = -1;
+ let result = null;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ (result = this.eatUnicodePropertyValueExpression()) &&
+ this.eat(RIGHT_CURLY_BRACKET)) {
+ if (negate && result.strings) {
+ this.raise("Invalid property name");
+ }
+ this.onUnicodePropertyCharacterSet(start - 1, this.index, "property", result.key, result.value, negate, (_a = result.strings) !== null && _a !== void 0 ? _a : false);
+ return { mayContainStrings: result.strings };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ consumeCharacterEscape() {
+ const start = this.index;
+ if (this.eatControlEscape() ||
+ this.eatCControlLetter() ||
+ this.eatZero() ||
+ this.eatHexEscapeSequence() ||
+ this.eatRegExpUnicodeEscapeSequence() ||
+ (!this.strict &&
+ !this._unicodeMode &&
+ this.eatLegacyOctalEscapeSequence()) ||
+ this.eatIdentityEscape()) {
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return false;
+ }
+ consumeKGroupName() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_K)) {
+ if (this.eatGroupName()) {
+ const groupName = this._lastStrValue;
+ this._backreferenceNames.add(groupName);
+ this.onBackreference(start - 1, this.index, groupName);
+ return true;
+ }
+ this.raise("Invalid named reference");
+ }
+ return false;
+ }
+ consumeCharacterClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, this._unicodeSetsMode);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ if (this.currentCodePoint === -1) {
+ this.raise("Unterminated character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ return null;
+ }
+ consumeClassContents() {
+ if (this._unicodeSetsMode) {
+ if (this.currentCodePoint === RIGHT_SQUARE_BRACKET) {
+ return {};
+ }
+ const result = this.consumeClassSetExpression();
+ return result;
+ }
+ const strict = this.strict || this._unicodeMode;
+ for (;;) {
+ const rangeStart = this.index;
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const min = this._lastIntValue;
+ if (!this.eat(HYPHEN_MINUS)) {
+ continue;
+ }
+ this.onCharacter(this.index - 1, this.index, HYPHEN_MINUS);
+ if (!this.consumeClassAtom()) {
+ break;
+ }
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ if (strict) {
+ this.raise("Invalid character class");
+ }
+ continue;
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(rangeStart, this.index, min, max);
+ }
+ return {};
+ }
+ consumeClassAtom() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== -1 &&
+ cp !== REVERSE_SOLIDUS &&
+ cp !== RIGHT_SQUARE_BRACKET) {
+ this.advance();
+ this._lastIntValue = cp;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeClassEscape()) {
+ return true;
+ }
+ if (!this.strict &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C) {
+ this._lastIntValue = REVERSE_SOLIDUS;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.strict || this._unicodeMode) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ consumeClassEscape() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this._unicodeMode && this.eat(HYPHEN_MINUS)) {
+ this._lastIntValue = HYPHEN_MINUS;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ let cp = 0;
+ if (!this.strict &&
+ !this._unicodeMode &&
+ this.currentCodePoint === LATIN_SMALL_LETTER_C &&
+ (isDecimalDigit((cp = this.nextCodePoint)) || cp === LOW_LINE)) {
+ this.advance();
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ this.onCharacter(start - 1, this.index, this._lastIntValue);
+ return true;
+ }
+ return (Boolean(this.consumeCharacterClassEscape()) ||
+ this.consumeCharacterEscape());
+ }
+ consumeClassSetExpression() {
+ const start = this.index;
+ let mayContainStrings = false;
+ let result = null;
+ if (this.consumeClassSetCharacter()) {
+ if (this.consumeClassSetRangeFromOperator(start)) {
+ this.consumeClassUnionRight({});
+ return {};
+ }
+ mayContainStrings = false;
+ }
+ else if ((result = this.consumeClassSetOperand())) {
+ mayContainStrings = result.mayContainStrings;
+ }
+ else {
+ const cp = this.currentCodePoint;
+ if (cp === REVERSE_SOLIDUS) {
+ this.advance();
+ this.raise("Invalid escape");
+ }
+ if (cp === this.nextCodePoint &&
+ isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ this.raise("Invalid set operation in character class");
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ while (this.currentCodePoint !== AMPERSAND &&
+ (result = this.consumeClassSetOperand())) {
+ this.onClassIntersection(start, this.index);
+ if (!result.mayContainStrings) {
+ mayContainStrings = false;
+ }
+ if (this.eat2(AMPERSAND, AMPERSAND)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ while (this.consumeClassSetOperand()) {
+ this.onClassSubtraction(start, this.index);
+ if (this.eat2(HYPHEN_MINUS, HYPHEN_MINUS)) {
+ continue;
+ }
+ return { mayContainStrings };
+ }
+ this.raise("Invalid character in character class");
+ }
+ return this.consumeClassUnionRight({ mayContainStrings });
+ }
+ consumeClassUnionRight(leftResult) {
+ let mayContainStrings = leftResult.mayContainStrings;
+ for (;;) {
+ const start = this.index;
+ if (this.consumeClassSetCharacter()) {
+ this.consumeClassSetRangeFromOperator(start);
+ continue;
+ }
+ const result = this.consumeClassSetOperand();
+ if (result) {
+ if (result.mayContainStrings) {
+ mayContainStrings = true;
+ }
+ continue;
+ }
+ break;
+ }
+ return { mayContainStrings };
+ }
+ consumeClassSetRangeFromOperator(start) {
+ const currentStart = this.index;
+ const min = this._lastIntValue;
+ if (this.eat(HYPHEN_MINUS)) {
+ if (this.consumeClassSetCharacter()) {
+ const max = this._lastIntValue;
+ if (min === -1 || max === -1) {
+ this.raise("Invalid character class");
+ }
+ if (min > max) {
+ this.raise("Range out of order in character class");
+ }
+ this.onCharacterClassRange(start, this.index, min, max);
+ return true;
+ }
+ this.rewind(currentStart);
+ }
+ return false;
+ }
+ consumeClassSetOperand() {
+ let result = null;
+ if ((result = this.consumeNestedClass())) {
+ return result;
+ }
+ if ((result = this.consumeClassStringDisjunction())) {
+ return result;
+ }
+ if (this.consumeClassSetCharacter()) {
+ return {};
+ }
+ return null;
+ }
+ consumeNestedClass() {
+ const start = this.index;
+ if (this.eat(LEFT_SQUARE_BRACKET)) {
+ const negate = this.eat(CIRCUMFLEX_ACCENT);
+ this.onCharacterClassEnter(start, negate, true);
+ const result = this.consumeClassContents();
+ if (!this.eat(RIGHT_SQUARE_BRACKET)) {
+ this.raise("Unterminated character class");
+ }
+ if (negate && result.mayContainStrings) {
+ this.raise("Negated character class may contain strings");
+ }
+ this.onCharacterClassLeave(start, this.index, negate);
+ return result;
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ const result = this.consumeCharacterClassEscape();
+ if (result) {
+ return result;
+ }
+ this.rewind(start);
+ }
+ return null;
+ }
+ consumeClassStringDisjunction() {
+ const start = this.index;
+ if (this.eat3(REVERSE_SOLIDUS, LATIN_SMALL_LETTER_Q, LEFT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionEnter(start);
+ let i = 0;
+ let mayContainStrings = false;
+ do {
+ if (this.consumeClassString(i++).mayContainStrings) {
+ mayContainStrings = true;
+ }
+ } while (this.eat(VERTICAL_LINE));
+ if (this.eat(RIGHT_CURLY_BRACKET)) {
+ this.onClassStringDisjunctionLeave(start, this.index);
+ return { mayContainStrings };
+ }
+ this.raise("Unterminated class string disjunction");
+ }
+ return null;
+ }
+ consumeClassString(i) {
+ const start = this.index;
+ let count = 0;
+ this.onStringAlternativeEnter(start, i);
+ while (this.currentCodePoint !== -1 &&
+ this.consumeClassSetCharacter()) {
+ count++;
+ }
+ this.onStringAlternativeLeave(start, this.index, i);
+ return { mayContainStrings: count !== 1 };
+ }
+ consumeClassSetCharacter() {
+ const start = this.index;
+ const cp = this.currentCodePoint;
+ if (cp !== this.nextCodePoint ||
+ !isClassSetReservedDoublePunctuatorCharacter(cp)) {
+ if (cp !== -1 && !isClassSetSyntaxCharacter(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ }
+ if (this.eat(REVERSE_SOLIDUS)) {
+ if (this.consumeCharacterEscape()) {
+ return true;
+ }
+ if (isClassSetReservedPunctuator(this.currentCodePoint)) {
+ this._lastIntValue = this.currentCodePoint;
+ this.advance();
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_B)) {
+ this._lastIntValue = BACKSPACE;
+ this.onCharacter(start, this.index, this._lastIntValue);
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatGroupName() {
+ if (this.eat(LESS_THAN_SIGN)) {
+ if (this.eatRegExpIdentifierName() && this.eat(GREATER_THAN_SIGN)) {
+ return true;
+ }
+ this.raise("Invalid capture group name");
+ }
+ return false;
+ }
+ eatRegExpIdentifierName() {
+ if (this.eatRegExpIdentifierStart()) {
+ this._lastStrValue = String.fromCodePoint(this._lastIntValue);
+ while (this.eatRegExpIdentifierPart()) {
+ this._lastStrValue += String.fromCodePoint(this._lastIntValue);
+ }
+ return true;
+ }
+ return false;
+ }
+ eatRegExpIdentifierStart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierStartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpIdentifierPart() {
+ const start = this.index;
+ const forceUFlag = !this._unicodeMode && this.ecmaVersion >= 2020;
+ let cp = this.currentCodePoint;
+ this.advance();
+ if (cp === REVERSE_SOLIDUS &&
+ this.eatRegExpUnicodeEscapeSequence(forceUFlag)) {
+ cp = this._lastIntValue;
+ }
+ else if (forceUFlag &&
+ isLeadSurrogate(cp) &&
+ isTrailSurrogate(this.currentCodePoint)) {
+ cp = combineSurrogatePair(cp, this.currentCodePoint);
+ this.advance();
+ }
+ if (isIdentifierPartChar(cp)) {
+ this._lastIntValue = cp;
+ return true;
+ }
+ if (this.index !== start) {
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatCControlLetter() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_C)) {
+ if (this.eatControlLetter()) {
+ return true;
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatZero() {
+ if (this.currentCodePoint === DIGIT_ZERO &&
+ !isDecimalDigit(this.nextCodePoint)) {
+ this._lastIntValue = 0;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ eatControlEscape() {
+ if (this.eat(LATIN_SMALL_LETTER_F)) {
+ this._lastIntValue = FORM_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_N)) {
+ this._lastIntValue = LINE_FEED;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_R)) {
+ this._lastIntValue = CARRIAGE_RETURN;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_T)) {
+ this._lastIntValue = CHARACTER_TABULATION;
+ return true;
+ }
+ if (this.eat(LATIN_SMALL_LETTER_V)) {
+ this._lastIntValue = LINE_TABULATION;
+ return true;
+ }
+ return false;
+ }
+ eatControlLetter() {
+ const cp = this.currentCodePoint;
+ if (isLatinLetter(cp)) {
+ this.advance();
+ this._lastIntValue = cp % 0x20;
+ return true;
+ }
+ return false;
+ }
+ eatRegExpUnicodeEscapeSequence(forceUFlag = false) {
+ const start = this.index;
+ const uFlag = forceUFlag || this._unicodeMode;
+ if (this.eat(LATIN_SMALL_LETTER_U)) {
+ if ((uFlag && this.eatRegExpUnicodeSurrogatePairEscape()) ||
+ this.eatFixedHexDigits(4) ||
+ (uFlag && this.eatRegExpUnicodeCodePointEscape())) {
+ return true;
+ }
+ if (this.strict || uFlag) {
+ this.raise("Invalid unicode escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeSurrogatePairEscape() {
+ const start = this.index;
+ if (this.eatFixedHexDigits(4)) {
+ const lead = this._lastIntValue;
+ if (isLeadSurrogate(lead) &&
+ this.eat(REVERSE_SOLIDUS) &&
+ this.eat(LATIN_SMALL_LETTER_U) &&
+ this.eatFixedHexDigits(4)) {
+ const trail = this._lastIntValue;
+ if (isTrailSurrogate(trail)) {
+ this._lastIntValue = combineSurrogatePair(lead, trail);
+ return true;
+ }
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatRegExpUnicodeCodePointEscape() {
+ const start = this.index;
+ if (this.eat(LEFT_CURLY_BRACKET) &&
+ this.eatHexDigits() &&
+ this.eat(RIGHT_CURLY_BRACKET) &&
+ isValidUnicode(this._lastIntValue)) {
+ return true;
+ }
+ this.rewind(start);
+ return false;
+ }
+ eatIdentityEscape() {
+ const cp = this.currentCodePoint;
+ if (this.isValidIdentityEscape(cp)) {
+ this._lastIntValue = cp;
+ this.advance();
+ return true;
+ }
+ return false;
+ }
+ isValidIdentityEscape(cp) {
+ if (cp === -1) {
+ return false;
+ }
+ if (this._unicodeMode) {
+ return isSyntaxCharacter(cp) || cp === SOLIDUS;
+ }
+ if (this.strict) {
+ return !isIdContinue(cp);
+ }
+ if (this._nFlag) {
+ return !(cp === LATIN_SMALL_LETTER_C || cp === LATIN_SMALL_LETTER_K);
+ }
+ return cp !== LATIN_SMALL_LETTER_C;
+ }
+ eatDecimalEscape() {
+ this._lastIntValue = 0;
+ let cp = this.currentCodePoint;
+ if (cp >= DIGIT_ONE && cp <= DIGIT_NINE) {
+ do {
+ this._lastIntValue = 10 * this._lastIntValue + (cp - DIGIT_ZERO);
+ this.advance();
+ } while ((cp = this.currentCodePoint) >= DIGIT_ZERO &&
+ cp <= DIGIT_NINE);
+ return true;
+ }
+ return false;
+ }
+ eatUnicodePropertyValueExpression() {
+ const start = this.index;
+ if (this.eatUnicodePropertyName() && this.eat(EQUALS_SIGN)) {
+ const key = this._lastStrValue;
+ if (this.eatUnicodePropertyValue()) {
+ const value = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, key, value)) {
+ return {
+ key,
+ value: value || null,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ }
+ this.rewind(start);
+ if (this.eatLoneUnicodePropertyNameOrValue()) {
+ const nameOrValue = this._lastStrValue;
+ if (isValidUnicodeProperty(this.ecmaVersion, "General_Category", nameOrValue)) {
+ return {
+ key: "General_Category",
+ value: nameOrValue || null,
+ };
+ }
+ if (isValidLoneUnicodeProperty(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ };
+ }
+ if (this._unicodeSetsMode &&
+ isValidLoneUnicodePropertyOfString(this.ecmaVersion, nameOrValue)) {
+ return {
+ key: nameOrValue,
+ value: null,
+ strings: true,
+ };
+ }
+ this.raise("Invalid property name");
+ }
+ return null;
+ }
+ eatUnicodePropertyName() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyNameCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatUnicodePropertyValue() {
+ this._lastStrValue = "";
+ while (isUnicodePropertyValueCharacter(this.currentCodePoint)) {
+ this._lastStrValue += String.fromCodePoint(this.currentCodePoint);
+ this.advance();
+ }
+ return this._lastStrValue !== "";
+ }
+ eatLoneUnicodePropertyNameOrValue() {
+ return this.eatUnicodePropertyValue();
+ }
+ eatHexEscapeSequence() {
+ const start = this.index;
+ if (this.eat(LATIN_SMALL_LETTER_X)) {
+ if (this.eatFixedHexDigits(2)) {
+ return true;
+ }
+ if (this._unicodeMode || this.strict) {
+ this.raise("Invalid escape");
+ }
+ this.rewind(start);
+ }
+ return false;
+ }
+ eatDecimalDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isDecimalDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 10 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatHexDigits() {
+ const start = this.index;
+ this._lastIntValue = 0;
+ while (isHexDigit(this.currentCodePoint)) {
+ this._lastIntValue =
+ 16 * this._lastIntValue + digitToInt(this.currentCodePoint);
+ this.advance();
+ }
+ return this.index !== start;
+ }
+ eatLegacyOctalEscapeSequence() {
+ if (this.eatOctalDigit()) {
+ const n1 = this._lastIntValue;
+ if (this.eatOctalDigit()) {
+ const n2 = this._lastIntValue;
+ if (n1 <= 3 && this.eatOctalDigit()) {
+ this._lastIntValue = n1 * 64 + n2 * 8 + this._lastIntValue;
+ }
+ else {
+ this._lastIntValue = n1 * 8 + n2;
+ }
+ }
+ else {
+ this._lastIntValue = n1;
+ }
+ return true;
+ }
+ return false;
+ }
+ eatOctalDigit() {
+ const cp = this.currentCodePoint;
+ if (isOctalDigit(cp)) {
+ this.advance();
+ this._lastIntValue = cp - DIGIT_ZERO;
+ return true;
+ }
+ this._lastIntValue = 0;
+ return false;
+ }
+ eatFixedHexDigits(length) {
+ const start = this.index;
+ this._lastIntValue = 0;
+ for (let i = 0; i < length; ++i) {
+ const cp = this.currentCodePoint;
+ if (!isHexDigit(cp)) {
+ this.rewind(start);
+ return false;
+ }
+ this._lastIntValue = 16 * this._lastIntValue + digitToInt(cp);
+ this.advance();
+ }
+ return true;
+ }
+}
+
+const DUMMY_PATTERN = {};
+const DUMMY_FLAGS = {};
+const DUMMY_CAPTURING_GROUP = {};
+function isClassSetOperand(node) {
+ return (node.type === "Character" ||
+ node.type === "CharacterSet" ||
+ node.type === "CharacterClass" ||
+ node.type === "ExpressionCharacterClass" ||
+ node.type === "ClassStringDisjunction");
+}
+class RegExpParserState {
+ constructor(options) {
+ var _a;
+ this._node = DUMMY_PATTERN;
+ this._expressionBufferMap = new Map();
+ this._flags = DUMMY_FLAGS;
+ this._backreferences = [];
+ this._capturingGroups = [];
+ this.source = "";
+ this.strict = Boolean(options === null || options === void 0 ? void 0 : options.strict);
+ this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : latestEcmaVersion;
+ }
+ get pattern() {
+ if (this._node.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ return this._node;
+ }
+ get flags() {
+ if (this._flags.type !== "Flags") {
+ throw new Error("UnknownError");
+ }
+ return this._flags;
+ }
+ onRegExpFlags(start, end, { global, ignoreCase, multiline, unicode, sticky, dotAll, hasIndices, unicodeSets, }) {
+ this._flags = {
+ type: "Flags",
+ parent: null,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ global,
+ ignoreCase,
+ multiline,
+ unicode,
+ sticky,
+ dotAll,
+ hasIndices,
+ unicodeSets,
+ };
+ }
+ onPatternEnter(start) {
+ this._node = {
+ type: "Pattern",
+ parent: null,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ this._backreferences.length = 0;
+ this._capturingGroups.length = 0;
+ }
+ onPatternLeave(start, end) {
+ this._node.end = end;
+ this._node.raw = this.source.slice(start, end);
+ for (const reference of this._backreferences) {
+ const ref = reference.ref;
+ const group = typeof ref === "number"
+ ? this._capturingGroups[ref - 1]
+ : this._capturingGroups.find((g) => g.name === ref);
+ reference.resolved = group;
+ group.references.push(reference);
+ }
+ }
+ onAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Assertion" &&
+ parent.type !== "CapturingGroup" &&
+ parent.type !== "Group" &&
+ parent.type !== "Pattern") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Alternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onGroupEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "Group",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Group" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onCapturingGroupEnter(start, name) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "CapturingGroup",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ name,
+ alternatives: [],
+ references: [],
+ };
+ parent.elements.push(this._node);
+ this._capturingGroups.push(this._node);
+ }
+ onCapturingGroupLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CapturingGroup" ||
+ node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onQuantifier(start, end, min, max, greedy) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const element = parent.elements.pop();
+ if (element == null ||
+ element.type === "Quantifier" ||
+ (element.type === "Assertion" && element.kind !== "lookahead")) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Quantifier",
+ parent,
+ start: element.start,
+ end,
+ raw: this.source.slice(element.start, end),
+ min,
+ max,
+ greedy,
+ element,
+ };
+ parent.elements.push(node);
+ element.parent = node;
+ }
+ onLookaroundAssertionEnter(start, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = (this._node = {
+ type: "Assertion",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ kind,
+ negate,
+ alternatives: [],
+ });
+ parent.elements.push(node);
+ }
+ onLookaroundAssertionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "Assertion" || node.parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onEdgeAssertion(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onWordBoundaryAssertion(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Assertion",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onAnyCharacterSet(start, end, kind) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ });
+ }
+ onEscapeCharacterSet(start, end, kind, negate) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "CharacterSet",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ negate,
+ });
+ }
+ onUnicodePropertyCharacterSet(start, end, kind, key, value, negate, strings) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" && parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const base = {
+ type: "CharacterSet",
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ kind,
+ key,
+ };
+ if (strings) {
+ if ((parent.type === "CharacterClass" && !parent.unicodeSets) ||
+ negate ||
+ value !== null) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ else {
+ parent.elements.push(Object.assign(Object.assign({}, base), { parent, strings, value, negate }));
+ }
+ }
+ onCharacter(start, end, value) {
+ const parent = this._node;
+ if (parent.type !== "Alternative" &&
+ parent.type !== "CharacterClass" &&
+ parent.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push({
+ type: "Character",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ value,
+ });
+ }
+ onBackreference(start, end, ref) {
+ const parent = this._node;
+ if (parent.type !== "Alternative") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "Backreference",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ ref,
+ resolved: DUMMY_CAPTURING_GROUP,
+ };
+ parent.elements.push(node);
+ this._backreferences.push(node);
+ }
+ onCharacterClassEnter(start, negate, unicodeSets) {
+ const parent = this._node;
+ const base = {
+ type: "CharacterClass",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ unicodeSets,
+ negate,
+ elements: [],
+ };
+ if (parent.type === "Alternative") {
+ const node = Object.assign(Object.assign({}, base), { parent });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else if (parent.type === "CharacterClass" &&
+ parent.unicodeSets &&
+ unicodeSets) {
+ const node = Object.assign(Object.assign({}, base), { parent,
+ unicodeSets });
+ this._node = node;
+ parent.elements.push(node);
+ }
+ else {
+ throw new Error("UnknownError");
+ }
+ }
+ onCharacterClassLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "CharacterClass" ||
+ (node.parent.type !== "Alternative" &&
+ node.parent.type !== "CharacterClass")) {
+ throw new Error("UnknownError");
+ }
+ const parent = node.parent;
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = parent;
+ const expression = this._expressionBufferMap.get(node);
+ if (!expression) {
+ return;
+ }
+ if (node.elements.length > 0) {
+ throw new Error("UnknownError");
+ }
+ this._expressionBufferMap.delete(node);
+ const newNode = {
+ type: "ExpressionCharacterClass",
+ parent,
+ start: node.start,
+ end: node.end,
+ raw: node.raw,
+ negate: node.negate,
+ expression,
+ };
+ expression.parent = newNode;
+ if (node !== parent.elements.pop()) {
+ throw new Error("UnknownError");
+ }
+ parent.elements.push(newNode);
+ }
+ onCharacterClassRange(start, end) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ const elements = parent.elements;
+ const max = elements.pop();
+ if (!max || max.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ if (!parent.unicodeSets) {
+ const hyphen = elements.pop();
+ if (!hyphen ||
+ hyphen.type !== "Character" ||
+ hyphen.value !== HYPHEN_MINUS) {
+ throw new Error("UnknownError");
+ }
+ }
+ const min = elements.pop();
+ if (!min || min.type !== "Character") {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "CharacterClassRange",
+ parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ min,
+ max,
+ };
+ min.parent = node;
+ max.parent = node;
+ elements.push(node);
+ }
+ onClassIntersection(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBufferMap.get(parent)) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassSubtraction" ||
+ (left.type !== "ClassIntersection" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassIntersection",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBufferMap.set(parent, node);
+ }
+ onClassSubtraction(start, end) {
+ var _a;
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ const right = parent.elements.pop();
+ const left = (_a = this._expressionBufferMap.get(parent)) !== null && _a !== void 0 ? _a : parent.elements.pop();
+ if (!left ||
+ !right ||
+ left.type === "ClassIntersection" ||
+ (left.type !== "ClassSubtraction" && !isClassSetOperand(left)) ||
+ !isClassSetOperand(right)) {
+ throw new Error("UnknownError");
+ }
+ const node = {
+ type: "ClassSubtraction",
+ parent: parent,
+ start,
+ end,
+ raw: this.source.slice(start, end),
+ left,
+ right,
+ };
+ left.parent = node;
+ right.parent = node;
+ this._expressionBufferMap.set(parent, node);
+ }
+ onClassStringDisjunctionEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "CharacterClass" || !parent.unicodeSets) {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "ClassStringDisjunction",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ alternatives: [],
+ };
+ parent.elements.push(this._node);
+ }
+ onClassStringDisjunctionLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "ClassStringDisjunction" ||
+ node.parent.type !== "CharacterClass") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+ onStringAlternativeEnter(start) {
+ const parent = this._node;
+ if (parent.type !== "ClassStringDisjunction") {
+ throw new Error("UnknownError");
+ }
+ this._node = {
+ type: "StringAlternative",
+ parent,
+ start,
+ end: start,
+ raw: "",
+ elements: [],
+ };
+ parent.alternatives.push(this._node);
+ }
+ onStringAlternativeLeave(start, end) {
+ const node = this._node;
+ if (node.type !== "StringAlternative") {
+ throw new Error("UnknownError");
+ }
+ node.end = end;
+ node.raw = this.source.slice(start, end);
+ this._node = node.parent;
+ }
+}
+class RegExpParser {
+ constructor(options) {
+ this._state = new RegExpParserState(options);
+ this._validator = new RegExpValidator(this._state);
+ }
+ parseLiteral(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateLiteral(source, start, end);
+ const pattern = this._state.pattern;
+ const flags = this._state.flags;
+ const literal = {
+ type: "RegExpLiteral",
+ parent: null,
+ start,
+ end,
+ raw: source,
+ pattern,
+ flags,
+ };
+ pattern.parent = literal;
+ flags.parent = literal;
+ return literal;
+ }
+ parseFlags(source, start = 0, end = source.length) {
+ this._state.source = source;
+ this._validator.validateFlags(source, start, end);
+ return this._state.flags;
+ }
+ parsePattern(source, start = 0, end = source.length, uFlagOrFlags = undefined) {
+ this._state.source = source;
+ this._validator.validatePattern(source, start, end, uFlagOrFlags);
+ return this._state.pattern;
+ }
+}
+
+class RegExpVisitor {
+ constructor(handlers) {
+ this._handlers = handlers;
+ }
+ visit(node) {
+ switch (node.type) {
+ case "Alternative":
+ this.visitAlternative(node);
+ break;
+ case "Assertion":
+ this.visitAssertion(node);
+ break;
+ case "Backreference":
+ this.visitBackreference(node);
+ break;
+ case "CapturingGroup":
+ this.visitCapturingGroup(node);
+ break;
+ case "Character":
+ this.visitCharacter(node);
+ break;
+ case "CharacterClass":
+ this.visitCharacterClass(node);
+ break;
+ case "CharacterClassRange":
+ this.visitCharacterClassRange(node);
+ break;
+ case "CharacterSet":
+ this.visitCharacterSet(node);
+ break;
+ case "ClassIntersection":
+ this.visitClassIntersection(node);
+ break;
+ case "ClassStringDisjunction":
+ this.visitClassStringDisjunction(node);
+ break;
+ case "ClassSubtraction":
+ this.visitClassSubtraction(node);
+ break;
+ case "ExpressionCharacterClass":
+ this.visitExpressionCharacterClass(node);
+ break;
+ case "Flags":
+ this.visitFlags(node);
+ break;
+ case "Group":
+ this.visitGroup(node);
+ break;
+ case "Pattern":
+ this.visitPattern(node);
+ break;
+ case "Quantifier":
+ this.visitQuantifier(node);
+ break;
+ case "RegExpLiteral":
+ this.visitRegExpLiteral(node);
+ break;
+ case "StringAlternative":
+ this.visitStringAlternative(node);
+ break;
+ default:
+ throw new Error(`Unknown type: ${node.type}`);
+ }
+ }
+ visitAlternative(node) {
+ if (this._handlers.onAlternativeEnter) {
+ this._handlers.onAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onAlternativeLeave) {
+ this._handlers.onAlternativeLeave(node);
+ }
+ }
+ visitAssertion(node) {
+ if (this._handlers.onAssertionEnter) {
+ this._handlers.onAssertionEnter(node);
+ }
+ if (node.kind === "lookahead" || node.kind === "lookbehind") {
+ node.alternatives.forEach(this.visit, this);
+ }
+ if (this._handlers.onAssertionLeave) {
+ this._handlers.onAssertionLeave(node);
+ }
+ }
+ visitBackreference(node) {
+ if (this._handlers.onBackreferenceEnter) {
+ this._handlers.onBackreferenceEnter(node);
+ }
+ if (this._handlers.onBackreferenceLeave) {
+ this._handlers.onBackreferenceLeave(node);
+ }
+ }
+ visitCapturingGroup(node) {
+ if (this._handlers.onCapturingGroupEnter) {
+ this._handlers.onCapturingGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onCapturingGroupLeave) {
+ this._handlers.onCapturingGroupLeave(node);
+ }
+ }
+ visitCharacter(node) {
+ if (this._handlers.onCharacterEnter) {
+ this._handlers.onCharacterEnter(node);
+ }
+ if (this._handlers.onCharacterLeave) {
+ this._handlers.onCharacterLeave(node);
+ }
+ }
+ visitCharacterClass(node) {
+ if (this._handlers.onCharacterClassEnter) {
+ this._handlers.onCharacterClassEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onCharacterClassLeave) {
+ this._handlers.onCharacterClassLeave(node);
+ }
+ }
+ visitCharacterClassRange(node) {
+ if (this._handlers.onCharacterClassRangeEnter) {
+ this._handlers.onCharacterClassRangeEnter(node);
+ }
+ this.visitCharacter(node.min);
+ this.visitCharacter(node.max);
+ if (this._handlers.onCharacterClassRangeLeave) {
+ this._handlers.onCharacterClassRangeLeave(node);
+ }
+ }
+ visitCharacterSet(node) {
+ if (this._handlers.onCharacterSetEnter) {
+ this._handlers.onCharacterSetEnter(node);
+ }
+ if (this._handlers.onCharacterSetLeave) {
+ this._handlers.onCharacterSetLeave(node);
+ }
+ }
+ visitClassIntersection(node) {
+ if (this._handlers.onClassIntersectionEnter) {
+ this._handlers.onClassIntersectionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassIntersectionLeave) {
+ this._handlers.onClassIntersectionLeave(node);
+ }
+ }
+ visitClassStringDisjunction(node) {
+ if (this._handlers.onClassStringDisjunctionEnter) {
+ this._handlers.onClassStringDisjunctionEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onClassStringDisjunctionLeave) {
+ this._handlers.onClassStringDisjunctionLeave(node);
+ }
+ }
+ visitClassSubtraction(node) {
+ if (this._handlers.onClassSubtractionEnter) {
+ this._handlers.onClassSubtractionEnter(node);
+ }
+ this.visit(node.left);
+ this.visit(node.right);
+ if (this._handlers.onClassSubtractionLeave) {
+ this._handlers.onClassSubtractionLeave(node);
+ }
+ }
+ visitExpressionCharacterClass(node) {
+ if (this._handlers.onExpressionCharacterClassEnter) {
+ this._handlers.onExpressionCharacterClassEnter(node);
+ }
+ this.visit(node.expression);
+ if (this._handlers.onExpressionCharacterClassLeave) {
+ this._handlers.onExpressionCharacterClassLeave(node);
+ }
+ }
+ visitFlags(node) {
+ if (this._handlers.onFlagsEnter) {
+ this._handlers.onFlagsEnter(node);
+ }
+ if (this._handlers.onFlagsLeave) {
+ this._handlers.onFlagsLeave(node);
+ }
+ }
+ visitGroup(node) {
+ if (this._handlers.onGroupEnter) {
+ this._handlers.onGroupEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onGroupLeave) {
+ this._handlers.onGroupLeave(node);
+ }
+ }
+ visitPattern(node) {
+ if (this._handlers.onPatternEnter) {
+ this._handlers.onPatternEnter(node);
+ }
+ node.alternatives.forEach(this.visit, this);
+ if (this._handlers.onPatternLeave) {
+ this._handlers.onPatternLeave(node);
+ }
+ }
+ visitQuantifier(node) {
+ if (this._handlers.onQuantifierEnter) {
+ this._handlers.onQuantifierEnter(node);
+ }
+ this.visit(node.element);
+ if (this._handlers.onQuantifierLeave) {
+ this._handlers.onQuantifierLeave(node);
+ }
+ }
+ visitRegExpLiteral(node) {
+ if (this._handlers.onRegExpLiteralEnter) {
+ this._handlers.onRegExpLiteralEnter(node);
+ }
+ this.visitPattern(node.pattern);
+ this.visitFlags(node.flags);
+ if (this._handlers.onRegExpLiteralLeave) {
+ this._handlers.onRegExpLiteralLeave(node);
+ }
+ }
+ visitStringAlternative(node) {
+ if (this._handlers.onStringAlternativeEnter) {
+ this._handlers.onStringAlternativeEnter(node);
+ }
+ node.elements.forEach(this.visit, this);
+ if (this._handlers.onStringAlternativeLeave) {
+ this._handlers.onStringAlternativeLeave(node);
+ }
+ }
+}
+
+function parseRegExpLiteral(source, options) {
+ return new RegExpParser(options).parseLiteral(String(source));
+}
+function validateRegExpLiteral(source, options) {
+ new RegExpValidator(options).validateLiteral(source);
+}
+function visitRegExpAST(node, handlers) {
+ new RegExpVisitor(handlers).visit(node);
+}
+
+export { ast as AST, RegExpParser, RegExpSyntaxError, RegExpValidator, parseRegExpLiteral, validateRegExpLiteral, visitRegExpAST };
+//# sourceMappingURL=index.mjs.map
diff --git a/node_modules/@eslint-community/regexpp/index.mjs.map b/node_modules/@eslint-community/regexpp/index.mjs.map
new file mode 100644
index 0000000..70b5c37
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/index.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.mjs.map","sources":[".temp/src/ecma-versions.ts",".temp/unicode/src/unicode/ids.ts",".temp/unicode/src/unicode/properties.ts",".temp/unicode/src/unicode/index.ts",".temp/src/reader.ts",".temp/src/regexp-syntax-error.ts",".temp/src/validator.ts",".temp/src/parser.ts",".temp/src/visitor.ts",".temp/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@eslint-community/regexpp/package.json b/node_modules/@eslint-community/regexpp/package.json
new file mode 100644
index 0000000..4544508
--- /dev/null
+++ b/node_modules/@eslint-community/regexpp/package.json
@@ -0,0 +1,93 @@
+{
+ "name": "@eslint-community/regexpp",
+ "version": "4.10.0",
+ "description": "Regular expression parser for ECMAScript.",
+ "keywords": [
+ "regexp",
+ "regular",
+ "expression",
+ "parser",
+ "validator",
+ "ast",
+ "abstract",
+ "syntax",
+ "tree",
+ "ecmascript",
+ "es2015",
+ "es2016",
+ "es2017",
+ "es2018",
+ "es2019",
+ "es2020",
+ "es2021",
+ "annexB"
+ ],
+ "homepage": "https://github.com/eslint-community/regexpp#readme",
+ "bugs": {
+ "url": "https://github.com/eslint-community/regexpp/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/eslint-community/regexpp"
+ },
+ "license": "MIT",
+ "author": "Toru Nagashima",
+ "exports": {
+ ".": {
+ "types": "./index.d.ts",
+ "import": "./index.mjs",
+ "default": "./index.js"
+ },
+ "./package.json": "./package.json"
+ },
+ "main": "index",
+ "files": [
+ "index.*"
+ ],
+ "scripts": {
+ "prebuild": "npm run -s clean",
+ "build": "run-s build:*",
+ "build:tsc": "tsc --module es2015",
+ "build:rollup": "rollup -c",
+ "build:dts": "npm run -s build:tsc -- --removeComments false && dts-bundle --name @eslint-community/regexpp --main .temp/index.d.ts --out ../index.d.ts && prettier --write index.d.ts",
+ "clean": "rimraf .temp index.*",
+ "lint": "eslint . --ext .ts",
+ "test": "nyc _mocha \"test/*.ts\" --reporter dot --timeout 10000",
+ "debug": "mocha --require ts-node/register/transpile-only \"test/*.ts\" --reporter dot --timeout 10000",
+ "update:test": "ts-node scripts/update-fixtures.ts",
+ "update:unicode": "run-s update:unicode:*",
+ "update:unicode:ids": "ts-node scripts/update-unicode-ids.ts",
+ "update:unicode:props": "ts-node scripts/update-unicode-properties.ts",
+ "update:test262:extract": "ts-node -T scripts/extract-test262.ts",
+ "preversion": "npm test && npm run -s build",
+ "postversion": "git push && git push --tags",
+ "prewatch": "npm run -s clean",
+ "watch": "_mocha \"test/*.ts\" --require ts-node/register --reporter dot --timeout 10000 --watch-extensions ts --watch --growl"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "@eslint-community/eslint-plugin-mysticatea": "^15.5.1",
+ "@rollup/plugin-node-resolve": "^14.1.0",
+ "@types/eslint": "^8.44.3",
+ "@types/jsdom": "^16.2.15",
+ "@types/mocha": "^9.1.1",
+ "@types/node": "^12.20.55",
+ "dts-bundle": "^0.7.3",
+ "eslint": "^8.50.0",
+ "js-tokens": "^8.0.2",
+ "jsdom": "^19.0.0",
+ "mocha": "^9.2.2",
+ "npm-run-all": "^4.1.5",
+ "nyc": "^14.1.1",
+ "rimraf": "^3.0.2",
+ "rollup": "^2.79.1",
+ "rollup-plugin-sourcemaps": "^0.6.3",
+ "test262": "git+https://github.com/tc39/test262.git",
+ "test262-stream": "^1.4.0",
+ "ts-node": "^10.9.1",
+ "typescript": "~5.0.2"
+ },
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+}
diff --git a/node_modules/@eslint/eslintrc/LICENSE b/node_modules/@eslint/eslintrc/LICENSE
new file mode 100644
index 0000000..b607bb3
--- /dev/null
+++ b/node_modules/@eslint/eslintrc/LICENSE
@@ -0,0 +1,19 @@
+Copyright OpenJS Foundation and other contributors,
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/@eslint/eslintrc/README.md b/node_modules/@eslint/eslintrc/README.md
new file mode 100644
index 0000000..7641c74
--- /dev/null
+++ b/node_modules/@eslint/eslintrc/README.md
@@ -0,0 +1,115 @@
+# ESLintRC Library
+
+This repository contains the legacy ESLintRC configuration file format for ESLint. This package is not intended for use outside of the ESLint ecosystem. It is ESLint-specific and not intended for use in other programs.
+
+**Note:** This package is frozen except for critical bug fixes as ESLint moves to a new config system.
+
+## Installation
+
+You can install the package as follows:
+
+```
+npm install @eslint/eslintrc --save-dev
+
+# or
+
+yarn add @eslint/eslintrc -D
+```
+
+## Usage (ESM)
+
+The primary class in this package is `FlatCompat`, which is a utility to translate ESLintRC-style configs into flat configs. Here's how you use it inside of your `eslint.config.js` file:
+
+```js
+import { FlatCompat } from "@eslint/eslintrc";
+import js from "@eslint/js";
+import path from "path";
+import { fileURLToPath } from "url";
+
+// mimic CommonJS variables -- not needed if using CommonJS
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const compat = new FlatCompat({
+ baseDirectory: __dirname, // optional; default: process.cwd()
+ resolvePluginsRelativeTo: __dirname, // optional
+ recommendedConfig: js.configs.recommended, // optional
+ allConfig: js.configs.all, // optional
+});
+
+export default [
+
+ // mimic ESLintRC-style extends
+ ...compat.extends("standard", "example"),
+
+ // mimic environments
+ ...compat.env({
+ es2020: true,
+ node: true
+ }),
+
+ // mimic plugins
+ ...compat.plugins("airbnb", "react"),
+
+ // translate an entire config
+ ...compat.config({
+ plugins: ["airbnb", "react"],
+ extends: "standard",
+ env: {
+ es2020: true,
+ node: true
+ },
+ rules: {
+ semi: "error"
+ }
+ })
+];
+```
+
+## Usage (CommonJS)
+
+Using `FlatCompat` in CommonJS files is similar to ESM, but you'll use `require()` and `module.exports` instead of `import` and `export`. Here's how you use it inside of your `eslint.config.js` CommonJS file:
+
+```js
+const { FlatCompat } = require("@eslint/eslintrc");
+const js = require("@eslint/js");
+
+const compat = new FlatCompat({
+ baseDirectory: __dirname, // optional; default: process.cwd()
+ resolvePluginsRelativeTo: __dirname, // optional
+ recommendedConfig: js.configs.recommended, // optional
+ allConfig: js.configs.all, // optional
+});
+
+module.exports = [
+
+ // mimic ESLintRC-style extends
+ ...compat.extends("standard", "example"),
+
+ // mimic environments
+ ...compat.env({
+ es2020: true,
+ node: true
+ }),
+
+ // mimic plugins
+ ...compat.plugins("airbnb", "react"),
+
+ // translate an entire config
+ ...compat.config({
+ plugins: ["airbnb", "react"],
+ extends: "standard",
+ env: {
+ es2020: true,
+ node: true
+ },
+ rules: {
+ semi: "error"
+ }
+ })
+];
+```
+
+## License
+
+MIT License
diff --git a/node_modules/@eslint/eslintrc/conf/config-schema.js b/node_modules/@eslint/eslintrc/conf/config-schema.js
new file mode 100644
index 0000000..ada90e1
--- /dev/null
+++ b/node_modules/@eslint/eslintrc/conf/config-schema.js
@@ -0,0 +1,79 @@
+/**
+ * @fileoverview Defines a schema for configs.
+ * @author Sylvan Mably
+ */
+
+const baseConfigProperties = {
+ $schema: { type: "string" },
+ env: { type: "object" },
+ extends: { $ref: "#/definitions/stringOrStrings" },
+ globals: { type: "object" },
+ overrides: {
+ type: "array",
+ items: { $ref: "#/definitions/overrideConfig" },
+ additionalItems: false
+ },
+ parser: { type: ["string", "null"] },
+ parserOptions: { type: "object" },
+ plugins: { type: "array" },
+ processor: { type: "string" },
+ rules: { type: "object" },
+ settings: { type: "object" },
+ noInlineConfig: { type: "boolean" },
+ reportUnusedDisableDirectives: { type: "boolean" },
+
+ ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
+};
+
+const configSchema = {
+ definitions: {
+ stringOrStrings: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false
+ }
+ ]
+ },
+ stringOrStringsRequired: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false,
+ minItems: 1
+ }
+ ]
+ },
+
+ // Config at top-level.
+ objectConfig: {
+ type: "object",
+ properties: {
+ root: { type: "boolean" },
+ ignorePatterns: { $ref: "#/definitions/stringOrStrings" },
+ ...baseConfigProperties
+ },
+ additionalProperties: false
+ },
+
+ // Config in `overrides`.
+ overrideConfig: {
+ type: "object",
+ properties: {
+ excludedFiles: { $ref: "#/definitions/stringOrStrings" },
+ files: { $ref: "#/definitions/stringOrStringsRequired" },
+ ...baseConfigProperties
+ },
+ required: ["files"],
+ additionalProperties: false
+ }
+ },
+
+ $ref: "#/definitions/objectConfig"
+};
+
+export default configSchema;
diff --git a/node_modules/@eslint/eslintrc/conf/environments.js b/node_modules/@eslint/eslintrc/conf/environments.js
new file mode 100644
index 0000000..50d1b1d
--- /dev/null
+++ b/node_modules/@eslint/eslintrc/conf/environments.js
@@ -0,0 +1,215 @@
+/**
+ * @fileoverview Defines environment settings and globals.
+ * @author Elan Shanker
+ */
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+import globals from "globals";
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the object that has difference.
+ * @param {Record} current The newer object.
+ * @param {Record} prev The older object.
+ * @returns {Record} The difference object.
+ */
+function getDiff(current, prev) {
+ const retv = {};
+
+ for (const [key, value] of Object.entries(current)) {
+ if (!Object.hasOwnProperty.call(prev, key)) {
+ retv[key] = value;
+ }
+ }
+
+ return retv;
+}
+
+const newGlobals2015 = getDiff(globals.es2015, globals.es5); // 19 variables such as Promise, Map, ...
+const newGlobals2017 = {
+ Atomics: false,
+ SharedArrayBuffer: false
+};
+const newGlobals2020 = {
+ BigInt: false,
+ BigInt64Array: false,
+ BigUint64Array: false,
+ globalThis: false
+};
+
+const newGlobals2021 = {
+ AggregateError: false,
+ FinalizationRegistry: false,
+ WeakRef: false
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/** @type {Map} */
+export default new Map(Object.entries({
+
+ // Language
+ builtin: {
+ globals: globals.es5
+ },
+ es6: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2015: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2016: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 7
+ }
+ },
+ es2017: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 8
+ }
+ },
+ es2018: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 9
+ }
+ },
+ es2019: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 10
+ }
+ },
+ es2020: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },
+ parserOptions: {
+ ecmaVersion: 11
+ }
+ },
+ es2021: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 12
+ }
+ },
+ es2022: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 13
+ }
+ },
+ es2023: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 14
+ }
+ },
+ es2024: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 15
+ }
+ },
+
+ // Platforms
+ browser: {
+ globals: globals.browser
+ },
+ node: {
+ globals: globals.node,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ "shared-node-browser": {
+ globals: globals["shared-node-browser"]
+ },
+ worker: {
+ globals: globals.worker
+ },
+ serviceworker: {
+ globals: globals.serviceworker
+ },
+
+ // Frameworks
+ commonjs: {
+ globals: globals.commonjs,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ amd: {
+ globals: globals.amd
+ },
+ mocha: {
+ globals: globals.mocha
+ },
+ jasmine: {
+ globals: globals.jasmine
+ },
+ jest: {
+ globals: globals.jest
+ },
+ phantomjs: {
+ globals: globals.phantomjs
+ },
+ jquery: {
+ globals: globals.jquery
+ },
+ qunit: {
+ globals: globals.qunit
+ },
+ prototypejs: {
+ globals: globals.prototypejs
+ },
+ shelljs: {
+ globals: globals.shelljs
+ },
+ meteor: {
+ globals: globals.meteor
+ },
+ mongo: {
+ globals: globals.mongo
+ },
+ protractor: {
+ globals: globals.protractor
+ },
+ applescript: {
+ globals: globals.applescript
+ },
+ nashorn: {
+ globals: globals.nashorn
+ },
+ atomtest: {
+ globals: globals.atomtest
+ },
+ embertest: {
+ globals: globals.embertest
+ },
+ webextensions: {
+ globals: globals.webextensions
+ },
+ greasemonkey: {
+ globals: globals.greasemonkey
+ }
+}));
diff --git a/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs b/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs
new file mode 100644
index 0000000..64e6666
--- /dev/null
+++ b/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs
@@ -0,0 +1,1104 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var util = require('util');
+var path = require('path');
+var Ajv = require('ajv');
+var globals = require('globals');
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var util__default = /*#__PURE__*/_interopDefaultLegacy(util);
+var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
+var Ajv__default = /*#__PURE__*/_interopDefaultLegacy(Ajv);
+var globals__default = /*#__PURE__*/_interopDefaultLegacy(globals);
+
+/**
+ * @fileoverview Config file operations. This file must be usable in the browser,
+ * so no Node-specific code can be here.
+ * @author Nicholas C. Zakas
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+const RULE_SEVERITY_STRINGS = ["off", "warn", "error"],
+ RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {
+ map[value] = index;
+ return map;
+ }, {}),
+ VALID_SEVERITIES = [0, 1, 2, "off", "warn", "error"];
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * Normalizes the severity value of a rule's configuration to a number
+ * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally
+ * received from the user. A valid config value is either 0, 1, 2, the string "off" (treated the same as 0),
+ * the string "warn" (treated the same as 1), the string "error" (treated the same as 2), or an array
+ * whose first element is one of the above values. Strings are matched case-insensitively.
+ * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.
+ */
+function getRuleSeverity(ruleConfig) {
+ const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (severityValue === 0 || severityValue === 1 || severityValue === 2) {
+ return severityValue;
+ }
+
+ if (typeof severityValue === "string") {
+ return RULE_SEVERITY[severityValue.toLowerCase()] || 0;
+ }
+
+ return 0;
+}
+
+/**
+ * Converts old-style severity settings (0, 1, 2) into new-style
+ * severity settings (off, warn, error) for all rules. Assumption is that severity
+ * values have already been validated as correct.
+ * @param {Object} config The config object to normalize.
+ * @returns {void}
+ */
+function normalizeToStrings(config) {
+
+ if (config.rules) {
+ Object.keys(config.rules).forEach(ruleId => {
+ const ruleConfig = config.rules[ruleId];
+
+ if (typeof ruleConfig === "number") {
+ config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];
+ } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === "number") {
+ ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];
+ }
+ });
+ }
+}
+
+/**
+ * Determines if the severity for the given rule configuration represents an error.
+ * @param {int|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} True if the rule represents an error, false if not.
+ */
+function isErrorSeverity(ruleConfig) {
+ return getRuleSeverity(ruleConfig) === 2;
+}
+
+/**
+ * Checks whether a given config has valid severity or not.
+ * @param {number|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isValidSeverity(ruleConfig) {
+ let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (typeof severity === "string") {
+ severity = severity.toLowerCase();
+ }
+ return VALID_SEVERITIES.indexOf(severity) !== -1;
+}
+
+/**
+ * Checks whether every rule of a given config has valid severity or not.
+ * @param {Object} config The configuration for rules.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isEverySeverityValid(config) {
+ return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));
+}
+
+/**
+ * Normalizes a value for a global in a config
+ * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in
+ * a global directive comment
+ * @returns {("readable"|"writeable"|"off")} The value normalized as a string
+ * @throws Error if global value is invalid
+ */
+function normalizeConfigGlobal(configuredValue) {
+ switch (configuredValue) {
+ case "off":
+ return "off";
+
+ case true:
+ case "true":
+ case "writeable":
+ case "writable":
+ return "writable";
+
+ case null:
+ case false:
+ case "false":
+ case "readable":
+ case "readonly":
+ return "readonly";
+
+ default:
+ throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);
+ }
+}
+
+var ConfigOps = {
+ __proto__: null,
+ getRuleSeverity: getRuleSeverity,
+ normalizeToStrings: normalizeToStrings,
+ isErrorSeverity: isErrorSeverity,
+ isValidSeverity: isValidSeverity,
+ isEverySeverityValid: isEverySeverityValid,
+ normalizeConfigGlobal: normalizeConfigGlobal
+};
+
+/**
+ * @fileoverview Provide the function that emits deprecation warnings.
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+// Defitions for deprecation warnings.
+const deprecationWarningMessages = {
+ ESLINT_LEGACY_ECMAFEATURES:
+ "The 'ecmaFeatures' config file property is deprecated and has no effect.",
+ ESLINT_PERSONAL_CONFIG_LOAD:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please use a config file per project or the '--config' option.",
+ ESLINT_PERSONAL_CONFIG_SUPPRESS:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please remove it or add 'root:true' to the config files in your " +
+ "projects in order to avoid loading '~/.eslintrc.*' accidentally."
+};
+
+const sourceFileErrorCache = new Set();
+
+/**
+ * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted
+ * for each unique file path, but repeated invocations with the same file path have no effect.
+ * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.
+ * @param {string} source The name of the configuration source to report the warning for.
+ * @param {string} errorCode The warning message to show.
+ * @returns {void}
+ */
+function emitDeprecationWarning(source, errorCode) {
+ const cacheKey = JSON.stringify({ source, errorCode });
+
+ if (sourceFileErrorCache.has(cacheKey)) {
+ return;
+ }
+ sourceFileErrorCache.add(cacheKey);
+
+ const rel = path__default["default"].relative(process.cwd(), source);
+ const message = deprecationWarningMessages[errorCode];
+
+ process.emitWarning(
+ `${message} (found in "${rel}")`,
+ "DeprecationWarning",
+ errorCode
+ );
+}
+
+/**
+ * @fileoverview The instance of Ajv validator.
+ * @author Evgeny Poberezkin
+ */
+
+//-----------------------------------------------------------------------------
+// Helpers
+//-----------------------------------------------------------------------------
+
+/*
+ * Copied from ajv/lib/refs/json-schema-draft-04.json
+ * The MIT License (MIT)
+ * Copyright (c) 2015-2017 Evgeny Poberezkin
+ */
+const metaSchema = {
+ id: "http://json-schema.org/draft-04/schema#",
+ $schema: "http://json-schema.org/draft-04/schema#",
+ description: "Core schema meta-schema",
+ definitions: {
+ schemaArray: {
+ type: "array",
+ minItems: 1,
+ items: { $ref: "#" }
+ },
+ positiveInteger: {
+ type: "integer",
+ minimum: 0
+ },
+ positiveIntegerDefault0: {
+ allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]
+ },
+ simpleTypes: {
+ enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
+ },
+ stringArray: {
+ type: "array",
+ items: { type: "string" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ },
+ type: "object",
+ properties: {
+ id: {
+ type: "string"
+ },
+ $schema: {
+ type: "string"
+ },
+ title: {
+ type: "string"
+ },
+ description: {
+ type: "string"
+ },
+ default: { },
+ multipleOf: {
+ type: "number",
+ minimum: 0,
+ exclusiveMinimum: true
+ },
+ maximum: {
+ type: "number"
+ },
+ exclusiveMaximum: {
+ type: "boolean",
+ default: false
+ },
+ minimum: {
+ type: "number"
+ },
+ exclusiveMinimum: {
+ type: "boolean",
+ default: false
+ },
+ maxLength: { $ref: "#/definitions/positiveInteger" },
+ minLength: { $ref: "#/definitions/positiveIntegerDefault0" },
+ pattern: {
+ type: "string",
+ format: "regex"
+ },
+ additionalItems: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ items: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/schemaArray" }
+ ],
+ default: { }
+ },
+ maxItems: { $ref: "#/definitions/positiveInteger" },
+ minItems: { $ref: "#/definitions/positiveIntegerDefault0" },
+ uniqueItems: {
+ type: "boolean",
+ default: false
+ },
+ maxProperties: { $ref: "#/definitions/positiveInteger" },
+ minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },
+ required: { $ref: "#/definitions/stringArray" },
+ additionalProperties: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ definitions: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ properties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ patternProperties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ dependencies: {
+ type: "object",
+ additionalProperties: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/stringArray" }
+ ]
+ }
+ },
+ enum: {
+ type: "array",
+ minItems: 1,
+ uniqueItems: true
+ },
+ type: {
+ anyOf: [
+ { $ref: "#/definitions/simpleTypes" },
+ {
+ type: "array",
+ items: { $ref: "#/definitions/simpleTypes" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ ]
+ },
+ format: { type: "string" },
+ allOf: { $ref: "#/definitions/schemaArray" },
+ anyOf: { $ref: "#/definitions/schemaArray" },
+ oneOf: { $ref: "#/definitions/schemaArray" },
+ not: { $ref: "#" }
+ },
+ dependencies: {
+ exclusiveMaximum: ["maximum"],
+ exclusiveMinimum: ["minimum"]
+ },
+ default: { }
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+var ajvOrig = (additionalOptions = {}) => {
+ const ajv = new Ajv__default["default"]({
+ meta: false,
+ useDefaults: true,
+ validateSchema: false,
+ missingRefs: "ignore",
+ verbose: true,
+ schemaId: "auto",
+ ...additionalOptions
+ });
+
+ ajv.addMetaSchema(metaSchema);
+ // eslint-disable-next-line no-underscore-dangle
+ ajv._opts.defaultMeta = metaSchema.id;
+
+ return ajv;
+};
+
+/**
+ * @fileoverview Defines a schema for configs.
+ * @author Sylvan Mably
+ */
+
+const baseConfigProperties = {
+ $schema: { type: "string" },
+ env: { type: "object" },
+ extends: { $ref: "#/definitions/stringOrStrings" },
+ globals: { type: "object" },
+ overrides: {
+ type: "array",
+ items: { $ref: "#/definitions/overrideConfig" },
+ additionalItems: false
+ },
+ parser: { type: ["string", "null"] },
+ parserOptions: { type: "object" },
+ plugins: { type: "array" },
+ processor: { type: "string" },
+ rules: { type: "object" },
+ settings: { type: "object" },
+ noInlineConfig: { type: "boolean" },
+ reportUnusedDisableDirectives: { type: "boolean" },
+
+ ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
+};
+
+const configSchema = {
+ definitions: {
+ stringOrStrings: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false
+ }
+ ]
+ },
+ stringOrStringsRequired: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false,
+ minItems: 1
+ }
+ ]
+ },
+
+ // Config at top-level.
+ objectConfig: {
+ type: "object",
+ properties: {
+ root: { type: "boolean" },
+ ignorePatterns: { $ref: "#/definitions/stringOrStrings" },
+ ...baseConfigProperties
+ },
+ additionalProperties: false
+ },
+
+ // Config in `overrides`.
+ overrideConfig: {
+ type: "object",
+ properties: {
+ excludedFiles: { $ref: "#/definitions/stringOrStrings" },
+ files: { $ref: "#/definitions/stringOrStringsRequired" },
+ ...baseConfigProperties
+ },
+ required: ["files"],
+ additionalProperties: false
+ }
+ },
+
+ $ref: "#/definitions/objectConfig"
+};
+
+/**
+ * @fileoverview Defines environment settings and globals.
+ * @author Elan Shanker
+ */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the object that has difference.
+ * @param {Record} current The newer object.
+ * @param {Record} prev The older object.
+ * @returns {Record} The difference object.
+ */
+function getDiff(current, prev) {
+ const retv = {};
+
+ for (const [key, value] of Object.entries(current)) {
+ if (!Object.hasOwnProperty.call(prev, key)) {
+ retv[key] = value;
+ }
+ }
+
+ return retv;
+}
+
+const newGlobals2015 = getDiff(globals__default["default"].es2015, globals__default["default"].es5); // 19 variables such as Promise, Map, ...
+const newGlobals2017 = {
+ Atomics: false,
+ SharedArrayBuffer: false
+};
+const newGlobals2020 = {
+ BigInt: false,
+ BigInt64Array: false,
+ BigUint64Array: false,
+ globalThis: false
+};
+
+const newGlobals2021 = {
+ AggregateError: false,
+ FinalizationRegistry: false,
+ WeakRef: false
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/** @type {Map} */
+var environments = new Map(Object.entries({
+
+ // Language
+ builtin: {
+ globals: globals__default["default"].es5
+ },
+ es6: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2015: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2016: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 7
+ }
+ },
+ es2017: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 8
+ }
+ },
+ es2018: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 9
+ }
+ },
+ es2019: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 10
+ }
+ },
+ es2020: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },
+ parserOptions: {
+ ecmaVersion: 11
+ }
+ },
+ es2021: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 12
+ }
+ },
+ es2022: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 13
+ }
+ },
+ es2023: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 14
+ }
+ },
+ es2024: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 15
+ }
+ },
+
+ // Platforms
+ browser: {
+ globals: globals__default["default"].browser
+ },
+ node: {
+ globals: globals__default["default"].node,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ "shared-node-browser": {
+ globals: globals__default["default"]["shared-node-browser"]
+ },
+ worker: {
+ globals: globals__default["default"].worker
+ },
+ serviceworker: {
+ globals: globals__default["default"].serviceworker
+ },
+
+ // Frameworks
+ commonjs: {
+ globals: globals__default["default"].commonjs,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ amd: {
+ globals: globals__default["default"].amd
+ },
+ mocha: {
+ globals: globals__default["default"].mocha
+ },
+ jasmine: {
+ globals: globals__default["default"].jasmine
+ },
+ jest: {
+ globals: globals__default["default"].jest
+ },
+ phantomjs: {
+ globals: globals__default["default"].phantomjs
+ },
+ jquery: {
+ globals: globals__default["default"].jquery
+ },
+ qunit: {
+ globals: globals__default["default"].qunit
+ },
+ prototypejs: {
+ globals: globals__default["default"].prototypejs
+ },
+ shelljs: {
+ globals: globals__default["default"].shelljs
+ },
+ meteor: {
+ globals: globals__default["default"].meteor
+ },
+ mongo: {
+ globals: globals__default["default"].mongo
+ },
+ protractor: {
+ globals: globals__default["default"].protractor
+ },
+ applescript: {
+ globals: globals__default["default"].applescript
+ },
+ nashorn: {
+ globals: globals__default["default"].nashorn
+ },
+ atomtest: {
+ globals: globals__default["default"].atomtest
+ },
+ embertest: {
+ globals: globals__default["default"].embertest
+ },
+ webextensions: {
+ globals: globals__default["default"].webextensions
+ },
+ greasemonkey: {
+ globals: globals__default["default"].greasemonkey
+ }
+}));
+
+/**
+ * @fileoverview Validates configs.
+ * @author Brandon Mills
+ */
+
+const ajv = ajvOrig();
+
+const ruleValidators = new WeakMap();
+const noop = Function.prototype;
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+let validateSchema;
+const severityMap = {
+ error: 2,
+ warn: 1,
+ off: 0
+};
+
+const validated = new WeakSet();
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+class ConfigValidator {
+ constructor({ builtInRules = new Map() } = {}) {
+ this.builtInRules = builtInRules;
+ }
+
+ /**
+ * Gets a complete options schema for a rule.
+ * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object
+ * @returns {Object} JSON Schema for the rule's options.
+ */
+ getRuleOptionsSchema(rule) {
+ if (!rule) {
+ return null;
+ }
+
+ const schema = rule.schema || rule.meta && rule.meta.schema;
+
+ // Given a tuple of schemas, insert warning level at the beginning
+ if (Array.isArray(schema)) {
+ if (schema.length) {
+ return {
+ type: "array",
+ items: schema,
+ minItems: 0,
+ maxItems: schema.length
+ };
+ }
+ return {
+ type: "array",
+ minItems: 0,
+ maxItems: 0
+ };
+
+ }
+
+ // Given a full schema, leave it alone
+ return schema || null;
+ }
+
+ /**
+ * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.
+ * @param {options} options The given options for the rule.
+ * @returns {number|string} The rule's severity value
+ */
+ validateRuleSeverity(options) {
+ const severity = Array.isArray(options) ? options[0] : options;
+ const normSeverity = typeof severity === "string" ? severityMap[severity.toLowerCase()] : severity;
+
+ if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {
+ return normSeverity;
+ }
+
+ throw new Error(`\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util__default["default"].inspect(severity).replace(/'/gu, "\"").replace(/\n/gu, "")}').\n`);
+
+ }
+
+ /**
+ * Validates the non-severity options passed to a rule, based on its schema.
+ * @param {{create: Function}} rule The rule to validate
+ * @param {Array} localOptions The options for the rule, excluding severity
+ * @returns {void}
+ */
+ validateRuleSchema(rule, localOptions) {
+ if (!ruleValidators.has(rule)) {
+ const schema = this.getRuleOptionsSchema(rule);
+
+ if (schema) {
+ ruleValidators.set(rule, ajv.compile(schema));
+ }
+ }
+
+ const validateRule = ruleValidators.get(rule);
+
+ if (validateRule) {
+ validateRule(localOptions);
+ if (validateRule.errors) {
+ throw new Error(validateRule.errors.map(
+ error => `\tValue ${JSON.stringify(error.data)} ${error.message}.\n`
+ ).join(""));
+ }
+ }
+ }
+
+ /**
+ * Validates a rule's options against its schema.
+ * @param {{create: Function}|null} rule The rule that the config is being validated for
+ * @param {string} ruleId The rule's unique name.
+ * @param {Array|number} options The given options for the rule.
+ * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,
+ * no source is prepended to the message.
+ * @returns {void}
+ */
+ validateRuleOptions(rule, ruleId, options, source = null) {
+ try {
+ const severity = this.validateRuleSeverity(options);
+
+ if (severity !== 0) {
+ this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);
+ }
+ } catch (err) {
+ const enhancedMessage = `Configuration for rule "${ruleId}" is invalid:\n${err.message}`;
+
+ if (typeof source === "string") {
+ throw new Error(`${source}:\n\t${enhancedMessage}`);
+ } else {
+ throw new Error(enhancedMessage);
+ }
+ }
+ }
+
+ /**
+ * Validates an environment object
+ * @param {Object} environment The environment config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.
+ * @returns {void}
+ */
+ validateEnvironment(
+ environment,
+ source,
+ getAdditionalEnv = noop
+ ) {
+
+ // not having an environment is ok
+ if (!environment) {
+ return;
+ }
+
+ Object.keys(environment).forEach(id => {
+ const env = getAdditionalEnv(id) || environments.get(id) || null;
+
+ if (!env) {
+ const message = `${source}:\n\tEnvironment key "${id}" is unknown\n`;
+
+ throw new Error(message);
+ }
+ });
+ }
+
+ /**
+ * Validates a rules config object
+ * @param {Object} rulesConfig The rules config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules
+ * @returns {void}
+ */
+ validateRules(
+ rulesConfig,
+ source,
+ getAdditionalRule = noop
+ ) {
+ if (!rulesConfig) {
+ return;
+ }
+
+ Object.keys(rulesConfig).forEach(id => {
+ const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;
+
+ this.validateRuleOptions(rule, id, rulesConfig[id], source);
+ });
+ }
+
+ /**
+ * Validates a `globals` section of a config file
+ * @param {Object} globalsConfig The `globals` section
+ * @param {string|null} source The name of the configuration source to report in the event of an error.
+ * @returns {void}
+ */
+ validateGlobals(globalsConfig, source = null) {
+ if (!globalsConfig) {
+ return;
+ }
+
+ Object.entries(globalsConfig)
+ .forEach(([configuredGlobal, configuredValue]) => {
+ try {
+ normalizeConfigGlobal(configuredValue);
+ } catch (err) {
+ throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\n${err.message}`);
+ }
+ });
+ }
+
+ /**
+ * Validate `processor` configuration.
+ * @param {string|undefined} processorName The processor name.
+ * @param {string} source The name of config file.
+ * @param {function(id:string): Processor} getProcessor The getter of defined processors.
+ * @returns {void}
+ */
+ validateProcessor(processorName, source, getProcessor) {
+ if (processorName && !getProcessor(processorName)) {
+ throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);
+ }
+ }
+
+ /**
+ * Formats an array of schema validation errors.
+ * @param {Array} errors An array of error messages to format.
+ * @returns {string} Formatted error message
+ */
+ formatErrors(errors) {
+ return errors.map(error => {
+ if (error.keyword === "additionalProperties") {
+ const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;
+
+ return `Unexpected top-level property "${formattedPropertyPath}"`;
+ }
+ if (error.keyword === "type") {
+ const formattedField = error.dataPath.slice(1);
+ const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join("/") : error.schema;
+ const formattedValue = JSON.stringify(error.data);
+
+ return `Property "${formattedField}" is the wrong type (expected ${formattedExpectedType} but got \`${formattedValue}\`)`;
+ }
+
+ const field = error.dataPath[0] === "." ? error.dataPath.slice(1) : error.dataPath;
+
+ return `"${field}" ${error.message}. Value: ${JSON.stringify(error.data)}`;
+ }).map(message => `\t- ${message}.\n`).join("");
+ }
+
+ /**
+ * Validates the top level properties of the config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @returns {void}
+ */
+ validateConfigSchema(config, source = null) {
+ validateSchema = validateSchema || ajv.compile(configSchema);
+
+ if (!validateSchema(config)) {
+ throw new Error(`ESLint configuration in ${source} is invalid:\n${this.formatErrors(validateSchema.errors)}`);
+ }
+
+ if (Object.hasOwnProperty.call(config, "ecmaFeatures")) {
+ emitDeprecationWarning(source, "ESLINT_LEGACY_ECMAFEATURES");
+ }
+ }
+
+ /**
+ * Validates an entire config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.
+ * @returns {void}
+ */
+ validate(config, source, getAdditionalRule, getAdditionalEnv) {
+ this.validateConfigSchema(config, source);
+ this.validateRules(config.rules, source, getAdditionalRule);
+ this.validateEnvironment(config.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+
+ for (const override of config.overrides || []) {
+ this.validateRules(override.rules, source, getAdditionalRule);
+ this.validateEnvironment(override.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+ }
+ }
+
+ /**
+ * Validate config array object.
+ * @param {ConfigArray} configArray The config array to validate.
+ * @returns {void}
+ */
+ validateConfigArray(configArray) {
+ const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);
+ const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);
+ const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);
+
+ // Validate.
+ for (const element of configArray) {
+ if (validated.has(element)) {
+ continue;
+ }
+ validated.add(element);
+
+ this.validateEnvironment(element.env, element.name, getPluginEnv);
+ this.validateGlobals(element.globals, element.name);
+ this.validateProcessor(element.processor, element.name, getPluginProcessor);
+ this.validateRules(element.rules, element.name, getPluginRule);
+ }
+ }
+
+}
+
+/**
+ * @fileoverview Common helpers for naming of plugins, formatters and configs
+ */
+
+const NAMESPACE_REGEX = /^@.*\//iu;
+
+/**
+ * Brings package name to correct format based on prefix
+ * @param {string} name The name of the package.
+ * @param {string} prefix Can be either "eslint-plugin", "eslint-config" or "eslint-formatter"
+ * @returns {string} Normalized name of the package
+ * @private
+ */
+function normalizePackageName(name, prefix) {
+ let normalizedName = name;
+
+ /**
+ * On Windows, name can come in with Windows slashes instead of Unix slashes.
+ * Normalize to Unix first to avoid errors later on.
+ * https://github.com/eslint/eslint/issues/5644
+ */
+ if (normalizedName.includes("\\")) {
+ normalizedName = normalizedName.replace(/\\/gu, "/");
+ }
+
+ if (normalizedName.charAt(0) === "@") {
+
+ /**
+ * it's a scoped package
+ * package name is the prefix, or just a username
+ */
+ const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, "u"),
+ scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, "u");
+
+ if (scopedPackageShortcutRegex.test(normalizedName)) {
+ normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);
+ } else if (!scopedPackageNameRegex.test(normalizedName.split("/")[1])) {
+
+ /**
+ * for scoped packages, insert the prefix after the first / unless
+ * the path is already @scope/eslint or @scope/eslint-xxx-yyy
+ */
+ normalizedName = normalizedName.replace(/^@([^/]+)\/(.*)$/u, `@$1/${prefix}-$2`);
+ }
+ } else if (!normalizedName.startsWith(`${prefix}-`)) {
+ normalizedName = `${prefix}-${normalizedName}`;
+ }
+
+ return normalizedName;
+}
+
+/**
+ * Removes the prefix from a fullname.
+ * @param {string} fullname The term which may have the prefix.
+ * @param {string} prefix The prefix to remove.
+ * @returns {string} The term without prefix.
+ */
+function getShorthandName(fullname, prefix) {
+ if (fullname[0] === "@") {
+ let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, "u").exec(fullname);
+
+ if (matchResult) {
+ return matchResult[1];
+ }
+
+ matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, "u").exec(fullname);
+ if (matchResult) {
+ return `${matchResult[1]}/${matchResult[2]}`;
+ }
+ } else if (fullname.startsWith(`${prefix}-`)) {
+ return fullname.slice(prefix.length + 1);
+ }
+
+ return fullname;
+}
+
+/**
+ * Gets the scope (namespace) of a term.
+ * @param {string} term The term which may have the namespace.
+ * @returns {string} The namespace of the term if it has one.
+ */
+function getNamespaceFromTerm(term) {
+ const match = term.match(NAMESPACE_REGEX);
+
+ return match ? match[0] : "";
+}
+
+var naming = {
+ __proto__: null,
+ normalizePackageName: normalizePackageName,
+ getShorthandName: getShorthandName,
+ getNamespaceFromTerm: getNamespaceFromTerm
+};
+
+/**
+ * @fileoverview Package exports for @eslint/eslintrc
+ * @author Nicholas C. Zakas
+ */
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+const Legacy = {
+ environments,
+
+ // shared
+ ConfigOps,
+ ConfigValidator,
+ naming
+};
+
+exports.Legacy = Legacy;
+//# sourceMappingURL=eslintrc-universal.cjs.map
diff --git a/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map b/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map
new file mode 100644
index 0000000..12895a6
--- /dev/null
+++ b/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"eslintrc-universal.cjs","sources":["../lib/shared/config-ops.js","../lib/shared/deprecation-warnings.js","../lib/shared/ajv.js","../conf/config-schema.js","../conf/environments.js","../lib/shared/config-validator.js","../lib/shared/naming.js","../lib/index-universal.js"],"sourcesContent":["/**\n * @fileoverview Config file operations. This file must be usable in the browser,\n * so no Node-specific code can be here.\n * @author Nicholas C. Zakas\n */\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\nconst RULE_SEVERITY_STRINGS = [\"off\", \"warn\", \"error\"],\n RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {\n map[value] = index;\n return map;\n }, {}),\n VALID_SEVERITIES = [0, 1, 2, \"off\", \"warn\", \"error\"];\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * Normalizes the severity value of a rule's configuration to a number\n * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally\n * received from the user. A valid config value is either 0, 1, 2, the string \"off\" (treated the same as 0),\n * the string \"warn\" (treated the same as 1), the string \"error\" (treated the same as 2), or an array\n * whose first element is one of the above values. Strings are matched case-insensitively.\n * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.\n */\nfunction getRuleSeverity(ruleConfig) {\n const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;\n\n if (severityValue === 0 || severityValue === 1 || severityValue === 2) {\n return severityValue;\n }\n\n if (typeof severityValue === \"string\") {\n return RULE_SEVERITY[severityValue.toLowerCase()] || 0;\n }\n\n return 0;\n}\n\n/**\n * Converts old-style severity settings (0, 1, 2) into new-style\n * severity settings (off, warn, error) for all rules. Assumption is that severity\n * values have already been validated as correct.\n * @param {Object} config The config object to normalize.\n * @returns {void}\n */\nfunction normalizeToStrings(config) {\n\n if (config.rules) {\n Object.keys(config.rules).forEach(ruleId => {\n const ruleConfig = config.rules[ruleId];\n\n if (typeof ruleConfig === \"number\") {\n config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];\n } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === \"number\") {\n ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];\n }\n });\n }\n}\n\n/**\n * Determines if the severity for the given rule configuration represents an error.\n * @param {int|string|Array} ruleConfig The configuration for an individual rule.\n * @returns {boolean} True if the rule represents an error, false if not.\n */\nfunction isErrorSeverity(ruleConfig) {\n return getRuleSeverity(ruleConfig) === 2;\n}\n\n/**\n * Checks whether a given config has valid severity or not.\n * @param {number|string|Array} ruleConfig The configuration for an individual rule.\n * @returns {boolean} `true` if the configuration has valid severity.\n */\nfunction isValidSeverity(ruleConfig) {\n let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;\n\n if (typeof severity === \"string\") {\n severity = severity.toLowerCase();\n }\n return VALID_SEVERITIES.indexOf(severity) !== -1;\n}\n\n/**\n * Checks whether every rule of a given config has valid severity or not.\n * @param {Object} config The configuration for rules.\n * @returns {boolean} `true` if the configuration has valid severity.\n */\nfunction isEverySeverityValid(config) {\n return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));\n}\n\n/**\n * Normalizes a value for a global in a config\n * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in\n * a global directive comment\n * @returns {(\"readable\"|\"writeable\"|\"off\")} The value normalized as a string\n * @throws Error if global value is invalid\n */\nfunction normalizeConfigGlobal(configuredValue) {\n switch (configuredValue) {\n case \"off\":\n return \"off\";\n\n case true:\n case \"true\":\n case \"writeable\":\n case \"writable\":\n return \"writable\";\n\n case null:\n case false:\n case \"false\":\n case \"readable\":\n case \"readonly\":\n return \"readonly\";\n\n default:\n throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);\n }\n}\n\nexport {\n getRuleSeverity,\n normalizeToStrings,\n isErrorSeverity,\n isValidSeverity,\n isEverySeverityValid,\n normalizeConfigGlobal\n};\n","/**\n * @fileoverview Provide the function that emits deprecation warnings.\n * @author Toru Nagashima \n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport path from \"path\";\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\n\n// Defitions for deprecation warnings.\nconst deprecationWarningMessages = {\n ESLINT_LEGACY_ECMAFEATURES:\n \"The 'ecmaFeatures' config file property is deprecated and has no effect.\",\n ESLINT_PERSONAL_CONFIG_LOAD:\n \"'~/.eslintrc.*' config files have been deprecated. \" +\n \"Please use a config file per project or the '--config' option.\",\n ESLINT_PERSONAL_CONFIG_SUPPRESS:\n \"'~/.eslintrc.*' config files have been deprecated. \" +\n \"Please remove it or add 'root:true' to the config files in your \" +\n \"projects in order to avoid loading '~/.eslintrc.*' accidentally.\"\n};\n\nconst sourceFileErrorCache = new Set();\n\n/**\n * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted\n * for each unique file path, but repeated invocations with the same file path have no effect.\n * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.\n * @param {string} source The name of the configuration source to report the warning for.\n * @param {string} errorCode The warning message to show.\n * @returns {void}\n */\nfunction emitDeprecationWarning(source, errorCode) {\n const cacheKey = JSON.stringify({ source, errorCode });\n\n if (sourceFileErrorCache.has(cacheKey)) {\n return;\n }\n sourceFileErrorCache.add(cacheKey);\n\n const rel = path.relative(process.cwd(), source);\n const message = deprecationWarningMessages[errorCode];\n\n process.emitWarning(\n `${message} (found in \"${rel}\")`,\n \"DeprecationWarning\",\n errorCode\n );\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport {\n emitDeprecationWarning\n};\n","/**\n * @fileoverview The instance of Ajv validator.\n * @author Evgeny Poberezkin\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport Ajv from \"ajv\";\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/*\n * Copied from ajv/lib/refs/json-schema-draft-04.json\n * The MIT License (MIT)\n * Copyright (c) 2015-2017 Evgeny Poberezkin\n */\nconst metaSchema = {\n id: \"http://json-schema.org/draft-04/schema#\",\n $schema: \"http://json-schema.org/draft-04/schema#\",\n description: \"Core schema meta-schema\",\n definitions: {\n schemaArray: {\n type: \"array\",\n minItems: 1,\n items: { $ref: \"#\" }\n },\n positiveInteger: {\n type: \"integer\",\n minimum: 0\n },\n positiveIntegerDefault0: {\n allOf: [{ $ref: \"#/definitions/positiveInteger\" }, { default: 0 }]\n },\n simpleTypes: {\n enum: [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n stringArray: {\n type: \"array\",\n items: { type: \"string\" },\n minItems: 1,\n uniqueItems: true\n }\n },\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n $schema: {\n type: \"string\"\n },\n title: {\n type: \"string\"\n },\n description: {\n type: \"string\"\n },\n default: { },\n multipleOf: {\n type: \"number\",\n minimum: 0,\n exclusiveMinimum: true\n },\n maximum: {\n type: \"number\"\n },\n exclusiveMaximum: {\n type: \"boolean\",\n default: false\n },\n minimum: {\n type: \"number\"\n },\n exclusiveMinimum: {\n type: \"boolean\",\n default: false\n },\n maxLength: { $ref: \"#/definitions/positiveInteger\" },\n minLength: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n pattern: {\n type: \"string\",\n format: \"regex\"\n },\n additionalItems: {\n anyOf: [\n { type: \"boolean\" },\n { $ref: \"#\" }\n ],\n default: { }\n },\n items: {\n anyOf: [\n { $ref: \"#\" },\n { $ref: \"#/definitions/schemaArray\" }\n ],\n default: { }\n },\n maxItems: { $ref: \"#/definitions/positiveInteger\" },\n minItems: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n uniqueItems: {\n type: \"boolean\",\n default: false\n },\n maxProperties: { $ref: \"#/definitions/positiveInteger\" },\n minProperties: { $ref: \"#/definitions/positiveIntegerDefault0\" },\n required: { $ref: \"#/definitions/stringArray\" },\n additionalProperties: {\n anyOf: [\n { type: \"boolean\" },\n { $ref: \"#\" }\n ],\n default: { }\n },\n definitions: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n properties: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n patternProperties: {\n type: \"object\",\n additionalProperties: { $ref: \"#\" },\n default: { }\n },\n dependencies: {\n type: \"object\",\n additionalProperties: {\n anyOf: [\n { $ref: \"#\" },\n { $ref: \"#/definitions/stringArray\" }\n ]\n }\n },\n enum: {\n type: \"array\",\n minItems: 1,\n uniqueItems: true\n },\n type: {\n anyOf: [\n { $ref: \"#/definitions/simpleTypes\" },\n {\n type: \"array\",\n items: { $ref: \"#/definitions/simpleTypes\" },\n minItems: 1,\n uniqueItems: true\n }\n ]\n },\n format: { type: \"string\" },\n allOf: { $ref: \"#/definitions/schemaArray\" },\n anyOf: { $ref: \"#/definitions/schemaArray\" },\n oneOf: { $ref: \"#/definitions/schemaArray\" },\n not: { $ref: \"#\" }\n },\n dependencies: {\n exclusiveMaximum: [\"maximum\"],\n exclusiveMinimum: [\"minimum\"]\n },\n default: { }\n};\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport default (additionalOptions = {}) => {\n const ajv = new Ajv({\n meta: false,\n useDefaults: true,\n validateSchema: false,\n missingRefs: \"ignore\",\n verbose: true,\n schemaId: \"auto\",\n ...additionalOptions\n });\n\n ajv.addMetaSchema(metaSchema);\n // eslint-disable-next-line no-underscore-dangle\n ajv._opts.defaultMeta = metaSchema.id;\n\n return ajv;\n};\n","/**\n * @fileoverview Defines a schema for configs.\n * @author Sylvan Mably\n */\n\nconst baseConfigProperties = {\n $schema: { type: \"string\" },\n env: { type: \"object\" },\n extends: { $ref: \"#/definitions/stringOrStrings\" },\n globals: { type: \"object\" },\n overrides: {\n type: \"array\",\n items: { $ref: \"#/definitions/overrideConfig\" },\n additionalItems: false\n },\n parser: { type: [\"string\", \"null\"] },\n parserOptions: { type: \"object\" },\n plugins: { type: \"array\" },\n processor: { type: \"string\" },\n rules: { type: \"object\" },\n settings: { type: \"object\" },\n noInlineConfig: { type: \"boolean\" },\n reportUnusedDisableDirectives: { type: \"boolean\" },\n\n ecmaFeatures: { type: \"object\" } // deprecated; logs a warning when used\n};\n\nconst configSchema = {\n definitions: {\n stringOrStrings: {\n oneOf: [\n { type: \"string\" },\n {\n type: \"array\",\n items: { type: \"string\" },\n additionalItems: false\n }\n ]\n },\n stringOrStringsRequired: {\n oneOf: [\n { type: \"string\" },\n {\n type: \"array\",\n items: { type: \"string\" },\n additionalItems: false,\n minItems: 1\n }\n ]\n },\n\n // Config at top-level.\n objectConfig: {\n type: \"object\",\n properties: {\n root: { type: \"boolean\" },\n ignorePatterns: { $ref: \"#/definitions/stringOrStrings\" },\n ...baseConfigProperties\n },\n additionalProperties: false\n },\n\n // Config in `overrides`.\n overrideConfig: {\n type: \"object\",\n properties: {\n excludedFiles: { $ref: \"#/definitions/stringOrStrings\" },\n files: { $ref: \"#/definitions/stringOrStringsRequired\" },\n ...baseConfigProperties\n },\n required: [\"files\"],\n additionalProperties: false\n }\n },\n\n $ref: \"#/definitions/objectConfig\"\n};\n\nexport default configSchema;\n","/**\n * @fileoverview Defines environment settings and globals.\n * @author Elan Shanker\n */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport globals from \"globals\";\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Get the object that has difference.\n * @param {Record} current The newer object.\n * @param {Record} prev The older object.\n * @returns {Record} The difference object.\n */\nfunction getDiff(current, prev) {\n const retv = {};\n\n for (const [key, value] of Object.entries(current)) {\n if (!Object.hasOwnProperty.call(prev, key)) {\n retv[key] = value;\n }\n }\n\n return retv;\n}\n\nconst newGlobals2015 = getDiff(globals.es2015, globals.es5); // 19 variables such as Promise, Map, ...\nconst newGlobals2017 = {\n Atomics: false,\n SharedArrayBuffer: false\n};\nconst newGlobals2020 = {\n BigInt: false,\n BigInt64Array: false,\n BigUint64Array: false,\n globalThis: false\n};\n\nconst newGlobals2021 = {\n AggregateError: false,\n FinalizationRegistry: false,\n WeakRef: false\n};\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/** @type {Map} */\nexport default new Map(Object.entries({\n\n // Language\n builtin: {\n globals: globals.es5\n },\n es6: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 6\n }\n },\n es2015: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 6\n }\n },\n es2016: {\n globals: newGlobals2015,\n parserOptions: {\n ecmaVersion: 7\n }\n },\n es2017: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 8\n }\n },\n es2018: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 9\n }\n },\n es2019: {\n globals: { ...newGlobals2015, ...newGlobals2017 },\n parserOptions: {\n ecmaVersion: 10\n }\n },\n es2020: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },\n parserOptions: {\n ecmaVersion: 11\n }\n },\n es2021: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 12\n }\n },\n es2022: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 13\n }\n },\n es2023: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 14\n }\n },\n es2024: {\n globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },\n parserOptions: {\n ecmaVersion: 15\n }\n },\n\n // Platforms\n browser: {\n globals: globals.browser\n },\n node: {\n globals: globals.node,\n parserOptions: {\n ecmaFeatures: {\n globalReturn: true\n }\n }\n },\n \"shared-node-browser\": {\n globals: globals[\"shared-node-browser\"]\n },\n worker: {\n globals: globals.worker\n },\n serviceworker: {\n globals: globals.serviceworker\n },\n\n // Frameworks\n commonjs: {\n globals: globals.commonjs,\n parserOptions: {\n ecmaFeatures: {\n globalReturn: true\n }\n }\n },\n amd: {\n globals: globals.amd\n },\n mocha: {\n globals: globals.mocha\n },\n jasmine: {\n globals: globals.jasmine\n },\n jest: {\n globals: globals.jest\n },\n phantomjs: {\n globals: globals.phantomjs\n },\n jquery: {\n globals: globals.jquery\n },\n qunit: {\n globals: globals.qunit\n },\n prototypejs: {\n globals: globals.prototypejs\n },\n shelljs: {\n globals: globals.shelljs\n },\n meteor: {\n globals: globals.meteor\n },\n mongo: {\n globals: globals.mongo\n },\n protractor: {\n globals: globals.protractor\n },\n applescript: {\n globals: globals.applescript\n },\n nashorn: {\n globals: globals.nashorn\n },\n atomtest: {\n globals: globals.atomtest\n },\n embertest: {\n globals: globals.embertest\n },\n webextensions: {\n globals: globals.webextensions\n },\n greasemonkey: {\n globals: globals.greasemonkey\n }\n}));\n","/**\n * @fileoverview Validates configs.\n * @author Brandon Mills\n */\n\n/* eslint class-methods-use-this: \"off\" */\n\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport util from \"util\";\nimport * as ConfigOps from \"./config-ops.js\";\nimport { emitDeprecationWarning } from \"./deprecation-warnings.js\";\nimport ajvOrig from \"./ajv.js\";\nimport configSchema from \"../../conf/config-schema.js\";\nimport BuiltInEnvironments from \"../../conf/environments.js\";\n\nconst ajv = ajvOrig();\n\nconst ruleValidators = new WeakMap();\nconst noop = Function.prototype;\n\n//------------------------------------------------------------------------------\n// Private\n//------------------------------------------------------------------------------\nlet validateSchema;\nconst severityMap = {\n error: 2,\n warn: 1,\n off: 0\n};\n\nconst validated = new WeakSet();\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nexport default class ConfigValidator {\n constructor({ builtInRules = new Map() } = {}) {\n this.builtInRules = builtInRules;\n }\n\n /**\n * Gets a complete options schema for a rule.\n * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object\n * @returns {Object} JSON Schema for the rule's options.\n */\n getRuleOptionsSchema(rule) {\n if (!rule) {\n return null;\n }\n\n const schema = rule.schema || rule.meta && rule.meta.schema;\n\n // Given a tuple of schemas, insert warning level at the beginning\n if (Array.isArray(schema)) {\n if (schema.length) {\n return {\n type: \"array\",\n items: schema,\n minItems: 0,\n maxItems: schema.length\n };\n }\n return {\n type: \"array\",\n minItems: 0,\n maxItems: 0\n };\n\n }\n\n // Given a full schema, leave it alone\n return schema || null;\n }\n\n /**\n * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.\n * @param {options} options The given options for the rule.\n * @returns {number|string} The rule's severity value\n */\n validateRuleSeverity(options) {\n const severity = Array.isArray(options) ? options[0] : options;\n const normSeverity = typeof severity === \"string\" ? severityMap[severity.toLowerCase()] : severity;\n\n if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {\n return normSeverity;\n }\n\n throw new Error(`\\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util.inspect(severity).replace(/'/gu, \"\\\"\").replace(/\\n/gu, \"\")}').\\n`);\n\n }\n\n /**\n * Validates the non-severity options passed to a rule, based on its schema.\n * @param {{create: Function}} rule The rule to validate\n * @param {Array} localOptions The options for the rule, excluding severity\n * @returns {void}\n */\n validateRuleSchema(rule, localOptions) {\n if (!ruleValidators.has(rule)) {\n const schema = this.getRuleOptionsSchema(rule);\n\n if (schema) {\n ruleValidators.set(rule, ajv.compile(schema));\n }\n }\n\n const validateRule = ruleValidators.get(rule);\n\n if (validateRule) {\n validateRule(localOptions);\n if (validateRule.errors) {\n throw new Error(validateRule.errors.map(\n error => `\\tValue ${JSON.stringify(error.data)} ${error.message}.\\n`\n ).join(\"\"));\n }\n }\n }\n\n /**\n * Validates a rule's options against its schema.\n * @param {{create: Function}|null} rule The rule that the config is being validated for\n * @param {string} ruleId The rule's unique name.\n * @param {Array|number} options The given options for the rule.\n * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,\n * no source is prepended to the message.\n * @returns {void}\n */\n validateRuleOptions(rule, ruleId, options, source = null) {\n try {\n const severity = this.validateRuleSeverity(options);\n\n if (severity !== 0) {\n this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);\n }\n } catch (err) {\n const enhancedMessage = `Configuration for rule \"${ruleId}\" is invalid:\\n${err.message}`;\n\n if (typeof source === \"string\") {\n throw new Error(`${source}:\\n\\t${enhancedMessage}`);\n } else {\n throw new Error(enhancedMessage);\n }\n }\n }\n\n /**\n * Validates an environment object\n * @param {Object} environment The environment config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.\n * @returns {void}\n */\n validateEnvironment(\n environment,\n source,\n getAdditionalEnv = noop\n ) {\n\n // not having an environment is ok\n if (!environment) {\n return;\n }\n\n Object.keys(environment).forEach(id => {\n const env = getAdditionalEnv(id) || BuiltInEnvironments.get(id) || null;\n\n if (!env) {\n const message = `${source}:\\n\\tEnvironment key \"${id}\" is unknown\\n`;\n\n throw new Error(message);\n }\n });\n }\n\n /**\n * Validates a rules config object\n * @param {Object} rulesConfig The rules config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules\n * @returns {void}\n */\n validateRules(\n rulesConfig,\n source,\n getAdditionalRule = noop\n ) {\n if (!rulesConfig) {\n return;\n }\n\n Object.keys(rulesConfig).forEach(id => {\n const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;\n\n this.validateRuleOptions(rule, id, rulesConfig[id], source);\n });\n }\n\n /**\n * Validates a `globals` section of a config file\n * @param {Object} globalsConfig The `globals` section\n * @param {string|null} source The name of the configuration source to report in the event of an error.\n * @returns {void}\n */\n validateGlobals(globalsConfig, source = null) {\n if (!globalsConfig) {\n return;\n }\n\n Object.entries(globalsConfig)\n .forEach(([configuredGlobal, configuredValue]) => {\n try {\n ConfigOps.normalizeConfigGlobal(configuredValue);\n } catch (err) {\n throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\\n${err.message}`);\n }\n });\n }\n\n /**\n * Validate `processor` configuration.\n * @param {string|undefined} processorName The processor name.\n * @param {string} source The name of config file.\n * @param {function(id:string): Processor} getProcessor The getter of defined processors.\n * @returns {void}\n */\n validateProcessor(processorName, source, getProcessor) {\n if (processorName && !getProcessor(processorName)) {\n throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);\n }\n }\n\n /**\n * Formats an array of schema validation errors.\n * @param {Array} errors An array of error messages to format.\n * @returns {string} Formatted error message\n */\n formatErrors(errors) {\n return errors.map(error => {\n if (error.keyword === \"additionalProperties\") {\n const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;\n\n return `Unexpected top-level property \"${formattedPropertyPath}\"`;\n }\n if (error.keyword === \"type\") {\n const formattedField = error.dataPath.slice(1);\n const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join(\"/\") : error.schema;\n const formattedValue = JSON.stringify(error.data);\n\n return `Property \"${formattedField}\" is the wrong type (expected ${formattedExpectedType} but got \\`${formattedValue}\\`)`;\n }\n\n const field = error.dataPath[0] === \".\" ? error.dataPath.slice(1) : error.dataPath;\n\n return `\"${field}\" ${error.message}. Value: ${JSON.stringify(error.data)}`;\n }).map(message => `\\t- ${message}.\\n`).join(\"\");\n }\n\n /**\n * Validates the top level properties of the config object.\n * @param {Object} config The config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @returns {void}\n */\n validateConfigSchema(config, source = null) {\n validateSchema = validateSchema || ajv.compile(configSchema);\n\n if (!validateSchema(config)) {\n throw new Error(`ESLint configuration in ${source} is invalid:\\n${this.formatErrors(validateSchema.errors)}`);\n }\n\n if (Object.hasOwnProperty.call(config, \"ecmaFeatures\")) {\n emitDeprecationWarning(source, \"ESLINT_LEGACY_ECMAFEATURES\");\n }\n }\n\n /**\n * Validates an entire config object.\n * @param {Object} config The config object to validate.\n * @param {string} source The name of the configuration source to report in any errors.\n * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.\n * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.\n * @returns {void}\n */\n validate(config, source, getAdditionalRule, getAdditionalEnv) {\n this.validateConfigSchema(config, source);\n this.validateRules(config.rules, source, getAdditionalRule);\n this.validateEnvironment(config.env, source, getAdditionalEnv);\n this.validateGlobals(config.globals, source);\n\n for (const override of config.overrides || []) {\n this.validateRules(override.rules, source, getAdditionalRule);\n this.validateEnvironment(override.env, source, getAdditionalEnv);\n this.validateGlobals(config.globals, source);\n }\n }\n\n /**\n * Validate config array object.\n * @param {ConfigArray} configArray The config array to validate.\n * @returns {void}\n */\n validateConfigArray(configArray) {\n const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);\n const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);\n const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);\n\n // Validate.\n for (const element of configArray) {\n if (validated.has(element)) {\n continue;\n }\n validated.add(element);\n\n this.validateEnvironment(element.env, element.name, getPluginEnv);\n this.validateGlobals(element.globals, element.name);\n this.validateProcessor(element.processor, element.name, getPluginProcessor);\n this.validateRules(element.rules, element.name, getPluginRule);\n }\n }\n\n}\n","/**\n * @fileoverview Common helpers for naming of plugins, formatters and configs\n */\n\nconst NAMESPACE_REGEX = /^@.*\\//iu;\n\n/**\n * Brings package name to correct format based on prefix\n * @param {string} name The name of the package.\n * @param {string} prefix Can be either \"eslint-plugin\", \"eslint-config\" or \"eslint-formatter\"\n * @returns {string} Normalized name of the package\n * @private\n */\nfunction normalizePackageName(name, prefix) {\n let normalizedName = name;\n\n /**\n * On Windows, name can come in with Windows slashes instead of Unix slashes.\n * Normalize to Unix first to avoid errors later on.\n * https://github.com/eslint/eslint/issues/5644\n */\n if (normalizedName.includes(\"\\\\\")) {\n normalizedName = normalizedName.replace(/\\\\/gu, \"/\");\n }\n\n if (normalizedName.charAt(0) === \"@\") {\n\n /**\n * it's a scoped package\n * package name is the prefix, or just a username\n */\n const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, \"u\"),\n scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, \"u\");\n\n if (scopedPackageShortcutRegex.test(normalizedName)) {\n normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);\n } else if (!scopedPackageNameRegex.test(normalizedName.split(\"/\")[1])) {\n\n /**\n * for scoped packages, insert the prefix after the first / unless\n * the path is already @scope/eslint or @scope/eslint-xxx-yyy\n */\n normalizedName = normalizedName.replace(/^@([^/]+)\\/(.*)$/u, `@$1/${prefix}-$2`);\n }\n } else if (!normalizedName.startsWith(`${prefix}-`)) {\n normalizedName = `${prefix}-${normalizedName}`;\n }\n\n return normalizedName;\n}\n\n/**\n * Removes the prefix from a fullname.\n * @param {string} fullname The term which may have the prefix.\n * @param {string} prefix The prefix to remove.\n * @returns {string} The term without prefix.\n */\nfunction getShorthandName(fullname, prefix) {\n if (fullname[0] === \"@\") {\n let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, \"u\").exec(fullname);\n\n if (matchResult) {\n return matchResult[1];\n }\n\n matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, \"u\").exec(fullname);\n if (matchResult) {\n return `${matchResult[1]}/${matchResult[2]}`;\n }\n } else if (fullname.startsWith(`${prefix}-`)) {\n return fullname.slice(prefix.length + 1);\n }\n\n return fullname;\n}\n\n/**\n * Gets the scope (namespace) of a term.\n * @param {string} term The term which may have the namespace.\n * @returns {string} The namespace of the term if it has one.\n */\nfunction getNamespaceFromTerm(term) {\n const match = term.match(NAMESPACE_REGEX);\n\n return match ? match[0] : \"\";\n}\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\nexport {\n normalizePackageName,\n getShorthandName,\n getNamespaceFromTerm\n};\n","/**\n * @fileoverview Package exports for @eslint/eslintrc\n * @author Nicholas C. Zakas\n */\n//------------------------------------------------------------------------------\n// Requirements\n//------------------------------------------------------------------------------\n\nimport * as ConfigOps from \"./shared/config-ops.js\";\nimport ConfigValidator from \"./shared/config-validator.js\";\nimport * as naming from \"./shared/naming.js\";\nimport environments from \"../conf/environments.js\";\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\nconst Legacy = {\n environments,\n\n // shared\n ConfigOps,\n ConfigValidator,\n naming\n};\n\nexport {\n Legacy\n};\n"],"names":["path","Ajv","globals","util","BuiltInEnvironments","ConfigOps.normalizeConfigGlobal"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@eslint/eslintrc/dist/eslintrc.cjs b/node_modules/@eslint/eslintrc/dist/eslintrc.cjs
new file mode 100644
index 0000000..eb2ed8d
--- /dev/null
+++ b/node_modules/@eslint/eslintrc/dist/eslintrc.cjs
@@ -0,0 +1,4344 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var debugOrig = require('debug');
+var fs = require('fs');
+var importFresh = require('import-fresh');
+var Module = require('module');
+var path = require('path');
+var stripComments = require('strip-json-comments');
+var assert = require('assert');
+var ignore = require('ignore');
+var util = require('util');
+var minimatch = require('minimatch');
+var Ajv = require('ajv');
+var globals = require('globals');
+var os = require('os');
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var debugOrig__default = /*#__PURE__*/_interopDefaultLegacy(debugOrig);
+var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
+var importFresh__default = /*#__PURE__*/_interopDefaultLegacy(importFresh);
+var Module__default = /*#__PURE__*/_interopDefaultLegacy(Module);
+var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
+var stripComments__default = /*#__PURE__*/_interopDefaultLegacy(stripComments);
+var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
+var ignore__default = /*#__PURE__*/_interopDefaultLegacy(ignore);
+var util__default = /*#__PURE__*/_interopDefaultLegacy(util);
+var minimatch__default = /*#__PURE__*/_interopDefaultLegacy(minimatch);
+var Ajv__default = /*#__PURE__*/_interopDefaultLegacy(Ajv);
+var globals__default = /*#__PURE__*/_interopDefaultLegacy(globals);
+var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
+
+/**
+ * @fileoverview `IgnorePattern` class.
+ *
+ * `IgnorePattern` class has the set of glob patterns and the base path.
+ *
+ * It provides two static methods.
+ *
+ * - `IgnorePattern.createDefaultIgnore(cwd)`
+ * Create the default predicate function.
+ * - `IgnorePattern.createIgnore(ignorePatterns)`
+ * Create the predicate function from multiple `IgnorePattern` objects.
+ *
+ * It provides two properties and a method.
+ *
+ * - `patterns`
+ * The glob patterns that ignore to lint.
+ * - `basePath`
+ * The base path of the glob patterns. If absolute paths existed in the
+ * glob patterns, those are handled as relative paths to the base path.
+ * - `getPatternsRelativeTo(basePath)`
+ * Get `patterns` as modified for a given base path. It modifies the
+ * absolute paths in the patterns as prepending the difference of two base
+ * paths.
+ *
+ * `ConfigArrayFactory` creates `IgnorePattern` objects when it processes
+ * `ignorePatterns` properties.
+ *
+ * @author Toru Nagashima
+ */
+
+const debug$3 = debugOrig__default["default"]("eslintrc:ignore-pattern");
+
+/** @typedef {ReturnType} Ignore */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the path to the common ancestor directory of given paths.
+ * @param {string[]} sourcePaths The paths to calculate the common ancestor.
+ * @returns {string} The path to the common ancestor directory.
+ */
+function getCommonAncestorPath(sourcePaths) {
+ let result = sourcePaths[0];
+
+ for (let i = 1; i < sourcePaths.length; ++i) {
+ const a = result;
+ const b = sourcePaths[i];
+
+ // Set the shorter one (it's the common ancestor if one includes the other).
+ result = a.length < b.length ? a : b;
+
+ // Set the common ancestor.
+ for (let j = 0, lastSepPos = 0; j < a.length && j < b.length; ++j) {
+ if (a[j] !== b[j]) {
+ result = a.slice(0, lastSepPos);
+ break;
+ }
+ if (a[j] === path__default["default"].sep) {
+ lastSepPos = j;
+ }
+ }
+ }
+
+ let resolvedResult = result || path__default["default"].sep;
+
+ // if Windows common ancestor is root of drive must have trailing slash to be absolute.
+ if (resolvedResult && resolvedResult.endsWith(":") && process.platform === "win32") {
+ resolvedResult += path__default["default"].sep;
+ }
+ return resolvedResult;
+}
+
+/**
+ * Make relative path.
+ * @param {string} from The source path to get relative path.
+ * @param {string} to The destination path to get relative path.
+ * @returns {string} The relative path.
+ */
+function relative(from, to) {
+ const relPath = path__default["default"].relative(from, to);
+
+ if (path__default["default"].sep === "/") {
+ return relPath;
+ }
+ return relPath.split(path__default["default"].sep).join("/");
+}
+
+/**
+ * Get the trailing slash if existed.
+ * @param {string} filePath The path to check.
+ * @returns {string} The trailing slash if existed.
+ */
+function dirSuffix(filePath) {
+ const isDir = (
+ filePath.endsWith(path__default["default"].sep) ||
+ (process.platform === "win32" && filePath.endsWith("/"))
+ );
+
+ return isDir ? "/" : "";
+}
+
+const DefaultPatterns = Object.freeze(["/**/node_modules/*"]);
+const DotPatterns = Object.freeze([".*", "!.eslintrc.*", "!../"]);
+
+//------------------------------------------------------------------------------
+// Public
+//------------------------------------------------------------------------------
+
+class IgnorePattern {
+
+ /**
+ * The default patterns.
+ * @type {string[]}
+ */
+ static get DefaultPatterns() {
+ return DefaultPatterns;
+ }
+
+ /**
+ * Create the default predicate function.
+ * @param {string} cwd The current working directory.
+ * @returns {((filePath:string, dot:boolean) => boolean) & {basePath:string; patterns:string[]}}
+ * The preficate function.
+ * The first argument is an absolute path that is checked.
+ * The second argument is the flag to not ignore dotfiles.
+ * If the predicate function returned `true`, it means the path should be ignored.
+ */
+ static createDefaultIgnore(cwd) {
+ return this.createIgnore([new IgnorePattern(DefaultPatterns, cwd)]);
+ }
+
+ /**
+ * Create the predicate function from multiple `IgnorePattern` objects.
+ * @param {IgnorePattern[]} ignorePatterns The list of ignore patterns.
+ * @returns {((filePath:string, dot?:boolean) => boolean) & {basePath:string; patterns:string[]}}
+ * The preficate function.
+ * The first argument is an absolute path that is checked.
+ * The second argument is the flag to not ignore dotfiles.
+ * If the predicate function returned `true`, it means the path should be ignored.
+ */
+ static createIgnore(ignorePatterns) {
+ debug$3("Create with: %o", ignorePatterns);
+
+ const basePath = getCommonAncestorPath(ignorePatterns.map(p => p.basePath));
+ const patterns = [].concat(
+ ...ignorePatterns.map(p => p.getPatternsRelativeTo(basePath))
+ );
+ const ig = ignore__default["default"]({ allowRelativePaths: true }).add([...DotPatterns, ...patterns]);
+ const dotIg = ignore__default["default"]({ allowRelativePaths: true }).add(patterns);
+
+ debug$3(" processed: %o", { basePath, patterns });
+
+ return Object.assign(
+ (filePath, dot = false) => {
+ assert__default["default"](path__default["default"].isAbsolute(filePath), "'filePath' should be an absolute path.");
+ const relPathRaw = relative(basePath, filePath);
+ const relPath = relPathRaw && (relPathRaw + dirSuffix(filePath));
+ const adoptedIg = dot ? dotIg : ig;
+ const result = relPath !== "" && adoptedIg.ignores(relPath);
+
+ debug$3("Check", { filePath, dot, relativePath: relPath, result });
+ return result;
+ },
+ { basePath, patterns }
+ );
+ }
+
+ /**
+ * Initialize a new `IgnorePattern` instance.
+ * @param {string[]} patterns The glob patterns that ignore to lint.
+ * @param {string} basePath The base path of `patterns`.
+ */
+ constructor(patterns, basePath) {
+ assert__default["default"](path__default["default"].isAbsolute(basePath), "'basePath' should be an absolute path.");
+
+ /**
+ * The glob patterns that ignore to lint.
+ * @type {string[]}
+ */
+ this.patterns = patterns;
+
+ /**
+ * The base path of `patterns`.
+ * @type {string}
+ */
+ this.basePath = basePath;
+
+ /**
+ * If `true` then patterns which don't start with `/` will match the paths to the outside of `basePath`. Defaults to `false`.
+ *
+ * It's set `true` for `.eslintignore`, `package.json`, and `--ignore-path` for backward compatibility.
+ * It's `false` as-is for `ignorePatterns` property in config files.
+ * @type {boolean}
+ */
+ this.loose = false;
+ }
+
+ /**
+ * Get `patterns` as modified for a given base path. It modifies the
+ * absolute paths in the patterns as prepending the difference of two base
+ * paths.
+ * @param {string} newBasePath The base path.
+ * @returns {string[]} Modifired patterns.
+ */
+ getPatternsRelativeTo(newBasePath) {
+ assert__default["default"](path__default["default"].isAbsolute(newBasePath), "'newBasePath' should be an absolute path.");
+ const { basePath, loose, patterns } = this;
+
+ if (newBasePath === basePath) {
+ return patterns;
+ }
+ const prefix = `/${relative(newBasePath, basePath)}`;
+
+ return patterns.map(pattern => {
+ const negative = pattern.startsWith("!");
+ const head = negative ? "!" : "";
+ const body = negative ? pattern.slice(1) : pattern;
+
+ if (body.startsWith("/") || body.startsWith("../")) {
+ return `${head}${prefix}${body}`;
+ }
+ return loose ? pattern : `${head}${prefix}/**/${body}`;
+ });
+ }
+}
+
+/**
+ * @fileoverview `ExtractedConfig` class.
+ *
+ * `ExtractedConfig` class expresses a final configuration for a specific file.
+ *
+ * It provides one method.
+ *
+ * - `toCompatibleObjectAsConfigFileContent()`
+ * Convert this configuration to the compatible object as the content of
+ * config files. It converts the loaded parser and plugins to strings.
+ * `CLIEngine#getConfigForFile(filePath)` method uses this method.
+ *
+ * `ConfigArray#extractConfig(filePath)` creates a `ExtractedConfig` instance.
+ *
+ * @author Toru Nagashima
+ */
+
+// For VSCode intellisense
+/** @typedef {import("../../shared/types").ConfigData} ConfigData */
+/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */
+/** @typedef {import("../../shared/types").SeverityConf} SeverityConf */
+/** @typedef {import("./config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */
+
+/**
+ * Check if `xs` starts with `ys`.
+ * @template T
+ * @param {T[]} xs The array to check.
+ * @param {T[]} ys The array that may be the first part of `xs`.
+ * @returns {boolean} `true` if `xs` starts with `ys`.
+ */
+function startsWith(xs, ys) {
+ return xs.length >= ys.length && ys.every((y, i) => y === xs[i]);
+}
+
+/**
+ * The class for extracted config data.
+ */
+class ExtractedConfig {
+ constructor() {
+
+ /**
+ * The config name what `noInlineConfig` setting came from.
+ * @type {string}
+ */
+ this.configNameOfNoInlineConfig = "";
+
+ /**
+ * Environments.
+ * @type {Record}
+ */
+ this.env = {};
+
+ /**
+ * Global variables.
+ * @type {Record}
+ */
+ this.globals = {};
+
+ /**
+ * The glob patterns that ignore to lint.
+ * @type {(((filePath:string, dot?:boolean) => boolean) & { basePath:string; patterns:string[] }) | undefined}
+ */
+ this.ignores = void 0;
+
+ /**
+ * The flag that disables directive comments.
+ * @type {boolean|undefined}
+ */
+ this.noInlineConfig = void 0;
+
+ /**
+ * Parser definition.
+ * @type {DependentParser|null}
+ */
+ this.parser = null;
+
+ /**
+ * Options for the parser.
+ * @type {Object}
+ */
+ this.parserOptions = {};
+
+ /**
+ * Plugin definitions.
+ * @type {Record}
+ */
+ this.plugins = {};
+
+ /**
+ * Processor ID.
+ * @type {string|null}
+ */
+ this.processor = null;
+
+ /**
+ * The flag that reports unused `eslint-disable` directive comments.
+ * @type {boolean|undefined}
+ */
+ this.reportUnusedDisableDirectives = void 0;
+
+ /**
+ * Rule settings.
+ * @type {Record}
+ */
+ this.rules = {};
+
+ /**
+ * Shared settings.
+ * @type {Object}
+ */
+ this.settings = {};
+ }
+
+ /**
+ * Convert this config to the compatible object as a config file content.
+ * @returns {ConfigData} The converted object.
+ */
+ toCompatibleObjectAsConfigFileContent() {
+ const {
+ /* eslint-disable no-unused-vars */
+ configNameOfNoInlineConfig: _ignore1,
+ processor: _ignore2,
+ /* eslint-enable no-unused-vars */
+ ignores,
+ ...config
+ } = this;
+
+ config.parser = config.parser && config.parser.filePath;
+ config.plugins = Object.keys(config.plugins).filter(Boolean).reverse();
+ config.ignorePatterns = ignores ? ignores.patterns : [];
+
+ // Strip the default patterns from `ignorePatterns`.
+ if (startsWith(config.ignorePatterns, IgnorePattern.DefaultPatterns)) {
+ config.ignorePatterns =
+ config.ignorePatterns.slice(IgnorePattern.DefaultPatterns.length);
+ }
+
+ return config;
+ }
+}
+
+/**
+ * @fileoverview `ConfigArray` class.
+ *
+ * `ConfigArray` class expresses the full of a configuration. It has the entry
+ * config file, base config files that were extended, loaded parsers, and loaded
+ * plugins.
+ *
+ * `ConfigArray` class provides three properties and two methods.
+ *
+ * - `pluginEnvironments`
+ * - `pluginProcessors`
+ * - `pluginRules`
+ * The `Map` objects that contain the members of all plugins that this
+ * config array contains. Those map objects don't have mutation methods.
+ * Those keys are the member ID such as `pluginId/memberName`.
+ * - `isRoot()`
+ * If `true` then this configuration has `root:true` property.
+ * - `extractConfig(filePath)`
+ * Extract the final configuration for a given file. This means merging
+ * every config array element which that `criteria` property matched. The
+ * `filePath` argument must be an absolute path.
+ *
+ * `ConfigArrayFactory` provides the loading logic of config files.
+ *
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("../../shared/types").Environment} Environment */
+/** @typedef {import("../../shared/types").GlobalConf} GlobalConf */
+/** @typedef {import("../../shared/types").RuleConf} RuleConf */
+/** @typedef {import("../../shared/types").Rule} Rule */
+/** @typedef {import("../../shared/types").Plugin} Plugin */
+/** @typedef {import("../../shared/types").Processor} Processor */
+/** @typedef {import("./config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-dependency").DependentPlugin} DependentPlugin */
+/** @typedef {import("./override-tester")["OverrideTester"]} OverrideTester */
+
+/**
+ * @typedef {Object} ConfigArrayElement
+ * @property {string} name The name of this config element.
+ * @property {string} filePath The path to the source file of this config element.
+ * @property {InstanceType|null} criteria The tester for the `files` and `excludedFiles` of this config element.
+ * @property {Record|undefined} env The environment settings.
+ * @property {Record|undefined} globals The global variable settings.
+ * @property {IgnorePattern|undefined} ignorePattern The ignore patterns.
+ * @property {boolean|undefined} noInlineConfig The flag that disables directive comments.
+ * @property {DependentParser|undefined} parser The parser loader.
+ * @property {Object|undefined} parserOptions The parser options.
+ * @property {Record|undefined} plugins The plugin loaders.
+ * @property {string|undefined} processor The processor name to refer plugin's processor.
+ * @property {boolean|undefined} reportUnusedDisableDirectives The flag to report unused `eslint-disable` comments.
+ * @property {boolean|undefined} root The flag to express root.
+ * @property {Record|undefined} rules The rule settings
+ * @property {Object|undefined} settings The shared settings.
+ * @property {"config" | "ignore" | "implicit-processor"} type The element type.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayInternalSlots
+ * @property {Map} cache The cache to extract configs.
+ * @property {ReadonlyMap|null} envMap The map from environment ID to environment definition.
+ * @property {ReadonlyMap|null} processorMap The map from processor ID to environment definition.
+ * @property {ReadonlyMap|null} ruleMap The map from rule ID to rule definition.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap$2 = new class extends WeakMap {
+ get(key) {
+ let value = super.get(key);
+
+ if (!value) {
+ value = {
+ cache: new Map(),
+ envMap: null,
+ processorMap: null,
+ ruleMap: null
+ };
+ super.set(key, value);
+ }
+
+ return value;
+ }
+}();
+
+/**
+ * Get the indices which are matched to a given file.
+ * @param {ConfigArrayElement[]} elements The elements.
+ * @param {string} filePath The path to a target file.
+ * @returns {number[]} The indices.
+ */
+function getMatchedIndices(elements, filePath) {
+ const indices = [];
+
+ for (let i = elements.length - 1; i >= 0; --i) {
+ const element = elements[i];
+
+ if (!element.criteria || (filePath && element.criteria.test(filePath))) {
+ indices.push(i);
+ }
+ }
+
+ return indices;
+}
+
+/**
+ * Check if a value is a non-null object.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is a non-null object.
+ */
+function isNonNullObject(x) {
+ return typeof x === "object" && x !== null;
+}
+
+/**
+ * Merge two objects.
+ *
+ * Assign every property values of `y` to `x` if `x` doesn't have the property.
+ * If `x`'s property value is an object, it does recursive.
+ * @param {Object} target The destination to merge
+ * @param {Object|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergeWithoutOverwrite(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+
+ if (isNonNullObject(target[key])) {
+ mergeWithoutOverwrite(target[key], source[key]);
+ } else if (target[key] === void 0) {
+ if (isNonNullObject(source[key])) {
+ target[key] = Array.isArray(source[key]) ? [] : {};
+ mergeWithoutOverwrite(target[key], source[key]);
+ } else if (source[key] !== void 0) {
+ target[key] = source[key];
+ }
+ }
+ }
+}
+
+/**
+ * The error for plugin conflicts.
+ */
+class PluginConflictError extends Error {
+
+ /**
+ * Initialize this error object.
+ * @param {string} pluginId The plugin ID.
+ * @param {{filePath:string, importerName:string}[]} plugins The resolved plugins.
+ */
+ constructor(pluginId, plugins) {
+ super(`Plugin "${pluginId}" was conflicted between ${plugins.map(p => `"${p.importerName}"`).join(" and ")}.`);
+ this.messageTemplate = "plugin-conflict";
+ this.messageData = { pluginId, plugins };
+ }
+}
+
+/**
+ * Merge plugins.
+ * `target`'s definition is prior to `source`'s.
+ * @param {Record} target The destination to merge
+ * @param {Record|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergePlugins(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+ const targetValue = target[key];
+ const sourceValue = source[key];
+
+ // Adopt the plugin which was found at first.
+ if (targetValue === void 0) {
+ if (sourceValue.error) {
+ throw sourceValue.error;
+ }
+ target[key] = sourceValue;
+ } else if (sourceValue.filePath !== targetValue.filePath) {
+ throw new PluginConflictError(key, [
+ {
+ filePath: targetValue.filePath,
+ importerName: targetValue.importerName
+ },
+ {
+ filePath: sourceValue.filePath,
+ importerName: sourceValue.importerName
+ }
+ ]);
+ }
+ }
+}
+
+/**
+ * Merge rule configs.
+ * `target`'s definition is prior to `source`'s.
+ * @param {Record} target The destination to merge
+ * @param {Record|undefined} source The source to merge.
+ * @returns {void}
+ */
+function mergeRuleConfigs(target, source) {
+ if (!isNonNullObject(source)) {
+ return;
+ }
+
+ for (const key of Object.keys(source)) {
+ if (key === "__proto__") {
+ continue;
+ }
+ const targetDef = target[key];
+ const sourceDef = source[key];
+
+ // Adopt the rule config which was found at first.
+ if (targetDef === void 0) {
+ if (Array.isArray(sourceDef)) {
+ target[key] = [...sourceDef];
+ } else {
+ target[key] = [sourceDef];
+ }
+
+ /*
+ * If the first found rule config is severity only and the current rule
+ * config has options, merge the severity and the options.
+ */
+ } else if (
+ targetDef.length === 1 &&
+ Array.isArray(sourceDef) &&
+ sourceDef.length >= 2
+ ) {
+ targetDef.push(...sourceDef.slice(1));
+ }
+ }
+}
+
+/**
+ * Create the extracted config.
+ * @param {ConfigArray} instance The config elements.
+ * @param {number[]} indices The indices to use.
+ * @returns {ExtractedConfig} The extracted config.
+ */
+function createConfig(instance, indices) {
+ const config = new ExtractedConfig();
+ const ignorePatterns = [];
+
+ // Merge elements.
+ for (const index of indices) {
+ const element = instance[index];
+
+ // Adopt the parser which was found at first.
+ if (!config.parser && element.parser) {
+ if (element.parser.error) {
+ throw element.parser.error;
+ }
+ config.parser = element.parser;
+ }
+
+ // Adopt the processor which was found at first.
+ if (!config.processor && element.processor) {
+ config.processor = element.processor;
+ }
+
+ // Adopt the noInlineConfig which was found at first.
+ if (config.noInlineConfig === void 0 && element.noInlineConfig !== void 0) {
+ config.noInlineConfig = element.noInlineConfig;
+ config.configNameOfNoInlineConfig = element.name;
+ }
+
+ // Adopt the reportUnusedDisableDirectives which was found at first.
+ if (config.reportUnusedDisableDirectives === void 0 && element.reportUnusedDisableDirectives !== void 0) {
+ config.reportUnusedDisableDirectives = element.reportUnusedDisableDirectives;
+ }
+
+ // Collect ignorePatterns
+ if (element.ignorePattern) {
+ ignorePatterns.push(element.ignorePattern);
+ }
+
+ // Merge others.
+ mergeWithoutOverwrite(config.env, element.env);
+ mergeWithoutOverwrite(config.globals, element.globals);
+ mergeWithoutOverwrite(config.parserOptions, element.parserOptions);
+ mergeWithoutOverwrite(config.settings, element.settings);
+ mergePlugins(config.plugins, element.plugins);
+ mergeRuleConfigs(config.rules, element.rules);
+ }
+
+ // Create the predicate function for ignore patterns.
+ if (ignorePatterns.length > 0) {
+ config.ignores = IgnorePattern.createIgnore(ignorePatterns.reverse());
+ }
+
+ return config;
+}
+
+/**
+ * Collect definitions.
+ * @template T, U
+ * @param {string} pluginId The plugin ID for prefix.
+ * @param {Record} defs The definitions to collect.
+ * @param {Map} map The map to output.
+ * @param {function(T): U} [normalize] The normalize function for each value.
+ * @returns {void}
+ */
+function collect(pluginId, defs, map, normalize) {
+ if (defs) {
+ const prefix = pluginId && `${pluginId}/`;
+
+ for (const [key, value] of Object.entries(defs)) {
+ map.set(
+ `${prefix}${key}`,
+ normalize ? normalize(value) : value
+ );
+ }
+ }
+}
+
+/**
+ * Normalize a rule definition.
+ * @param {Function|Rule} rule The rule definition to normalize.
+ * @returns {Rule} The normalized rule definition.
+ */
+function normalizePluginRule(rule) {
+ return typeof rule === "function" ? { create: rule } : rule;
+}
+
+/**
+ * Delete the mutation methods from a given map.
+ * @param {Map} map The map object to delete.
+ * @returns {void}
+ */
+function deleteMutationMethods(map) {
+ Object.defineProperties(map, {
+ clear: { configurable: true, value: void 0 },
+ delete: { configurable: true, value: void 0 },
+ set: { configurable: true, value: void 0 }
+ });
+}
+
+/**
+ * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.
+ * @param {ConfigArrayElement[]} elements The config elements.
+ * @param {ConfigArrayInternalSlots} slots The internal slots.
+ * @returns {void}
+ */
+function initPluginMemberMaps(elements, slots) {
+ const processed = new Set();
+
+ slots.envMap = new Map();
+ slots.processorMap = new Map();
+ slots.ruleMap = new Map();
+
+ for (const element of elements) {
+ if (!element.plugins) {
+ continue;
+ }
+
+ for (const [pluginId, value] of Object.entries(element.plugins)) {
+ const plugin = value.definition;
+
+ if (!plugin || processed.has(pluginId)) {
+ continue;
+ }
+ processed.add(pluginId);
+
+ collect(pluginId, plugin.environments, slots.envMap);
+ collect(pluginId, plugin.processors, slots.processorMap);
+ collect(pluginId, plugin.rules, slots.ruleMap, normalizePluginRule);
+ }
+ }
+
+ deleteMutationMethods(slots.envMap);
+ deleteMutationMethods(slots.processorMap);
+ deleteMutationMethods(slots.ruleMap);
+}
+
+/**
+ * Create `envMap`, `processorMap`, `ruleMap` with the plugins in the config array.
+ * @param {ConfigArray} instance The config elements.
+ * @returns {ConfigArrayInternalSlots} The extracted config.
+ */
+function ensurePluginMemberMaps(instance) {
+ const slots = internalSlotsMap$2.get(instance);
+
+ if (!slots.ruleMap) {
+ initPluginMemberMaps(instance, slots);
+ }
+
+ return slots;
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * The Config Array.
+ *
+ * `ConfigArray` instance contains all settings, parsers, and plugins.
+ * You need to call `ConfigArray#extractConfig(filePath)` method in order to
+ * extract, merge and get only the config data which is related to an arbitrary
+ * file.
+ * @extends {Array}
+ */
+class ConfigArray extends Array {
+
+ /**
+ * Get the plugin environments.
+ * The returned map cannot be mutated.
+ * @type {ReadonlyMap} The plugin environments.
+ */
+ get pluginEnvironments() {
+ return ensurePluginMemberMaps(this).envMap;
+ }
+
+ /**
+ * Get the plugin processors.
+ * The returned map cannot be mutated.
+ * @type {ReadonlyMap} The plugin processors.
+ */
+ get pluginProcessors() {
+ return ensurePluginMemberMaps(this).processorMap;
+ }
+
+ /**
+ * Get the plugin rules.
+ * The returned map cannot be mutated.
+ * @returns {ReadonlyMap} The plugin rules.
+ */
+ get pluginRules() {
+ return ensurePluginMemberMaps(this).ruleMap;
+ }
+
+ /**
+ * Check if this config has `root` flag.
+ * @returns {boolean} `true` if this config array is root.
+ */
+ isRoot() {
+ for (let i = this.length - 1; i >= 0; --i) {
+ const root = this[i].root;
+
+ if (typeof root === "boolean") {
+ return root;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Extract the config data which is related to a given file.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {ExtractedConfig} The extracted config data.
+ */
+ extractConfig(filePath) {
+ const { cache } = internalSlotsMap$2.get(this);
+ const indices = getMatchedIndices(this, filePath);
+ const cacheKey = indices.join(",");
+
+ if (!cache.has(cacheKey)) {
+ cache.set(cacheKey, createConfig(this, indices));
+ }
+
+ return cache.get(cacheKey);
+ }
+
+ /**
+ * Check if a given path is an additional lint target.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {boolean} `true` if the file is an additional lint target.
+ */
+ isAdditionalTargetPath(filePath) {
+ for (const { criteria, type } of this) {
+ if (
+ type === "config" &&
+ criteria &&
+ !criteria.endsWithWildcard &&
+ criteria.test(filePath)
+ ) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+/**
+ * Get the used extracted configs.
+ * CLIEngine will use this method to collect used deprecated rules.
+ * @param {ConfigArray} instance The config array object to get.
+ * @returns {ExtractedConfig[]} The used extracted configs.
+ * @private
+ */
+function getUsedExtractedConfigs(instance) {
+ const { cache } = internalSlotsMap$2.get(instance);
+
+ return Array.from(cache.values());
+}
+
+/**
+ * @fileoverview `ConfigDependency` class.
+ *
+ * `ConfigDependency` class expresses a loaded parser or plugin.
+ *
+ * If the parser or plugin was loaded successfully, it has `definition` property
+ * and `filePath` property. Otherwise, it has `error` property.
+ *
+ * When `JSON.stringify()` converted a `ConfigDependency` object to a JSON, it
+ * omits `definition` property.
+ *
+ * `ConfigArrayFactory` creates `ConfigDependency` objects when it loads parsers
+ * or plugins.
+ *
+ * @author Toru Nagashima
+ */
+
+/**
+ * The class is to store parsers or plugins.
+ * This class hides the loaded object from `JSON.stringify()` and `console.log`.
+ * @template T
+ */
+class ConfigDependency {
+
+ /**
+ * Initialize this instance.
+ * @param {Object} data The dependency data.
+ * @param {T} [data.definition] The dependency if the loading succeeded.
+ * @param {T} [data.original] The original, non-normalized dependency if the loading succeeded.
+ * @param {Error} [data.error] The error object if the loading failed.
+ * @param {string} [data.filePath] The actual path to the dependency if the loading succeeded.
+ * @param {string} data.id The ID of this dependency.
+ * @param {string} data.importerName The name of the config file which loads this dependency.
+ * @param {string} data.importerPath The path to the config file which loads this dependency.
+ */
+ constructor({
+ definition = null,
+ original = null,
+ error = null,
+ filePath = null,
+ id,
+ importerName,
+ importerPath
+ }) {
+
+ /**
+ * The loaded dependency if the loading succeeded.
+ * @type {T|null}
+ */
+ this.definition = definition;
+
+ /**
+ * The original dependency as loaded directly from disk if the loading succeeded.
+ * @type {T|null}
+ */
+ this.original = original;
+
+ /**
+ * The error object if the loading failed.
+ * @type {Error|null}
+ */
+ this.error = error;
+
+ /**
+ * The loaded dependency if the loading succeeded.
+ * @type {string|null}
+ */
+ this.filePath = filePath;
+
+ /**
+ * The ID of this dependency.
+ * @type {string}
+ */
+ this.id = id;
+
+ /**
+ * The name of the config file which loads this dependency.
+ * @type {string}
+ */
+ this.importerName = importerName;
+
+ /**
+ * The path to the config file which loads this dependency.
+ * @type {string}
+ */
+ this.importerPath = importerPath;
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} a JSON compatible object.
+ */
+ toJSON() {
+ const obj = this[util__default["default"].inspect.custom]();
+
+ // Display `error.message` (`Error#message` is unenumerable).
+ if (obj.error instanceof Error) {
+ obj.error = { ...obj.error, message: obj.error.message };
+ }
+
+ return obj;
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} an object to display by `console.log()`.
+ */
+ [util__default["default"].inspect.custom]() {
+ const {
+ definition: _ignore1, // eslint-disable-line no-unused-vars
+ original: _ignore2, // eslint-disable-line no-unused-vars
+ ...obj
+ } = this;
+
+ return obj;
+ }
+}
+
+/**
+ * @fileoverview `OverrideTester` class.
+ *
+ * `OverrideTester` class handles `files` property and `excludedFiles` property
+ * of `overrides` config.
+ *
+ * It provides one method.
+ *
+ * - `test(filePath)`
+ * Test if a file path matches the pair of `files` property and
+ * `excludedFiles` property. The `filePath` argument must be an absolute
+ * path.
+ *
+ * `ConfigArrayFactory` creates `OverrideTester` objects when it processes
+ * `overrides` properties.
+ *
+ * @author Toru Nagashima
+ */
+
+const { Minimatch } = minimatch__default["default"];
+
+const minimatchOpts = { dot: true, matchBase: true };
+
+/**
+ * @typedef {Object} Pattern
+ * @property {InstanceType[] | null} includes The positive matchers.
+ * @property {InstanceType[] | null} excludes The negative matchers.
+ */
+
+/**
+ * Normalize a given pattern to an array.
+ * @param {string|string[]|undefined} patterns A glob pattern or an array of glob patterns.
+ * @returns {string[]|null} Normalized patterns.
+ * @private
+ */
+function normalizePatterns(patterns) {
+ if (Array.isArray(patterns)) {
+ return patterns.filter(Boolean);
+ }
+ if (typeof patterns === "string" && patterns) {
+ return [patterns];
+ }
+ return [];
+}
+
+/**
+ * Create the matchers of given patterns.
+ * @param {string[]} patterns The patterns.
+ * @returns {InstanceType[] | null} The matchers.
+ */
+function toMatcher(patterns) {
+ if (patterns.length === 0) {
+ return null;
+ }
+ return patterns.map(pattern => {
+ if (/^\.[/\\]/u.test(pattern)) {
+ return new Minimatch(
+ pattern.slice(2),
+
+ // `./*.js` should not match with `subdir/foo.js`
+ { ...minimatchOpts, matchBase: false }
+ );
+ }
+ return new Minimatch(pattern, minimatchOpts);
+ });
+}
+
+/**
+ * Convert a given matcher to string.
+ * @param {Pattern} matchers The matchers.
+ * @returns {string} The string expression of the matcher.
+ */
+function patternToJson({ includes, excludes }) {
+ return {
+ includes: includes && includes.map(m => m.pattern),
+ excludes: excludes && excludes.map(m => m.pattern)
+ };
+}
+
+/**
+ * The class to test given paths are matched by the patterns.
+ */
+class OverrideTester {
+
+ /**
+ * Create a tester with given criteria.
+ * If there are no criteria, returns `null`.
+ * @param {string|string[]} files The glob patterns for included files.
+ * @param {string|string[]} excludedFiles The glob patterns for excluded files.
+ * @param {string} basePath The path to the base directory to test paths.
+ * @returns {OverrideTester|null} The created instance or `null`.
+ */
+ static create(files, excludedFiles, basePath) {
+ const includePatterns = normalizePatterns(files);
+ const excludePatterns = normalizePatterns(excludedFiles);
+ let endsWithWildcard = false;
+
+ if (includePatterns.length === 0) {
+ return null;
+ }
+
+ // Rejects absolute paths or relative paths to parents.
+ for (const pattern of includePatterns) {
+ if (path__default["default"].isAbsolute(pattern) || pattern.includes("..")) {
+ throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);
+ }
+ if (pattern.endsWith("*")) {
+ endsWithWildcard = true;
+ }
+ }
+ for (const pattern of excludePatterns) {
+ if (path__default["default"].isAbsolute(pattern) || pattern.includes("..")) {
+ throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);
+ }
+ }
+
+ const includes = toMatcher(includePatterns);
+ const excludes = toMatcher(excludePatterns);
+
+ return new OverrideTester(
+ [{ includes, excludes }],
+ basePath,
+ endsWithWildcard
+ );
+ }
+
+ /**
+ * Combine two testers by logical and.
+ * If either of the testers was `null`, returns the other tester.
+ * The `basePath` property of the two must be the same value.
+ * @param {OverrideTester|null} a A tester.
+ * @param {OverrideTester|null} b Another tester.
+ * @returns {OverrideTester|null} Combined tester.
+ */
+ static and(a, b) {
+ if (!b) {
+ return a && new OverrideTester(
+ a.patterns,
+ a.basePath,
+ a.endsWithWildcard
+ );
+ }
+ if (!a) {
+ return new OverrideTester(
+ b.patterns,
+ b.basePath,
+ b.endsWithWildcard
+ );
+ }
+
+ assert__default["default"].strictEqual(a.basePath, b.basePath);
+ return new OverrideTester(
+ a.patterns.concat(b.patterns),
+ a.basePath,
+ a.endsWithWildcard || b.endsWithWildcard
+ );
+ }
+
+ /**
+ * Initialize this instance.
+ * @param {Pattern[]} patterns The matchers.
+ * @param {string} basePath The base path.
+ * @param {boolean} endsWithWildcard If `true` then a pattern ends with `*`.
+ */
+ constructor(patterns, basePath, endsWithWildcard = false) {
+
+ /** @type {Pattern[]} */
+ this.patterns = patterns;
+
+ /** @type {string} */
+ this.basePath = basePath;
+
+ /** @type {boolean} */
+ this.endsWithWildcard = endsWithWildcard;
+ }
+
+ /**
+ * Test if a given path is matched or not.
+ * @param {string} filePath The absolute path to the target file.
+ * @returns {boolean} `true` if the path was matched.
+ */
+ test(filePath) {
+ if (typeof filePath !== "string" || !path__default["default"].isAbsolute(filePath)) {
+ throw new Error(`'filePath' should be an absolute path, but got ${filePath}.`);
+ }
+ const relativePath = path__default["default"].relative(this.basePath, filePath);
+
+ return this.patterns.every(({ includes, excludes }) => (
+ (!includes || includes.some(m => m.match(relativePath))) &&
+ (!excludes || !excludes.some(m => m.match(relativePath)))
+ ));
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} a JSON compatible object.
+ */
+ toJSON() {
+ if (this.patterns.length === 1) {
+ return {
+ ...patternToJson(this.patterns[0]),
+ basePath: this.basePath
+ };
+ }
+ return {
+ AND: this.patterns.map(patternToJson),
+ basePath: this.basePath
+ };
+ }
+
+ // eslint-disable-next-line jsdoc/require-description
+ /**
+ * @returns {Object} an object to display by `console.log()`.
+ */
+ [util__default["default"].inspect.custom]() {
+ return this.toJSON();
+ }
+}
+
+/**
+ * @fileoverview `ConfigArray` class.
+ * @author Toru Nagashima
+ */
+
+/**
+ * @fileoverview Config file operations. This file must be usable in the browser,
+ * so no Node-specific code can be here.
+ * @author Nicholas C. Zakas
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+const RULE_SEVERITY_STRINGS = ["off", "warn", "error"],
+ RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce((map, value, index) => {
+ map[value] = index;
+ return map;
+ }, {}),
+ VALID_SEVERITIES = [0, 1, 2, "off", "warn", "error"];
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * Normalizes the severity value of a rule's configuration to a number
+ * @param {(number|string|[number, ...*]|[string, ...*])} ruleConfig A rule's configuration value, generally
+ * received from the user. A valid config value is either 0, 1, 2, the string "off" (treated the same as 0),
+ * the string "warn" (treated the same as 1), the string "error" (treated the same as 2), or an array
+ * whose first element is one of the above values. Strings are matched case-insensitively.
+ * @returns {(0|1|2)} The numeric severity value if the config value was valid, otherwise 0.
+ */
+function getRuleSeverity(ruleConfig) {
+ const severityValue = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (severityValue === 0 || severityValue === 1 || severityValue === 2) {
+ return severityValue;
+ }
+
+ if (typeof severityValue === "string") {
+ return RULE_SEVERITY[severityValue.toLowerCase()] || 0;
+ }
+
+ return 0;
+}
+
+/**
+ * Converts old-style severity settings (0, 1, 2) into new-style
+ * severity settings (off, warn, error) for all rules. Assumption is that severity
+ * values have already been validated as correct.
+ * @param {Object} config The config object to normalize.
+ * @returns {void}
+ */
+function normalizeToStrings(config) {
+
+ if (config.rules) {
+ Object.keys(config.rules).forEach(ruleId => {
+ const ruleConfig = config.rules[ruleId];
+
+ if (typeof ruleConfig === "number") {
+ config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0];
+ } else if (Array.isArray(ruleConfig) && typeof ruleConfig[0] === "number") {
+ ruleConfig[0] = RULE_SEVERITY_STRINGS[ruleConfig[0]] || RULE_SEVERITY_STRINGS[0];
+ }
+ });
+ }
+}
+
+/**
+ * Determines if the severity for the given rule configuration represents an error.
+ * @param {int|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} True if the rule represents an error, false if not.
+ */
+function isErrorSeverity(ruleConfig) {
+ return getRuleSeverity(ruleConfig) === 2;
+}
+
+/**
+ * Checks whether a given config has valid severity or not.
+ * @param {number|string|Array} ruleConfig The configuration for an individual rule.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isValidSeverity(ruleConfig) {
+ let severity = Array.isArray(ruleConfig) ? ruleConfig[0] : ruleConfig;
+
+ if (typeof severity === "string") {
+ severity = severity.toLowerCase();
+ }
+ return VALID_SEVERITIES.indexOf(severity) !== -1;
+}
+
+/**
+ * Checks whether every rule of a given config has valid severity or not.
+ * @param {Object} config The configuration for rules.
+ * @returns {boolean} `true` if the configuration has valid severity.
+ */
+function isEverySeverityValid(config) {
+ return Object.keys(config).every(ruleId => isValidSeverity(config[ruleId]));
+}
+
+/**
+ * Normalizes a value for a global in a config
+ * @param {(boolean|string|null)} configuredValue The value given for a global in configuration or in
+ * a global directive comment
+ * @returns {("readable"|"writeable"|"off")} The value normalized as a string
+ * @throws Error if global value is invalid
+ */
+function normalizeConfigGlobal(configuredValue) {
+ switch (configuredValue) {
+ case "off":
+ return "off";
+
+ case true:
+ case "true":
+ case "writeable":
+ case "writable":
+ return "writable";
+
+ case null:
+ case false:
+ case "false":
+ case "readable":
+ case "readonly":
+ return "readonly";
+
+ default:
+ throw new Error(`'${configuredValue}' is not a valid configuration for a global (use 'readonly', 'writable', or 'off')`);
+ }
+}
+
+var ConfigOps = {
+ __proto__: null,
+ getRuleSeverity: getRuleSeverity,
+ normalizeToStrings: normalizeToStrings,
+ isErrorSeverity: isErrorSeverity,
+ isValidSeverity: isValidSeverity,
+ isEverySeverityValid: isEverySeverityValid,
+ normalizeConfigGlobal: normalizeConfigGlobal
+};
+
+/**
+ * @fileoverview Provide the function that emits deprecation warnings.
+ * @author Toru Nagashima
+ */
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+
+// Defitions for deprecation warnings.
+const deprecationWarningMessages = {
+ ESLINT_LEGACY_ECMAFEATURES:
+ "The 'ecmaFeatures' config file property is deprecated and has no effect.",
+ ESLINT_PERSONAL_CONFIG_LOAD:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please use a config file per project or the '--config' option.",
+ ESLINT_PERSONAL_CONFIG_SUPPRESS:
+ "'~/.eslintrc.*' config files have been deprecated. " +
+ "Please remove it or add 'root:true' to the config files in your " +
+ "projects in order to avoid loading '~/.eslintrc.*' accidentally."
+};
+
+const sourceFileErrorCache = new Set();
+
+/**
+ * Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted
+ * for each unique file path, but repeated invocations with the same file path have no effect.
+ * No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.
+ * @param {string} source The name of the configuration source to report the warning for.
+ * @param {string} errorCode The warning message to show.
+ * @returns {void}
+ */
+function emitDeprecationWarning(source, errorCode) {
+ const cacheKey = JSON.stringify({ source, errorCode });
+
+ if (sourceFileErrorCache.has(cacheKey)) {
+ return;
+ }
+ sourceFileErrorCache.add(cacheKey);
+
+ const rel = path__default["default"].relative(process.cwd(), source);
+ const message = deprecationWarningMessages[errorCode];
+
+ process.emitWarning(
+ `${message} (found in "${rel}")`,
+ "DeprecationWarning",
+ errorCode
+ );
+}
+
+/**
+ * @fileoverview The instance of Ajv validator.
+ * @author Evgeny Poberezkin
+ */
+
+//-----------------------------------------------------------------------------
+// Helpers
+//-----------------------------------------------------------------------------
+
+/*
+ * Copied from ajv/lib/refs/json-schema-draft-04.json
+ * The MIT License (MIT)
+ * Copyright (c) 2015-2017 Evgeny Poberezkin
+ */
+const metaSchema = {
+ id: "http://json-schema.org/draft-04/schema#",
+ $schema: "http://json-schema.org/draft-04/schema#",
+ description: "Core schema meta-schema",
+ definitions: {
+ schemaArray: {
+ type: "array",
+ minItems: 1,
+ items: { $ref: "#" }
+ },
+ positiveInteger: {
+ type: "integer",
+ minimum: 0
+ },
+ positiveIntegerDefault0: {
+ allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]
+ },
+ simpleTypes: {
+ enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
+ },
+ stringArray: {
+ type: "array",
+ items: { type: "string" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ },
+ type: "object",
+ properties: {
+ id: {
+ type: "string"
+ },
+ $schema: {
+ type: "string"
+ },
+ title: {
+ type: "string"
+ },
+ description: {
+ type: "string"
+ },
+ default: { },
+ multipleOf: {
+ type: "number",
+ minimum: 0,
+ exclusiveMinimum: true
+ },
+ maximum: {
+ type: "number"
+ },
+ exclusiveMaximum: {
+ type: "boolean",
+ default: false
+ },
+ minimum: {
+ type: "number"
+ },
+ exclusiveMinimum: {
+ type: "boolean",
+ default: false
+ },
+ maxLength: { $ref: "#/definitions/positiveInteger" },
+ minLength: { $ref: "#/definitions/positiveIntegerDefault0" },
+ pattern: {
+ type: "string",
+ format: "regex"
+ },
+ additionalItems: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ items: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/schemaArray" }
+ ],
+ default: { }
+ },
+ maxItems: { $ref: "#/definitions/positiveInteger" },
+ minItems: { $ref: "#/definitions/positiveIntegerDefault0" },
+ uniqueItems: {
+ type: "boolean",
+ default: false
+ },
+ maxProperties: { $ref: "#/definitions/positiveInteger" },
+ minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },
+ required: { $ref: "#/definitions/stringArray" },
+ additionalProperties: {
+ anyOf: [
+ { type: "boolean" },
+ { $ref: "#" }
+ ],
+ default: { }
+ },
+ definitions: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ properties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ patternProperties: {
+ type: "object",
+ additionalProperties: { $ref: "#" },
+ default: { }
+ },
+ dependencies: {
+ type: "object",
+ additionalProperties: {
+ anyOf: [
+ { $ref: "#" },
+ { $ref: "#/definitions/stringArray" }
+ ]
+ }
+ },
+ enum: {
+ type: "array",
+ minItems: 1,
+ uniqueItems: true
+ },
+ type: {
+ anyOf: [
+ { $ref: "#/definitions/simpleTypes" },
+ {
+ type: "array",
+ items: { $ref: "#/definitions/simpleTypes" },
+ minItems: 1,
+ uniqueItems: true
+ }
+ ]
+ },
+ format: { type: "string" },
+ allOf: { $ref: "#/definitions/schemaArray" },
+ anyOf: { $ref: "#/definitions/schemaArray" },
+ oneOf: { $ref: "#/definitions/schemaArray" },
+ not: { $ref: "#" }
+ },
+ dependencies: {
+ exclusiveMaximum: ["maximum"],
+ exclusiveMinimum: ["minimum"]
+ },
+ default: { }
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+var ajvOrig = (additionalOptions = {}) => {
+ const ajv = new Ajv__default["default"]({
+ meta: false,
+ useDefaults: true,
+ validateSchema: false,
+ missingRefs: "ignore",
+ verbose: true,
+ schemaId: "auto",
+ ...additionalOptions
+ });
+
+ ajv.addMetaSchema(metaSchema);
+ // eslint-disable-next-line no-underscore-dangle
+ ajv._opts.defaultMeta = metaSchema.id;
+
+ return ajv;
+};
+
+/**
+ * @fileoverview Defines a schema for configs.
+ * @author Sylvan Mably
+ */
+
+const baseConfigProperties = {
+ $schema: { type: "string" },
+ env: { type: "object" },
+ extends: { $ref: "#/definitions/stringOrStrings" },
+ globals: { type: "object" },
+ overrides: {
+ type: "array",
+ items: { $ref: "#/definitions/overrideConfig" },
+ additionalItems: false
+ },
+ parser: { type: ["string", "null"] },
+ parserOptions: { type: "object" },
+ plugins: { type: "array" },
+ processor: { type: "string" },
+ rules: { type: "object" },
+ settings: { type: "object" },
+ noInlineConfig: { type: "boolean" },
+ reportUnusedDisableDirectives: { type: "boolean" },
+
+ ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
+};
+
+const configSchema = {
+ definitions: {
+ stringOrStrings: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false
+ }
+ ]
+ },
+ stringOrStringsRequired: {
+ oneOf: [
+ { type: "string" },
+ {
+ type: "array",
+ items: { type: "string" },
+ additionalItems: false,
+ minItems: 1
+ }
+ ]
+ },
+
+ // Config at top-level.
+ objectConfig: {
+ type: "object",
+ properties: {
+ root: { type: "boolean" },
+ ignorePatterns: { $ref: "#/definitions/stringOrStrings" },
+ ...baseConfigProperties
+ },
+ additionalProperties: false
+ },
+
+ // Config in `overrides`.
+ overrideConfig: {
+ type: "object",
+ properties: {
+ excludedFiles: { $ref: "#/definitions/stringOrStrings" },
+ files: { $ref: "#/definitions/stringOrStringsRequired" },
+ ...baseConfigProperties
+ },
+ required: ["files"],
+ additionalProperties: false
+ }
+ },
+
+ $ref: "#/definitions/objectConfig"
+};
+
+/**
+ * @fileoverview Defines environment settings and globals.
+ * @author Elan Shanker
+ */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Get the object that has difference.
+ * @param {Record} current The newer object.
+ * @param {Record} prev The older object.
+ * @returns {Record} The difference object.
+ */
+function getDiff(current, prev) {
+ const retv = {};
+
+ for (const [key, value] of Object.entries(current)) {
+ if (!Object.hasOwnProperty.call(prev, key)) {
+ retv[key] = value;
+ }
+ }
+
+ return retv;
+}
+
+const newGlobals2015 = getDiff(globals__default["default"].es2015, globals__default["default"].es5); // 19 variables such as Promise, Map, ...
+const newGlobals2017 = {
+ Atomics: false,
+ SharedArrayBuffer: false
+};
+const newGlobals2020 = {
+ BigInt: false,
+ BigInt64Array: false,
+ BigUint64Array: false,
+ globalThis: false
+};
+
+const newGlobals2021 = {
+ AggregateError: false,
+ FinalizationRegistry: false,
+ WeakRef: false
+};
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/** @type {Map} */
+var environments = new Map(Object.entries({
+
+ // Language
+ builtin: {
+ globals: globals__default["default"].es5
+ },
+ es6: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2015: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 6
+ }
+ },
+ es2016: {
+ globals: newGlobals2015,
+ parserOptions: {
+ ecmaVersion: 7
+ }
+ },
+ es2017: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 8
+ }
+ },
+ es2018: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 9
+ }
+ },
+ es2019: {
+ globals: { ...newGlobals2015, ...newGlobals2017 },
+ parserOptions: {
+ ecmaVersion: 10
+ }
+ },
+ es2020: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },
+ parserOptions: {
+ ecmaVersion: 11
+ }
+ },
+ es2021: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 12
+ }
+ },
+ es2022: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 13
+ }
+ },
+ es2023: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 14
+ }
+ },
+ es2024: {
+ globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
+ parserOptions: {
+ ecmaVersion: 15
+ }
+ },
+
+ // Platforms
+ browser: {
+ globals: globals__default["default"].browser
+ },
+ node: {
+ globals: globals__default["default"].node,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ "shared-node-browser": {
+ globals: globals__default["default"]["shared-node-browser"]
+ },
+ worker: {
+ globals: globals__default["default"].worker
+ },
+ serviceworker: {
+ globals: globals__default["default"].serviceworker
+ },
+
+ // Frameworks
+ commonjs: {
+ globals: globals__default["default"].commonjs,
+ parserOptions: {
+ ecmaFeatures: {
+ globalReturn: true
+ }
+ }
+ },
+ amd: {
+ globals: globals__default["default"].amd
+ },
+ mocha: {
+ globals: globals__default["default"].mocha
+ },
+ jasmine: {
+ globals: globals__default["default"].jasmine
+ },
+ jest: {
+ globals: globals__default["default"].jest
+ },
+ phantomjs: {
+ globals: globals__default["default"].phantomjs
+ },
+ jquery: {
+ globals: globals__default["default"].jquery
+ },
+ qunit: {
+ globals: globals__default["default"].qunit
+ },
+ prototypejs: {
+ globals: globals__default["default"].prototypejs
+ },
+ shelljs: {
+ globals: globals__default["default"].shelljs
+ },
+ meteor: {
+ globals: globals__default["default"].meteor
+ },
+ mongo: {
+ globals: globals__default["default"].mongo
+ },
+ protractor: {
+ globals: globals__default["default"].protractor
+ },
+ applescript: {
+ globals: globals__default["default"].applescript
+ },
+ nashorn: {
+ globals: globals__default["default"].nashorn
+ },
+ atomtest: {
+ globals: globals__default["default"].atomtest
+ },
+ embertest: {
+ globals: globals__default["default"].embertest
+ },
+ webextensions: {
+ globals: globals__default["default"].webextensions
+ },
+ greasemonkey: {
+ globals: globals__default["default"].greasemonkey
+ }
+}));
+
+/**
+ * @fileoverview Validates configs.
+ * @author Brandon Mills
+ */
+
+const ajv = ajvOrig();
+
+const ruleValidators = new WeakMap();
+const noop = Function.prototype;
+
+//------------------------------------------------------------------------------
+// Private
+//------------------------------------------------------------------------------
+let validateSchema;
+const severityMap = {
+ error: 2,
+ warn: 1,
+ off: 0
+};
+
+const validated = new WeakSet();
+
+//-----------------------------------------------------------------------------
+// Exports
+//-----------------------------------------------------------------------------
+
+class ConfigValidator {
+ constructor({ builtInRules = new Map() } = {}) {
+ this.builtInRules = builtInRules;
+ }
+
+ /**
+ * Gets a complete options schema for a rule.
+ * @param {{create: Function, schema: (Array|null)}} rule A new-style rule object
+ * @returns {Object} JSON Schema for the rule's options.
+ */
+ getRuleOptionsSchema(rule) {
+ if (!rule) {
+ return null;
+ }
+
+ const schema = rule.schema || rule.meta && rule.meta.schema;
+
+ // Given a tuple of schemas, insert warning level at the beginning
+ if (Array.isArray(schema)) {
+ if (schema.length) {
+ return {
+ type: "array",
+ items: schema,
+ minItems: 0,
+ maxItems: schema.length
+ };
+ }
+ return {
+ type: "array",
+ minItems: 0,
+ maxItems: 0
+ };
+
+ }
+
+ // Given a full schema, leave it alone
+ return schema || null;
+ }
+
+ /**
+ * Validates a rule's severity and returns the severity value. Throws an error if the severity is invalid.
+ * @param {options} options The given options for the rule.
+ * @returns {number|string} The rule's severity value
+ */
+ validateRuleSeverity(options) {
+ const severity = Array.isArray(options) ? options[0] : options;
+ const normSeverity = typeof severity === "string" ? severityMap[severity.toLowerCase()] : severity;
+
+ if (normSeverity === 0 || normSeverity === 1 || normSeverity === 2) {
+ return normSeverity;
+ }
+
+ throw new Error(`\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '${util__default["default"].inspect(severity).replace(/'/gu, "\"").replace(/\n/gu, "")}').\n`);
+
+ }
+
+ /**
+ * Validates the non-severity options passed to a rule, based on its schema.
+ * @param {{create: Function}} rule The rule to validate
+ * @param {Array} localOptions The options for the rule, excluding severity
+ * @returns {void}
+ */
+ validateRuleSchema(rule, localOptions) {
+ if (!ruleValidators.has(rule)) {
+ const schema = this.getRuleOptionsSchema(rule);
+
+ if (schema) {
+ ruleValidators.set(rule, ajv.compile(schema));
+ }
+ }
+
+ const validateRule = ruleValidators.get(rule);
+
+ if (validateRule) {
+ validateRule(localOptions);
+ if (validateRule.errors) {
+ throw new Error(validateRule.errors.map(
+ error => `\tValue ${JSON.stringify(error.data)} ${error.message}.\n`
+ ).join(""));
+ }
+ }
+ }
+
+ /**
+ * Validates a rule's options against its schema.
+ * @param {{create: Function}|null} rule The rule that the config is being validated for
+ * @param {string} ruleId The rule's unique name.
+ * @param {Array|number} options The given options for the rule.
+ * @param {string|null} source The name of the configuration source to report in any errors. If null or undefined,
+ * no source is prepended to the message.
+ * @returns {void}
+ */
+ validateRuleOptions(rule, ruleId, options, source = null) {
+ try {
+ const severity = this.validateRuleSeverity(options);
+
+ if (severity !== 0) {
+ this.validateRuleSchema(rule, Array.isArray(options) ? options.slice(1) : []);
+ }
+ } catch (err) {
+ const enhancedMessage = `Configuration for rule "${ruleId}" is invalid:\n${err.message}`;
+
+ if (typeof source === "string") {
+ throw new Error(`${source}:\n\t${enhancedMessage}`);
+ } else {
+ throw new Error(enhancedMessage);
+ }
+ }
+ }
+
+ /**
+ * Validates an environment object
+ * @param {Object} environment The environment config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded environments.
+ * @returns {void}
+ */
+ validateEnvironment(
+ environment,
+ source,
+ getAdditionalEnv = noop
+ ) {
+
+ // not having an environment is ok
+ if (!environment) {
+ return;
+ }
+
+ Object.keys(environment).forEach(id => {
+ const env = getAdditionalEnv(id) || environments.get(id) || null;
+
+ if (!env) {
+ const message = `${source}:\n\tEnvironment key "${id}" is unknown\n`;
+
+ throw new Error(message);
+ }
+ });
+ }
+
+ /**
+ * Validates a rules config object
+ * @param {Object} rulesConfig The rules config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} getAdditionalRule A map from strings to loaded rules
+ * @returns {void}
+ */
+ validateRules(
+ rulesConfig,
+ source,
+ getAdditionalRule = noop
+ ) {
+ if (!rulesConfig) {
+ return;
+ }
+
+ Object.keys(rulesConfig).forEach(id => {
+ const rule = getAdditionalRule(id) || this.builtInRules.get(id) || null;
+
+ this.validateRuleOptions(rule, id, rulesConfig[id], source);
+ });
+ }
+
+ /**
+ * Validates a `globals` section of a config file
+ * @param {Object} globalsConfig The `globals` section
+ * @param {string|null} source The name of the configuration source to report in the event of an error.
+ * @returns {void}
+ */
+ validateGlobals(globalsConfig, source = null) {
+ if (!globalsConfig) {
+ return;
+ }
+
+ Object.entries(globalsConfig)
+ .forEach(([configuredGlobal, configuredValue]) => {
+ try {
+ normalizeConfigGlobal(configuredValue);
+ } catch (err) {
+ throw new Error(`ESLint configuration of global '${configuredGlobal}' in ${source} is invalid:\n${err.message}`);
+ }
+ });
+ }
+
+ /**
+ * Validate `processor` configuration.
+ * @param {string|undefined} processorName The processor name.
+ * @param {string} source The name of config file.
+ * @param {function(id:string): Processor} getProcessor The getter of defined processors.
+ * @returns {void}
+ */
+ validateProcessor(processorName, source, getProcessor) {
+ if (processorName && !getProcessor(processorName)) {
+ throw new Error(`ESLint configuration of processor in '${source}' is invalid: '${processorName}' was not found.`);
+ }
+ }
+
+ /**
+ * Formats an array of schema validation errors.
+ * @param {Array} errors An array of error messages to format.
+ * @returns {string} Formatted error message
+ */
+ formatErrors(errors) {
+ return errors.map(error => {
+ if (error.keyword === "additionalProperties") {
+ const formattedPropertyPath = error.dataPath.length ? `${error.dataPath.slice(1)}.${error.params.additionalProperty}` : error.params.additionalProperty;
+
+ return `Unexpected top-level property "${formattedPropertyPath}"`;
+ }
+ if (error.keyword === "type") {
+ const formattedField = error.dataPath.slice(1);
+ const formattedExpectedType = Array.isArray(error.schema) ? error.schema.join("/") : error.schema;
+ const formattedValue = JSON.stringify(error.data);
+
+ return `Property "${formattedField}" is the wrong type (expected ${formattedExpectedType} but got \`${formattedValue}\`)`;
+ }
+
+ const field = error.dataPath[0] === "." ? error.dataPath.slice(1) : error.dataPath;
+
+ return `"${field}" ${error.message}. Value: ${JSON.stringify(error.data)}`;
+ }).map(message => `\t- ${message}.\n`).join("");
+ }
+
+ /**
+ * Validates the top level properties of the config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @returns {void}
+ */
+ validateConfigSchema(config, source = null) {
+ validateSchema = validateSchema || ajv.compile(configSchema);
+
+ if (!validateSchema(config)) {
+ throw new Error(`ESLint configuration in ${source} is invalid:\n${this.formatErrors(validateSchema.errors)}`);
+ }
+
+ if (Object.hasOwnProperty.call(config, "ecmaFeatures")) {
+ emitDeprecationWarning(source, "ESLINT_LEGACY_ECMAFEATURES");
+ }
+ }
+
+ /**
+ * Validates an entire config object.
+ * @param {Object} config The config object to validate.
+ * @param {string} source The name of the configuration source to report in any errors.
+ * @param {function(ruleId:string): Object} [getAdditionalRule] A map from strings to loaded rules.
+ * @param {function(envId:string): Object} [getAdditionalEnv] A map from strings to loaded envs.
+ * @returns {void}
+ */
+ validate(config, source, getAdditionalRule, getAdditionalEnv) {
+ this.validateConfigSchema(config, source);
+ this.validateRules(config.rules, source, getAdditionalRule);
+ this.validateEnvironment(config.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+
+ for (const override of config.overrides || []) {
+ this.validateRules(override.rules, source, getAdditionalRule);
+ this.validateEnvironment(override.env, source, getAdditionalEnv);
+ this.validateGlobals(config.globals, source);
+ }
+ }
+
+ /**
+ * Validate config array object.
+ * @param {ConfigArray} configArray The config array to validate.
+ * @returns {void}
+ */
+ validateConfigArray(configArray) {
+ const getPluginEnv = Map.prototype.get.bind(configArray.pluginEnvironments);
+ const getPluginProcessor = Map.prototype.get.bind(configArray.pluginProcessors);
+ const getPluginRule = Map.prototype.get.bind(configArray.pluginRules);
+
+ // Validate.
+ for (const element of configArray) {
+ if (validated.has(element)) {
+ continue;
+ }
+ validated.add(element);
+
+ this.validateEnvironment(element.env, element.name, getPluginEnv);
+ this.validateGlobals(element.globals, element.name);
+ this.validateProcessor(element.processor, element.name, getPluginProcessor);
+ this.validateRules(element.rules, element.name, getPluginRule);
+ }
+ }
+
+}
+
+/**
+ * @fileoverview Common helpers for naming of plugins, formatters and configs
+ */
+
+const NAMESPACE_REGEX = /^@.*\//iu;
+
+/**
+ * Brings package name to correct format based on prefix
+ * @param {string} name The name of the package.
+ * @param {string} prefix Can be either "eslint-plugin", "eslint-config" or "eslint-formatter"
+ * @returns {string} Normalized name of the package
+ * @private
+ */
+function normalizePackageName(name, prefix) {
+ let normalizedName = name;
+
+ /**
+ * On Windows, name can come in with Windows slashes instead of Unix slashes.
+ * Normalize to Unix first to avoid errors later on.
+ * https://github.com/eslint/eslint/issues/5644
+ */
+ if (normalizedName.includes("\\")) {
+ normalizedName = normalizedName.replace(/\\/gu, "/");
+ }
+
+ if (normalizedName.charAt(0) === "@") {
+
+ /**
+ * it's a scoped package
+ * package name is the prefix, or just a username
+ */
+ const scopedPackageShortcutRegex = new RegExp(`^(@[^/]+)(?:/(?:${prefix})?)?$`, "u"),
+ scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, "u");
+
+ if (scopedPackageShortcutRegex.test(normalizedName)) {
+ normalizedName = normalizedName.replace(scopedPackageShortcutRegex, `$1/${prefix}`);
+ } else if (!scopedPackageNameRegex.test(normalizedName.split("/")[1])) {
+
+ /**
+ * for scoped packages, insert the prefix after the first / unless
+ * the path is already @scope/eslint or @scope/eslint-xxx-yyy
+ */
+ normalizedName = normalizedName.replace(/^@([^/]+)\/(.*)$/u, `@$1/${prefix}-$2`);
+ }
+ } else if (!normalizedName.startsWith(`${prefix}-`)) {
+ normalizedName = `${prefix}-${normalizedName}`;
+ }
+
+ return normalizedName;
+}
+
+/**
+ * Removes the prefix from a fullname.
+ * @param {string} fullname The term which may have the prefix.
+ * @param {string} prefix The prefix to remove.
+ * @returns {string} The term without prefix.
+ */
+function getShorthandName(fullname, prefix) {
+ if (fullname[0] === "@") {
+ let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, "u").exec(fullname);
+
+ if (matchResult) {
+ return matchResult[1];
+ }
+
+ matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, "u").exec(fullname);
+ if (matchResult) {
+ return `${matchResult[1]}/${matchResult[2]}`;
+ }
+ } else if (fullname.startsWith(`${prefix}-`)) {
+ return fullname.slice(prefix.length + 1);
+ }
+
+ return fullname;
+}
+
+/**
+ * Gets the scope (namespace) of a term.
+ * @param {string} term The term which may have the namespace.
+ * @returns {string} The namespace of the term if it has one.
+ */
+function getNamespaceFromTerm(term) {
+ const match = term.match(NAMESPACE_REGEX);
+
+ return match ? match[0] : "";
+}
+
+var naming = {
+ __proto__: null,
+ normalizePackageName: normalizePackageName,
+ getShorthandName: getShorthandName,
+ getNamespaceFromTerm: getNamespaceFromTerm
+};
+
+/**
+ * Utility for resolving a module relative to another module
+ * @author Teddy Katz
+ */
+
+/*
+ * `Module.createRequire` is added in v12.2.0. It supports URL as well.
+ * We only support the case where the argument is a filepath, not a URL.
+ */
+const createRequire = Module__default["default"].createRequire;
+
+/**
+ * Resolves a Node module relative to another module
+ * @param {string} moduleName The name of a Node module, or a path to a Node module.
+ * @param {string} relativeToPath An absolute path indicating the module that `moduleName` should be resolved relative to. This must be
+ * a file rather than a directory, but the file need not actually exist.
+ * @returns {string} The absolute path that would result from calling `require.resolve(moduleName)` in a file located at `relativeToPath`
+ */
+function resolve(moduleName, relativeToPath) {
+ try {
+ return createRequire(relativeToPath).resolve(moduleName);
+ } catch (error) {
+
+ // This `if` block is for older Node.js than 12.0.0. We can remove this block in the future.
+ if (
+ typeof error === "object" &&
+ error !== null &&
+ error.code === "MODULE_NOT_FOUND" &&
+ !error.requireStack &&
+ error.message.includes(moduleName)
+ ) {
+ error.message += `\nRequire stack:\n- ${relativeToPath}`;
+ }
+ throw error;
+ }
+}
+
+var ModuleResolver = {
+ __proto__: null,
+ resolve: resolve
+};
+
+/**
+ * @fileoverview The factory of `ConfigArray` objects.
+ *
+ * This class provides methods to create `ConfigArray` instance.
+ *
+ * - `create(configData, options)`
+ * Create a `ConfigArray` instance from a config data. This is to handle CLI
+ * options except `--config`.
+ * - `loadFile(filePath, options)`
+ * Create a `ConfigArray` instance from a config file. This is to handle
+ * `--config` option. If the file was not found, throws the following error:
+ * - If the filename was `*.js`, a `MODULE_NOT_FOUND` error.
+ * - If the filename was `package.json`, an IO error or an
+ * `ESLINT_CONFIG_FIELD_NOT_FOUND` error.
+ * - Otherwise, an IO error such as `ENOENT`.
+ * - `loadInDirectory(directoryPath, options)`
+ * Create a `ConfigArray` instance from a config file which is on a given
+ * directory. This tries to load `.eslintrc.*` or `package.json`. If not
+ * found, returns an empty `ConfigArray`.
+ * - `loadESLintIgnore(filePath)`
+ * Create a `ConfigArray` instance from a config file that is `.eslintignore`
+ * format. This is to handle `--ignore-path` option.
+ * - `loadDefaultESLintIgnore()`
+ * Create a `ConfigArray` instance from `.eslintignore` or `package.json` in
+ * the current working directory.
+ *
+ * `ConfigArrayFactory` class has the responsibility that loads configuration
+ * files, including loading `extends`, `parser`, and `plugins`. The created
+ * `ConfigArray` instance has the loaded `extends`, `parser`, and `plugins`.
+ *
+ * But this class doesn't handle cascading. `CascadingConfigArrayFactory` class
+ * handles cascading and hierarchy.
+ *
+ * @author Toru Nagashima
+ */
+
+const require$1 = Module.createRequire(require('url').pathToFileURL(__filename).toString());
+
+const debug$2 = debugOrig__default["default"]("eslintrc:config-array-factory");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+const configFilenames = [
+ ".eslintrc.js",
+ ".eslintrc.cjs",
+ ".eslintrc.yaml",
+ ".eslintrc.yml",
+ ".eslintrc.json",
+ ".eslintrc",
+ "package.json"
+];
+
+// Define types for VSCode IntelliSense.
+/** @typedef {import("./shared/types").ConfigData} ConfigData */
+/** @typedef {import("./shared/types").OverrideConfigData} OverrideConfigData */
+/** @typedef {import("./shared/types").Parser} Parser */
+/** @typedef {import("./shared/types").Plugin} Plugin */
+/** @typedef {import("./shared/types").Rule} Rule */
+/** @typedef {import("./config-array/config-dependency").DependentParser} DependentParser */
+/** @typedef {import("./config-array/config-dependency").DependentPlugin} DependentPlugin */
+/** @typedef {ConfigArray[0]} ConfigArrayElement */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryOptions
+ * @property {Map} [additionalPluginPool] The map for additional plugins.
+ * @property {string} [cwd] The path to the current working directory.
+ * @property {string} [resolvePluginsRelativeTo] A path to the directory that plugins should be resolved from. Defaults to `cwd`.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryInternalSlots
+ * @property {Map} additionalPluginPool The map for additional plugins.
+ * @property {string} cwd The path to the current working directory.
+ * @property {string | undefined} resolvePluginsRelativeTo An absolute path the the directory that plugins should be resolved from.
+ * @property {Map} builtInRules The rules that are built in to ESLint.
+ * @property {Object} [resolver=ModuleResolver] The module resolver object.
+ * @property {string} eslintAllPath The path to the definitions for eslint:all.
+ * @property {Function} getEslintAllConfig Returns the config data for eslint:all.
+ * @property {string} eslintRecommendedPath The path to the definitions for eslint:recommended.
+ * @property {Function} getEslintRecommendedConfig Returns the config data for eslint:recommended.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryLoadingContext
+ * @property {string} filePath The path to the current configuration.
+ * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @property {string} name The name of the current configuration.
+ * @property {string} pluginBasePath The base path to resolve plugins.
+ * @property {"config" | "ignore" | "implicit-processor"} type The type of the current configuration. This is `"config"` in normal. This is `"ignore"` if it came from `.eslintignore`. This is `"implicit-processor"` if it came from legacy file-extension processors.
+ */
+
+/**
+ * @typedef {Object} ConfigArrayFactoryLoadingContext
+ * @property {string} filePath The path to the current configuration.
+ * @property {string} matchBasePath The base path to resolve relative paths in `overrides[].files`, `overrides[].excludedFiles`, and `ignorePatterns`.
+ * @property {string} name The name of the current configuration.
+ * @property {"config" | "ignore" | "implicit-processor"} type The type of the current configuration. This is `"config"` in normal. This is `"ignore"` if it came from `.eslintignore`. This is `"implicit-processor"` if it came from legacy file-extension processors.
+ */
+
+/** @type {WeakMap} */
+const internalSlotsMap$1 = new WeakMap();
+
+/** @type {WeakMap