Browse Source

Update dependency eslint to v9 (#4996)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Hadrien Croubois <hadrien.croubois@gmail.com>
Co-authored-by: cairo <cairoeth@protonmail.com>
renovate[bot] 11 months ago
parent
commit
205f59e9b6

+ 0 - 20
.eslintrc

@@ -1,20 +0,0 @@
-{
-  "root": true,
-  "extends" : [
-    "eslint:recommended",
-    "prettier",
-  ],
-  "env": {
-    "es2022": true,
-    "browser": true,
-    "node": true,
-    "mocha": true,
-  },
-  "globals" : {
-    "artifacts": "readonly",
-    "contract": "readonly",
-    "web3": "readonly",
-    "extendEnvironment": "readonly",
-    "expect": "readonly",
-  }
-}

+ 26 - 0
eslint.config.mjs

@@ -0,0 +1,26 @@
+import js from '@eslint/js';
+import { includeIgnoreFile } from '@eslint/compat';
+import prettier from 'eslint-config-prettier';
+import globals from 'globals';
+import path from 'path';
+
+export default [
+  js.configs.recommended,
+  prettier,
+  {
+    languageOptions: {
+      ecmaVersion: 2022,
+      globals: {
+        ...globals.browser,
+        ...globals.mocha,
+        ...globals.node,
+        artifacts: 'readonly',
+        contract: 'readonly',
+        web3: 'readonly',
+        extendEnvironment: 'readonly',
+        expect: 'readonly',
+      },
+    },
+  },
+  includeIgnoreFile(path.resolve(import.meta.dirname, '.gitignore')),
+];

+ 254 - 169
package-lock.json

@@ -13,6 +13,7 @@
         "@changesets/cli": "^2.26.0",
         "@changesets/cli": "^2.26.0",
         "@changesets/pre": "^2.0.0",
         "@changesets/pre": "^2.0.0",
         "@changesets/read": "^0.6.0",
         "@changesets/read": "^0.6.0",
+        "@eslint/compat": "^1.2.1",
         "@nomicfoundation/hardhat-chai-matchers": "^2.0.6",
         "@nomicfoundation/hardhat-chai-matchers": "^2.0.6",
         "@nomicfoundation/hardhat-ethers": "^3.0.4",
         "@nomicfoundation/hardhat-ethers": "^3.0.4",
         "@nomicfoundation/hardhat-network-helpers": "^1.0.3",
         "@nomicfoundation/hardhat-network-helpers": "^1.0.3",
@@ -21,10 +22,11 @@
         "@openzeppelin/upgrade-safe-transpiler": "^0.3.32",
         "@openzeppelin/upgrade-safe-transpiler": "^0.3.32",
         "@openzeppelin/upgrades-core": "^1.20.6",
         "@openzeppelin/upgrades-core": "^1.20.6",
         "chai": "^4.2.0",
         "chai": "^4.2.0",
-        "eslint": "^8.30.0",
+        "eslint": "^9.0.0",
         "eslint-config-prettier": "^9.0.0",
         "eslint-config-prettier": "^9.0.0",
         "ethers": "^6.7.1",
         "ethers": "^6.7.1",
         "glob": "^11.0.0",
         "glob": "^11.0.0",
+        "globals": "^15.3.0",
         "graphlib": "^2.1.8",
         "graphlib": "^2.1.8",
         "hardhat": "^2.22.2",
         "hardhat": "^2.22.2",
         "hardhat-exposed": "^0.3.15",
         "hardhat-exposed": "^0.3.15",
@@ -571,24 +573,69 @@
       }
       }
     },
     },
     "node_modules/@eslint-community/regexpp": {
     "node_modules/@eslint-community/regexpp": {
-      "version": "4.8.1",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz",
-      "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==",
+      "version": "4.11.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
+      "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "engines": {
       "engines": {
         "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
         "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
       }
       }
     },
     },
