From 1d20817bc3e1c584ae35f558163b616b9db32968 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 19:29:02 +0200 Subject: [PATCH 01/29] Update main ESLint config to flat config format --- .eslintrc.js | 38 -- eslint.config.mjs | 32 ++ package.json | 10 +- packages/base/package.json | 4 +- packages/browser/package.json | 4 +- packages/commonjs/package.json | 4 +- packages/jest/package.json | 4 +- packages/mocha/package.json | 4 +- packages/nodejs/package.json | 4 +- packages/typescript/package.json | 4 +- ...nerate-configs.js => generate-configs.mjs} | 29 +- scripts/validate-configs.js | 2 + tsconfig.json | 21 + yarn.lock | 397 +++++++----------- 14 files changed, 248 insertions(+), 309 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 eslint.config.mjs rename scripts/{generate-configs.js => generate-configs.mjs} (80%) create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 49195331..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,38 +0,0 @@ -module.exports = { - root: true, - - parserOptions: { - ecmaVersion: 2018, - }, - - extends: [ - '@metamask/eslint-config', - '@metamask/eslint-config-nodejs', - '@metamask/eslint-config-jest', - ], - - rules: { - 'import-x/no-dynamic-require': 'off', - 'import-x/no-nodejs-modules': 'off', - 'n/global-require': 'off', - 'n/no-process-exit': 'off', - 'n/no-sync': 'off', - 'n/no-unpublished-require': 'off', - }, - - overrides: [ - { - files: ['**/*.test.js'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2022, - }, - - rules: { - 'no-shadow': 'off', - }, - }, - ], - - ignorePatterns: ['!.eslintrc.js'], -}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..b378c67b --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,32 @@ +// @ts-check + +/** + * @type {import('eslint').Linter.Config[]} + */ +const config = [ + // TODO: + // extends: [ + // '@metamask/eslint-config', + // '@metamask/eslint-config-nodejs', + // '@metamask/eslint-config-jest', + // ], + + { + languageOptions: { + ecmaVersion: 2022, + }, + + rules: { + 'import-x/no-dynamic-require': 'off', + 'import-x/no-nodejs-modules': 'off', + 'n/global-require': 'off', + 'n/no-process-exit': 'off', + 'n/no-sync': 'off', + 'n/no-unpublished-require': 'off', + }, + + ignores: ['!.eslint.config.mjs'], + } +]; + +export default config; diff --git a/package.json b/package.json index 938b5cf5..88ea5bcf 100644 --- a/package.json +++ b/package.json @@ -10,24 +10,23 @@ "packages/*" ], "scripts": { - "generate": "node ./scripts/generate-configs.js", + "generate": "node scripts/generate-configs.mjs", "lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:config-validation", "lint:changelogs": "yarn workspaces foreach --parallel --verbose run lint:changelog", - "lint:config-validation": "node ./scripts/validate-configs.js", + "lint:config-validation": "node scripts/validate-configs.mjs", "lint:eslint": "yarn eslint . --ext ts,js", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write && yarn lint:config-validation --write", "lint:misc": "prettier '**/*.json' '!**/rules-snapshot.json' '**/*.md' '!**/CHANGELOG.md' '**/*.yml' '!.yarnrc.yml' --ignore-path .gitignore", "test": "vitest" }, "devDependencies": { - "@eslint/eslintrc": "^3.0.2", - "@eslint/js": "^8.57.0", + "@eslint/js": "^9.11.0", "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "@metamask/eslint-config-nodejs": "^13.0.0", "@metamask/utils": "^9.1.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jest": "^27.9.0", @@ -38,6 +37,7 @@ "globals": "^15.0.0", "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.18", + "typescript": "~5.4.5", "vite": "^5.4.7", "vitest": "^2.1.1" }, diff --git a/packages/base/package.json b/packages/base/package.json index 9e3e4f74..e0a832f2 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jsdoc": "^47.0.2", @@ -33,7 +33,7 @@ "vitest": "^2.1.1" }, "peerDependencies": { - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jsdoc": ">=43.0.7 <48", diff --git a/packages/browser/package.json b/packages/browser/package.json index cb9a395d..2c00111e 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jsdoc": "^47.0.2", @@ -33,7 +33,7 @@ }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0" + "eslint": "^9.11.0" }, "engines": { "node": "^18.18 || >=20" diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index 3734dc01..cbff0d4e 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@metamask/auto-changelog": "^3.4.4", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jsdoc": "^47.0.2", @@ -33,7 +33,7 @@ }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0" + "eslint": "^9.11.0" }, "engines": { "node": "^18.18 || >=20" diff --git a/packages/jest/package.json b/packages/jest/package.json index 552c7dba..6e97f21b 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jest": "^27.9.0", @@ -36,7 +36,7 @@ }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-plugin-jest": "^27.9.0" }, "engines": { diff --git a/packages/mocha/package.json b/packages/mocha/package.json index 84c72013..0258d3de 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jsdoc": "^47.0.2", @@ -35,7 +35,7 @@ }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-plugin-mocha": "^10.4.1" }, "engines": { diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index d3252ad3..fe1ed015 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jsdoc": "^47.0.2", @@ -35,7 +35,7 @@ }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-plugin-n": "^16.6.2" }, "engines": { diff --git a/packages/typescript/package.json b/packages/typescript/package.json index d1c9bf8c..f8a0e023 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -27,7 +27,7 @@ "@metamask/eslint-config": "^13.0.0", "@typescript-eslint/eslint-plugin": "^8.1.0", "@typescript-eslint/parser": "^8.1.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import-x": "^0.5.1", "eslint-plugin-jsdoc": "^47.0.2", @@ -40,7 +40,7 @@ "@metamask/eslint-config": "^13.0.0", "@typescript-eslint/eslint-plugin": "^8.1.0", "@typescript-eslint/parser": "^8.1.0", - "eslint": "^8.57.0", + "eslint": "^9.11.0", "typescript": ">=4.8.4 <5.6" }, "engines": { diff --git a/scripts/generate-configs.js b/scripts/generate-configs.mjs similarity index 80% rename from scripts/generate-configs.js rename to scripts/generate-configs.mjs index 5391b093..0d90ce3b 100644 --- a/scripts/generate-configs.js +++ b/scripts/generate-configs.mjs @@ -1,9 +1,15 @@ -const { promises: fs } = require('fs'); -const globals = require('globals'); -const { resolve } = require('path'); +// @ts-check + +import fs from 'fs/promises'; +import globals from 'globals'; +import { resolve } from 'path'; /** - * @type {Record} + * @typedef {keyof import('globals')} Globals + */ + +/** + * @type {Record} */ const RULES_CONFIG = { 'shared-node-browser': { @@ -45,12 +51,18 @@ const ALL_RULES = [ * Generate rules for a specific ESLint configuration package. * * @param {object} options - Options. - * @param {string} options.environments - The environments to generate rules for. + * @param {Globals[]} options.environments - The environments to + * generate rules for. * @param {string} options.name - The name of the ESLint configuration. - * @returns {Record} The generated rules. + * @returns {Record} The generated + * rules. */ const generateRules = ({ environments, name }) => { + /** + * @type {string[]} + */ const environmentGlobals = []; + for (const environment of environments) { environmentGlobals.push(...Object.keys(globals[environment])); } @@ -82,7 +94,4 @@ const writeRules = async () => { } }; -writeRules().catch((error) => { - console.error(error); - process.exitCode = 1; -}); +await writeRules(); diff --git a/scripts/validate-configs.js b/scripts/validate-configs.js index 0cc37ece..21e269f7 100644 --- a/scripts/validate-configs.js +++ b/scripts/validate-configs.js @@ -1,3 +1,5 @@ +// TODO: This script doesn't work with ESLint flat configs. + const { FlatCompat } = require('@eslint/eslintrc'); const eslintRecommendedConfig = require('@eslint/js').configs.recommended; const { hasProperty } = require('@metamask/utils'); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..b0ada7de --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "allowJs": true, + "esModuleInterop": true, + "exactOptionalPropertyTypes": true, + "forceConsistentCasingInFileNames": true, + "lib": ["ES2023"], + "module": "Node16", + "moduleResolution": "Node16", + "noEmit": true, + "noErrorTruncation": true, + "noUncheckedIndexedAccess": true, + "strict": true, + "target": "ES2022" + }, + "include": [ + "scripts", + "eslint.config.mjs" + ], + "exclude": ["./dist", "**/node_modules"] +} diff --git a/yarn.lock b/yarn.lock index e24d0695..97f2b2b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -596,40 +596,27 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0": - version: 4.11.0 - resolution: "@eslint-community/regexpp@npm:4.11.0" - checksum: 97d2fe46690b69417a551bd19a3dc53b6d9590d2295c43cc4c4e44e64131af541e2f4a44d5c12e87de990403654d3dae9d33600081f3a2f0386b368abc9111ec +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.6.0": + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.6.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 2a6e345429ea8382aaaf3a61f865cae16ed44d31ca917910033c02dc00d505d939f10b81e079fa14d43b51499c640138e153b7e40743c4c094d9df97d4e56f7b - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/config-array@npm:^0.18.0": + version: 0.18.0 + resolution: "@eslint/config-array@npm:0.18.0" 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 + "@eslint/object-schema": ^2.1.4 + debug: ^4.3.1 minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 + checksum: 5ff748e1788745bfb3160c3b3151d62a7c054e336e9fe8069e86cfa6106f3abbd59b24f1253122268295f98c66803e9a7b23d7f947a8c00f62d2060cc44bc7fc languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.0.2": - version: 3.0.2 - resolution: "@eslint/eslintrc@npm:3.0.2" +"@eslint/eslintrc@npm:^3.1.0": + version: 3.1.0 + resolution: "@eslint/eslintrc@npm:3.1.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 @@ -640,14 +627,30 @@ __metadata: js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: 05bf516b60fbb1c1bdc264e081118b2172c5feb071cd665976482c5614b8e7950991175fea3ca6b1f482ced7cb0d0aa34ceab3a508d6bf1ff17b4efc0911e293 + checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4 + languageName: node + linkType: hard + +"@eslint/js@npm:9.11.0, @eslint/js@npm:^9.11.0": + version: 9.11.0 + resolution: "@eslint/js@npm:9.11.0" + checksum: 3e3a8945c7f97b29187f3a6b05c9bb1e3e373d75f94c16b7499565df7c343d5e5e0a14e177bb75c368c6022bb33aa3d17775386a5f39d9085f9f522862d4bd4a + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271 languageName: node linkType: hard -"@eslint/js@npm:8.57.0, @eslint/js@npm:^8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 315dc65b0e9893e2bff139bddace7ea601ad77ed47b4550e73da8c9c2d2766c7a575c3cddf17ef85b8fd6a36ff34f91729d0dcca56e73ca887c10df91a41b0bb +"@eslint/plugin-kit@npm:^0.2.0": + version: 0.2.0 + resolution: "@eslint/plugin-kit@npm:0.2.0" + dependencies: + levn: ^0.4.1 + checksum: 2c358c816575b8338e017cff59bf8b7a186510bc0e6c1b234e889156bfea9e00ce588ce424a0aa5d322e316f1ad08e8fdc7450a7fd966c64cbb911e64eaffbb9 languageName: node linkType: hard @@ -693,17 +696,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" - dependencies: - "@humanwhocodes/object-schema": ^2.0.2 - debug: ^4.3.1 - minimatch: ^3.0.5 - checksum: 861ccce9eaea5de19546653bccf75bf09fe878bc39c3aab00aeee2d2a0e654516adad38dd1098aab5e3af0145bbcbf3f309bdf4d964f8dab9dcd5834ae4c02f2 - languageName: node - linkType: hard - "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" @@ -711,10 +703,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.2 - resolution: "@humanwhocodes/object-schema@npm:2.0.2" - checksum: 2fc11503361b5fb4f14714c700c02a3f4c7c93e9acd6b87a29f62c522d90470f364d6161b03d1cc618b979f2ae02aed1106fd29d302695d8927e2fc8165ba8ee +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.0 + resolution: "@humanwhocodes/retry@npm:0.3.0" + checksum: 4349cb8b60466a000e945fde8f8551cefb01ebba22ead4a92ac7b145f67f5da6b52e5a1e0c53185d732d0a49958ac29327934a4a5ac1d0bc20efb4429a4f7bf7 languageName: node linkType: hard @@ -1070,7 +1062,7 @@ __metadata: resolution: "@metamask/eslint-config-browser@workspace:packages/browser" dependencies: "@metamask/auto-changelog": ^3.4.4 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jsdoc: ^47.0.2 @@ -1079,7 +1071,7 @@ __metadata: vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 languageName: unknown linkType: soft @@ -1088,7 +1080,7 @@ __metadata: resolution: "@metamask/eslint-config-commonjs@workspace:packages/commonjs" dependencies: "@metamask/auto-changelog": ^3.4.4 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jsdoc: ^47.0.2 @@ -1097,7 +1089,7 @@ __metadata: vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 languageName: unknown linkType: soft @@ -1107,7 +1099,7 @@ __metadata: dependencies: "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jest: ^27.9.0 @@ -1118,7 +1110,7 @@ __metadata: vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-plugin-jest: ^27.9.0 languageName: unknown linkType: soft @@ -1129,7 +1121,7 @@ __metadata: dependencies: "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jsdoc: ^47.0.2 @@ -1139,7 +1131,7 @@ __metadata: vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-plugin-mocha: ^10.4.1 languageName: unknown linkType: soft @@ -1150,7 +1142,7 @@ __metadata: dependencies: "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jsdoc: ^47.0.2 @@ -1160,7 +1152,7 @@ __metadata: vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-plugin-n: ^16.6.2 languageName: unknown linkType: soft @@ -1173,7 +1165,7 @@ __metadata: "@metamask/eslint-config": ^13.0.0 "@typescript-eslint/eslint-plugin": ^8.1.0 "@typescript-eslint/parser": ^8.1.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jsdoc: ^47.0.2 @@ -1185,7 +1177,7 @@ __metadata: "@metamask/eslint-config": ^13.0.0 "@typescript-eslint/eslint-plugin": ^8.1.0 "@typescript-eslint/parser": ^8.1.0 - eslint: ^8.57.0 + eslint: ^9.11.0 typescript: ">=4.8.4 <5.6" languageName: unknown linkType: soft @@ -1195,7 +1187,7 @@ __metadata: resolution: "@metamask/eslint-config@workspace:packages/base" dependencies: "@metamask/auto-changelog": ^3.4.4 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jsdoc: ^47.0.2 @@ -1204,7 +1196,7 @@ __metadata: prettier: ^2.7.1 vitest: ^2.1.1 peerDependencies: - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jsdoc: ">=43.0.7 <48" @@ -1932,13 +1924,6 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 - languageName: node - linkType: hard - "@vitest/expect@npm:2.1.1": version: 2.1.1 resolution: "@vitest/expect@npm:2.1.1" @@ -2037,12 +2022,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.3, acorn@npm:^8.9.0": - version: 8.11.3 - resolution: "acorn@npm:8.11.3" +"acorn@npm:^8.12.0": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" bin: acorn: bin/acorn - checksum: 76d8e7d559512566b43ab4aadc374f11f563f0a9e21626dd59cb2888444e9445923ae9f3699972767f18af61df89cd89f5eaaf772d1327b055b45cb829b4a88c + checksum: 677880034aee5bdf7434cc2d25b641d7bedb0b5ef47868a78dadabedccf58e1c5457526d9d8249cd253f2df087e081c3fe7d903b448d8e19e5131a3065b83c07 languageName: node linkType: hard @@ -2604,15 +2589,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: - ms: 2.1.2 + ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 languageName: node linkType: hard @@ -2625,18 +2610,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.6": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: ^2.1.3 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 - languageName: node - linkType: hard - "dedent@npm:^1.0.0": version: 1.5.3 resolution: "dedent@npm:1.5.3" @@ -2870,14 +2843,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escalade@npm:^3.1.2": +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e @@ -3075,13 +3041,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.0.2": + version: 8.0.2 + resolution: "eslint-scope@npm:8.0.2" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e + checksum: bd1e7a0597ec605cf3bc9b35c9e13d7ea6c11fee031b0cada9e8993b0ecf16d81d6f40f1dcd463424af439abf53cd62302ea25707c1599689eb2750d6aa29688 languageName: node linkType: hard @@ -3103,7 +3069,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 @@ -3117,73 +3083,63 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.57.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" +"eslint@npm:^9.11.0": + version: 9.11.0 + resolution: "eslint@npm:9.11.0" 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 + "@eslint-community/regexpp": ^4.11.0 + "@eslint/config-array": ^0.18.0 + "@eslint/eslintrc": ^3.1.0 + "@eslint/js": 9.11.0 + "@eslint/plugin-kit": ^0.2.0 "@humanwhocodes/module-importer": ^1.0.1 + "@humanwhocodes/retry": ^0.3.0 "@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 + eslint-scope: ^8.0.2 + eslint-visitor-keys: ^4.0.0 + espree: ^10.1.0 + esquery: ^1.5.0 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 + file-entry-cache: ^8.0.0 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 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 3a48d7ff85ab420a8447e9810d8087aea5b1df9ef68c9151732b478de698389ee656fd895635b5f2871c89ee5a2652b3f343d11e9db6f8486880374ebc74a2d9 + checksum: d652c30645df59bbbcbce4eb92f69ddb112a28243253826e53485cae760df1c900c2ba3c80a86bd48ad648c9f3c781c173c2b03f750759cfdb3365f44d6c7d01 languageName: node linkType: hard -"espree@npm:^10.0.1": - version: 10.0.1 - resolution: "espree@npm:10.0.1" +"espree@npm:^10.0.1, espree@npm:^10.1.0": + version: 10.1.0 + resolution: "espree@npm:10.1.0" dependencies: - acorn: ^8.11.3 + acorn: ^8.12.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^4.0.0 - checksum: 62c9242a84c6741cebd35ede6574131d0419be7e5559566403e384087d99c4ddb2ced44e32acd44a4c3d8a8a84997cf8d78810c4e46b3fe25a804f1a92dc6b9d - languageName: node - linkType: hard - -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: ^8.9.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.4.1 - checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 + checksum: a4708ab987f6c03734b8738b1588e9f31b2e305e869ca4677c60d82294eb05f7099b6687eb39eeb0913bb2d49bdf0bd0f31c511599ea7ee171281f871a9c897e languageName: node linkType: hard @@ -3197,7 +3153,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": +"esquery@npm:^1.5.0": version: 1.5.0 resolution: "esquery@npm:1.5.0" dependencies: @@ -3360,12 +3316,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + flat-cache: ^4.0.0 + checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f languageName: node linkType: hard @@ -3398,20 +3354,20 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: - flatted: ^3.1.0 - rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 + flatted: ^3.2.9 + keyv: ^4.5.4 + checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6 languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.2.6 - resolution: "flatted@npm:3.2.6" - checksum: 33b87aa88dfa40ca6ee31d7df61712bbbad3d3c05c132c23e59b9b61d34631b337a18ff2b8dc5553acdc871ec72b741e485f78969cf006124a3f57174de29a0e +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94 languageName: node linkType: hard @@ -3518,16 +3474,7 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0": - version: 4.7.3 - resolution: "get-tsconfig@npm:4.7.3" - dependencies: - resolve-pkg-maps: ^1.0.0 - checksum: d124e6900f8beb3b71f215941096075223158d0abb09fb5daa8d83299f6c17d5e95a97d12847b387e9e716bb9bd256a473f918fb8020f3b1acc0b1e5c2830bbf - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.7.3": +"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.3": version: 4.7.5 resolution: "get-tsconfig@npm:4.7.5" dependencies: @@ -3597,7 +3544,7 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0, globals@npm:^13.24.0": +"globals@npm:^13.24.0": version: 13.24.0 resolution: "globals@npm:13.24.0" dependencies: @@ -3647,14 +3594,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.6": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -3750,14 +3690,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.3.1 - resolution: "ignore@npm:5.3.1" - checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 - languageName: node - linkType: hard - -"ignore@npm:^5.3.1": +"ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be @@ -4501,6 +4434,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + "json-parse-even-better-errors@npm:^2.3.0": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" @@ -4538,6 +4478,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: 3.0.1 + checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 + languageName: node + linkType: hard + "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" @@ -4703,7 +4652,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -4712,25 +4661,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.3": - version: 9.0.4 - resolution: "minimatch@npm:9.0.4" - dependencies: - brace-expansion: ^2.0.1 - checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.4": +"minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -4832,13 +4763,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - "ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -4869,27 +4793,7 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^10.0.0": - version: 10.1.0 - resolution: "node-gyp@npm:10.1.0" - dependencies: - env-paths: ^2.2.0 - exponential-backoff: ^3.1.1 - glob: ^10.3.10 - graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^3.0.0 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^4.0.0 - bin: - node-gyp: bin/node-gyp.js - checksum: 72e2ab4b23fc32007a763da94018f58069fc0694bf36115d49a2b195c8831e12cf5dd1e7a3718fa85c06969aedf8fc126722d3b672ec1cb27e06ed33caee3c60 - languageName: node - linkType: hard - -"node-gyp@npm:latest": +"node-gyp@npm:^10.0.0, node-gyp@npm:latest": version: 10.2.0 resolution: "node-gyp@npm:10.2.0" dependencies: @@ -5425,17 +5329,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - "rollup@npm:^4.20.0": version: 4.22.4 resolution: "rollup@npm:4.22.4" @@ -5503,14 +5396,13 @@ __metadata: version: 0.0.0-use.local resolution: "root@workspace:." dependencies: - "@eslint/eslintrc": ^3.0.2 - "@eslint/js": ^8.57.0 + "@eslint/js": ^9.11.0 "@lavamoat/allow-scripts": ^3.0.4 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 "@metamask/eslint-config-nodejs": ^13.0.0 "@metamask/utils": ^9.1.0 - eslint: ^8.57.0 + eslint: ^9.11.0 eslint-config-prettier: ^8.5.0 eslint-plugin-import-x: ^0.5.1 eslint-plugin-jest: ^27.9.0 @@ -5521,6 +5413,7 @@ __metadata: globals: ^15.0.0 prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.18 + typescript: ~5.4.5 vite: ^5.4.7 vitest: ^2.1.1 languageName: unknown @@ -5898,7 +5791,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.1": +"tar@npm:^6.1.11, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -6052,6 +5945,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:~5.4.5": + version: 5.4.5 + resolution: "typescript@npm:5.4.5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 53c879c6fa1e3bcb194b274d4501ba1985894b2c2692fa079db03c5a5a7140587a1e04e1ba03184605d35f439b40192d9e138eb3279ca8eee313c081c8bcd9b0 + languageName: node + linkType: hard + "typescript@npm:~5.5.4": version: 5.5.4 resolution: "typescript@npm:5.5.4" @@ -6062,6 +5965,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@~5.4.5#~builtin": + version: 5.4.5 + resolution: "typescript@patch:typescript@npm%3A5.4.5#~builtin::version=5.4.5&hash=701156" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 2373c693f3b328f3b2387c3efafe6d257b057a142f9a79291854b14ff4d5367d3d730810aee981726b677ae0fd8329b23309da3b6aaab8263dbdccf1da07a3ba + languageName: node + linkType: hard + "typescript@patch:typescript@~5.5.4#~builtin": version: 5.5.4 resolution: "typescript@patch:typescript@npm%3A5.5.4#~builtin::version=5.5.4&hash=701156" From bccb33cf2f813067d1b91cd736b1a8d13cca8b83 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 19:44:48 +0200 Subject: [PATCH 02/29] Bump all related ESLint dependencies --- .prettierrc.js | 1 + package.json | 18 +- packages/base/package.json | 25 +- packages/browser/package.json | 11 +- packages/commonjs/package.json | 11 +- packages/jest/package.json | 16 +- packages/mocha/package.json | 15 +- packages/nodejs/package.json | 15 +- packages/typescript/package.json | 21 +- tsconfig.json | 5 +- yarn.lock | 3017 +++--------------------------- 11 files changed, 363 insertions(+), 2792 deletions(-) diff --git a/.prettierrc.js b/.prettierrc.js index fa85e10c..a3f973e4 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -6,4 +6,5 @@ module.exports = { singleQuote: true, tabWidth: 2, trailingComma: 'all', + plugins: ['prettier-plugin-packagejson'], }; diff --git a/package.json b/package.json index 88ea5bcf..967a5b87 100644 --- a/package.json +++ b/package.json @@ -27,17 +27,17 @@ "@metamask/eslint-config-nodejs": "^13.0.0", "@metamask/utils": "^9.1.0", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jest": "^27.9.0", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-n": "^16.6.2", - "eslint-plugin-prettier": "^4.2.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-n": "^17.10.3", + "eslint-plugin-prettier": "^5.2.1", "fast-deep-equal": "^3.1.3", "globals": "^15.0.0", - "prettier": "^2.7.1", - "prettier-plugin-packagejson": "^2.2.18", - "typescript": "~5.4.5", + "prettier": "^3.3.3", + "prettier-plugin-packagejson": "^2.5.2", + "typescript": "~5.5.4", "vite": "^5.4.7", "vitest": "^2.1.1" }, diff --git a/packages/base/package.json b/packages/base/package.json index e0a832f2..f597239e 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -24,22 +24,21 @@ "devDependencies": { "@metamask/auto-changelog": "^3.4.4", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", - "prettier": "^2.7.1", - "vitest": "^2.1.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-promise": "^7.1.0", + "prettier": "^3.3.3" }, "peerDependencies": { "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jsdoc": ">=43.0.7 <48", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", - "prettier": "^2.7.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-promise": "^7.1.0", + "prettier": "^3.3.3" }, "engines": { "node": "^18.18 || >=20" diff --git a/packages/browser/package.json b/packages/browser/package.json index 2c00111e..7945836a 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -24,12 +24,11 @@ "devDependencies": { "@metamask/auto-changelog": "^3.4.4", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.7.1", - "vitest": "^2.1.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3.3" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index cbff0d4e..f03bdd14 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -24,12 +24,11 @@ "devDependencies": { "@metamask/auto-changelog": "^3.4.4", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.7.1", - "vitest": "^2.1.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3.3" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/jest/package.json b/packages/jest/package.json index 6e97f21b..da39c0c4 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -25,19 +25,17 @@ "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jest": "^27.9.0", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-prettier": "^4.2.1", - "jest": "^29.7.0", - "prettier": "^2.7.1", - "vitest": "^2.1.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3.3" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", - "eslint-plugin-jest": "^27.9.0" + "eslint-plugin-jest": "^28.8.3" }, "engines": { "node": "^18.18 || >=20" diff --git a/packages/mocha/package.json b/packages/mocha/package.json index 0258d3de..f7a6c00f 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -25,18 +25,17 @@ "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-mocha": "^10.4.1", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.7.1", - "vitest": "^2.1.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-mocha": "^10.5.0", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3.3" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", - "eslint-plugin-mocha": "^10.4.1" + "eslint-plugin-mocha": "^10.5.0" }, "engines": { "node": "^18.18 || >=20" diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index fe1ed015..a2a2956f 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -25,18 +25,17 @@ "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-n": "^16.6.2", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.7.1", - "vitest": "^2.1.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-n": "^17.10.3", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3.3" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", - "eslint-plugin-n": "^16.6.2" + "eslint-plugin-n": "^17.10.3" }, "engines": { "node": "^18.18 || >=20" diff --git a/packages/typescript/package.json b/packages/typescript/package.json index f8a0e023..ceacc73c 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -25,21 +25,20 @@ "devDependencies": { "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", - "@typescript-eslint/eslint-plugin": "^8.1.0", - "@typescript-eslint/parser": "^8.1.0", + "@typescript-eslint/eslint-plugin": "^8.6.0", + "@typescript-eslint/parser": "^8.6.0", "eslint": "^9.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import-x": "^0.5.1", - "eslint-plugin-jsdoc": "^47.0.2", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.7.1", - "typescript": "~5.5.4", - "vitest": "^2.1.1" + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3.3", + "typescript": "~5.5.4" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", - "@typescript-eslint/eslint-plugin": "^8.1.0", - "@typescript-eslint/parser": "^8.1.0", + "@typescript-eslint/eslint-plugin": "^8.6.0", + "@typescript-eslint/parser": "^8.6.0", "eslint": "^9.11.0", "typescript": ">=4.8.4 <5.6" }, diff --git a/tsconfig.json b/tsconfig.json index b0ada7de..7b6daa89 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,9 +13,6 @@ "strict": true, "target": "ES2022" }, - "include": [ - "scripts", - "eslint.config.mjs" - ], + "include": ["scripts", "eslint.config.mjs"], "exclude": ["./dist", "**/node_modules"] } diff --git a/yarn.lock b/yarn.lock index 97f2b2b9..25044d0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,415 +12,14 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.24 - checksum: d3ad7b89d973df059c4e8e6d7c972cbeb1bb2f18f002a3bd04ae0707da214cb06cc06929b65aa2313b9347463df2914772298bae8b1d7973f246bb3f2ab3e8f0 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" - dependencies: - "@babel/highlight": ^7.24.7 - picocolors: ^1.0.0 - checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.25.2": - version: 7.25.4 - resolution: "@babel/compat-data@npm:7.25.4" - checksum: b12a91d27c3731a4b0bdc9312a50b1911f41f7f728aaf0d4b32486e2257fd2cb2d3ea1a295e98449600c48f2c7883a3196ca77cda1cef7d97a10c2e83d037974 - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.25.0 - "@babel/helper-compilation-targets": ^7.25.2 - "@babel/helper-module-transforms": ^7.25.2 - "@babel/helpers": ^7.25.0 - "@babel/parser": ^7.25.0 - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.2 - "@babel/types": ^7.25.2 - convert-source-map: ^2.0.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.3 - semver: ^6.3.1 - checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a - languageName: node - linkType: hard - -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6, @babel/generator@npm:^7.7.2": - version: 7.25.6 - resolution: "@babel/generator@npm:7.25.6" - dependencies: - "@babel/types": ^7.25.6 - "@jridgewell/gen-mapping": ^0.3.5 - "@jridgewell/trace-mapping": ^0.3.25 - jsesc: ^2.5.1 - checksum: b55975cd664f5602304d868bb34f4ee3bed6f5c7ce8132cd92ff27a46a53a119def28a182d91992e86f75db904f63094a81247703c4dc96e4db0c03fd04bcd68 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" - dependencies: - "@babel/compat-data": ^7.25.2 - "@babel/helper-validator-option": ^7.24.8 - browserslist: ^4.23.1 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" - dependencies: - "@babel/helper-module-imports": ^7.24.7 - "@babel/helper-simple-access": ^7.24.7 - "@babel/helper-validator-identifier": ^7.24.7 - "@babel/traverse": ^7.25.2 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.24.8 - resolution: "@babel/helper-plugin-utils@npm:7.24.8" - checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.0": - version: 7.25.6 - resolution: "@babel/helpers@npm:7.25.6" - dependencies: - "@babel/template": ^7.25.0 - "@babel/types": ^7.25.6 - checksum: 5a548999db82049a5f7ac6de57576b4ed0d386ce07d058151698836ed411eae6230db12535487caeebb68a2ffc964491e8aead62364a5132ab0ae20e8b68e19f - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" - dependencies: - "@babel/helper-validator-identifier": ^7.24.7 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - picocolors: ^1.0.0 - checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/parser@npm:7.25.6" - dependencies: - "@babel/types": ^7.25.6 - bin: - parser: ./bin/babel-parser.js - checksum: 85b237ded09ee43cc984493c35f3b1ff8a83e8dbbb8026b8132e692db6567acc5a1659ec928e4baa25499ddd840d7dae9dee3062be7108fe23ec5f94a8066b1e - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.25.6 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.6" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3b0928e73e42346e8a65760a3ff853c87ad693cdf11bb335a23e895e0b5b1f0601118521b3aff2a6946488a580a63afb6a5b5686153a7678b4dff0e4e4604dd7 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-meta@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.24.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.4" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9b89b8930cd5983f64251d75c9fcdc17a8dc73837d6de12220ff972888ecff4054a6467cf0c423cad242aa96c0f0564a39a0823073728cc02239b80d13f02230 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/parser": ^7.25.0 - "@babel/types": ^7.25.0 - checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": - version: 7.25.6 - resolution: "@babel/traverse@npm:7.25.6" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.25.6 - "@babel/parser": ^7.25.6 - "@babel/template": ^7.25.0 - "@babel/types": ^7.25.6 - debug: ^4.3.1 - globals: ^11.1.0 - checksum: 11ee47269aa4356f2d6633a05b9af73405b5ed72c09378daf644289b686ef852035a6ac9aa410f601991993c6bbf72006795b5478283b78eb1ca77874ada7737 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.3.3": - version: 7.25.6 - resolution: "@babel/types@npm:7.25.6" - dependencies: - "@babel/helper-string-parser": ^7.24.8 - "@babel/helper-validator-identifier": ^7.24.7 - to-fast-properties: ^2.0.0 - checksum: 9b2f84ff3f874ad05b0b9bf06862c56f478b65781801f82296b4cc01bee39e79c20a7c0a06959fed0ee582c8267e1cb21638318655c5e070b0287242a844d1c9 - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 - languageName: node - linkType: hard - -"@es-joy/jsdoccomment@npm:~0.41.0": - version: 0.41.0 - resolution: "@es-joy/jsdoccomment@npm:0.41.0" +"@es-joy/jsdoccomment@npm:~0.48.0": + version: 0.48.0 + resolution: "@es-joy/jsdoccomment@npm:0.48.0" dependencies: comment-parser: 1.4.1 - esquery: ^1.5.0 - jsdoc-type-pratt-parser: ~4.0.0 - checksum: cfe0714027ff8fa82dad8c84f75af3f6df9d6797d60c289b8d3c259c5375c134bd5ca630beba0daed3adceef01a74f19e05052018f6b66ad6a4f483adf599c39 + esquery: ^1.6.0 + jsdoc-type-pratt-parser: ~4.1.0 + checksum: dc9aa1b30b43e06d94053287c2062ebff1147ed1627497c1f20f15a534744784b5adf9189e437ee62595585576112c99cff7833e84c2373614447672a4cc294f languageName: node linkType: hard @@ -724,298 +323,13 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: ^5.3.1 - find-up: ^4.1.0 - get-package-type: ^0.1.0 - js-yaml: ^3.13.1 - resolve-from: ^5.0.0 - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 - languageName: node - linkType: hard - -"@jest/console@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/console@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - slash: ^3.0.0 - checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 - languageName: node - linkType: hard - -"@jest/core@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/core@npm:29.7.0" - dependencies: - "@jest/console": ^29.7.0 - "@jest/reporters": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - ci-info: ^3.2.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-changed-files: ^29.7.0 - jest-config: ^29.7.0 - jest-haste-map: ^29.7.0 - jest-message-util: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-resolve-dependencies: ^29.7.0 - jest-runner: ^29.7.0 - jest-runtime: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - jest-watcher: ^29.7.0 - micromatch: ^4.0.4 - pretty-format: ^29.7.0 - slash: ^3.0.0 - strip-ansi: ^6.0.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d - languageName: node - linkType: hard - -"@jest/environment@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/environment@npm:29.7.0" - dependencies: - "@jest/fake-timers": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.7.0 - checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: ^29.6.3 - checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed - languageName: node - linkType: hard - -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: ^29.7.0 - jest-snapshot: ^29.7.0 - checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/fake-timers@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@sinonjs/fake-timers": ^10.0.2 - "@types/node": "*" - jest-message-util: ^29.7.0 - jest-mock: ^29.7.0 - jest-util: ^29.7.0 - checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 - languageName: node - linkType: hard - -"@jest/globals@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": ^29.7.0 - "@jest/expect": ^29.7.0 - "@jest/types": ^29.6.3 - jest-mock: ^29.7.0 - checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 - languageName: node - linkType: hard - -"@jest/reporters@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/reporters@npm:29.7.0" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - "@types/node": "*" - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^6.0.0 - istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.1.3 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - jest-worker: ^29.7.0 - slash: ^3.0.0 - string-length: ^4.0.1 - strip-ansi: ^6.0.0 - v8-to-istanbul: ^9.0.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/schemas@npm:29.6.3" - dependencies: - "@sinclair/typebox": ^0.27.8 - checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 - languageName: node - linkType: hard - -"@jest/source-map@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/source-map@npm:29.6.3" - dependencies: - "@jridgewell/trace-mapping": ^0.3.18 - callsites: ^3.0.0 - graceful-fs: ^4.2.9 - checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-result@npm:29.7.0" - dependencies: - "@jest/console": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-sequencer@npm:29.7.0" - dependencies: - "@jest/test-result": ^29.7.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - slash: ^3.0.0 - checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd - languageName: node - linkType: hard - -"@jest/transform@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/transform@npm:29.7.0" - dependencies: - "@babel/core": ^7.11.6 - "@jest/types": ^29.6.3 - "@jridgewell/trace-mapping": ^0.3.18 - babel-plugin-istanbul: ^6.1.1 - chalk: ^4.0.0 - convert-source-map: ^2.0.0 - fast-json-stable-stringify: ^2.1.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-util: ^29.7.0 - micromatch: ^4.0.4 - pirates: ^4.0.4 - slash: ^3.0.0 - write-file-atomic: ^4.0.2 - checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab - languageName: node - linkType: hard - -"@jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": ^29.6.3 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.5 - resolution: "@jridgewell/gen-mapping@npm:0.3.5" - dependencies: - "@jridgewell/set-array": ^1.2.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.24 - checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" - dependencies: - "@jridgewell/resolve-uri": ^3.1.0 - "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 - languageName: node - linkType: hard - "@lavamoat/aa@npm:^4.2.0": version: 4.2.0 resolution: "@lavamoat/aa@npm:4.2.0" @@ -1063,12 +377,11 @@ __metadata: dependencies: "@metamask/auto-changelog": ^3.4.4 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-prettier: ^4.2.1 - prettier: ^2.7.1 - vitest: ^2.1.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-prettier: ^5.2.1 + prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -1081,12 +394,11 @@ __metadata: dependencies: "@metamask/auto-changelog": ^3.4.4 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-prettier: ^4.2.1 - prettier: ^2.7.1 - vitest: ^2.1.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-prettier: ^5.2.1 + prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -1100,18 +412,16 @@ __metadata: "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jest: ^27.9.0 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-prettier: ^4.2.1 - jest: ^29.7.0 - prettier: ^2.7.1 - vitest: ^2.1.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jest: ^28.8.3 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-prettier: ^5.2.1 + prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 - eslint-plugin-jest: ^27.9.0 + eslint-plugin-jest: ^28.8.3 languageName: unknown linkType: soft @@ -1122,17 +432,16 @@ __metadata: "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-mocha: ^10.4.1 - eslint-plugin-prettier: ^4.2.1 - prettier: ^2.7.1 - vitest: ^2.1.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-mocha: ^10.5.0 + eslint-plugin-prettier: ^5.2.1 + prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 - eslint-plugin-mocha: ^10.4.1 + eslint-plugin-mocha: ^10.5.0 languageName: unknown linkType: soft @@ -1143,17 +452,16 @@ __metadata: "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-n: ^16.6.2 - eslint-plugin-prettier: ^4.2.1 - prettier: ^2.7.1 - vitest: ^2.1.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-n: ^17.10.3 + eslint-plugin-prettier: ^5.2.1 + prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 - eslint-plugin-n: ^16.6.2 + eslint-plugin-n: ^17.10.3 languageName: unknown linkType: soft @@ -1163,20 +471,19 @@ __metadata: dependencies: "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 - "@typescript-eslint/eslint-plugin": ^8.1.0 - "@typescript-eslint/parser": ^8.1.0 + "@typescript-eslint/eslint-plugin": ^8.6.0 + "@typescript-eslint/parser": ^8.6.0 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-prettier: ^4.2.1 - prettier: ^2.7.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-prettier: ^5.2.1 + prettier: ^3.3.3 typescript: ~5.5.4 - vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 - "@typescript-eslint/eslint-plugin": ^8.1.0 - "@typescript-eslint/parser": ^8.1.0 + "@typescript-eslint/eslint-plugin": ^8.6.0 + "@typescript-eslint/parser": ^8.6.0 eslint: ^9.11.0 typescript: ">=4.8.4 <5.6" languageName: unknown @@ -1188,21 +495,20 @@ __metadata: dependencies: "@metamask/auto-changelog": ^3.4.4 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-prettier: ^4.2.1 - eslint-plugin-promise: ^6.1.1 - prettier: ^2.7.1 - vitest: ^2.1.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-prettier: ^5.2.1 + eslint-plugin-promise: ^7.1.0 + prettier: ^3.3.3 peerDependencies: eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jsdoc: ">=43.0.7 <48" - eslint-plugin-prettier: ^4.2.1 - eslint-plugin-promise: ^6.1.1 - prettier: ^2.7.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-prettier: ^5.2.1 + eslint-plugin-promise: ^7.1.0 + prettier: ^3.3.3 languageName: unknown linkType: soft @@ -1509,72 +815,6 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" - dependencies: - type-detect: 4.0.8 - checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" - dependencies: - "@sinonjs/commons": ^3.0.0 - checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.1.14": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" - dependencies: - "@babel/types": ^7.0.0 - checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.6 - resolution: "@types/babel__traverse@npm:7.20.6" - dependencies: - "@babel/types": ^7.20.7 - checksum: 2bdc65eb62232c2d5c1086adeb0c31e7980e6fd7e50a3483b4a724a1a1029c84d9cb59749cf8de612f9afa2bc14c85b8f50e64e21f8a4398fa77eb9059a4283c - languageName: node - linkType: hard - "@types/debug@npm:^4.1.7": version: 4.1.7 resolution: "@types/debug@npm:4.1.7" @@ -1591,109 +831,29 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.0": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" - dependencies: - "@types/node": "*" - checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" - dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.9": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 22.5.5 - resolution: "@types/node@npm:22.5.5" - dependencies: - undici-types: ~6.19.2 - checksum: 1f788966ff7df07add0af3481fb68c7fe5091cc72a265c671432abb443788ddacca4ca6378af64fe100c20f857c4d80170d358e66c070171fcea0d4adb1b45b1 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.12": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc +"@types/estree@npm:^1.0.0": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 languageName: node linkType: hard -"@types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" - dependencies: - "@types/yargs-parser": "*" - checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 +"@types/ms@npm:*": + version: 0.7.31 + resolution: "@types/ms@npm:0.7.31" + checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.1.0" +"@typescript-eslint/eslint-plugin@npm:^8.6.0": + version: 8.6.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.6.0" dependencies: "@eslint-community/regexpp": ^4.10.0 - "@typescript-eslint/scope-manager": 8.1.0 - "@typescript-eslint/type-utils": 8.1.0 - "@typescript-eslint/utils": 8.1.0 - "@typescript-eslint/visitor-keys": 8.1.0 + "@typescript-eslint/scope-manager": 8.6.0 + "@typescript-eslint/type-utils": 8.6.0 + "@typescript-eslint/utils": 8.6.0 + "@typescript-eslint/visitor-keys": 8.6.0 graphemer: ^1.4.0 ignore: ^5.3.1 natural-compare: ^1.4.0 @@ -1704,139 +864,68 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: e50e552ca531a4587e7976199320614758fe80c6c83c7f6780d8fe121856e99462cbee319136475be4b9ccec2ea13af347cf5a8e97c234f7c0afd28cb9867aca + checksum: 6acab71c3066b86ba19b081c44b7060df4468d932813a94ad3b60f0f88b78b97f3555a0605814e32f8399737c0789e72cb509a6cf6d70e4823a7cc8769d06fa4 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/parser@npm:8.1.0" +"@typescript-eslint/parser@npm:^8.6.0": + version: 8.6.0 + resolution: "@typescript-eslint/parser@npm:8.6.0" dependencies: - "@typescript-eslint/scope-manager": 8.1.0 - "@typescript-eslint/types": 8.1.0 - "@typescript-eslint/typescript-estree": 8.1.0 - "@typescript-eslint/visitor-keys": 8.1.0 + "@typescript-eslint/scope-manager": 8.6.0 + "@typescript-eslint/types": 8.6.0 + "@typescript-eslint/typescript-estree": 8.6.0 + "@typescript-eslint/visitor-keys": 8.6.0 debug: ^4.3.4 peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 17337b6b70f9b1f95bd161bf4e7a358714b2eca1e377857e0de0ba23be576fcb939cac74c497e447935cb771705f41e2dc7771b5e74308d73d9f29f05e6f1b3f - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.42.1": - version: 5.42.1 - resolution: "@typescript-eslint/scope-manager@npm:5.42.1" - dependencies: - "@typescript-eslint/types": 5.42.1 - "@typescript-eslint/visitor-keys": 5.42.1 - checksum: cfad5f04328fae4bb6d965a94c980ac2f6fa0eee6183e9bed6d7ebdb067f01a0a9a3b5500fc3638d5e287f46f4412aa462e238c610c1fb96b794b83c575c7fb4 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:7.12.0": - version: 7.12.0 - resolution: "@typescript-eslint/scope-manager@npm:7.12.0" - dependencies: - "@typescript-eslint/types": 7.12.0 - "@typescript-eslint/visitor-keys": 7.12.0 - checksum: 563de8a96b1c879e2cc84ea8e24a2a0f01aeafdc3ac477712f6e195f9f3639b978a8f86fd9841bd84d80e6d305b1c32cc5079baadd8fe24cd2603eba6ee792da + checksum: d2e1c1ef4b908d2c028b6e1c72b42c0ae0d9f4dab0dea4ea8e0a36a194ec2171833e7bed36e55e0feadad3e06eef1c6da16168a3687d0e2182b80229dc994e2d languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/scope-manager@npm:8.1.0" +"@typescript-eslint/scope-manager@npm:8.6.0": + version: 8.6.0 + resolution: "@typescript-eslint/scope-manager@npm:8.6.0" dependencies: - "@typescript-eslint/types": 8.1.0 - "@typescript-eslint/visitor-keys": 8.1.0 - checksum: 7febb23f480802ecce3c99988392ce77187f14b06e384de0d246880493e58de878d3c4eac465899fe2dcd55617e71c6b978547844402f05d2f152c25dcbc8b19 + "@typescript-eslint/types": 8.6.0 + "@typescript-eslint/visitor-keys": 8.6.0 + checksum: d0a305c659eab02ad36265e77a1e30574a72a3e251b24c503537abd5b1dbe45a1db7d63dc73bdcc7fb4951f671cb5cbaedca1130490c764dd05f91e90c5cbbf9 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/type-utils@npm:8.1.0" +"@typescript-eslint/type-utils@npm:8.6.0": + version: 8.6.0 + resolution: "@typescript-eslint/type-utils@npm:8.6.0" dependencies: - "@typescript-eslint/typescript-estree": 8.1.0 - "@typescript-eslint/utils": 8.1.0 + "@typescript-eslint/typescript-estree": 8.6.0 + "@typescript-eslint/utils": 8.6.0 debug: ^4.3.4 ts-api-utils: ^1.3.0 peerDependenciesMeta: typescript: optional: true - checksum: 226938167fb43c39df98d7fd875404fab862783113e9fac381725b4b45bdbbc6e8bc618057ecfd9a0a5ce724c9bf673ccdf10c9832eae22852d5576bcf119a47 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.42.1": - version: 5.42.1 - resolution: "@typescript-eslint/types@npm:5.42.1" - checksum: b0eb3df3792dd0e447abcf2b4fd79b2eaa6f944242d00afa8ef2d9f892ea63e52f200e7cb1758ddbc46154aa6764cec8bc796ed96f7554457a20db976f9f2089 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:7.12.0": - version: 7.12.0 - resolution: "@typescript-eslint/types@npm:7.12.0" - checksum: 56068abd1bf563fceb6ddea3d6b72893ae51fb527e5821e03aecc679f5dd6ff378f2adf445ccc404655163152f586bf04856a09b020635f57af4ce2fd9b5d40a - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/types@npm:8.1.0" - checksum: 90c5177e2afe8be97fbeda49702cc37a17dd0c3537f9b43d72ae22fcdf76f505676579ced13e2cd2708e4cc4f7347872c76a0c8751f354de6874417f0fadbb76 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.42.1": - version: 5.42.1 - resolution: "@typescript-eslint/typescript-estree@npm:5.42.1" - dependencies: - "@typescript-eslint/types": 5.42.1 - "@typescript-eslint/visitor-keys": 5.42.1 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: dfd3e20d41ba4b574a52d82cc40b38708b8c2c4277d6304a8d914fe2a4a9ce8779f4d79fdac140e77a3afd3c6a2a7e3f31620dc427cabd04e4e906bb0ca3a468 + checksum: d395745176cc13d96759e4ad7b698058f4fc24b62d0bd3fe603f49546f369cbf3e46fefbcc6069c33b1b0d825e033e0a5a972fd0b1a05f7ce9e8588154a02b93 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.12.0": - version: 7.12.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.12.0" - dependencies: - "@typescript-eslint/types": 7.12.0 - "@typescript-eslint/visitor-keys": 7.12.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - minimatch: ^9.0.4 - semver: ^7.6.0 - ts-api-utils: ^1.3.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 16c75e117920432bc782da9efa0a2051ffa95c4b31b1f5cd613799aeeffd6de0f5ca5ff736ee2da5a8d3034d2ebb9c5240736d0737f118ed7c774b8b2ac87845 +"@typescript-eslint/types@npm:8.6.0": + version: 8.6.0 + resolution: "@typescript-eslint/types@npm:8.6.0" + checksum: 5bf0078735b5d2804e1019ff17e9f221af3735fe7b9f4a77a41cba0998e77eebb2c152575bd45a264cb35d7a9db899799c1a10faa29f536c28a804420fb9f870 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.1.0" +"@typescript-eslint/typescript-estree@npm:8.6.0": + version: 8.6.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.6.0" dependencies: - "@typescript-eslint/types": 8.1.0 - "@typescript-eslint/visitor-keys": 8.1.0 + "@typescript-eslint/types": 8.6.0 + "@typescript-eslint/visitor-keys": 8.6.0 debug: ^4.3.4 - globby: ^11.1.0 + fast-glob: ^3.3.2 is-glob: ^4.0.3 minimatch: ^9.0.4 semver: ^7.6.0 @@ -1844,83 +933,31 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 5174ac942436d251037a2b3f8935337234ca538674ccfbe755b429ea4f7589c2eb6cd2dbcae5a5a9aee4f7a58fc47ec38b644d3838fbf0510634a4e60bc8f38b + checksum: 7a0e817b5c381f8937a8e4bf17df5ce43e1269ee150ee635cc8bb8867cb899fcca630eb8f6f1dfdd74ddd296741ac7e1e26ef6c9dc4f99cdcf49311956fbb385 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/utils@npm:8.1.0" +"@typescript-eslint/utils@npm:8.6.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.1.0": + version: 8.6.0 + resolution: "@typescript-eslint/utils@npm:8.6.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.1.0 - "@typescript-eslint/types": 8.1.0 - "@typescript-eslint/typescript-estree": 8.1.0 + "@typescript-eslint/scope-manager": 8.6.0 + "@typescript-eslint/types": 8.6.0 + "@typescript-eslint/typescript-estree": 8.6.0 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: b4532aaf76a1314a08f95be7682066c20cd6ff9baa078975f5c4e379c113befd69ace697aead692717a6c5396385bcb7886fec8454c7dd811f875fe08d67b8dd - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^5.10.0": - version: 5.42.1 - resolution: "@typescript-eslint/utils@npm:5.42.1" - dependencies: - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.42.1 - "@typescript-eslint/types": 5.42.1 - "@typescript-eslint/typescript-estree": 5.42.1 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 9f1c429a602dad4ba7a52df00924aab6033854234a1e1bf699a3e5b48455b5fdc1a41de459a7f11a3ccfed1528831ecb95fc7e54d30be7d8cccbb689f885fdac - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^7.4.0": - version: 7.12.0 - resolution: "@typescript-eslint/utils@npm:7.12.0" - dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 7.12.0 - "@typescript-eslint/types": 7.12.0 - "@typescript-eslint/typescript-estree": 7.12.0 - peerDependencies: - eslint: ^8.56.0 - checksum: f9b5afe9e70ff908f348de54d130b2157df8af0f9815cf7df0830bd85df249d3b34da8b03ad3bea84ed0c2ea1743caeae68355fbcca9a7da8df30bc76bc1506c - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.42.1": - version: 5.42.1 - resolution: "@typescript-eslint/visitor-keys@npm:5.42.1" - dependencies: - "@typescript-eslint/types": 5.42.1 - eslint-visitor-keys: ^3.3.0 - checksum: d36c59da7bf3b3c150c12cbe4b0331edc15253f59599ec3d8b873b2a3d9fc7a4fea11490c1b20d972afcdc9c842deb5ada527ea9c538aa7e87555699d9a59f24 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:7.12.0": - version: 7.12.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.12.0" - dependencies: - "@typescript-eslint/types": 7.12.0 - eslint-visitor-keys: ^3.4.3 - checksum: 4352d910d87435457bb3fe2a6766fe702c31c0706789b4c478bd16c99bed7aa16654856e61ff14ecea2802030f96fa40d478bd57c205ac53f1f130577b7423b2 + checksum: dbb2efe47c291d36d5ec147f8c8fe62d27e9db2a3368aefd9019fd1e118bd1a54c8b13b990bb0941c9510bc4e2049b336e9a26d6414a6239c020e36baa8797e2 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.1.0" +"@typescript-eslint/visitor-keys@npm:8.6.0": + version: 8.6.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.6.0" dependencies: - "@typescript-eslint/types": 8.1.0 + "@typescript-eslint/types": 8.6.0 eslint-visitor-keys: ^3.4.3 - checksum: 4dedea4009ee6e782ca14d0a1bfd2d6e763c0834fde976a99a8c32befba7dffbaa694c27a3d5dae8aea628278f96e06199eb6a7fb0bf19511815825f76eb04b4 + checksum: de60bb42674818af46b85a94f668e93dc0432e8d7d94f0508dadab41181192fad2c2701ec3533d404e9bd40c8e92384fd7bcdc82fc45584b7323195ceaf32caf languageName: node linkType: hard @@ -2062,15 +1099,6 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -2085,15 +1113,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -2103,13 +1122,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 - languageName: node - linkType: hard - "ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" @@ -2117,16 +1129,6 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 - languageName: node - linkType: hard - "are-docs-informative@npm:^0.0.2": version: 0.0.2 resolution: "are-docs-informative@npm:0.0.2" @@ -2134,15 +1136,6 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: ~1.0.2 - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 - languageName: node - linkType: hard - "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -2150,13 +1143,6 @@ __metadata: languageName: node linkType: hard -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -2164,85 +1150,6 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "babel-jest@npm:29.7.0" - dependencies: - "@jest/transform": ^29.7.0 - "@types/babel__core": ^7.1.14 - babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.6.3 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - slash: ^3.0.0 - peerDependencies: - "@babel/core": ^7.8.0 - checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-plugin-jest-hoist@npm:29.6.3" - dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.1.14 - "@types/babel__traverse": ^7.0.6 - checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" - dependencies: - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-bigint": ^7.8.3 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-import-attributes": ^7.24.7 - "@babel/plugin-syntax-import-meta": ^7.10.4 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 9f93fac975eaba296c436feeca1031ca0539143c4066eaf5d1ba23525a31850f03b651a1049caea7287df837a409588c8252c15627ad3903f17864c8e25ed64b - languageName: node - linkType: hard - -"babel-preset-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-preset-jest@npm:29.6.3" - dependencies: - babel-plugin-jest-hoist: ^29.6.3 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb - languageName: node - linkType: hard - "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -2290,44 +1197,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.1": - version: 4.23.3 - resolution: "browserslist@npm:4.23.3" - dependencies: - caniuse-lite: ^1.0.30001646 - electron-to-chromium: ^1.5.4 - node-releases: ^2.0.18 - update-browserslist-db: ^1.1.0 - bin: - browserslist: cli.js - checksum: 7906064f9970aeb941310b2fcb8b4ace4a1b50aa657c986677c6f1553a8cabcc94ee9c5922f715baffbedaa0e6cf0831b6fed7b059dde6873a4bfadcbe069c7e - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.2 - resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb - languageName: node - linkType: hard - -"builtin-modules@npm:^3.3.0": - version: 3.3.0 - resolution: "builtin-modules@npm:3.3.0" - checksum: db021755d7ed8be048f25668fe2117620861ef6703ea2c65ed2779c9e3636d5c3b82325bd912244293959ff3ae303afa3471f6a15bf5060c103e4cc3a839749d - languageName: node - linkType: hard - -"builtins@npm:^5.0.0, builtins@npm:^5.0.1": +"builtins@npm:^5.0.0": version: 5.0.1 resolution: "builtins@npm:5.0.1" dependencies: @@ -2370,27 +1240,6 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001663 - resolution: "caniuse-lite@npm:1.0.30001663" - checksum: 489a642feb6826a0fc7cfd7dbc35a3341cc1439eafdf0dae79338cf9033c5d9eddaedacbef7935acaddbb3c226a51097ed53d66dc6d8128cd6938c6763e1bbc4 - languageName: node - linkType: hard - "chai@npm:^5.1.1": version: 5.1.1 resolution: "chai@npm:5.1.1" @@ -2404,17 +1253,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - "chalk@npm:^4.0.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -2425,13 +1263,6 @@ __metadata: languageName: node linkType: hard -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 - languageName: node - linkType: hard - "check-error@npm:^2.1.1": version: 2.1.1 resolution: "check-error@npm:2.1.1" @@ -2446,20 +1277,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^1.0.0": - version: 1.4.1 - resolution: "cjs-module-lexer@npm:1.4.1" - checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 - languageName: node - linkType: hard - "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -2485,29 +1302,6 @@ __metadata: languageName: node linkType: hard -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -2517,13 +1311,6 @@ __metadata: languageName: node linkType: hard -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" @@ -2545,13 +1332,6 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 - languageName: node - linkType: hard - "crc-32@npm:^1.2.0": version: 1.2.2 resolution: "crc-32@npm:1.2.2" @@ -2561,23 +1341,6 @@ __metadata: languageName: node linkType: hard -"create-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "create-jest@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.9 - jest-config: ^29.7.0 - jest-util: ^29.7.0 - prompts: ^2.0.1 - bin: - create-jest: bin/create-jest.js - checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -2589,7 +1352,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -2610,18 +1373,6 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.5.3 - resolution: "dedent@npm:1.5.3" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a - languageName: node - linkType: hard - "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -2636,13 +1387,6 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.2.2": - version: 4.3.1 - resolution: "deepmerge@npm:4.3.1" - checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 - languageName: node - linkType: hard - "detect-indent@npm:^7.0.1": version: 7.0.1 resolution: "detect-indent@npm:7.0.1" @@ -2650,13 +1394,6 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - "detect-newline@npm:^4.0.0": version: 4.0.1 resolution: "detect-newline@npm:4.0.1" @@ -2664,13 +1401,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.6.3": - version: 29.6.3 - resolution: "diff-sequences@npm:29.6.3" - checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa - languageName: node - linkType: hard - "diff@npm:^5.0.0": version: 5.0.0 resolution: "diff@npm:5.0.0" @@ -2703,20 +1433,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.4": - version: 1.5.27 - resolution: "electron-to-chromium@npm:1.5.27" - checksum: 1a32103306b92732979db40f299e013b94b284a80745c26390ceaee2bf76ef71a4167b1ababc17dc3d24cf4c27d5aa95dcf7c256c55c329164f726553dc9ea9a - languageName: node - linkType: hard - -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -2740,6 +1456,16 @@ __metadata: languageName: node linkType: hard +"enhanced-resolve@npm:^5.17.0": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -2754,12 +1480,10 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 +"es-module-lexer@npm:^1.5.3": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f languageName: node linkType: hard @@ -2843,27 +1567,13 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.1.2": +"escalade@npm:^3.1.1": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -2882,14 +1592,14 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^8.5.0": - version: 8.10.0 - resolution: "eslint-config-prettier@npm:8.10.0" +"eslint-config-prettier@npm:^9.1.0": + version: 9.1.0 + resolution: "eslint-config-prettier@npm:9.1.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 153266badd477e49b0759816246b2132f1dbdb6c7f313ca60a9af5822fd1071c2bc5684a3720d78b725452bbac04bb130878b2513aea5e72b1b792de5a69fec8 + checksum: 9229b768c879f500ee54ca05925f31b0c0bafff3d9f5521f98ff05127356de78c81deb9365c86a5ec4efa990cb72b74df8612ae15965b14136044c73e1f6a907 languageName: node linkType: hard @@ -2917,127 +1627,122 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import-x@npm:^0.5.1": - version: 0.5.1 - resolution: "eslint-plugin-import-x@npm:0.5.1" +"eslint-plugin-import-x@npm:^4.3.0": + version: 4.3.0 + resolution: "eslint-plugin-import-x@npm:4.3.0" dependencies: - "@typescript-eslint/utils": ^7.4.0 + "@typescript-eslint/utils": ^8.1.0 debug: ^4.3.4 doctrine: ^3.0.0 eslint-import-resolver-node: ^0.3.9 get-tsconfig: ^4.7.3 is-glob: ^4.0.3 minimatch: ^9.0.3 - semver: ^7.6.0 - tslib: ^2.6.2 + semver: ^7.6.3 + stable-hash: ^0.0.4 + tslib: ^2.6.3 peerDependencies: - eslint: ^8.56.0 || ^9.0.0-0 - checksum: 680cdccafe21491bb257e820b09975242309c507bd464afc53f61f237743c5c4989334ed272646916f4e6a41625866afc6fcdebccf47ff1d650b8a189b9ea6cb + eslint: ^8.57.0 || ^9.0.0 + checksum: f3b813ca4627cc5984a499c7cea5196e7597a8742eeafa5fa8512d452e92e06a9a48635d451c35bf44ef1472dde74a43c7f0cdb672fb3c55dfd9b1dbc46f373e languageName: node linkType: hard -"eslint-plugin-jest@npm:^27.9.0": - version: 27.9.0 - resolution: "eslint-plugin-jest@npm:27.9.0" +"eslint-plugin-jest@npm:^28.8.3": + version: 28.8.3 + resolution: "eslint-plugin-jest@npm:28.8.3" dependencies: - "@typescript-eslint/utils": ^5.10.0 + "@typescript-eslint/utils": ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 || ^7.0.0 - eslint: ^7.0.0 || ^8.0.0 + "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 jest: "*" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true jest: optional: true - checksum: e2a4b415105408de28ad146818fcc6f4e122f6a39c6b2216ec5c24a80393f1390298b20231b0467bc5fd730f6e24b05b89e1a6a3ce651fc159aa4174ecc233d0 + checksum: e371fcbe2127a403824b6c23b66f6b2e2cc54074c3c70a9965d48bdcdfb461670965a7d7cdddab68f09e703d3a09a281d05591b1cb4315f5246d27fd8baa84ac languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:^47.0.2": - version: 47.0.2 - resolution: "eslint-plugin-jsdoc@npm:47.0.2" +"eslint-plugin-jsdoc@npm:^50.2.4": + version: 50.2.4 + resolution: "eslint-plugin-jsdoc@npm:50.2.4" dependencies: - "@es-joy/jsdoccomment": ~0.41.0 + "@es-joy/jsdoccomment": ~0.48.0 are-docs-informative: ^0.0.2 comment-parser: 1.4.1 - debug: ^4.3.4 + debug: ^4.3.6 escape-string-regexp: ^4.0.0 - esquery: ^1.5.0 - is-builtin-module: ^3.2.1 - semver: ^7.5.4 + espree: ^10.1.0 + esquery: ^1.6.0 + parse-imports: ^2.1.1 + semver: ^7.6.3 spdx-expression-parse: ^4.0.0 + synckit: ^0.9.1 peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 39ad7b746add79b0140d23b6c15c58df7f8e0912cbe10678f3acd76f0da38e2de9db39f741866dfa2ea698cc2f09c7f2e020f6136b52a22cd0b937e44722f1d4 + checksum: 41fba3564ecea3ae47a003faf6acbc848cbad18e5cb1930943804db8ed6b5ae133088fcdaf2a0c6dfb2344a545813090e6ab91b3561543213ab10558893adba6 languageName: node linkType: hard -"eslint-plugin-mocha@npm:^10.4.1": - version: 10.4.1 - resolution: "eslint-plugin-mocha@npm:10.4.1" +"eslint-plugin-mocha@npm:^10.5.0": + version: 10.5.0 + resolution: "eslint-plugin-mocha@npm:10.5.0" dependencies: eslint-utils: ^3.0.0 globals: ^13.24.0 rambda: ^7.4.0 peerDependencies: eslint: ">=7.0.0" - checksum: 26076c832899608de1f960325c4cfb4520cc644280e58879cec83596e699196c43568d67bf71880a1bd22fd1a59879645cf1690ba422ee40cbc24b77c3bfdda3 + checksum: 07fc975c7768b19de4d2883307177f10e94b6318a4971dbc3c52edcea01977a59a54b85fe564974e43b29b12b821b06afd48d95b631e84d203c44676778aa019 languageName: node linkType: hard -"eslint-plugin-n@npm:^16.6.2": - version: 16.6.2 - resolution: "eslint-plugin-n@npm:16.6.2" +"eslint-plugin-n@npm:^17.10.3": + version: 17.10.3 + resolution: "eslint-plugin-n@npm:17.10.3" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - builtins: ^5.0.1 + enhanced-resolve: ^5.17.0 eslint-plugin-es-x: ^7.5.0 get-tsconfig: ^4.7.0 - globals: ^13.24.0 + globals: ^15.8.0 ignore: ^5.2.4 - is-builtin-module: ^3.2.1 - is-core-module: ^2.12.1 - minimatch: ^3.1.2 - resolve: ^1.22.2 + minimatch: ^9.0.5 semver: ^7.5.3 peerDependencies: - eslint: ">=7.0.0" - checksum: 3b468da0038cf25af582608983491b33ac2d481b6a94a0ff2e715d3b85e1ff8cb93df4cd67b689d520bea1bfb8f2b717f01606bf6b2ea19fe8f9c0999ea7057d + eslint: ">=8.23.0" + checksum: bf81911c588773b4f77d1acf3c5b2514818423d14f11320078f1c4362c78400dfc6fdfa8fc0523a24f1d04b93849656033383dc666f2c8ef3e1c5ec9bcd4e926 languageName: node linkType: hard -"eslint-plugin-prettier@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" +"eslint-plugin-prettier@npm:^5.2.1": + version: 5.2.1 + resolution: "eslint-plugin-prettier@npm:5.2.1" dependencies: prettier-linter-helpers: ^1.0.0 + synckit: ^0.9.1 peerDependencies: - eslint: ">=7.28.0" - prettier: ">=2.0.0" + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: "*" + prettier: ">=3.0.0" peerDependenciesMeta: + "@types/eslint": + optional: true eslint-config-prettier: optional: true - checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 + checksum: 812f4d1596dcd3a55963212dfbd818a4b38f880741aac75f6869aa740dc5d934060674d3b85d10ff9fec424defa61967dbdef26b8a893a92c9b51880264ed0d9 languageName: node linkType: hard -"eslint-plugin-promise@npm:^6.1.1": - version: 6.1.1 - resolution: "eslint-plugin-promise@npm:6.1.1" +"eslint-plugin-promise@npm:^7.1.0": + version: 7.1.0 + resolution: "eslint-plugin-promise@npm:7.1.0" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 46b9a4f79dae5539987922afc27cc17cbccdecf4f0ba19c0ccbf911b0e31853e9f39d9959eefb9637461b52772afa1a482f1f87ff16c1ba38bdb6fcf21897e9a - languageName: node - linkType: hard - -"eslint-scope@npm:^5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + checksum: 6b4d28cbb33847c732262aee8a1784cdfc37754e91611ac0c86bfd8dd07fbba966a953a212ae49f91de1f4a31b28d65153935b0f183ce14647b31451706f722b languageName: node linkType: hard @@ -3138,27 +1843,17 @@ __metadata: dependencies: acorn: ^8.12.0 acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^4.0.0 - checksum: a4708ab987f6c03734b8738b1588e9f31b2e305e869ca4677c60d82294eb05f7099b6687eb39eeb0913bb2d49bdf0bd0f31c511599ea7ee171281f871a9c897e - languageName: node - linkType: hard - -"esprima@npm:^4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + eslint-visitor-keys: ^4.0.0 + checksum: a4708ab987f6c03734b8738b1588e9f31b2e305e869ca4677c60d82294eb05f7099b6687eb39eeb0913bb2d49bdf0bd0f31c511599ea7ee171281f871a9c897e languageName: node linkType: hard -"esquery@npm:^1.5.0": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.5.0, esquery@npm:^1.6.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: ^5.1.0 - checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 languageName: node linkType: hard @@ -3171,13 +1866,6 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -3213,7 +1901,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0, execa@npm:^5.1.1": +"execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -3230,26 +1918,6 @@ __metadata: languageName: node linkType: hard -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 - languageName: node - linkType: hard - -"expect@npm:^29.7.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": ^29.7.0 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c - languageName: node - linkType: hard - "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -3271,7 +1939,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": +"fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -3284,7 +1952,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": +"fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb @@ -3307,15 +1975,6 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 - languageName: node - linkType: hard - "file-entry-cache@npm:^8.0.0": version: 8.0.0 resolution: "file-entry-cache@npm:8.0.0" @@ -3334,16 +1993,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -3399,14 +2048,7 @@ __metadata: languageName: node linkType: hard -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -3416,7 +2058,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin, fsevents@patch:fsevents@~2.3.3#~builtin": +"fsevents@patch:fsevents@~2.3.2#~builtin, fsevents@patch:fsevents@~2.3.3#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=18f3a7" dependencies: @@ -3432,13 +2074,6 @@ __metadata: languageName: node linkType: hard -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -3453,13 +2088,6 @@ __metadata: languageName: node linkType: hard -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - "get-stdin@npm:^9.0.0": version: 9.0.0 resolution: "get-stdin@npm:9.0.0" @@ -3523,27 +2151,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - 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 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - "globals@npm:^13.24.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -3560,24 +2167,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^15.0.0": - version: 15.0.0 - resolution: "globals@npm:15.0.0" - checksum: c2f409354415a6d24125e6d80089bd9d72b0c7a7cfba83fd555d217560743a1022a9d6e937dc2ab866f3c4e665c81ad4efde91c5a8e3f31d05b60a4831271068 - languageName: node - linkType: hard - -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.2.9 - ignore: ^5.2.0 - merge2: ^1.4.1 - slash: ^3.0.0 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 +"globals@npm:^15.0.0, globals@npm:^15.8.0": + version: 15.9.0 + resolution: "globals@npm:15.9.0" + checksum: 32c4470ffcc26db3ddbc579ddf968b74c26462d1a268039980c2fa2e107090fd442a7a7445d953dc4ee874f68846e713066c5a8e63d146fd9349cd1fc5a6f63d languageName: node linkType: hard @@ -3594,7 +2187,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -3608,13 +2201,6 @@ __metadata: languageName: node linkType: hard -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -3640,13 +2226,6 @@ __metadata: languageName: node linkType: hard -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 - languageName: node - linkType: hard - "http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" @@ -3707,18 +2286,6 @@ __metadata: languageName: node linkType: hard -"import-local@npm:^3.0.2": - version: 3.2.0 - resolution: "import-local@npm:3.2.0" - dependencies: - pkg-dir: ^4.2.0 - resolve-cwd: ^3.0.0 - bin: - import-local-fixture: fixtures/cli.js - checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 - languageName: node - linkType: hard - "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -3733,23 +2300,6 @@ __metadata: languageName: node linkType: hard -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -3760,23 +2310,7 @@ __metadata: languageName: node linkType: hard -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-builtin-module@npm:^3.2.1": - version: 3.2.1 - resolution: "is-builtin-module@npm:3.2.1" - dependencies: - builtin-modules: ^3.3.0 - checksum: e8f0ffc19a98240bda9c7ada84d846486365af88d14616e737d280d378695c8c448a621dcafc8332dbf0fcd0a17b0763b845400709963fa9151ddffece90ae88 - languageName: node - linkType: hard - -"is-core-module@npm:^2.12.1, is-core-module@npm:^2.13.0, is-core-module@npm:^2.8.1": +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.8.1": version: 2.13.1 resolution: "is-core-module@npm:2.13.1" dependencies: @@ -3799,13 +2333,6 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 - languageName: node - linkType: hard - "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -3857,546 +2384,23 @@ __metadata: languageName: node linkType: hard -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" - dependencies: - "@babel/core": ^7.23.9 - "@babel/parser": ^7.23.9 - "@istanbuljs/schema": ^0.1.3 - istanbul-lib-coverage: ^3.2.0 - semver: ^7.5.4 - checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" - dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^4.0.0 - supports-color: ^7.1.0 - checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" - dependencies: - debug: ^4.1.1 - istanbul-lib-coverage: ^3.0.0 - source-map: ^0.6.1 - checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" - dependencies: - html-escaper: ^2.0.0 - istanbul-lib-report: ^3.0.0 - checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 - languageName: node - linkType: hard - -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" - dependencies: - "@isaacs/cliui": ^8.0.2 - "@pkgjs/parseargs": ^0.11.0 - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 - languageName: node - linkType: hard - -"jest-changed-files@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-changed-files@npm:29.7.0" - dependencies: - execa: ^5.0.0 - jest-util: ^29.7.0 - p-limit: ^3.1.0 - checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 - languageName: node - linkType: hard - -"jest-circus@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-circus@npm:29.7.0" - dependencies: - "@jest/environment": ^29.7.0 - "@jest/expect": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - dedent: ^1.0.0 - is-generator-fn: ^2.0.0 - jest-each: ^29.7.0 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-runtime: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - p-limit: ^3.1.0 - pretty-format: ^29.7.0 - pure-rand: ^6.0.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 - languageName: node - linkType: hard - -"jest-cli@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-cli@npm:29.7.0" - dependencies: - "@jest/core": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - create-jest: ^29.7.0 - exit: ^0.1.2 - import-local: ^3.0.2 - jest-config: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - yargs: ^17.3.1 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 - languageName: node - linkType: hard - -"jest-config@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-config@npm:29.7.0" - dependencies: - "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.7.0 - "@jest/types": ^29.6.3 - babel-jest: ^29.7.0 - chalk: ^4.0.0 - ci-info: ^3.2.0 - deepmerge: ^4.2.2 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-circus: ^29.7.0 - jest-environment-node: ^29.7.0 - jest-get-type: ^29.6.3 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-runner: ^29.7.0 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - micromatch: ^4.0.4 - parse-json: ^5.2.0 - pretty-format: ^29.7.0 - slash: ^3.0.0 - strip-json-comments: ^3.1.1 - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff - languageName: node - linkType: hard - -"jest-diff@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-diff@npm:29.7.0" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.6.3 - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 - languageName: node - linkType: hard - -"jest-docblock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-docblock@npm:29.7.0" - dependencies: - detect-newline: ^3.0.0 - checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 - languageName: node - linkType: hard - -"jest-each@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-each@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - chalk: ^4.0.0 - jest-get-type: ^29.6.3 - jest-util: ^29.7.0 - pretty-format: ^29.7.0 - checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-node@npm:29.7.0" - dependencies: - "@jest/environment": ^29.7.0 - "@jest/fake-timers": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-mock: ^29.7.0 - jest-util: ^29.7.0 - checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 - languageName: node - linkType: hard - -"jest-haste-map@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-haste-map@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@types/graceful-fs": ^4.1.3 - "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.3.2 - graceful-fs: ^4.2.9 - jest-regex-util: ^29.6.3 - jest-util: ^29.7.0 - jest-worker: ^29.7.0 - micromatch: ^4.0.4 - walker: ^1.0.8 - dependenciesMeta: - fsevents: - optional: true - checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-leak-detector@npm:29.7.0" - dependencies: - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.7.0 - jest-get-type: ^29.6.3 - pretty-format: ^29.7.0 - checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd - languageName: node - linkType: hard - -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.3 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.7.0 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 - languageName: node - linkType: hard - -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - jest-util: ^29.7.0 - checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-regex-util@npm:29.6.3" - checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve-dependencies@npm:29.7.0" - dependencies: - jest-regex-util: ^29.6.3 - jest-snapshot: ^29.7.0 - checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 - languageName: node - linkType: hard - -"jest-resolve@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve@npm:29.7.0" - dependencies: - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-pnp-resolver: ^1.2.2 - jest-util: ^29.7.0 - jest-validate: ^29.7.0 - resolve: ^1.20.0 - resolve.exports: ^2.0.0 - slash: ^3.0.0 - checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 - languageName: node - linkType: hard - -"jest-runner@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runner@npm:29.7.0" - dependencies: - "@jest/console": ^29.7.0 - "@jest/environment": ^29.7.0 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.13.1 - graceful-fs: ^4.2.9 - jest-docblock: ^29.7.0 - jest-environment-node: ^29.7.0 - jest-haste-map: ^29.7.0 - jest-leak-detector: ^29.7.0 - jest-message-util: ^29.7.0 - jest-resolve: ^29.7.0 - jest-runtime: ^29.7.0 - jest-util: ^29.7.0 - jest-watcher: ^29.7.0 - jest-worker: ^29.7.0 - p-limit: ^3.1.0 - source-map-support: 0.5.13 - checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb - languageName: node - linkType: hard - -"jest-runtime@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runtime@npm:29.7.0" - dependencies: - "@jest/environment": ^29.7.0 - "@jest/fake-timers": ^29.7.0 - "@jest/globals": ^29.7.0 - "@jest/source-map": ^29.6.3 - "@jest/test-result": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - cjs-module-lexer: ^1.0.0 - collect-v8-coverage: ^1.0.0 - glob: ^7.1.3 - graceful-fs: ^4.2.9 - jest-haste-map: ^29.7.0 - jest-message-util: ^29.7.0 - jest-mock: ^29.7.0 - jest-regex-util: ^29.6.3 - jest-resolve: ^29.7.0 - jest-snapshot: ^29.7.0 - jest-util: ^29.7.0 - slash: ^3.0.0 - strip-bom: ^4.0.0 - checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e - languageName: node - linkType: hard - -"jest-snapshot@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-snapshot@npm:29.7.0" - dependencies: - "@babel/core": ^7.11.6 - "@babel/generator": ^7.7.2 - "@babel/plugin-syntax-jsx": ^7.7.2 - "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.7.0 - "@jest/transform": ^29.7.0 - "@jest/types": ^29.6.3 - babel-preset-current-node-syntax: ^1.0.0 - chalk: ^4.0.0 - expect: ^29.7.0 - graceful-fs: ^4.2.9 - jest-diff: ^29.7.0 - jest-get-type: ^29.6.3 - jest-matcher-utils: ^29.7.0 - jest-message-util: ^29.7.0 - jest-util: ^29.7.0 - natural-compare: ^1.4.0 - pretty-format: ^29.7.0 - semver: ^7.5.3 - checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad - languageName: node - linkType: hard - -"jest-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-util@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca - languageName: node - linkType: hard - -"jest-validate@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-validate@npm:29.7.0" - dependencies: - "@jest/types": ^29.6.3 - camelcase: ^6.2.0 - chalk: ^4.0.0 - jest-get-type: ^29.6.3 - leven: ^3.1.0 - pretty-format: ^29.7.0 - checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae - languageName: node - linkType: hard - -"jest-watcher@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-watcher@npm:29.7.0" - dependencies: - "@jest/test-result": ^29.7.0 - "@jest/types": ^29.6.3 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - emittery: ^0.13.1 - jest-util: ^29.7.0 - string-length: ^4.0.1 - checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f - languageName: node - linkType: hard - -"jest-worker@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-worker@npm:29.7.0" - dependencies: - "@types/node": "*" - jest-util: ^29.7.0 - merge-stream: ^2.0.0 - supports-color: ^8.0.0 - checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 - languageName: node - linkType: hard - -"jest@npm:^29.7.0": - version: 29.7.0 - resolution: "jest@npm:29.7.0" - dependencies: - "@jest/core": ^29.7.0 - "@jest/types": ^29.6.3 - import-local: ^3.0.2 - jest-cli: ^29.7.0 - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 languageName: node linkType: hard @@ -4418,19 +2422,10 @@ __metadata: languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:~4.0.0": - version: 4.0.0 - resolution: "jsdoc-type-pratt-parser@npm:4.0.0" - checksum: af0629c9517e484be778d8564440fec8de5b7610e0c9c88a3ba4554321364faf72b46689c8d8845faa12c0718437a9ed97e231977efc0f2d50e8a2dbad807eb3 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d +"jsdoc-type-pratt-parser@npm:~4.1.0": + version: 4.1.0 + resolution: "jsdoc-type-pratt-parser@npm:4.1.0" + checksum: e7642a508b090b1bdf17775383000ed71013c38e1231c1e576e5374636e8baf7c3fae8bf0252f5e1d3397d95efd56e8c8a5dd1a0de76d05d1499cbcb3c325bc3 languageName: node linkType: hard @@ -4441,13 +2436,6 @@ __metadata: languageName: node linkType: hard -"json-parse-even-better-errors@npm:^2.3.0": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f - languageName: node - linkType: hard - "json-parse-even-better-errors@npm:^3.0.0": version: 3.0.0 resolution: "json-parse-even-better-errors@npm:3.0.0" @@ -4469,15 +2457,6 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.3": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 - languageName: node - linkType: hard - "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -4487,20 +2466,6 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -4511,22 +2476,6 @@ __metadata: languageName: node linkType: hard -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -4559,15 +2508,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" - dependencies: - yallist: ^3.0.2 - checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb - languageName: node - linkType: hard - "magic-string@npm:^0.30.11": version: 0.30.11 resolution: "magic-string@npm:0.30.11" @@ -4577,15 +2517,6 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" - dependencies: - semver: ^7.5.3 - checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a - languageName: node - linkType: hard - "make-fetch-happen@npm:^13.0.0": version: 13.0.0 resolution: "make-fetch-happen@npm:13.0.0" @@ -4605,15 +2536,6 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -4652,7 +2574,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -4661,7 +2583,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": +"minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -4813,20 +2735,6 @@ __metadata: languageName: node linkType: hard -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e - languageName: node - linkType: hard - -"node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 - languageName: node - linkType: hard - "nopt@npm:^7.0.0": version: 7.2.0 resolution: "nopt@npm:7.2.0" @@ -4850,13 +2758,6 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - "npm-install-checks@npm:^6.0.0": version: 6.3.0 resolution: "npm-install-checks@npm:6.3.0" @@ -4906,15 +2807,6 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - "onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" @@ -4938,16 +2830,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": +"p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -4956,15 +2839,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" @@ -4983,13 +2857,6 @@ __metadata: languageName: node linkType: hard -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -4999,15 +2866,13 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.2.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" +"parse-imports@npm:^2.1.1": + version: 2.2.1 + resolution: "parse-imports@npm:2.2.1" dependencies: - "@babel/code-frame": ^7.0.0 - error-ex: ^1.3.1 - json-parse-even-better-errors: ^2.3.0 - lines-and-columns: ^1.1.6 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + es-module-lexer: ^1.5.3 + slashes: ^3.0.12 + checksum: 0b5cedd10b6b45eea4f365bf047074a874d90e952597f83d4a8a00f1edece180b5870e42401b5531088916836f98c20eecbddc608d8717eb4a6be99a41f2b6fd languageName: node linkType: hard @@ -5018,13 +2883,6 @@ __metadata: languageName: node linkType: hard -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -5070,36 +2928,20 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": +"picocolors@npm:^1.1.0": version: 1.1.0 resolution: "picocolors@npm:1.1.0" checksum: a64d653d3a188119ff45781dfcdaeedd7625583f45280aea33fcb032c7a0d3959f2368f9b192ad5e8aade75b74dbd954ffe3106c158509a45e4c18ab379a2acd languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf languageName: node linkType: hard -"pirates@npm:^4.0.4": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - "pony-cause@npm:^2.1.10": version: 2.1.10 resolution: "pony-cause@npm:2.1.10" @@ -5134,22 +2976,22 @@ __metadata: languageName: node linkType: hard -"prettier-plugin-packagejson@npm:^2.2.18": - version: 2.5.0 - resolution: "prettier-plugin-packagejson@npm:2.5.0" +"prettier-plugin-packagejson@npm:^2.5.2": + version: 2.5.2 + resolution: "prettier-plugin-packagejson@npm:2.5.2" dependencies: - sort-package-json: 2.10.0 - synckit: 0.9.0 + sort-package-json: 2.10.1 + synckit: 0.9.1 peerDependencies: prettier: ">= 1.16.0" peerDependenciesMeta: prettier: optional: true - checksum: 0b05b02e96173abc1220d11a5ae6fbdefd45823ad86e5aba70bd52377f555db82fbe41c67bdfb186fa3f4c2ef5d12d4803b7215cb301533829a8389b411bb99a + checksum: f280d69327a468cd104c72a81134258d3573e56d697a88a5c4498c8d02cecda9a27d9eb3f1d29cc726491782eb3f279c9d41ecf8364a197e20b239c5ccfd0269 languageName: node linkType: hard -"prettier@npm:^2.7.1, prettier@npm:^2.8.8": +"prettier@npm:^2.8.8": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: @@ -5158,14 +3000,12 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.7.0": - version: 29.7.0 - resolution: "pretty-format@npm:29.7.0" - dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 +"prettier@npm:^3.3.3": + version: 3.3.3 + resolution: "prettier@npm:3.3.3" + bin: + prettier: bin/prettier.cjs + checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e languageName: node linkType: hard @@ -5200,16 +3040,6 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d - languageName: node - linkType: hard - "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -5217,13 +3047,6 @@ __metadata: languageName: node linkType: hard -"pure-rand@npm:^6.0.0": - version: 6.1.0 - resolution: "pure-rand@npm:6.1.0" - checksum: 8d53bc02bed99eca0b65b505090152ee7e9bd67dd74f8ff32ba1c883b87234067c5bf68d2614759fb217d82594d7a92919e6df80f97885e7b12b42af4bd3316a - languageName: node - linkType: hard - "rambda@npm:^7.4.0": version: 7.5.0 resolution: "rambda@npm:7.5.0" @@ -5231,13 +3054,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 - languageName: node - linkType: hard - "read-cmd-shim@npm:^4.0.0": version: 4.0.0 resolution: "read-cmd-shim@npm:4.0.0" @@ -5252,15 +3068,6 @@ __metadata: languageName: node linkType: hard -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: ^5.0.0 - checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 - languageName: node - linkType: hard - "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -5268,13 +3075,6 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - "resolve-pkg-maps@npm:^1.0.0": version: 1.0.0 resolution: "resolve-pkg-maps@npm:1.0.0" @@ -5282,14 +3082,7 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^2.0.0": - version: 2.0.2 - resolution: "resolve.exports@npm:2.0.2" - checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 - languageName: node - linkType: hard - -"resolve@npm:1.22.8, resolve@npm:^1.20.0, resolve@npm:^1.22.2, resolve@npm:^1.22.4": +"resolve@npm:1.22.8, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -5302,7 +3095,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@1.22.8#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.2#~builtin, resolve@patch:resolve@^1.22.4#~builtin": +"resolve@patch:resolve@1.22.8#~builtin, resolve@patch:resolve@^1.22.4#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b" dependencies: @@ -5403,17 +3196,17 @@ __metadata: "@metamask/eslint-config-nodejs": ^13.0.0 "@metamask/utils": ^9.1.0 eslint: ^9.11.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import-x: ^0.5.1 - eslint-plugin-jest: ^27.9.0 - eslint-plugin-jsdoc: ^47.0.2 - eslint-plugin-n: ^16.6.2 - eslint-plugin-prettier: ^4.2.1 + eslint-config-prettier: ^9.1.0 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jest: ^28.8.3 + eslint-plugin-jsdoc: ^50.2.4 + eslint-plugin-n: ^17.10.3 + eslint-plugin-prettier: ^5.2.1 fast-deep-equal: ^3.1.3 globals: ^15.0.0 - prettier: ^2.7.1 - prettier-plugin-packagejson: ^2.2.18 - typescript: ~5.4.5 + prettier: ^3.3.3 + prettier-plugin-packagejson: ^2.5.2 + typescript: ~5.5.4 vite: ^5.4.7 vitest: ^2.1.1 languageName: unknown @@ -5433,21 +3226,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 - languageName: node - linkType: hard - -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": - version: 7.6.2 - resolution: "semver@npm:7.6.2" +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" bin: semver: bin/semver.js - checksum: 40f6a95101e8d854357a644da1b8dd9d93ce786d5c6a77227bc69dbb17bea83d0d1d1d7c4cd5920a6df909f48e8bd8a5909869535007f90278289f2451d0292d + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 languageName: node linkType: hard @@ -5474,7 +3258,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.3": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -5488,20 +3272,6 @@ __metadata: languageName: node linkType: hard -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - "slash@npm:^4.0.0": version: 4.0.0 resolution: "slash@npm:4.0.0" @@ -5509,6 +3279,13 @@ __metadata: languageName: node linkType: hard +"slashes@npm:^3.0.12": + version: 3.0.12 + resolution: "slashes@npm:3.0.12" + checksum: 6b68feb5a56d53d76acd4729b0e457f47a0b687877161ca2c05486ec0bc750e0694b37094b2f5f00a339dfe490269292c4197a70da7eba2be47bc56e35f10a60 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -5544,9 +3321,9 @@ __metadata: languageName: node linkType: hard -"sort-package-json@npm:2.10.0": - version: 2.10.0 - resolution: "sort-package-json@npm:2.10.0" +"sort-package-json@npm:2.10.1": + version: 2.10.1 + resolution: "sort-package-json@npm:2.10.1" dependencies: detect-indent: ^7.0.1 detect-newline: ^4.0.0 @@ -5558,7 +3335,7 @@ __metadata: sort-object-keys: ^1.1.3 bin: sort-package-json: cli.js - checksum: 095e5c5075c9799d3d6174f82e963fa3be0a1d193af0be656b651d2e5b563dfc794f46c7aa74e3fc761de3fba76951ad2d3de716cf50b3aca4e938f63edbfcae + checksum: 861d8161565fba322414d70b6be10fb331680549b73399778965be628783833c85c4e02929bcea5a2d96994884b0327dfe2f7c7a79409c901d2582b703f5333d languageName: node linkType: hard @@ -5569,23 +3346,6 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - "spdx-correct@npm:^3.0.0": version: 3.2.0 resolution: "spdx-correct@npm:3.2.0" @@ -5637,13 +3397,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - "ssri@npm:^10.0.0": version: 10.0.5 resolution: "ssri@npm:10.0.5" @@ -5653,12 +3406,10 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: ^2.0.0 - checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 +"stable-hash@npm:^0.0.4": + version: 0.0.4 + resolution: "stable-hash@npm:0.0.4" + checksum: 21c039d21c1cb739cf8342561753a5e007cb95ea682ccd452e76310bbb9c6987a89de8eda023e320b019f3e4691aabda75079cdbb7dadf7ab9013e931f2f23cd languageName: node linkType: hard @@ -5676,16 +3427,6 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: ^1.0.2 - strip-ansi: ^6.0.0 - checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 - languageName: node - linkType: hard - "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -5726,13 +3467,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -5747,15 +3481,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -5765,15 +3490,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -5781,13 +3497,20 @@ __metadata: languageName: node linkType: hard -"synckit@npm:0.9.0": - version: 0.9.0 - resolution: "synckit@npm:0.9.0" +"synckit@npm:0.9.1, synckit@npm:^0.9.1": + version: 0.9.1 + resolution: "synckit@npm:0.9.1" dependencies: "@pkgr/core": ^0.1.0 tslib: ^2.6.2 - checksum: c38bc3df0306c3242ddc5628d766ef0b4ca85a8a861b0a26b03483f09eca31a7fbdbcefb1b9fdee9e49db7739df25ce728cb2c6aef02ddc58bf46ee71924a36b + checksum: 4042941a4d939675f1d7b01124b8405b6ac616f3e3f396d00e46c67f38d0d5b7f9a1de05bc7ceea4ce80d967b450cfa2460e5f6aca81f7cea8f1a28be9392985 + languageName: node + linkType: hard + +"tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 languageName: node linkType: hard @@ -5805,17 +3528,6 @@ __metadata: languageName: node linkType: hard -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 - languageName: node - linkType: hard - "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -5858,20 +3570,6 @@ __metadata: languageName: node linkType: hard -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -5890,28 +3588,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": - version: 1.10.0 - resolution: "tslib@npm:1.10.0" - checksum: 1d0450dc6f64b918b14acaf3b956ebe1c72d7401c632adce932a60e3cd8d2a70f6040ceef6a7c3561146c3f29bcf584c41c2e09a5d20a27d6c3057f0d5f2a836 - languageName: node - linkType: hard - -"tslib@npm:^2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: ^1.8.1 - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 +"tslib@npm:^2.6.2, tslib@npm:^2.6.3": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 1606d5c89f88d466889def78653f3aab0f88692e80bb2066d090ca6112ae250ec1cfa9dbfaab0d17b60da15a4186e8ec4d893801c67896b277c17374e36e1d28 languageName: node linkType: hard @@ -5924,13 +3604,6 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 - languageName: node - linkType: hard - "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -5938,23 +3611,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 - languageName: node - linkType: hard - -"typescript@npm:~5.4.5": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 53c879c6fa1e3bcb194b274d4501ba1985894b2c2692fa079db03c5a5a7140587a1e04e1ba03184605d35f439b40192d9e138eb3279ca8eee313c081c8bcd9b0 - languageName: node - linkType: hard - "typescript@npm:~5.5.4": version: 5.5.4 resolution: "typescript@npm:5.5.4" @@ -5965,16 +3621,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@~5.4.5#~builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#~builtin::version=5.4.5&hash=701156" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 2373c693f3b328f3b2387c3efafe6d257b057a142f9a79291854b14ff4d5367d3d730810aee981726b677ae0fd8329b23309da3b6aaab8263dbdccf1da07a3ba - languageName: node - linkType: hard - "typescript@patch:typescript@~5.5.4#~builtin": version: 5.5.4 resolution: "typescript@patch:typescript@npm%3A5.5.4#~builtin::version=5.5.4&hash=701156" @@ -5985,13 +3631,6 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.2": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 - languageName: node - linkType: hard - "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -6010,20 +3649,6 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" - dependencies: - escalade: ^3.1.2 - picocolors: ^1.0.1 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 7b74694d96f0c360f01b702e72353dc5a49df4fe6663d3ee4e5c628f061576cddf56af35a3a886238c01dd3d8f231b7a86a8ceaa31e7a9220ae31c1c1238e562 - languageName: node - linkType: hard - "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -6042,17 +3667,6 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.1": - version: 9.3.0 - resolution: "v8-to-istanbul@npm:9.3.0" - dependencies: - "@jridgewell/trace-mapping": ^0.3.12 - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^2.0.0 - checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae - languageName: node - linkType: hard - "validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -6178,15 +3792,6 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.8": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: 1.0.12 - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -6243,23 +3848,6 @@ __metadata: languageName: node linkType: hard -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^4.0.2": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: ^0.1.4 - signal-exit: ^3.0.7 - checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c - languageName: node - linkType: hard - "write-file-atomic@npm:^5.0.0": version: 5.0.1 resolution: "write-file-atomic@npm:5.0.1" @@ -6277,13 +3865,6 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d - languageName: node - linkType: hard - "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" @@ -6298,7 +3879,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.3.1": +"yargs@npm:17.7.2, yargs@npm:^17.0.1": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: From 0503af4b97cb8dc88d0ca75d19568ea8ff059000 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 23:18:02 +0200 Subject: [PATCH 03/29] Convert base config to flat config format --- eslint.config.mjs | 19 +- package.json | 4 + packages/base/package.json | 17 +- packages/base/src/index.d.mts | 6 + packages/base/src/index.js | 400 ---- packages/base/src/index.mjs | 413 ++++ .../src/{index.test.js => index.test.mjs} | 1 - packages/browser/package.json | 4 + packages/commonjs/package.json | 4 + packages/jest/package.json | 4 + packages/mocha/package.json | 4 + packages/nodejs/package.json | 4 + packages/typescript/package.json | 4 + yarn.lock | 1888 ++++++++++++++++- 14 files changed, 2326 insertions(+), 446 deletions(-) create mode 100644 packages/base/src/index.d.mts delete mode 100644 packages/base/src/index.js create mode 100644 packages/base/src/index.mjs rename packages/base/src/{index.test.js => index.test.mjs} (94%) diff --git a/eslint.config.mjs b/eslint.config.mjs index b378c67b..722f8116 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,19 +1,34 @@ // @ts-check +// @ts-expect-error - `@babel/eslint-parser` doesn't have TypeScript types. +import babel from '@babel/eslint-parser'; +import baseConfigs from '@metamask/eslint-config'; + /** * @type {import('eslint').Linter.Config[]} */ const config = [ + ...baseConfigs, // TODO: // extends: [ - // '@metamask/eslint-config', // '@metamask/eslint-config-nodejs', // '@metamask/eslint-config-jest', // ], { + name: 'main', languageOptions: { ecmaVersion: 2022, + + sourceType: 'module', + + parser: babel, + parserOptions: { + requireConfigFile: false, + babelOptions: { + plugins: ['@babel/plugin-syntax-import-attributes'], + }, + }, }, rules: { @@ -26,7 +41,7 @@ const config = [ }, ignores: ['!.eslint.config.mjs'], - } + }, ]; export default config; diff --git a/package.json b/package.json index 967a5b87..4937e3e0 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,11 @@ "test": "vitest" }, "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/eslint-parser": "^7.25.1", + "@babel/plugin-syntax-import-attributes": "^7.25.6", "@eslint/js": "^9.11.0", + "@jest/globals": "^29.7.0", "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", diff --git a/packages/base/package.json b/packages/base/package.json index f597239e..8901132d 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -10,8 +10,18 @@ "type": "git", "url": "https://github.com/MetaMask/eslint-config.git" }, + "type": "module", "license": "MIT", - "main": "src/index.js", + "main": "./src/index.mjs", + "types": "./src/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + } + } + }, "files": [ "src/", "!src/**/*.test.js" @@ -22,6 +32,7 @@ "test": "eslint ." }, "devDependencies": { + "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "eslint": "^9.11.0", "eslint-config-prettier": "^9.1.0", @@ -46,5 +57,9 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" } } diff --git a/packages/base/src/index.d.mts b/packages/base/src/index.d.mts new file mode 100644 index 00000000..8704c152 --- /dev/null +++ b/packages/base/src/index.d.mts @@ -0,0 +1,6 @@ +declare module '@metamask/eslint-config' { + import { Linter } from 'eslint'; + + const config: Linter.Config[]; + export default config; +} diff --git a/packages/base/src/index.js b/packages/base/src/index.js deleted file mode 100644 index 51b202f3..00000000 --- a/packages/base/src/index.js +++ /dev/null @@ -1,400 +0,0 @@ -const environmentRules = require('./environment.json'); - -module.exports = { - env: { - // See comment under `parserOptions` below. - es2017: true, - 'shared-node-browser': true, - }, - - parserOptions: { - // The `esXXXX` option under `env` is supposed to set the correct - // `ecmaVersion` option here, but we've had issues with it being - // overridden in the past and therefore set it explicitly. - // - // For JavaScript, ES2017 is our effective minimum version due to the use - // of Esprima by transitive dependencies. - // It doesn't handle object rest spread, which is a 2018 feature. - ecmaVersion: 2017, - // We want to default to 'script' and only use 'module' explicitly. - sourceType: 'script', - }, - - plugins: ['jsdoc', 'prettier', 'promise'], - - extends: [ - 'eslint:recommended', - 'plugin:prettier/recommended', - 'plugin:import-x/recommended', - ], - - rules: { - ...environmentRules, - - /* Prettier rules */ - 'prettier/prettier': [ - 'error', - { - // All of these are defaults except singleQuote and endOfLine, but we specify them - // for explicitness - endOfLine: 'auto', - quoteProps: 'as-needed', - singleQuote: true, - tabWidth: 2, - trailingComma: 'all', - }, - { - // Allow consumers to override this prettier config. - // This is the default, but we specify it for the sake of clarity. - usePrettierrc: true, - }, - ], - - curly: ['error', 'all'], - 'no-tabs': 'error', - - /* Core rules */ - 'accessor-pairs': 'error', - 'array-callback-return': 'error', - 'block-scoped-var': 'error', - camelcase: [ - 'error', - { - properties: 'never', - allow: ['^UNSAFE_'], - }, - ], - 'consistent-return': 'error', - 'consistent-this': ['error', 'self'], - 'default-case': 'error', - 'default-param-last': 'error', - 'dot-notation': 'error', - eqeqeq: ['error', 'allow-null'], - 'func-name-matching': 'error', - 'grouped-accessor-pairs': 'error', - 'guard-for-in': 'error', - 'id-denylist': [ - // This sets this rule to 'error', the rest are the forbidden IDs. - 'error', - // These are basically all useless contractions. - 'buf', - 'cat', - 'err', - 'cb', - 'cfg', - 'hex', - 'int', - 'msg', - 'num', - 'opt', - 'sig', - ], - 'id-length': [ - 'error', - { - min: 2, - properties: 'never', - exceptionPatterns: ['_', 'a', 'b', 'i', 'j', 'k'], - }, - ], - 'lines-between-class-members': 'error', - 'new-cap': [ - 'error', - { - newIsCap: true, - capIsNew: false, - }, - ], - 'no-alert': 'error', - 'no-array-constructor': 'error', - 'no-bitwise': 'error', - 'no-buffer-constructor': 'error', - 'no-caller': 'error', - 'no-constructor-return': 'error', - 'no-div-regex': 'error', - 'no-else-return': 'error', - 'no-empty-function': 'error', - 'no-eq-null': 'error', - 'no-eval': 'error', - 'no-extend-native': 'error', - 'no-extra-bind': 'error', - 'no-extra-label': 'error', - 'no-implicit-coercion': 'error', - 'no-implicit-globals': 'error', - 'no-implied-eval': 'error', - 'no-inner-declarations': ['error', 'functions'], - 'no-invalid-this': 'error', - 'no-iterator': 'error', - 'no-label-var': 'error', - 'no-labels': [ - 'error', - { - allowLoop: false, - allowSwitch: false, - }, - ], - 'no-lone-blocks': 'error', - 'no-lonely-if': 'error', - 'no-loop-func': 'error', - 'no-multi-assign': 'error', - 'no-multi-str': 'error', - 'no-native-reassign': 'error', - 'no-negated-condition': 'error', - 'no-negated-in-lhs': 'error', - 'no-nested-ternary': 'error', - 'no-new': 'error', - 'no-new-func': 'error', - 'no-new-object': 'error', - 'no-new-wrappers': 'error', - 'no-octal-escape': 'error', - 'no-param-reassign': 'error', - 'no-plusplus': [ - 'error', - { - allowForLoopAfterthoughts: true, - }, - ], - 'no-proto': 'error', - 'no-restricted-syntax': [ - 'error', - { - selector: 'WithStatement', - message: 'With statements are not allowed', - }, - { - selector: `BinaryExpression[operator='in']`, - message: 'The "in" operator is not allowed', - }, - // Sequence expressions have potential gotchas with Prettier, and are also - // weird! - { - selector: 'SequenceExpression', - message: 'Sequence expressions are not allowed', - }, - ], - 'no-return-assign': ['error', 'except-parens'], - 'no-script-url': 'error', - 'no-self-compare': 'error', - 'no-shadow': ['error', { builtinGlobals: true }], - 'no-template-curly-in-string': 'error', - 'no-throw-literal': 'error', - 'no-undef-init': 'error', - 'no-unmodified-loop-condition': 'error', - 'no-unneeded-ternary': [ - 'error', - { - defaultAssignment: false, - }, - ], - 'no-unused-expressions': [ - 'error', - { - allowShortCircuit: true, - allowTernary: true, - }, - ], - 'no-unused-vars': [ - 'error', - { - vars: 'all', - args: 'all', - argsIgnorePattern: '[_]+', - ignoreRestSiblings: true, - }, - ], - 'no-use-before-define': [ - 'error', - { - functions: false, - }, - ], - 'no-useless-call': 'error', - 'no-useless-computed-key': 'error', - 'no-useless-concat': 'error', - 'no-useless-constructor': 'error', - 'no-useless-rename': 'error', - 'no-useless-return': 'error', - 'no-var': 'error', - 'no-void': 'error', - 'object-shorthand': 'error', - 'one-var': [ - 'error', - { - initialized: 'never', - }, - ], - 'operator-assignment': 'error', - 'padding-line-between-statements': [ - 'error', - { - blankLine: 'always', - prev: 'directive', - next: '*', - }, - { - blankLine: 'any', - prev: 'directive', - next: 'directive', - }, - ], - 'prefer-const': 'error', - 'prefer-destructuring': [ - 'error', - { - VariableDeclarator: { - array: false, - object: true, - }, - AssignmentExpression: { - array: false, - object: false, - }, - }, - { - enforceForRenamedProperties: false, - }, - ], - 'prefer-numeric-literals': 'error', - 'prefer-promise-reject-errors': 'error', - 'prefer-regex-literals': 'error', - 'prefer-rest-params': 'error', - 'prefer-spread': 'error', - 'prefer-template': 'error', - radix: 'error', - 'require-atomic-updates': 'error', - 'require-unicode-regexp': 'error', - 'spaced-comment': [ - 'error', - 'always', - { - markers: [ - 'global', - 'globals', - 'eslint', - 'eslint-disable', - '*package', - '!', - ',', - ], - exceptions: ['=', '-'], - }, - ], - 'symbol-description': 'error', - yoda: ['error', 'never'], - - /* import plugin rules */ - 'import-x/extensions': [ - 'error', - 'never', - { - json: 'always', - }, - ], - 'import-x/first': 'error', - 'import-x/newline-after-import': 'error', - 'import-x/no-absolute-path': 'error', - 'import-x/no-amd': 'error', - 'import-x/no-anonymous-default-export': 'error', - 'import-x/no-duplicates': 'error', - 'import-x/no-dynamic-require': 'error', - 'import-x/no-extraneous-dependencies': 'error', - 'import-x/no-mutable-exports': 'error', - 'import-x/no-named-as-default': 'error', - 'import-x/no-named-as-default-member': 'error', - 'import-x/no-named-default': 'error', - 'import-x/no-nodejs-modules': 'error', - 'import-x/no-self-import': 'error', - 'import-x/no-unassigned-import': 'error', - 'import-x/no-unresolved': [ - 'error', - { - commonjs: true, - }, - ], - 'import-x/no-useless-path-segments': [ - 'error', - { - commonjs: true, - noUselessIndex: true, - }, - ], - 'import-x/no-webpack-loader-syntax': 'error', - 'import-x/order': [ - 'error', - { - // This means that there will always be a newline between the import - // groups as defined below. - 'newlines-between': 'always', - - groups: [ - // "builtin" is Node.js modules that are built into the runtime, and - // "external" is everything else from node_modules. - ['builtin', 'external'], - - // "internal" is unused, but could be used for absolute imports from - // the project root. - ['internal', 'parent', 'sibling', 'index'], - ], - - // Alphabetically sort the imports within each group. - alphabetize: { - order: 'asc', - caseInsensitive: true, - }, - }, - ], - 'import-x/unambiguous': 'error', - - /* jsdoc plugin rules */ - 'jsdoc/check-access': 'error', - 'jsdoc/check-alignment': 'error', - 'jsdoc/check-line-alignment': 'error', - 'jsdoc/check-param-names': 'error', - 'jsdoc/check-property-names': 'error', - 'jsdoc/check-tag-names': 'error', - 'jsdoc/check-types': 'error', - 'jsdoc/check-values': 'error', - 'jsdoc/empty-tags': 'error', - 'jsdoc/implements-on-classes': 'error', - 'jsdoc/match-description': [ - 'error', - { tags: { param: true, returns: true } }, - ], - 'jsdoc/multiline-blocks': 'error', - 'jsdoc/no-bad-blocks': 'error', - 'jsdoc/no-defaults': 'error', - 'jsdoc/no-multi-asterisks': 'error', - 'jsdoc/require-asterisk-prefix': 'error', - 'jsdoc/require-description': 'error', - 'jsdoc/require-hyphen-before-param-description': [ - 'error', - 'always', - { tags: { returns: 'never', template: 'always', throws: 'never' } }, - ], - 'jsdoc/require-jsdoc': 'error', - 'jsdoc/require-param-name': 'error', - 'jsdoc/require-param': ['error', { unnamedRootBase: ['options'] }], - 'jsdoc/require-param-description': 'error', - 'jsdoc/require-param-type': 'error', - 'jsdoc/require-property': 'error', - 'jsdoc/require-property-description': 'error', - 'jsdoc/require-property-name': 'error', - 'jsdoc/require-property-type': 'error', - 'jsdoc/require-returns': 'error', - 'jsdoc/require-returns-check': 'error', - 'jsdoc/require-returns-description': 'error', - 'jsdoc/require-returns-type': 'error', - 'jsdoc/require-yields': 'error', - 'jsdoc/require-yields-check': 'error', - 'jsdoc/tag-lines': [ - 'error', - 'any', - { - startLines: 1, - }, - ], - 'jsdoc/valid-types': 'error', - - 'promise/no-multiple-resolved': 'error', - }, -}; diff --git a/packages/base/src/index.mjs b/packages/base/src/index.mjs new file mode 100644 index 00000000..bac3ef0b --- /dev/null +++ b/packages/base/src/index.mjs @@ -0,0 +1,413 @@ +// @ts-check + +import js from '@eslint/js'; +import importX from 'eslint-plugin-import-x'; +import jsdoc from 'eslint-plugin-jsdoc'; +import prettier from 'eslint-plugin-prettier/recommended'; +import promise from 'eslint-plugin-promise'; +import globals from 'globals'; + +import environmentRules from './environment.json' with { type: 'json' }; + +/** + * @type {import('eslint').Linter.Config[]} + */ +const rules = [ + // Recommended ESLint configuration. + js.configs.recommended, + + importX.flatConfigs.recommended, + jsdoc.configs['flat/recommended-error'], + prettier, + promise.configs['flat/recommended'], + + { + name: '@metamask/eslint-config', + languageOptions: { + // The `esXXXX` option under `env` is supposed to set the correct + // `ecmaVersion` option here, but we've had issues with it being + // overridden in the past and therefore set it explicitly. + ecmaVersion: 2022, + + // We want to default to 'script' and only use 'module' explicitly. + sourceType: 'script', + + globals: { + ...globals.es2022, + ...globals['shared-node-browser'], + }, + }, + + rules: { + ...environmentRules, + + /* Prettier rules */ + 'prettier/prettier': [ + 'error', + { + // All of these are defaults except singleQuote and endOfLine, but we specify them + // for explicitness + endOfLine: 'auto', + quoteProps: 'as-needed', + singleQuote: true, + tabWidth: 2, + trailingComma: 'all', + }, + { + // Allow consumers to override this Prettier config. + // This is the default, but we specify it for the sake of clarity. + usePrettierrc: true, + }, + ], + + curly: ['error', 'all'], + 'no-tabs': 'error', + + /* Core rules */ + 'accessor-pairs': 'error', + 'array-callback-return': 'error', + 'block-scoped-var': 'error', + camelcase: [ + 'error', + { + properties: 'never', + allow: ['^UNSAFE_'], + }, + ], + 'consistent-return': 'error', + 'consistent-this': ['error', 'self'], + 'default-case': 'error', + 'default-param-last': 'error', + 'dot-notation': 'error', + eqeqeq: ['error', 'allow-null'], + 'func-name-matching': 'error', + 'grouped-accessor-pairs': 'error', + 'guard-for-in': 'error', + 'id-denylist': [ + // This sets this rule to 'error', the rest are the forbidden IDs. + 'error', + // These are basically all useless contractions. + 'buf', + 'cat', + 'err', + 'cb', + 'cfg', + 'hex', + 'int', + 'msg', + 'num', + 'opt', + 'sig', + ], + 'id-length': [ + 'error', + { + min: 2, + properties: 'never', + exceptionPatterns: ['_', 'a', 'b', 'i', 'j', 'k'], + }, + ], + 'lines-between-class-members': 'error', + 'new-cap': [ + 'error', + { + newIsCap: true, + capIsNew: false, + }, + ], + 'no-alert': 'error', + 'no-array-constructor': 'error', + 'no-bitwise': 'error', + 'no-buffer-constructor': 'error', + 'no-caller': 'error', + 'no-constructor-return': 'error', + 'no-div-regex': 'error', + 'no-else-return': 'error', + 'no-empty-function': 'error', + 'no-eq-null': 'error', + 'no-eval': 'error', + 'no-extend-native': 'error', + 'no-extra-bind': 'error', + 'no-extra-label': 'error', + 'no-implicit-coercion': 'error', + 'no-implicit-globals': 'error', + 'no-implied-eval': 'error', + 'no-inner-declarations': ['error', 'functions'], + 'no-invalid-this': 'error', + 'no-iterator': 'error', + 'no-label-var': 'error', + 'no-labels': [ + 'error', + { + allowLoop: false, + allowSwitch: false, + }, + ], + 'no-lone-blocks': 'error', + 'no-lonely-if': 'error', + 'no-loop-func': 'error', + 'no-multi-assign': 'error', + 'no-multi-str': 'error', + 'no-native-reassign': 'error', + 'no-negated-condition': 'error', + 'no-negated-in-lhs': 'error', + 'no-nested-ternary': 'error', + 'no-new': 'error', + 'no-new-func': 'error', + 'no-new-object': 'error', + 'no-new-wrappers': 'error', + 'no-octal-escape': 'error', + 'no-param-reassign': 'error', + 'no-plusplus': [ + 'error', + { + allowForLoopAfterthoughts: true, + }, + ], + 'no-proto': 'error', + 'no-restricted-syntax': [ + 'error', + { + selector: 'WithStatement', + message: 'With statements are not allowed', + }, + { + selector: `BinaryExpression[operator='in']`, + message: 'The "in" operator is not allowed', + }, + // Sequence expressions have potential gotchas with Prettier, and are also + // weird! + { + selector: 'SequenceExpression', + message: 'Sequence expressions are not allowed', + }, + ], + 'no-return-assign': ['error', 'except-parens'], + 'no-script-url': 'error', + 'no-self-compare': 'error', + 'no-shadow': ['error', { builtinGlobals: true }], + 'no-template-curly-in-string': 'error', + 'no-throw-literal': 'error', + 'no-undef-init': 'error', + 'no-unmodified-loop-condition': 'error', + 'no-unneeded-ternary': [ + 'error', + { + defaultAssignment: false, + }, + ], + 'no-unused-expressions': [ + 'error', + { + allowShortCircuit: true, + allowTernary: true, + }, + ], + 'no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'all', + argsIgnorePattern: '[_]+', + ignoreRestSiblings: true, + }, + ], + 'no-use-before-define': [ + 'error', + { + functions: false, + }, + ], + 'no-useless-call': 'error', + 'no-useless-computed-key': 'error', + 'no-useless-concat': 'error', + 'no-useless-constructor': 'error', + 'no-useless-rename': 'error', + 'no-useless-return': 'error', + 'no-var': 'error', + 'no-void': 'error', + 'object-shorthand': 'error', + 'one-var': [ + 'error', + { + initialized: 'never', + }, + ], + 'operator-assignment': 'error', + 'padding-line-between-statements': [ + 'error', + { + blankLine: 'always', + prev: 'directive', + next: '*', + }, + { + blankLine: 'any', + prev: 'directive', + next: 'directive', + }, + ], + 'prefer-const': 'error', + 'prefer-destructuring': [ + 'error', + { + VariableDeclarator: { + array: false, + object: true, + }, + AssignmentExpression: { + array: false, + object: false, + }, + }, + { + enforceForRenamedProperties: false, + }, + ], + 'prefer-numeric-literals': 'error', + 'prefer-promise-reject-errors': 'error', + 'prefer-regex-literals': 'error', + 'prefer-rest-params': 'error', + 'prefer-spread': 'error', + 'prefer-template': 'error', + radix: 'error', + 'require-atomic-updates': 'error', + 'require-unicode-regexp': 'error', + 'spaced-comment': [ + 'error', + 'always', + { + markers: [ + 'global', + 'globals', + 'eslint', + 'eslint-disable', + '*package', + '!', + ',', + ], + exceptions: ['=', '-'], + }, + ], + 'symbol-description': 'error', + yoda: ['error', 'never'], + + /* import plugin rules */ + 'import-x/extensions': [ + 'error', + 'never', + { + json: 'always', + }, + ], + 'import-x/first': 'error', + 'import-x/newline-after-import': 'error', + 'import-x/no-absolute-path': 'error', + 'import-x/no-amd': 'error', + 'import-x/no-anonymous-default-export': 'error', + 'import-x/no-duplicates': 'error', + 'import-x/no-dynamic-require': 'error', + 'import-x/no-extraneous-dependencies': 'error', + 'import-x/no-mutable-exports': 'error', + 'import-x/no-named-as-default': 'error', + 'import-x/no-named-as-default-member': 'error', + 'import-x/no-named-default': 'error', + 'import-x/no-nodejs-modules': 'error', + 'import-x/no-self-import': 'error', + 'import-x/no-unassigned-import': 'error', + 'import-x/no-unresolved': [ + 'error', + { + commonjs: true, + }, + ], + 'import-x/no-useless-path-segments': [ + 'error', + { + commonjs: true, + noUselessIndex: true, + }, + ], + 'import-x/no-webpack-loader-syntax': 'error', + 'import-x/order': [ + 'error', + { + // This means that there will always be a newline between the import + // groups as defined below. + 'newlines-between': 'always', + + groups: [ + // "builtin" is Node.js modules that are built into the runtime, and + // "external" is everything else from node_modules. + ['builtin', 'external'], + + // "internal" is unused, but could be used for absolute imports from + // the project root. + ['internal', 'parent', 'sibling', 'index'], + ], + + // Alphabetically sort the imports within each group. + alphabetize: { + order: 'asc', + caseInsensitive: true, + }, + }, + ], + 'import-x/unambiguous': 'error', + + /* jsdoc plugin rules */ + 'jsdoc/check-access': 'error', + 'jsdoc/check-alignment': 'error', + 'jsdoc/check-line-alignment': 'error', + 'jsdoc/check-param-names': 'error', + 'jsdoc/check-property-names': 'error', + 'jsdoc/check-tag-names': 'error', + 'jsdoc/check-types': 'error', + 'jsdoc/check-values': 'error', + 'jsdoc/empty-tags': 'error', + 'jsdoc/implements-on-classes': 'error', + 'jsdoc/match-description': [ + 'error', + { tags: { param: true, returns: true } }, + ], + 'jsdoc/multiline-blocks': 'error', + 'jsdoc/no-bad-blocks': 'error', + 'jsdoc/no-defaults': 'error', + 'jsdoc/no-multi-asterisks': 'error', + 'jsdoc/require-asterisk-prefix': 'error', + 'jsdoc/require-description': 'error', + 'jsdoc/require-hyphen-before-param-description': [ + 'error', + 'always', + { tags: { returns: 'never', template: 'always', throws: 'never' } }, + ], + 'jsdoc/require-jsdoc': 'error', + 'jsdoc/require-param-name': 'error', + 'jsdoc/require-param': ['error', { unnamedRootBase: ['options'] }], + 'jsdoc/require-param-description': 'error', + 'jsdoc/require-param-type': 'error', + 'jsdoc/require-property': 'error', + 'jsdoc/require-property-description': 'error', + 'jsdoc/require-property-name': 'error', + 'jsdoc/require-property-type': 'error', + 'jsdoc/require-returns': 'error', + 'jsdoc/require-returns-check': 'error', + 'jsdoc/require-returns-description': 'error', + 'jsdoc/require-returns-type': 'error', + 'jsdoc/require-yields': 'error', + 'jsdoc/require-yields-check': 'error', + 'jsdoc/tag-lines': [ + 'error', + 'any', + { + startLines: 1, + }, + ], + 'jsdoc/valid-types': 'error', + + // 'promise/no-multiple-resolved': 'error', + }, + }, +]; + +export default rules; diff --git a/packages/base/src/index.test.js b/packages/base/src/index.test.mjs similarity index 94% rename from packages/base/src/index.test.js rename to packages/base/src/index.test.mjs index 00a84d8c..c9fc4129 100644 --- a/packages/base/src/index.test.js +++ b/packages/base/src/index.test.mjs @@ -7,7 +7,6 @@ describe('index', () => { it('is a valid ESLint config', async () => { const api = new ESLint({ baseConfig: config, - useEslintrc: false, }); const result = await api.lintText(`console.log('Hello, world!');\n`); diff --git a/packages/browser/package.json b/packages/browser/package.json index 7945836a..b8b9ff4f 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -22,6 +22,7 @@ "test": "eslint ." }, "devDependencies": { + "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "eslint": "^9.11.0", "eslint-config-prettier": "^9.1.0", @@ -40,5 +41,8 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "@eslint/js": "^9.11.0" } } diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index f03bdd14..bb4a850f 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -22,6 +22,7 @@ "test": "eslint ." }, "devDependencies": { + "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "eslint": "^9.11.0", "eslint-config-prettier": "^9.1.0", @@ -40,5 +41,8 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "@eslint/js": "^9.11.0" } } diff --git a/packages/jest/package.json b/packages/jest/package.json index da39c0c4..037e1c77 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -22,6 +22,7 @@ "test": "eslint ." }, "devDependencies": { + "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", @@ -43,5 +44,8 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "@eslint/js": "^9.11.0" } } diff --git a/packages/mocha/package.json b/packages/mocha/package.json index f7a6c00f..00e3c094 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -22,6 +22,7 @@ "test": "eslint ." }, "devDependencies": { + "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", @@ -43,5 +44,8 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "@eslint/js": "^9.11.0" } } diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index a2a2956f..ba3b9dfc 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -22,6 +22,7 @@ "test": "eslint ." }, "devDependencies": { + "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", @@ -43,5 +44,8 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "@eslint/js": "^9.11.0" } } diff --git a/packages/typescript/package.json b/packages/typescript/package.json index ceacc73c..a6126817 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -23,6 +23,7 @@ "test": "eslint ." }, "devDependencies": { + "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", "@typescript-eslint/eslint-plugin": "^8.6.0", @@ -48,5 +49,8 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "@eslint/js": "^9.11.0" } } diff --git a/yarn.lock b/yarn.lock index 25044d0c..a4e87231 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,414 @@ __metadata: languageName: node linkType: hard +"@ampproject/remapping@npm:^2.2.0": + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" + dependencies: + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": ^7.24.7 + picocolors: ^1.0.0 + checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.25.2": + version: 7.25.4 + resolution: "@babel/compat-data@npm:7.25.4" + checksum: b12a91d27c3731a4b0bdc9312a50b1911f41f7f728aaf0d4b32486e2257fd2cb2d3ea1a295e98449600c48f2c7883a3196ca77cda1cef7d97a10c2e83d037974 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-module-transforms": ^7.25.2 + "@babel/helpers": ^7.25.0 + "@babel/parser": ^7.25.0 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.2 + "@babel/types": ^7.25.2 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a + languageName: node + linkType: hard + +"@babel/eslint-parser@npm:^7.25.1": + version: 7.25.1 + resolution: "@babel/eslint-parser@npm:7.25.1" + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 + eslint-visitor-keys: ^2.1.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + checksum: 73207b7e84a58bd6560d29f11cf5c6f9d64a01b9299d4d0a145423a028ea4c402be2fd09228647fdbec14b65a07d4138e751468fd33d9a9363c9698582fa80b5 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6, @babel/generator@npm:^7.7.2": + version: 7.25.6 + resolution: "@babel/generator@npm:7.25.6" + dependencies: + "@babel/types": ^7.25.6 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^2.5.1 + checksum: b55975cd664f5602304d868bb34f4ee3bed6f5c7ce8132cd92ff27a46a53a119def28a182d91992e86f75db904f63094a81247703c4dc96e4db0c03fd04bcd68 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" + dependencies: + "@babel/compat-data": ^7.25.2 + "@babel/helper-validator-option": ^7.24.8 + browserslist: ^4.23.1 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.2 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.25.0": + version: 7.25.6 + resolution: "@babel/helpers@npm:7.25.6" + dependencies: + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.6 + checksum: 5a548999db82049a5f7ac6de57576b4ed0d386ce07d058151698836ed411eae6230db12535487caeebb68a2ffc964491e8aead62364a5132ab0ae20e8b68e19f + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": ^7.24.7 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.14.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/parser@npm:7.25.6" + dependencies: + "@babel/types": ^7.25.6 + bin: + parser: ./bin/babel-parser.js + checksum: 85b237ded09ee43cc984493c35f3b1ff8a83e8dbbb8026b8132e692db6567acc5a1659ec928e4baa25499ddd840d7dae9dee3062be7108fe23ec5f94a8066b1e + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.6" + dependencies: + "@babel/helper-plugin-utils": ^7.24.8 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3b0928e73e42346e8a65760a3ff853c87ad693cdf11bb335a23e895e0b5b1f0601118521b3aff2a6946488a580a63afb6a5b5686153a7678b4dff0e4e4604dd7 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8829d30c2617ab31393d99cec2978e41f014f4ac6f01a1cecf4c4dd8320c3ec12fdc3ce121126b2d8d32f6887e99ca1a0bad53dedb1e6ad165640b92b24980ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.22.5 + resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" + dependencies: + "@babel/helper-plugin-utils": ^7.22.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8ab7718fbb026d64da93681a57797d60326097fd7cb930380c8bffd9eb101689e90142c760a14b51e8e69c88a73ba3da956cb4520a3b0c65743aee5c71ef360a + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": + version: 7.25.6 + resolution: "@babel/traverse@npm:7.25.6" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.6 + "@babel/parser": ^7.25.6 + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.6 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 11ee47269aa4356f2d6633a05b9af73405b5ed72c09378daf644289b686ef852035a6ac9aa410f601991993c6bbf72006795b5478283b78eb1ca77874ada7737 + languageName: node + linkType: hard + +"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.3.3": + version: 7.25.6 + resolution: "@babel/types@npm:7.25.6" + dependencies: + "@babel/helper-string-parser": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: 9b2f84ff3f874ad05b0b9bf06862c56f478b65781801f82296b4cc01bee39e79c20a7c0a06959fed0ee582c8267e1cb21638318655c5e070b0287242a844d1c9 + languageName: node + linkType: hard + "@es-joy/jsdoccomment@npm:~0.48.0": version: 0.48.0 resolution: "@es-joy/jsdoccomment@npm:0.48.0" @@ -295,6 +703,13 @@ __metadata: languageName: node linkType: hard +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 + languageName: node + linkType: hard + "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" @@ -323,13 +738,171 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.5.0": +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: ^5.3.1 + find-up: ^4.1.0 + get-package-type: ^0.1.0 + js-yaml: ^3.13.1 + resolve-from: ^5.0.0 + checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-mock: ^29.7.0 + checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: ^29.7.0 + jest-snapshot: ^29.7.0 + checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@sinonjs/fake-timers": ^10.0.2 + "@types/node": "*" + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/types": ^29.6.3 + jest-mock: ^29.7.0 + checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": ^0.27.8 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": ^7.11.6 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.2 + checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": ^29.6.3 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": ^1.2.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 + languageName: node + linkType: hard + "@lavamoat/aa@npm:^4.2.0": version: 4.2.0 resolution: "@lavamoat/aa@npm:4.2.0" @@ -375,6 +948,8 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/eslint-config-browser@workspace:packages/browser" dependencies: + "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 eslint: ^9.11.0 eslint-config-prettier: ^9.1.0 @@ -392,6 +967,8 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/eslint-config-commonjs@workspace:packages/commonjs" dependencies: + "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 eslint: ^9.11.0 eslint-config-prettier: ^9.1.0 @@ -409,6 +986,8 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/eslint-config-jest@workspace:packages/jest" dependencies: + "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -429,6 +1008,8 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/eslint-config-mocha@workspace:packages/mocha" dependencies: + "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -449,6 +1030,8 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/eslint-config-nodejs@workspace:packages/nodejs" dependencies: + "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -469,6 +1052,8 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/eslint-config-typescript@workspace:packages/typescript" dependencies: + "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 "@typescript-eslint/eslint-plugin": ^8.6.0 @@ -493,6 +1078,8 @@ __metadata: version: 0.0.0-use.local resolution: "@metamask/eslint-config@workspace:packages/base" dependencies: + "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 eslint: ^9.11.0 eslint-config-prettier: ^9.1.0 @@ -500,6 +1087,7 @@ __metadata: eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-prettier: ^5.2.1 eslint-plugin-promise: ^7.1.0 + globals: ^15.9.0 prettier: ^3.3.3 peerDependencies: eslint: ^9.11.0 @@ -536,6 +1124,15 @@ __metadata: languageName: node linkType: hard +"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": + version: 5.1.1-v1 + resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" + dependencies: + eslint-scope: 5.1.1 + checksum: f2e3b2d6a6e2d9f163ca22105910c9f850dc4897af0aea3ef0a5886b63d8e1ba6505b71c99cb78a3bba24a09557d601eb21c8dede3f3213753fcfef364eb0e57 + languageName: node + linkType: hard + "@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0": version: 1.1.0 resolution: "@noble/curves@npm:1.1.0" @@ -592,6 +1189,16 @@ __metadata: languageName: node linkType: hard +"@npmcli/fs@npm:^2.1.0": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": ^1.1.3 + semver: ^7.3.5 + checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 + languageName: node + linkType: hard + "@npmcli/fs@npm:^3.1.0": version: 3.1.0 resolution: "@npmcli/fs@npm:3.1.0" @@ -617,6 +1224,16 @@ __metadata: languageName: node linkType: hard +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 + languageName: node + linkType: hard + "@npmcli/node-gyp@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/node-gyp@npm:3.0.0" @@ -815,6 +1432,38 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: 4.0.8 + checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": ^3.0.0 + checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + "@types/debug@npm:^4.1.7": version: 4.1.7 resolution: "@types/debug@npm:4.1.7" @@ -838,6 +1487,40 @@ __metadata: languageName: node linkType: hard +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "*" + checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 + languageName: node + linkType: hard + "@types/ms@npm:*": version: 0.7.31 resolution: "@types/ms@npm:0.7.31" @@ -845,6 +1528,38 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:*": + version: 22.5.5 + resolution: "@types/node@npm:22.5.5" + dependencies: + undici-types: ~6.19.2 + checksum: 1f788966ff7df07add0af3481fb68c7fe5091cc72a265c671432abb443788ddacca4ca6378af64fe100c20f857c4d80170d358e66c070171fcea0d4adb1b45b1 + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "*" + checksum: ee013f257472ab643cb0584cf3e1ff9b0c44bca1c9ba662395300a7f1a6c55fa9d41bd40ddff42d99f5d95febb3907c9ff600fbcb92dadbec22c6a76de7e1236 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^8.6.0": version: 8.6.0 resolution: "@typescript-eslint/eslint-plugin@npm:8.6.0" @@ -1043,6 +1758,13 @@ __metadata: languageName: node linkType: hard +"abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -1068,6 +1790,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": version: 7.1.0 resolution: "agent-base@npm:7.1.0" @@ -1077,6 +1808,15 @@ __metadata: languageName: node linkType: hard +"agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: ^1.2.1 + checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 + languageName: node + linkType: hard + "aggregate-error@npm:^3.0.0": version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" @@ -1122,10 +1862,34 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 languageName: node linkType: hard @@ -1136,6 +1900,25 @@ __metadata: languageName: node linkType: hard +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: ~1.0.2 + checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 + languageName: node + linkType: hard + "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -1150,6 +1933,44 @@ __metadata: languageName: node linkType: hard +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@istanbuljs/load-nyc-config": ^1.0.0 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-instrument: ^5.0.4 + test-exclude: ^6.0.0 + checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" + dependencies: + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-bigint": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-import-attributes": ^7.24.7 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 9f93fac975eaba296c436feeca1031ca0539143c4066eaf5d1ba23525a31850f03b651a1049caea7287df837a409588c8252c15627ad3903f17864c8e25ed64b + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -1197,6 +2018,29 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.23.1": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" + dependencies: + caniuse-lite: ^1.0.30001646 + electron-to-chromium: ^1.5.4 + node-releases: ^2.0.18 + update-browserslist-db: ^1.1.0 + bin: + browserslist: cli.js + checksum: 7906064f9970aeb941310b2fcb8b4ace4a1b50aa657c986677c6f1553a8cabcc94ee9c5922f715baffbedaa0e6cf0831b6fed7b059dde6873a4bfadcbe069c7e + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: ^0.4.0 + checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 + languageName: node + linkType: hard + "builtins@npm:^5.0.0": version: 5.0.1 resolution: "builtins@npm:5.0.1" @@ -1213,6 +2057,32 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^16.1.0": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": ^2.1.0 + "@npmcli/move-file": ^2.0.0 + chownr: ^2.0.0 + fs-minipass: ^2.1.0 + glob: ^8.0.1 + infer-owner: ^1.0.4 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + mkdirp: ^1.0.4 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^9.0.0 + tar: ^6.1.11 + unique-filename: ^2.0.0 + checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + languageName: node + linkType: hard + "cacache@npm:^18.0.0": version: 18.0.2 resolution: "cacache@npm:18.0.2" @@ -1240,6 +2110,20 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001662 + resolution: "caniuse-lite@npm:1.0.30001662" + checksum: 7a6a0c0d9f7c4a1c51de02838eb47f41f36fff57a77b846c8faed35ba9afba17b9399bc00bd637e5c1663cbc132534085d91151de48edca2ad8932a5d87e23af + languageName: node + linkType: hard + "chai@npm:^5.1.1": version: 5.1.1 resolution: "chai@npm:5.1.1" @@ -1253,6 +2137,19 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + assertion-error: ^2.0.1 + check-error: ^2.1.1 + deep-eql: ^5.0.1 + loupe: ^3.1.0 + pathval: ^2.0.0 + checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + languageName: node + linkType: hard + "chalk@npm:^4.0.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -1277,6 +2174,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 + languageName: node + linkType: hard + "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -1318,6 +2222,15 @@ __metadata: languageName: node linkType: hard +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + "comment-parser@npm:1.4.1": version: 1.4.1 resolution: "comment-parser@npm:1.4.1" @@ -1332,6 +2245,20 @@ __metadata: languageName: node linkType: hard +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + "crc-32@npm:^1.2.0": version: 1.2.2 resolution: "crc-32@npm:1.2.2" @@ -1352,7 +2279,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.6": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -1387,6 +2314,13 @@ __metadata: languageName: node linkType: hard +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + "detect-indent@npm:^7.0.1": version: 7.0.1 resolution: "detect-indent@npm:7.0.1" @@ -1401,6 +2335,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa + languageName: node + linkType: hard + "diff@npm:^5.0.0": version: 5.0.0 resolution: "diff@npm:5.0.0" @@ -1433,6 +2374,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.4": + version: 1.5.27 + resolution: "electron-to-chromium@npm:1.5.27" + checksum: 1a32103306b92732979db40f299e013b94b284a80745c26390ceaee2bf76ef71a4167b1ababc17dc3d24cf4c27d5aa95dcf7c256c55c329164f726553dc9ea9a + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -1567,13 +2515,20 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e languageName: node linkType: hard +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + languageName: node + linkType: hard + "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -1746,6 +2701,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + languageName: node + linkType: hard + "eslint-scope@npm:^8.0.2": version: 8.0.2 resolution: "eslint-scope@npm:8.0.2" @@ -1767,7 +2732,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^2.0.0": +"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0": version: 2.1.0 resolution: "eslint-visitor-keys@npm:2.1.0" checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d @@ -1848,6 +2813,16 @@ __metadata: languageName: node linkType: hard +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + languageName: node + linkType: hard + "esquery@npm:^1.5.0, esquery@npm:^1.6.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" @@ -1866,6 +2841,13 @@ __metadata: languageName: node linkType: hard +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + languageName: node + linkType: hard + "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -1918,6 +2900,19 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -1952,7 +2947,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb @@ -1975,6 +2970,15 @@ __metadata: languageName: node linkType: hard +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: 2.1.1 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + languageName: node + linkType: hard + "file-entry-cache@npm:^8.0.0": version: 8.0.0 resolution: "file-entry-cache@npm:8.0.0" @@ -1993,6 +2997,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: ^5.0.0 + path-exists: ^4.0.0 + checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + languageName: node + linkType: hard + "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -2030,7 +3044,7 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: @@ -2048,7 +3062,14 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -2058,7 +3079,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@~2.3.2#~builtin, fsevents@patch:fsevents@~2.3.3#~builtin": +"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin, fsevents@patch:fsevents@~2.3.3#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=18f3a7" dependencies: @@ -2074,6 +3095,29 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec + languageName: node + linkType: hard + "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -2088,6 +3132,13 @@ __metadata: languageName: node linkType: hard +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 + languageName: node + linkType: hard + "get-stdin@npm:^9.0.0": version: 9.0.0 resolution: "get-stdin@npm:9.0.0" @@ -2151,6 +3202,40 @@ __metadata: languageName: node linkType: hard +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + 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 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^5.0.1 + once: ^1.3.0 + checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e + languageName: node + linkType: hard + "globals@npm:^13.24.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -2167,7 +3252,7 @@ __metadata: languageName: node linkType: hard -"globals@npm:^15.0.0, globals@npm:^15.8.0": +"globals@npm:^15.0.0, globals@npm:^15.8.0, globals@npm:^15.9.0": version: 15.9.0 resolution: "globals@npm:15.9.0" checksum: 32c4470ffcc26db3ddbc579ddf968b74c26462d1a268039980c2fa2e107090fd442a7a7445d953dc4ee874f68846e713066c5a8e63d146fd9349cd1fc5a6f63d @@ -2187,7 +3272,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -2208,6 +3293,13 @@ __metadata: languageName: node linkType: hard +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + "hasown@npm:^2.0.0": version: 2.0.2 resolution: "hasown@npm:2.0.2" @@ -2226,13 +3318,24 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.1": +"http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 languageName: node linkType: hard +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -2243,6 +3346,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + "https-proxy-agent@npm:^7.0.1": version: 7.0.4 resolution: "https-proxy-agent@npm:7.0.4" @@ -2260,6 +3373,15 @@ __metadata: languageName: node linkType: hard +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -2300,6 +3422,30 @@ __metadata: languageName: node linkType: hard +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -2391,16 +3537,198 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" +"istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^6.3.0 + checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.6.3 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.7.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-util: ^29.7.0 + checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": ^7.11.6 + "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^29.7.0 + graceful-fs: ^4.2.9 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + natural-compare: ^1.4.0 + pretty-format: ^29.7.0 + semver: ^7.5.3 + checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "*" + jest-util: ^29.7.0 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" dependencies: - "@isaacs/cliui": ^8.0.2 - "@pkgjs/parseargs": ^0.11.0 - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + argparse: ^1.0.7 + esprima: ^4.0.0 + bin: + js-yaml: bin/js-yaml.js + checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c languageName: node linkType: hard @@ -2429,6 +3757,15 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -2457,6 +3794,15 @@ __metadata: languageName: node linkType: hard +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + languageName: node + linkType: hard + "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -2476,6 +3822,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: ^4.1.0 + checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 + languageName: node + linkType: hard + "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -2508,6 +3863,22 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: ^3.0.2 + checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb + languageName: node + linkType: hard + +"lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 + languageName: node + linkType: hard + "magic-string@npm:^0.30.11": version: 0.30.11 resolution: "magic-string@npm:0.30.11" @@ -2517,6 +3888,30 @@ __metadata: languageName: node linkType: hard +"make-fetch-happen@npm:^10.0.3": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: ^4.2.1 + cacache: ^16.1.0 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-fetch: ^2.0.3 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 + ssri: ^9.0.0 + checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c + languageName: node + linkType: hard + "make-fetch-happen@npm:^13.0.0": version: 13.0.0 resolution: "make-fetch-happen@npm:13.0.0" @@ -2536,6 +3931,15 @@ __metadata: languageName: node linkType: hard +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: 1.0.5 + checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -2574,7 +3978,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -2583,6 +3987,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^5.0.1": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + languageName: node + linkType: hard + "minimatch@npm:^9.0.1, minimatch@npm:^9.0.3, minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" @@ -2592,6 +4005,15 @@ __metadata: languageName: node linkType: hard +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + languageName: node + linkType: hard + "minipass-collect@npm:^2.0.1": version: 2.0.1 resolution: "minipass-collect@npm:2.0.1" @@ -2601,6 +4023,21 @@ __metadata: languageName: node linkType: hard +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: ^0.1.13 + minipass: ^3.1.6 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 + languageName: node + linkType: hard + "minipass-fetch@npm:^3.0.0": version: 3.0.4 resolution: "minipass-fetch@npm:3.0.4" @@ -2643,12 +4080,12 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0": - version: 3.3.5 - resolution: "minipass@npm:3.3.5" +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" dependencies: yallist: ^4.0.0 - checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 languageName: node linkType: hard @@ -2676,7 +4113,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^1.0.3": +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -2685,7 +4122,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -2715,7 +4152,7 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^10.0.0, node-gyp@npm:latest": +"node-gyp@npm:^10.0.0": version: 10.2.0 resolution: "node-gyp@npm:10.2.0" dependencies: @@ -2735,6 +4172,51 @@ __metadata: languageName: node linkType: hard +"node-gyp@npm:latest": + version: 9.3.0 + resolution: "node-gyp@npm:9.3.0" + dependencies: + env-paths: ^2.2.0 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^10.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e + languageName: node + linkType: hard + +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: ^1.0.0 + bin: + nopt: bin/nopt.js + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + languageName: node + linkType: hard + "nopt@npm:^7.0.0": version: 7.2.0 resolution: "nopt@npm:7.2.0" @@ -2758,6 +4240,13 @@ __metadata: languageName: node linkType: hard +"normalize-path@npm:^3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + "npm-install-checks@npm:^6.0.0": version: 6.3.0 resolution: "npm-install-checks@npm:6.3.0" @@ -2807,6 +4296,27 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.3 + set-blocking: ^2.0.0 + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + "onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" @@ -2830,6 +4340,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: ^2.0.0 + checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + languageName: node + linkType: hard + "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" @@ -2839,6 +4358,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: ^2.2.0 + checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + languageName: node + linkType: hard + "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" @@ -2857,6 +4385,13 @@ __metadata: languageName: node linkType: hard +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -2883,6 +4418,13 @@ __metadata: languageName: node linkType: hard +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -2928,20 +4470,27 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.1.0": +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": version: 1.1.0 resolution: "picocolors@npm:1.1.0" checksum: a64d653d3a188119ff45781dfcdaeedd7625583f45280aea33fcb032c7a0d3959f2368f9b192ad5e8aade75b74dbd954ffe3106c158509a45e4c18ab379a2acd languageName: node linkType: hard -"picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf languageName: node linkType: hard +"pirates@npm:^4.0.4": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 + languageName: node + linkType: hard + "pony-cause@npm:^2.1.10": version: 2.1.10 resolution: "pony-cause@npm:2.1.10" @@ -3009,6 +4558,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": ^29.6.3 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 + languageName: node + linkType: hard + "proc-log@npm:^3.0.0": version: 3.0.0 resolution: "proc-log@npm:3.0.0" @@ -3054,6 +4614,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 + languageName: node + linkType: hard + "read-cmd-shim@npm:^4.0.0": version: 4.0.0 resolution: "read-cmd-shim@npm:4.0.0" @@ -3061,6 +4628,17 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -3075,6 +4653,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + languageName: node + linkType: hard + "resolve-pkg-maps@npm:^1.0.0": version: 1.0.0 resolution: "resolve-pkg-maps@npm:1.0.0" @@ -3122,6 +4707,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + "rollup@npm:^4.20.0": version: 4.22.4 resolution: "rollup@npm:4.22.4" @@ -3189,7 +4785,11 @@ __metadata: version: 0.0.0-use.local resolution: "root@workspace:." dependencies: + "@babel/core": ^7.25.2 + "@babel/eslint-parser": ^7.25.1 + "@babel/plugin-syntax-import-attributes": ^7.25.6 "@eslint/js": ^9.11.0 + "@jest/globals": ^29.7.0 "@lavamoat/allow-scripts": ^3.0.4 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 @@ -3219,6 +4819,13 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -3226,6 +4833,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + "semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" @@ -3235,6 +4851,13 @@ __metadata: languageName: node linkType: hard +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -3258,7 +4881,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.3": +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -3272,6 +4895,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + languageName: node + linkType: hard + "slash@npm:^4.0.0": version: 4.0.0 resolution: "slash@npm:4.0.0" @@ -3293,6 +4923,17 @@ __metadata: languageName: node linkType: hard +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + languageName: node + linkType: hard + "socks-proxy-agent@npm:^8.0.1": version: 8.0.2 resolution: "socks-proxy-agent@npm:8.0.2" @@ -3304,13 +4945,13 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.7.1": - version: 2.8.1 - resolution: "socks@npm:2.8.1" +"socks@npm:^2.6.2, socks@npm:^2.7.1": + version: 2.8.3 + resolution: "socks@npm:2.8.3" dependencies: ip-address: ^9.0.5 smart-buffer: ^4.2.0 - checksum: 29586d42e9c36c5016632b2bcb6595e3adfbcb694b3a652c51bc8741b079c5ec37bdd5675a1a89a1620078c8137208294991fabb50786f92d47759a725b2b62e + checksum: 7a6b7f6eedf7482b9e4597d9a20e09505824208006ea8f2c49b71657427f3c137ca2ae662089baa73e1971c62322d535d9d0cf1c9235cf6f55e315c18203eadd languageName: node linkType: hard @@ -3397,6 +5038,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 + languageName: node + linkType: hard + "ssri@npm:^10.0.0": version: 10.0.5 resolution: "ssri@npm:10.0.5" @@ -3406,6 +5054,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^9.0.0": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: ^3.1.1 + checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + languageName: node + linkType: hard + "stable-hash@npm:^0.0.4": version: 0.0.4 resolution: "stable-hash@npm:0.0.4" @@ -3413,6 +5070,15 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 + languageName: node + linkType: hard + "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -3427,7 +5093,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -3449,6 +5115,15 @@ __metadata: languageName: node linkType: hard +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: ~5.2.0 + checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + languageName: node + linkType: hard + "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -3490,6 +5165,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -3514,7 +5198,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.2.1": +"tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -3528,6 +5212,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": ^0.1.2 + glob: ^7.1.4 + minimatch: ^3.0.4 + checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 + languageName: node + linkType: hard + "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -3570,6 +5265,20 @@ __metadata: languageName: node linkType: hard +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -3604,6 +5313,13 @@ __metadata: languageName: node linkType: hard +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -3631,6 +5347,22 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 + languageName: node + linkType: hard + +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" + dependencies: + unique-slug: ^3.0.0 + checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f + languageName: node + linkType: hard + "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -3640,6 +5372,15 @@ __metadata: languageName: node linkType: hard +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" + dependencies: + imurmurhash: ^0.1.4 + checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c + languageName: node + linkType: hard + "unique-slug@npm:^4.0.0": version: 4.0.0 resolution: "unique-slug@npm:4.0.0" @@ -3649,6 +5390,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" + dependencies: + escalade: ^3.1.2 + picocolors: ^1.0.1 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 7b74694d96f0c360f01b702e72353dc5a49df4fe6663d3ee4e5c628f061576cddf56af35a3a886238c01dd3d8f231b7a86a8ceaa31e7a9220ae31c1c1238e562 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -3658,6 +5413,13 @@ __metadata: languageName: node linkType: hard +"util-deprecate@npm:^1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + "uuid@npm:^9.0.1": version: 9.0.1 resolution: "uuid@npm:9.0.1" @@ -3792,7 +5554,16 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1": +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: 1.0.12 + checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -3826,6 +5597,15 @@ __metadata: languageName: node linkType: hard +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -3848,6 +5628,23 @@ __metadata: languageName: node linkType: hard +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^3.0.7 + checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c + languageName: node + linkType: hard + "write-file-atomic@npm:^5.0.0": version: 5.0.1 resolution: "write-file-atomic@npm:5.0.1" @@ -3865,6 +5662,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d + languageName: node + linkType: hard + "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" From 83155c1bf14612d370b2db464ed1c488f46bf3df Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 23:22:05 +0200 Subject: [PATCH 04/29] Convert browser config to flat config format --- packages/browser/package.json | 14 ++++++++-- packages/browser/src/index.d.mts | 6 +++++ packages/browser/src/index.js | 27 +++++++++++++------ .../src/{index.test.js => index.test.mjs} | 1 - yarn.lock | 1 + 5 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 packages/browser/src/index.d.mts rename packages/browser/src/{index.test.js => index.test.mjs} (94%) diff --git a/packages/browser/package.json b/packages/browser/package.json index b8b9ff4f..0eb218e7 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -11,7 +11,16 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "src/index.js", + "main": "./src/index.mjs", + "types": "./src/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + } + } + }, "files": [ "src/", "!src/**/*.test.js" @@ -43,6 +52,7 @@ "registry": "https://registry.npmjs.org/" }, "dependencies": { - "@eslint/js": "^9.11.0" + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" } } diff --git a/packages/browser/src/index.d.mts b/packages/browser/src/index.d.mts new file mode 100644 index 00000000..24f348fe --- /dev/null +++ b/packages/browser/src/index.d.mts @@ -0,0 +1,6 @@ +declare module '@metamask/eslint-config-browser' { + import { Linter } from 'eslint'; + + const config: Linter.Config[]; + export default config; +} diff --git a/packages/browser/src/index.js b/packages/browser/src/index.js index 7451b7f3..f650e0ad 100644 --- a/packages/browser/src/index.js +++ b/packages/browser/src/index.js @@ -1,11 +1,22 @@ -const environmentRules = require('./environment.json'); +import globals from 'globals'; -module.exports = { - env: { - browser: true, - }, +import environmentRules from './environment.json' with { type: 'json' }; + +/** + * @type {import('eslint').Linter.Config[]} + */ +const config = [ + { + languageOptions: { + globals: { + ...globals.browser, + }, + }, - rules: { - ...environmentRules, + rules: { + ...environmentRules, + }, }, -}; +]; + +export default config; diff --git a/packages/browser/src/index.test.js b/packages/browser/src/index.test.mjs similarity index 94% rename from packages/browser/src/index.test.js rename to packages/browser/src/index.test.mjs index 00a84d8c..c9fc4129 100644 --- a/packages/browser/src/index.test.js +++ b/packages/browser/src/index.test.mjs @@ -7,7 +7,6 @@ describe('index', () => { it('is a valid ESLint config', async () => { const api = new ESLint({ baseConfig: config, - useEslintrc: false, }); const result = await api.lintText(`console.log('Hello, world!');\n`); diff --git a/yarn.lock b/yarn.lock index a4e87231..bb29243a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -956,6 +956,7 @@ __metadata: eslint-plugin-import-x: ^4.3.0 eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-prettier: ^5.2.1 + globals: ^15.9.0 prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 From 462fd6b82bb3487e21ba0d69b730a601ba0fd600 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 23:24:28 +0200 Subject: [PATCH 05/29] Convert CommonJS config to flat config format --- packages/browser/src/{index.js => index.mjs} | 0 packages/commonjs/package.json | 14 ++++++++++-- packages/commonjs/src/index.d.mts | 6 +++++ packages/commonjs/src/index.js | 11 ---------- packages/commonjs/src/index.mjs | 22 +++++++++++++++++++ .../src/{index.test.js => index.test.mjs} | 1 - yarn.lock | 1 + 7 files changed, 41 insertions(+), 14 deletions(-) rename packages/browser/src/{index.js => index.mjs} (100%) create mode 100644 packages/commonjs/src/index.d.mts delete mode 100644 packages/commonjs/src/index.js create mode 100644 packages/commonjs/src/index.mjs rename packages/commonjs/src/{index.test.js => index.test.mjs} (94%) diff --git a/packages/browser/src/index.js b/packages/browser/src/index.mjs similarity index 100% rename from packages/browser/src/index.js rename to packages/browser/src/index.mjs diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index bb4a850f..f95f642e 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -11,7 +11,16 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "src/index.js", + "main": "./src/index.mjs", + "types": "./src/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + } + } + }, "files": [ "src/", "!src/**/*.test.js" @@ -43,6 +52,7 @@ "registry": "https://registry.npmjs.org/" }, "dependencies": { - "@eslint/js": "^9.11.0" + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" } } diff --git a/packages/commonjs/src/index.d.mts b/packages/commonjs/src/index.d.mts new file mode 100644 index 00000000..f97dcb50 --- /dev/null +++ b/packages/commonjs/src/index.d.mts @@ -0,0 +1,6 @@ +declare module '@metamask/eslint-config-commonjs' { + import { Linter } from 'eslint'; + + const config: Linter.Config[]; + export default config; +} diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js deleted file mode 100644 index 60f6f342..00000000 --- a/packages/commonjs/src/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const environmentRules = require('./environment.json'); - -module.exports = { - env: { - commonjs: true, - }, - - rules: { - ...environmentRules, - }, -}; diff --git a/packages/commonjs/src/index.mjs b/packages/commonjs/src/index.mjs new file mode 100644 index 00000000..26fb83db --- /dev/null +++ b/packages/commonjs/src/index.mjs @@ -0,0 +1,22 @@ +import globals from 'globals'; + +import environmentRules from './environment.json' with { type: 'json' }; + +/** + * @type {import('eslint').Linter.Config[]} + */ +const config = [ + { + languageOptions: { + globals: { + ...globals.commonjs, + }, + }, + + rules: { + ...environmentRules, + }, + }, +]; + +export default config; diff --git a/packages/commonjs/src/index.test.js b/packages/commonjs/src/index.test.mjs similarity index 94% rename from packages/commonjs/src/index.test.js rename to packages/commonjs/src/index.test.mjs index 00a84d8c..c9fc4129 100644 --- a/packages/commonjs/src/index.test.js +++ b/packages/commonjs/src/index.test.mjs @@ -7,7 +7,6 @@ describe('index', () => { it('is a valid ESLint config', async () => { const api = new ESLint({ baseConfig: config, - useEslintrc: false, }); const result = await api.lintText(`console.log('Hello, world!');\n`); diff --git a/yarn.lock b/yarn.lock index bb29243a..6f450900 100644 --- a/yarn.lock +++ b/yarn.lock @@ -976,6 +976,7 @@ __metadata: eslint-plugin-import-x: ^4.3.0 eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-prettier: ^5.2.1 + globals: ^15.9.0 prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 From c329998371060064c4c17d089bed4151f76d8e4e Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 23:30:41 +0200 Subject: [PATCH 06/29] Convert Jest config to flat config format --- packages/jest/package.json | 14 +++++- packages/jest/src/index.d.mts | 6 +++ packages/jest/src/index.js | 35 -------------- packages/jest/src/index.mjs | 46 +++++++++++++++++++ .../src/{index.test.js => index.test.mjs} | 1 - yarn.lock | 1 + 6 files changed, 65 insertions(+), 38 deletions(-) create mode 100644 packages/jest/src/index.d.mts delete mode 100644 packages/jest/src/index.js create mode 100644 packages/jest/src/index.mjs rename packages/jest/src/{index.test.js => index.test.mjs} (94%) diff --git a/packages/jest/package.json b/packages/jest/package.json index 037e1c77..2919d114 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -11,7 +11,16 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "src/index.js", + "main": "./src/index.mjs", + "types": "./src/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + } + } + }, "files": [ "src/", "!src/**/*.test.js" @@ -46,6 +55,7 @@ "registry": "https://registry.npmjs.org/" }, "dependencies": { - "@eslint/js": "^9.11.0" + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" } } diff --git a/packages/jest/src/index.d.mts b/packages/jest/src/index.d.mts new file mode 100644 index 00000000..2cc70c64 --- /dev/null +++ b/packages/jest/src/index.d.mts @@ -0,0 +1,6 @@ +declare module '@metamask/eslint-config-jest' { + import { Linter } from 'eslint'; + + const config: Linter.Config[]; + export default config; +} diff --git a/packages/jest/src/index.js b/packages/jest/src/index.js deleted file mode 100644 index aadd6475..00000000 --- a/packages/jest/src/index.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - plugins: ['jest'], - - env: { - 'jest/globals': true, - }, - - extends: ['plugin:jest/recommended', 'plugin:jest/style'], - - rules: { - 'jest/consistent-test-it': ['error', { fn: 'it' }], - 'jest/no-duplicate-hooks': 'error', - 'jest/no-if': 'error', - 'jest/no-test-return-statement': 'error', - 'jest/prefer-hooks-on-top': 'error', - 'jest/prefer-lowercase-title': ['error', { ignore: ['describe'] }], - 'jest/prefer-spy-on': 'error', - 'jest/prefer-strict-equal': 'error', - 'jest/prefer-todo': 'error', - 'jest/require-top-level-describe': 'error', - 'jest/require-to-throw-message': 'error', - 'jest/valid-expect': ['error', { alwaysAwait: true }], - 'jest/no-restricted-matchers': [ - 'error', - { - resolves: 'Use `expect(await promise)` instead.', - toBeFalsy: 'Avoid `toBeFalsy`', - toBeTruthy: 'Avoid `toBeTruthy`', - toMatchSnapshot: 'Use `toMatchInlineSnapshot()` instead', - toThrowErrorMatchingSnapshot: - 'Use `toThrowErrorMatchingInlineSnapshot()` instead', - }, - ], - }, -}; diff --git a/packages/jest/src/index.mjs b/packages/jest/src/index.mjs new file mode 100644 index 00000000..9f181c26 --- /dev/null +++ b/packages/jest/src/index.mjs @@ -0,0 +1,46 @@ +import jest from 'eslint-plugin-jest'; +import globals from 'globals'; + +/** + * @type {import('eslint').Linter.Config[]} + */ +const config = [ + jest.configs['flat/recommended'], + jest.configs['flat/style'], + + { + languageOptions: { + globals: { + ...globals.jest, + }, + }, + + rules: { + 'jest/consistent-test-it': ['error', { fn: 'it' }], + 'jest/no-duplicate-hooks': 'error', + 'jest/no-if': 'error', + 'jest/no-test-return-statement': 'error', + 'jest/prefer-hooks-on-top': 'error', + 'jest/prefer-lowercase-title': ['error', { ignore: ['describe'] }], + 'jest/prefer-spy-on': 'error', + 'jest/prefer-strict-equal': 'error', + 'jest/prefer-todo': 'error', + 'jest/require-top-level-describe': 'error', + 'jest/require-to-throw-message': 'error', + 'jest/valid-expect': ['error', { alwaysAwait: true }], + 'jest/no-restricted-matchers': [ + 'error', + { + resolves: 'Use `expect(await promise)` instead.', + toBeFalsy: 'Avoid `toBeFalsy`', + toBeTruthy: 'Avoid `toBeTruthy`', + toMatchSnapshot: 'Use `toMatchInlineSnapshot()` instead', + toThrowErrorMatchingSnapshot: + 'Use `toThrowErrorMatchingInlineSnapshot()` instead', + }, + ], + }, + }, +]; + +export default config; diff --git a/packages/jest/src/index.test.js b/packages/jest/src/index.test.mjs similarity index 94% rename from packages/jest/src/index.test.js rename to packages/jest/src/index.test.mjs index 00a84d8c..c9fc4129 100644 --- a/packages/jest/src/index.test.js +++ b/packages/jest/src/index.test.mjs @@ -7,7 +7,6 @@ describe('index', () => { it('is a valid ESLint config', async () => { const api = new ESLint({ baseConfig: config, - useEslintrc: false, }); const result = await api.lintText(`console.log('Hello, world!');\n`); diff --git a/yarn.lock b/yarn.lock index 6f450900..c72be286 100644 --- a/yarn.lock +++ b/yarn.lock @@ -998,6 +998,7 @@ __metadata: eslint-plugin-jest: ^28.8.3 eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-prettier: ^5.2.1 + globals: ^15.9.0 prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 From 84cdc64c5823e0bbdb9202f88925fe74455b983f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 23:33:10 +0200 Subject: [PATCH 07/29] Convert Mocha config to flat config format --- packages/mocha/package.json | 11 +++++- packages/mocha/src/index.d.mts | 6 ++++ packages/mocha/src/index.js | 36 ------------------- packages/mocha/src/index.mjs | 34 ++++++++++++++++++ .../src/{index.test.js => index.test.mjs} | 1 - 5 files changed, 50 insertions(+), 38 deletions(-) create mode 100644 packages/mocha/src/index.d.mts delete mode 100644 packages/mocha/src/index.js create mode 100644 packages/mocha/src/index.mjs rename packages/mocha/src/{index.test.js => index.test.mjs} (94%) diff --git a/packages/mocha/package.json b/packages/mocha/package.json index 00e3c094..b324470d 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -11,7 +11,16 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "src/index.js", + "main": "./src/index.mjs", + "types": "./src/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + } + } + }, "files": [ "src/", "!src/**/*.test.js" diff --git a/packages/mocha/src/index.d.mts b/packages/mocha/src/index.d.mts new file mode 100644 index 00000000..5425596f --- /dev/null +++ b/packages/mocha/src/index.d.mts @@ -0,0 +1,6 @@ +declare module '@metamask/eslint-config-mocha' { + import { Linter } from 'eslint'; + + const config: Linter.Config[]; + export default config; +} diff --git a/packages/mocha/src/index.js b/packages/mocha/src/index.js deleted file mode 100644 index aa485f94..00000000 --- a/packages/mocha/src/index.js +++ /dev/null @@ -1,36 +0,0 @@ -const simpleTestNameRegex = '^[#_]{0,2}[A-Za-z0-9]'; - -module.exports = { - plugins: ['mocha'], - - env: { - mocha: true, - }, - - extends: ['plugin:mocha/recommended'], - - parserOptions: { - ecmaVersion: '2020', - }, - - rules: { - 'mocha/no-exclusive-tests': 'error', - 'mocha/no-hooks-for-single-case': 'error', - 'mocha/no-pending-tests': 'error', - 'mocha/no-return-from-async': 'error', - 'mocha/no-skipped-tests': 'error', - 'mocha/no-top-level-hooks': 'error', - 'mocha/valid-suite-description': [ - 'error', - simpleTestNameRegex, - ['describe', 'context', 'suite'], - 'Invalid test suite description found', - ], - 'mocha/valid-test-description': [ - 'error', - simpleTestNameRegex, - ['it', 'test', 'specify'], - 'Invalid test description found', - ], - }, -}; diff --git a/packages/mocha/src/index.mjs b/packages/mocha/src/index.mjs new file mode 100644 index 00000000..3eec1214 --- /dev/null +++ b/packages/mocha/src/index.mjs @@ -0,0 +1,34 @@ +import mocha from 'eslint-plugin-mocha'; + +const SIMPLE_TEST_NAME_REGEX = '^[#_]{0,2}[A-Za-z0-9]'; + +/** + * @type {import('eslint').Linter.Config[]} + */ +const config = [ + mocha.configs.flat.recommended, + { + rules: { + 'mocha/no-exclusive-tests': 'error', + 'mocha/no-hooks-for-single-case': 'error', + 'mocha/no-pending-tests': 'error', + 'mocha/no-return-from-async': 'error', + 'mocha/no-skipped-tests': 'error', + 'mocha/no-top-level-hooks': 'error', + 'mocha/valid-suite-description': [ + 'error', + SIMPLE_TEST_NAME_REGEX, + ['describe', 'context', 'suite'], + 'Invalid test suite description found', + ], + 'mocha/valid-test-description': [ + 'error', + SIMPLE_TEST_NAME_REGEX, + ['it', 'test', 'specify'], + 'Invalid test description found', + ], + }, + }, +]; + +export default config; diff --git a/packages/mocha/src/index.test.js b/packages/mocha/src/index.test.mjs similarity index 94% rename from packages/mocha/src/index.test.js rename to packages/mocha/src/index.test.mjs index 00a84d8c..c9fc4129 100644 --- a/packages/mocha/src/index.test.js +++ b/packages/mocha/src/index.test.mjs @@ -7,7 +7,6 @@ describe('index', () => { it('is a valid ESLint config', async () => { const api = new ESLint({ baseConfig: config, - useEslintrc: false, }); const result = await api.lintText(`console.log('Hello, world!');\n`); From 815177e2d072326e210179a18db355eac2522d93 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Sun, 22 Sep 2024 23:37:29 +0200 Subject: [PATCH 08/29] Convert Node.js config to flat config format --- packages/nodejs/package.json | 5 +- packages/nodejs/src/index.d.mts | 6 ++ packages/nodejs/src/index.js | 58 ----------------- packages/nodejs/src/index.mjs | 63 +++++++++++++++++++ .../src/{index.test.js => index.test.mjs} | 1 - yarn.lock | 1 + 6 files changed, 73 insertions(+), 61 deletions(-) create mode 100644 packages/nodejs/src/index.d.mts delete mode 100644 packages/nodejs/src/index.js create mode 100644 packages/nodejs/src/index.mjs rename packages/nodejs/src/{index.test.js => index.test.mjs} (94%) diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index ba3b9dfc..fe202257 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -11,7 +11,7 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "src/index.js", + "main": "src/index.mjs", "files": [ "src/", "!src/**/*.test.js" @@ -46,6 +46,7 @@ "registry": "https://registry.npmjs.org/" }, "dependencies": { - "@eslint/js": "^9.11.0" + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" } } diff --git a/packages/nodejs/src/index.d.mts b/packages/nodejs/src/index.d.mts new file mode 100644 index 00000000..a2b4e72f --- /dev/null +++ b/packages/nodejs/src/index.d.mts @@ -0,0 +1,6 @@ +declare module '@metamask/eslint-config-nodejs' { + import { Linter } from 'eslint'; + + const config: Linter.Config[]; + export default config; +} diff --git a/packages/nodejs/src/index.js b/packages/nodejs/src/index.js deleted file mode 100644 index ec5c612a..00000000 --- a/packages/nodejs/src/index.js +++ /dev/null @@ -1,58 +0,0 @@ -const environmentRules = require('./environment.json'); - -module.exports = { - plugins: ['n'], - - env: { - // See comment under `parserOptions` below. - es2017: true, - node: true, - }, - - // The recommended Node.js plugin config sets the correct `sourceType` per the - // `type` field of the local package.json file, so we don't set that here. - parserOptions: { - // The EcmaScript version option here and for `env` above need to be set to - // the same values as in the base config, or they will be overwritten by the - // recommended Node.js plugin rules. - ecmaVersion: 2017, - }, - - extends: ['plugin:n/recommended'], - - rules: { - ...environmentRules, - - // Possible Errors - 'n/handle-callback-err': ['error', '^(err|error)$'], - 'n/no-callback-literal': 'error', - 'n/no-missing-import': 'off', // Duplicates `import-x/no-unresolved` - 'n/no-missing-require': 'off', // Duplicates `import-x/no-unresolved` - 'n/no-new-require': 'error', - 'n/no-path-concat': 'error', - 'n/no-unsupported-features/es-syntax': 'off', - - // Stylistic rules - 'n/callback-return': 'error', - 'n/exports-style': 'error', - 'n/global-require': 'error', - 'n/no-mixed-requires': 'error', - 'n/no-process-env': 'error', - 'n/no-restricted-import': 'error', - 'n/no-restricted-require': 'error', - 'n/no-sync': 'error', - 'n/prefer-global/buffer': 'error', - 'n/prefer-global/console': 'error', - 'n/prefer-global/process': 'error', - 'n/prefer-global/text-decoder': 'error', - 'n/prefer-global/text-encoder': 'error', - 'n/prefer-global/url-search-params': 'error', - 'n/prefer-global/url': 'error', - 'n/prefer-promises/dns': 'error', - 'n/prefer-promises/fs': 'error', - - // Enabled in the base config, but this should be allowed in Node.js - // projects. - 'import-x/no-nodejs-modules': 'off', - }, -}; diff --git a/packages/nodejs/src/index.mjs b/packages/nodejs/src/index.mjs new file mode 100644 index 00000000..d509c2bb --- /dev/null +++ b/packages/nodejs/src/index.mjs @@ -0,0 +1,63 @@ +import node from 'eslint-plugin-n'; +import globals from 'globals'; + +import environmentRules from './environment.json' with { type: 'json' }; + +/** + * @type {import('eslint').Linter.Config[]} + */ +const config = [ + node.configs['flat/recommended'], + { + languageOptions: { + globals: { + // See comment below. + ...globals.es2022, + ...globals.node, + }, + + // The EcmaScript version option here and for `env` above need to be set + // to the same values as in the base config, or they will be overwritten + // by the recommended Node.js plugin rules. + ecmaVersion: 2022, + }, + + rules: { + ...environmentRules, + + // Possible Errors + 'n/handle-callback-err': ['error', '^(err|error)$'], + 'n/no-callback-literal': 'error', + 'n/no-missing-import': 'off', // Duplicates `import-x/no-unresolved` + 'n/no-missing-require': 'off', // Duplicates `import-x/no-unresolved` + 'n/no-new-require': 'error', + 'n/no-path-concat': 'error', + 'n/no-unsupported-features/es-syntax': 'off', + + // Stylistic rules + 'n/callback-return': 'error', + 'n/exports-style': 'error', + 'n/global-require': 'error', + 'n/no-mixed-requires': 'error', + 'n/no-process-env': 'error', + 'n/no-restricted-import': 'error', + 'n/no-restricted-require': 'error', + 'n/no-sync': 'error', + 'n/prefer-global/buffer': 'error', + 'n/prefer-global/console': 'error', + 'n/prefer-global/process': 'error', + 'n/prefer-global/text-decoder': 'error', + 'n/prefer-global/text-encoder': 'error', + 'n/prefer-global/url-search-params': 'error', + 'n/prefer-global/url': 'error', + 'n/prefer-promises/dns': 'error', + 'n/prefer-promises/fs': 'error', + + // Enabled in the base config, but this should be allowed in Node.js + // projects. + 'import-x/no-nodejs-modules': 'off', + }, + }, +]; + +export default config; diff --git a/packages/nodejs/src/index.test.js b/packages/nodejs/src/index.test.mjs similarity index 94% rename from packages/nodejs/src/index.test.js rename to packages/nodejs/src/index.test.mjs index 00a84d8c..c9fc4129 100644 --- a/packages/nodejs/src/index.test.js +++ b/packages/nodejs/src/index.test.mjs @@ -7,7 +7,6 @@ describe('index', () => { it('is a valid ESLint config', async () => { const api = new ESLint({ baseConfig: config, - useEslintrc: false, }); const result = await api.lintText(`console.log('Hello, world!');\n`); diff --git a/yarn.lock b/yarn.lock index c72be286..858f9136 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1043,6 +1043,7 @@ __metadata: eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-n: ^17.10.3 eslint-plugin-prettier: ^5.2.1 + globals: ^15.9.0 prettier: ^3.3.3 peerDependencies: "@metamask/eslint-config": ^13.0.0 From 935cd51946cfa02a5db6aace7f5960aa3ac276a5 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 00:01:55 +0200 Subject: [PATCH 09/29] Convert TypeScript config to flat config format --- packages/nodejs/package.json | 11 +- packages/typescript/package.json | 23 +- packages/typescript/src/index.d.mts | 6 + packages/typescript/src/index.js | 207 ---------------- packages/typescript/src/index.mjs | 222 ++++++++++++++++++ .../src/{index.test.js => index.test.mjs} | 18 +- yarn.lock | 91 ++++++- 7 files changed, 343 insertions(+), 235 deletions(-) create mode 100644 packages/typescript/src/index.d.mts delete mode 100644 packages/typescript/src/index.js create mode 100644 packages/typescript/src/index.mjs rename packages/typescript/src/{index.test.js => index.test.mjs} (66%) diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index fe202257..075fa7c3 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -11,7 +11,16 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "src/index.mjs", + "main": "./src/index.mjs", + "types": "./src/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + } + } + }, "files": [ "src/", "!src/**/*.test.js" diff --git a/packages/typescript/package.json b/packages/typescript/package.json index a6126817..01d540a5 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -11,7 +11,16 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "src/index.js", + "main": "./src/index.mjs", + "types": "./src/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + } + } + }, "files": [ "src/", "!src/**/*.test.js", @@ -26,22 +35,22 @@ "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", - "@typescript-eslint/eslint-plugin": "^8.6.0", - "@typescript-eslint/parser": "^8.6.0", "eslint": "^9.11.0", "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import-x": "^4.3.0", "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-prettier": "^5.2.1", "prettier": "^3.3.3", - "typescript": "~5.5.4" + "typescript": "~5.5.4", + "typescript-eslint": "^8.6.0" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", - "@typescript-eslint/eslint-plugin": "^8.6.0", - "@typescript-eslint/parser": "^8.6.0", "eslint": "^9.11.0", - "typescript": ">=4.8.4 <5.6" + "eslint-import-resolver-typescript": "^3.6.3", + "typescript": ">=4.8.4 <5.6", + "typescript-eslint": "^8.6.0" }, "engines": { "node": "^18.18 || >=20" diff --git a/packages/typescript/src/index.d.mts b/packages/typescript/src/index.d.mts new file mode 100644 index 00000000..e6d0da6a --- /dev/null +++ b/packages/typescript/src/index.d.mts @@ -0,0 +1,6 @@ +declare module '@metamask/eslint-config-typescript' { + import { Linter } from 'eslint'; + + const config: Linter.Config[]; + export default config; +} diff --git a/packages/typescript/src/index.js b/packages/typescript/src/index.js deleted file mode 100644 index 0984674b..00000000 --- a/packages/typescript/src/index.js +++ /dev/null @@ -1,207 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - - env: { - // See comment under `parserOptions` below. - es2020: true, - }, - - parserOptions: { - // The `esXXXX` option under `env` is supposed to set the correct - // `ecmaVersion` option here, but we've had issues with it being - // overridden in the past and therefore set it explicitly. - // - // For TypeScript, the EcmaScript version always be the latest release - // (not pre-release) here: https://github.com/tc39/ecma262/releases - ecmaVersion: 2020, - sourceType: 'module', - - // This enables support for linting rules that require type information. We - // assume that the project has a `tsconfig.json` file in the directory where - // ESLint is being run. - tsconfigRootDir: process.cwd(), - project: ['./tsconfig.json'], - }, - - plugins: ['@typescript-eslint', 'jsdoc'], - - extends: [ - 'plugin:@typescript-eslint/recommended', - 'plugin:@typescript-eslint/recommended-type-checked', - 'plugin:import-x/typescript', - ], - - rules: { - // Handled by TypeScript - 'import-x/no-unresolved': 'off', - - // Our rules - '@typescript-eslint/array-type': 'error', - '@typescript-eslint/consistent-type-assertions': 'error', - '@typescript-eslint/consistent-type-definitions': ['error', 'type'], - '@typescript-eslint/consistent-type-imports': 'error', - '@typescript-eslint/explicit-function-return-type': 'error', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-namespace': [ - 'error', - { allowDefinitionFiles: true }, - ], - '@typescript-eslint/no-non-null-assertion': 'error', - '@typescript-eslint/parameter-properties': 'error', - '@typescript-eslint/prefer-for-of': 'error', - '@typescript-eslint/prefer-function-type': 'error', - '@typescript-eslint/prefer-optional-chain': 'error', - '@typescript-eslint/unified-signatures': 'error', - '@typescript-eslint/no-dupe-class-members': 'error', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - vars: 'all', - args: 'all', - argsIgnorePattern: '[_]+', - ignoreRestSiblings: true, - }, - ], - - // Recommended rules that require type information - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - - // Recommended rules that we do not want to use - '@typescript-eslint/require-await': 'off', - - // Our rules that require type information - '@typescript-eslint/consistent-type-exports': 'error', - '@typescript-eslint/naming-convention': [ - 'error', - { - selector: 'default', - format: ['camelCase'], - leadingUnderscore: 'allow', - trailingUnderscore: 'forbid', - }, - { - selector: 'enumMember', - format: ['PascalCase'], - }, - { - selector: 'interface', - format: ['PascalCase'], - custom: { - regex: '^I[A-Z]', - match: false, - }, - }, - { - selector: 'objectLiteralMethod', - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - }, - { - selector: 'objectLiteralProperty', - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - }, - { - selector: 'typeLike', - format: ['PascalCase'], - }, - { - selector: 'typeParameter', - format: ['PascalCase'], - custom: { - regex: '^.{3,}', - match: true, - }, - }, - { - selector: 'variable', - format: ['camelCase', 'UPPER_CASE', 'PascalCase'], - leadingUnderscore: 'allow', - }, - { - selector: 'parameter', - format: ['camelCase', 'PascalCase'], - leadingUnderscore: 'allow', - }, - { - selector: [ - 'classProperty', - 'objectLiteralProperty', - 'typeProperty', - 'classMethod', - 'objectLiteralMethod', - 'typeMethod', - 'accessor', - 'enumMember', - ], - format: null, - modifiers: ['requiresQuotes'], - }, - ], - '@typescript-eslint/no-meaningless-void-operator': 'error', - '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error', - '@typescript-eslint/no-unnecessary-qualifier': 'error', - '@typescript-eslint/no-unnecessary-type-arguments': 'error', - '@typescript-eslint/prefer-enum-initializers': 'error', - '@typescript-eslint/prefer-includes': 'error', - '@typescript-eslint/prefer-nullish-coalescing': 'error', - '@typescript-eslint/prefer-readonly': 'error', - '@typescript-eslint/prefer-reduce-type-parameter': 'error', - '@typescript-eslint/prefer-string-starts-ends-with': 'error', - '@typescript-eslint/promise-function-async': 'error', - '@typescript-eslint/restrict-template-expressions': [ - 'error', - { - allowBoolean: true, - allowNumber: true, - }, - ], - '@typescript-eslint/switch-exhaustiveness-check': 'error', - - 'default-param-last': 'off', - '@typescript-eslint/default-param-last': 'error', - - 'no-shadow': 'off', - '@typescript-eslint/no-shadow': ['error', { builtinGlobals: true }], - - '@typescript-eslint/no-unused-expressions': [ - 'error', - { allowShortCircuit: true, allowTernary: true }, - ], - - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': ['error', { functions: false }], - - 'no-useless-constructor': 'off', - '@typescript-eslint/no-useless-constructor': 'error', - - /* jsdoc plugin rules */ - - 'jsdoc/check-syntax': 'error', - - // This is enabled here rather than in the base config because it doesn't play nicely with - // multi-line JSDoc types. - 'jsdoc/check-indentation': 'error', - - // Use TypeScript types rather than JSDoc types. - 'jsdoc/no-types': 'error', - - // These all conflict with `jsdoc/no-types`. - 'jsdoc/require-param-type': 'off', - 'jsdoc/require-property-type': 'off', - 'jsdoc/require-returns-type': 'off', - 'jsdoc/valid-types': 'off', - - // Prefer hash names over TypeScript's `private` modifier. - 'no-restricted-syntax': [ - 'error', - { - selector: - "PropertyDefinition[accessibility='private'], MethodDefinition[accessibility='private'], TSParameterProperty[accessibility='private']", - message: 'Use a hash name instead.', - }, - ], - }, -}; diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs new file mode 100644 index 00000000..451361dd --- /dev/null +++ b/packages/typescript/src/index.mjs @@ -0,0 +1,222 @@ +import resolver from 'eslint-import-resolver-typescript'; +import importX from 'eslint-plugin-import-x'; +import jsdoc from 'eslint-plugin-jsdoc'; +import typescript from 'typescript-eslint'; + +/** + * @type {import('eslint').Linter.Config[]} + */ +const config = [ + ...typescript.configs.recommended, + ...typescript.configs.recommendedTypeChecked, + importX.flatConfigs.typescript, + jsdoc.configs['flat/recommended-typescript'], + + { + name: '@metamask/eslint-config-typescript', + + files: [ + '**/*.ts', + '**/*.tsx', + '**/*.mts', + '**/*.cts', + '**/*.mtsx', + '**/*.ctsx', + ], + + languageOptions: { + sourceType: 'module', + parserOptions: { + // This option requires `tsconfigRootDir` to be set, but this needs to + // be set on a per-project basis. + projectService: true, + }, + }, + + settings: { + 'import-x/resolver': { + name: 'typescript', + resolver, + }, + }, + + rules: { + // Handled by TypeScript + 'import-x/no-unresolved': 'off', + + // Our rules + '@typescript-eslint/array-type': 'error', + '@typescript-eslint/consistent-type-assertions': 'error', + '@typescript-eslint/consistent-type-definitions': ['error', 'type'], + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/explicit-function-return-type': 'error', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-namespace': [ + 'error', + { allowDefinitionFiles: true }, + ], + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/parameter-properties': 'error', + '@typescript-eslint/prefer-for-of': 'error', + '@typescript-eslint/prefer-function-type': 'error', + '@typescript-eslint/prefer-optional-chain': 'error', + '@typescript-eslint/unified-signatures': 'error', + '@typescript-eslint/no-dupe-class-members': 'error', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'all', + argsIgnorePattern: '[_]+', + ignoreRestSiblings: true, + }, + ], + + // Recommended rules that require type information + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + + // Recommended rules that we do not want to use + '@typescript-eslint/require-await': 'off', + + // Our rules that require type information + '@typescript-eslint/consistent-type-exports': 'error', + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'default', + format: ['camelCase'], + leadingUnderscore: 'allow', + trailingUnderscore: 'forbid', + }, + { + selector: 'enumMember', + format: ['PascalCase'], + }, + { + selector: 'interface', + format: ['PascalCase'], + custom: { + regex: '^I[A-Z]', + match: false, + }, + }, + { + selector: 'objectLiteralMethod', + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + }, + { + selector: 'objectLiteralProperty', + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + }, + { + selector: 'typeLike', + format: ['PascalCase'], + }, + { + selector: 'typeParameter', + format: ['PascalCase'], + custom: { + regex: '^.{3,}', + match: true, + }, + }, + { + selector: 'variable', + format: ['camelCase', 'UPPER_CASE', 'PascalCase'], + leadingUnderscore: 'allow', + }, + { + selector: 'parameter', + format: ['camelCase', 'PascalCase'], + leadingUnderscore: 'allow', + }, + { + selector: [ + 'classProperty', + 'objectLiteralProperty', + 'typeProperty', + 'classMethod', + 'objectLiteralMethod', + 'typeMethod', + 'accessor', + 'enumMember', + ], + format: null, + modifiers: ['requiresQuotes'], + }, + ], + '@typescript-eslint/no-meaningless-void-operator': 'error', + '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error', + '@typescript-eslint/no-unnecessary-qualifier': 'error', + '@typescript-eslint/no-unnecessary-type-arguments': 'error', + '@typescript-eslint/prefer-enum-initializers': 'error', + '@typescript-eslint/prefer-includes': 'error', + '@typescript-eslint/prefer-nullish-coalescing': 'error', + '@typescript-eslint/prefer-readonly': 'error', + '@typescript-eslint/prefer-reduce-type-parameter': 'error', + '@typescript-eslint/prefer-string-starts-ends-with': 'error', + '@typescript-eslint/promise-function-async': 'error', + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { + allowBoolean: true, + allowNumber: true, + }, + ], + '@typescript-eslint/switch-exhaustiveness-check': 'error', + + 'default-param-last': 'off', + '@typescript-eslint/default-param-last': 'error', + + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': ['error', { builtinGlobals: true }], + + '@typescript-eslint/no-unused-expressions': [ + 'error', + { allowShortCircuit: true, allowTernary: true }, + ], + + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': [ + 'error', + { functions: false }, + ], + + 'no-useless-constructor': 'off', + '@typescript-eslint/no-useless-constructor': 'error', + + /* jsdoc plugin rules */ + + 'jsdoc/check-syntax': 'error', + + // This is enabled here rather than in the base config because it doesn't play nicely with + // multi-line JSDoc types. + 'jsdoc/check-indentation': 'error', + + // Use TypeScript types rather than JSDoc types. + 'jsdoc/no-types': 'error', + + // These all conflict with `jsdoc/no-types`. + 'jsdoc/require-param-type': 'off', + 'jsdoc/require-property-type': 'off', + 'jsdoc/require-returns-type': 'off', + 'jsdoc/valid-types': 'off', + + // Prefer hash names over TypeScript's `private` modifier. + 'no-restricted-syntax': [ + 'error', + { + selector: + "PropertyDefinition[accessibility='private'], MethodDefinition[accessibility='private'], TSParameterProperty[accessibility='private']", + message: 'Use a hash name instead.', + }, + ], + }, + }, +]; + +export default config; diff --git a/packages/typescript/src/index.test.js b/packages/typescript/src/index.test.mjs similarity index 66% rename from packages/typescript/src/index.test.js rename to packages/typescript/src/index.test.mjs index 2ec94d33..60b910fc 100644 --- a/packages/typescript/src/index.test.js +++ b/packages/typescript/src/index.test.mjs @@ -3,19 +3,21 @@ import { resolve } from 'path'; import { describe, it, expect } from 'vitest'; import config from '.'; +import globals from 'globals'; describe('index', () => { it('is a valid ESLint config', async () => { const api = new ESLint({ baseConfig: config, - useEslintrc: false, overrideConfig: { - env: { - node: true, - }, - parserOptions: { - tsconfigRootDir: resolve(import.meta.dirname, '..'), - project: 'tsconfig.json', + languageOptions: { + globals: { + ...globals.node, + }, + parserOptions: { + tsconfigRootDir: resolve(import.meta.dirname, '..'), + project: 'tsconfig.json', + } }, }, }); @@ -23,7 +25,7 @@ describe('index', () => { // In order to test rules that require type information, we need to actually // compile the file with TypeScript, so rather than using `api.lintText()`, // we use `api.lintFiles()` and pass in a file that we know will pass. - const result = await api.lintFiles(resolve(__dirname, '__test__/dummy.ts')); + const result = await api.lintFiles(resolve(import.meta.dirname, '__test__/dummy.ts')); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); diff --git a/yarn.lock b/yarn.lock index 858f9136..5fec23ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1060,21 +1060,21 @@ __metadata: "@jest/globals": ^29.7.0 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 - "@typescript-eslint/eslint-plugin": ^8.6.0 - "@typescript-eslint/parser": ^8.6.0 eslint: ^9.11.0 eslint-config-prettier: ^9.1.0 + eslint-import-resolver-typescript: ^3.6.3 eslint-plugin-import-x: ^4.3.0 eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-prettier: ^5.2.1 prettier: ^3.3.3 typescript: ~5.5.4 + typescript-eslint: ^8.6.0 peerDependencies: "@metamask/eslint-config": ^13.0.0 - "@typescript-eslint/eslint-plugin": ^8.6.0 - "@typescript-eslint/parser": ^8.6.0 eslint: ^9.11.0 + eslint-import-resolver-typescript: ^3.6.3 typescript: ">=4.8.4 <5.6" + typescript-eslint: ^8.6.0 languageName: unknown linkType: soft @@ -1180,6 +1180,13 @@ __metadata: languageName: node linkType: hard +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815 + languageName: node + linkType: hard + "@npmcli/agent@npm:^2.0.0": version: 2.2.1 resolution: "@npmcli/agent@npm:2.2.1" @@ -1564,7 +1571,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^8.6.0": +"@typescript-eslint/eslint-plugin@npm:8.6.0": version: 8.6.0 resolution: "@typescript-eslint/eslint-plugin@npm:8.6.0" dependencies: @@ -1587,7 +1594,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/parser@npm:^8.6.0": +"@typescript-eslint/parser@npm:8.6.0": version: 8.6.0 resolution: "@typescript-eslint/parser@npm:8.6.0" dependencies: @@ -2283,7 +2290,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -2408,7 +2415,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.0": +"enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.17.0": version: 5.17.1 resolution: "enhanced-resolve@npm:5.17.1" dependencies: @@ -2573,6 +2580,43 @@ __metadata: languageName: node linkType: hard +"eslint-import-resolver-typescript@npm:^3.6.3": + version: 3.6.3 + resolution: "eslint-import-resolver-typescript@npm:3.6.3" + dependencies: + "@nolyfill/is-core-module": 1.0.39 + debug: ^4.3.5 + enhanced-resolve: ^5.15.0 + eslint-module-utils: ^2.8.1 + fast-glob: ^3.3.2 + get-tsconfig: ^4.7.5 + is-bun-module: ^1.0.2 + is-glob: ^4.0.3 + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 1ed0cab4f3852de1b14ea6978e76c27694b253a289c2030a35847ba8ab6ac4258d513877f83ea7bc265f746d570240a6348b11d77cc9cd77589749ad86a32234 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.8.1": + version: 2.11.0 + resolution: "eslint-module-utils@npm:2.11.0" + dependencies: + debug: ^3.2.7 + peerDependenciesMeta: + eslint: + optional: true + checksum: 8c2ecff3484835e031c8f1aa44119be65a058d195cce7b3ac827ad7ccc8bb5f9bcdd85230e2e3398981d07789bf4d90f3b81d106e67faf3cd26e0b34d73093af + languageName: node + linkType: hard + "eslint-plugin-es-x@npm:^7.5.0": version: 7.6.0 resolution: "eslint-plugin-es-x@npm:7.6.0" @@ -3157,12 +3201,12 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.3": - version: 4.7.5 - resolution: "get-tsconfig@npm:4.7.5" +"get-tsconfig@npm:^4.7.0, get-tsconfig@npm:^4.7.3, get-tsconfig@npm:^4.7.5": + version: 4.8.1 + resolution: "get-tsconfig@npm:4.8.1" dependencies: resolve-pkg-maps: ^1.0.0 - checksum: e5b271fae2b4cd1869bbfc58db56983026cc4a08fdba988725a6edd55d04101507de154722503a22ee35920898ff9bdcba71f99d93b17df35dddb8e8a2ad91be + checksum: 12df01672e691d2ff6db8cf7fed1ddfef90ed94a5f3d822c63c147a26742026d582acd86afcd6f65db67d809625d17dd7f9d34f4d3f38f69bc2f48e19b2bdd5b languageName: node linkType: hard @@ -3460,6 +3504,15 @@ __metadata: languageName: node linkType: hard +"is-bun-module@npm:^1.0.2": + version: 1.2.1 + resolution: "is-bun-module@npm:1.2.1" + dependencies: + semver: ^7.6.3 + checksum: 1c2cbcf1a76991add1b640d2d7fe09848e8697a76f96e1289dff44133a48c97f5dc601d4a66d3f3a86217a77178d72d33d10d0c9e14194e58e70ec8df3eae41a + languageName: node + linkType: hard + "is-core-module@npm:^2.13.0, is-core-module@npm:^2.8.1": version: 2.13.1 resolution: "is-core-module@npm:2.13.1" @@ -5331,6 +5384,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.6.0": + version: 8.6.0 + resolution: "typescript-eslint@npm:8.6.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.6.0 + "@typescript-eslint/parser": 8.6.0 + "@typescript-eslint/utils": 8.6.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: cc773dae0fd7ad568e58d7001ee1adb7d880e9dadd3953ff762d3a1d38bb3a8d0da2e2fdade804a90f23d9f426e5b94c7262b2747eb471ce342ed2cc3878bdaa + languageName: node + linkType: hard + "typescript@npm:~5.5.4": version: 5.5.4 resolution: "typescript@npm:5.5.4" From 7d807612b18e46c8497bfdb8015fa86a8f0f30dd Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 00:13:11 +0200 Subject: [PATCH 10/29] Replace `jest/no-if` with `jest/no-conditional-in-test` --- eslint.config.mjs | 13 ++++++------- packages/jest/src/index.mjs | 2 +- scripts/generate-configs.mjs | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 722f8116..d173783d 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -2,18 +2,17 @@ // @ts-expect-error - `@babel/eslint-parser` doesn't have TypeScript types. import babel from '@babel/eslint-parser'; -import baseConfigs from '@metamask/eslint-config'; +import base from '@metamask/eslint-config'; +import nodejs from '@metamask/eslint-config-nodejs'; +import jest from '@metamask/eslint-config-jest'; /** * @type {import('eslint').Linter.Config[]} */ const config = [ - ...baseConfigs, - // TODO: - // extends: [ - // '@metamask/eslint-config-nodejs', - // '@metamask/eslint-config-jest', - // ], + ...base, + ...nodejs, + ...jest, { name: 'main', diff --git a/packages/jest/src/index.mjs b/packages/jest/src/index.mjs index 9f181c26..0639c380 100644 --- a/packages/jest/src/index.mjs +++ b/packages/jest/src/index.mjs @@ -18,7 +18,7 @@ const config = [ rules: { 'jest/consistent-test-it': ['error', { fn: 'it' }], 'jest/no-duplicate-hooks': 'error', - 'jest/no-if': 'error', + 'jest/no-conditional-in-test': 'error', 'jest/no-test-return-statement': 'error', 'jest/prefer-hooks-on-top': 'error', 'jest/prefer-lowercase-title': ['error', { ignore: ['describe'] }], diff --git a/scripts/generate-configs.mjs b/scripts/generate-configs.mjs index 0d90ce3b..f79e4063 100644 --- a/scripts/generate-configs.mjs +++ b/scripts/generate-configs.mjs @@ -88,7 +88,7 @@ const writeRules = async () => { const rules = generateRules({ environments, name }); await fs.writeFile( - resolve(__dirname, location), + resolve(import.meta.dirname, location), `${JSON.stringify(rules, null, 2)}\n`, ); } From ec9cbd46895c83bc76ec2a704b09c1e4c9c45d77 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 00:14:13 +0200 Subject: [PATCH 11/29] Add dependency on @metamask/eslint-config-jest to root package --- eslint.config.mjs | 3 ++- package.json | 1 + yarn.lock | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index d173783d..ef1f92b9 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -3,8 +3,9 @@ // @ts-expect-error - `@babel/eslint-parser` doesn't have TypeScript types. import babel from '@babel/eslint-parser'; import base from '@metamask/eslint-config'; -import nodejs from '@metamask/eslint-config-nodejs'; +// eslint-disable-next-line no-shadow import jest from '@metamask/eslint-config-jest'; +import nodejs from '@metamask/eslint-config-nodejs'; /** * @type {import('eslint').Linter.Config[]} diff --git a/package.json b/package.json index 4937e3e0..05bd9cfd 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", + "@metamask/eslint-config-jest": "workspace:^", "@metamask/eslint-config-nodejs": "^13.0.0", "@metamask/utils": "^9.1.0", "eslint": "^9.11.0", diff --git a/yarn.lock b/yarn.lock index 5fec23ce..fba0d901 100644 --- a/yarn.lock +++ b/yarn.lock @@ -984,7 +984,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/eslint-config-jest@workspace:packages/jest": +"@metamask/eslint-config-jest@workspace:^, @metamask/eslint-config-jest@workspace:packages/jest": version: 0.0.0-use.local resolution: "@metamask/eslint-config-jest@workspace:packages/jest" dependencies: @@ -4850,6 +4850,7 @@ __metadata: "@lavamoat/allow-scripts": ^3.0.4 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 + "@metamask/eslint-config-jest": "workspace:^" "@metamask/eslint-config-nodejs": ^13.0.0 "@metamask/utils": ^9.1.0 eslint: ^9.11.0 From 6860331eff96a96db6c651e71fe54e4278d32f0e Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 00:29:44 +0200 Subject: [PATCH 12/29] Add name and files to all configs --- eslint.config.mjs | 6 ++++-- package.json | 2 +- packages/base/src/index.mjs | 14 ++++++++++++++ packages/browser/src/index.mjs | 15 +++++++++++++++ packages/commonjs/src/index.mjs | 15 +++++++++++++++ packages/jest/src/index.mjs | 24 ++++++++++++++++++++++++ packages/mocha/src/index.mjs | 23 +++++++++++++++++++++++ packages/nodejs/src/index.mjs | 15 +++++++++++++++ packages/typescript/src/index.mjs | 4 ++++ 9 files changed, 115 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ef1f92b9..c0731022 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -11,6 +11,10 @@ import nodejs from '@metamask/eslint-config-nodejs'; * @type {import('eslint').Linter.Config[]} */ const config = [ + { + ignores: ['.yarn/'], + }, + ...base, ...nodejs, ...jest, @@ -39,8 +43,6 @@ const config = [ 'n/no-sync': 'off', 'n/no-unpublished-require': 'off', }, - - ignores: ['!.eslint.config.mjs'], }, ]; diff --git a/package.json b/package.json index 05bd9cfd..709fba36 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:config-validation", "lint:changelogs": "yarn workspaces foreach --parallel --verbose run lint:changelog", "lint:config-validation": "node scripts/validate-configs.mjs", - "lint:eslint": "yarn eslint . --ext ts,js", + "lint:eslint": "eslint", "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write && yarn lint:config-validation --write", "lint:misc": "prettier '**/*.json' '!**/rules-snapshot.json' '**/*.md' '!**/CHANGELOG.md' '**/*.yml' '!.yarnrc.yml' --ignore-path .gitignore", "test": "vitest" diff --git a/packages/base/src/index.mjs b/packages/base/src/index.mjs index bac3ef0b..30b40639 100644 --- a/packages/base/src/index.mjs +++ b/packages/base/src/index.mjs @@ -23,6 +23,20 @@ const rules = [ { name: '@metamask/eslint-config', + + files: [ + '**/*.js', + '**/*.jsx', + '**/*.mjs', + '**/*.cjs', + '**/*.ts', + '**/*.tsx', + '**/*.mts', + '**/*.cts', + '**/*.mtsx', + '**/*.ctsx', + ], + languageOptions: { // The `esXXXX` option under `env` is supposed to set the correct // `ecmaVersion` option here, but we've had issues with it being diff --git a/packages/browser/src/index.mjs b/packages/browser/src/index.mjs index f650e0ad..5f1f0b66 100644 --- a/packages/browser/src/index.mjs +++ b/packages/browser/src/index.mjs @@ -7,6 +7,21 @@ import environmentRules from './environment.json' with { type: 'json' }; */ const config = [ { + name: '@metamask/eslint-config-browser', + + files: [ + '**/*.js', + '**/*.jsx', + '**/*.mjs', + '**/*.cjs', + '**/*.ts', + '**/*.tsx', + '**/*.mts', + '**/*.cts', + '**/*.mtsx', + '**/*.ctsx', + ], + languageOptions: { globals: { ...globals.browser, diff --git a/packages/commonjs/src/index.mjs b/packages/commonjs/src/index.mjs index 26fb83db..d425268f 100644 --- a/packages/commonjs/src/index.mjs +++ b/packages/commonjs/src/index.mjs @@ -7,6 +7,21 @@ import environmentRules from './environment.json' with { type: 'json' }; */ const config = [ { + name: '@metamask/eslint-config-commonjs', + + files: [ + '**/*.js', + '**/*.jsx', + '**/*.mjs', + '**/*.cjs', + '**/*.ts', + '**/*.tsx', + '**/*.mts', + '**/*.cts', + '**/*.mtsx', + '**/*.ctsx', + ], + languageOptions: { globals: { ...globals.commonjs, diff --git a/packages/jest/src/index.mjs b/packages/jest/src/index.mjs index 0639c380..55ef0a9e 100644 --- a/packages/jest/src/index.mjs +++ b/packages/jest/src/index.mjs @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-shadow import jest from 'eslint-plugin-jest'; import globals from 'globals'; @@ -9,6 +10,29 @@ const config = [ jest.configs['flat/style'], { + name: '@metamask/eslint-config-jest', + + files: [ + '**/*.test.js', + '**/*.spec.js', + '**/*.test.mjs', + '**/*.spec.mjs', + '**/*.test.cjs', + '**/*.spec.cjs', + '**/*.test.ts', + '**/*.spec.ts', + '**/*.test.tsx', + '**/*.spec.tsx', + '**/*.test.mts', + '**/*.spec.mts', + '**/*.test.cts', + '**/*.spec.cts', + '**/*.test.mtsx', + '**/*.spec.mtsx', + '**/*.test.ctsx', + '**/*.spec.ctsx', + ], + languageOptions: { globals: { ...globals.jest, diff --git a/packages/mocha/src/index.mjs b/packages/mocha/src/index.mjs index 3eec1214..f5ef7984 100644 --- a/packages/mocha/src/index.mjs +++ b/packages/mocha/src/index.mjs @@ -8,6 +8,29 @@ const SIMPLE_TEST_NAME_REGEX = '^[#_]{0,2}[A-Za-z0-9]'; const config = [ mocha.configs.flat.recommended, { + name: '@metamask/eslint-config-mocha', + + files: [ + '**/*.test.js', + '**/*.spec.js', + '**/*.test.mjs', + '**/*.spec.mjs', + '**/*.test.cjs', + '**/*.spec.cjs', + '**/*.test.ts', + '**/*.spec.ts', + '**/*.test.tsx', + '**/*.spec.tsx', + '**/*.test.mts', + '**/*.spec.mts', + '**/*.test.cts', + '**/*.spec.cts', + '**/*.test.mtsx', + '**/*.spec.mtsx', + '**/*.test.ctsx', + '**/*.spec.ctsx', + ], + rules: { 'mocha/no-exclusive-tests': 'error', 'mocha/no-hooks-for-single-case': 'error', diff --git a/packages/nodejs/src/index.mjs b/packages/nodejs/src/index.mjs index d509c2bb..5bc07776 100644 --- a/packages/nodejs/src/index.mjs +++ b/packages/nodejs/src/index.mjs @@ -9,6 +9,21 @@ import environmentRules from './environment.json' with { type: 'json' }; const config = [ node.configs['flat/recommended'], { + name: '@metamask/eslint-config-nodejs', + + files: [ + '**/*.js', + '**/*.jsx', + '**/*.mjs', + '**/*.cjs', + '**/*.ts', + '**/*.tsx', + '**/*.mts', + '**/*.cts', + '**/*.mtsx', + '**/*.ctsx', + ], + languageOptions: { globals: { // See comment below. diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index 451361dd..30196cae 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -16,6 +16,10 @@ const config = [ name: '@metamask/eslint-config-typescript', files: [ + '**/*.js', + '**/*.jsx', + '**/*.mjs', + '**/*.cjs', '**/*.ts', '**/*.tsx', '**/*.mts', From 58c2d1e60664f19fcd81a72c5ab433bc55ce1a59 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 11:02:33 +0200 Subject: [PATCH 13/29] Update validate-config script --- .prettierrc.js => .prettierrc.mjs | 8 +- eslint.config.mjs | 2 + package.json | 5 + packages/base/src/index.mjs | 1 + packages/typescript/package.json | 2 + packages/typescript/src/index.mjs | 8 +- scripts/validate-configs.js | 579 ------------------------------ scripts/validate-configs.mjs | 137 +++++++ tsconfig.json | 9 +- yarn.lock | 58 ++- 10 files changed, 211 insertions(+), 598 deletions(-) rename .prettierrc.js => .prettierrc.mjs (73%) delete mode 100644 scripts/validate-configs.js create mode 100644 scripts/validate-configs.mjs diff --git a/.prettierrc.js b/.prettierrc.mjs similarity index 73% rename from .prettierrc.js rename to .prettierrc.mjs index a3f973e4..56ce65ea 100644 --- a/.prettierrc.js +++ b/.prettierrc.mjs @@ -1,6 +1,6 @@ -// All of these are defaults except singleQuote and endOfLine, but we specify them -// for explicitness -module.exports = { +// All of these are defaults except singleQuote and endOfLine, but we specify +// them for explicitness +const config = { endOfLine: 'auto', quoteProps: 'as-needed', singleQuote: true, @@ -8,3 +8,5 @@ module.exports = { trailingComma: 'all', plugins: ['prettier-plugin-packagejson'], }; + +export default config; diff --git a/eslint.config.mjs b/eslint.config.mjs index c0731022..b7a0753c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -38,6 +38,8 @@ const config = [ rules: { 'import-x/no-dynamic-require': 'off', 'import-x/no-nodejs-modules': 'off', + 'jsdoc/check-tag-names': 'off', + 'jsdoc/no-types': 'off', 'n/global-require': 'off', 'n/no-process-exit': 'off', 'n/no-sync': 'off', diff --git a/package.json b/package.json index 709fba36..b030f924 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "type": "git", "url": "https://github.com/MetaMask/eslint-config.git" }, + "type": "module", "workspaces": [ "packages/*" ], @@ -23,6 +24,7 @@ "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", "@babel/plugin-syntax-import-attributes": "^7.25.6", + "@eslint/config-array": "^0.18.0", "@eslint/js": "^9.11.0", "@jest/globals": "^29.7.0", "@lavamoat/allow-scripts": "^3.0.4", @@ -31,6 +33,9 @@ "@metamask/eslint-config-jest": "workspace:^", "@metamask/eslint-config-nodejs": "^13.0.0", "@metamask/utils": "^9.1.0", + "@types/eslint__js": "^8.42.3", + "@types/jest": "^29.5.12", + "@types/node": "^22.5.5", "eslint": "^9.11.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import-x": "^4.3.0", diff --git a/packages/base/src/index.mjs b/packages/base/src/index.mjs index 30b40639..97a959bc 100644 --- a/packages/base/src/index.mjs +++ b/packages/base/src/index.mjs @@ -4,6 +4,7 @@ import js from '@eslint/js'; import importX from 'eslint-plugin-import-x'; import jsdoc from 'eslint-plugin-jsdoc'; import prettier from 'eslint-plugin-prettier/recommended'; +// @ts-expect-error - `eslint-plugin-promise` doesn't have TypeScript types. import promise from 'eslint-plugin-promise'; import globals from 'globals'; diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 01d540a5..15b5be72 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -49,6 +49,8 @@ "@metamask/eslint-config": "^13.0.0", "eslint": "^9.11.0", "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.3.0", + "eslint-plugin-jsdoc": "^50.2.4", "typescript": ">=4.8.4 <5.6", "typescript-eslint": "^8.6.0" }, diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index 30196cae..13c149df 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -1,6 +1,8 @@ -import resolver from 'eslint-import-resolver-typescript'; +import * as resolver from 'eslint-import-resolver-typescript'; import importX from 'eslint-plugin-import-x'; import jsdoc from 'eslint-plugin-jsdoc'; +// TODO: Look into why this doesn't resolve. +// eslint-disable-next-line import-x/no-unresolved import typescript from 'typescript-eslint'; /** @@ -16,10 +18,6 @@ const config = [ name: '@metamask/eslint-config-typescript', files: [ - '**/*.js', - '**/*.jsx', - '**/*.mjs', - '**/*.cjs', '**/*.ts', '**/*.tsx', '**/*.mts', diff --git a/scripts/validate-configs.js b/scripts/validate-configs.js deleted file mode 100644 index 21e269f7..00000000 --- a/scripts/validate-configs.js +++ /dev/null @@ -1,579 +0,0 @@ -// TODO: This script doesn't work with ESLint flat configs. - -const { FlatCompat } = require('@eslint/eslintrc'); -const eslintRecommendedConfig = require('@eslint/js').configs.recommended; -const { hasProperty } = require('@metamask/utils'); -const { - configs: { recommended: prettierConfig }, -} = require('eslint-plugin-prettier'); -const deepEqual = require('fast-deep-equal'); -const { readdirSync, readFileSync, promises: fs } = require('fs'); -const pathUtils = require('path'); -const prettier = require('prettier'); - -// For config parsing, validation, and rule flattening -const BASE_CONFIG_NAME = '@metamask/eslint-config'; -const ESLINT_RECOMMENDED = 'eslint:recommended'; -const RULES = 'rules'; -const OFF = 'off'; - -// For logging -const TAB = ' '; - -// The path to the monorepo packages directory -const PACKAGES_DIR_PATH = pathUtils.join(__dirname, '../packages'); - -// The path to the rules snapshot file, relative to a package root. -const RULES_SNAPSHOT_PATH = 'rules-snapshot.json'; - -// Whether this program was configured to be in write mode. -const WRITE_MODE = ['--write', '-w'].includes(process.argv[2]); - -//---------------- -// Main -//---------------- - -main(); - -/** - * This script accomplishes 3 things: - * - * 1. Ensures that neither we nor any config that we extend enables any Prettier - * rules that should be disabled. - * 2. Ensures that we only usefully configure rules, meaning our configs only - * contain rules that are configured differently from or do not exist in - * any config that we extend, or our base config, which should always be - * extended by the consumer in practice. - * 3. Creates rule snapshots to make it easy to understand the impact of any - * changes we make to our configs, such as changing our specified rules or - * the configs that we extend. - * - * If the script is in write mode (by being given the argument --write or -w), - * it will overwrite any existing rule snapshots. Otherwise, it will compare the - * computed snapshot to the snapshot stored on disk, and exit with an error if - * they aren't equal. - */ -async function main() { - const metamaskConfigs = getMetamaskConfigs(); - const requiredPrettierRules = getRequiredPrettierRules(); - - // Violated rules are appended to these objects inside their respective - // validation functions. - const prettierViolations = getViolationsMap(metamaskConfigs); - const minimalismViolations = getViolationsMap(metamaskConfigs); - const snapshotViolations = []; - - // Iterate over this monorepo's config packages and validate their rules, - // appending any violations to the violation objects. - await Promise.all( - Object.entries(metamaskConfigs).map( - async ([packageName, { config, flatRules, packagePath }]) => { - validatePrettierRules( - packageName, - flatRules.own, - requiredPrettierRules, - prettierViolations, - ); - - validateConfigMinimalism( - packageName, - config, - flatRules.extended, - minimalismViolations, - ); - - await validateOrWriteRulesSnapshot( - packageName, - packagePath, - flatRules.own, - snapshotViolations, - ); - }, - ), - ); - - // Log any rule violations, and exit with an appropriate code. - let failures = 0; - if (hasViolations(prettierViolations)) { - failures += 1; - logPrettierViolations(prettierViolations); - } - - if (hasViolations(minimalismViolations)) { - failures += 1; - logMinimalismViolations(minimalismViolations); - } - - if (snapshotViolations.length > 0) { - failures += 1; - logSnapshotViolations(snapshotViolations); - } - - if (failures === 0) { - console.log( - `Successfully validated rules${ - WRITE_MODE ? ' and wrote snapshots' : '' - }!`, - ); - } - process.exit(failures); -} - -//---------------- -// Validation -//---------------- - -/** - * Checks whether the given package violates any of the given Prettier rules, - * and stores those violations in the given violations map. - * - * Mutates the violations map in place. - * - * @param {string} packageName - The name of the config package. - * @param {Record} flatRules - The package's flattened rules. - * @param {Record} prettierRules - The required Prettier rules. - * @param {Record} violations - A map to store violations in. - */ -function validatePrettierRules( - packageName, - flatRules, - prettierRules, - violations, -) { - prettierRules.forEach((ruleName) => { - if (hasProperty(flatRules, ruleName) && flatRules[ruleName] !== OFF) { - violations[packageName].push(ruleName); - } - }); -} - -/** - * Records whether the given config has any uselessly specified rules relative - * to the config's flat extended rules. "Uselessly" means either that the rule - * is explicitly disabled without ever being enabled, or that its configured - * identically in the flat extended rules. - * - * @param {string} packageName - The name of the config package. - * @param {Record} config - The package's eslint config object - * (i.e. its .eslintrc.js export). - * @param {Record} flatExtendedRules - The flattened rules of - * every config extended by the package config. - * @param {Record} violations - A map to store violations in. - */ -function validateConfigMinimalism( - packageName, - config, - flatExtendedRules, - violations, -) { - Object.entries(config.rules || {}).forEach(([ruleName, ruleValue]) => { - if ( - deepEqual(flatExtendedRules[ruleName], ruleValue) || - (!hasProperty(flatExtendedRules, ruleName) && ruleValue === OFF) - ) { - violations[packageName].push(ruleName); - } - }); -} - -/** - * Checks whether a config violations map contains any violations. - * - * @param {Record} violationsMap - A map of package names to arrays with - * violated rules, if any. - * @returns {boolean} Whether the given map contains any violations. - */ -function hasViolations(violationsMap) { - return Object.values(violationsMap).some( - (violations) => violations.length > 0, - ); -} - -/** - * Takes a { [packageName]: any } map and returns a map with with the same keys - * and empty array values, for storing rule violations that can be logged to the - * console and fixed manually. - * - * @param {Record} configs - An object with package name keys and arbitrary - * values. - * @returns {Record} An object with the same keys and empty - * array values. - */ -function getViolationsMap(configs) { - return Object.keys(configs).reduce((map, packageName) => { - map[packageName] = []; - return map; - }, {}); -} - -/** - * If the program is in write mode, writes a rule snapshot to the given path. - * Otherwise, checks whether the computed rules snapshot differs from the - * snapshot on disk, and stores an error in the violations map if so. - * - * Mutates the violations map in place. - * - * @param {string} packageName - The name of the config package. - * @param {string} packagePath - The path to the config package. - * @param {Record} flatRules - The package's flattened rules. - * @param {Record} violations - A map to store violations in. - */ -async function validateOrWriteRulesSnapshot( - packageName, - packagePath, - flatRules, - violations, -) { - const snapshotFilePath = pathUtils.join(packagePath, RULES_SNAPSHOT_PATH); - - if (WRITE_MODE) { - await writeRulesSnapshot(snapshotFilePath, flatRules); - } else { - try { - const existingSnapshot = JSON.parse( - await fs.readFile(snapshotFilePath, 'utf8'), - ); - - if (!deepEqual(existingSnapshot, flatRules)) { - violations.push(packageName); - } - } catch (error) { - console.error( - `Encountered error while reading file "${snapshotFilePath}".`, - error, - ); - process.exit(1); - } - } -} - -/** - * Writes a rules snapshot to the given path. - * - * Calls process.exit(1) if the write call fails. - * - * @param {string} snapshotFilePath - The path of the file to write. - * @param {Record} flatRules - The rules to write. - */ -async function writeRulesSnapshot(snapshotFilePath, flatRules) { - const stringifiedRules = JSON.stringify(flatRules, null, 2); - const formattedRules = await prettier.format(stringifiedRules, { - filepath: snapshotFilePath, - }); - - try { - await fs.writeFile(snapshotFilePath, formattedRules); - } catch (error) { - console.error( - `Encountered error while writing file "${snapshotFilePath}".`, - error, - ); - process.exit(1); - } -} - -//---------------- -// Specific config getters -//---------------- - -/** - * Iterates over the packages in this monorepo and returns an object of package - * name keys with object values containing: - * - The raw config. - * - Its flattened, complete rule set. - * - The path to the package. - * - * @returns {Record>} The config map. - */ -function getMetamaskConfigs() { - return readdirSync(PACKAGES_DIR_PATH).reduce((allConfigs, dirName) => { - const packagePath = pathUtils.join(PACKAGES_DIR_PATH, dirName); - const manifestPath = pathUtils.join(packagePath, 'package.json'); - const { name: packageName } = JSON.parse( - readFileSync(manifestPath, 'utf-8'), - ); - const config = require(packagePath); - - allConfigs[packageName] = { - config, - flatRules: getOwnAndExtendedFlatRules(packageName, config), - packagePath, - }; - return allConfigs; - }, {}); -} - -/** - * Gets the "own" and "extended" flat rules for the given config. - * The own flat rules are the combined flat rules for every config extended by - * the given config, and the config's own rules. - * The extended flat rules are config's own flat rules combined with the flat - * rules of the MetaMask base config. - * - * The extended flat rules are computed in this way because we assume that - * consumers will extend our base config first, and then others. We want to - * disable some rules in e.g. our TypeScript config that are enabled in our - * base config. If we did not compute the extended flat rules in this way, our - * rule minimization script would erroneously flag certain rules as useless. - * - * @param {string} packageName - The name of the config package. - * @param {Record} config - An eslint config object (e.g. .eslintrc.js). - * @returns {{ extended: Record, own: Record}} An - * object containing the config's own and extended flat rules. - */ -function getOwnAndExtendedFlatRules(packageName, config) { - let flatConfig, ownFlatRules; - if (packageName === BASE_CONFIG_NAME) { - flatConfig = getFlatConfig(config); - ownFlatRules = getFlatRules(flatConfig); - } else { - flatConfig = getFlatConfigWithBaseConfig(config); - ownFlatRules = getFlatRules(getFlatConfig(config)); - } - - // The below call returns the flat rules for everything except the last item - // in the flat config array. - // The last item in the flat config is our config, and the preceding items are - // its extended configs. - const extendedFlatRules = getFlatRules(flatConfig.slice(0, -1)); - - return { - extended: extendedFlatRules, - own: ownFlatRules, - }; -} - -/** - * Prepends the base config to the "extends" array of the given config and - * computes its flat config array. - * - * @param {Record} configObject - An eslint config object (e.g. .eslintrc.js). - * @returns {Record[]} An array of parsed eslint config objects. - */ -function getFlatConfigWithBaseConfig(configObject) { - const configCopy = { ...configObject }; - configCopy.extends = Array.isArray(configObject.extends) - ? [BASE_CONFIG_NAME, ...configCopy.extends] - : [BASE_CONFIG_NAME]; - return getFlatConfig(configCopy); -} - -/** - * Gets the rules that are always recommended to be disabled per Prettier's - * ESLint config. - * - * @returns {string[]} The names of the rules that should always be - * disabled when using Prettier. - */ -function getRequiredPrettierRules() { - return Object.entries( - getFlatRules(getFlatConfig(prettierConfig), false), - ).reduce((allRules, [ruleName, ruleValue]) => { - // Rules set to 'off' should never be enabled. - // Rules set to 0 (number) may sometimes be included. We don't attend to those. - // https://github.com/Prettier/eslint-config-Prettier/blob/abf3ba1/index.js#L7-L9 - if (ruleValue === OFF) { - allRules.push(ruleName); - } - return allRules; - }, []); -} - -//---------------- -// ESLint config parsing utilities -//---------------- - -/** - * Takes an eslint flat config array and returns its own rules and the rules - * of its extended configs (if any) in a single, flat object. - * - * @param {Record[]} flatConfig - A flat eslint config array. - * @param {boolean} [normalizeRules] - Whether to normalize rule config values - * to use string notation (off, warn, error) instead of numerical notation - * (0, 1, 2). Non-numerical values are passed through. - * @returns {Record} An object of eslint rule names and their - * configuration. - */ -function getFlatRules(flatConfig, normalizeRules = true) { - // Flatten the config array into a single object - const rawFlatRules = flatConfig.reduce((flatRules, config) => { - if (hasProperty(config, RULES)) { - return { - ...flatRules, - ...config[RULES], - }; - } - return flatRules; - }, {}); - - // Sort the flat rules alphabetically and return them - return normalizeRules - ? normalizeObject(rawFlatRules, normalizeRuleConfigValue) - : normalizeObject(rawFlatRules); -} - -/** - * Sorts the keys of the given object, inserts them in that order in a new - * object, and returns that object. Optionally normalizes the values of the - * object during sorting. - * - * @param {Record} obj - The object to sort. - * @param {Function} [valueNormalizer] - A function that takes a value and - * returns a "normalized" version of it. The value of every key on the sorted - * object will be passed through this function, if present. - * @returns {Record} The sorted object. - */ -function normalizeObject(obj, valueNormalizer) { - return Object.keys(obj) - .sort() - .reduce((sortedObj, key) => { - sortedObj[key] = valueNormalizer ? valueNormalizer(obj[key]) : obj[key]; - return sortedObj; - }, {}); -} - -/** - * Given an ESLint rule config value, converts it from numerical (0, 1, 2) to - * string (off, warn, error) notation, or just returns the given value. - * - * @param {unknown} configValue - The rule config value to normalize. - * @returns {string | unknown} The normalized rule config value. - */ -function normalizeRuleConfigValue(configValue) { - if (typeof configValue !== 'number' && typeof configValue !== 'string') { - return configValue; - } - - switch (String(configValue)) { - case '0': - return 'off'; - case '1': - return 'warn'; - case '2': - return 'error'; - default: - return configValue; - } -} - -/** - * Takes an eslint config object and flattens it and the configs it - * extends into a single array, ordered by their dependency relationships. - * - * @param {Record} configObject - An eslint config object (e.g. .eslintrc.js). - * @returns {Record[]} An array of parsed eslint config objects. - */ -function getFlatConfig(configObject) { - // FlatCompat does a lot of stuff under the hood, including resolving the - // modules exporting the configs extended by the given config. - // Luckily for us, that's kind of the hardest part. - const flatConfig = new FlatCompat({ - recommendedConfig: eslintRecommendedConfig, - }).config(configObject); - - populateRecommendedRules(flatConfig); - return flatConfig; -} - -/** - * A helper for the `getFlatConfig` function. - * Looks for the string 'eslint:recommended' in the given config array and - * replaces it with its corresponding rules object. - * Mutates the given array in place. - * - * Throws an error if the config array contains an invalid config object. - * - * @param {Record[]} configArray - A flat eslint config array. - */ -function populateRecommendedRules(configArray) { - let index = null; - while (index !== -1) { - index = configArray.indexOf(ESLINT_RECOMMENDED); - if (index !== -1) { - configArray[index] = eslintRecommendedConfig; - } - } - - for (const config of configArray) { - if (!config || typeof config !== 'object' || Array.isArray(config)) { - throw new Error(`Unrecognized ruleset: ${config}`); - } - } -} - -//---------------- -// Logging -//---------------- - -/** - * Prints Prettier violations to console.error in a readable format. - * Assumes that the given violations map contains violations. - * - * @param {Record} prettierViolations - A map containing - * Prettier violations. - */ -function logPrettierViolations(prettierViolations) { - let str = `\nError: Detected Prettier rule violations. Disable the specified rule(s) in the following package(s):\n`; - str += getViolationsString(prettierViolations); - console.error(str); -} - -/** - * Prints minimalism violations to console.error in a readable format. - * Assumes that the given violations map contains violations. - * - * @param {Record} minimalismViolations - A map containing - * minimalism violations. - */ -function logMinimalismViolations(minimalismViolations) { - let str = `\nError: Detected redundantly configured rules. Remove the specified rule(s) in the following package(s):\n`; - str += getViolationsString(minimalismViolations); - console.error(str); -} - -/** - * Assuming the given violations map contains violations, returns a formatted - * string describing them. - * - * @param {Record} violationsMap - A map of config package - * names to rules flagged as violations. - * @returns {string} A formatted string listing the violations. - */ -function getViolationsString(violationsMap) { - let str = ''; - Object.entries(violationsMap).forEach(([packageName, violatedRules]) => { - if (violatedRules.length > 0) { - str += `\n${tabs(1)}${packageName}\n${tabs(2)}${violatedRules - .sort() - .join(`\n${tabs(2)}`)}\n`; - } - }); - return str; -} - -/** - * Assuming the given array contains offending packages, prints them to the - * console in a readable format. - * - * @param {string[]} snapshotViolations - A map containing snapshot violations. - */ -function logSnapshotViolations(snapshotViolations) { - console.error( - `\nError: Computed snapshot differs from the existing snapshot for the following package(s). Take a new snapshot and try again.\n\n${tabs( - 1, - )}${snapshotViolations.join(`\n${tabs(1)}`)}\n`, - ); -} - -/** - * Returns the requested number of tabs. - * - * @param {number} numTabs - The number of tabs to return. - * @returns {string} A string consisting of numTabs 4-space "tabs". - */ -function tabs(numTabs) { - if (numTabs < 1 || !Number.isInteger(numTabs)) { - throw new Error('Expected positive integer.'); - } - return numTabs === 1 ? TAB : TAB + new Array(numTabs).join(TAB); -} diff --git a/scripts/validate-configs.mjs b/scripts/validate-configs.mjs new file mode 100644 index 00000000..0b5d6ea7 --- /dev/null +++ b/scripts/validate-configs.mjs @@ -0,0 +1,137 @@ +// @ts-check + +import { ConfigArray } from '@eslint/config-array'; +import { hasProperty } from '@metamask/utils'; +import fs from 'fs/promises'; +import pathUtils, { join } from 'path'; +import { format } from 'prettier'; + +/** + * @typedef {import('eslint').Linter.Config[]} Config + */ + +// The path to the monorepo packages directory +const PACKAGES_DIR_PATH = pathUtils.join(import.meta.dirname, '../packages'); + +// The path to the rules snapshot file, relative to a package root. +const RULES_SNAPSHOT_PATH = 'rules-snapshot.json'; + +// Whether this program was configured to be in write mode. +const WRITE_MODE = + process.argv[2] && ['--write', '-w'].includes(process.argv[2]); + +// For logging +const TAB = ' '; + +/** + * Flatten a {@link ConfigArray} into a record of rule names to rule values. + * + * @param {ConfigArray} configArray - The config array to flatten. + * @returns {Record} The flattened rule set. + */ +function flattenConfigArray(configArray) { + /** + * @type {Record} + */ + const ruleSet = configArray.reduce((flatConfig, rule) => { + if (hasProperty(rule, 'rules')) { + Object.assign(flatConfig, rule.rules); + } + + return flatConfig; + }, {}); + + return Object.fromEntries( + Object.entries(ruleSet).sort(([a], [b]) => a.localeCompare(b)), + ); +} + +/** + * Iterates over the packages in this monorepo and returns an object of package + * name keys with object values containing: + * - The raw config. + * - Its flattened, complete rule set. + * - The path to the package. + * + * @returns {Promise }>>} The config map. + */ +async function getMetaMaskConfigs() { + const packages = await fs.readdir(PACKAGES_DIR_PATH); + + /** + * @type {Map }>} + */ + const allConfigs = new Map(); + + for (const packageName of packages) { + const packagePath = pathUtils.join(PACKAGES_DIR_PATH, packageName); + const manifestPath = pathUtils.join(packagePath, 'package.json'); + const { name } = JSON.parse(await fs.readFile(manifestPath, 'utf-8')); + + const { default: config } = await import(name); + const normalizedConfig = await new ConfigArray(config).normalize(); + + allConfigs.set(name, { + ruleSet: flattenConfigArray(normalizedConfig), + packagePath, + }); + } + + return allConfigs; +} + +/** + * Return the requested number of tabs. + * + * @param {number} numTabs - The number of tabs to return. + * @returns {string} A string consisting of numTabs 4-space "tabs". + */ +function tabs(numTabs) { + if (numTabs < 1 || !Number.isInteger(numTabs)) { + throw new Error('Expected positive integer.'); + } + return numTabs === 1 ? TAB : TAB + new Array(numTabs).join(TAB); +} + +/** + * Assuming the given array contains offending packages, print them to the + * console in a readable format. + * + * @param {string[]} snapshotViolations - A map containing snapshot violations. + */ +function logSnapshotViolations(snapshotViolations) { + console.error( + `\nError: Computed snapshot differs from the existing snapshot for the following package(s). Take a new snapshot and try again.\n\n${tabs( + 1, + )}${snapshotViolations.join(`\n${tabs(1)}`)}\n`, + ); +} + +const configs = await getMetaMaskConfigs(); +const snapshotViolations = []; + +for (const [name, { packagePath, ruleSet }] of configs.entries()) { + const snapshotPath = join(packagePath, RULES_SNAPSHOT_PATH); + const formattedRules = await format(JSON.stringify(ruleSet), { + parser: 'json', + }); + + if (WRITE_MODE) { + await fs.writeFile(snapshotPath, formattedRules); + continue; + } + + const snapshot = await fs.readFile( + join(packagePath, RULES_SNAPSHOT_PATH), + 'utf-8', + ); + + if (snapshot !== formattedRules) { + snapshotViolations.push(name); + process.exitCode = 1; + } +} + +if (snapshotViolations.length > 0) { + logSnapshotViolations(snapshotViolations); +} diff --git a/tsconfig.json b/tsconfig.json index 7b6daa89..505bcaac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,14 +5,17 @@ "exactOptionalPropertyTypes": true, "forceConsistentCasingInFileNames": true, "lib": ["ES2023"], - "module": "Node16", - "moduleResolution": "Node16", + "module": "NodeNext", + "moduleResolution": "NodeNext", "noEmit": true, "noErrorTruncation": true, "noUncheckedIndexedAccess": true, + "resolveJsonModule": true, "strict": true, "target": "ES2022" }, - "include": ["scripts", "eslint.config.mjs"], + "include": [ + "**/*.mjs", + ], "exclude": ["./dist", "**/node_modules"] } diff --git a/yarn.lock b/yarn.lock index fba0d901..4fbe60fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1073,6 +1073,8 @@ __metadata: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 eslint-import-resolver-typescript: ^3.6.3 + eslint-plugin-import-x: ^4.3.0 + eslint-plugin-jsdoc: ^50.2.4 typescript: ">=4.8.4 <5.6" typescript-eslint: ^8.6.0 languageName: unknown @@ -1484,20 +1486,39 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: c286e79707ab604b577cf8ce51d9bbb9780e3d6a68b38a83febe13fa05b8012c92de17c28532fac2b03d3c460123f5055d603a579685325246ca1c86828223e0 languageName: node linkType: hard -"@types/estree@npm:^1.0.0": +"@types/eslint__js@npm:^8.42.3": + version: 8.42.3 + resolution: "@types/eslint__js@npm:8.42.3" + dependencies: + "@types/eslint": "*" + checksum: e31f19de642d35a664695d0cab873ce6de19b8a3506755835b91f8a49a8c41099dcace449df49f1a486de6fa6565d21ceb1fa33be6004fc7adef9226e5d256a1 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 languageName: node linkType: hard +"@types/estree@npm:1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a + languageName: node + linkType: hard + "@types/graceful-fs@npm:^4.1.3": version: 4.1.9 resolution: "@types/graceful-fs@npm:4.1.9" @@ -1532,6 +1553,23 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^29.5.12": + version: 29.5.13 + resolution: "@types/jest@npm:29.5.13" + dependencies: + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 875ac23c2398cdcf22aa56c6ba24560f11d2afda226d4fa23936322dde6202f9fdbd2b91602af51c27ecba223d9fc3c1e33c9df7e47b3bf0e2aefc6baf13ce53 + languageName: node + linkType: hard + +"@types/json-schema@npm:*": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + languageName: node + linkType: hard + "@types/ms@npm:*": version: 0.7.31 resolution: "@types/ms@npm:0.7.31" @@ -1539,7 +1577,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": +"@types/node@npm:*, @types/node@npm:^22.5.5": version: 22.5.5 resolution: "@types/node@npm:22.5.5" dependencies: @@ -2948,7 +2986,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.7.0": +"expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -4615,7 +4653,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -4845,6 +4883,7 @@ __metadata: "@babel/core": ^7.25.2 "@babel/eslint-parser": ^7.25.1 "@babel/plugin-syntax-import-attributes": ^7.25.6 + "@eslint/config-array": ^0.18.0 "@eslint/js": ^9.11.0 "@jest/globals": ^29.7.0 "@lavamoat/allow-scripts": ^3.0.4 @@ -4853,6 +4892,9 @@ __metadata: "@metamask/eslint-config-jest": "workspace:^" "@metamask/eslint-config-nodejs": ^13.0.0 "@metamask/utils": ^9.1.0 + "@types/eslint__js": ^8.42.3 + "@types/jest": ^29.5.12 + "@types/node": ^22.5.5 eslint: ^9.11.0 eslint-config-prettier: ^9.1.0 eslint-plugin-import-x: ^4.3.0 From 675387950428f40ba08cf1a345d16bf8b7383bc5 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 11:03:05 +0200 Subject: [PATCH 14/29] Update snapshots --- packages/base/rules-snapshot.json | 213 ++++++++---------------- packages/jest/rules-snapshot.json | 23 +-- packages/mocha/rules-snapshot.json | 7 +- packages/nodejs/rules-snapshot.json | 2 +- packages/typescript/rules-snapshot.json | 98 ++++++----- 5 files changed, 138 insertions(+), 205 deletions(-) diff --git a/packages/base/rules-snapshot.json b/packages/base/rules-snapshot.json index cad9ae06..1c472019 100644 --- a/packages/base/rules-snapshot.json +++ b/packages/base/rules-snapshot.json @@ -9,12 +9,12 @@ "@typescript-eslint/indent": "off", "@typescript-eslint/key-spacing": "off", "@typescript-eslint/keyword-spacing": "off", - "@typescript-eslint/lines-around-comment": "off", + "@typescript-eslint/lines-around-comment": 0, "@typescript-eslint/member-delimiter-style": "off", "@typescript-eslint/no-extra-parens": "off", "@typescript-eslint/no-extra-semi": "off", "@typescript-eslint/object-curly-spacing": "off", - "@typescript-eslint/quotes": "off", + "@typescript-eslint/quotes": 0, "@typescript-eslint/semi": "off", "@typescript-eslint/space-before-blocks": "off", "@typescript-eslint/space-before-function-paren": "off", @@ -29,18 +29,12 @@ "arrow-parens": "off", "arrow-spacing": "off", "babel/object-curly-spacing": "off", - "babel/quotes": "off", + "babel/quotes": 0, "babel/semi": "off", "block-scoped-var": "error", "block-spacing": "off", "brace-style": "off", - "camelcase": [ - "error", - { - "properties": "never", - "allow": ["^UNSAFE_"] - } - ], + "camelcase": ["error", { "properties": "never", "allow": ["^UNSAFE_"] }], "comma-dangle": "off", "comma-spacing": "off", "comma-style": "off", @@ -101,13 +95,7 @@ "implicit-arrow-linebreak": "off", "import-x/default": "error", "import-x/export": "error", - "import-x/extensions": [ - "error", - "never", - { - "json": "always" - } - ], + "import-x/extensions": ["error", "never", { "json": "always" }], "import-x/first": "error", "import-x/named": "error", "import-x/namespace": "error", @@ -125,18 +113,10 @@ "import-x/no-nodejs-modules": "error", "import-x/no-self-import": "error", "import-x/no-unassigned-import": "error", - "import-x/no-unresolved": [ - "error", - { - "commonjs": true - } - ], + "import-x/no-unresolved": ["error", { "commonjs": true }], "import-x/no-useless-path-segments": [ "error", - { - "commonjs": true, - "noUselessIndex": true - } + { "commonjs": true, "noUselessIndex": true } ], "import-x/no-webpack-loader-syntax": "error", "import-x/order": [ @@ -147,10 +127,7 @@ ["builtin", "external"], ["internal", "parent", "sibling", "index"] ], - "alphabetize": { - "order": "asc", - "caseInsensitive": true - } + "alphabetize": { "order": "asc", "caseInsensitive": true } } ], "import-x/unambiguous": "error", @@ -158,47 +135,49 @@ "indent-legacy": "off", "jsdoc/check-access": "error", "jsdoc/check-alignment": "error", + "jsdoc/check-examples": "off", + "jsdoc/check-indentation": "off", "jsdoc/check-line-alignment": "error", "jsdoc/check-param-names": "error", "jsdoc/check-property-names": "error", + "jsdoc/check-syntax": "off", "jsdoc/check-tag-names": "error", + "jsdoc/check-template-names": "off", "jsdoc/check-types": "error", "jsdoc/check-values": "error", + "jsdoc/convert-to-jsdoc-comments": "off", "jsdoc/empty-tags": "error", "jsdoc/implements-on-classes": "error", + "jsdoc/imports-as-dependencies": "off", + "jsdoc/informative-docs": "off", + "jsdoc/lines-before-block": "off", "jsdoc/match-description": [ "error", - { - "tags": { - "param": true, - "returns": true - } - } + { "tags": { "param": true, "returns": true } } ], + "jsdoc/match-name": "off", "jsdoc/multiline-blocks": "error", "jsdoc/no-bad-blocks": "error", + "jsdoc/no-blank-block-descriptions": "off", + "jsdoc/no-blank-blocks": "off", "jsdoc/no-defaults": "error", + "jsdoc/no-missing-syntax": "off", "jsdoc/no-multi-asterisks": "error", + "jsdoc/no-restricted-syntax": "off", + "jsdoc/no-types": "off", + "jsdoc/no-undefined-types": "error", "jsdoc/require-asterisk-prefix": "error", "jsdoc/require-description": "error", + "jsdoc/require-description-complete-sentence": "off", + "jsdoc/require-example": "off", + "jsdoc/require-file-overview": "off", "jsdoc/require-hyphen-before-param-description": [ "error", "always", - { - "tags": { - "returns": "never", - "template": "always", - "throws": "never" - } - } + { "tags": { "returns": "never", "template": "always", "throws": "never" } } ], "jsdoc/require-jsdoc": "error", - "jsdoc/require-param": [ - "error", - { - "unnamedRootBase": ["options"] - } - ], + "jsdoc/require-param": ["error", { "unnamedRootBase": ["options"] }], "jsdoc/require-param-description": "error", "jsdoc/require-param-name": "error", "jsdoc/require-param-type": "error", @@ -210,32 +189,24 @@ "jsdoc/require-returns-check": "error", "jsdoc/require-returns-description": "error", "jsdoc/require-returns-type": "error", + "jsdoc/require-template": "off", + "jsdoc/require-throws": "off", "jsdoc/require-yields": "error", "jsdoc/require-yields-check": "error", - "jsdoc/tag-lines": [ - "error", - "any", - { - "startLines": 1 - } - ], + "jsdoc/sort-tags": "off", + "jsdoc/tag-lines": ["error", "any", { "startLines": 1 }], + "jsdoc/text-escaping": "off", "jsdoc/valid-types": "error", "jsx-quotes": "off", "key-spacing": "off", "keyword-spacing": "off", "linebreak-style": "off", - "lines-around-comment": "off", + "lines-around-comment": 0, "lines-between-class-members": "error", - "max-len": "off", + "max-len": 0, "max-statements-per-line": "off", "multiline-ternary": "off", - "new-cap": [ - "error", - { - "newIsCap": true, - "capIsNew": false - } - ], + "new-cap": ["error", { "newIsCap": true, "capIsNew": false }], "new-parens": "off", "newline-per-chained-call": "off", "no-alert": "error", @@ -250,8 +221,9 @@ "no-comma-dangle": "off", "no-compare-neg-zero": "error", "no-cond-assign": "error", - "no-confusing-arrow": "off", + "no-confusing-arrow": 0, "no-const-assign": "error", + "no-constant-binary-expression": "error", "no-constant-condition": "error", "no-constructor-return": "error", "no-control-regex": "error", @@ -268,6 +240,7 @@ "no-empty-character-class": "error", "no-empty-function": "error", "no-empty-pattern": "error", + "no-empty-static-block": "error", "no-eq-null": "error", "no-eval": "error", "no-ex-assign": "error", @@ -291,19 +264,13 @@ "no-irregular-whitespace": "error", "no-iterator": "error", "no-label-var": "error", - "no-labels": [ - "error", - { - "allowLoop": false, - "allowSwitch": false - } - ], + "no-labels": ["error", { "allowLoop": false, "allowSwitch": false }], "no-lone-blocks": "error", "no-lonely-if": "error", "no-loop-func": "error", "no-loss-of-precision": "error", "no-misleading-character-class": "error", - "no-mixed-operators": "off", + "no-mixed-operators": 0, "no-mixed-spaces-and-tabs": "off", "no-multi-assign": "error", "no-multi-spaces": "off", @@ -315,20 +282,15 @@ "no-nested-ternary": "error", "no-new": "error", "no-new-func": "error", + "no-new-native-nonconstructor": "error", "no-new-object": "error", - "no-new-symbol": "error", "no-new-wrappers": "error", "no-nonoctal-decimal-escape": "error", "no-obj-calls": "error", "no-octal": "error", "no-octal-escape": "error", "no-param-reassign": "error", - "no-plusplus": [ - "error", - { - "allowForLoopAfterthoughts": true - } - ], + "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }], "no-proto": "error", "no-prototype-builtins": "error", "no-redeclare": "error", @@ -3193,12 +3155,7 @@ "no-self-assign": "error", "no-self-compare": "error", "no-setter-return": "error", - "no-shadow": [ - "error", - { - "builtinGlobals": true - } - ], + "no-shadow": ["error", { "builtinGlobals": true }], "no-shadow-restricted-names": "error", "no-space-before-semi": "off", "no-spaced-func": "off", @@ -3210,26 +3167,19 @@ "no-trailing-spaces": "off", "no-undef": "error", "no-undef-init": "error", - "no-unexpected-multiline": "off", + "no-unexpected-multiline": 0, "no-unmodified-loop-condition": "error", - "no-unneeded-ternary": [ - "error", - { - "defaultAssignment": false - } - ], + "no-unneeded-ternary": ["error", { "defaultAssignment": false }], "no-unreachable": "error", "no-unsafe-finally": "error", "no-unsafe-negation": "error", "no-unsafe-optional-chaining": "error", "no-unused-expressions": [ "error", - { - "allowShortCircuit": true, - "allowTernary": true - } + { "allowShortCircuit": true, "allowTernary": true } ], "no-unused-labels": "error", + "no-unused-private-class-members": "error", "no-unused-vars": [ "error", { @@ -3239,12 +3189,7 @@ "ignoreRestSiblings": true } ], - "no-use-before-define": [ - "error", - { - "functions": false - } - ], + "no-use-before-define": ["error", { "functions": false }], "no-useless-backreference": "error", "no-useless-call": "error", "no-useless-catch": "error", @@ -3264,46 +3209,25 @@ "object-curly-spacing": "off", "object-property-newline": "off", "object-shorthand": "error", - "one-var": [ - "error", - { - "initialized": "never" - } - ], + "one-var": ["error", { "initialized": "never" }], "one-var-declaration-per-line": "off", "operator-assignment": "error", "operator-linebreak": "off", "padded-blocks": "off", "padding-line-between-statements": [ "error", - { - "blankLine": "always", - "prev": "directive", - "next": "*" - }, - { - "blankLine": "any", - "prev": "directive", - "next": "directive" - } + { "blankLine": "always", "prev": "directive", "next": "*" }, + { "blankLine": "any", "prev": "directive", "next": "directive" } ], "prefer-arrow-callback": "off", "prefer-const": "error", "prefer-destructuring": [ "error", { - "VariableDeclarator": { - "array": false, - "object": true - }, - "AssignmentExpression": { - "array": false, - "object": false - } + "VariableDeclarator": { "array": false, "object": true }, + "AssignmentExpression": { "array": false, "object": false } }, - { - "enforceForRenamedProperties": false - } + { "enforceForRenamedProperties": false } ], "prefer-numeric-literals": "error", "prefer-promise-reject-errors": "error", @@ -3320,13 +3244,22 @@ "tabWidth": 2, "trailingComma": "all" }, - { - "usePrettierrc": true - } + { "usePrettierrc": true } ], - "promise/no-multiple-resolved": "error", + "promise/always-return": "error", + "promise/avoid-new": "off", + "promise/catch-or-return": "error", + "promise/no-callback-in-promise": "warn", + "promise/no-native": "off", + "promise/no-nesting": "warn", + "promise/no-new-statics": "error", + "promise/no-promise-in-callback": "warn", + "promise/no-return-in-finally": "warn", + "promise/no-return-wrap": "error", + "promise/param-names": "error", + "promise/valid-params": "warn", "quote-props": "off", - "quotes": "off", + "quotes": 0, "radix": "error", "react/jsx-child-element-spacing": "off", "react/jsx-closing-bracket-location": "off", @@ -3386,10 +3319,10 @@ "symbol-description": "error", "template-curly-spacing": "off", "template-tag-spacing": "off", - "unicode-bom": "off", "unicorn/empty-brace-spaces": "off", "unicorn/no-nested-ternary": "off", "unicorn/number-literal-case": "off", + "unicorn/template-indent": 0, "use-isnan": "error", "valid-typeof": "error", "vue/array-bracket-newline": "off", @@ -3409,11 +3342,11 @@ "vue/html-end-tags": "off", "vue/html-indent": "off", "vue/html-quotes": "off", - "vue/html-self-closing": "off", + "vue/html-self-closing": 0, "vue/key-spacing": "off", "vue/keyword-spacing": "off", "vue/max-attributes-per-line": "off", - "vue/max-len": "off", + "vue/max-len": 0, "vue/multiline-html-element-content-newline": "off", "vue/multiline-ternary": "off", "vue/mustache-interpolation-spacing": "off", diff --git a/packages/jest/rules-snapshot.json b/packages/jest/rules-snapshot.json index d886af41..bd793dfb 100644 --- a/packages/jest/rules-snapshot.json +++ b/packages/jest/rules-snapshot.json @@ -1,14 +1,10 @@ { - "jest/consistent-test-it": [ - "error", - { - "fn": "it" - } - ], + "jest/consistent-test-it": ["error", { "fn": "it" }], "jest/expect-expect": "warn", "jest/no-alias-methods": "warn", "jest/no-commented-out-tests": "warn", "jest/no-conditional-expect": "error", + "jest/no-conditional-in-test": "error", "jest/no-deprecated-functions": "error", "jest/no-disabled-tests": "warn", "jest/no-done-callback": "error", @@ -16,7 +12,6 @@ "jest/no-export": "error", "jest/no-focused-tests": "error", "jest/no-identical-title": "error", - "jest/no-if": "error", "jest/no-interpolation-in-snapshots": "error", "jest/no-jasmine-globals": "error", "jest/no-mocks-import": "error", @@ -34,12 +29,7 @@ "jest/no-test-prefixes": "error", "jest/no-test-return-statement": "error", "jest/prefer-hooks-on-top": "error", - "jest/prefer-lowercase-title": [ - "error", - { - "ignore": ["describe"] - } - ], + "jest/prefer-lowercase-title": ["error", { "ignore": ["describe"] }], "jest/prefer-spy-on": "error", "jest/prefer-strict-equal": "error", "jest/prefer-to-be": "error", @@ -49,12 +39,7 @@ "jest/require-to-throw-message": "error", "jest/require-top-level-describe": "error", "jest/valid-describe-callback": "error", - "jest/valid-expect": [ - "error", - { - "alwaysAwait": true - } - ], + "jest/valid-expect": ["error", { "alwaysAwait": true }], "jest/valid-expect-in-promise": "error", "jest/valid-title": "error" } diff --git a/packages/mocha/rules-snapshot.json b/packages/mocha/rules-snapshot.json index 8466cbf2..5054ef7f 100644 --- a/packages/mocha/rules-snapshot.json +++ b/packages/mocha/rules-snapshot.json @@ -1,12 +1,7 @@ { "mocha/consistent-spacing-between-blocks": "error", "mocha/handle-done-callback": "error", - "mocha/max-top-level-suites": [ - "error", - { - "limit": 1 - } - ], + "mocha/max-top-level-suites": ["error", { "limit": 1 }], "mocha/no-async-describe": "error", "mocha/no-empty-description": "error", "mocha/no-exclusive-tests": "error", diff --git a/packages/nodejs/rules-snapshot.json b/packages/nodejs/rules-snapshot.json index 98ddf69c..bc2de421 100644 --- a/packages/nodejs/rules-snapshot.json +++ b/packages/nodejs/rules-snapshot.json @@ -4,6 +4,7 @@ "n/exports-style": "error", "n/global-require": "error", "n/handle-callback-err": ["error", "^(err|error)$"], + "n/hashbang": "error", "n/no-callback-literal": "error", "n/no-deprecated-api": "error", "n/no-exports-assign": "error", @@ -35,7 +36,6 @@ "n/prefer-promises/dns": "error", "n/prefer-promises/fs": "error", "n/process-exit-as-throw": "error", - "n/shebang": "error", "no-restricted-globals": [ "error", { diff --git a/packages/typescript/rules-snapshot.json b/packages/typescript/rules-snapshot.json index a0252cd5..c08c0acf 100644 --- a/packages/typescript/rules-snapshot.json +++ b/packages/typescript/rules-snapshot.json @@ -16,17 +16,11 @@ "leadingUnderscore": "allow", "trailingUnderscore": "forbid" }, - { - "selector": "enumMember", - "format": ["PascalCase"] - }, + { "selector": "enumMember", "format": ["PascalCase"] }, { "selector": "interface", "format": ["PascalCase"], - "custom": { - "regex": "^I[A-Z]", - "match": false - } + "custom": { "regex": "^I[A-Z]", "match": false } }, { "selector": "objectLiteralMethod", @@ -36,17 +30,11 @@ "selector": "objectLiteralProperty", "format": ["camelCase", "PascalCase", "UPPER_CASE"] }, - { - "selector": "typeLike", - "format": ["PascalCase"] - }, + { "selector": "typeLike", "format": ["PascalCase"] }, { "selector": "typeParameter", "format": ["PascalCase"], - "custom": { - "regex": "^.{3,}", - "match": true - } + "custom": { "regex": "^.{3,}", "match": true } }, { "selector": "variable", @@ -90,20 +78,13 @@ "@typescript-eslint/no-misused-promises": "error", "@typescript-eslint/no-namespace": [ "error", - { - "allowDefinitionFiles": true - } + { "allowDefinitionFiles": true } ], "@typescript-eslint/no-non-null-asserted-optional-chain": "error", "@typescript-eslint/no-non-null-assertion": "error", "@typescript-eslint/no-redundant-type-constituents": "error", "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-shadow": [ - "error", - { - "builtinGlobals": true - } - ], + "@typescript-eslint/no-shadow": ["error", { "builtinGlobals": true }], "@typescript-eslint/no-this-alias": "error", "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", "@typescript-eslint/no-unnecessary-qualifier": "error", @@ -121,10 +102,7 @@ "@typescript-eslint/no-unsafe-unary-minus": "error", "@typescript-eslint/no-unused-expressions": [ "error", - { - "allowShortCircuit": true, - "allowTernary": true - } + { "allowShortCircuit": true, "allowTernary": true } ], "@typescript-eslint/no-unused-vars": [ "error", @@ -135,12 +113,7 @@ "ignoreRestSiblings": true } ], - "@typescript-eslint/no-use-before-define": [ - "error", - { - "functions": false - } - ], + "@typescript-eslint/no-use-before-define": ["error", { "functions": false }], "@typescript-eslint/no-useless-constructor": "error", "@typescript-eslint/no-wrapper-object-types": "error", "@typescript-eslint/only-throw-error": "error", @@ -162,10 +135,7 @@ "@typescript-eslint/restrict-plus-operands": "error", "@typescript-eslint/restrict-template-expressions": [ "error", - { - "allowBoolean": true, - "allowNumber": true - } + { "allowBoolean": true, "allowNumber": true } ], "@typescript-eslint/switch-exhaustiveness-check": "error", "@typescript-eslint/triple-slash-reference": "error", @@ -176,12 +146,62 @@ "getter-return": "off", "import-x/named": "off", "import-x/no-unresolved": "off", + "jsdoc/check-access": "warn", + "jsdoc/check-alignment": "warn", + "jsdoc/check-examples": "off", "jsdoc/check-indentation": "error", + "jsdoc/check-line-alignment": "off", + "jsdoc/check-param-names": "warn", + "jsdoc/check-property-names": "warn", "jsdoc/check-syntax": "error", + "jsdoc/check-tag-names": ["warn", { "typed": true }], + "jsdoc/check-template-names": "off", + "jsdoc/check-types": "warn", + "jsdoc/check-values": "warn", + "jsdoc/convert-to-jsdoc-comments": "off", + "jsdoc/empty-tags": "warn", + "jsdoc/implements-on-classes": "warn", + "jsdoc/imports-as-dependencies": "off", + "jsdoc/informative-docs": "off", + "jsdoc/lines-before-block": "off", + "jsdoc/match-description": "off", + "jsdoc/match-name": "off", + "jsdoc/multiline-blocks": "warn", + "jsdoc/no-bad-blocks": "off", + "jsdoc/no-blank-block-descriptions": "off", + "jsdoc/no-blank-blocks": "off", + "jsdoc/no-defaults": "warn", + "jsdoc/no-missing-syntax": "off", + "jsdoc/no-multi-asterisks": "warn", + "jsdoc/no-restricted-syntax": "off", "jsdoc/no-types": "error", + "jsdoc/no-undefined-types": "off", + "jsdoc/require-asterisk-prefix": "off", + "jsdoc/require-description": "off", + "jsdoc/require-description-complete-sentence": "off", + "jsdoc/require-example": "off", + "jsdoc/require-file-overview": "off", + "jsdoc/require-hyphen-before-param-description": "off", + "jsdoc/require-jsdoc": "warn", + "jsdoc/require-param": "warn", + "jsdoc/require-param-description": "warn", + "jsdoc/require-param-name": "warn", "jsdoc/require-param-type": "off", + "jsdoc/require-property": "warn", + "jsdoc/require-property-description": "warn", + "jsdoc/require-property-name": "warn", "jsdoc/require-property-type": "off", + "jsdoc/require-returns": "warn", + "jsdoc/require-returns-check": "warn", + "jsdoc/require-returns-description": "warn", "jsdoc/require-returns-type": "off", + "jsdoc/require-template": "off", + "jsdoc/require-throws": "off", + "jsdoc/require-yields": "warn", + "jsdoc/require-yields-check": "warn", + "jsdoc/sort-tags": "off", + "jsdoc/tag-lines": "warn", + "jsdoc/text-escaping": "off", "jsdoc/valid-types": "off", "no-array-constructor": "off", "no-const-assign": "off", From c46cfd8cd5383c0bbefbad5c4c15466799e1764a Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 11:10:25 +0200 Subject: [PATCH 15/29] Normalize snapshots --- packages/base/rules-snapshot.json | 24 +++++++------- scripts/validate-configs.mjs | 55 ++++++++++++++++++++++++++++--- 2 files changed, 62 insertions(+), 17 deletions(-) diff --git a/packages/base/rules-snapshot.json b/packages/base/rules-snapshot.json index 1c472019..0b845444 100644 --- a/packages/base/rules-snapshot.json +++ b/packages/base/rules-snapshot.json @@ -9,12 +9,12 @@ "@typescript-eslint/indent": "off", "@typescript-eslint/key-spacing": "off", "@typescript-eslint/keyword-spacing": "off", - "@typescript-eslint/lines-around-comment": 0, + "@typescript-eslint/lines-around-comment": "off", "@typescript-eslint/member-delimiter-style": "off", "@typescript-eslint/no-extra-parens": "off", "@typescript-eslint/no-extra-semi": "off", "@typescript-eslint/object-curly-spacing": "off", - "@typescript-eslint/quotes": 0, + "@typescript-eslint/quotes": "off", "@typescript-eslint/semi": "off", "@typescript-eslint/space-before-blocks": "off", "@typescript-eslint/space-before-function-paren": "off", @@ -29,7 +29,7 @@ "arrow-parens": "off", "arrow-spacing": "off", "babel/object-curly-spacing": "off", - "babel/quotes": 0, + "babel/quotes": "off", "babel/semi": "off", "block-scoped-var": "error", "block-spacing": "off", @@ -201,9 +201,9 @@ "key-spacing": "off", "keyword-spacing": "off", "linebreak-style": "off", - "lines-around-comment": 0, + "lines-around-comment": "off", "lines-between-class-members": "error", - "max-len": 0, + "max-len": "off", "max-statements-per-line": "off", "multiline-ternary": "off", "new-cap": ["error", { "newIsCap": true, "capIsNew": false }], @@ -221,7 +221,7 @@ "no-comma-dangle": "off", "no-compare-neg-zero": "error", "no-cond-assign": "error", - "no-confusing-arrow": 0, + "no-confusing-arrow": "off", "no-const-assign": "error", "no-constant-binary-expression": "error", "no-constant-condition": "error", @@ -270,7 +270,7 @@ "no-loop-func": "error", "no-loss-of-precision": "error", "no-misleading-character-class": "error", - "no-mixed-operators": 0, + "no-mixed-operators": "off", "no-mixed-spaces-and-tabs": "off", "no-multi-assign": "error", "no-multi-spaces": "off", @@ -3167,7 +3167,7 @@ "no-trailing-spaces": "off", "no-undef": "error", "no-undef-init": "error", - "no-unexpected-multiline": 0, + "no-unexpected-multiline": "off", "no-unmodified-loop-condition": "error", "no-unneeded-ternary": ["error", { "defaultAssignment": false }], "no-unreachable": "error", @@ -3259,7 +3259,7 @@ "promise/param-names": "error", "promise/valid-params": "warn", "quote-props": "off", - "quotes": 0, + "quotes": "off", "radix": "error", "react/jsx-child-element-spacing": "off", "react/jsx-closing-bracket-location": "off", @@ -3322,7 +3322,7 @@ "unicorn/empty-brace-spaces": "off", "unicorn/no-nested-ternary": "off", "unicorn/number-literal-case": "off", - "unicorn/template-indent": 0, + "unicorn/template-indent": "off", "use-isnan": "error", "valid-typeof": "error", "vue/array-bracket-newline": "off", @@ -3342,11 +3342,11 @@ "vue/html-end-tags": "off", "vue/html-indent": "off", "vue/html-quotes": "off", - "vue/html-self-closing": 0, + "vue/html-self-closing": "off", "vue/key-spacing": "off", "vue/keyword-spacing": "off", "vue/max-attributes-per-line": "off", - "vue/max-len": 0, + "vue/max-len": "off", "vue/multiline-html-element-content-newline": "off", "vue/multiline-ternary": "off", "vue/mustache-interpolation-spacing": "off", diff --git a/scripts/validate-configs.mjs b/scripts/validate-configs.mjs index 0b5d6ea7..470a4342 100644 --- a/scripts/validate-configs.mjs +++ b/scripts/validate-configs.mjs @@ -8,6 +8,7 @@ import { format } from 'prettier'; /** * @typedef {import('eslint').Linter.Config[]} Config + * @typedef {Record>} Rules */ // The path to the monorepo packages directory @@ -23,19 +24,62 @@ const WRITE_MODE = // For logging const TAB = ' '; +/** + * Given an ESLint rule config value, convert it from numerical (0, 1, 2) to + * string (off, warn, error) notation, or just returns the given value. + * + * @param {unknown} configValue - The rule config value to normalize. + * @returns {string | unknown} The normalized rule config value. + */ +function normalizeRuleConfigValue(configValue) { + if (typeof configValue !== 'number' && typeof configValue !== 'string') { + return configValue; + } + + switch (String(configValue)) { + case '0': + return 'off'; + case '1': + return 'warn'; + case '2': + return 'error'; + default: + return configValue; + } +} + +/** + * Normalize a rules object, converting numerical rule values to string rule + * values. + * + * @param {Rules} rules - The rules object to normalize. + * @returns {Rules} The normalized rules object. + */ +function normalizeRules(rules) { + // @ts-expect-error - `Object.fromEntries` doesn't infer the return type. + return Object.fromEntries( + Object.entries(rules).map(([ruleName, ruleConfig]) => [ + ruleName, + Array.isArray(ruleConfig) + ? [normalizeRuleConfigValue(ruleConfig[0]), ...ruleConfig.slice(1)] + : normalizeRuleConfigValue(ruleConfig), + ]), + ); +} + /** * Flatten a {@link ConfigArray} into a record of rule names to rule values. * * @param {ConfigArray} configArray - The config array to flatten. - * @returns {Record} The flattened rule set. + * @returns {Rules} The flattened rule set. */ function flattenConfigArray(configArray) { /** - * @type {Record} + * @type {Rules} */ const ruleSet = configArray.reduce((flatConfig, rule) => { if (hasProperty(rule, 'rules')) { - Object.assign(flatConfig, rule.rules); + Object.assign(flatConfig, normalizeRules(rule.rules)); } return flatConfig; @@ -53,13 +97,14 @@ function flattenConfigArray(configArray) { * - Its flattened, complete rule set. * - The path to the package. * - * @returns {Promise }>>} The config map. + * @returns {Promise>} The + * config map. */ async function getMetaMaskConfigs() { const packages = await fs.readdir(PACKAGES_DIR_PATH); /** - * @type {Map }>} + * @type {Map} */ const allConfigs = new Map(); From 69c38f9fe26cb0c40f137b67ef34519fe64982b5 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 11:58:20 +0200 Subject: [PATCH 16/29] Fix lint errors --- eslint.config.mjs | 10 ++++++++++ package.json | 1 + packages/base/src/index.d.mts | 2 +- packages/browser/src/index.d.mts | 2 +- packages/commonjs/src/index.d.mts | 2 +- packages/jest/src/index.d.mts | 2 +- packages/mocha/src/index.d.mts | 2 +- packages/nodejs/src/index.d.mts | 2 +- packages/typescript/src/index.d.mts | 2 +- tsconfig.json | 4 +--- yarn.lock | 3 ++- 11 files changed, 21 insertions(+), 11 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index b7a0753c..a2ece714 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -6,6 +6,7 @@ import base from '@metamask/eslint-config'; // eslint-disable-next-line no-shadow import jest from '@metamask/eslint-config-jest'; import nodejs from '@metamask/eslint-config-nodejs'; +import typescript from '@metamask/eslint-config-typescript'; /** * @type {import('eslint').Linter.Config[]} @@ -19,8 +20,17 @@ const config = [ ...nodejs, ...jest, + // This is the recommended way to apply a config array to a subset of files: + // https://eslint.org/docs/latest/use/configure/combine-configs#apply-a-config-array-to-a-subset-of-files + ...typescript.map((typeScriptConfig) => ({ + files: ['**/*.d.mts'], + ...typeScriptConfig, + })), + { name: 'main', + files: ['**/*.js', '**/*.mjs'], + languageOptions: { ecmaVersion: 2022, diff --git a/package.json b/package.json index b030f924..76e7bf2a 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "@metamask/eslint-config": "^13.0.0", "@metamask/eslint-config-jest": "workspace:^", "@metamask/eslint-config-nodejs": "^13.0.0", + "@metamask/eslint-config-typescript": "workspace:^", "@metamask/utils": "^9.1.0", "@types/eslint__js": "^8.42.3", "@types/jest": "^29.5.12", diff --git a/packages/base/src/index.d.mts b/packages/base/src/index.d.mts index 8704c152..3f913173 100644 --- a/packages/base/src/index.d.mts +++ b/packages/base/src/index.d.mts @@ -1,5 +1,5 @@ declare module '@metamask/eslint-config' { - import { Linter } from 'eslint'; + import type { Linter } from 'eslint'; const config: Linter.Config[]; export default config; diff --git a/packages/browser/src/index.d.mts b/packages/browser/src/index.d.mts index 24f348fe..cbc219dd 100644 --- a/packages/browser/src/index.d.mts +++ b/packages/browser/src/index.d.mts @@ -1,5 +1,5 @@ declare module '@metamask/eslint-config-browser' { - import { Linter } from 'eslint'; + import type { Linter } from 'eslint'; const config: Linter.Config[]; export default config; diff --git a/packages/commonjs/src/index.d.mts b/packages/commonjs/src/index.d.mts index f97dcb50..c4e7cdec 100644 --- a/packages/commonjs/src/index.d.mts +++ b/packages/commonjs/src/index.d.mts @@ -1,5 +1,5 @@ declare module '@metamask/eslint-config-commonjs' { - import { Linter } from 'eslint'; + import type { Linter } from 'eslint'; const config: Linter.Config[]; export default config; diff --git a/packages/jest/src/index.d.mts b/packages/jest/src/index.d.mts index 2cc70c64..8bfa0f5c 100644 --- a/packages/jest/src/index.d.mts +++ b/packages/jest/src/index.d.mts @@ -1,5 +1,5 @@ declare module '@metamask/eslint-config-jest' { - import { Linter } from 'eslint'; + import type { Linter } from 'eslint'; const config: Linter.Config[]; export default config; diff --git a/packages/mocha/src/index.d.mts b/packages/mocha/src/index.d.mts index 5425596f..3f4c136d 100644 --- a/packages/mocha/src/index.d.mts +++ b/packages/mocha/src/index.d.mts @@ -1,5 +1,5 @@ declare module '@metamask/eslint-config-mocha' { - import { Linter } from 'eslint'; + import type { Linter } from 'eslint'; const config: Linter.Config[]; export default config; diff --git a/packages/nodejs/src/index.d.mts b/packages/nodejs/src/index.d.mts index a2b4e72f..aaddc196 100644 --- a/packages/nodejs/src/index.d.mts +++ b/packages/nodejs/src/index.d.mts @@ -1,5 +1,5 @@ declare module '@metamask/eslint-config-nodejs' { - import { Linter } from 'eslint'; + import type { Linter } from 'eslint'; const config: Linter.Config[]; export default config; diff --git a/packages/typescript/src/index.d.mts b/packages/typescript/src/index.d.mts index e6d0da6a..db16262b 100644 --- a/packages/typescript/src/index.d.mts +++ b/packages/typescript/src/index.d.mts @@ -1,5 +1,5 @@ declare module '@metamask/eslint-config-typescript' { - import { Linter } from 'eslint'; + import type { Linter } from 'eslint'; const config: Linter.Config[]; export default config; diff --git a/tsconfig.json b/tsconfig.json index 505bcaac..11ae8484 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,8 +14,6 @@ "strict": true, "target": "ES2022" }, - "include": [ - "**/*.mjs", - ], + "include": ["**/*.mjs", "**/*.mts"], "exclude": ["./dist", "**/node_modules"] } diff --git a/yarn.lock b/yarn.lock index 4fbe60fb..a194b4df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1052,7 +1052,7 @@ __metadata: languageName: unknown linkType: soft -"@metamask/eslint-config-typescript@workspace:packages/typescript": +"@metamask/eslint-config-typescript@workspace:^, @metamask/eslint-config-typescript@workspace:packages/typescript": version: 0.0.0-use.local resolution: "@metamask/eslint-config-typescript@workspace:packages/typescript" dependencies: @@ -4891,6 +4891,7 @@ __metadata: "@metamask/eslint-config": ^13.0.0 "@metamask/eslint-config-jest": "workspace:^" "@metamask/eslint-config-nodejs": ^13.0.0 + "@metamask/eslint-config-typescript": "workspace:^" "@metamask/utils": ^9.1.0 "@types/eslint__js": ^8.42.3 "@types/jest": ^29.5.12 From 5b8f52e5067f4cc9b116c1cb6c47927602a57f52 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 13:29:24 +0200 Subject: [PATCH 17/29] Update formatting of package.jsons --- packages/base/package.json | 14 +++++++------- packages/browser/package.json | 12 ++++++------ packages/commonjs/package.json | 12 ++++++------ packages/jest/package.json | 12 ++++++------ packages/mocha/package.json | 10 +++++----- packages/nodejs/package.json | 12 ++++++------ packages/typescript/package.json | 10 +++++----- 7 files changed, 41 insertions(+), 41 deletions(-) diff --git a/packages/base/package.json b/packages/base/package.json index 8901132d..456d6538 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -10,10 +10,8 @@ "type": "git", "url": "https://github.com/MetaMask/eslint-config.git" }, - "type": "module", "license": "MIT", - "main": "./src/index.mjs", - "types": "./src/index.d.mts", + "type": "module", "exports": { ".": { "import": { @@ -22,6 +20,8 @@ } } }, + "main": "./src/index.mjs", + "types": "./src/index.d.mts", "files": [ "src/", "!src/**/*.test.js" @@ -31,6 +31,10 @@ "publish": "npm publish", "test": "eslint ." }, + "dependencies": { + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" + }, "devDependencies": { "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", @@ -57,9 +61,5 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" - }, - "dependencies": { - "@eslint/js": "^9.11.0", - "globals": "^15.9.0" } } diff --git a/packages/browser/package.json b/packages/browser/package.json index 0eb218e7..9b35c3d4 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -11,8 +11,6 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "./src/index.mjs", - "types": "./src/index.d.mts", "exports": { ".": { "import": { @@ -21,6 +19,8 @@ } } }, + "main": "./src/index.mjs", + "types": "./src/index.d.mts", "files": [ "src/", "!src/**/*.test.js" @@ -30,6 +30,10 @@ "publish": "npm publish", "test": "eslint ." }, + "dependencies": { + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" + }, "devDependencies": { "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", @@ -50,9 +54,5 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" - }, - "dependencies": { - "@eslint/js": "^9.11.0", - "globals": "^15.9.0" } } diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index f95f642e..f166ba97 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -11,8 +11,6 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "./src/index.mjs", - "types": "./src/index.d.mts", "exports": { ".": { "import": { @@ -21,6 +19,8 @@ } } }, + "main": "./src/index.mjs", + "types": "./src/index.d.mts", "files": [ "src/", "!src/**/*.test.js" @@ -30,6 +30,10 @@ "publish": "npm publish", "test": "eslint ." }, + "dependencies": { + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" + }, "devDependencies": { "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", @@ -50,9 +54,5 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" - }, - "dependencies": { - "@eslint/js": "^9.11.0", - "globals": "^15.9.0" } } diff --git a/packages/jest/package.json b/packages/jest/package.json index 2919d114..7b6e7549 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -11,8 +11,6 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "./src/index.mjs", - "types": "./src/index.d.mts", "exports": { ".": { "import": { @@ -21,6 +19,8 @@ } } }, + "main": "./src/index.mjs", + "types": "./src/index.d.mts", "files": [ "src/", "!src/**/*.test.js" @@ -30,6 +30,10 @@ "publish": "npm publish", "test": "eslint ." }, + "dependencies": { + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" + }, "devDependencies": { "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", @@ -53,9 +57,5 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" - }, - "dependencies": { - "@eslint/js": "^9.11.0", - "globals": "^15.9.0" } } diff --git a/packages/mocha/package.json b/packages/mocha/package.json index b324470d..091afff2 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -11,8 +11,6 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "./src/index.mjs", - "types": "./src/index.d.mts", "exports": { ".": { "import": { @@ -21,6 +19,8 @@ } } }, + "main": "./src/index.mjs", + "types": "./src/index.d.mts", "files": [ "src/", "!src/**/*.test.js" @@ -30,6 +30,9 @@ "publish": "npm publish", "test": "eslint ." }, + "dependencies": { + "@eslint/js": "^9.11.0" + }, "devDependencies": { "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", @@ -53,8 +56,5 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" - }, - "dependencies": { - "@eslint/js": "^9.11.0" } } diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index 075fa7c3..7ef71452 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -11,8 +11,6 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "./src/index.mjs", - "types": "./src/index.d.mts", "exports": { ".": { "import": { @@ -21,6 +19,8 @@ } } }, + "main": "./src/index.mjs", + "types": "./src/index.d.mts", "files": [ "src/", "!src/**/*.test.js" @@ -30,6 +30,10 @@ "publish": "npm publish", "test": "eslint ." }, + "dependencies": { + "@eslint/js": "^9.11.0", + "globals": "^15.9.0" + }, "devDependencies": { "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", @@ -53,9 +57,5 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" - }, - "dependencies": { - "@eslint/js": "^9.11.0", - "globals": "^15.9.0" } } diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 15b5be72..339ba860 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -11,8 +11,6 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", - "main": "./src/index.mjs", - "types": "./src/index.d.mts", "exports": { ".": { "import": { @@ -21,6 +19,8 @@ } } }, + "main": "./src/index.mjs", + "types": "./src/index.d.mts", "files": [ "src/", "!src/**/*.test.js", @@ -31,6 +31,9 @@ "publish": "npm publish", "test": "eslint ." }, + "dependencies": { + "@eslint/js": "^9.11.0" + }, "devDependencies": { "@jest/globals": "^29.7.0", "@metamask/auto-changelog": "^3.4.4", @@ -60,8 +63,5 @@ "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" - }, - "dependencies": { - "@eslint/js": "^9.11.0" } } From d7a0b666b7c79d3db4cc89bd9e86e7dc3047bf7f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 13:53:03 +0200 Subject: [PATCH 18/29] Update configs to use helper --- eslint.config.mjs | 41 +- package.json | 3 +- packages/base/package.json | 5 +- packages/browser/package.json | 5 +- packages/commonjs/package.json | 5 +- packages/jest/package.json | 6 +- packages/jest/src/index.mjs | 1 - packages/mocha/package.json | 6 +- packages/nodejs/package.json | 5 +- packages/typescript/package.json | 6 +- packages/typescript/src/index.mjs | 390 ++++++----- packages/typescript/src/index.test.mjs | 8 +- yarn.lock | 904 ++++++++++++++++++++++++- 13 files changed, 1139 insertions(+), 246 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index a2ece714..f38ca452 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -3,29 +3,44 @@ // @ts-expect-error - `@babel/eslint-parser` doesn't have TypeScript types. import babel from '@babel/eslint-parser'; import base from '@metamask/eslint-config'; -// eslint-disable-next-line no-shadow import jest from '@metamask/eslint-config-jest'; import nodejs from '@metamask/eslint-config-nodejs'; import typescript from '@metamask/eslint-config-typescript'; +// eslint-disable-next-line import-x/no-unresolved +import tseslint from 'typescript-eslint'; -/** - * @type {import('eslint').Linter.Config[]} - */ -const config = [ +const config = tseslint.config( { ignores: ['.yarn/'], }, ...base, ...nodejs, - ...jest, - // This is the recommended way to apply a config array to a subset of files: - // https://eslint.org/docs/latest/use/configure/combine-configs#apply-a-config-array-to-a-subset-of-files - ...typescript.map((typeScriptConfig) => ({ - files: ['**/*.d.mts'], - ...typeScriptConfig, - })), + { + files: [ + '**/*.ts', + '**/*.tsx', + '**/*.mts', + '**/*.cts', + '**/*.mtsx', + '**/*.ctsx', + ], + extends: typescript, + }, + + { + files: ['**/*.test.mjs'], + extends: jest, + rules: { + 'no-shadow': [ + 'error', + { + allow: ['describe', 'it', 'expect'], + }, + ], + }, + }, { name: 'main', @@ -56,6 +71,6 @@ const config = [ 'n/no-unpublished-require': 'off', }, }, -]; +); export default config; diff --git a/package.json b/package.json index 76e7bf2a..7b95bea6 100644 --- a/package.json +++ b/package.json @@ -45,10 +45,11 @@ "eslint-plugin-n": "^17.10.3", "eslint-plugin-prettier": "^5.2.1", "fast-deep-equal": "^3.1.3", - "globals": "^15.0.0", + "globals": "^15.9.0", "prettier": "^3.3.3", "prettier-plugin-packagejson": "^2.5.2", "typescript": "~5.5.4", + "typescript-eslint": "^8.6.0", "vite": "^5.4.7", "vitest": "^2.1.1" }, diff --git a/packages/base/package.json b/packages/base/package.json index 456d6538..ce98e1b6 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -24,7 +24,7 @@ "types": "./src/index.d.mts", "files": [ "src/", - "!src/**/*.test.js" + "!src/**/*.test.mjs" ], "scripts": { "lint:changelog": "auto-changelog validate", @@ -44,7 +44,8 @@ "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-promise": "^7.1.0", - "prettier": "^3.3.3" + "prettier": "^3.3.3", + "vitest": "^2.1.1" }, "peerDependencies": { "eslint": "^9.11.0", diff --git a/packages/browser/package.json b/packages/browser/package.json index 9b35c3d4..f02bd766 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -23,7 +23,7 @@ "types": "./src/index.d.mts", "files": [ "src/", - "!src/**/*.test.js" + "!src/**/*.test.mjs" ], "scripts": { "lint:changelog": "auto-changelog validate", @@ -42,7 +42,8 @@ "eslint-plugin-import-x": "^4.3.0", "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-prettier": "^5.2.1", - "prettier": "^3.3.3" + "prettier": "^3.3.3", + "vitest": "^2.1.1" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index f166ba97..77c30848 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -23,7 +23,7 @@ "types": "./src/index.d.mts", "files": [ "src/", - "!src/**/*.test.js" + "!src/**/*.test.mjs" ], "scripts": { "lint:changelog": "auto-changelog validate", @@ -42,7 +42,8 @@ "eslint-plugin-import-x": "^4.3.0", "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-prettier": "^5.2.1", - "prettier": "^3.3.3" + "prettier": "^3.3.3", + "vitest": "^2.1.1" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/jest/package.json b/packages/jest/package.json index 7b6e7549..8caaaedc 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -23,7 +23,7 @@ "types": "./src/index.d.mts", "files": [ "src/", - "!src/**/*.test.js" + "!src/**/*.test.mjs" ], "scripts": { "lint:changelog": "auto-changelog validate", @@ -44,7 +44,9 @@ "eslint-plugin-jest": "^28.8.3", "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-prettier": "^5.2.1", - "prettier": "^3.3.3" + "jest": "^29.7.0", + "prettier": "^3.3.3", + "vitest": "^2.1.1" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/jest/src/index.mjs b/packages/jest/src/index.mjs index 55ef0a9e..3ca690ed 100644 --- a/packages/jest/src/index.mjs +++ b/packages/jest/src/index.mjs @@ -1,4 +1,3 @@ -// eslint-disable-next-line no-shadow import jest from 'eslint-plugin-jest'; import globals from 'globals'; diff --git a/packages/mocha/package.json b/packages/mocha/package.json index 091afff2..f4d9e932 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -23,7 +23,7 @@ "types": "./src/index.d.mts", "files": [ "src/", - "!src/**/*.test.js" + "!src/**/*.test.mjs" ], "scripts": { "lint:changelog": "auto-changelog validate", @@ -43,7 +43,9 @@ "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-mocha": "^10.5.0", "eslint-plugin-prettier": "^5.2.1", - "prettier": "^3.3.3" + "globals": "^15.9.0", + "prettier": "^3.3.3", + "vitest": "^2.1.1" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index 7ef71452..da7e287c 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -23,7 +23,7 @@ "types": "./src/index.d.mts", "files": [ "src/", - "!src/**/*.test.js" + "!src/**/*.test.mjs" ], "scripts": { "lint:changelog": "auto-changelog validate", @@ -44,7 +44,8 @@ "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-n": "^17.10.3", "eslint-plugin-prettier": "^5.2.1", - "prettier": "^3.3.3" + "prettier": "^3.3.3", + "vitest": "^2.1.1" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 339ba860..b0875390 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -23,7 +23,7 @@ "types": "./src/index.d.mts", "files": [ "src/", - "!src/**/*.test.js", + "!src/**/*.test.mjs", "!src/**/__test__" ], "scripts": { @@ -44,9 +44,11 @@ "eslint-plugin-import-x": "^4.3.0", "eslint-plugin-jsdoc": "^50.2.4", "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.9.0", "prettier": "^3.3.3", "typescript": "~5.5.4", - "typescript-eslint": "^8.6.0" + "typescript-eslint": "^8.6.0", + "vitest": "^2.1.1" }, "peerDependencies": { "@metamask/eslint-config": "^13.0.0", diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index 13c149df..af4d4c41 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -5,220 +5,218 @@ import jsdoc from 'eslint-plugin-jsdoc'; // eslint-disable-next-line import-x/no-unresolved import typescript from 'typescript-eslint'; -/** - * @type {import('eslint').Linter.Config[]} - */ -const config = [ - ...typescript.configs.recommended, - ...typescript.configs.recommendedTypeChecked, - importX.flatConfigs.typescript, - jsdoc.configs['flat/recommended-typescript'], - - { - name: '@metamask/eslint-config-typescript', - - files: [ - '**/*.ts', - '**/*.tsx', - '**/*.mts', - '**/*.cts', - '**/*.mtsx', - '**/*.ctsx', - ], +const config = typescript.config({ + name: '@metamask/eslint-config-typescript', - languageOptions: { - sourceType: 'module', - parserOptions: { - // This option requires `tsconfigRootDir` to be set, but this needs to - // be set on a per-project basis. - projectService: true, - }, + plugins: { + '@typescript-eslint': typescript.plugin, + }, + + extends: [ + ...typescript.configs.recommended, + ...typescript.configs.recommendedTypeChecked, + importX.flatConfigs.typescript, + jsdoc.configs['flat/recommended-typescript'], + ], + + files: [ + '**/*.ts', + '**/*.tsx', + '**/*.mts', + '**/*.cts', + '**/*.mtsx', + '**/*.ctsx', + ], + + languageOptions: { + sourceType: 'module', + parserOptions: { + // This option requires `tsconfigRootDir` to be set, but this needs to + // be set on a per-project basis. + projectService: true, }, + }, - settings: { - 'import-x/resolver': { - name: 'typescript', - resolver, - }, + settings: { + 'import-x/resolver': { + name: 'typescript', + resolver, }, + }, - rules: { - // Handled by TypeScript - 'import-x/no-unresolved': 'off', - - // Our rules - '@typescript-eslint/array-type': 'error', - '@typescript-eslint/consistent-type-assertions': 'error', - '@typescript-eslint/consistent-type-definitions': ['error', 'type'], - '@typescript-eslint/consistent-type-imports': 'error', - '@typescript-eslint/explicit-function-return-type': 'error', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-namespace': [ - 'error', - { allowDefinitionFiles: true }, - ], - '@typescript-eslint/no-non-null-assertion': 'error', - '@typescript-eslint/parameter-properties': 'error', - '@typescript-eslint/prefer-for-of': 'error', - '@typescript-eslint/prefer-function-type': 'error', - '@typescript-eslint/prefer-optional-chain': 'error', - '@typescript-eslint/unified-signatures': 'error', - '@typescript-eslint/no-dupe-class-members': 'error', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - vars: 'all', - args: 'all', - argsIgnorePattern: '[_]+', - ignoreRestSiblings: true, - }, - ], - - // Recommended rules that require type information - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - - // Recommended rules that we do not want to use - '@typescript-eslint/require-await': 'off', - - // Our rules that require type information - '@typescript-eslint/consistent-type-exports': 'error', - '@typescript-eslint/naming-convention': [ - 'error', - { - selector: 'default', - format: ['camelCase'], - leadingUnderscore: 'allow', - trailingUnderscore: 'forbid', - }, - { - selector: 'enumMember', - format: ['PascalCase'], - }, - { - selector: 'interface', - format: ['PascalCase'], - custom: { - regex: '^I[A-Z]', - match: false, - }, - }, - { - selector: 'objectLiteralMethod', - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - }, - { - selector: 'objectLiteralProperty', - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - }, - { - selector: 'typeLike', - format: ['PascalCase'], - }, - { - selector: 'typeParameter', - format: ['PascalCase'], - custom: { - regex: '^.{3,}', - match: true, - }, - }, - { - selector: 'variable', - format: ['camelCase', 'UPPER_CASE', 'PascalCase'], - leadingUnderscore: 'allow', - }, - { - selector: 'parameter', - format: ['camelCase', 'PascalCase'], - leadingUnderscore: 'allow', - }, - { - selector: [ - 'classProperty', - 'objectLiteralProperty', - 'typeProperty', - 'classMethod', - 'objectLiteralMethod', - 'typeMethod', - 'accessor', - 'enumMember', - ], - format: null, - modifiers: ['requiresQuotes'], + rules: { + // Handled by TypeScript + 'import-x/no-unresolved': 'off', + + // Our rules + '@typescript-eslint/array-type': 'error', + '@typescript-eslint/consistent-type-assertions': 'error', + '@typescript-eslint/consistent-type-definitions': ['error', 'type'], + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/explicit-function-return-type': 'error', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-namespace': [ + 'error', + { allowDefinitionFiles: true }, + ], + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/parameter-properties': 'error', + '@typescript-eslint/prefer-for-of': 'error', + '@typescript-eslint/prefer-function-type': 'error', + '@typescript-eslint/prefer-optional-chain': 'error', + '@typescript-eslint/unified-signatures': 'error', + '@typescript-eslint/no-dupe-class-members': 'error', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'all', + argsIgnorePattern: '[_]+', + ignoreRestSiblings: true, + }, + ], + + // Recommended rules that require type information + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + + // Recommended rules that we do not want to use + '@typescript-eslint/require-await': 'off', + + // Our rules that require type information + '@typescript-eslint/consistent-type-exports': 'error', + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'default', + format: ['camelCase'], + leadingUnderscore: 'allow', + trailingUnderscore: 'forbid', + }, + { + selector: 'enumMember', + format: ['PascalCase'], + }, + { + selector: 'interface', + format: ['PascalCase'], + custom: { + regex: '^I[A-Z]', + match: false, }, - ], - '@typescript-eslint/no-meaningless-void-operator': 'error', - '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error', - '@typescript-eslint/no-unnecessary-qualifier': 'error', - '@typescript-eslint/no-unnecessary-type-arguments': 'error', - '@typescript-eslint/prefer-enum-initializers': 'error', - '@typescript-eslint/prefer-includes': 'error', - '@typescript-eslint/prefer-nullish-coalescing': 'error', - '@typescript-eslint/prefer-readonly': 'error', - '@typescript-eslint/prefer-reduce-type-parameter': 'error', - '@typescript-eslint/prefer-string-starts-ends-with': 'error', - '@typescript-eslint/promise-function-async': 'error', - '@typescript-eslint/restrict-template-expressions': [ - 'error', - { - allowBoolean: true, - allowNumber: true, + }, + { + selector: 'objectLiteralMethod', + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + }, + { + selector: 'objectLiteralProperty', + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + }, + { + selector: 'typeLike', + format: ['PascalCase'], + }, + { + selector: 'typeParameter', + format: ['PascalCase'], + custom: { + regex: '^.{3,}', + match: true, }, - ], - '@typescript-eslint/switch-exhaustiveness-check': 'error', + }, + { + selector: 'variable', + format: ['camelCase', 'UPPER_CASE', 'PascalCase'], + leadingUnderscore: 'allow', + }, + { + selector: 'parameter', + format: ['camelCase', 'PascalCase'], + leadingUnderscore: 'allow', + }, + { + selector: [ + 'classProperty', + 'objectLiteralProperty', + 'typeProperty', + 'classMethod', + 'objectLiteralMethod', + 'typeMethod', + 'accessor', + 'enumMember', + ], + format: null, + modifiers: ['requiresQuotes'], + }, + ], + '@typescript-eslint/no-meaningless-void-operator': 'error', + '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'error', + '@typescript-eslint/no-unnecessary-qualifier': 'error', + '@typescript-eslint/no-unnecessary-type-arguments': 'error', + '@typescript-eslint/prefer-enum-initializers': 'error', + '@typescript-eslint/prefer-includes': 'error', + '@typescript-eslint/prefer-nullish-coalescing': 'error', + '@typescript-eslint/prefer-readonly': 'error', + '@typescript-eslint/prefer-reduce-type-parameter': 'error', + '@typescript-eslint/prefer-string-starts-ends-with': 'error', + '@typescript-eslint/promise-function-async': 'error', + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { + allowBoolean: true, + allowNumber: true, + }, + ], + '@typescript-eslint/switch-exhaustiveness-check': 'error', - 'default-param-last': 'off', - '@typescript-eslint/default-param-last': 'error', + 'default-param-last': 'off', + '@typescript-eslint/default-param-last': 'error', - 'no-shadow': 'off', - '@typescript-eslint/no-shadow': ['error', { builtinGlobals: true }], + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': ['error', { builtinGlobals: true }], - '@typescript-eslint/no-unused-expressions': [ - 'error', - { allowShortCircuit: true, allowTernary: true }, - ], + '@typescript-eslint/no-unused-expressions': [ + 'error', + { allowShortCircuit: true, allowTernary: true }, + ], - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'error', - { functions: false }, - ], + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': ['error', { functions: false }], - 'no-useless-constructor': 'off', - '@typescript-eslint/no-useless-constructor': 'error', + 'no-useless-constructor': 'off', + '@typescript-eslint/no-useless-constructor': 'error', - /* jsdoc plugin rules */ + /* jsdoc plugin rules */ - 'jsdoc/check-syntax': 'error', + 'jsdoc/check-syntax': 'error', - // This is enabled here rather than in the base config because it doesn't play nicely with - // multi-line JSDoc types. - 'jsdoc/check-indentation': 'error', + // This is enabled here rather than in the base config because it doesn't play nicely with + // multi-line JSDoc types. + 'jsdoc/check-indentation': 'error', - // Use TypeScript types rather than JSDoc types. - 'jsdoc/no-types': 'error', + // Use TypeScript types rather than JSDoc types. + 'jsdoc/no-types': 'error', - // These all conflict with `jsdoc/no-types`. - 'jsdoc/require-param-type': 'off', - 'jsdoc/require-property-type': 'off', - 'jsdoc/require-returns-type': 'off', - 'jsdoc/valid-types': 'off', + // These all conflict with `jsdoc/no-types`. + 'jsdoc/require-param-type': 'off', + 'jsdoc/require-property-type': 'off', + 'jsdoc/require-returns-type': 'off', + 'jsdoc/valid-types': 'off', - // Prefer hash names over TypeScript's `private` modifier. - 'no-restricted-syntax': [ - 'error', - { - selector: - "PropertyDefinition[accessibility='private'], MethodDefinition[accessibility='private'], TSParameterProperty[accessibility='private']", - message: 'Use a hash name instead.', - }, - ], - }, + // Prefer hash names over TypeScript's `private` modifier. + 'no-restricted-syntax': [ + 'error', + { + selector: + "PropertyDefinition[accessibility='private'], MethodDefinition[accessibility='private'], TSParameterProperty[accessibility='private']", + message: 'Use a hash name instead.', + }, + ], }, -]; +}); export default config; diff --git a/packages/typescript/src/index.test.mjs b/packages/typescript/src/index.test.mjs index 60b910fc..df0bfdb0 100644 --- a/packages/typescript/src/index.test.mjs +++ b/packages/typescript/src/index.test.mjs @@ -1,9 +1,9 @@ import { ESLint } from 'eslint'; +import globals from 'globals'; import { resolve } from 'path'; import { describe, it, expect } from 'vitest'; import config from '.'; -import globals from 'globals'; describe('index', () => { it('is a valid ESLint config', async () => { @@ -17,7 +17,7 @@ describe('index', () => { parserOptions: { tsconfigRootDir: resolve(import.meta.dirname, '..'), project: 'tsconfig.json', - } + }, }, }, }); @@ -25,7 +25,9 @@ describe('index', () => { // In order to test rules that require type information, we need to actually // compile the file with TypeScript, so rather than using `api.lintText()`, // we use `api.lintFiles()` and pass in a file that we know will pass. - const result = await api.lintFiles(resolve(import.meta.dirname, '__test__/dummy.ts')); + const result = await api.lintFiles( + resolve(import.meta.dirname, '__test__/dummy.ts'), + ); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); diff --git a/yarn.lock b/yarn.lock index a194b4df..e9325808 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,7 +22,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7": version: 7.24.7 resolution: "@babel/code-frame@npm:7.24.7" dependencies: @@ -39,7 +39,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.25.2": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" dependencies: @@ -185,7 +185,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.14.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": version: 7.25.6 resolution: "@babel/parser@npm:7.25.6" dependencies: @@ -383,7 +383,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.0": +"@babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": version: 7.25.0 resolution: "@babel/template@npm:7.25.0" dependencies: @@ -409,7 +409,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.3.3": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.3.3": version: 7.25.6 resolution: "@babel/types@npm:7.25.6" dependencies: @@ -420,6 +420,13 @@ __metadata: languageName: node linkType: hard +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 + languageName: node + linkType: hard + "@es-joy/jsdoccomment@npm:~0.48.0": version: 0.48.0 resolution: "@es-joy/jsdoccomment@npm:0.48.0" @@ -751,13 +758,68 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 languageName: node linkType: hard +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + slash: ^3.0.0 + checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": ^29.7.0 + "@jest/reporters": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + ci-info: ^3.2.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-changed-files: ^29.7.0 + jest-config: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-resolve-dependencies: ^29.7.0 + jest-runner: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + jest-watcher: ^29.7.0 + micromatch: ^4.0.4 + pretty-format: ^29.7.0 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d + languageName: node + linkType: hard + "@jest/environment@npm:^29.7.0": version: 29.7.0 resolution: "@jest/environment@npm:29.7.0" @@ -815,6 +877,43 @@ __metadata: languageName: node linkType: hard +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 + "@types/node": "*" + chalk: ^4.0.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-instrument: ^6.0.0 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.1.3 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 + slash: ^3.0.0 + string-length: ^4.0.1 + strip-ansi: ^6.0.0 + v8-to-istanbul: ^9.0.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -824,6 +923,41 @@ __metadata: languageName: node linkType: hard +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": ^0.3.18 + callsites: ^3.0.0 + graceful-fs: ^4.2.9 + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": ^29.7.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + slash: ^3.0.0 + checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd + languageName: node + linkType: hard + "@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" @@ -893,7 +1027,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -958,6 +1092,7 @@ __metadata: eslint-plugin-prettier: ^5.2.1 globals: ^15.9.0 prettier: ^3.3.3 + vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -978,6 +1113,7 @@ __metadata: eslint-plugin-prettier: ^5.2.1 globals: ^15.9.0 prettier: ^3.3.3 + vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -999,7 +1135,9 @@ __metadata: eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-prettier: ^5.2.1 globals: ^15.9.0 + jest: ^29.7.0 prettier: ^3.3.3 + vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -1021,7 +1159,9 @@ __metadata: eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-mocha: ^10.5.0 eslint-plugin-prettier: ^5.2.1 + globals: ^15.9.0 prettier: ^3.3.3 + vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -1045,6 +1185,7 @@ __metadata: eslint-plugin-prettier: ^5.2.1 globals: ^15.9.0 prettier: ^3.3.3 + vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -1066,9 +1207,11 @@ __metadata: eslint-plugin-import-x: ^4.3.0 eslint-plugin-jsdoc: ^50.2.4 eslint-plugin-prettier: ^5.2.1 + globals: ^15.9.0 prettier: ^3.3.3 typescript: ~5.5.4 typescript-eslint: ^8.6.0 + vitest: ^2.1.1 peerDependencies: "@metamask/eslint-config": ^13.0.0 eslint: ^9.11.0 @@ -1095,6 +1238,7 @@ __metadata: eslint-plugin-promise: ^7.1.0 globals: ^15.9.0 prettier: ^3.3.3 + vitest: ^2.1.1 peerDependencies: eslint: ^9.11.0 eslint-config-prettier: ^9.1.0 @@ -1477,6 +1621,47 @@ __metadata: languageName: node linkType: hard +"@types/babel__core@npm:^7.1.14": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": ^7.0.0 + checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" + dependencies: + "@babel/types": ^7.20.7 + checksum: 2bdc65eb62232c2d5c1086adeb0c31e7980e6fd7e50a3483b4a724a1a1029c84d9cb59749cf8de612f9afa2bc14c85b8f50e64e21f8a4398fa77eb9059a4283c + languageName: node + linkType: hard + "@types/debug@npm:^4.1.7": version: 4.1.7 resolution: "@types/debug@npm:4.1.7" @@ -1528,7 +1713,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 @@ -1888,6 +2073,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -1982,6 +2176,23 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": ^29.7.0 + "@types/babel__core": ^7.1.14 + babel-plugin-istanbul: ^6.1.1 + babel-preset-jest: ^29.6.3 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.8.0 + checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 + languageName: node + linkType: hard + "babel-plugin-istanbul@npm:^6.1.1": version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1" @@ -1995,6 +2206,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.1.14 + "@types/babel__traverse": ^7.0.6 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 + languageName: node + linkType: hard + "babel-preset-current-node-syntax@npm:^1.0.0": version: 1.1.0 resolution: "babel-preset-current-node-syntax@npm:1.1.0" @@ -2020,6 +2243,18 @@ __metadata: languageName: node linkType: hard +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: ^29.6.3 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -2090,6 +2325,13 @@ __metadata: languageName: node linkType: hard +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + languageName: node + linkType: hard + "builtins@npm:^5.0.0": version: 5.0.1 resolution: "builtins@npm:5.0.1" @@ -2166,6 +2408,13 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001646": version: 1.0.30001662 resolution: "caniuse-lite@npm:1.0.30001662" @@ -2209,6 +2458,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 + languageName: node + linkType: hard + "check-error@npm:^2.1.1": version: 2.1.1 resolution: "check-error@npm:2.1.1" @@ -2230,6 +2486,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^1.0.0": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 + languageName: node + linkType: hard + "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -2255,6 +2518,20 @@ __metadata: languageName: node linkType: hard +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -2317,6 +2594,23 @@ __metadata: languageName: node linkType: hard +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + prompts: ^2.0.1 + bin: + create-jest: bin/create-jest.js + checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -2328,7 +2622,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -2349,6 +2643,18 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^1.0.0": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a + languageName: node + linkType: hard + "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -2363,6 +2669,13 @@ __metadata: languageName: node linkType: hard +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 + languageName: node + linkType: hard + "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -2377,6 +2690,13 @@ __metadata: languageName: node linkType: hard +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + languageName: node + linkType: hard + "detect-newline@npm:^4.0.0": version: 4.0.1 resolution: "detect-newline@npm:4.0.1" @@ -2430,6 +2750,13 @@ __metadata: languageName: node linkType: hard +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -2477,6 +2804,15 @@ __metadata: languageName: node linkType: hard +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: ^0.2.1 + checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + languageName: node + linkType: hard + "es-module-lexer@npm:^1.5.3": version: 1.5.4 resolution: "es-module-lexer@npm:1.5.4" @@ -2969,7 +3305,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.1.1": +"execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -2986,6 +3322,13 @@ __metadata: languageName: node linkType: hard +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 + languageName: node + linkType: hard + "expect@npm:^29.0.0, expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" @@ -3083,7 +3426,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.1.0": +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: @@ -3338,7 +3681,7 @@ __metadata: languageName: node linkType: hard -"globals@npm:^15.0.0, globals@npm:^15.8.0, globals@npm:^15.9.0": +"globals@npm:^15.8.0, globals@npm:^15.9.0": version: 15.9.0 resolution: "globals@npm:15.9.0" checksum: 32c4470ffcc26db3ddbc579ddf968b74c26462d1a268039980c2fa2e107090fd442a7a7445d953dc4ee874f68846e713066c5a8e63d146fd9349cd1fc5a6f63d @@ -3404,6 +3747,13 @@ __metadata: languageName: node linkType: hard +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" @@ -3494,6 +3844,18 @@ __metadata: languageName: node linkType: hard +"import-local@npm:^3.0.2": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: ^4.2.0 + resolve-cwd: ^3.0.0 + bin: + import-local-fixture: fixtures/cli.js + checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -3542,6 +3904,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f + languageName: node + linkType: hard + "is-bun-module@npm:^1.0.2": version: 1.2.1 resolution: "is-bun-module@npm:1.2.1" @@ -3574,6 +3943,13 @@ __metadata: languageName: node linkType: hard +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -3632,7 +4008,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.2.0": +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 @@ -3652,6 +4028,51 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": ^7.23.9 + "@babel/parser": ^7.23.9 + "@istanbuljs/schema": ^0.1.3 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: ^3.0.0 + make-dir: ^4.0.0 + supports-color: ^7.1.0 + checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: ^4.1.1 + istanbul-lib-coverage: ^3.0.0 + source-map: ^0.6.1 + checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: ^2.0.0 + istanbul-lib-report: ^3.0.0 + checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 + languageName: node + linkType: hard + "jackspeak@npm:^2.3.5": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" @@ -3665,6 +4086,109 @@ __metadata: languageName: node linkType: hard +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: ^5.0.0 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + dedent: ^1.0.0 + is-generator-fn: ^2.0.0 + jest-each: ^29.7.0 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + pretty-format: ^29.7.0 + pure-rand: ^6.0.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + create-jest: ^29.7.0 + exit: ^0.1.2 + import-local: ^3.0.2 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + yargs: ^17.3.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": ^7.11.6 + "@jest/test-sequencer": ^29.7.0 + "@jest/types": ^29.6.3 + babel-jest: ^29.7.0 + chalk: ^4.0.0 + ci-info: ^3.2.0 + deepmerge: ^4.2.2 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-circus: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-runner: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + micromatch: ^4.0.4 + parse-json: ^5.2.0 + pretty-format: ^29.7.0 + slash: ^3.0.0 + strip-json-comments: ^3.1.1 + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff + languageName: node + linkType: hard + "jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -3677,6 +4201,42 @@ __metadata: languageName: node linkType: hard +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: ^3.0.0 + checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + jest-get-type: ^29.6.3 + jest-util: ^29.7.0 + pretty-format: ^29.7.0 + checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 + languageName: node + linkType: hard + "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -3707,6 +4267,16 @@ __metadata: languageName: node linkType: hard +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 + languageName: node + linkType: hard + "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -3747,6 +4317,18 @@ __metadata: languageName: node linkType: hard +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 + languageName: node + linkType: hard + "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -3754,6 +4336,92 @@ __metadata: languageName: node linkType: hard +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.7.0 + checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-pnp-resolver: ^1.2.2 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + resolve: ^1.20.0 + resolve.exports: ^2.0.0 + slash: ^3.0.0 + checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": ^29.7.0 + "@jest/environment": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.13.1 + graceful-fs: ^4.2.9 + jest-docblock: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-leak-detector: ^29.7.0 + jest-message-util: ^29.7.0 + jest-resolve: ^29.7.0 + jest-runtime: ^29.7.0 + jest-util: ^29.7.0 + jest-watcher: ^29.7.0 + jest-worker: ^29.7.0 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/globals": ^29.7.0 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + cjs-module-lexer: ^1.0.0 + collect-v8-coverage: ^1.0.0 + glob: ^7.1.3 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + slash: ^3.0.0 + strip-bom: ^4.0.0 + checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e + languageName: node + linkType: hard + "jest-snapshot@npm:^29.7.0": version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" @@ -3796,6 +4464,36 @@ __metadata: languageName: node linkType: hard +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + camelcase: ^6.2.0 + chalk: ^4.0.0 + jest-get-type: ^29.6.3 + leven: ^3.1.0 + pretty-format: ^29.7.0 + checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + emittery: ^0.13.1 + jest-util: ^29.7.0 + string-length: ^4.0.1 + checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f + languageName: node + linkType: hard + "jest-worker@npm:^29.7.0": version: 29.7.0 resolution: "jest-worker@npm:29.7.0" @@ -3808,6 +4506,25 @@ __metadata: languageName: node linkType: hard +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": ^29.7.0 + "@jest/types": ^29.6.3 + import-local: ^3.0.2 + jest-cli: ^29.7.0 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b + languageName: node + linkType: hard + "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -3868,6 +4585,13 @@ __metadata: languageName: node linkType: hard +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + languageName: node + linkType: hard + "json-parse-even-better-errors@npm:^3.0.0": version: 3.0.0 resolution: "json-parse-even-better-errors@npm:3.0.0" @@ -3907,6 +4631,20 @@ __metadata: languageName: node linkType: hard +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -3917,6 +4655,13 @@ __metadata: languageName: node linkType: hard +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + languageName: node + linkType: hard + "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" @@ -3983,6 +4728,15 @@ __metadata: languageName: node linkType: hard +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: ^7.5.3 + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + languageName: node + linkType: hard + "make-fetch-happen@npm:^10.0.3": version: 10.2.1 resolution: "make-fetch-happen@npm:10.2.1" @@ -4444,7 +5198,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -4506,6 +5260,18 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": ^7.0.0 + error-ex: ^1.3.1 + json-parse-even-better-errors: ^2.3.0 + lines-and-columns: ^1.1.6 + checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -4586,6 +5352,15 @@ __metadata: languageName: node linkType: hard +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: ^4.0.0 + checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + languageName: node + linkType: hard + "pony-cause@npm:^2.1.10": version: 2.1.10 resolution: "pony-cause@npm:2.1.10" @@ -4695,6 +5470,16 @@ __metadata: languageName: node linkType: hard +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -4702,6 +5487,13 @@ __metadata: languageName: node linkType: hard +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 8d53bc02bed99eca0b65b505090152ee7e9bd67dd74f8ff32ba1c883b87234067c5bf68d2614759fb217d82594d7a92919e6df80f97885e7b12b42af4bd3316a + languageName: node + linkType: hard + "rambda@npm:^7.4.0": version: 7.5.0 resolution: "rambda@npm:7.5.0" @@ -4741,6 +5533,15 @@ __metadata: languageName: node linkType: hard +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: ^5.0.0 + checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -4762,7 +5563,14 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.8, resolve@npm:^1.22.4": +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 + languageName: node + linkType: hard + +"resolve@npm:1.22.8, resolve@npm:^1.20.0, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -4775,7 +5583,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@1.22.8#~builtin, resolve@patch:resolve@^1.22.4#~builtin": +"resolve@patch:resolve@1.22.8#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.4#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b" dependencies: @@ -4904,10 +5712,11 @@ __metadata: eslint-plugin-n: ^17.10.3 eslint-plugin-prettier: ^5.2.1 fast-deep-equal: ^3.1.3 - globals: ^15.0.0 + globals: ^15.9.0 prettier: ^3.3.3 prettier-plugin-packagejson: ^2.5.2 typescript: ~5.5.4 + typescript-eslint: ^8.6.0 vite: ^5.4.7 vitest: ^2.1.1 languageName: unknown @@ -4996,6 +5805,13 @@ __metadata: languageName: node linkType: hard +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -5088,6 +5904,23 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + languageName: node + linkType: hard + "spdx-correct@npm:^3.0.0": version: 3.2.0 resolution: "spdx-correct@npm:3.2.0" @@ -5194,6 +6027,16 @@ __metadata: languageName: node linkType: hard +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: ^1.0.2 + strip-ansi: ^6.0.0 + checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 + languageName: node + linkType: hard + "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -5243,6 +6086,13 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 + languageName: node + linkType: hard + "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -5428,6 +6278,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + "typescript-eslint@npm:^8.6.0": version: 8.6.0 resolution: "typescript-eslint@npm:8.6.0" @@ -5544,6 +6401,17 @@ __metadata: languageName: node linkType: hard +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": ^0.3.12 + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^2.0.0 + checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae + languageName: node + linkType: hard + "validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -5798,7 +6666,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.0.1": +"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.3.1": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: From a66e4d7152c6d3346020b654f415dce0d88c9a09 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 13:58:43 +0200 Subject: [PATCH 19/29] Fix config validation script when using Node.js 18 --- scripts/validate-configs.mjs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/validate-configs.mjs b/scripts/validate-configs.mjs index 470a4342..bcb2bb82 100644 --- a/scripts/validate-configs.mjs +++ b/scripts/validate-configs.mjs @@ -3,7 +3,8 @@ import { ConfigArray } from '@eslint/config-array'; import { hasProperty } from '@metamask/utils'; import fs from 'fs/promises'; -import pathUtils, { join } from 'path'; +import { fileURLToPath } from 'node:url'; +import pathUtils, { dirname, join } from 'path'; import { format } from 'prettier'; /** @@ -11,8 +12,11 @@ import { format } from 'prettier'; * @typedef {Record>} Rules */ +// `import.meta.dirname` but with support for Node.js 18. +const DIRNAME = dirname(fileURLToPath(import.meta.url)); + // The path to the monorepo packages directory -const PACKAGES_DIR_PATH = pathUtils.join(import.meta.dirname, '../packages'); +const PACKAGES_DIR_PATH = pathUtils.join(DIRNAME, '../packages'); // The path to the rules snapshot file, relative to a package root. const RULES_SNAPSHOT_PATH = 'rules-snapshot.json'; From dcb7bdd4be54b116e986b3eac97720ae4b9bc922 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 14:16:28 +0200 Subject: [PATCH 20/29] Update all READMEs --- packages/base/README.md | 35 ++++++++++++-------- packages/browser/README.md | 41 +++++++++++++----------- packages/commonjs/README.md | 40 +++++++++++++---------- packages/jest/README.md | 44 ++++++++++++++----------- packages/mocha/README.md | 47 +++++++++++++++------------ packages/nodejs/README.md | 40 +++++++++++++---------- packages/typescript/README.md | 60 +++++++++++++++++++---------------- 7 files changed, 176 insertions(+), 131 deletions(-) diff --git a/packages/base/README.md b/packages/base/README.md index bbc76cc5..3731d97e 100644 --- a/packages/base/README.md +++ b/packages/base/README.md @@ -8,26 +8,33 @@ Our default export contains a base set of ESLint rules for ES6+: ```bash yarn add --dev \ - @metamask/eslint-config@^12.2.0 \ - eslint@^8.57.0 \ - eslint-config-prettier@^8.5.0 \ - eslint-plugin-import-x@^0.5.1 \ - eslint-plugin-jsdoc@^47.0.2 \ - eslint-plugin-prettier@^4.2.1 \ - eslint-plugin-promise@^6.1.1 \ - prettier@^2.7.1 + @metamask/eslint-config@^13.0.0 \ + eslint@^9.11.0 \ + eslint-config-prettier@^9.1.0 \ + eslint-plugin-import-x@^4.3.0 \ + eslint-plugin-jsdoc@^50.2.4 \ + eslint-plugin-prettier@^5.2.1 \ + eslint-plugin-promise@^7.1.0 \ + prettier@^3.3.3 ``` The order in which you extend ESLint rules matters. -The `@metamask/*` eslint configs should be added to the `extends` array _last_, +The `@metamask/*` eslint configs should be added to the config array _last_, with `@metamask/eslint-config` first, and `@metamask/eslint-config-*` in any order thereafter. ```js -module.exports = { - extends: [ - // This should be added last unless you know what you're doing. - '@metamask/eslint-config', - ], +import base from '@metamask/eslint-config'; + +const config = { + // Any custom shared config should be added here. + // ... + + // This should be added last unless you know what you're doing. + ...base, + + { + // Your overrides here. + } }; ``` diff --git a/packages/browser/README.md b/packages/browser/README.md index 0dfc7f8f..593fbcd9 100644 --- a/packages/browser/README.md +++ b/packages/browser/README.md @@ -8,30 +8,35 @@ Our default export contains a base set of ESLint rules for ES6+: ```bash yarn add --dev \ - @metamask/eslint-config@^12.2.0 \ - @metamask/eslint-config-browser@^12.1.0 \ - eslint@^8.57.0 \ - eslint-config-prettier@^8.5.0 \ - eslint-plugin-import-x@^0.5.1 \ - eslint-plugin-jsdoc@^47.0.2 \ - eslint-plugin-prettier@^4.2.1 \ - eslint-plugin-promise@^6.1.1 \ - prettier@^2.7.1 + @metamask/eslint-config@^13.0.0 \ + @metamask/eslint-config-browser@^13.0.0 \ + eslint@^9.11.0 \ + eslint-config-prettier@^9.1.0 \ + eslint-plugin-import-x@^4.3.0 \ + eslint-plugin-jsdoc@^50.2.4 \ + eslint-plugin-prettier@^5.2.1 \ + eslint-plugin-promise@^7.1.0 \ + prettier@^3.3.3 ``` The order in which you extend ESLint rules matters. -The `@metamask/*` eslint configs should be added to the `extends` array _last_, +The `@metamask/*` eslint configs should be added to the config array _last_, with `@metamask/eslint-config` first, and `@metamask/eslint-config-*` in any order thereafter. ```js -module.exports = { - root: true, - - extends: [ - // These should be added last unless you know what you're doing. - '@metamask/eslint-config', - '@metamask/eslint-config-browser', - ], +import base from '@metamask/eslint-config'; +import browser from '@metamask/eslint-config-browser'; + +const config = { + // Any custom shared config should be added here. + // ... + + // This should be added last unless you know what you're doing. + ...base, + ...browser, + { + // Your overrides here. + } }; ``` diff --git a/packages/commonjs/README.md b/packages/commonjs/README.md index f2fd32a7..b7a9309d 100644 --- a/packages/commonjs/README.md +++ b/packages/commonjs/README.md @@ -6,28 +6,36 @@ MetaMask's ESLint configuration for projects using CommonJS. ```bash yarn add --dev \ - @metamask/eslint-config@^12.0.0 \ - @metamask/eslint-config-commonjs@^12.1.0 \ - eslint@^8.57.0 \ - eslint-config-prettier@^8.5.0 \ - eslint-plugin-import-x@^0.5.1 \ - eslint-plugin-jsdoc@^47.0.2 \ - eslint-plugin-prettier@^4.2.1 \ - eslint-plugin-promise@^6.1.1 \ - prettier@^2.7.1 + @metamask/eslint-config@^13.0.0 \ + @metamask/eslint-config-commonjs@^13.0.0 \ + eslint@^9.11.0 \ + eslint-config-prettier@^9.1.0 \ + eslint-plugin-import-x@^4.3.0 \ + eslint-plugin-jsdoc@^50.2.4 \ + eslint-plugin-prettier@^5.2.1 \ + eslint-plugin-promise@^7.1.0 \ + prettier@^3.3.3 ``` The order in which you extend ESLint rules matters. -The `@metamask/*` eslint configs should be added to the `extends` array _last_, +The `@metamask/*` eslint configs should be added to the config array _last_, with `@metamask/eslint-config` first, and `@metamask/eslint-config-*` in any order thereafter. ```js -module.exports = { - extends: [ - // This should be added last unless you know what you're doing. - '@metamask/eslint-config', - '@metamask/eslint-config-commonjs', - ], +import base from '@metamask/eslint-config'; +import commonjs from '@metamask/eslint-config-commonjs'; + +const config = { + // Any custom shared config should be added here. + // ... + + // This should be added last unless you know what you're doing. + ...base, + ...commonjs, + + { + // Your overrides here. + } }; ``` diff --git a/packages/jest/README.md b/packages/jest/README.md index ced3cee7..e845de7c 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -6,31 +6,37 @@ MetaMask's [Jest](https://jestjs.io/) ESLint configuration. ```bash yarn add --dev \ - @metamask/eslint-config@^12.2.0 \ - @metamask/eslint-config-jest@^12.1.0 \ - eslint@^8.57.0 \ - eslint-config-prettier@^8.5.0 \ - eslint-plugin-import-x@^0.5.1 \ - eslint-plugin-jsdoc@^47.0.2 \ - eslint-plugin-jest@^27.9.0 \ - eslint-plugin-prettier@^4.2.1 \ - eslint-plugin-promise@^6.1.1 \ - prettier@^2.7.1 + @metamask/eslint-config@^13.0.0 \ + @metamask/eslint-config-jest@^13.0.0 \ + eslint@^9.11.0 \ + eslint-config-prettier@^9.1.0 \ + eslint-plugin-import-x@^4.3.0 \ + eslint-plugin-jsdoc@^50.2.4 \ + eslint-plugin-jest@^28.8.3 \ + eslint-plugin-prettier@^5.2.1 \ + eslint-plugin-promise@^7.1.0 \ + prettier@^3.3.3 ``` The order in which you extend ESLint rules matters. -The `@metamask/*` eslint configs should be added to the `extends` array _last_, +The `@metamask/*` eslint configs should be added to the config array _last_, with `@metamask/eslint-config` first, and `@metamask/eslint-config-*` in any order thereafter. ```js -module.exports = { - root: true, - - extends: [ - // These should be added last unless you know what you're doing. - '@metamask/eslint-config', - '@metamask/eslint-config-jest', - ], +import base from '@metamask/eslint-config'; +import commonjs from '@metamask/eslint-config-commonjs'; + +const config = { + // Any custom shared config should be added here. + // ... + + // This should be added last unless you know what you're doing. + ...base, + ...commonjs, + + { + // Your overrides here. + } }; ``` diff --git a/packages/mocha/README.md b/packages/mocha/README.md index 1ef7e635..d8065bff 100644 --- a/packages/mocha/README.md +++ b/packages/mocha/README.md @@ -6,33 +6,40 @@ MetaMask's [Mocha](https://mochajs.org/) ESLint configuration. ```bash yarn add --dev \ - @metamask/eslint-config@^12.2.0 \ - @metamask/eslint-config-mocha@^12.1.0 \ - eslint@^8.57.0 \ - eslint-config-prettier@^8.5.0 \ - eslint-plugin-import-x@^0.5.1 \ - eslint-plugin-jsdoc@^47.0.2 \ - eslint-plugin-mocha@^10.4.1 \ - eslint-plugin-prettier@^4.2.1 \ - eslint-plugin-promise@^6.1.1 \ - prettier@^2.7.1 + @metamask/eslint-config@^13.0.0 \ + @metamask/eslint-config-mocha@^13.0.0 \ + eslint@^9.11.0 \ + eslint-config-prettier@^9.1.0 \ + eslint-plugin-import-x@^4.3.0 \ + eslint-plugin-jsdoc@^50.2.4 \ + eslint-plugin-mocha@^10.5.0 \ + eslint-plugin-prettier@^5.2.1 \ + eslint-plugin-promise@^7.1.0 \ + prettier@^3.3.3 ``` The order in which you extend ESLint rules matters. -The `@metamask/*` eslint configs should be added to the `extends` array _last_, +The `@metamask/*` eslint configs should be added to the config array _last_, with `@metamask/eslint-config` first, and `@metamask/eslint-config-*` in any order thereafter. ```js -module.exports = { - root: true, - - extends: [ - // These should be added last unless you know what you're doing. - '@metamask/eslint-config', - '@metamask/eslint-config-mocha', - ], +import base from '@metamask/eslint-config'; +import mocha from '@metamask/eslint-config-mocha'; + +const config = { + // Any custom shared config should be added here. + // ... + + // This should be added last unless you know what you're doing. + ...base, + ...mocha, + + { + // Your overrides here. + } }; ``` -If your project has `prefer-arrow-callback` you will need to disable that and replace it with `mocha/prefer-arrow-callback`. +If your project has `prefer-arrow-callback` you will need to disable that and +replace it with `mocha/prefer-arrow-callback`. diff --git a/packages/nodejs/README.md b/packages/nodejs/README.md index 16febc57..c2cdf567 100644 --- a/packages/nodejs/README.md +++ b/packages/nodejs/README.md @@ -6,30 +6,38 @@ MetaMask's [Node.js](https://nodejs.org) ESLint configuration. ```bash yarn add --dev \ - @metamask/eslint-config@^12.2.0 \ + @metamask/eslint-config@^13.0.0 \ @metamask/eslint-config-nodejs@^12.1.0 \ - eslint@^8.57.0 \ - eslint-config-prettier@^8.5.0 \ - eslint-plugin-import-x@^0.5.1 \ - eslint-plugin-jsdoc@^47.0.2 \ - eslint-plugin-n@^16.6.2 \ - eslint-plugin-prettier@^4.2.1 \ - eslint-plugin-promise@^6.1.1 \ - prettier@^2.7.1 + eslint@^9.11.0 \ + eslint-config-prettier@^9.1.0 \ + eslint-plugin-import-x@^4.3.0 \ + eslint-plugin-jsdoc@^50.2.4 \ + eslint-plugin-n@^17.10.3 \ + eslint-plugin-prettier@^5.2.1 \ + eslint-plugin-promise@^7.1.0 \ + prettier@^3.3.3 ``` The order in which you extend ESLint rules matters. -The `@metamask/*` eslint configs should be added to the `extends` array _last_, +The `@metamask/*` eslint configs should be added to the config array _last_, with `@metamask/eslint-config` first, and `@metamask/eslint-config-*` in any order thereafter. ```js -module.exports = { - extends: [ - // These should be added last unless you know what you're doing. - '@metamask/eslint-config', - '@metamask/eslint-config-nodejs', - ], +import base from '@metamask/eslint-config'; +import mocha from '@metamask/eslint-config-mocha'; + +const config = { + // Any custom shared config should be added here. + // ... + + // This should be added last unless you know what you're doing. + ...base, + ...mocha, + + { + // Your overrides here. + } }; ``` diff --git a/packages/typescript/README.md b/packages/typescript/README.md index 9c2cda0e..665d2b6e 100644 --- a/packages/typescript/README.md +++ b/packages/typescript/README.md @@ -6,46 +6,50 @@ MetaMask's [TypeScript](https://www.typescriptlang.org) ESLint configuration. ```bash yarn add --dev \ - @metamask/eslint-config@^12.2.0 \ - @metamask/eslint-config-typescript@^12.1.0 \ - @typescript-eslint/eslint-plugin@^6.21.0 \ - @typescript-eslint/parser@^6.21.0 \ - eslint@^8.57.0 \ - eslint-config-prettier@^8.5.0 \ - eslint-plugin-import-x@^0.5.1 \ - eslint-plugin-jsdoc@^47.0.2 \ - eslint-plugin-prettier@^4.2.1 \ - eslint-plugin-promise@^6.1.1 \ - prettier@^2.7.1 + @metamask/eslint-config@^13.0.0 \ + @metamask/eslint-config-typescript@^13.0.0 \ + eslint@^9.11.0 \ + eslint-config-prettier@^9.1.0 \ + eslint-plugin-import-x@^4.3.0 \ + eslint-plugin-jsdoc@^50.2.4 \ + eslint-plugin-prettier@^5.2.1 \ + eslint-plugin-promise@^7.1.0 \ + prettier@^3.3.3 + typescript-eslint@^8.6.0 ``` The order in which you extend ESLint rules matters. -The `@metamask/*` eslint configs should be added to the `extends` array _last_, +The `@metamask/*` eslint configs should be added to the config array _last_, with `@metamask/eslint-config` first, and `@metamask/eslint-config-*` in any order thereafter. ```js -module.exports = { - root: true, +import base from '@metamask/eslint-config'; +import typescript from '@metamask/eslint-config-typescript'; +import tseslint from 'typescript-eslint'; + +const config = tseslint.config({ + // The TypeScript config disables certain rules that you want to keep for + // non-TypeScript files, so it should be added in an override. + files: ['**/*.ts', '**/*.mts', '**/*.cts'], extends: [ + // Any custom shared config should be added here. + // ... + // This should be added last unless you know what you're doing. - '@metamask/eslint-config', + ...base, + ...typescript, ], - overrides: [ - // The TypeScript config disables certain rules that you want to keep for - // non-TypeScript files, so it should be added in an override. - { - files: ['*.ts'], - extends: ['@metamask/eslint-config-typescript'], + languageOptions: { + parserOptions: { + // This is required for rules that use type information. + // See here for more information: https://typescript-eslint.io/getting-started/typed-linting + tsconfigRootDir: import.meta.dirname, }, - ], - - // This is required for rules that use type information. - // See here for more information: https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/TYPED_LINTING.md - parserOptions: { - tsconfigRootDir: __dirname, }, -}; + + // Your overrides here. +}); ``` From fb2ad66dea9ff1bac35b8e34869038312ebec27e Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 14:26:08 +0200 Subject: [PATCH 21/29] Set type to module for all packages --- packages/browser/package.json | 1 + packages/commonjs/package.json | 1 + packages/jest/package.json | 1 + packages/mocha/package.json | 1 + packages/nodejs/package.json | 1 + packages/typescript/package.json | 1 + 6 files changed, 6 insertions(+) diff --git a/packages/browser/package.json b/packages/browser/package.json index f02bd766..9d569038 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -11,6 +11,7 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", + "type": "module", "exports": { ".": { "import": { diff --git a/packages/commonjs/package.json b/packages/commonjs/package.json index 77c30848..5fb57e6f 100644 --- a/packages/commonjs/package.json +++ b/packages/commonjs/package.json @@ -11,6 +11,7 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", + "type": "module", "exports": { ".": { "import": { diff --git a/packages/jest/package.json b/packages/jest/package.json index 8caaaedc..7c514c4f 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -11,6 +11,7 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", + "type": "module", "exports": { ".": { "import": { diff --git a/packages/mocha/package.json b/packages/mocha/package.json index f4d9e932..a31471ce 100644 --- a/packages/mocha/package.json +++ b/packages/mocha/package.json @@ -11,6 +11,7 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", + "type": "module", "exports": { ".": { "import": { diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index da7e287c..4506b209 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -11,6 +11,7 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", + "type": "module", "exports": { ".": { "import": { diff --git a/packages/typescript/package.json b/packages/typescript/package.json index b0875390..993e24a6 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -11,6 +11,7 @@ "url": "https://github.com/MetaMask/eslint-config.git" }, "license": "MIT", + "type": "module", "exports": { ".": { "import": { From c2f759e0824c90ea3e0ac6fa47538d270bcf2847 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 14:27:15 +0200 Subject: [PATCH 22/29] Use jsdoc error config for TypeScript --- packages/typescript/rules-snapshot.json | 50 ++++++++++++------------- packages/typescript/src/index.mjs | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/typescript/rules-snapshot.json b/packages/typescript/rules-snapshot.json index c08c0acf..c7abb46c 100644 --- a/packages/typescript/rules-snapshot.json +++ b/packages/typescript/rules-snapshot.json @@ -146,33 +146,33 @@ "getter-return": "off", "import-x/named": "off", "import-x/no-unresolved": "off", - "jsdoc/check-access": "warn", - "jsdoc/check-alignment": "warn", + "jsdoc/check-access": "error", + "jsdoc/check-alignment": "error", "jsdoc/check-examples": "off", "jsdoc/check-indentation": "error", "jsdoc/check-line-alignment": "off", - "jsdoc/check-param-names": "warn", - "jsdoc/check-property-names": "warn", + "jsdoc/check-param-names": "error", + "jsdoc/check-property-names": "error", "jsdoc/check-syntax": "error", - "jsdoc/check-tag-names": ["warn", { "typed": true }], + "jsdoc/check-tag-names": ["error", { "typed": true }], "jsdoc/check-template-names": "off", - "jsdoc/check-types": "warn", - "jsdoc/check-values": "warn", + "jsdoc/check-types": "error", + "jsdoc/check-values": "error", "jsdoc/convert-to-jsdoc-comments": "off", - "jsdoc/empty-tags": "warn", - "jsdoc/implements-on-classes": "warn", + "jsdoc/empty-tags": "error", + "jsdoc/implements-on-classes": "error", "jsdoc/imports-as-dependencies": "off", "jsdoc/informative-docs": "off", "jsdoc/lines-before-block": "off", "jsdoc/match-description": "off", "jsdoc/match-name": "off", - "jsdoc/multiline-blocks": "warn", + "jsdoc/multiline-blocks": "error", "jsdoc/no-bad-blocks": "off", "jsdoc/no-blank-block-descriptions": "off", "jsdoc/no-blank-blocks": "off", - "jsdoc/no-defaults": "warn", + "jsdoc/no-defaults": "error", "jsdoc/no-missing-syntax": "off", - "jsdoc/no-multi-asterisks": "warn", + "jsdoc/no-multi-asterisks": "error", "jsdoc/no-restricted-syntax": "off", "jsdoc/no-types": "error", "jsdoc/no-undefined-types": "off", @@ -182,25 +182,25 @@ "jsdoc/require-example": "off", "jsdoc/require-file-overview": "off", "jsdoc/require-hyphen-before-param-description": "off", - "jsdoc/require-jsdoc": "warn", - "jsdoc/require-param": "warn", - "jsdoc/require-param-description": "warn", - "jsdoc/require-param-name": "warn", + "jsdoc/require-jsdoc": "error", + "jsdoc/require-param": "error", + "jsdoc/require-param-description": "error", + "jsdoc/require-param-name": "error", "jsdoc/require-param-type": "off", - "jsdoc/require-property": "warn", - "jsdoc/require-property-description": "warn", - "jsdoc/require-property-name": "warn", + "jsdoc/require-property": "error", + "jsdoc/require-property-description": "error", + "jsdoc/require-property-name": "error", "jsdoc/require-property-type": "off", - "jsdoc/require-returns": "warn", - "jsdoc/require-returns-check": "warn", - "jsdoc/require-returns-description": "warn", + "jsdoc/require-returns": "error", + "jsdoc/require-returns-check": "error", + "jsdoc/require-returns-description": "error", "jsdoc/require-returns-type": "off", "jsdoc/require-template": "off", "jsdoc/require-throws": "off", - "jsdoc/require-yields": "warn", - "jsdoc/require-yields-check": "warn", + "jsdoc/require-yields": "error", + "jsdoc/require-yields-check": "error", "jsdoc/sort-tags": "off", - "jsdoc/tag-lines": "warn", + "jsdoc/tag-lines": "error", "jsdoc/text-escaping": "off", "jsdoc/valid-types": "off", "no-array-constructor": "off", diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index af4d4c41..433061ed 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -16,7 +16,7 @@ const config = typescript.config({ ...typescript.configs.recommended, ...typescript.configs.recommendedTypeChecked, importX.flatConfigs.typescript, - jsdoc.configs['flat/recommended-typescript'], + jsdoc.configs['flat/recommended-typescript-error'], ], files: [ From 071cdd0ba62c62fd42de498a0c121efba47a4c60 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Mon, 23 Sep 2024 16:48:35 +0200 Subject: [PATCH 23/29] Set module and moduleResolution to Node16 --- tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 11ae8484..02ff7a3b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,8 +5,8 @@ "exactOptionalPropertyTypes": true, "forceConsistentCasingInFileNames": true, "lib": ["ES2023"], - "module": "NodeNext", - "moduleResolution": "NodeNext", + "module": "Node16", + "moduleResolution": "Node16", "noEmit": true, "noErrorTruncation": true, "noUncheckedIndexedAccess": true, From 34f7c67b7071335ca2f930ad01eb18103bd3ea0b Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Tue, 24 Sep 2024 12:50:50 +0200 Subject: [PATCH 24/29] Remove Jest types --- package.json | 2 -- yarn.lock | 16 ++-------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 7b95bea6..73c7d30d 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "@babel/plugin-syntax-import-attributes": "^7.25.6", "@eslint/config-array": "^0.18.0", "@eslint/js": "^9.11.0", - "@jest/globals": "^29.7.0", "@lavamoat/allow-scripts": "^3.0.4", "@metamask/auto-changelog": "^3.4.4", "@metamask/eslint-config": "^13.0.0", @@ -35,7 +34,6 @@ "@metamask/eslint-config-typescript": "workspace:^", "@metamask/utils": "^9.1.0", "@types/eslint__js": "^8.42.3", - "@types/jest": "^29.5.12", "@types/node": "^22.5.5", "eslint": "^9.11.0", "eslint-config-prettier": "^9.1.0", diff --git a/yarn.lock b/yarn.lock index e9325808..c49228da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1738,16 +1738,6 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.5.12": - version: 29.5.13 - resolution: "@types/jest@npm:29.5.13" - dependencies: - expect: ^29.0.0 - pretty-format: ^29.0.0 - checksum: 875ac23c2398cdcf22aa56c6ba24560f11d2afda226d4fa23936322dde6202f9fdbd2b91602af51c27ecba223d9fc3c1e33c9df7e47b3bf0e2aefc6baf13ce53 - languageName: node - linkType: hard - "@types/json-schema@npm:*": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -3329,7 +3319,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.7.0": +"expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -5428,7 +5418,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -5693,7 +5683,6 @@ __metadata: "@babel/plugin-syntax-import-attributes": ^7.25.6 "@eslint/config-array": ^0.18.0 "@eslint/js": ^9.11.0 - "@jest/globals": ^29.7.0 "@lavamoat/allow-scripts": ^3.0.4 "@metamask/auto-changelog": ^3.4.4 "@metamask/eslint-config": ^13.0.0 @@ -5702,7 +5691,6 @@ __metadata: "@metamask/eslint-config-typescript": "workspace:^" "@metamask/utils": ^9.1.0 "@types/eslint__js": ^8.42.3 - "@types/jest": ^29.5.12 "@types/node": ^22.5.5 eslint: ^9.11.0 eslint-config-prettier: ^9.1.0 From d448f104b6c129d453347a58b8b2ad29b5d590b3 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Tue, 24 Sep 2024 15:15:35 +0200 Subject: [PATCH 25/29] Remove import attributes in favour of `require` --- eslint.config.mjs | 12 -------- package.json | 3 -- packages/base/src/index.mjs | 21 +++++-------- packages/browser/src/index.mjs | 5 +++- packages/commonjs/src/index.mjs | 5 +++- packages/nodejs/src/index.mjs | 5 +++- packages/typescript/src/index.mjs | 1 + yarn.lock | 49 ++----------------------------- 8 files changed, 23 insertions(+), 78 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index f38ca452..8dae7749 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,7 +1,5 @@ // @ts-check -// @ts-expect-error - `@babel/eslint-parser` doesn't have TypeScript types. -import babel from '@babel/eslint-parser'; import base from '@metamask/eslint-config'; import jest from '@metamask/eslint-config-jest'; import nodejs from '@metamask/eslint-config-nodejs'; @@ -47,17 +45,7 @@ const config = tseslint.config( files: ['**/*.js', '**/*.mjs'], languageOptions: { - ecmaVersion: 2022, - sourceType: 'module', - - parser: babel, - parserOptions: { - requireConfigFile: false, - babelOptions: { - plugins: ['@babel/plugin-syntax-import-attributes'], - }, - }, }, rules: { diff --git a/package.json b/package.json index 73c7d30d..e9cbdb83 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,6 @@ "test": "vitest" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/eslint-parser": "^7.25.1", - "@babel/plugin-syntax-import-attributes": "^7.25.6", "@eslint/config-array": "^0.18.0", "@eslint/js": "^9.11.0", "@lavamoat/allow-scripts": "^3.0.4", diff --git a/packages/base/src/index.mjs b/packages/base/src/index.mjs index 97a959bc..2ad6322e 100644 --- a/packages/base/src/index.mjs +++ b/packages/base/src/index.mjs @@ -7,8 +7,11 @@ import prettier from 'eslint-plugin-prettier/recommended'; // @ts-expect-error - `eslint-plugin-promise` doesn't have TypeScript types. import promise from 'eslint-plugin-promise'; import globals from 'globals'; +import { createRequire } from 'module'; -import environmentRules from './environment.json' with { type: 'json' }; +// TODO: Use import attributes when ESLint supports them. +const customRequire = createRequire(import.meta.url); +const environmentRules = customRequire('./environment.json'); /** * @type {import('eslint').Linter.Config[]} @@ -25,24 +28,14 @@ const rules = [ { name: '@metamask/eslint-config', - files: [ - '**/*.js', - '**/*.jsx', - '**/*.mjs', - '**/*.cjs', - '**/*.ts', - '**/*.tsx', - '**/*.mts', - '**/*.cts', - '**/*.mtsx', - '**/*.ctsx', - ], - languageOptions: { // The `esXXXX` option under `env` is supposed to set the correct // `ecmaVersion` option here, but we've had issues with it being // overridden in the past and therefore set it explicitly. ecmaVersion: 2022, + parserOptions: { + ecmaVersion: 2022, + }, // We want to default to 'script' and only use 'module' explicitly. sourceType: 'script', diff --git a/packages/browser/src/index.mjs b/packages/browser/src/index.mjs index 5f1f0b66..7a86d5b5 100644 --- a/packages/browser/src/index.mjs +++ b/packages/browser/src/index.mjs @@ -1,6 +1,9 @@ import globals from 'globals'; +import { createRequire } from 'module'; -import environmentRules from './environment.json' with { type: 'json' }; +// TODO: Use import attributes when ESLint supports them. +const customRequire = createRequire(import.meta.url); +const environmentRules = customRequire('./environment.json'); /** * @type {import('eslint').Linter.Config[]} diff --git a/packages/commonjs/src/index.mjs b/packages/commonjs/src/index.mjs index d425268f..9011983e 100644 --- a/packages/commonjs/src/index.mjs +++ b/packages/commonjs/src/index.mjs @@ -1,6 +1,9 @@ import globals from 'globals'; +import { createRequire } from 'module'; -import environmentRules from './environment.json' with { type: 'json' }; +// TODO: Use import attributes when ESLint supports them. +const customRequire = createRequire(import.meta.url); +const environmentRules = customRequire('./environment.json'); /** * @type {import('eslint').Linter.Config[]} diff --git a/packages/nodejs/src/index.mjs b/packages/nodejs/src/index.mjs index 5bc07776..b6741aae 100644 --- a/packages/nodejs/src/index.mjs +++ b/packages/nodejs/src/index.mjs @@ -1,7 +1,10 @@ import node from 'eslint-plugin-n'; import globals from 'globals'; +import { createRequire } from 'module'; -import environmentRules from './environment.json' with { type: 'json' }; +// TODO: Use import attributes when ESLint supports them. +const customRequire = createRequire(import.meta.url); +const environmentRules = customRequire('./environment.json'); /** * @type {import('eslint').Linter.Config[]} diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index 433061ed..eb878c2d 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -34,6 +34,7 @@ const config = typescript.config({ // This option requires `tsconfigRootDir` to be set, but this needs to // be set on a per-project basis. projectService: true, + ecmaVersion: 2022, }, }, diff --git a/yarn.lock b/yarn.lock index c49228da..f838965a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,7 +39,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.25.2": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" dependencies: @@ -62,20 +62,6 @@ __metadata: languageName: node linkType: hard -"@babel/eslint-parser@npm:^7.25.1": - version: 7.25.1 - resolution: "@babel/eslint-parser@npm:7.25.1" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 - eslint-visitor-keys: ^2.1.0 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 73207b7e84a58bd6560d29f11cf5c6f9d64a01b9299d4d0a145423a028ea4c402be2fd09228647fdbec14b65a07d4138e751468fd33d9a9363c9698582fa80b5 - languageName: node - linkType: hard - "@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6, @babel/generator@npm:^7.7.2": version: 7.25.6 resolution: "@babel/generator@npm:7.25.6" @@ -240,7 +226,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.25.6": +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": version: 7.25.6 resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.6" dependencies: @@ -1274,15 +1260,6 @@ __metadata: languageName: node linkType: hard -"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": - version: 5.1.1-v1 - resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" - dependencies: - eslint-scope: 5.1.1 - checksum: f2e3b2d6a6e2d9f163ca22105910c9f850dc4897af0aea3ef0a5886b63d8e1ba6505b71c99cb78a3bba24a09557d601eb21c8dede3f3213753fcfef364eb0e57 - languageName: node - linkType: hard - "@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0": version: 1.1.0 resolution: "@noble/curves@npm:1.1.0" @@ -3113,16 +3090,6 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - "eslint-scope@npm:^8.0.2": version: 8.0.2 resolution: "eslint-scope@npm:8.0.2" @@ -3144,7 +3111,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0": +"eslint-visitor-keys@npm:^2.0.0": version: 2.1.0 resolution: "eslint-visitor-keys@npm:2.1.0" checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d @@ -3253,13 +3220,6 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -5678,9 +5638,6 @@ __metadata: version: 0.0.0-use.local resolution: "root@workspace:." dependencies: - "@babel/core": ^7.25.2 - "@babel/eslint-parser": ^7.25.1 - "@babel/plugin-syntax-import-attributes": ^7.25.6 "@eslint/config-array": ^0.18.0 "@eslint/js": ^9.11.0 "@lavamoat/allow-scripts": ^3.0.4 From 4b8e9266f63992a9d5211a15d4045e4042e106b4 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Tue, 24 Sep 2024 16:23:17 +0200 Subject: [PATCH 26/29] Disable `@typescript-eslint/no-duplicate-type-constituents` --- packages/typescript/rules-snapshot.json | 2 +- packages/typescript/src/index.mjs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/typescript/rules-snapshot.json b/packages/typescript/rules-snapshot.json index c7abb46c..55798258 100644 --- a/packages/typescript/rules-snapshot.json +++ b/packages/typescript/rules-snapshot.json @@ -66,7 +66,7 @@ "@typescript-eslint/no-base-to-string": "error", "@typescript-eslint/no-dupe-class-members": "error", "@typescript-eslint/no-duplicate-enum-values": "error", - "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-duplicate-type-constituents": "off", "@typescript-eslint/no-empty-object-type": "error", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-extra-non-null-assertion": "error", diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index eb878c2d..bc033975 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -85,6 +85,7 @@ const config = typescript.config({ '@typescript-eslint/no-unsafe-return': 'off', // Recommended rules that we do not want to use + '@typescript-eslint/no-duplicate-type-constituents': 'off', '@typescript-eslint/require-await': 'off', // Our rules that require type information From 25045b42471a42bba9c00fd1dac9b06d3983e9a1 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Wed, 25 Sep 2024 14:08:27 +0200 Subject: [PATCH 27/29] Fix tests --- packages/base/src/index.test.mjs | 2 +- packages/browser/src/index.test.mjs | 2 +- packages/commonjs/src/index.test.mjs | 2 +- packages/jest/src/index.test.mjs | 2 +- packages/mocha/src/index.test.mjs | 2 +- packages/nodejs/src/index.test.mjs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/base/src/index.test.mjs b/packages/base/src/index.test.mjs index c9fc4129..908ffbef 100644 --- a/packages/base/src/index.test.mjs +++ b/packages/base/src/index.test.mjs @@ -9,7 +9,7 @@ describe('index', () => { baseConfig: config, }); - const result = await api.lintText(`console.log('Hello, world!');\n`); + const result = await api.lintText(`export {};\n`); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); diff --git a/packages/browser/src/index.test.mjs b/packages/browser/src/index.test.mjs index c9fc4129..908ffbef 100644 --- a/packages/browser/src/index.test.mjs +++ b/packages/browser/src/index.test.mjs @@ -9,7 +9,7 @@ describe('index', () => { baseConfig: config, }); - const result = await api.lintText(`console.log('Hello, world!');\n`); + const result = await api.lintText(`export {};\n`); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); diff --git a/packages/commonjs/src/index.test.mjs b/packages/commonjs/src/index.test.mjs index c9fc4129..908ffbef 100644 --- a/packages/commonjs/src/index.test.mjs +++ b/packages/commonjs/src/index.test.mjs @@ -9,7 +9,7 @@ describe('index', () => { baseConfig: config, }); - const result = await api.lintText(`console.log('Hello, world!');\n`); + const result = await api.lintText(`export {};\n`); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); diff --git a/packages/jest/src/index.test.mjs b/packages/jest/src/index.test.mjs index c9fc4129..908ffbef 100644 --- a/packages/jest/src/index.test.mjs +++ b/packages/jest/src/index.test.mjs @@ -9,7 +9,7 @@ describe('index', () => { baseConfig: config, }); - const result = await api.lintText(`console.log('Hello, world!');\n`); + const result = await api.lintText(`export {};\n`); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); diff --git a/packages/mocha/src/index.test.mjs b/packages/mocha/src/index.test.mjs index c9fc4129..908ffbef 100644 --- a/packages/mocha/src/index.test.mjs +++ b/packages/mocha/src/index.test.mjs @@ -9,7 +9,7 @@ describe('index', () => { baseConfig: config, }); - const result = await api.lintText(`console.log('Hello, world!');\n`); + const result = await api.lintText(`export {};\n`); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); diff --git a/packages/nodejs/src/index.test.mjs b/packages/nodejs/src/index.test.mjs index c9fc4129..908ffbef 100644 --- a/packages/nodejs/src/index.test.mjs +++ b/packages/nodejs/src/index.test.mjs @@ -9,7 +9,7 @@ describe('index', () => { baseConfig: config, }); - const result = await api.lintText(`console.log('Hello, world!');\n`); + const result = await api.lintText(`export {};\n`); expect(result[0].messages).toStrictEqual([]); expect(result[0].warningCount).toBe(0); From 80e8dfd45921b8f9c0c95b13db94924e8fd0323f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Wed, 25 Sep 2024 14:12:13 +0200 Subject: [PATCH 28/29] Disable `no-implicit-globals` --- packages/base/rules-snapshot.json | 2 +- packages/base/src/index.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/base/rules-snapshot.json b/packages/base/rules-snapshot.json index 0b845444..5a71cbbb 100644 --- a/packages/base/rules-snapshot.json +++ b/packages/base/rules-snapshot.json @@ -255,7 +255,7 @@ "no-func-assign": "error", "no-global-assign": "error", "no-implicit-coercion": "error", - "no-implicit-globals": "error", + "no-implicit-globals": "off", "no-implied-eval": "error", "no-import-assign": "error", "no-inner-declarations": ["error", "functions"], diff --git a/packages/base/src/index.mjs b/packages/base/src/index.mjs index 2ad6322e..98480cf9 100644 --- a/packages/base/src/index.mjs +++ b/packages/base/src/index.mjs @@ -138,7 +138,7 @@ const rules = [ 'no-extra-bind': 'error', 'no-extra-label': 'error', 'no-implicit-coercion': 'error', - 'no-implicit-globals': 'error', + 'no-implicit-globals': 'off', 'no-implied-eval': 'error', 'no-inner-declarations': ['error', 'functions'], 'no-invalid-this': 'error', From 00ebecd26953ce0498e53e1300a998d7fdfe89a9 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Wed, 25 Sep 2024 14:13:25 +0200 Subject: [PATCH 29/29] Disable `@typescript-eslint/no-redundant-type-constituents` --- packages/typescript/rules-snapshot.json | 2 +- packages/typescript/src/index.mjs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/typescript/rules-snapshot.json b/packages/typescript/rules-snapshot.json index 55798258..957fdce7 100644 --- a/packages/typescript/rules-snapshot.json +++ b/packages/typescript/rules-snapshot.json @@ -82,7 +82,7 @@ ], "@typescript-eslint/no-non-null-asserted-optional-chain": "error", "@typescript-eslint/no-non-null-assertion": "error", - "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-redundant-type-constituents": "off", "@typescript-eslint/no-require-imports": "error", "@typescript-eslint/no-shadow": ["error", { "builtinGlobals": true }], "@typescript-eslint/no-this-alias": "error", diff --git a/packages/typescript/src/index.mjs b/packages/typescript/src/index.mjs index bc033975..3f395c33 100644 --- a/packages/typescript/src/index.mjs +++ b/packages/typescript/src/index.mjs @@ -86,6 +86,7 @@ const config = typescript.config({ // Recommended rules that we do not want to use '@typescript-eslint/no-duplicate-type-constituents': 'off', + '@typescript-eslint/no-redundant-type-constituents': 'off', '@typescript-eslint/require-await': 'off', // Our rules that require type information