From 8a296a01d76c8634dc2d030be9fe87a387c30c80 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 31 May 2024 13:55:08 -0400 Subject: [PATCH 01/11] chore: upgrade ESLint to 8.57.0 --- package-lock.json | 2485 ++++++++++++++++++++++----------------------- package.json | 17 +- 2 files changed, 1206 insertions(+), 1296 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4dd6ec7..9ef261c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,20 +9,23 @@ "version": "3.2.0", "license": "MIT", "dependencies": { + "@eslint/js": "8.57.0", "@silvermine/eslint-plugin-silvermine": "2.4.0", - "@typescript-eslint/eslint-plugin": "5.17.0", - "@typescript-eslint/parser": "5.17.0", + "@stylistic/eslint-plugin": "2.1.0", + "@typescript-eslint/parser": "7.13.0", "eslint-plugin-vue": "8.7.1", - "typescript": "4.6.3" + "typescript": "4.6.3", + "typescript-eslint": "7.12.0" }, "devDependencies": { "@silvermine/standardization": "2.0.0", + "@types/eslint__js": "8.42.3", "cz-conventional-changelog": "3.0.2", - "eslint": "8.16.0", + "eslint": "8.57.0", "standard-version": "7.0.1" }, "peerDependencies": { - "eslint": ">= 8.0.0" + "eslint": ">= 8.57.0" } }, "node_modules/@ampproject/remapping": { @@ -1057,31 +1060,6 @@ "node": ">=10" } }, - "node_modules/@commitlint/load/node_modules/cosmiconfig/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@commitlint/load/node_modules/cosmiconfig/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@commitlint/load/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1654,91 +1632,48 @@ "node": ">=8" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "dependencies": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@eslint/eslintrc/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { @@ -1752,23 +1687,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", @@ -2181,211 +2136,205 @@ "postcss-syntax": ">=0.36.2" } }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.17.0.tgz", - "integrity": "sha512-qVstvQilEd89HJk3qcbKt/zZrfBZ+9h2ynpAGlWjWiizA7m/MtLT9RoX6gjtpE500vfIg8jogAkDzdCxbsFASQ==", + "node_modules/@stylistic/eslint-plugin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.1.0.tgz", + "integrity": "sha512-cBBowKP2u/+uE5CzgH5w8pE9VKqcM7BXdIDPIbGt2rmLJGnA6MJPr9vYGaqgMoJFs7R/FzsMQerMvvEP40g2uw==", "dependencies": { - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/type-utils": "5.17.0", - "@typescript-eslint/utils": "5.17.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@stylistic/eslint-plugin-js": "2.1.0", + "@stylistic/eslint-plugin-jsx": "2.1.0", + "@stylistic/eslint-plugin-plus": "2.1.0", + "@stylistic/eslint-plugin-ts": "2.1.0", + "@types/eslint": "^8.56.10" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": ">=8.40.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@stylistic/eslint-plugin-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.1.0.tgz", + "integrity": "sha512-gdXUjGNSsnY6nPyqxu6lmDTtVrwCOjun4x8PUn0x04d5ucLI74N3MT1Q0UhdcOR9No3bo5PGDyBgXK+KmD787A==", "dependencies": { - "ms": "2.1.2" + "@types/eslint": "^8.56.10", + "acorn": "^8.11.3", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.1" }, "engines": { - "node": ">=6.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "eslint": ">=8.40.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/@stylistic/eslint-plugin-js/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "engines": { - "node": ">= 4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/@stylistic/eslint-plugin-js/node_modules/espree": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "dependencies": { + "acorn": "^8.11.3", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/@stylistic/eslint-plugin-jsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.1.0.tgz", + "integrity": "sha512-mMD7S+IndZo2vxmwpHVTCwx2O1VdtE5tmpeNwgaEcXODzWV1WTWpnsc/PECQKIr/mkLPFWiSIqcuYNhQ/3l6AQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@stylistic/eslint-plugin-js": "^2.1.0", + "@types/eslint": "^8.56.10", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.17.0.tgz", - "integrity": "sha512-aRzW9Jg5Rlj2t2/crzhA2f23SIYFlF9mchGudyP0uiD6SenIxzKoLjwzHbafgHn39dNV/TV7xwQkLfFTZlJ4ig==", - "dependencies": { - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/typescript-estree": "5.17.0", - "debug": "^4.3.2" - }, + "node_modules/@stylistic/eslint-plugin-jsx/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@stylistic/eslint-plugin-plus": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.1.0.tgz", + "integrity": "sha512-S5QAlgYXESJaSBFhBSBLZy9o36gXrXQwWSt6QkO+F0SrT9vpV5JF/VKoh+ojO7tHzd8Ckmyouq02TT9Sv2B0zQ==", + "dependencies": { + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.8.0" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "*" } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.1.0.tgz", + "integrity": "sha512-2ioFibufHYBALx2TBrU4KXovCkN8qCqcb9yIHc0fyOfTaO5jw4d56WW7YRcF3Zgde6qFyXwAN6z/+w4pnmos1g==", "dependencies": { - "ms": "2.1.2" + "@stylistic/eslint-plugin-js": "2.1.0", + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.8.0" }, "engines": { - "node": ">=6.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "eslint": ">=8.40.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", - "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", + "node_modules/@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "dev": true, "dependencies": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@types/eslint": "*" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.17.0.tgz", - "integrity": "sha512-3hU0RynUIlEuqMJA7dragb0/75gZmwNwFf/QJokWzPehTZousP/MNifVSgjxNcDCkM5HI2K22TjQWUmmHUINSg==", + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.17.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" + "@types/unist": "*" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.0.tgz", + "integrity": "sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==", + "dependencies": { + "@typescript-eslint/scope-manager": "7.13.0", + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/typescript-estree": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0", + "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -2393,33 +2342,28 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz", + "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==", "dependencies": { - "ms": "2.1.2" + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0" }, "engines": { - "node": ">=6.0" + "node": "^18.18.0 || >=20.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/@typescript-eslint/types": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", - "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz", + "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -2427,20 +2371,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", - "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", - "dependencies": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz", + "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==", + "dependencies": { + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -2452,45 +2397,32 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "balanced-match": "^1.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { - "is-extglob": "^2.1.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -2499,81 +2431,51 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", - "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.0.tgz", + "integrity": "sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==", "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/typescript-estree": "5.17.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.0", + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/typescript-estree": "7.13.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "engines": { - "node": ">=10" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", - "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz", + "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==", "dependencies": { - "@typescript-eslint/types": "5.17.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "7.13.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -4776,22 +4678,6 @@ "node": ">=10" } }, - "node_modules/cosmiconfig/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cosmiconfig/node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -4819,15 +4705,6 @@ "node": ">=8" } }, - "node_modules/cosmiconfig/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4921,12 +4798,19 @@ } }, "node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decamelize": { @@ -5219,45 +5103,48 @@ } }, "node_modules/eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.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.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -5314,37 +5201,6 @@ "node": ">=10" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-scope/node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", @@ -5371,11 +5227,14 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -5423,22 +5282,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -5451,36 +5294,33 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dependencies": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/has-flag": { @@ -5491,21 +5331,55 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dependencies": { - "brace-expansion": "^1.1.7" + "p-locate": "^5.0.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } }, "node_modules/eslint/node_modules/strip-ansi": { "version": "6.0.1", @@ -5518,17 +5392,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5541,41 +5404,25 @@ } }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "bin": { - "acorn": "bin/acorn" }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dependencies": { "estraverse": "^5.1.0" }, @@ -5583,14 +5430,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -5602,7 +5441,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -5610,14 +5449,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5705,9 +5536,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -5716,7 +5547,7 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-glob/node_modules/glob-parent": { @@ -5738,7 +5569,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastest-levenshtein": { "version": "1.0.12", @@ -5848,11 +5679,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -6691,17 +6517,6 @@ "node": ">=10.13.0" } }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -6745,9 +6560,9 @@ } }, "node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -6759,15 +6574,15 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -6777,14 +6592,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "engines": { - "node": ">= 4" - } - }, "node_modules/globjoin": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", @@ -6812,6 +6619,11 @@ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -6978,15 +6790,18 @@ } }, "node_modules/import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-fresh/node_modules/resolve-from": { @@ -7157,9 +6972,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -7194,6 +7009,14 @@ "node": ">=8" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -7683,12 +7506,6 @@ "markdown-it": "bin/markdown-it.js" } }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/markdownlint": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.25.1.tgz", @@ -7725,12 +7542,6 @@ "node": ">=12" } }, - "node_modules/markdownlint-cli/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/markdownlint-cli/node_modules/commander": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", @@ -7784,18 +7595,6 @@ "node": "*" } }, - "node_modules/markdownlint-cli/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/markdownlint-cli/node_modules/minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -8300,9 +8099,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8339,9 +8138,9 @@ } }, "node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -8473,16 +8272,16 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -8934,17 +8733,6 @@ "node": ">=4" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -9832,23 +9620,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/stylelint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/stylelint/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -9994,12 +9765,6 @@ "node": ">= 6" } }, - "node_modules/stylelint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/stylelint/node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -10387,91 +10152,332 @@ "node": ">=4" } }, - "node_modules/trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true, + "node_modules/trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typescript-eslint": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.12.0.tgz", + "integrity": "sha512-D6HKNbQcnNu3BaN4HkQCR16tgG8Q2AMUWPgvhrJksOXu+d6ys07yC06ONiV2kcsEfWC22voB6C3PvK2MqlBZ7w==", + "dependencies": { + "@typescript-eslint/eslint-plugin": "7.12.0", + "@typescript-eslint/parser": "7.12.0", + "@typescript-eslint/utils": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz", + "integrity": "sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/type-utils": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", + "dependencies": { + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz", + "integrity": "sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", "dependencies": { - "tslib": "^1.8.1" + "@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" }, "engines": { - "node": ">= 6" + "node": "^18.18.0 || >=20.0.0" }, - "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" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", "dependencies": { - "prelude-ls": "^1.2.1" + "@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" }, "engines": { - "node": ">= 0.8.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=10" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "node_modules/typescript-eslint/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, + "node_modules/typescript-eslint/node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { - "is-typedarray": "^1.0.0" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "node_modules/typescript-eslint/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "semver": "bin/semver.js" }, "engines": { - "node": ">=4.2.0" + "node": ">=10" } }, "node_modules/uc.micro": { @@ -10600,7 +10606,8 @@ "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -10665,22 +10672,6 @@ "eslint": ">=6.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/vue-eslint-parser/node_modules/eslint-scope": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", @@ -10693,19 +10684,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/vue-eslint-parser/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -10739,9 +10717,9 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "engines": { "node": ">=0.10.0" } @@ -10946,7 +10924,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -11748,24 +11725,6 @@ "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" - }, - "dependencies": { - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } } }, "has-flag": { @@ -12182,15 +12141,28 @@ } } }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==" + }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -12198,51 +12170,6 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "requires": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -12250,20 +12177,30 @@ } } }, + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==" + }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" }, "@jridgewell/gen-mapping": { "version": "0.1.1", @@ -12577,10 +12514,110 @@ "unist-util-find-all-after": "^3.0.2" } }, + "@stylistic/eslint-plugin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.1.0.tgz", + "integrity": "sha512-cBBowKP2u/+uE5CzgH5w8pE9VKqcM7BXdIDPIbGt2rmLJGnA6MJPr9vYGaqgMoJFs7R/FzsMQerMvvEP40g2uw==", + "requires": { + "@stylistic/eslint-plugin-js": "2.1.0", + "@stylistic/eslint-plugin-jsx": "2.1.0", + "@stylistic/eslint-plugin-plus": "2.1.0", + "@stylistic/eslint-plugin-ts": "2.1.0", + "@types/eslint": "^8.56.10" + } + }, + "@stylistic/eslint-plugin-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.1.0.tgz", + "integrity": "sha512-gdXUjGNSsnY6nPyqxu6lmDTtVrwCOjun4x8PUn0x04d5ucLI74N3MT1Q0UhdcOR9No3bo5PGDyBgXK+KmD787A==", + "requires": { + "@types/eslint": "^8.56.10", + "acorn": "^8.11.3", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==" + }, + "espree": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "requires": { + "acorn": "^8.11.3", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + } + } + } + }, + "@stylistic/eslint-plugin-jsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.1.0.tgz", + "integrity": "sha512-mMD7S+IndZo2vxmwpHVTCwx2O1VdtE5tmpeNwgaEcXODzWV1WTWpnsc/PECQKIr/mkLPFWiSIqcuYNhQ/3l6AQ==", + "requires": { + "@stylistic/eslint-plugin-js": "^2.1.0", + "@types/eslint": "^8.56.10", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "dependencies": { + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==" + } + } + }, + "@stylistic/eslint-plugin-plus": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.1.0.tgz", + "integrity": "sha512-S5QAlgYXESJaSBFhBSBLZy9o36gXrXQwWSt6QkO+F0SrT9vpV5JF/VKoh+ojO7tHzd8Ckmyouq02TT9Sv2B0zQ==", + "requires": { + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.8.0" + } + }, + "@stylistic/eslint-plugin-ts": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.1.0.tgz", + "integrity": "sha512-2ioFibufHYBALx2TBrU4KXovCkN8qCqcb9yIHc0fyOfTaO5jw4d56WW7YRcF3Zgde6qFyXwAN6z/+w4pnmos1g==", + "requires": { + "@stylistic/eslint-plugin-js": "2.1.0", + "@types/eslint": "^8.56.10", + "@typescript-eslint/utils": "^7.8.0" + } + }, + "@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "dev": true, + "requires": { + "@types/eslint": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@types/mdast": { "version": "3.0.10", @@ -12612,216 +12649,102 @@ "@types/unist": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.17.0.tgz", - "integrity": "sha512-qVstvQilEd89HJk3qcbKt/zZrfBZ+9h2ynpAGlWjWiizA7m/MtLT9RoX6gjtpE500vfIg8jogAkDzdCxbsFASQ==", - "requires": { - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/type-utils": "5.17.0", - "@typescript-eslint/utils": "5.17.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.17.0.tgz", - "integrity": "sha512-aRzW9Jg5Rlj2t2/crzhA2f23SIYFlF9mchGudyP0uiD6SenIxzKoLjwzHbafgHn39dNV/TV7xwQkLfFTZlJ4ig==", - "requires": { - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/typescript-estree": "5.17.0", - "debug": "^4.3.2" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true }, - "@typescript-eslint/scope-manager": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", - "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", + "@typescript-eslint/parser": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.0.tgz", + "integrity": "sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==", "requires": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0" + "@typescript-eslint/scope-manager": "7.13.0", + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/typescript-estree": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0", + "debug": "^4.3.4" } }, - "@typescript-eslint/type-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.17.0.tgz", - "integrity": "sha512-3hU0RynUIlEuqMJA7dragb0/75gZmwNwFf/QJokWzPehTZousP/MNifVSgjxNcDCkM5HI2K22TjQWUmmHUINSg==", + "@typescript-eslint/scope-manager": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz", + "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==", "requires": { - "@typescript-eslint/utils": "5.17.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0" } }, "@typescript-eslint/types": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", - "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==" + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz", + "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==" }, "@typescript-eslint/typescript-estree": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", - "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz", + "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==", "requires": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/visitor-keys": "7.13.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "requires": { - "ms": "2.1.2" + "balanced-match": "^1.0.0" } }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "requires": { - "is-extglob": "^2.1.1" + "brace-expansion": "^2.0.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" } } }, "@typescript-eslint/utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", - "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.0.tgz", + "integrity": "sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==", "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/typescript-estree": "5.17.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - } + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.13.0", + "@typescript-eslint/types": "7.13.0", + "@typescript-eslint/typescript-estree": "7.13.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", - "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz", + "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==", "requires": { - "@typescript-eslint/types": "5.17.0", - "eslint-visitor-keys": "^3.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - } + "@typescript-eslint/types": "7.13.0", + "eslint-visitor-keys": "^3.4.3" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" }, "acorn-jsx": { "version": "5.3.2", @@ -14518,16 +14441,6 @@ "yaml": "^1.10.0" }, "dependencies": { - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -14545,12 +14458,6 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true } } }, @@ -14620,11 +14527,11 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -14856,45 +14763,48 @@ "dev": true }, "eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.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.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "ansi-styles": { @@ -14927,60 +14837,62 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, - "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "requires": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "requires": { - "brace-expansion": "^1.1.7" + "p-locate": "^5.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "strip-ansi": { "version": "6.0.1", @@ -14990,11 +14902,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15037,32 +14944,6 @@ } } }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - } - } - }, "eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", @@ -15079,45 +14960,26 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - } + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } } }, "esrecurse": { @@ -15126,19 +14988,12 @@ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "esutils": { "version": "2.0.3", @@ -15211,9 +15066,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -15240,7 +15095,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fastest-levenshtein": { "version": "1.0.12", @@ -15332,11 +15187,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -15963,16 +15813,6 @@ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "requires": { "is-glob": "^4.0.3" - }, - "dependencies": { - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - } } }, "global-dirs": { @@ -16009,31 +15849,24 @@ } }, "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "requires": { "type-fest": "^0.20.2" } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - } } }, "globjoin": { @@ -16057,6 +15890,11 @@ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -16186,9 +16024,9 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -16308,9 +16146,9 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -16332,6 +16170,11 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -16715,14 +16558,6 @@ "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - } } }, "markdownlint": { @@ -16752,12 +16587,6 @@ "run-con": "~1.2.10" }, "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "commander": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz", @@ -16795,15 +16624,6 @@ } } }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, "minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -17170,9 +16990,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -17200,9 +17020,9 @@ "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "natural-compare": { "version": "1.4.0", @@ -17310,16 +17130,16 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" } }, "os-tmpdir": { @@ -17653,11 +17473,6 @@ "strip-indent": "^2.0.0" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - }, "remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -18298,15 +18113,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -18413,12 +18219,6 @@ "kind-of": "^6.0.3" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -18755,18 +18555,17 @@ "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "requires": {} + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "requires": { - "tslib": "^1.8.1" - } + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "type-check": { "version": "0.4.0", @@ -18801,6 +18600,132 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==" }, + "typescript-eslint": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.12.0.tgz", + "integrity": "sha512-D6HKNbQcnNu3BaN4HkQCR16tgG8Q2AMUWPgvhrJksOXu+d6ys07yC06ONiV2kcsEfWC22voB6C3PvK2MqlBZ7w==", + "requires": { + "@typescript-eslint/eslint-plugin": "7.12.0", + "@typescript-eslint/parser": "7.12.0", + "@typescript-eslint/utils": "7.12.0" + }, + "dependencies": { + "@typescript-eslint/eslint-plugin": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz", + "integrity": "sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==", + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/type-utils": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", + "requires": { + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "requires": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz", + "integrity": "sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==", + "requires": { + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==" + }, + "@typescript-eslint/typescript-estree": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "requires": { + "@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" + } + }, + "@typescript-eslint/utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", + "requires": { + "@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" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "requires": { + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==" + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + } + } + }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -18900,7 +18825,8 @@ "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "validate-npm-package-license": { "version": "3.0.4", @@ -18948,14 +18874,6 @@ "semver": "^7.3.5" }, "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, "eslint-scope": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", @@ -18965,16 +18883,6 @@ "estraverse": "^5.2.0" } }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -19001,9 +18909,9 @@ "dev": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" }, "wrap-ansi": { "version": "5.1.0", @@ -19169,8 +19077,7 @@ "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" }, "zwitch": { "version": "1.0.5", diff --git a/package.json b/package.json index 7768b11..27cb828 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,10 @@ "main": "index.js", "scripts": { "check-node-version": "check-node-version --npm 10.5.0", - "test": "eslint", + "test": "npm run eslint", "release": "standard-version", "commitlint": "commitlint --from ee3b407", - "eslint": "eslint .", + "eslint": "eslint './**/*.{js,cjs,ts}'", "markdownlint": "markdownlint -c .markdownlint.json -i CHANGELOG.md '{,!(node_modules)/**/}*.md'", "standards": "npm run commitlint && npm run markdownlint && npm run eslint", "release:preview": "node ./node_modules/@silvermine/standardization/scripts/release.js preview", @@ -30,20 +30,23 @@ }, "homepage": "https://github.com/silvermine/eslint-config-silvermine#readme", "dependencies": { + "@eslint/js": "8.57.0", "@silvermine/eslint-plugin-silvermine": "2.4.0", - "@typescript-eslint/eslint-plugin": "5.17.0", - "@typescript-eslint/parser": "5.17.0", + "@stylistic/eslint-plugin": "2.1.0", + "@typescript-eslint/parser": "7.13.0", "eslint-plugin-vue": "8.7.1", - "typescript": "4.6.3" + "typescript": "4.6.3", + "typescript-eslint": "7.12.0" }, "devDependencies": { "@silvermine/standardization": "2.0.0", + "@types/eslint__js": "8.42.3", "cz-conventional-changelog": "3.0.2", - "eslint": "8.16.0", + "eslint": "8.57.0", "standard-version": "7.0.1" }, "peerDependencies": { - "eslint": ">= 8.0.0" + "eslint": ">= 8.57.0" }, "config": { "commitizen": { From 2332732ec7ce08c11e4c644580fa549653ac0670 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 14 Jun 2024 10:12:16 -0400 Subject: [PATCH 02/11] chore: switch to flat file config --- .eslintrc | 3 - .eslintrc.json | 5 - README.md | 24 ++ browser.js | 21 +- eslint.config.js | 7 + index.js | 946 ++++++++++++++++++++++++----------------------- node-tests.js | 24 +- node.js | 18 +- package.json | 2 +- vue2.js | 19 +- 10 files changed, 554 insertions(+), 515 deletions(-) delete mode 100644 .eslintrc delete mode 100644 .eslintrc.json create mode 100644 eslint.config.js diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 4974441..0000000 --- a/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./index.js" -} diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 33f0de5..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - - "extends": "./node.js" - -} diff --git a/README.md b/README.md index ae9032d..67cafb3 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,30 @@ Example: } ``` +## Migration to ESLint flag config + +ESLint version 8.57 and later enable support for ESLint's flat config. As opposed +to use a customized configuration engine, this enables users to configure ESLint +using JS objects and results in more flexibility and control over configuration. + +Add a file named `eslint.config.js` to the root of your project and import our +configuration like so: + +```js +// TODO: add example config +``` + +### VS Code Support + +For VS Code users, switch to the prerelease version of the VS Code ESLint extension, +version 3.0.5 or later. Then in `.vscode/setting.json` enable the `useFlatConfig`option: + +```json +{ + "eslint.useFlatConfig": true +} +``` + ## Other Configuration Files Available In addition to the ESLint rules, this package provides configuration for the following: diff --git a/browser.js b/browser.js index 910b513..3e0bff0 100644 --- a/browser.js +++ b/browser.js @@ -5,14 +5,17 @@ 'use strict'; -module.exports = { +const config = require('./index'), + globals = require('globals'); - 'env': { - 'node': false, - 'browser': true, - 'commonjs': true, +module.exports = [ + ...config, + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.commonjs, + }, + }, }, - - 'extends': './index.js', - -}; +]; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..2c1bc2b --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,7 @@ +'use strict'; + +const config = require('./node'); + +module.exports = [ + ...config, +]; diff --git a/index.js b/index.js index d74c641..0e97a90 100644 --- a/index.js +++ b/index.js @@ -9,497 +9,505 @@ 'use strict'; -const getVueRules = require('./partials/vue').getVueRules; +const getVueRules = require('./partials/vue').getVueRules, + esLint = require('@eslint/js'), + globals = require('globals'), + esLintPluginSilvermine = require('@silvermine/eslint-plugin-silvermine'), + typescriptESLint = require('typescript-eslint'), + typescriptESLintParser = require('@typescript-eslint/parser'), + vue = require('eslint-plugin-vue'), + vueESLintParser = require('vue-eslint-parser'); + +module.exports = [ + esLint.configs.recommended, + { + 'ignorePatterns': [ + 'cdk.out', + // ESLint by default ignores directories with dot prefixes. Some of our projects use + // VuePress which maintains its source code in a `.vuepress` directory. This negated + // ignore pattern enables linting for any projects using our config. + '!.vuepress', + ], -module.exports = { - - 'extends': 'eslint:recommended', - - 'ignorePatterns': [ - 'cdk.out', - // ESLint by default ignores directories with dot prefixes. Some of our projects use - // VuePress which maintains its source code in a `.vuepress` directory. This negated - // ignore pattern enables linting for any projects using our config. - '!.vuepress', - ], - - 'plugins': [ - '@silvermine/eslint-plugin-silvermine', // Our custom rules - '@typescript-eslint', // TypeScript-specific rules - 'vue', // Vue-specific rules - ], - - 'parserOptions': { - // Setting the ecmaVersion to 2019 allows ESLint to parse any file that has valid - // syntax, even if we use things like spread and rest syntax. It would be nice to - // set this to something like 'latest', but you must specify a specific version. - 'ecmaVersion': 2019, - }, + 'plugins': { + '@silvermine/eslint-plugin-silvermine': esLintPluginSilvermine, // Our custom rules + 'vue': vue, // Vue-specific rules + }, - 'env': { - 'es6': true, - }, + 'languageOptions': { + 'ecmaVersion': 'latest', + }, - 'rules': { - - '@silvermine/silvermine/array-indentation': 'error', - '@silvermine/silvermine/call-indentation': 'error', - '@silvermine/silvermine/fluent-chaining': 'error', - '@silvermine/silvermine/no-multiple-inline-functions': 'error', - '@silvermine/silvermine/no-multiline-conditionals': 'error', - '@silvermine/silvermine/no-multiline-var-declarations': [ 'error', { 'const': 'single-only' } ], - '@silvermine/silvermine/empty-object-spacing': 'error', - '@silvermine/silvermine/empty-array-spacing': 'error', - '@silvermine/silvermine/uninitialized-last': 'error', - '@silvermine/silvermine/block-scope-case': 'error', - '@silvermine/silvermine/brace-style': [ 'error', '1tbs', { 'allowSingleLine': false, 'allowSingleLineArrow': true } ], - '@silvermine/silvermine/max-statements-per-line': 'error', - - - 'indent': [ 'error', 3, { 'VariableDeclarator': 'first', 'SwitchCase': 1 } ], - 'comma-dangle': [ - 'error', - { - 'arrays': 'always-multiline', - 'objects': 'always-multiline', - 'imports': 'always-multiline', - 'exports': 'always-multiline', - 'functions': 'never', - }, - ], - 'no-unsafe-finally': 'warn', - - 'array-callback-return': 'error', - 'block-scoped-var': 'error', - 'complexity': 'error', - 'curly': 'error', - 'default-case': 'error', - 'default-param-last': 'error', - 'dot-location': [ 'error', 'property' ], - 'dot-notation': [ - 'error', - { 'allowPattern': '^[a-z]+(_[a-z]+)+$' }, // Allow obj['snake_case'] - ], - 'eqeqeq': 'error', - 'grouped-accessor-pairs': [ 'error', 'getBeforeSet' ], - 'guard-for-in': 'error', - 'no-alert': 'error', - 'no-caller': 'error', - 'no-case-declarations': 'error', - 'no-console': 'error', - 'no-constructor-return': 'error', - 'no-else-return': 'error', - 'no-empty-function': 'error', - 'no-empty-pattern': 'error', - 'no-eq-null': 'error', - 'no-eval': 'error', - 'no-extend-native': 'error', - 'no-extra-bind': 'error', - 'no-extra-label': 'error', - 'no-fallthrough': 'error', - 'no-floating-decimal': 'error', - 'no-implicit-coercion': [ 'error', { 'allow': [ '!!' ] } ], - 'no-implicit-globals': [ 'error', { 'lexicalBindings': true } ], - 'no-implied-eval': 'error', - 'no-iterator': 'error', - 'no-labels': 'error', - 'no-lone-blocks': 'error', - 'no-loop-func': 'error', - 'no-multi-spaces': 'error', - 'no-multi-str': 'error', - 'no-new': 'error', - 'no-new-func': 'error', - 'no-new-wrappers': 'error', - 'no-octal': 'error', - 'no-octal-escape': 'error', - 'no-proto': 'error', - 'no-redeclare': 'error', - 'no-return-assign': 'error', - 'no-script-url': 'error', - 'no-self-assign': 'error', - 'no-self-compare': 'error', - 'no-sequences': 'error', - 'no-throw-literal': 'error', - 'no-unmodified-loop-condition': 'error', - 'no-unused-expressions': 'error', - 'no-unused-labels': 'error', - 'no-useless-call': 'error', - 'no-useless-concat': 'error', - 'no-useless-escape': 'error', - 'no-void': 'error', - 'no-with': 'error', - 'radix': 'error', - 'vars-on-top': 'error', - 'wrap-iife': 'error', - 'yoda': 'error', - - 'strict': 'error', - - 'no-shadow': 'error', - 'no-delete-var': 'error', - 'no-label-var': 'error', - 'no-restricted-globals': [ 'error', 'event' ], - 'no-shadow-restricted-names': 'error', - 'no-undef': 'error', - 'no-undef-init': 'error', - 'no-unused-vars': 'error', - 'no-use-before-define': [ 'error', { 'functions': false } ], - - 'callback-return': [ 'error', [ 'callback', 'cb', 'next', 'done' ] ], - 'global-require': 'error', - 'handle-callback-err': 'error', - 'no-new-require': 'error', - 'no-path-concat': 'error', - 'no-process-env': 'error', - 'no-process-exit': 'error', - 'no-sync': 'error', - - 'array-bracket-spacing': [ 'error', 'always' ], - 'block-spacing': 'error', - 'camelcase': 'error', - 'comma-spacing': 'error', - 'comma-style': 'error', - 'computed-property-spacing': 'error', - 'consistent-this': [ 'error', 'self' ], - 'eol-last': 'error', - 'key-spacing': 'error', - 'keyword-spacing': [ - 'error', - { - 'overrides': { - 'catch': { 'after': false }, + 'rules': { + '@silvermine/eslint-plugin-silvermine/array-indentation': 'error', + '@silvermine/eslint-plugin-silvermine/call-indentation': 'error', + '@silvermine/eslint-plugin-silvermine/fluent-chaining': 'error', + '@silvermine/eslint-plugin-silvermine/no-multiple-inline-functions': 'error', + '@silvermine/eslint-plugin-silvermine/no-multiline-conditionals': 'error', + '@silvermine/eslint-plugin-silvermine/no-multiline-var-declarations': [ 'error', { 'const': 'single-only' } ], + '@silvermine/eslint-plugin-silvermine/empty-object-spacing': 'error', + '@silvermine/eslint-plugin-silvermine/empty-array-spacing': 'error', + '@silvermine/eslint-plugin-silvermine/uninitialized-last': 'error', + '@silvermine/eslint-plugin-silvermine/block-scope-case': 'error', + '@silvermine/eslint-plugin-silvermine/brace-style': [ + 'error', '1tbs', { 'allowSingleLine': false, 'allowSingleLineArrow': true }, + ], + '@silvermine/eslint-plugin-silvermine/max-statements-per-line': 'error', + + 'indent': [ 'error', 3, { 'VariableDeclarator': 'first', 'SwitchCase': 1 } ], + 'comma-dangle': [ + 'error', + { + 'arrays': 'always-multiline', + 'objects': 'always-multiline', + 'imports': 'always-multiline', + 'exports': 'always-multiline', + 'functions': 'never', }, - }, - ], - 'linebreak-style': [ 'error', 'unix' ], - 'lines-around-comment': 'error', - 'spaced-comment': [ 'error', 'always' ], - 'max-depth': [ 'error', 4 ], - 'max-len': [ - 'error', - { - 'code': 140, - 'comments': 90, - 'ignoreUrls': true, - 'ignorePattern': '^\\s*((async|export|default|async|public|private|protected|function) )+.*\\{', // function declaration lines - }, - ], - 'max-nested-callbacks': [ 'error', 6 ], - 'max-params': [ 'error', 5 ], - 'new-cap': [ - 'error', - { 'capIsNewExceptions': [ 'Q' ] }, - ], - 'new-parens': 'error', - 'padding-line-between-statements': [ - 'error', - { blankLine: 'always', prev: [ 'var', 'let', 'const' ], next: '*' }, - ], - 'prefer-regex-literals': 'error', - 'no-array-constructor': 'error', - 'no-bitwise': 'error', - 'no-import-assign': 'error', - 'no-dupe-else-if': 'error', - 'no-lonely-if': 'error', - 'no-multiple-empty-lines': [ - 'error', - { - 'max': 2, - 'maxBOF': 0, - 'maxEOF': 0, - }, - ], - 'no-negated-condition': 'error', - 'no-nested-ternary': 'error', - 'no-new-object': 'error', - 'no-plusplus': [ - 'error', - { 'allowForLoopAfterthoughts': true }, - ], - 'no-restricted-syntax': [ - 'error', - 'DoWhileStatement', - 'DebuggerStatement', - 'EmptyStatement', - 'ForInStatement', - 'WithStatement', - 'YieldExpression', - ], - 'no-setter-return': 'error', - 'func-call-spacing': 'error', - 'no-trailing-spaces': 'error', - 'no-unneeded-ternary': 'error', - 'no-whitespace-before-property': 'error', - 'object-curly-spacing': [ 'error', 'always' ], - 'one-var': [ 'error', { 'var': 'always', 'let': 'consecutive' } ], - 'one-var-declaration-per-line': 'error', - 'quotes': [ 'error', 'single' ], - 'semi': [ 'error', 'always' ], - 'semi-spacing': 'error', - 'space-before-blocks': 'error', - 'space-before-function-paren': [ - 'error', - { - 'anonymous': 'never', - 'named': 'never', - 'asyncArrow': 'always', - }, - ], - 'space-in-parens': [ 'error', 'never' ], - 'space-infix-ops': 'error', - 'space-unary-ops': 'error', - 'unicode-bom': 'error', - - 'arrow-body-style': [ 'error', 'always' ], - 'arrow-spacing': [ 'error', { 'before': true, 'after': true } ], - 'arrow-parens': 'error', + ], + 'no-unsafe-finally': 'warn', + + 'array-callback-return': 'error', + 'block-scoped-var': 'error', + 'complexity': 'error', + 'curly': 'error', + 'default-case': 'error', + 'default-param-last': 'error', + 'dot-location': [ 'error', 'property' ], + 'dot-notation': [ + 'error', + { 'allowPattern': '^[a-z]+(_[a-z]+)+$' }, // Allow obj['snake_case'] + ], + 'eqeqeq': 'error', + 'grouped-accessor-pairs': [ 'error', 'getBeforeSet' ], + 'guard-for-in': 'error', + 'no-alert': 'error', + 'no-caller': 'error', + 'no-case-declarations': 'error', + 'no-console': 'error', + 'no-constructor-return': 'error', + 'no-else-return': 'error', + 'no-empty-function': 'error', + 'no-empty-pattern': 'error', + 'no-eq-null': 'error', + 'no-eval': 'error', + 'no-extend-native': 'error', + 'no-extra-bind': 'error', + 'no-extra-label': 'error', + 'no-fallthrough': 'error', + 'no-floating-decimal': 'error', + 'no-implicit-coercion': [ 'error', { 'allow': [ '!!' ] } ], + 'no-implicit-globals': [ 'error', { 'lexicalBindings': true } ], + 'no-implied-eval': 'error', + 'no-iterator': 'error', + 'no-labels': 'error', + 'no-lone-blocks': 'error', + 'no-loop-func': 'error', + 'no-multi-spaces': 'error', + 'no-multi-str': 'error', + 'no-new': 'error', + 'no-new-func': 'error', + 'no-new-wrappers': 'error', + 'no-octal': 'error', + 'no-octal-escape': 'error', + 'no-proto': 'error', + 'no-redeclare': 'error', + 'no-return-assign': 'error', + 'no-script-url': 'error', + 'no-self-assign': 'error', + 'no-self-compare': 'error', + 'no-sequences': 'error', + 'no-throw-literal': 'error', + 'no-unmodified-loop-condition': 'error', + 'no-unused-expressions': 'error', + 'no-unused-labels': 'error', + 'no-useless-call': 'error', + 'no-useless-concat': 'error', + 'no-useless-escape': 'error', + 'no-void': 'error', + 'no-with': 'error', + 'radix': 'error', + 'vars-on-top': 'error', + 'wrap-iife': 'error', + 'yoda': 'error', + + // because we are still on commonjs module + 'strict': 'off', + + 'no-shadow': 'error', + 'no-delete-var': 'error', + 'no-label-var': 'error', + 'no-restricted-globals': [ 'error', 'event' ], + 'no-shadow-restricted-names': 'error', + 'no-undef': 'error', + 'no-undef-init': 'error', + 'no-unused-vars': 'error', + 'no-use-before-define': [ 'error', { 'functions': false } ], + + 'callback-return': [ 'error', [ 'callback', 'cb', 'next', 'done' ] ], + 'global-require': 'error', + 'handle-callback-err': 'error', + 'no-new-require': 'error', + 'no-path-concat': 'error', + 'no-process-env': 'error', + 'no-process-exit': 'error', + 'no-sync': 'error', + + 'array-bracket-spacing': [ 'error', 'always' ], + 'block-spacing': 'error', + 'camelcase': 'error', + 'comma-spacing': 'error', + 'comma-style': 'error', + 'computed-property-spacing': 'error', + 'consistent-this': [ 'error', 'self' ], + 'eol-last': 'error', + 'key-spacing': 'error', + 'keyword-spacing': [ + 'error', + { + 'overrides': { + 'catch': { 'after': false }, + }, + }, + ], + 'linebreak-style': [ 'error', 'unix' ], + 'lines-around-comment': 'error', + 'spaced-comment': [ 'error', 'always' ], + 'max-depth': [ 'error', 4 ], + 'max-len': [ + 'error', + { + 'code': 140, + 'comments': 90, + 'ignoreUrls': true, + // function declaration lines + 'ignorePattern': '^\\s*((async|export|default|async|public|private|protected|function) )+.*\\{', + }, + ], + 'max-nested-callbacks': [ 'error', 6 ], + 'max-params': [ 'error', 5 ], + 'new-cap': [ + 'error', + { 'capIsNewExceptions': [ 'Q' ] }, + ], + 'new-parens': 'error', + 'padding-line-between-statements': [ + 'error', + { blankLine: 'always', prev: [ 'var', 'let', 'const' ], next: '*' }, + ], + 'prefer-regex-literals': 'error', + 'no-array-constructor': 'error', + 'no-bitwise': 'error', + 'no-import-assign': 'error', + 'no-dupe-else-if': 'error', + 'no-lonely-if': 'error', + 'no-multiple-empty-lines': [ + 'error', + { + 'max': 2, + 'maxBOF': 0, + 'maxEOF': 0, + }, + ], + 'no-negated-condition': 'error', + 'no-nested-ternary': 'error', + 'no-new-object': 'error', + 'no-plusplus': [ + 'error', + { 'allowForLoopAfterthoughts': true }, + ], + 'no-restricted-syntax': [ + 'error', + 'DoWhileStatement', + 'DebuggerStatement', + 'EmptyStatement', + 'ForInStatement', + 'WithStatement', + 'YieldExpression', + ], + 'no-setter-return': 'error', + 'func-call-spacing': 'error', + 'no-trailing-spaces': 'error', + 'no-unneeded-ternary': 'error', + 'no-whitespace-before-property': 'error', + 'object-curly-spacing': [ 'error', 'always' ], + 'one-var': [ 'error', { 'var': 'always', 'let': 'consecutive' } ], + 'one-var-declaration-per-line': 'error', + 'quotes': [ 'error', 'single' ], + 'semi': [ 'error', 'always' ], + 'semi-spacing': 'error', + 'space-before-blocks': 'error', + 'space-before-function-paren': [ + 'error', + { + 'anonymous': 'never', + 'named': 'never', + 'asyncArrow': 'always', + }, + ], + 'space-in-parens': [ 'error', 'never' ], + 'space-infix-ops': 'error', + 'space-unary-ops': 'error', + 'unicode-bom': 'error', - 'template-curly-spacing': [ 'error', 'never' ], - 'object-property-newline': [ 'error', { 'allowAllPropertiesOnSameLine': true } ], + 'arrow-body-style': [ 'error', 'always' ], + 'arrow-spacing': [ 'error', { 'before': true, 'after': true } ], + 'arrow-parens': 'error', - }, + 'template-curly-spacing': [ 'error', 'never' ], + 'object-property-newline': [ 'error', { 'allowAllPropertiesOnSameLine': true } ], - 'overrides': [ - { - 'files': [ '*.cjs' ], }, - { - 'files': [ '*.ts' ], - 'parser': '@typescript-eslint/parser', + }, + ...typescriptESLint.configs.recommended, + { + 'files': [ '**/*.ts' ], + languageOptions: { + 'parser': typescriptESLintParser, 'parserOptions': { 'sourceType': 'module', // Disable warning banner for possibly incompatible versions of TypeScript 'loggerFn': false, }, - 'rules': { - // The standard ESLint `no-dupe-class-members` rule will report false - // positives for overloaded TypeScript class methods. This rule is safe to - // disable because actual duplicate class members will be caught by the - // TypeScript compiler. - 'no-dupe-class-members': 'off', - // TODO: figure out how to fix no-undef. - // Currently, no-undef causes false positives for TypeScript class properties. - // With TypeScript-only code this rule can safely be disabled because - // TypeScript won't compile if the definition is missing. However, if we use - // any JavaScript in the project we need to have it enabled. - 'no-undef': 'off', - // The standard ESLint `no-unused-vars' rule will throw false positives with - // class properties in TypeScript. The TypeScript-specific rule fixes this. - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': 'error', - // For TypeScript code, `const`/`let` should be used exclusively - 'no-var': 'error', - // new-cap throws errors with property decorators - 'new-cap': 'off', - - // TypeScript will be parsed in strict mode and output the `use-strict` - // directive for the transpiled JavaScript automatically. - 'strict': [ 'error', 'never' ], - - 'no-empty-function': [ 'error', { 'allow': [ 'constructors' ] } ], - - '@typescript-eslint/adjacent-overload-signatures': 'error', - - // Disable ESLint's camelcase so we can override with our own - // naming convention rules. - 'camelcase': 'off', - - '@typescript-eslint/naming-convention': [ - 'error', - { - selector: 'classProperty', - modifiers: [ 'private' ], - format: [ 'camelCase' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'protected' ], - format: [ 'camelCase' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'private', 'static' ], - format: [ 'snake_case' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'private', 'readonly', 'static' ], - format: [ 'UPPER_CASE' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'protected', 'readonly', 'static' ], - format: [ 'UPPER_CASE' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'public', 'readonly', 'static' ], - format: [ 'UPPER_CASE' ], - }, - { - selector: 'classProperty', - modifiers: [ 'protected', 'static' ], - format: [ 'snake_case' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'public', 'static' ], - format: [ 'snake_case' ], - leadingUnderscore: 'forbid', - }, - { - selector: 'enum', - format: [ 'PascalCase' ], - }, - { - selector: 'typeLike', - format: [ 'PascalCase' ], - }, - { - selector: 'variable', - format: [ 'camelCase', 'PascalCase' ], - }, - { - selector: 'parameter', - format: [ 'camelCase', 'PascalCase' ], - leadingUnderscore: 'allow', - }, - { - selector: 'variable', - modifiers: [ 'global' ], - format: [ 'UPPER_CASE', 'camelCase', 'PascalCase' ], - }, - ], - // no-shadow is incompatible with TypeScript code. - // @typescript-eslint/no-shadow replaces it. - 'no-shadow': 'off', - '@typescript-eslint/no-shadow': 'error', - // no-redeclare is incompatible with TypeScript code. - // @typescript-eslint/no-redeclare replaces it. - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': [ 'error' ], - '@typescript-eslint/explicit-function-return-type': [ 'error', { 'allowExpressions': true } ], - '@typescript-eslint/explicit-member-accessibility': 'error', - '@typescript-eslint/member-delimiter-style': 'error', - '@typescript-eslint/consistent-type-assertions': [ 'error', { 'assertionStyle': 'as' } ], - '@typescript-eslint/no-array-constructor': 'error', - '@typescript-eslint/no-namespace': 'error', - '@typescript-eslint/member-ordering': [ - 'error', - { - 'default': [ - // Index signature - 'signature', - 'call-signature', - - // Fields - 'public-static-field', - 'protected-static-field', - 'private-static-field', - - 'public-instance-field', - 'protected-instance-field', - 'private-instance-field', - - 'public-abstract-field', - 'protected-abstract-field', - - 'public-field', - 'protected-field', - 'private-field', - - 'static-field', - 'instance-field', - 'abstract-field', - - 'field', - - // Constructors - 'public-constructor', - 'protected-constructor', - 'private-constructor', - - 'constructor', - - // Methods - [ 'public-static-method', 'public-static-get', 'public-static-set' ], - [ 'protected-static-method', 'protected-static-get', 'protected-static-set' ], - [ 'private-static-method', 'private-static-get', 'private-static-set' ], - - [ 'public-instance-method', 'public-instance-get', 'public-instance-set' ], - [ 'protected-instance-method', 'protected-instance-get', 'protected-instance-set' ], - [ 'private-instance-method', 'private-instance-get', 'private-instance-set' ], - - [ 'public-abstract-method', 'public-abstract-get', 'public-abstract-set' ], - [ 'protected-abstract-method', 'protected-abstract-get', 'protected-abstract-set' ], - - 'public-method', - 'protected-method', - 'private-method', - - [ 'static-method', 'static-get', 'static-set' ], - [ 'instance-method', 'instance-get', 'instance-set' ], - [ 'abstract-method', 'abstract-get', 'abstract-set' ], - - 'method', - ], - }, - ], - '@typescript-eslint/no-non-null-assertion': 'error', - '@typescript-eslint/no-parameter-properties': [ 'error', { 'allows': [ 'private' ] } ], - '@typescript-eslint/triple-slash-reference': [ 'error', { 'path': 'never', 'types': 'never', 'lib': 'never' } ], - '@typescript-eslint/type-annotation-spacing': [ - 'error', - { - 'before': false, - 'after': true, - 'overrides': { - 'arrow': { 'before': true, 'after': true }, - }, - }, - ], - '@typescript-eslint/no-empty-interface': 'error', - - // Turn off the core no-use-before-define to avoid double reporting errors. - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'error', - { - 'functions': false, - 'typedefs': false, + }, + 'rules': { + // The standard ESLint `no-dupe-class-members` rule will report false + // positives for overloaded TypeScript class methods. This rule is safe to + // disable because actual duplicate class members will be caught by the + // TypeScript compiler. + 'no-dupe-class-members': 'off', + // TODO: figure out how to fix no-undef. + // Currently, no-undef causes false positives for TypeScript class properties. + // With TypeScript-only code this rule can safely be disabled because + // TypeScript won't compile if the definition is missing. However, if we use + // any JavaScript in the project we need to have it enabled. + 'no-undef': 'off', + // The standard ESLint `no-unused-vars' rule will throw false positives with + // class properties in TypeScript. The TypeScript-specific rule fixes this. + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + // For TypeScript code, `const`/`let` should be used exclusively + 'no-var': 'error', + // new-cap throws errors with property decorators + 'new-cap': 'off', + + // TypeScript will be parsed in strict mode and output the `use-strict` + // directive for the transpiled JavaScript automatically. + 'strict': [ 'error', 'never' ], + + 'no-empty-function': [ 'error', { 'allow': [ 'constructors' ] } ], + + '@typescript-eslint/adjacent-overload-signatures': 'error', + + // Disable ESLint's camelcase so we can override with our own + // naming convention rules. + 'camelcase': 'off', + + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'classProperty', + modifiers: [ 'private' ], + format: [ 'camelCase' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'protected' ], + format: [ 'camelCase' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'private', 'static' ], + format: [ 'snake_case' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'private', 'readonly', 'static' ], + format: [ 'UPPER_CASE' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'protected', 'readonly', 'static' ], + format: [ 'UPPER_CASE' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'public', 'readonly', 'static' ], + format: [ 'UPPER_CASE' ], + }, + { + selector: 'classProperty', + modifiers: [ 'protected', 'static' ], + format: [ 'snake_case' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'public', 'static' ], + format: [ 'snake_case' ], + leadingUnderscore: 'forbid', + }, + { + selector: 'enum', + format: [ 'PascalCase' ], + }, + { + selector: 'typeLike', + format: [ 'PascalCase' ], + }, + { + selector: 'variable', + format: [ 'camelCase', 'PascalCase' ], + }, + { + selector: 'parameter', + format: [ 'camelCase', 'PascalCase' ], + leadingUnderscore: 'allow', + }, + { + selector: 'variable', + modifiers: [ 'global' ], + format: [ 'UPPER_CASE', 'camelCase', 'PascalCase' ], + }, + ], + // no-shadow is incompatible with TypeScript code. + // @typescript-eslint/no-shadow replaces it. + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': 'error', + // no-redeclare is incompatible with TypeScript code. + // @typescript-eslint/no-redeclare replaces it. + 'no-redeclare': 'off', + '@typescript-eslint/no-redeclare': [ 'error' ], + '@typescript-eslint/explicit-function-return-type': [ 'error', { 'allowExpressions': true } ], + '@typescript-eslint/explicit-member-accessibility': 'error', + '@typescript-eslint/member-delimiter-style': 'error', + '@typescript-eslint/consistent-type-assertions': [ 'error', { 'assertionStyle': 'as' } ], + '@typescript-eslint/no-array-constructor': 'error', + '@typescript-eslint/no-namespace': 'error', + '@typescript-eslint/member-ordering': [ + 'error', + { + 'default': [ + // Index signature + 'signature', + 'call-signature', + + // Fields + 'public-static-field', + 'protected-static-field', + 'private-static-field', + + 'public-instance-field', + 'protected-instance-field', + 'private-instance-field', + + 'public-abstract-field', + 'protected-abstract-field', + + 'public-field', + 'protected-field', + 'private-field', + + 'static-field', + 'instance-field', + 'abstract-field', + + 'field', + + // Constructors + 'public-constructor', + 'protected-constructor', + 'private-constructor', + + 'constructor', + + // Methods + [ 'public-static-method', 'public-static-get', 'public-static-set' ], + [ 'protected-static-method', 'protected-static-get', 'protected-static-set' ], + [ 'private-static-method', 'private-static-get', 'private-static-set' ], + + [ 'public-instance-method', 'public-instance-get', 'public-instance-set' ], + [ 'protected-instance-method', 'protected-instance-get', 'protected-instance-set' ], + [ 'private-instance-method', 'private-instance-get', 'private-instance-set' ], + + [ 'public-abstract-method', 'public-abstract-get', 'public-abstract-set' ], + [ 'protected-abstract-method', 'protected-abstract-get', 'protected-abstract-set' ], + + 'public-method', + 'protected-method', + 'private-method', + + [ 'static-method', 'static-get', 'static-set' ], + [ 'instance-method', 'instance-get', 'instance-set' ], + [ 'abstract-method', 'abstract-get', 'abstract-set' ], + + 'method', + ], + }, + ], + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/parameter-properties': [ 'error', { 'allow': [ 'private' ] } ], + '@typescript-eslint/triple-slash-reference': [ 'error', { 'path': 'never', 'types': 'never', 'lib': 'never' } ], + '@typescript-eslint/type-annotation-spacing': [ + 'error', + { + 'before': false, + 'after': true, + 'overrides': { + 'arrow': { 'before': true, 'after': true }, }, - ], - }, + }, + ], + '@typescript-eslint/no-empty-interface': 'error', + + // Turn off the core no-use-before-define to avoid double reporting errors. + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': [ + 'error', + { + 'functions': false, + 'typedefs': false, + }, + ], }, - { - 'files': [ '*.d.ts' ], + }, + // prevents rule being triggered with TypeScript JS checking is enabled + { + files: [ '**/*.js', '**/*.cjs' ], + rules: { + '@typescript-eslint/no-var-requires': 'off', + }, + }, + { + 'files': [ '*.d.ts' ], - 'rules': { - 'no-unused-vars': 'off', - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/no-empty-interface': 'off', - }, + 'rules': { + 'no-unused-vars': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-empty-interface': 'off', }, - { - files: [ '**/*.vue' ], - parser: 'vue-eslint-parser', + }, + { + files: [ '**/*.vue' ], + + languageOptions: { + parser: vueESLintParser, parserOptions: { - parser: '@typescript-eslint/parser', + parser: typescriptESLintParser, ecmaVersion: 2020, sourceType: 'module', }, - env: { + globals: { 'vue/setup-compiler-macros': true, - browser: true, + ...globals.browser, }, - rules: getVueRules(3), }, - ], -}; + rules: getVueRules(3), + }, +]; diff --git a/node-tests.js b/node-tests.js index 8cb5afb..654f61f 100644 --- a/node-tests.js +++ b/node-tests.js @@ -5,15 +5,19 @@ 'use strict'; -module.exports = { +const config = require('./index'), + globals = require('globals'); - 'env': { - 'mocha': true, +module.exports = [ + ...config, + { + languageOptions: { + globals: { + ...globals.mocha, + }, + }, + rules: { + 'no-empty-function': 'off', + }, }, - - 'extends': './node.js', - - 'rules': { - 'no-empty-function': 'off', - }, -}; +]; diff --git a/node.js b/node.js index f78c4cb..5d2a2ec 100644 --- a/node.js +++ b/node.js @@ -5,12 +5,16 @@ 'use strict'; -module.exports = { +const config = require('./index'), + globals = require('globals'); - 'env': { - 'node': true, +module.exports = [ + ...config, + { + languageOptions: { + globals: { + ...globals.node, + }, + }, }, - - 'extends': './index.js', - -}; +]; diff --git a/package.json b/package.json index 27cb828..1b17b3b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "test": "npm run eslint", "release": "standard-version", "commitlint": "commitlint --from ee3b407", - "eslint": "eslint './**/*.{js,cjs,ts}'", + "eslint": "eslint .", "markdownlint": "markdownlint -c .markdownlint.json -i CHANGELOG.md '{,!(node_modules)/**/}*.md'", "standards": "npm run commitlint && npm run markdownlint && npm run eslint", "release:preview": "node ./node_modules/@silvermine/standardization/scripts/release.js preview", diff --git a/vue2.js b/vue2.js index bc20c3b..ac9a434 100644 --- a/vue2.js +++ b/vue2.js @@ -5,23 +5,20 @@ const baseConfig = require('./index'), // Get all the base overrides, except for the chunk related to Vue (3). We'll replace the // Vue 3 rules with Vue 2 rules. -const overrides = baseConfig.overrides.map((override) => { - if (override.parser !== 'vue-eslint-parser') { - return override; +const overrides = baseConfig.map((configObject) => { + if (configObject.files && configObject.files !== [ '**/*.vue' ]) { + return configObject; } return Object.assign( {}, - override, { + ...configObject, rules: getVueRules(2), } ); }); -module.exports = Object.assign( - {}, - baseConfig, - { - overrides: overrides, - } -); +module.exports = [ + ...baseConfig, + ...overrides, +]; From d6fbf3ff1f1c12a1cb0030bb144e87a204c07a50 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Thu, 20 Jun 2024 17:01:31 -0400 Subject: [PATCH 03/11] chore: upgrade globals to v15.6.0 --- package-lock.json | 65 +++++++++++++++++++++++++++++++++++++---------- package.json | 1 + 2 files changed, 53 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ef261c..1c9e90a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@stylistic/eslint-plugin": "2.1.0", "@typescript-eslint/parser": "7.13.0", "eslint-plugin-vue": "8.7.1", + "globals": "15.6.0", "typescript": "4.6.3", "typescript-eslint": "7.12.0" }, @@ -1676,6 +1677,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5323,6 +5338,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -6560,14 +6589,11 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.6.0.tgz", + "integrity": "sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12170,6 +12196,14 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -14860,6 +14894,14 @@ "path-exists": "^4.0.0" } }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -15849,12 +15891,9 @@ } }, "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "requires": { - "type-fest": "^0.20.2" - } + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.6.0.tgz", + "integrity": "sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==" }, "globby": { "version": "11.1.0", diff --git a/package.json b/package.json index 1b17b3b..8e028c5 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@stylistic/eslint-plugin": "2.1.0", "@typescript-eslint/parser": "7.13.0", "eslint-plugin-vue": "8.7.1", + "globals": "15.6.0", "typescript": "4.6.3", "typescript-eslint": "7.12.0" }, From 4358c958d19b8be673b49d36fc8e720e1e9dfbbd Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Thu, 4 Jul 2024 09:23:54 -0400 Subject: [PATCH 04/11] chore: downgrade typescript-eslint/parser to compat version --- package-lock.json | 234 +++++++++++++++++++++++++++++++++++----------- package.json | 2 +- vue2.js | 5 +- 3 files changed, 182 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1c9e90a..6ca4662 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@eslint/js": "8.57.0", "@silvermine/eslint-plugin-silvermine": "2.4.0", "@stylistic/eslint-plugin": "2.1.0", - "@typescript-eslint/parser": "7.13.0", + "@typescript-eslint/parser": "7.12.0", "eslint-plugin-vue": "8.7.1", "globals": "15.6.0", "typescript": "4.6.3", @@ -2331,14 +2331,14 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.0.tgz", - "integrity": "sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", "dependencies": { - "@typescript-eslint/scope-manager": "7.13.0", - "@typescript-eslint/types": "7.13.0", - "@typescript-eslint/typescript-estree": "7.13.0", - "@typescript-eslint/visitor-keys": "7.13.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "debug": "^4.3.4" }, "engines": { @@ -2357,6 +2357,110 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "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" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.13.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz", @@ -10320,33 +10424,6 @@ } } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", - "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", - "dependencies": { - "@typescript-eslint/scope-manager": "7.12.0", - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/typescript-estree": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { "version": "7.12.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", @@ -12687,15 +12764,76 @@ "dev": true }, "@typescript-eslint/parser": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.0.tgz", - "integrity": "sha512-EjMfl69KOS9awXXe83iRN7oIEXy9yYdqWfqdrFAYAAr6syP8eLEFI7ZE4939antx2mNgPRW/o1ybm2SFYkbTVA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", "requires": { - "@typescript-eslint/scope-manager": "7.13.0", - "@typescript-eslint/types": "7.13.0", - "@typescript-eslint/typescript-estree": "7.13.0", - "@typescript-eslint/visitor-keys": "7.13.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "requires": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" + } + }, + "@typescript-eslint/types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==" + }, + "@typescript-eslint/typescript-estree": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "requires": { + "@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" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "requires": { + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + } } }, "@typescript-eslint/scope-manager": { @@ -18665,18 +18803,6 @@ "ts-api-utils": "^1.3.0" } }, - "@typescript-eslint/parser": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", - "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", - "requires": { - "@typescript-eslint/scope-manager": "7.12.0", - "@typescript-eslint/types": "7.12.0", - "@typescript-eslint/typescript-estree": "7.12.0", - "@typescript-eslint/visitor-keys": "7.12.0", - "debug": "^4.3.4" - } - }, "@typescript-eslint/scope-manager": { "version": "7.12.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", diff --git a/package.json b/package.json index 8e028c5..2e462a2 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@eslint/js": "8.57.0", "@silvermine/eslint-plugin-silvermine": "2.4.0", "@stylistic/eslint-plugin": "2.1.0", - "@typescript-eslint/parser": "7.13.0", + "@typescript-eslint/parser": "7.12.0", "eslint-plugin-vue": "8.7.1", "globals": "15.6.0", "typescript": "4.6.3", diff --git a/vue2.js b/vue2.js index ac9a434..2aa45cd 100644 --- a/vue2.js +++ b/vue2.js @@ -18,7 +18,4 @@ const overrides = baseConfig.map((configObject) => { ); }); -module.exports = [ - ...baseConfig, - ...overrides, -]; +module.exports = overrides; From 98413ba9b85e188dfca15c45a4fea04a9e2c15a3 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 13 Sep 2024 16:06:28 -0400 Subject: [PATCH 05/11] chore: upgrade eslint-plugin-vue --- package-lock.json | 279 +++++++++++++++++++--------------------------- package.json | 2 +- 2 files changed, 114 insertions(+), 167 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ca4662..0361079 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@silvermine/eslint-plugin-silvermine": "2.4.0", "@stylistic/eslint-plugin": "2.1.0", "@typescript-eslint/parser": "7.12.0", - "eslint-plugin-vue": "8.7.1", + "eslint-plugin-vue": "9.27.0", "globals": "15.6.0", "typescript": "4.6.3", "typescript-eslint": "7.12.0" @@ -2752,7 +2752,7 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -5276,43 +5276,44 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz", + "integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==", "dependencies": { - "eslint-utils": "^3.0.0", + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", "natural-compare": "^1.4.0", - "nth-check": "^2.0.1", - "postcss-selector-parser": "^6.0.9", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-vue/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -5320,29 +5321,19 @@ "node": ">=10" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "engines": { - "node": ">=10" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -5412,21 +5403,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -7598,6 +7574,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8329,9 +8306,9 @@ } }, "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dependencies": { "boolbase": "^1.0.0" }, @@ -8703,10 +8680,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10753,20 +10729,20 @@ } }, "node_modules/vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", "dependencies": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "lodash": "^4.17.21", - "semver": "^7.3.5" + "semver": "^7.3.6" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" @@ -10775,25 +10751,10 @@ "eslint": ">=6.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -10872,6 +10833,14 @@ "typedarray-to-buffer": "^3.1.5" } }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "engines": { + "node": ">=12" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -10890,7 +10859,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", @@ -13032,7 +13002,7 @@ "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "brace-expansion": { "version": "1.1.11", @@ -15014,15 +14984,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -15093,50 +15054,42 @@ } }, "eslint-plugin-vue": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "version": "9.27.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz", + "integrity": "sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==", "requires": { - "eslint-utils": "^3.0.0", + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", "natural-compare": "^1.4.0", - "nth-check": "^2.0.1", - "postcss-selector-parser": "^6.0.9", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" }, "dependencies": { - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "type-fest": "^0.20.2" } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" } } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - } + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, "eslint-visitor-keys": { @@ -16708,6 +16661,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -17252,9 +17206,9 @@ } }, "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "requires": { "boolbase": "^1.0.0" } @@ -17540,10 +17494,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -19026,35 +18979,23 @@ } }, "vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", "requires": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "lodash": "^4.17.21", - "semver": "^7.3.5" + "semver": "^7.3.6" }, "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" } } }, @@ -19119,6 +19060,11 @@ "typedarray-to-buffer": "^3.1.5" } }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -19134,7 +19080,8 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index 2e462a2..6b2bab6 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@silvermine/eslint-plugin-silvermine": "2.4.0", "@stylistic/eslint-plugin": "2.1.0", "@typescript-eslint/parser": "7.12.0", - "eslint-plugin-vue": "8.7.1", + "eslint-plugin-vue": "9.27.0", "globals": "15.6.0", "typescript": "4.6.3", "typescript-eslint": "7.12.0" From 5fa4709bb2587bd7361355137d4a88c3634a985f Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 13 Sep 2024 16:08:31 -0400 Subject: [PATCH 06/11] feat: adjust how configurations are exposed for flexibility Now that ESLint favors a flat config, which is essentially just an array of JS objects, consumers will be able to import just the parts of a config that they need. For convenience, exposing complete and discrete configs makes it easier to simply adopt a config when no customization is needed, or import just the parts that are neccessary when a good deal of additional configuration will be done by the consuming project. --- README.md | 42 ++++++++++++++++++++++++++++++++++++- eslint.config.js | 6 ++---- index.js | 17 +++++++-------- node-tests.js | 27 ++++++++++++++---------- node.js | 21 ++++++++++++------- partials/vue.js | 54 +++++++++++++++++++++++++----------------------- vue2.js | 7 ++++++- 7 files changed, 113 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 67cafb3..5c601ef 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Example: ## Migration to ESLint flag config ESLint version 8.57 and later enable support for ESLint's flat config. As opposed -to use a customized configuration engine, this enables users to configure ESLint +to using a customized configuration engine, this enables users to configure ESLint using JS objects and results in more flexibility and control over configuration. Add a file named `eslint.config.js` to the root of your project and import our @@ -46,6 +46,46 @@ configuration like so: // TODO: add example config ``` +## Using Specific Configurations + +We maintain specific configurations for various project scenarios, such as +Node.js, Mocha.js test suites, Vue3, and Vue2. + +These configs export two JS objects: + + * `complete`: A configuration that includes our base config, and overrides or + additions relevant to your project scenario. + * `discrete`: Just the overrides or additions relevant to your + project scenario. + +Use these configurations in your project's `eslint.config.js` file: + +```js +const { discrete } = require('@silvermine/eslint-config/node-tests'); + +module.exports = [ + { + files: [ 'tests/**.ts' ], + ...discrete + } +] +``` + +```js +const { complete } = require('@silvermine/eslint-config/node-tests'); + +module.exports = [ + ...complete +] +``` + +If you need to use multiple discrete configs or override the import variable +name, use object destructuring like so: + +```js +const { complete: nodeTests } = require('@silvermine/eslint-config/node-tests'); +``` + ### VS Code Support For VS Code users, switch to the prerelease version of the VS Code ESLint extension, diff --git a/eslint.config.js b/eslint.config.js index 2c1bc2b..5a53070 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,7 +1,5 @@ 'use strict'; -const config = require('./node'); +const { complete } = require('./node'); -module.exports = [ - ...config, -]; +module.exports = complete; diff --git a/index.js b/index.js index 0e97a90..5bd05a5 100644 --- a/index.js +++ b/index.js @@ -16,23 +16,22 @@ const getVueRules = require('./partials/vue').getVueRules, esLintPluginSilvermine = require('@silvermine/eslint-plugin-silvermine'), typescriptESLint = require('typescript-eslint'), typescriptESLintParser = require('@typescript-eslint/parser'), - vue = require('eslint-plugin-vue'), - vueESLintParser = require('vue-eslint-parser'); + eslintPluginVue = require('eslint-plugin-vue'); module.exports = [ esLint.configs.recommended, { - 'ignorePatterns': [ + 'ignores': [ 'cdk.out', - // ESLint by default ignores directories with dot prefixes. Some of our projects use - // VuePress which maintains its source code in a `.vuepress` directory. This negated - // ignore pattern enables linting for any projects using our config. + // ESLint by default ignores directories with dot prefixes. Some of our + // projects use VuePress which maintains its source code in a + // `.vuepress` directory. This negated ignore pattern enables linting + // for any projects using our config. '!.vuepress', ], 'plugins': { '@silvermine/eslint-plugin-silvermine': esLintPluginSilvermine, // Our custom rules - 'vue': vue, // Vue-specific rules }, 'languageOptions': { @@ -493,14 +492,12 @@ module.exports = [ '@typescript-eslint/no-empty-interface': 'off', }, }, + ...eslintPluginVue.configs['flat/recommended'], { files: [ '**/*.vue' ], - languageOptions: { - parser: vueESLintParser, parserOptions: { parser: typescriptESLintParser, - ecmaVersion: 2020, sourceType: 'module', }, globals: { diff --git a/node-tests.js b/node-tests.js index 654f61f..af88955 100644 --- a/node-tests.js +++ b/node-tests.js @@ -8,16 +8,21 @@ const config = require('./index'), globals = require('globals'); -module.exports = [ - ...config, - { - languageOptions: { - globals: { - ...globals.mocha, - }, - }, - rules: { - 'no-empty-function': 'off', +const testConfig = { + languageOptions: { + globals: { + ...globals.mocha, }, }, -]; + rules: { + 'no-empty-function': 'off', + }, +}; + +module.exports = { + complete: [ + ...config, + testConfig, + ], + discrete: testConfig, +}; diff --git a/node.js b/node.js index 5d2a2ec..d8d51af 100644 --- a/node.js +++ b/node.js @@ -8,13 +8,18 @@ const config = require('./index'), globals = require('globals'); -module.exports = [ - ...config, - { - languageOptions: { - globals: { - ...globals.node, - }, +const nodeConfig = { + languageOptions: { + globals: { + ...globals.node, }, }, -]; +}; + +module.exports = { + complete: [ + ...config, + nodeConfig, + ], + discrete: nodeConfig, +}; diff --git a/partials/vue.js b/partials/vue.js index 50e78dc..2098572 100644 --- a/partials/vue.js +++ b/partials/vue.js @@ -1,12 +1,6 @@ 'use strict'; -const vueRulesBase = require('eslint-plugin-vue/lib/configs/base').rules, - vueRulesEssentials = require('eslint-plugin-vue/lib/configs/essential').rules, - vue3RulesEssentials = require('eslint-plugin-vue/lib/configs/vue3-essential').rules, - vueRulesStronglyRecommended = require('eslint-plugin-vue/lib/configs/strongly-recommended').rules, - vue3RulesStronglyRecommended = require('eslint-plugin-vue/lib/configs/vue3-strongly-recommended').rules, - vueRulesRecommended = require('eslint-plugin-vue/lib/configs/recommended').rules, - vue3RulesRecommended = require('eslint-plugin-vue/lib/configs/vue3-recommended').rules; +const pluginVue = require('eslint-plugin-vue'); const silvermineRulesUniversal = { // Priority B: Strongly Recommended @@ -181,28 +175,39 @@ const silvermineRulesVue3Only = { module.exports = { getVueRules: function(vueVersion) { - // Always start with the base rules - let ruleSets = [ {}, vueRulesBase ]; + const extractRulesFromConfig = (config) => { + return config + .filter((prop) => { + return prop.rules; + }) + .map((obj) => { + return obj.rules; + }) + .flat() + .reduce((prev, next) => { + return { ...prev, ...next }; + }, {}); + }; - // Add in version dependent rules + let rules = {}; + + // Combine version dependent rules switch (vueVersion) { case 2: { - ruleSets = ruleSets.concat([ - vueRulesEssentials, - vueRulesStronglyRecommended, - vueRulesRecommended, - silvermineRulesVue2Only, - ]); + rules = { + ...extractRulesFromConfig(pluginVue.configs['flat/vue2-strongly-recommended']), + ...silvermineRulesUniversal, + ...silvermineRulesVue2Only, + }; break; } case 3: { - ruleSets = ruleSets.concat([ - vue3RulesEssentials, - vue3RulesStronglyRecommended, - vue3RulesRecommended, - silvermineRulesVue3Only, - ]); + rules = { + ...extractRulesFromConfig(pluginVue.configs['flat/strongly-recommended']), + ...silvermineRulesUniversal, + ...silvermineRulesVue3Only, + }; break; } @@ -212,9 +217,6 @@ module.exports = { } // Lastly, always add our custom rules. - ruleSets.push(silvermineRulesUniversal); - - // Assemble into an object ready to be passed to eslint. - return Object.assign.apply(Object, ruleSets); + return rules; }, }; diff --git a/vue2.js b/vue2.js index 2aa45cd..ef5ed07 100644 --- a/vue2.js +++ b/vue2.js @@ -18,4 +18,9 @@ const overrides = baseConfig.map((configObject) => { ); }); -module.exports = overrides; +module.exports = { + complete: overrides, + discrete: { + rules: getVueRules(2), + }, +}; From f928d629d0636a71875f78ddc90382b29d9400d6 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 20 Sep 2024 08:29:46 -0400 Subject: [PATCH 07/11] docs: add example basic eslint config --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c601ef..9623e00 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,11 @@ Add a file named `eslint.config.js` to the root of your project and import our configuration like so: ```js -// TODO: add example config +const silvermineNodeConfig = require('@silvermine/eslint-config/node'); + +module.exports = [ + ...silvermineNodeConfig.complete, +]; ``` ## Using Specific Configurations From a0e3d8080eee700b4a49416e4c12807548330384 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 27 Sep 2024 09:29:06 -0400 Subject: [PATCH 08/11] docs: remove reference to commitlint and editorconfig These configurations are now maintained in @silvermine/standardization. --- README.md | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/README.md b/README.md index 9623e00..acf87a2 100644 --- a/README.md +++ b/README.md @@ -101,29 +101,6 @@ version 3.0.5 or later. Then in `.vscode/setting.json` enable the `useFlatConfig } ``` -## Other Configuration Files Available - -In addition to the ESLint rules, this package provides configuration for the following: - - * [EditorConfig](https://editorconfig.org/) - * Provides a default set of editor configuration values to use in Silvermine projects - * Usage: Symlink the .editorconfig file to the root of your project and use the - appropriate extension for your editor. - * `ln -s ./node_modules/@silvermine/eslint-config/.editorconfig` - * [commitlint](https://conventional-changelog.github.io/commitlint/) - * Provides linting for commit messages of Silvermine projects - * Usage: Add a `commitlint.config.js` file to the root of the project with the - following and then set up commitlint in the project: - - ```javascript - 'use strict'; - - module.exports = { - extends: [ '@silvermine/eslint-config/commitlint' ], - }; - ``` - - ## Notes on Semantic Versioning See the [notes we made in eslint-plugin-silvermine][semver-notes] regarding our use of From 439bc7e2a7d496dcc8af7fee87fafe9b3354f76c Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 27 Sep 2024 10:04:11 -0400 Subject: [PATCH 09/11] refactor: switch to using config partials --- README.md | 87 ++++-- browser.js | 21 -- eslint.config.js | 10 +- index.js | 498 ++--------------------------------- node.js | 25 -- partials/base.js | 232 ++++++++++++++++ partials/browser.js | 17 ++ partials/javascript.js | 5 + partials/node-tests.js | 19 ++ partials/node.js | 9 + partials/type-definitions.js | 7 + partials/typescript.js | 217 +++++++++++++++ partials/vue.js | 225 +--------------- partials/vue/vue-3.js | 4 + partials/vue/vue-base.js | 97 +++++++ vue2.js | 26 -- 16 files changed, 709 insertions(+), 790 deletions(-) delete mode 100644 browser.js delete mode 100644 node.js create mode 100644 partials/base.js create mode 100644 partials/browser.js create mode 100644 partials/javascript.js create mode 100644 partials/node-tests.js create mode 100644 partials/node.js create mode 100644 partials/type-definitions.js create mode 100644 partials/typescript.js create mode 100644 partials/vue/vue-3.js create mode 100644 partials/vue/vue-base.js delete mode 100644 vue2.js diff --git a/README.md b/README.md index acf87a2..c784ad5 100644 --- a/README.md +++ b/README.md @@ -50,50 +50,94 @@ module.exports = [ ]; ``` -## Using Specific Configurations +## Using Configuration Partials We maintain specific configurations for various project scenarios, such as Node.js, Mocha.js test suites, Vue3, and Vue2. -These configs export two JS objects: +When using `eslint-config-silvermine` you have the option of using the default +configuration. For example, below is how you would configure a Node.js project +with TypeScript: - * `complete`: A configuration that includes our base config, and overrides or - additions relevant to your project scenario. - * `discrete`: Just the overrides or additions relevant to your - project scenario. +```js +const config = require('@silvermine/eslint-config'), + node = require('@silvermine/eslint-config/partials/node'); + +module.exports = [ + ...config, + { + files: [ '**/*.ts' ], + ...node + } +]; +``` -Use these configurations in your project's `eslint.config.js` file: +Below is how you would configure a browser library that uses only vanilla JS: ```js -const { discrete } = require('@silvermine/eslint-config/node-tests'); +const config = require('@silvermine/eslint-config'), + browser = require('@silvermine/eslint-config/partials/browser'); module.exports = [ + ...config, { - files: [ 'tests/**.ts' ], - ...discrete + files: [ '**/*.js' ], + ...browser } -] +]; ``` +When you need to override different parts of the config given specific project +requirements, you can pull in configuration objects from the `partials` +project directory: + + ```js -const { complete } = require('@silvermine/eslint-config/node-tests'); +const config = require('@silvermine/eslint-config'), + node = require('@silvermine/eslint-config/partials/node'), + nodeTests = require('@silvermine/eslint-config/partials/node-tests'); module.exports = [ - ...complete + ...config, + { + files: [ 'tests/**.ts' ], + ...nodeTests + } ] ``` -If you need to use multiple discrete configs or override the import variable -name, use object destructuring like so: +### Vue Support + +Our default configuration supports Vue 3 by default. + +For legacy Vue.js 2.x projects, a Vue 2-specific configuration is available. +In this situation your project would be configured like so: ```js -const { complete: nodeTests } = require('@silvermine/eslint-config/node-tests'); +const config = require('@silvermine/eslint-config'), + eslintPluginVue = require('eslint-plugin-vue'), + vueConfig = require('@silvermine/eslint-config/partials/vue'), + vueBaseRules = require('@silvermine/eslint-config/partials/vue/vue-base'); + +module.exports = [ + ...config, + ....eslintPluginVue.configs['flat/vue2-strongly-recommended'], + { + files: [ 'src/**.vue' ], + ...vueConfig, + rules: vueBaseRules + } +] ``` ### VS Code Support -For VS Code users, switch to the prerelease version of the VS Code ESLint extension, -version 3.0.5 or later. Then in `.vscode/setting.json` enable the `useFlatConfig`option: +For VS Code users, your installed version of the ESLint extension must be 3.0.5 +or later. This version of the extension supports flat config, while earlier +versions only provide partial support. + +You _may_ need to adjust the project's local `.vscode/setting.json` and enable +the `useFlatConfig`option: ```json { @@ -109,13 +153,14 @@ basically for the same reasons. [semver-notes]: https://github.com/silvermine/eslint-plugin-silvermine/#note-on-semantic-versioning - ## What version should I use? When choosing which version of this config to use, consider the following: - * v2.x.x is the newest branch of our config, which allows for ES2015+ features, as well - as TypeScript linting. On new projects, we recommend using this branch of the config. + * v4.x.x supports the latest ECMA Script features, and supports ESLint's + flat config configuration style _only_. On new projects, we recommend + using this branch of the config. + * v2.x.x allows for ES2015+ features, as well as TypeScript linting. * v1.x.x is the legacy version of our eslint config. This should primarily be used in legacy es5 projects and with node version < 8.10.0. It does not allow for many es2015+ features, such as spread/rest operators and arrow functions. diff --git a/browser.js b/browser.js deleted file mode 100644 index 3e0bff0..0000000 --- a/browser.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright (c) 2017 Jeremy Thomerson - * Licensed under the MIT license. - */ - -'use strict'; - -const config = require('./index'), - globals = require('globals'); - -module.exports = [ - ...config, - { - languageOptions: { - globals: { - ...globals.browser, - ...globals.commonjs, - }, - }, - }, -]; diff --git a/eslint.config.js b/eslint.config.js index 5a53070..dc96a4a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,5 +1,11 @@ 'use strict'; -const { complete } = require('./node'); +const config = require('./index'), + node = require('./partials/node'); -module.exports = complete; +module.exports = [ + ...config, + { + ...node, + }, +]; diff --git a/index.js b/index.js index 5bd05a5..336124b 100644 --- a/index.js +++ b/index.js @@ -9,502 +9,40 @@ 'use strict'; - -const getVueRules = require('./partials/vue').getVueRules, +const base = require('./partials/base'), + javascript = require('./partials/javascript'), + typescript = require('./partials/typescript'), + vueConfig = require('./partials/vue'), + vueBaseRules = require('./partials/vue/vue-base'), + vue3rules = require('./partials/vue/vue-3'), + typeDefintions = require('./partials/type-definitions'), esLint = require('@eslint/js'), - globals = require('globals'), - esLintPluginSilvermine = require('@silvermine/eslint-plugin-silvermine'), typescriptESLint = require('typescript-eslint'), - typescriptESLintParser = require('@typescript-eslint/parser'), eslintPluginVue = require('eslint-plugin-vue'); module.exports = [ esLint.configs.recommended, - { - 'ignores': [ - 'cdk.out', - // ESLint by default ignores directories with dot prefixes. Some of our - // projects use VuePress which maintains its source code in a - // `.vuepress` directory. This negated ignore pattern enables linting - // for any projects using our config. - '!.vuepress', - ], - - 'plugins': { - '@silvermine/eslint-plugin-silvermine': esLintPluginSilvermine, // Our custom rules - }, - - 'languageOptions': { - 'ecmaVersion': 'latest', - }, - - 'rules': { - '@silvermine/eslint-plugin-silvermine/array-indentation': 'error', - '@silvermine/eslint-plugin-silvermine/call-indentation': 'error', - '@silvermine/eslint-plugin-silvermine/fluent-chaining': 'error', - '@silvermine/eslint-plugin-silvermine/no-multiple-inline-functions': 'error', - '@silvermine/eslint-plugin-silvermine/no-multiline-conditionals': 'error', - '@silvermine/eslint-plugin-silvermine/no-multiline-var-declarations': [ 'error', { 'const': 'single-only' } ], - '@silvermine/eslint-plugin-silvermine/empty-object-spacing': 'error', - '@silvermine/eslint-plugin-silvermine/empty-array-spacing': 'error', - '@silvermine/eslint-plugin-silvermine/uninitialized-last': 'error', - '@silvermine/eslint-plugin-silvermine/block-scope-case': 'error', - '@silvermine/eslint-plugin-silvermine/brace-style': [ - 'error', '1tbs', { 'allowSingleLine': false, 'allowSingleLineArrow': true }, - ], - '@silvermine/eslint-plugin-silvermine/max-statements-per-line': 'error', - - 'indent': [ 'error', 3, { 'VariableDeclarator': 'first', 'SwitchCase': 1 } ], - 'comma-dangle': [ - 'error', - { - 'arrays': 'always-multiline', - 'objects': 'always-multiline', - 'imports': 'always-multiline', - 'exports': 'always-multiline', - 'functions': 'never', - }, - ], - 'no-unsafe-finally': 'warn', - - 'array-callback-return': 'error', - 'block-scoped-var': 'error', - 'complexity': 'error', - 'curly': 'error', - 'default-case': 'error', - 'default-param-last': 'error', - 'dot-location': [ 'error', 'property' ], - 'dot-notation': [ - 'error', - { 'allowPattern': '^[a-z]+(_[a-z]+)+$' }, // Allow obj['snake_case'] - ], - 'eqeqeq': 'error', - 'grouped-accessor-pairs': [ 'error', 'getBeforeSet' ], - 'guard-for-in': 'error', - 'no-alert': 'error', - 'no-caller': 'error', - 'no-case-declarations': 'error', - 'no-console': 'error', - 'no-constructor-return': 'error', - 'no-else-return': 'error', - 'no-empty-function': 'error', - 'no-empty-pattern': 'error', - 'no-eq-null': 'error', - 'no-eval': 'error', - 'no-extend-native': 'error', - 'no-extra-bind': 'error', - 'no-extra-label': 'error', - 'no-fallthrough': 'error', - 'no-floating-decimal': 'error', - 'no-implicit-coercion': [ 'error', { 'allow': [ '!!' ] } ], - 'no-implicit-globals': [ 'error', { 'lexicalBindings': true } ], - 'no-implied-eval': 'error', - 'no-iterator': 'error', - 'no-labels': 'error', - 'no-lone-blocks': 'error', - 'no-loop-func': 'error', - 'no-multi-spaces': 'error', - 'no-multi-str': 'error', - 'no-new': 'error', - 'no-new-func': 'error', - 'no-new-wrappers': 'error', - 'no-octal': 'error', - 'no-octal-escape': 'error', - 'no-proto': 'error', - 'no-redeclare': 'error', - 'no-return-assign': 'error', - 'no-script-url': 'error', - 'no-self-assign': 'error', - 'no-self-compare': 'error', - 'no-sequences': 'error', - 'no-throw-literal': 'error', - 'no-unmodified-loop-condition': 'error', - 'no-unused-expressions': 'error', - 'no-unused-labels': 'error', - 'no-useless-call': 'error', - 'no-useless-concat': 'error', - 'no-useless-escape': 'error', - 'no-void': 'error', - 'no-with': 'error', - 'radix': 'error', - 'vars-on-top': 'error', - 'wrap-iife': 'error', - 'yoda': 'error', - - // because we are still on commonjs module - 'strict': 'off', - - 'no-shadow': 'error', - 'no-delete-var': 'error', - 'no-label-var': 'error', - 'no-restricted-globals': [ 'error', 'event' ], - 'no-shadow-restricted-names': 'error', - 'no-undef': 'error', - 'no-undef-init': 'error', - 'no-unused-vars': 'error', - 'no-use-before-define': [ 'error', { 'functions': false } ], - - 'callback-return': [ 'error', [ 'callback', 'cb', 'next', 'done' ] ], - 'global-require': 'error', - 'handle-callback-err': 'error', - 'no-new-require': 'error', - 'no-path-concat': 'error', - 'no-process-env': 'error', - 'no-process-exit': 'error', - 'no-sync': 'error', - - 'array-bracket-spacing': [ 'error', 'always' ], - 'block-spacing': 'error', - 'camelcase': 'error', - 'comma-spacing': 'error', - 'comma-style': 'error', - 'computed-property-spacing': 'error', - 'consistent-this': [ 'error', 'self' ], - 'eol-last': 'error', - 'key-spacing': 'error', - 'keyword-spacing': [ - 'error', - { - 'overrides': { - 'catch': { 'after': false }, - }, - }, - ], - 'linebreak-style': [ 'error', 'unix' ], - 'lines-around-comment': 'error', - 'spaced-comment': [ 'error', 'always' ], - 'max-depth': [ 'error', 4 ], - 'max-len': [ - 'error', - { - 'code': 140, - 'comments': 90, - 'ignoreUrls': true, - // function declaration lines - 'ignorePattern': '^\\s*((async|export|default|async|public|private|protected|function) )+.*\\{', - }, - ], - 'max-nested-callbacks': [ 'error', 6 ], - 'max-params': [ 'error', 5 ], - 'new-cap': [ - 'error', - { 'capIsNewExceptions': [ 'Q' ] }, - ], - 'new-parens': 'error', - 'padding-line-between-statements': [ - 'error', - { blankLine: 'always', prev: [ 'var', 'let', 'const' ], next: '*' }, - ], - 'prefer-regex-literals': 'error', - 'no-array-constructor': 'error', - 'no-bitwise': 'error', - 'no-import-assign': 'error', - 'no-dupe-else-if': 'error', - 'no-lonely-if': 'error', - 'no-multiple-empty-lines': [ - 'error', - { - 'max': 2, - 'maxBOF': 0, - 'maxEOF': 0, - }, - ], - 'no-negated-condition': 'error', - 'no-nested-ternary': 'error', - 'no-new-object': 'error', - 'no-plusplus': [ - 'error', - { 'allowForLoopAfterthoughts': true }, - ], - 'no-restricted-syntax': [ - 'error', - 'DoWhileStatement', - 'DebuggerStatement', - 'EmptyStatement', - 'ForInStatement', - 'WithStatement', - 'YieldExpression', - ], - 'no-setter-return': 'error', - 'func-call-spacing': 'error', - 'no-trailing-spaces': 'error', - 'no-unneeded-ternary': 'error', - 'no-whitespace-before-property': 'error', - 'object-curly-spacing': [ 'error', 'always' ], - 'one-var': [ 'error', { 'var': 'always', 'let': 'consecutive' } ], - 'one-var-declaration-per-line': 'error', - 'quotes': [ 'error', 'single' ], - 'semi': [ 'error', 'always' ], - 'semi-spacing': 'error', - 'space-before-blocks': 'error', - 'space-before-function-paren': [ - 'error', - { - 'anonymous': 'never', - 'named': 'never', - 'asyncArrow': 'always', - }, - ], - 'space-in-parens': [ 'error', 'never' ], - 'space-infix-ops': 'error', - 'space-unary-ops': 'error', - 'unicode-bom': 'error', - - 'arrow-body-style': [ 'error', 'always' ], - 'arrow-spacing': [ 'error', { 'before': true, 'after': true } ], - 'arrow-parens': 'error', - - 'template-curly-spacing': [ 'error', 'never' ], - 'object-property-newline': [ 'error', { 'allowAllPropertiesOnSameLine': true } ], - - }, - }, + base, ...typescriptESLint.configs.recommended, { - 'files': [ '**/*.ts' ], - languageOptions: { - 'parser': typescriptESLintParser, - 'parserOptions': { - 'sourceType': 'module', - // Disable warning banner for possibly incompatible versions of TypeScript - 'loggerFn': false, - }, - }, - 'rules': { - // The standard ESLint `no-dupe-class-members` rule will report false - // positives for overloaded TypeScript class methods. This rule is safe to - // disable because actual duplicate class members will be caught by the - // TypeScript compiler. - 'no-dupe-class-members': 'off', - // TODO: figure out how to fix no-undef. - // Currently, no-undef causes false positives for TypeScript class properties. - // With TypeScript-only code this rule can safely be disabled because - // TypeScript won't compile if the definition is missing. However, if we use - // any JavaScript in the project we need to have it enabled. - 'no-undef': 'off', - // The standard ESLint `no-unused-vars' rule will throw false positives with - // class properties in TypeScript. The TypeScript-specific rule fixes this. - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': 'error', - // For TypeScript code, `const`/`let` should be used exclusively - 'no-var': 'error', - // new-cap throws errors with property decorators - 'new-cap': 'off', - - // TypeScript will be parsed in strict mode and output the `use-strict` - // directive for the transpiled JavaScript automatically. - 'strict': [ 'error', 'never' ], - - 'no-empty-function': [ 'error', { 'allow': [ 'constructors' ] } ], - - '@typescript-eslint/adjacent-overload-signatures': 'error', - - // Disable ESLint's camelcase so we can override with our own - // naming convention rules. - 'camelcase': 'off', - - '@typescript-eslint/naming-convention': [ - 'error', - { - selector: 'classProperty', - modifiers: [ 'private' ], - format: [ 'camelCase' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'protected' ], - format: [ 'camelCase' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'private', 'static' ], - format: [ 'snake_case' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'private', 'readonly', 'static' ], - format: [ 'UPPER_CASE' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'protected', 'readonly', 'static' ], - format: [ 'UPPER_CASE' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'public', 'readonly', 'static' ], - format: [ 'UPPER_CASE' ], - }, - { - selector: 'classProperty', - modifiers: [ 'protected', 'static' ], - format: [ 'snake_case' ], - leadingUnderscore: 'require', - }, - { - selector: 'classProperty', - modifiers: [ 'public', 'static' ], - format: [ 'snake_case' ], - leadingUnderscore: 'forbid', - }, - { - selector: 'enum', - format: [ 'PascalCase' ], - }, - { - selector: 'typeLike', - format: [ 'PascalCase' ], - }, - { - selector: 'variable', - format: [ 'camelCase', 'PascalCase' ], - }, - { - selector: 'parameter', - format: [ 'camelCase', 'PascalCase' ], - leadingUnderscore: 'allow', - }, - { - selector: 'variable', - modifiers: [ 'global' ], - format: [ 'UPPER_CASE', 'camelCase', 'PascalCase' ], - }, - ], - // no-shadow is incompatible with TypeScript code. - // @typescript-eslint/no-shadow replaces it. - 'no-shadow': 'off', - '@typescript-eslint/no-shadow': 'error', - // no-redeclare is incompatible with TypeScript code. - // @typescript-eslint/no-redeclare replaces it. - 'no-redeclare': 'off', - '@typescript-eslint/no-redeclare': [ 'error' ], - '@typescript-eslint/explicit-function-return-type': [ 'error', { 'allowExpressions': true } ], - '@typescript-eslint/explicit-member-accessibility': 'error', - '@typescript-eslint/member-delimiter-style': 'error', - '@typescript-eslint/consistent-type-assertions': [ 'error', { 'assertionStyle': 'as' } ], - '@typescript-eslint/no-array-constructor': 'error', - '@typescript-eslint/no-namespace': 'error', - '@typescript-eslint/member-ordering': [ - 'error', - { - 'default': [ - // Index signature - 'signature', - 'call-signature', - - // Fields - 'public-static-field', - 'protected-static-field', - 'private-static-field', - - 'public-instance-field', - 'protected-instance-field', - 'private-instance-field', - - 'public-abstract-field', - 'protected-abstract-field', - - 'public-field', - 'protected-field', - 'private-field', - - 'static-field', - 'instance-field', - 'abstract-field', - - 'field', - - // Constructors - 'public-constructor', - 'protected-constructor', - 'private-constructor', - - 'constructor', - - // Methods - [ 'public-static-method', 'public-static-get', 'public-static-set' ], - [ 'protected-static-method', 'protected-static-get', 'protected-static-set' ], - [ 'private-static-method', 'private-static-get', 'private-static-set' ], - - [ 'public-instance-method', 'public-instance-get', 'public-instance-set' ], - [ 'protected-instance-method', 'protected-instance-get', 'protected-instance-set' ], - [ 'private-instance-method', 'private-instance-get', 'private-instance-set' ], - - [ 'public-abstract-method', 'public-abstract-get', 'public-abstract-set' ], - [ 'protected-abstract-method', 'protected-abstract-get', 'protected-abstract-set' ], - - 'public-method', - 'protected-method', - 'private-method', - - [ 'static-method', 'static-get', 'static-set' ], - [ 'instance-method', 'instance-get', 'instance-set' ], - [ 'abstract-method', 'abstract-get', 'abstract-set' ], - - 'method', - ], - }, - ], - '@typescript-eslint/no-non-null-assertion': 'error', - '@typescript-eslint/parameter-properties': [ 'error', { 'allow': [ 'private' ] } ], - '@typescript-eslint/triple-slash-reference': [ 'error', { 'path': 'never', 'types': 'never', 'lib': 'never' } ], - '@typescript-eslint/type-annotation-spacing': [ - 'error', - { - 'before': false, - 'after': true, - 'overrides': { - 'arrow': { 'before': true, 'after': true }, - }, - }, - ], - '@typescript-eslint/no-empty-interface': 'error', - - // Turn off the core no-use-before-define to avoid double reporting errors. - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': [ - 'error', - { - 'functions': false, - 'typedefs': false, - }, - ], - }, + files: [ '**/*.ts' ], + ...typescript, }, - // prevents rule being triggered with TypeScript JS checking is enabled { files: [ '**/*.js', '**/*.cjs' ], - rules: { - '@typescript-eslint/no-var-requires': 'off', - }, + ...javascript, }, { - 'files': [ '*.d.ts' ], - - 'rules': { - 'no-unused-vars': 'off', - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/no-empty-interface': 'off', - }, + files: [ '*.d.ts' ], + ...typeDefintions, }, - ...eslintPluginVue.configs['flat/recommended'], + ...eslintPluginVue.configs['flat/strongly-recommended'], { files: [ '**/*.vue' ], - languageOptions: { - parserOptions: { - parser: typescriptESLintParser, - sourceType: 'module', - }, - globals: { - 'vue/setup-compiler-macros': true, - ...globals.browser, - }, + ...vueConfig, + rules: { + ...vueBaseRules, + ...vue3rules, }, - rules: getVueRules(3), }, ]; diff --git a/node.js b/node.js deleted file mode 100644 index d8d51af..0000000 --- a/node.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2016 Jeremy Thomerson - * Licensed under the MIT license. - */ - -'use strict'; - -const config = require('./index'), - globals = require('globals'); - -const nodeConfig = { - languageOptions: { - globals: { - ...globals.node, - }, - }, -}; - -module.exports = { - complete: [ - ...config, - nodeConfig, - ], - discrete: nodeConfig, -}; diff --git a/partials/base.js b/partials/base.js new file mode 100644 index 0000000..12a6ad6 --- /dev/null +++ b/partials/base.js @@ -0,0 +1,232 @@ +const esLintPluginSilvermine = require('@silvermine/eslint-plugin-silvermine'); + +module.exports = { + ignores: [ + 'cdk.out', + // ESLint by default ignores directories with dot prefixes. Some of our + // projects use VuePress which maintains its source code in a + // `.vuepress` directory. This negated ignore pattern enables linting + // for any projects using our config. + '!.vuepress', + ], + + plugins: { + '@silvermine/eslint-plugin-silvermine': esLintPluginSilvermine, // Our custom rules + }, + + languageOptions: { + 'ecmaVersion': 'latest', + }, + + rules: { + '@silvermine/eslint-plugin-silvermine/array-indentation': 'error', + '@silvermine/eslint-plugin-silvermine/call-indentation': 'error', + '@silvermine/eslint-plugin-silvermine/fluent-chaining': 'error', + '@silvermine/eslint-plugin-silvermine/no-multiple-inline-functions': 'error', + '@silvermine/eslint-plugin-silvermine/no-multiline-conditionals': 'error', + '@silvermine/eslint-plugin-silvermine/no-multiline-var-declarations': [ 'error', { 'const': 'single-only' } ], + '@silvermine/eslint-plugin-silvermine/empty-object-spacing': 'error', + '@silvermine/eslint-plugin-silvermine/empty-array-spacing': 'error', + '@silvermine/eslint-plugin-silvermine/uninitialized-last': 'error', + '@silvermine/eslint-plugin-silvermine/block-scope-case': 'error', + '@silvermine/eslint-plugin-silvermine/brace-style': [ + 'error', '1tbs', { 'allowSingleLine': false, 'allowSingleLineArrow': true }, + ], + '@silvermine/eslint-plugin-silvermine/max-statements-per-line': 'error', + 'indent': [ 'error', 3, { 'VariableDeclarator': 'first', 'SwitchCase': 1 } ], + 'comma-dangle': [ + 'error', + { + 'arrays': 'always-multiline', + 'objects': 'always-multiline', + 'imports': 'always-multiline', + 'exports': 'always-multiline', + 'functions': 'never', + }, + ], + 'no-unsafe-finally': 'warn', + 'array-callback-return': 'error', + 'block-scoped-var': 'error', + 'complexity': 'error', + 'curly': 'error', + 'default-case': 'error', + 'default-param-last': 'error', + 'dot-location': [ 'error', 'property' ], + 'dot-notation': [ + 'error', + { 'allowPattern': '^[a-z]+(_[a-z]+)+$' }, // Allow obj['snake_case'] + ], + 'eqeqeq': 'error', + 'grouped-accessor-pairs': [ 'error', 'getBeforeSet' ], + 'guard-for-in': 'error', + 'no-alert': 'error', + 'no-caller': 'error', + 'no-case-declarations': 'error', + 'no-console': 'error', + 'no-constructor-return': 'error', + 'no-else-return': 'error', + 'no-empty-function': 'error', + 'no-empty-pattern': 'error', + 'no-eq-null': 'error', + 'no-eval': 'error', + 'no-extend-native': 'error', + 'no-extra-bind': 'error', + 'no-extra-label': 'error', + 'no-fallthrough': 'error', + 'no-floating-decimal': 'error', + 'no-implicit-coercion': [ 'error', { 'allow': [ '!!' ] } ], + 'no-implicit-globals': [ 'error', { 'lexicalBindings': true } ], + 'no-implied-eval': 'error', + 'no-iterator': 'error', + 'no-labels': 'error', + 'no-lone-blocks': 'error', + 'no-loop-func': 'error', + 'no-multi-spaces': 'error', + 'no-multi-str': 'error', + 'no-new': 'error', + 'no-new-func': 'error', + 'no-new-wrappers': 'error', + 'no-octal': 'error', + 'no-octal-escape': 'error', + 'no-proto': 'error', + 'no-redeclare': 'error', + 'no-return-assign': 'error', + 'no-script-url': 'error', + 'no-self-assign': 'error', + 'no-self-compare': 'error', + 'no-sequences': 'error', + 'no-throw-literal': 'error', + 'no-unmodified-loop-condition': 'error', + 'no-unused-expressions': 'error', + 'no-unused-labels': 'error', + 'no-useless-call': 'error', + 'no-useless-concat': 'error', + 'no-useless-escape': 'error', + 'no-void': 'error', + 'no-with': 'error', + 'radix': 'error', + 'vars-on-top': 'error', + 'wrap-iife': 'error', + 'yoda': 'error', + // because we are still on commonjs module + 'strict': 'off', + 'no-shadow': 'error', + 'no-delete-var': 'error', + 'no-label-var': 'error', + 'no-restricted-globals': [ 'error', 'event' ], + 'no-shadow-restricted-names': 'error', + 'no-undef': 'error', + 'no-undef-init': 'error', + 'no-unused-vars': 'error', + 'no-use-before-define': [ 'error', { 'functions': false } ], + 'callback-return': [ 'error', [ 'callback', 'cb', 'next', 'done' ] ], + 'global-require': 'error', + 'handle-callback-err': 'error', + 'no-new-require': 'error', + 'no-path-concat': 'error', + 'no-process-env': 'error', + 'no-process-exit': 'error', + 'no-sync': 'error', + 'array-bracket-spacing': [ 'error', 'always' ], + 'block-spacing': 'error', + 'camelcase': 'error', + 'comma-spacing': 'error', + 'comma-style': 'error', + 'computed-property-spacing': 'error', + 'consistent-this': [ 'error', 'self' ], + 'eol-last': 'error', + 'key-spacing': 'error', + 'keyword-spacing': [ + 'error', + { + 'overrides': { + 'catch': { 'after': false }, + }, + }, + ], + 'linebreak-style': [ 'error', 'unix' ], + 'lines-around-comment': 'error', + 'spaced-comment': [ 'error', 'always' ], + 'max-depth': [ 'error', 4 ], + 'max-len': [ + 'error', + { + 'code': 140, + 'comments': 90, + 'ignoreUrls': true, + // function declaration lines + 'ignorePattern': '^\\s*((async|export|default|async|public|private|protected|function) )+.*\\{', + }, + ], + 'max-nested-callbacks': [ 'error', 6 ], + 'max-params': [ 'error', 5 ], + 'new-cap': [ + 'error', + { 'capIsNewExceptions': [ 'Q' ] }, + ], + 'new-parens': 'error', + 'padding-line-between-statements': [ + 'error', + { blankLine: 'always', prev: [ 'var', 'let', 'const' ], next: '*' }, + ], + 'prefer-regex-literals': 'error', + 'no-array-constructor': 'error', + 'no-bitwise': 'error', + 'no-import-assign': 'error', + 'no-dupe-else-if': 'error', + 'no-lonely-if': 'error', + 'no-multiple-empty-lines': [ + 'error', + { + 'max': 2, + 'maxBOF': 0, + 'maxEOF': 0, + }, + ], + 'no-negated-condition': 'error', + 'no-nested-ternary': 'error', + 'no-new-object': 'error', + 'no-plusplus': [ + 'error', + { 'allowForLoopAfterthoughts': true }, + ], + 'no-restricted-syntax': [ + 'error', + 'DoWhileStatement', + 'DebuggerStatement', + 'EmptyStatement', + 'ForInStatement', + 'WithStatement', + 'YieldExpression', + ], + 'no-setter-return': 'error', + 'func-call-spacing': 'error', + 'no-trailing-spaces': 'error', + 'no-unneeded-ternary': 'error', + 'no-whitespace-before-property': 'error', + 'object-curly-spacing': [ 'error', 'always' ], + 'one-var': [ 'error', { 'var': 'always', 'let': 'consecutive' } ], + 'one-var-declaration-per-line': 'error', + 'quotes': [ 'error', 'single' ], + 'semi': [ 'error', 'always' ], + 'semi-spacing': 'error', + 'space-before-blocks': 'error', + 'space-before-function-paren': [ + 'error', + { + 'anonymous': 'never', + 'named': 'never', + 'asyncArrow': 'always', + }, + ], + 'space-in-parens': [ 'error', 'never' ], + 'space-infix-ops': 'error', + 'space-unary-ops': 'error', + 'unicode-bom': 'error', + 'arrow-body-style': [ 'error', 'always' ], + 'arrow-spacing': [ 'error', { 'before': true, 'after': true } ], + 'arrow-parens': 'error', + 'template-curly-spacing': [ 'error', 'never' ], + 'object-property-newline': [ 'error', { 'allowAllPropertiesOnSameLine': true } ], + }, +}; diff --git a/partials/browser.js b/partials/browser.js new file mode 100644 index 0000000..d40f25f --- /dev/null +++ b/partials/browser.js @@ -0,0 +1,17 @@ +/** + * Copyright (c) 2017 Jeremy Thomerson + * Licensed under the MIT license. + */ + +'use strict'; + +const globals = require('globals'); + +module.exports = { + languageOptions: { + globals: { + ...globals.browser, + ...globals.commonjs, + }, + }, +}; diff --git a/partials/javascript.js b/partials/javascript.js new file mode 100644 index 0000000..b6b3d34 --- /dev/null +++ b/partials/javascript.js @@ -0,0 +1,5 @@ +module.exports = { + rules: { + '@typescript-eslint/no-var-requires': 'off', + }, +}; diff --git a/partials/node-tests.js b/partials/node-tests.js new file mode 100644 index 0000000..f8c3ce4 --- /dev/null +++ b/partials/node-tests.js @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016 Jeremy Thomerson + * Licensed under the MIT license. + */ + +'use strict'; + +const globals = require('globals'); + +module.exports = { + languageOptions: { + globals: { + ...globals.mocha, + }, + }, + rules: { + 'no-empty-function': 'off', + }, +}; diff --git a/partials/node.js b/partials/node.js new file mode 100644 index 0000000..74c7383 --- /dev/null +++ b/partials/node.js @@ -0,0 +1,9 @@ +const globals = require('globals'); + +module.exports = { + languageOptions: { + globals: { + ...globals.node, + }, + }, +}; diff --git a/partials/type-definitions.js b/partials/type-definitions.js new file mode 100644 index 0000000..c1e82a5 --- /dev/null +++ b/partials/type-definitions.js @@ -0,0 +1,7 @@ +module.exports = { + rules: { + 'no-unused-vars': 'off', + '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-empty-interface': 'off', + }, +}; diff --git a/partials/typescript.js b/partials/typescript.js new file mode 100644 index 0000000..8407fb6 --- /dev/null +++ b/partials/typescript.js @@ -0,0 +1,217 @@ +const typescriptESLintParser = require('@typescript-eslint/parser'); + +module.exports = { + languageOptions: { + 'parserOptions': { + 'parser': typescriptESLintParser, + 'sourceType': 'module', + // Disable warning banner for possibly incompatible versions of TypeScript + 'loggerFn': false, + }, + }, + 'rules': { + // The standard ESLint `no-dupe-class-members` rule will report false + // positives for overloaded TypeScript class methods. This rule is safe to + // disable because actual duplicate class members will be caught by the + // TypeScript compiler. + 'no-dupe-class-members': 'off', + // TODO: figure out how to fix no-undef. + // Currently, no-undef causes false positives for TypeScript class properties. + // With TypeScript-only code this rule can safely be disabled because + // TypeScript won't compile if the definition is missing. However, if we use + // any JavaScript in the project we need to have it enabled. + 'no-undef': 'off', + // The standard ESLint `no-unused-vars' rule will throw false positives with + // class properties in TypeScript. The TypeScript-specific rule fixes this. + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'error', + // For TypeScript code, `const`/`let` should be used exclusively + 'no-var': 'error', + // new-cap throws errors with property decorators + 'new-cap': 'off', + + // TypeScript will be parsed in strict mode and output the `use-strict` + // directive for the transpiled JavaScript automatically. + 'strict': [ 'error', 'never' ], + + 'no-empty-function': [ 'error', { 'allow': [ 'constructors' ] } ], + + '@typescript-eslint/adjacent-overload-signatures': 'error', + + // Disable ESLint's camelcase so we can override with our own + // naming convention rules. + 'camelcase': 'off', + + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: 'classProperty', + modifiers: [ 'private' ], + format: [ 'camelCase' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'protected' ], + format: [ 'camelCase' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'private', 'static' ], + format: [ 'snake_case' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'private', 'readonly', 'static' ], + format: [ 'UPPER_CASE' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'protected', 'readonly', 'static' ], + format: [ 'UPPER_CASE' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'public', 'readonly', 'static' ], + format: [ 'UPPER_CASE' ], + }, + { + selector: 'classProperty', + modifiers: [ 'protected', 'static' ], + format: [ 'snake_case' ], + leadingUnderscore: 'require', + }, + { + selector: 'classProperty', + modifiers: [ 'public', 'static' ], + format: [ 'snake_case' ], + leadingUnderscore: 'forbid', + }, + { + selector: 'enum', + format: [ 'PascalCase' ], + }, + { + selector: 'typeLike', + format: [ 'PascalCase' ], + }, + { + selector: 'variable', + format: [ 'camelCase', 'PascalCase' ], + }, + { + selector: 'parameter', + format: [ 'camelCase', 'PascalCase' ], + leadingUnderscore: 'allow', + }, + { + selector: 'variable', + modifiers: [ 'global' ], + format: [ 'UPPER_CASE', 'camelCase', 'PascalCase' ], + }, + ], + // no-shadow is incompatible with TypeScript code. + // @typescript-eslint/no-shadow replaces it. + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': 'error', + // no-redeclare is incompatible with TypeScript code. + // @typescript-eslint/no-redeclare replaces it. + 'no-redeclare': 'off', + '@typescript-eslint/no-redeclare': [ 'error' ], + '@typescript-eslint/explicit-function-return-type': [ 'error', { 'allowExpressions': true } ], + '@typescript-eslint/explicit-member-accessibility': 'error', + '@typescript-eslint/member-delimiter-style': 'error', + '@typescript-eslint/consistent-type-assertions': [ 'error', { 'assertionStyle': 'as' } ], + '@typescript-eslint/no-array-constructor': 'error', + '@typescript-eslint/no-namespace': 'error', + '@typescript-eslint/member-ordering': [ + 'error', + { + 'default': [ + // Index signature + 'signature', + 'call-signature', + + // Fields + 'public-static-field', + 'protected-static-field', + 'private-static-field', + + 'public-instance-field', + 'protected-instance-field', + 'private-instance-field', + + 'public-abstract-field', + 'protected-abstract-field', + + 'public-field', + 'protected-field', + 'private-field', + + 'static-field', + 'instance-field', + 'abstract-field', + + 'field', + + // Constructors + 'public-constructor', + 'protected-constructor', + 'private-constructor', + + 'constructor', + + // Methods + [ 'public-static-method', 'public-static-get', 'public-static-set' ], + [ 'protected-static-method', 'protected-static-get', 'protected-static-set' ], + [ 'private-static-method', 'private-static-get', 'private-static-set' ], + + [ 'public-instance-method', 'public-instance-get', 'public-instance-set' ], + [ 'protected-instance-method', 'protected-instance-get', 'protected-instance-set' ], + [ 'private-instance-method', 'private-instance-get', 'private-instance-set' ], + + [ 'public-abstract-method', 'public-abstract-get', 'public-abstract-set' ], + [ 'protected-abstract-method', 'protected-abstract-get', 'protected-abstract-set' ], + + 'public-method', + 'protected-method', + 'private-method', + + [ 'static-method', 'static-get', 'static-set' ], + [ 'instance-method', 'instance-get', 'instance-set' ], + [ 'abstract-method', 'abstract-get', 'abstract-set' ], + + 'method', + ], + }, + ], + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/parameter-properties': [ 'error', { 'allow': [ 'private' ] } ], + '@typescript-eslint/triple-slash-reference': [ 'error', { 'path': 'never', 'types': 'never', 'lib': 'never' } ], + '@typescript-eslint/type-annotation-spacing': [ + 'error', + { + 'before': false, + 'after': true, + 'overrides': { + 'arrow': { 'before': true, 'after': true }, + }, + }, + ], + '@typescript-eslint/no-empty-interface': 'error', + + // Turn off the core no-use-before-define to avoid double reporting errors. + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': [ + 'error', + { + 'functions': false, + 'typedefs': false, + }, + ], + }, +}; diff --git a/partials/vue.js b/partials/vue.js index 2098572..d5cc642 100644 --- a/partials/vue.js +++ b/partials/vue.js @@ -1,222 +1,17 @@ 'use strict'; -const pluginVue = require('eslint-plugin-vue'); +const typescriptESLintParser = require('@typescript-eslint/parser'), + globals = require('globals'); -const silvermineRulesUniversal = { - // Priority B: Strongly Recommended - 'vue/attribute-hyphenation': [ 'error', 'never' ], - 'vue/component-definition-name-casing': [ 'error', 'PascalCase' ], - 'vue/first-attribute-linebreak': [ 'error', { 'multiline': 'ignore' } ], - 'vue/html-closing-bracket-newline': [ - 'error', - { - 'singleline': 'never', - 'multiline': 'never', - }, - ], - 'vue/html-closing-bracket-spacing': [ - 'error', - { - 'startTag': 'never', - 'endTag': 'never', - 'selfClosingTag': 'always', - }, - ], - 'vue/html-end-tags': 'error', - 'vue/html-indent': [ - 'error', - 3, - { - 'attribute': 1, - 'baseIndent': 1, - 'closeBracket': 0, - 'alignAttributesVertically': false, - }, - ], - 'vue/html-quotes': [ 'error', 'double' ], - 'vue/html-self-closing': 'error', - 'vue/max-attributes-per-line': 'off', - 'vue/multi-word-component-names': 'off', - 'vue/multiline-html-element-content-newline': 'error', - 'vue/mustache-interpolation-spacing': 'error', - 'vue/no-multi-spaces': 'error', - 'vue/no-spaces-around-equal-signs-in-attribute': 'error', - 'vue/no-template-shadow': 'error', - 'vue/one-component-per-file': 'error', - 'vue/prop-name-casing': 'error', - 'vue/require-default-prop': 'error', - 'vue/require-prop-types': 'error', - 'vue/singleline-html-element-content-newline': 'off', - 'vue/v-bind-style': 'error', - 'vue/v-on-style': 'error', - 'vue/v-slot-style': 'error', - - // Priority C: Recommended - 'vue/attributes-order': 'off', - 'vue/component-tags-order': [ - 'error', - { - 'order': [ 'template', 'script', 'style' ], - }, - ], - 'vue/no-lone-template': 'error', - 'vue/no-multiple-slot-args': 'error', - 'vue/no-v-html': 'off', - 'vue/order-in-components': 'error', - 'vue/this-in-template': 'error', - - // Uncategorized - 'vue/block-tag-newline': [ - 'error', - { - 'singleline': 'always', - 'multiline': 'always', - 'maxEmptyLines': 0, - }, - ], - 'vue/component-name-in-template-casing': 'error', - 'vue/custom-event-name-casing': [ 'error', 'camelCase' ], - 'vue/html-button-has-type': 'error', - 'vue/html-comment-content-newline': 'error', - 'vue/html-comment-content-spacing': 'error', - 'vue/html-comment-indent': [ 'error', 3 ], - 'vue/match-component-file-name': [ - 'error', - { - 'extensions': [ 'vue' ], - 'shouldMatchCase': true, +module.exports = { + languageOptions: { + parserOptions: { + parser: typescriptESLintParser, + sourceType: 'module', }, - ], - // 'vue/new-line-between-multi-line-property': 'off', - // 'vue/next-tick-style': 'off', - // 'vue/no-bare-strings-in-template': 'off', - // 'vue/no-boolean-default': 'off', - 'vue/no-duplicate-attr-inheritance': 'error', - // 'vue/no-empty-component-block': 'off', - 'vue/no-invalid-model-keys': 'error', - 'vue/no-multiple-objects-in-class': 'error', - 'vue/no-multiple-template-root': 'off', - 'vue/no-potential-component-option-typo': 'error', - 'vue/no-reserved-component-names': [ - 'error', - { - 'disallowVueBuiltInComponents': true, - 'disallowVue3BuiltInComponents': true, + globals: { + 'vue/setup-compiler-macros': true, + ...globals.browser, }, - ], - // 'vue/no-restricted-block': 'off', - // 'vue/no-restricted-call-after-await': 'off', - // 'vue/no-restricted-component-options': 'off', - // 'vue/no-restricted-custom-event': 'off', - // 'vue/no-restricted-props': 'off', - // 'vue/no-restricted-static-attribute': 'off', - // 'vue/no-restricted-v-bind': 'off', - // 'vue/no-static-inline-styles': 'off', - // 'vue/no-template-target-blank': 'TODO', - 'vue/no-this-in-before-route-enter': 'error', - // 'vue/no-unregistered-components': 'off', - // 'vue/no-unsupported-features': 'TODO', - // 'vue/no-unused-properties': 'TODO', - // 'vue/no-useless-mustaches': 'TODO', - // 'vue/no-useless-v-bind': 'TODO', - // 'vue/padding-line-between-blocks': 'TODO', - // 'vue/require-direct-export': 'TODO', - 'vue/require-emit-validator': 'error', - // 'vue/require-name-property': 'TODO', - // 'vue/script-indent': 'TODO', - // 'vue/sort-keys': 'TODO', - // 'vue/static-class-names-order': 'TODO', - // 'vue/v-for-delimiter-style': 'TODO', - // 'vue/v-on-function-call': 'TODO', - // 'vue/valid-next-tick': 'TODO', - - // Extension Rules - // 'vue/array-bracket-newline': 'TODO', - // 'vue/array-bracket-spacing': 'TODO', - // 'vue/arrow-spacing': 'TODO', - // 'vue/block-spacing': 'TODO', - // 'vue/brace-style': 'TODO', - // 'vue/camelcase': 'TODO', - // 'vue/comma-dangle': 'TODO', - // 'vue/comma-spacing': 'TODO', - // 'vue/comma-style': 'TODO', - // 'vue/dot-location': 'TODO', - // 'vue/dot-notation': 'TODO', - // 'vue/eqeqeq': 'TODO', - // 'vue/func-call-spacing': 'TODO', - // 'vue/key-spacing': 'TODO', - // 'vue/keyword-spacing': 'TODO', - // 'vue/max-len': 'TODO', - // 'vue/no-constant-condition': 'TODO', - // 'vue/no-empty-pattern': 'TODO', - // 'vue/no-extra-parens': 'TODO', - // 'vue/no-irregular-whitespace': 'TODO', - // 'vue/no-restricted-syntax': 'TODO', - // 'vue/no-sparse-arrays': 'TODO', - // 'vue/no-useless-concat': 'TODO', - // 'vue/object-curly-newline': 'TODO', - // 'vue/object-curly-spacing': 'TODO', - // 'vue/object-property-newline': 'TODO', - // 'vue/operator-linebreak': 'TODO', - // 'vue/prefer-template': 'TODO', - // 'vue/space-in-parens': 'TODO', - // 'vue/space-infix-ops': 'TODO', - // 'vue/space-unary-ops': 'TODO', - // 'vue/template-curly-spacing': 'TODO', -}; - -const silvermineRulesVue2Only = {}; - -const silvermineRulesVue3Only = { - 'vue/no-deprecated-v-is': 'error', - 'vue/v-on-event-hyphenation': [ 'error', 'never' ], -}; - -module.exports = { - - getVueRules: function(vueVersion) { - const extractRulesFromConfig = (config) => { - return config - .filter((prop) => { - return prop.rules; - }) - .map((obj) => { - return obj.rules; - }) - .flat() - .reduce((prev, next) => { - return { ...prev, ...next }; - }, {}); - }; - - let rules = {}; - - // Combine version dependent rules - switch (vueVersion) { - case 2: { - rules = { - ...extractRulesFromConfig(pluginVue.configs['flat/vue2-strongly-recommended']), - ...silvermineRulesUniversal, - ...silvermineRulesVue2Only, - }; - break; - } - - case 3: { - rules = { - ...extractRulesFromConfig(pluginVue.configs['flat/strongly-recommended']), - ...silvermineRulesUniversal, - ...silvermineRulesVue3Only, - }; - break; - } - - default: { - throw new Error(`Unsupported Vue version: ${vueVersion}`); - } - } - - // Lastly, always add our custom rules. - return rules; }, }; diff --git a/partials/vue/vue-3.js b/partials/vue/vue-3.js new file mode 100644 index 0000000..9f3cf88 --- /dev/null +++ b/partials/vue/vue-3.js @@ -0,0 +1,4 @@ +module.exports = { + 'vue/no-deprecated-v-is': 'error', + 'vue/v-on-event-hyphenation': [ 'error', 'never' ], +}; diff --git a/partials/vue/vue-base.js b/partials/vue/vue-base.js new file mode 100644 index 0000000..2a28c5a --- /dev/null +++ b/partials/vue/vue-base.js @@ -0,0 +1,97 @@ +module.exports = { + 'vue/attribute-hyphenation': [ 'error', 'never' ], + 'vue/component-definition-name-casing': [ 'error', 'PascalCase' ], + 'vue/first-attribute-linebreak': [ 'error', { 'multiline': 'ignore' } ], + 'vue/html-closing-bracket-newline': [ + 'error', + { + 'singleline': 'never', + 'multiline': 'never', + }, + ], + 'vue/html-closing-bracket-spacing': [ + 'error', + { + 'startTag': 'never', + 'endTag': 'never', + 'selfClosingTag': 'always', + }, + ], + 'vue/html-end-tags': 'error', + 'vue/html-indent': [ + 'error', + 3, + { + 'attribute': 1, + 'baseIndent': 1, + 'closeBracket': 0, + 'alignAttributesVertically': false, + }, + ], + 'vue/html-quotes': [ 'error', 'double' ], + 'vue/html-self-closing': 'error', + 'vue/max-attributes-per-line': 'off', + 'vue/multi-word-component-names': 'off', + 'vue/multiline-html-element-content-newline': 'error', + 'vue/mustache-interpolation-spacing': 'error', + 'vue/no-multi-spaces': 'error', + 'vue/no-spaces-around-equal-signs-in-attribute': 'error', + 'vue/no-template-shadow': 'error', + 'vue/one-component-per-file': 'error', + 'vue/prop-name-casing': 'error', + 'vue/require-default-prop': 'error', + 'vue/require-prop-types': 'error', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/v-bind-style': 'error', + 'vue/v-on-style': 'error', + 'vue/v-slot-style': 'error', + 'vue/attributes-order': 'off', + 'vue/component-tags-order': [ + 'error', + { + 'order': [ 'template', 'script', 'style' ], + }, + ], + 'vue/no-lone-template': 'error', + 'vue/no-multiple-slot-args': 'error', + 'vue/no-v-html': 'off', + 'vue/order-in-components': 'error', + 'vue/this-in-template': 'error', + + // Uncategorized + 'vue/block-tag-newline': [ + 'error', + { + 'singleline': 'always', + 'multiline': 'always', + 'maxEmptyLines': 0, + }, + ], + 'vue/component-name-in-template-casing': 'error', + 'vue/custom-event-name-casing': [ 'error', 'camelCase' ], + 'vue/html-button-has-type': 'error', + 'vue/html-comment-content-newline': 'error', + 'vue/html-comment-content-spacing': 'error', + 'vue/html-comment-indent': [ 'error', 3 ], + 'vue/match-component-file-name': [ + 'error', + { + 'extensions': [ 'vue' ], + 'shouldMatchCase': true, + }, + ], + 'vue/no-duplicate-attr-inheritance': 'error', + 'vue/no-invalid-model-keys': 'error', + 'vue/no-multiple-objects-in-class': 'error', + 'vue/no-multiple-template-root': 'off', + 'vue/no-potential-component-option-typo': 'error', + 'vue/no-reserved-component-names': [ + 'error', + { + 'disallowVueBuiltInComponents': true, + 'disallowVue3BuiltInComponents': true, + }, + ], + 'vue/no-this-in-before-route-enter': 'error', + 'vue/require-emit-validator': 'error', +}; diff --git a/vue2.js b/vue2.js deleted file mode 100644 index ef5ed07..0000000 --- a/vue2.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -const baseConfig = require('./index'), - getVueRules = require('./partials/vue').getVueRules; - -// Get all the base overrides, except for the chunk related to Vue (3). We'll replace the -// Vue 3 rules with Vue 2 rules. -const overrides = baseConfig.map((configObject) => { - if (configObject.files && configObject.files !== [ '**/*.vue' ]) { - return configObject; - } - return Object.assign( - {}, - { - ...configObject, - rules: getVueRules(2), - } - ); -}); - -module.exports = { - complete: overrides, - discrete: { - rules: getVueRules(2), - }, -}; From 0ddb648e604eb9b10d4e67f64dd0ae1c1fbbd9e8 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 27 Sep 2024 10:05:31 -0400 Subject: [PATCH 10/11] chore: upgrade TypeScript to v4.7.4 --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0361079..a16380a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,6 @@ "@typescript-eslint/parser": "7.12.0", "eslint-plugin-vue": "9.27.0", "globals": "15.6.0", - "typescript": "4.6.3", "typescript-eslint": "7.12.0" }, "devDependencies": { @@ -23,7 +22,8 @@ "@types/eslint__js": "8.42.3", "cz-conventional-changelog": "3.0.2", "eslint": "8.57.0", - "standard-version": "7.0.1" + "standard-version": "7.0.1", + "typescript": "4.7.4" }, "peerDependencies": { "eslint": ">= 8.57.0" @@ -10332,9 +10332,9 @@ } }, "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18726,9 +18726,9 @@ } }, "typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==" + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" }, "typescript-eslint": { "version": "7.12.0", diff --git a/package.json b/package.json index 6b2bab6..87d4df5 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "@typescript-eslint/parser": "7.12.0", "eslint-plugin-vue": "9.27.0", "globals": "15.6.0", - "typescript": "4.6.3", "typescript-eslint": "7.12.0" }, "devDependencies": { @@ -44,7 +43,8 @@ "@types/eslint__js": "8.42.3", "cz-conventional-changelog": "3.0.2", "eslint": "8.57.0", - "standard-version": "7.0.1" + "standard-version": "7.0.1", + "typescript": "4.7.4" }, "peerDependencies": { "eslint": ">= 8.57.0" From f0a786aa9367480d941f213cb0def48ed663ec18 Mon Sep 17 00:00:00 2001 From: PaulBredenberg Date: Fri, 27 Sep 2024 13:12:47 -0400 Subject: [PATCH 11/11] test: add vue test case --- test-cases/vue/ExampleComponent.vue | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 test-cases/vue/ExampleComponent.vue diff --git a/test-cases/vue/ExampleComponent.vue b/test-cases/vue/ExampleComponent.vue new file mode 100644 index 0000000..4720690 --- /dev/null +++ b/test-cases/vue/ExampleComponent.vue @@ -0,0 +1,15 @@ + + +