+    "node_modules/@eslint/compat": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.1.tgz",
+      "integrity": "sha512-JbHG2TWuCeNzh87fXo+/46Z1LEo9DBA9T188d0fZgGxAD+cNyS6sx9fdiyxjGPBMyQVRlCutTByZ6a5+YMkF7g==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "peerDependencies": {
+        "eslint": "^9.10.0"
+      },
+      "peerDependenciesMeta": {
+        "eslint": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@eslint/config-array": {
+      "version": "0.18.0",
+      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
+      "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@eslint/object-schema": "^2.1.4",
+        "debug": "^4.3.1",
+        "minimatch": "^3.1.2"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/core": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz",
+      "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
     "node_modules/@eslint/eslintrc": {
     "node_modules/@eslint/eslintrc": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
-      "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
+      "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "ajv": "^6.12.4",
         "ajv": "^6.12.4",
         "debug": "^4.3.2",
         "debug": "^4.3.2",
-        "espree": "^9.6.0",
-        "globals": "^13.19.0",
+        "espree": "^10.0.1",
+        "globals": "^14.0.0",
         "ignore": "^5.2.0",
         "ignore": "^5.2.0",
         "import-fresh": "^3.2.1",
         "import-fresh": "^3.2.1",
         "js-yaml": "^4.1.0",
         "js-yaml": "^4.1.0",
@@ -596,7 +643,7 @@
         "strip-json-comments": "^3.1.1"
         "strip-json-comments": "^3.1.1"
       },
       },
       "engines": {
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       },
       "funding": {
       "funding": {
         "url": "https://opencollective.com/eslint"
         "url": "https://opencollective.com/eslint"
@@ -608,6 +655,18 @@
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/@eslint/eslintrc/node_modules/globals": {
+      "version": "14.0.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+      "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
     "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
       "version": "4.1.0",
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@@ -621,12 +680,36 @@
       }
       }
     },
     },
     "node_modules/@eslint/js": {
     "node_modules/@eslint/js": {
-      "version": "8.49.0",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz",
-      "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==",
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz",
+      "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "engines": {
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/object-schema": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+      "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      }
+    },
+    "node_modules/@eslint/plugin-kit": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz",
+      "integrity": "sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "levn": "^0.4.1"
+      },
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
       }
     },
     },
     "node_modules/@ethereumjs/rlp": {
     "node_modules/@ethereumjs/rlp": {
@@ -1111,18 +1194,28 @@
         "pnpm": "7.5.1"
         "pnpm": "7.5.1"
       }
       }
     },
     },
-    "node_modules/@humanwhocodes/config-array": {
-      "version": "0.11.11",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
-      "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
+    "node_modules/@humanfs/core": {
+      "version": "0.19.0",
+      "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz",
+      "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==",
       "dev": true,
       "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
+    "node_modules/@humanfs/node": {
+      "version": "0.16.5",
+      "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz",
+      "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==",
+      "dev": true,
+      "license": "Apache-2.0",
       "dependencies": {
       "dependencies": {
-        "@humanwhocodes/object-schema": "^1.2.1",
-        "debug": "^4.1.1",
-        "minimatch": "^3.0.5"
+        "@humanfs/core": "^0.19.0",
+        "@humanwhocodes/retry": "^0.3.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">=10.10.0"
+        "node": ">=18.18.0"
       }
       }
     },
     },
     "node_modules/@humanwhocodes/module-importer": {
     "node_modules/@humanwhocodes/module-importer": {
@@ -1138,11 +1231,19 @@
         "url": "https://github.com/sponsors/nzakas"
         "url": "https://github.com/sponsors/nzakas"
       }
       }
     },
     },
-    "node_modules/@humanwhocodes/object-schema": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
-      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
-      "dev": true
+    "node_modules/@humanwhocodes/retry": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+      "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
     },
     },
     "node_modules/@isaacs/cliui": {
     "node_modules/@isaacs/cliui": {
       "version": "8.0.2",
       "version": "8.0.2",
@@ -2450,6 +2551,13 @@
         "@types/chai": "*"
         "@types/chai": "*"
       }
       }
     },
     },
+    "node_modules/@types/estree": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+      "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/@types/glob": {
     "node_modules/@types/glob": {
       "version": "7.2.0",
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
       "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
@@ -2475,6 +2583,13 @@
         "ci-info": "^3.1.0"
         "ci-info": "^3.1.0"
       }
       }
     },
     },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.15",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/@types/lru-cache": {
     "node_modules/@types/lru-cache": {
       "version": "5.1.1",
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz",
       "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -2560,10 +2675,11 @@
       }
       }
     },
     },
     "node_modules/acorn": {
     "node_modules/acorn": {
-      "version": "8.10.0",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
-      "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+      "version": "8.13.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
+      "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "bin": {
       "bin": {
         "acorn": "bin/acorn"
         "acorn": "bin/acorn"
       },
       },
@@ -2576,6 +2692,7 @@
       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "peerDependencies": {
       "peerDependencies": {
         "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
         "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
       }
@@ -3970,18 +4087,6 @@
         "node": ">=8"
         "node": ">=8"
       }
       }
     },
     },
-    "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/dotenv": {
     "node_modules/dotenv": {
       "version": "8.6.0",
       "version": "8.6.0",
       "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
       "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
@@ -4277,57 +4382,64 @@
       }
       }
     },
     },
     "node_modules/eslint": {
     "node_modules/eslint": {
-      "version": "8.49.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz",
-      "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==",
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz",
+      "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.6.1",
-        "@eslint/eslintrc": "^2.1.2",
-        "@eslint/js": "8.49.0",
-        "@humanwhocodes/config-array": "^0.11.11",
+        "@eslint-community/regexpp": "^4.11.0",
+        "@eslint/config-array": "^0.18.0",
+        "@eslint/core": "^0.7.0",
+        "@eslint/eslintrc": "^3.1.0",
+        "@eslint/js": "9.13.0",
+        "@eslint/plugin-kit": "^0.2.0",
+        "@humanfs/node": "^0.16.5",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
+        "@humanwhocodes/retry": "^0.3.1",
+        "@types/estree": "^1.0.6",
+        "@types/json-schema": "^7.0.15",
         "ajv": "^6.12.4",
         "ajv": "^6.12.4",
         "chalk": "^4.0.0",
         "chalk": "^4.0.0",
         "cross-spawn": "^7.0.2",
         "cross-spawn": "^7.0.2",
         "debug": "^4.3.2",
         "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
         "escape-string-regexp": "^4.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",
+        "eslint-scope": "^8.1.0",
+        "eslint-visitor-keys": "^4.1.0",
+        "espree": "^10.2.0",
+        "esquery": "^1.5.0",
         "esutils": "^2.0.2",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
         "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
+        "file-entry-cache": "^8.0.0",
         "find-up": "^5.0.0",
         "find-up": "^5.0.0",
         "glob-parent": "^6.0.2",
         "glob-parent": "^6.0.2",
-        "globals": "^13.19.0",
-        "graphemer": "^1.4.0",
         "ignore": "^5.2.0",
         "ignore": "^5.2.0",
         "imurmurhash": "^0.1.4",
         "imurmurhash": "^0.1.4",
         "is-glob": "^4.0.0",
         "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-yaml": "^4.1.0",
         "json-stable-stringify-without-jsonify": "^1.0.1",
         "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
         "lodash.merge": "^4.6.2",
         "lodash.merge": "^4.6.2",
         "minimatch": "^3.1.2",
         "minimatch": "^3.1.2",
         "natural-compare": "^1.4.0",
         "natural-compare": "^1.4.0",
         "optionator": "^0.9.3",
         "optionator": "^0.9.3",
-        "strip-ansi": "^6.0.1",
         "text-table": "^0.2.0"
         "text-table": "^0.2.0"
       },
       },
       "bin": {
       "bin": {
         "eslint": "bin/eslint.js"
         "eslint": "bin/eslint.js"
       },
       },
       "engines": {
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       },
       "funding": {
       "funding": {
-        "url": "https://opencollective.com/eslint"
+        "url": "https://eslint.org/donate"
+      },
+      "peerDependencies": {
+        "jiti": "*"
+      },
+      "peerDependenciesMeta": {
+        "jiti": {
+          "optional": true
+        }
       }
       }
     },
     },
     "node_modules/eslint-config-prettier": {
     "node_modules/eslint-config-prettier": {
@@ -4343,16 +4455,17 @@
       }
       }
     },
     },
     "node_modules/eslint-scope": {
     "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==",
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz",
+      "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==",
       "dev": true,
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
       "dependencies": {
         "esrecurse": "^4.3.0",
         "esrecurse": "^4.3.0",
         "estraverse": "^5.2.0"
         "estraverse": "^5.2.0"
       },
       },
       "engines": {
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       },
       "funding": {
       "funding": {
         "url": "https://opencollective.com/eslint"
         "url": "https://opencollective.com/eslint"
@@ -4375,6 +4488,7 @@
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "color-convert": "^2.0.1"
         "color-convert": "^2.0.1"
       },
       },
@@ -4385,17 +4499,12 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
       }
     },
     },
-    "node_modules/eslint/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/eslint/node_modules/chalk": {
     "node_modules/eslint/node_modules/chalk": {
       "version": "4.1.2",
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "ansi-styles": "^4.1.0",
         "ansi-styles": "^4.1.0",
         "supports-color": "^7.1.0"
         "supports-color": "^7.1.0"
@@ -4412,6 +4521,7 @@
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "color-name": "~1.1.4"
         "color-name": "~1.1.4"
       },
       },
@@ -4423,13 +4533,15 @@
       "version": "1.1.4",
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
+      "dev": true,
+      "license": "MIT"
     },
     },
     "node_modules/eslint/node_modules/escape-string-regexp": {
     "node_modules/eslint/node_modules/escape-string-regexp": {
       "version": "4.0.0",
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "engines": {
       "engines": {
         "node": ">=10"
         "node": ">=10"
       },
       },
@@ -4437,11 +4549,25 @@
         "url": "https://github.com/sponsors/sindresorhus"
         "url": "https://github.com/sponsors/sindresorhus"
       }
       }
     },
     },
+    "node_modules/eslint/node_modules/eslint-visitor-keys": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
+      "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
     "node_modules/eslint/node_modules/find-up": {
     "node_modules/eslint/node_modules/find-up": {
       "version": "5.0.0",
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
       "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
       "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "locate-path": "^6.0.0",
         "locate-path": "^6.0.0",
         "path-exists": "^4.0.0"
         "path-exists": "^4.0.0"
@@ -4458,6 +4584,7 @@
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
       "dev": true,
       "dev": true,
+      "license": "ISC",
       "dependencies": {
       "dependencies": {
         "is-glob": "^4.0.3"
         "is-glob": "^4.0.3"
       },
       },
@@ -4470,27 +4597,17 @@
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "engines": {
       "engines": {
         "node": ">=8"
         "node": ">=8"
       }
       }
     },
     },
-    "node_modules/eslint/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/eslint/node_modules/locate-path": {
     "node_modules/eslint/node_modules/locate-path": {
       "version": "6.0.0",
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
       "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
       "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "p-locate": "^5.0.0"
         "p-locate": "^5.0.0"
       },
       },
@@ -4506,6 +4623,7 @@
       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "p-limit": "^3.0.2"
         "p-limit": "^3.0.2"
       },
       },
@@ -4521,6 +4639,7 @@
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "has-flag": "^4.0.0"
         "has-flag": "^4.0.0"
       },
       },
@@ -4529,17 +4648,31 @@
       }
       }
     },
     },
     "node_modules/espree": {
     "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==",
+      "version": "10.2.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz",
+      "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==",
       "dev": true,
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
       "dependencies": {
-        "acorn": "^8.9.0",
+        "acorn": "^8.12.0",
         "acorn-jsx": "^5.3.2",
         "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.4.1"
+        "eslint-visitor-keys": "^4.1.0"
       },
       },
       "engines": {
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/espree/node_modules/eslint-visitor-keys": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz",
+      "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       },
       "funding": {
       "funding": {
         "url": "https://opencollective.com/eslint"
         "url": "https://opencollective.com/eslint"
@@ -4575,6 +4708,7 @@
       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
       "dev": true,
       "dev": true,
+      "license": "BSD-2-Clause",
       "dependencies": {
       "dependencies": {
         "estraverse": "^5.2.0"
         "estraverse": "^5.2.0"
       },
       },
@@ -4881,15 +5015,16 @@
       }
       }
     },
     },
     "node_modules/file-entry-cache": {
     "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==",
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+      "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
-        "flat-cache": "^3.0.4"
+        "flat-cache": "^4.0.0"
       },
       },
       "engines": {
       "engines": {
-        "node": "^10.12.0 || >=12.0.0"
+        "node": ">=16.0.0"
       }
       }
     },
     },
     "node_modules/fill-range": {
     "node_modules/fill-range": {
@@ -4937,59 +5072,25 @@
       }
       }
     },
     },
     "node_modules/flat-cache": {
     "node_modules/flat-cache": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
-      "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
-      "dev": true,
-      "dependencies": {
-        "flatted": "^3.2.7",
-        "keyv": "^4.5.3",
-        "rimraf": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=12.0.0"
-      }
-    },
-    "node_modules/flat-cache/node_modules/glob": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+      "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "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"
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.4"
       },
       },
       "engines": {
       "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/flat-cache/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": ">=16"
       }
       }
     },
     },
     "node_modules/flatted": {
     "node_modules/flatted": {
-      "version": "3.2.9",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
-      "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
-      "dev": true
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+      "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+      "dev": true,
+      "license": "ISC"
     },
     },
     "node_modules/follow-redirects": {
     "node_modules/follow-redirects": {
       "version": "1.15.6",
       "version": "1.15.6",
@@ -5326,15 +5427,13 @@
       }
       }
     },
     },
     "node_modules/globals": {
     "node_modules/globals": {
-      "version": "13.22.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz",
-      "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==",
+      "version": "15.11.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz",
+      "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==",
       "dev": true,
       "dev": true,
-      "dependencies": {
-        "type-fest": "^0.20.2"
-      },
+      "license": "MIT",
       "engines": {
       "engines": {
-        "node": ">=8"
+        "node": ">=18"
       },
       },
       "funding": {
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
         "url": "https://github.com/sponsors/sindresorhus"
@@ -5424,12 +5523,6 @@
       "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
       "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
       "dev": true
       "dev": true
     },
     },
-    "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/graphlib": {
     "node_modules/graphlib": {
       "version": "2.1.8",
       "version": "2.1.8",
       "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",
       "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",
@@ -6643,15 +6736,6 @@
         "url": "https://github.com/sponsors/ljharb"
         "url": "https://github.com/sponsors/ljharb"
       }
       }
     },
     },
-    "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/is-plain-obj": {
     "node_modules/is-plain-obj": {
       "version": "1.1.0",
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
@@ -6917,10 +7001,11 @@
       }
       }
     },
     },
     "node_modules/keyv": {
     "node_modules/keyv": {
-      "version": "4.5.3",
-      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
-      "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
       "dev": true,
       "dev": true,
+      "license": "MIT",
       "dependencies": {
       "dependencies": {
         "json-buffer": "3.0.1"
         "json-buffer": "3.0.1"
       }
       }

+ 5 - 3
package.json

@@ -17,8 +17,8 @@
     "prepare-docs": "scripts/prepare-docs.sh",
     "prepare-docs": "scripts/prepare-docs.sh",
     "lint": "npm run lint:js && npm run lint:sol",
     "lint": "npm run lint:js && npm run lint:sol",
     "lint:fix": "npm run lint:js:fix && npm run lint:sol:fix",
     "lint:fix": "npm run lint:js:fix && npm run lint:sol:fix",
-    "lint:js": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --check && eslint --ignore-path .gitignore .",
-    "lint:js:fix": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --write && eslint --ignore-path .gitignore . --fix",
+    "lint:js": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --check && eslint .",
+    "lint:js:fix": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --write && eslint . --fix",
     "lint:sol": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --check && solhint '{contracts,test}/**/*.sol'",
     "lint:sol": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --check && solhint '{contracts,test}/**/*.sol'",
     "lint:sol:fix": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --write",
     "lint:sol:fix": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --write",
     "clean": "hardhat clean && rimraf build contracts/build",
     "clean": "hardhat clean && rimraf build contracts/build",
@@ -55,6 +55,7 @@
     "@changesets/cli": "^2.26.0",
     "@changesets/cli": "^2.26.0",
     "@changesets/pre": "^2.0.0",
     "@changesets/pre": "^2.0.0",
     "@changesets/read": "^0.6.0",
     "@changesets/read": "^0.6.0",
+    "@eslint/compat": "^1.2.1",
     "@nomicfoundation/hardhat-chai-matchers": "^2.0.6",
     "@nomicfoundation/hardhat-chai-matchers": "^2.0.6",
     "@nomicfoundation/hardhat-ethers": "^3.0.4",
     "@nomicfoundation/hardhat-ethers": "^3.0.4",
     "@nomicfoundation/hardhat-network-helpers": "^1.0.3",
     "@nomicfoundation/hardhat-network-helpers": "^1.0.3",
@@ -63,9 +64,10 @@
     "@openzeppelin/upgrade-safe-transpiler": "^0.3.32",
     "@openzeppelin/upgrade-safe-transpiler": "^0.3.32",
     "@openzeppelin/upgrades-core": "^1.20.6",
     "@openzeppelin/upgrades-core": "^1.20.6",
     "chai": "^4.2.0",
     "chai": "^4.2.0",
-    "eslint": "^8.30.0",
+    "eslint": "^9.0.0",
     "eslint-config-prettier": "^9.0.0",
     "eslint-config-prettier": "^9.0.0",
     "ethers": "^6.7.1",
     "ethers": "^6.7.1",
+    "globals": "^15.3.0",
     "glob": "^11.0.0",
     "glob": "^11.0.0",
     "graphlib": "^2.1.8",
     "graphlib": "^2.1.8",
     "hardhat": "^2.22.2",
     "hardhat": "^2.22.2",

+ 1 - 1
scripts/generate/run.js

@@ -8,7 +8,7 @@ const format = require('./format-lines');
 function getVersion(path) {
 function getVersion(path) {
   try {
   try {
     return fs.readFileSync(path, 'utf8').match(/\/\/ OpenZeppelin Contracts \(last updated v[^)]+\)/)[0];
     return fs.readFileSync(path, 'utf8').match(/\/\/ OpenZeppelin Contracts \(last updated v[^)]+\)/)[0];
-  } catch (err) {
+  } catch {
     return null;
     return null;
   }
   }
 }
 }

+ 0 - 1
scripts/generate/templates/Checkpoints.js

@@ -227,7 +227,6 @@ function _unsafeAccess(
     }
     }
 }
 }
 `;
 `;
-/* eslint-enable max-len */
 
 
 // GENERATE
 // GENERATE
 module.exports = format(
 module.exports = format(

+ 0 - 1
scripts/generate/templates/Checkpoints.t.js

@@ -11,7 +11,6 @@ import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol";
 import {Checkpoints} from "@openzeppelin/contracts/utils/structs/Checkpoints.sol";
 import {Checkpoints} from "@openzeppelin/contracts/utils/structs/Checkpoints.sol";
 `;
 `;
 
 
-/* eslint-disable max-len */
 const template = opts => `\
 const template = opts => `\
 using Checkpoints for Checkpoints.${opts.historyTypeName};
 using Checkpoints for Checkpoints.${opts.historyTypeName};
 
 

+ 0 - 2
scripts/generate/templates/EnumerableMap.js

@@ -2,7 +2,6 @@ const format = require('../format-lines');
 const { fromBytes32, toBytes32 } = require('./conversion');
 const { fromBytes32, toBytes32 } = require('./conversion');
 const { TYPES } = require('./EnumerableMap.opts');
 const { TYPES } = require('./EnumerableMap.opts');
 
 
-/* eslint-disable max-len */
 const header = `\
 const header = `\
 pragma solidity ^0.8.20;
 pragma solidity ^0.8.20;
 
 
@@ -52,7 +51,6 @@ import {EnumerableSet} from "./EnumerableSet.sol";
  * ====
  * ====
  */
  */
 `;
 `;
-/* eslint-enable max-len */
 
 
 const defaultMap = `\
 const defaultMap = `\
 // To implement this library for multiple types with as little code repetition as possible, we write it in
 // To implement this library for multiple types with as little code repetition as possible, we write it in

+ 0 - 2
scripts/generate/templates/EnumerableSet.js

@@ -2,7 +2,6 @@ const format = require('../format-lines');
 const { fromBytes32, toBytes32 } = require('./conversion');
 const { fromBytes32, toBytes32 } = require('./conversion');
 const { TYPES } = require('./EnumerableSet.opts');
 const { TYPES } = require('./EnumerableSet.opts');
 
 
-/* eslint-disable max-len */
 const header = `\
 const header = `\
 pragma solidity ^0.8.20;
 pragma solidity ^0.8.20;
 
 
@@ -41,7 +40,6 @@ pragma solidity ^0.8.20;
  * ====
  * ====
  */
  */
 `;
 `;
-/* eslint-enable max-len */
 
 
 const defaultSet = `\
 const defaultSet = `\
 // To implement this library for multiple types with as little code
 // To implement this library for multiple types with as little code

+ 0 - 2
scripts/generate/templates/MerkleProof.js

@@ -43,7 +43,6 @@ const errors = `\
 error MerkleProofInvalidMultiproof();
 error MerkleProofInvalidMultiproof();
 `;
 `;
 
 
-/* eslint-disable max-len */
 const templateProof = ({ suffix, location, visibility, hash }) => `\
 const templateProof = ({ suffix, location, visibility, hash }) => `\
 /**
 /**
  * @dev Returns true if a \`leaf\` can be proved to be a part of a Merkle tree
  * @dev Returns true if a \`leaf\` can be proved to be a part of a Merkle tree
@@ -172,7 +171,6 @@ function processMultiProof${suffix}(${formatArgsMultiline(
     }
     }
 }
 }
 `;
 `;
-/* eslint-enable max-len */
 
 
 // GENERATE
 // GENERATE
 module.exports = format(
 module.exports = format(

+ 0 - 2
scripts/generate/templates/SafeCast.js

@@ -61,7 +61,6 @@ function toUint${length}(uint256 value) internal pure returns (uint${length}) {
 }
 }
 `;
 `;
 
 
-/* eslint-disable max-len */
 const toIntDownCast = length => `\
 const toIntDownCast = length => `\
 /**
 /**
  * @dev Returns the downcasted int${length} from int256, reverting on
  * @dev Returns the downcasted int${length} from int256, reverting on
@@ -81,7 +80,6 @@ function toInt${length}(int256 value) internal pure returns (int${length} downca
     }
     }
 }
 }
 `;
 `;
-/* eslint-enable max-len */
 
 
 const toInt = length => `\
 const toInt = length => `\
 /**
 /**

+ 2 - 2
scripts/release/workflow/state.js

@@ -106,7 +106,7 @@ async function readChangesetState(cwd = process.cwd()) {
   };
   };
 }
 }
 
 
-async function isPublishedOnNpm(package, version) {
-  const res = await fetch(`https://registry.npmjs.com/${package}/${version}`);
+async function isPublishedOnNpm(packageName, version) {
+  const res = await fetch(`https://registry.npmjs.com/${packageName}/${version}`);
   return res.ok;
   return res.ok;
 }
 }

+ 1 - 1
scripts/update-docs-branch.js

@@ -6,7 +6,7 @@ const run = cmd => {
 const tryRead = cmd => {
 const tryRead = cmd => {
   try {
   try {
     return read(cmd);
     return read(cmd);
-  } catch (e) {
+  } catch {
     return undefined;
     return undefined;
   }
   }
 };
 };

+ 1 - 1
test/helpers/storage.js

@@ -26,7 +26,7 @@ const upgradeableSlot = (contractName, offset) => {
     // Try to get the artifact paths, will throw if it doesn't exist
     // Try to get the artifact paths, will throw if it doesn't exist
     artifacts._getArtifactPathSync(`${contractName}Upgradeable`);
     artifacts._getArtifactPathSync(`${contractName}Upgradeable`);
     return offset + ethers.toBigInt(erc7201Slot(erc7201format(contractName)));
     return offset + ethers.toBigInt(erc7201Slot(erc7201format(contractName)));
-  } catch (_) {
+  } catch {
     return offset;
     return offset;
   }
   }
 };
 };

+ 2 - 2
test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js

@@ -243,10 +243,10 @@ module.exports = function shouldBehaveLikeTransparentUpgradeableProxy() {
     });
     });
 
 
     it('proxy admin cannot call delegated functions', async function () {
     it('proxy admin cannot call delegated functions', async function () {
-      const interface = await ethers.getContractFactory('TransparentUpgradeableProxy');
+      const factory = await ethers.getContractFactory('TransparentUpgradeableProxy');
 
 
       await expect(this.instance.connect(this.proxyAdminAsSigner).delegatedFunction()).to.be.revertedWithCustomError(
       await expect(this.instance.connect(this.proxyAdminAsSigner).delegatedFunction()).to.be.revertedWithCustomError(
-        interface,
+        factory,
         'ProxyDeniedAdminAccess',
         'ProxyDeniedAdminAccess',
       );
       );
     });
     });

+ 8 - 8
test/token/ERC721/extensions/ERC721Consecutive.test.js

@@ -202,35 +202,35 @@ describe('ERC721Consecutive', function () {
     const receiver = ethers.Wallet.createRandom();
     const receiver = ethers.Wallet.createRandom();
 
 
     it('cannot mint a batch larger than 5000', async function () {
     it('cannot mint a batch larger than 5000', async function () {
-      const { interface } = await ethers.getContractFactory('$ERC721ConsecutiveMock');
+      const factory = await ethers.getContractFactory('$ERC721ConsecutiveMock');
 
 
       await expect(ethers.deployContract('$ERC721ConsecutiveMock', [name, symbol, 0, [], [receiver], [5001n]]))
       await expect(ethers.deployContract('$ERC721ConsecutiveMock', [name, symbol, 0, [], [receiver], [5001n]]))
-        .to.be.revertedWithCustomError({ interface }, 'ERC721ExceededMaxBatchMint')
+        .to.be.revertedWithCustomError(factory, 'ERC721ExceededMaxBatchMint')
         .withArgs(5001n, 5000n);
         .withArgs(5001n, 5000n);
     });
     });
 
 
     it('cannot use single minting during construction', async function () {
     it('cannot use single minting during construction', async function () {
-      const { interface } = await ethers.getContractFactory('$ERC721ConsecutiveNoConstructorMintMock');
+      const factory = await ethers.getContractFactory('$ERC721ConsecutiveNoConstructorMintMock');
 
 
       await expect(
       await expect(
         ethers.deployContract('$ERC721ConsecutiveNoConstructorMintMock', [name, symbol]),
         ethers.deployContract('$ERC721ConsecutiveNoConstructorMintMock', [name, symbol]),
-      ).to.be.revertedWithCustomError({ interface }, 'ERC721ForbiddenMint');
+      ).to.be.revertedWithCustomError(factory, 'ERC721ForbiddenMint');
     });
     });
 
 
     it('cannot use single minting during construction', async function () {
     it('cannot use single minting during construction', async function () {
-      const { interface } = await ethers.getContractFactory('$ERC721ConsecutiveNoConstructorMintMock');
+      const factory = await ethers.getContractFactory('$ERC721ConsecutiveNoConstructorMintMock');
 
 
       await expect(
       await expect(
         ethers.deployContract('$ERC721ConsecutiveNoConstructorMintMock', [name, symbol]),
         ethers.deployContract('$ERC721ConsecutiveNoConstructorMintMock', [name, symbol]),
-      ).to.be.revertedWithCustomError({ interface }, 'ERC721ForbiddenMint');
+      ).to.be.revertedWithCustomError(factory, 'ERC721ForbiddenMint');
     });
     });
 
 
     it('consecutive mint not compatible with enumerability', async function () {
     it('consecutive mint not compatible with enumerability', async function () {
-      const { interface } = await ethers.getContractFactory('$ERC721ConsecutiveEnumerableMock');
+      const factory = await ethers.getContractFactory('$ERC721ConsecutiveEnumerableMock');
 
 
       await expect(
       await expect(
         ethers.deployContract('$ERC721ConsecutiveEnumerableMock', [name, symbol, [receiver], [100n]]),
         ethers.deployContract('$ERC721ConsecutiveEnumerableMock', [name, symbol, [receiver], [100n]]),
-      ).to.be.revertedWithCustomError({ interface }, 'ERC721EnumerableForbiddenBatchMint');
+      ).to.be.revertedWithCustomError(factory, 'ERC721EnumerableForbiddenBatchMint');
     });
     });
   });
   });
 });
 });

+ 3 - 2
test/utils/Address.test.js

@@ -126,8 +126,9 @@ describe('Address', function () {
       });
       });
 
 
       it('reverts when function does not exist', async function () {
       it('reverts when function does not exist', async function () {
-        const interface = new ethers.Interface(['function mockFunctionDoesNotExist()']);
-        const call = interface.encodeFunctionData('mockFunctionDoesNotExist');
+        const call = new ethers.Interface(['function mockFunctionDoesNotExist()']).encodeFunctionData(
+          'mockFunctionDoesNotExist',
+        );
 
 
         await expect(this.mock.$functionCall(this.target, call)).to.be.revertedWithCustomError(this.mock, 'FailedCall');
         await expect(this.mock.$functionCall(this.target, call)).to.be.revertedWithCustomError(this.mock, 'FailedCall');
       });
       });

+ 2 - 2
test/utils/Create2.test.js

@@ -14,13 +14,13 @@ async function fixture() {
   // We use a vesting wallet, with 3 constructor arguments.
   // We use a vesting wallet, with 3 constructor arguments.
   const constructorByteCode = await ethers
   const constructorByteCode = await ethers
     .getContractFactory('VestingWallet')
     .getContractFactory('VestingWallet')
-    .then(({ bytecode, interface }) => ethers.concat([bytecode, interface.encodeDeploy([other.address, 0n, 0n])]));
+    .then(factory => ethers.concat([factory.bytecode, factory.interface.encodeDeploy([other.address, 0n, 0n])]));
 
 
   // Bytecode for deploying a contract that has no constructor log.
   // Bytecode for deploying a contract that has no constructor log.
   // Here we use the Create2 helper factory.
   // Here we use the Create2 helper factory.
   const constructorLessBytecode = await ethers
   const constructorLessBytecode = await ethers
     .getContractFactory('$Create2')
     .getContractFactory('$Create2')
-    .then(({ bytecode, interface }) => ethers.concat([bytecode, interface.encodeDeploy([])]));
+    .then(factory => ethers.concat([factory.bytecode, factory.interface.encodeDeploy([])]));
 
 
   const mockFactory = await ethers.getContractFactory('ConstructorMock');
   const mockFactory = await ethers.getContractFactory('ConstructorMock');
 
 

+ 3 - 5
test/utils/cryptography/ECDSA.test.js

@@ -26,7 +26,6 @@ describe('ECDSA', function () {
 
 
     it('with long signature', async function () {
     it('with long signature', async function () {
       await expect(
       await expect(
-        // eslint-disable-next-line max-len
         this.mock.$recover(
         this.mock.$recover(
           TEST_MESSAGE,
           TEST_MESSAGE,
           '0x01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789',
           '0x01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789',
@@ -61,7 +60,6 @@ describe('ECDSA', function () {
       });
       });
 
 
       it('reverts with invalid signature', async function () {
       it('reverts with invalid signature', async function () {
-        // eslint-disable-next-line max-len
         const signature =
         const signature =
           '0x332ce75a821c982f9127538858900d87d3ec1f9f737338ad67cad133fa48feff48e6fa0c18abc62e42820f05943e47af3e9fbe306ce74d64094bdf1691ee53e01c';
           '0x332ce75a821c982f9127538858900d87d3ec1f9f737338ad67cad133fa48feff48e6fa0c18abc62e42820f05943e47af3e9fbe306ce74d64094bdf1691ee53e01c';
         await expect(this.mock.$recover(TEST_MESSAGE, signature)).to.be.revertedWithCustomError(
         await expect(this.mock.$recover(TEST_MESSAGE, signature)).to.be.revertedWithCustomError(
@@ -73,7 +71,7 @@ describe('ECDSA', function () {
 
 
     describe('with v=27 signature', function () {
     describe('with v=27 signature', function () {
       const signer = '0x2cc1166f6212628A0deEf2B33BEFB2187D35b86c';
       const signer = '0x2cc1166f6212628A0deEf2B33BEFB2187D35b86c';
-      // eslint-disable-next-line max-len
+
       const signatureWithoutV =
       const signatureWithoutV =
         '0x5d99b6f7f6d1f73d1a26497f2b1c89b24c0993913f86e9a2d02cd69887d9c94f3c880358579d811b21dd1b7fd9bb01c1d81d10e69f0384e675c32b39643be892';
         '0x5d99b6f7f6d1f73d1a26497f2b1c89b24c0993913f86e9a2d02cd69887d9c94f3c880358579d811b21dd1b7fd9bb01c1d81d10e69f0384e675c32b39643be892';
 
 
@@ -133,7 +131,7 @@ describe('ECDSA', function () {
 
 
     describe('with v=28 signature', function () {
     describe('with v=28 signature', function () {
       const signer = '0x1E318623aB09Fe6de3C9b8672098464Aeda9100E';
       const signer = '0x1E318623aB09Fe6de3C9b8672098464Aeda9100E';
-      // eslint-disable-next-line max-len
+
       const signatureWithoutV =
       const signatureWithoutV =
         '0x331fe75a821c982f9127538858900d87d3ec1f9f737338ad67cad133fa48feff48e6fa0c18abc62e42820f05943e47af3e9fbe306ce74d64094bdf1691ee53e0';
         '0x331fe75a821c982f9127538858900d87d3ec1f9f737338ad67cad133fa48feff48e6fa0c18abc62e42820f05943e47af3e9fbe306ce74d64094bdf1691ee53e0';
 
 
@@ -193,7 +191,7 @@ describe('ECDSA', function () {
 
 
     it('reverts with high-s value signature', async function () {
     it('reverts with high-s value signature', async function () {
       const message = '0xb94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9';
       const message = '0xb94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9';
-      // eslint-disable-next-line max-len
+
       const highSSignature =
       const highSSignature =
         '0xe742ff452d41413616a5bf43fe15dd88294e983d3d36206c2712f39083d638bde0a0fc89be718fbc1033e1d30d78be1c68081562ed2e97af876f286f3453231d1b';
         '0xe742ff452d41413616a5bf43fe15dd88294e983d3d36206c2712f39083d638bde0a0fc89be718fbc1033e1d30d78be1c68081562ed2e97af876f286f3453231d1b';
 
 

+ 2 - 2
test/utils/introspection/SupportsInterface.behavior.js

@@ -103,8 +103,8 @@ function shouldSupportInterfaces(interfaces = []) {
     describe('when the interfaceId is supported', function () {
     describe('when the interfaceId is supported', function () {
       it('uses less than 30k gas', async function () {
       it('uses less than 30k gas', async function () {
         for (const k of interfaces) {
         for (const k of interfaces) {
-          const interface = INTERFACE_IDS[k] ?? k;
-          expect(await this.contractUnderTest.supportsInterface.estimateGas(interface)).to.lte(30_000n);
+          const interfaceId = INTERFACE_IDS[k] ?? k;
+          expect(await this.contractUnderTest.supportsInterface.estimateGas(interfaceId)).to.lte(30_000n);
         }
         }
       });
       });