diff --git a/package-lock.json b/package-lock.json index 99c715c3..74354791 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "./packages/*" ], "devDependencies": { - "eslint-plugin-perfectionist": "^4.12.3", "lerna": "8.1", "prettier": "^3.2.5" } @@ -1127,9 +1126,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" @@ -1145,13 +1144,55 @@ } }, "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==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", @@ -1185,6 +1226,54 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -1205,7 +1294,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "peer": true, "engines": { "node": ">=12.22" }, @@ -1222,6 +1310,20 @@ "license": "BSD-3-Clause", "peer": true }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", @@ -5006,9 +5108,9 @@ } }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -5061,7 +5163,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -7364,8 +7465,7 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "peer": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -7676,6 +7776,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -8036,6 +8149,21 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-config-airbnb-base": { "version": "15.0.0", "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", @@ -8285,41 +8413,25 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" + "eslint": ">=8" } }, "node_modules/eslint-plugin-eslint-comments": { @@ -8486,56 +8598,49 @@ "version": "9.2.2", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "node_modules/eslint-plugin-n": { + "version": "17.23.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", + "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", + "license": "MIT", "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "@eslint-community/eslint-utils": "^4.5.0", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "globrex": "^0.1.2", + "ignore": "^5.3.2", + "semver": "^7.6.3", + "ts-declaration-location": "^1.0.6" }, "engines": { - "node": ">=8.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": ">=5.16.0" + "eslint": ">=8.23.0" } }, - "node_modules/eslint-plugin-node/node_modules/eslint-utils": { - "version": "2.1.0", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-perfectionist": { "version": "4.15.1", "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.15.1.tgz", "integrity": "sha512-MHF0cBoOG0XyBf7G0EAFCuJJu4I18wy0zAoT1OHfx2o6EOx1EFTIzr2HGeuZa1kDcusoX0xJ9V7oZmaeFd773Q==", + "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/types": "^8.38.0", @@ -9164,14 +9269,12 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "peer": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "peer": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fast-memoize": { "version": "2.5.2", @@ -10363,6 +10466,12 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "license": "MIT" }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "license": "MIT" + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -11884,14 +11993,12 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "peer": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "peer": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "node_modules/json-stringify-nice": { "version": "1.1.4", @@ -12314,7 +12421,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -12480,8 +12586,7 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "peer": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "node_modules/lodash.sortby": { "version": "4.7.0", @@ -14276,6 +14381,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-5.0.0.tgz", "integrity": "sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -15090,7 +15196,6 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -15843,7 +15948,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -16479,16 +16583,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/registry-auth-token": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", @@ -17781,7 +17875,6 @@ "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==", - "peer": true, "engines": { "node": ">=8" }, @@ -18328,6 +18421,19 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", @@ -18621,6 +18727,40 @@ "typescript": ">=4.8.4" } }, + "node_modules/ts-declaration-location": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz", + "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==", + "funding": [ + { + "type": "ko-fi", + "url": "https://ko-fi.com/rebeccastevens" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/ts-declaration-location" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "picomatch": "^4.0.2" + }, + "peerDependencies": { + "typescript": ">=4.0.0" + } + }, + "node_modules/ts-declaration-location/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -18807,7 +18947,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -20456,7 +20595,6 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -20700,7 +20838,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "peer": true, "engines": { "node": ">=10" }, @@ -20756,7 +20893,7 @@ "eslint-plugin-jest-dom": "^5.2.0", "eslint-plugin-jest-formatting": "^3.0.0", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^17.0.0", "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", @@ -20769,67 +20906,641 @@ "lodash": "^4.17.21" }, "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.16.0", "@types/lodash": "^4.17.7", + "eslint": "^9.39.1", "eslint-define-config": "^2.0.0", + "eslint-plugin-perfectionist": "^4.12.3", "typescript": "^5.8.3" }, "engines": { "node": ">=18" }, "peerDependencies": { - "eslint": "^8.0.0", + "eslint": "^9.0.0", "prettier": "^3.0.0" } }, - "packages/eslint-plugin": { - "name": "eslint-plugin-readme", - "version": "2.2.1", - "license": "ISC", - "devDependencies": { - "@babel/eslint-parser": "^7.27.1", - "@readme/eslint-config": "file:../eslint-config", - "@typescript-eslint/parser": "^8.24.1", - "eslint-doc-generator": "^2.0.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": "^8.0.0" - } - }, - "packages/spectral-config": { - "name": "@readme/spectral-config", - "version": "5.1.1", + "packages/eslint-config/node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, "license": "MIT", "dependencies": { - "@stoplight/spectral-rulesets": "^1.22.0", - "alex": "^11.0.1" - }, - "devDependencies": { - "@ibm-cloud/openapi-ruleset": "^1.31.0", - "@readme/eslint-config": "file:../eslint-config", - "@readme/oas-examples": "^7.0.3", - "tsup": "^8.1.2", - "vitest": "^4.0.6" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@stoplight/spectral-cli": "^6.6.0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "packages/standards": { - "name": "@readme/standards", - "version": "2.4.0", - "license": "ISC", - "devDependencies": { - "@biomejs/biome": "^2.3.2" + "packages/eslint-config/node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "optionalDependencies": { - "@biomejs/biome": "^2.2.3", - "prettier": "^3.6.2" + "funding": { + "url": "https://eslint.org/donate" + } + }, + "packages/eslint-config/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "packages/eslint-config/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-config/node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "packages/eslint-config/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-config/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-config/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-config/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/eslint-config/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-config/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "packages/eslint-config/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "packages/eslint-config/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-config/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-config/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-config/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-plugin": { + "name": "eslint-plugin-readme", + "version": "2.2.1", + "license": "ISC", + "devDependencies": { + "@babel/eslint-parser": "^7.27.1", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.16.0", + "@readme/eslint-config": "file:../eslint-config", + "@typescript-eslint/parser": "^8.24.1", + "eslint": "^9.39.1", + "eslint-doc-generator": "^2.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^9.0.0" + } + }, + "packages/eslint-plugin/node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin/node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "packages/eslint-plugin/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "packages/eslint-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-plugin/node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "packages/eslint-plugin/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/eslint-plugin/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/eslint-plugin/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-plugin/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "packages/eslint-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "packages/eslint-plugin/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-plugin/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/eslint-plugin/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/spectral-config": { + "name": "@readme/spectral-config", + "version": "5.1.1", + "license": "MIT", + "dependencies": { + "@stoplight/spectral-rulesets": "^1.22.0", + "alex": "^11.0.1" + }, + "devDependencies": { + "@biomejs/biome": "^2.3.2", + "@ibm-cloud/openapi-ruleset": "^1.31.0", + "@readme/oas-examples": "^7.0.3", + "@readme/standards": "file:../standards", + "tsup": "^8.1.2", + "vitest": "^4.0.6" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@stoplight/spectral-cli": "^6.6.0" + } + }, + "packages/standards": { + "name": "@readme/standards", + "version": "2.4.0", + "license": "ISC", + "devDependencies": { + "@biomejs/biome": "^2.3.2" + }, + "optionalDependencies": { + "@biomejs/biome": "^2.2.3", + "prettier": "^3.6.2" } }, "packages/stylelint-config": { @@ -20846,7 +21557,8 @@ "stylelint-prettier": "^5.0.3" }, "devDependencies": { - "@readme/eslint-config": "file:../eslint-config", + "@biomejs/biome": "^2.3.2", + "@readme/standards": "file:../standards", "vitest": "^4.0.6" }, "engines": { diff --git a/package.json b/package.json index b9e90d8a..0eb9aaca 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "./packages/*" ], "devDependencies": { - "eslint-plugin-perfectionist": "^4.12.3", "lerna": "8.1", "prettier": "^3.2.5" } diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.js new file mode 100644 index 00000000..ffda03c5 --- /dev/null +++ b/packages/eslint-config/eslint.config.js @@ -0,0 +1,17 @@ +const { FlatCompat } = require('@eslint/eslintrc'); +const js = require('@eslint/js'); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, +}); + +module.exports = [ + ...compat.extends('./index.js'), + { + files: ['eslint.config.js'], + rules: { + 'import/no-extraneous-dependencies': 'off', + }, + }, +]; diff --git a/packages/eslint-config/esm.js b/packages/eslint-config/esm.js index d3ae1bd2..a8656c2f 100644 --- a/packages/eslint-config/esm.js +++ b/packages/eslint-config/esm.js @@ -7,7 +7,7 @@ const config = { // https://gist.github.com/Jaid/164668c0151ae09d2bc81be78a203dd5 'import/no-commonjs': 'error', - 'node/no-extraneous-import': 'error', + 'n/no-extraneous-import': 'error', 'unicorn/prefer-module': 'error', 'unicorn/prefer-node-protocol': 'error', }, diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js index 2c2076b0..4298b800 100644 --- a/packages/eslint-config/index.js +++ b/packages/eslint-config/index.js @@ -10,7 +10,7 @@ const config = { 'plugin:you-dont-need-lodash-underscore/compatible', 'prettier', ], - plugins: ['node', 'unicorn'], + plugins: ['n', 'unicorn'], rules: { 'arrow-body-style': 'off', // This rule clashes with our Prettier config. @@ -50,9 +50,9 @@ const config = { // acceptable. 'no-shadow': ['error', { allow: ['err'] }], - 'node/no-deprecated-api': 'error', - 'node/no-exports-assign': 'error', - 'node/no-extraneous-require': 'error', + 'n/no-deprecated-api': 'error', + 'n/no-exports-assign': 'error', + 'n/no-extraneous-require': 'error', 'prefer-arrow-callback': 'off', // This rule clashes with our Prettier config. 'prefer-destructuring': 'off', diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 80a59ebf..aff49e29 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -34,7 +34,7 @@ "eslint-plugin-jest-dom": "^5.2.0", "eslint-plugin-jest-formatting": "^3.0.0", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-node": "^11.1.0", + "eslint-plugin-n": "^17.0.0", "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", @@ -47,12 +47,16 @@ "lodash": "^4.17.21" }, "peerDependencies": { - "eslint": "^8.0.0", + "eslint": "^9.0.0", "prettier": "^3.0.0" }, "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.16.0", "@types/lodash": "^4.17.7", + "eslint": "^9.39.1", "eslint-define-config": "^2.0.0", + "eslint-plugin-perfectionist": "^4.12.3", "typescript": "^5.8.3" } } diff --git a/packages/eslint-config/testing/common.config.js b/packages/eslint-config/testing/common.config.js index e2dfc145..47bf9b7a 100644 --- a/packages/eslint-config/testing/common.config.js +++ b/packages/eslint-config/testing/common.config.js @@ -1,6 +1,6 @@ /** @type {import("eslint-define-config").ESLintConfig} */ const config = { - plugins: ['import', 'node'], + plugins: ['import', 'n'], rules: { // A failing `JSON.parse()` will fail the unit test it's in so it's safe to ignore. 'try-catch-failsafe/json-parse': 'off', @@ -9,7 +9,7 @@ const config = { 'import/no-extraneous-dependencies': 'off', - 'node/no-extraneous-require': 'off', + 'n/no-extraneous-require': 'off', // Sniff out tests that have useless `async` declarations. Since there's valid usecases for // having a function be async and not return or await a Promise, we're only running this rule diff --git a/packages/eslint-plugin/.eslint-doc-generatorrc.js b/packages/eslint-plugin/.eslint-doc-generatorrc.js index 0e7165c5..78db7c30 100644 --- a/packages/eslint-plugin/.eslint-doc-generatorrc.js +++ b/packages/eslint-plugin/.eslint-doc-generatorrc.js @@ -9,6 +9,8 @@ const config = { if (page === 'README.md') { return `https://github.com/readmeio/standards/tree/main/packages/eslint-plugin/docs/rules/${name}.md`; } + + return undefined; }, }; diff --git a/packages/eslint-plugin/eslint.config.js b/packages/eslint-plugin/eslint.config.js new file mode 100644 index 00000000..e2e782c1 --- /dev/null +++ b/packages/eslint-plugin/eslint.config.js @@ -0,0 +1,30 @@ +const { FlatCompat } = require('@eslint/eslintrc'); +const js = require('@eslint/js'); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, +}); + +module.exports = [ + ...compat.extends('@readme/eslint-config'), + { + languageOptions: { + ecmaVersion: 2022, + sourceType: 'commonjs', + }, + }, + { + files: ['test/**/*.js'], + rules: { + 'global-require': 'off', + 'import/no-unresolved': 'off', + }, + }, + { + files: ['eslint.config.js'], + rules: { + 'import/no-extraneous-dependencies': 'off', + }, + }, +]; diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index bdc025dd..0209d31d 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -26,12 +26,15 @@ "update:docs": "eslint-doc-generator && npx prettier --write docs/rules/*.md *.md" }, "peerDependencies": { - "eslint": "^8.0.0" + "eslint": "^9.0.0" }, "devDependencies": { "@babel/eslint-parser": "^7.27.1", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.16.0", "@readme/eslint-config": "file:../eslint-config", "@typescript-eslint/parser": "^8.24.1", + "eslint": "^9.39.1", "eslint-doc-generator": "^2.0.2" } } diff --git a/packages/eslint-plugin/test/no-decorators-on-private-properties.test.js b/packages/eslint-plugin/test/no-decorators-on-private-properties.test.js index bb970ddd..34b5659a 100644 --- a/packages/eslint-plugin/test/no-decorators-on-private-properties.test.js +++ b/packages/eslint-plugin/test/no-decorators-on-private-properties.test.js @@ -3,10 +3,10 @@ const { RuleTester } = require('eslint'); const { rules } = require('..'); const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser'), - parserOptions: { + languageOptions: { + parser: require('@typescript-eslint/parser'), ecmaVersion: 2022, - requireConfigFile: false, + sourceType: 'module', }, }); diff --git a/packages/eslint-plugin/test/no-dual-exports.test.js b/packages/eslint-plugin/test/no-dual-exports.test.js index 7a919522..e1a418a8 100644 --- a/packages/eslint-plugin/test/no-dual-exports.test.js +++ b/packages/eslint-plugin/test/no-dual-exports.test.js @@ -3,9 +3,13 @@ const { RuleTester } = require('eslint'); const { rules } = require('..'); const ruleTester = new RuleTester({ - parser: require.resolve('@babel/eslint-parser'), - parserOptions: { - requireConfigFile: false, + languageOptions: { + parser: require('@babel/eslint-parser'), + ecmaVersion: 'latest', + sourceType: 'module', + parserOptions: { + requireConfigFile: false, + }, }, }); diff --git a/packages/eslint-plugin/test/no-wildcard-imports.test.js b/packages/eslint-plugin/test/no-wildcard-imports.test.js index cddb860b..39f141eb 100644 --- a/packages/eslint-plugin/test/no-wildcard-imports.test.js +++ b/packages/eslint-plugin/test/no-wildcard-imports.test.js @@ -3,10 +3,13 @@ const { RuleTester } = require('eslint'); const { rules } = require('..'); const ruleTester = new RuleTester({ - parser: require.resolve('@babel/eslint-parser'), - parserOptions: { + languageOptions: { + parser: require('@babel/eslint-parser'), ecmaVersion: 2022, - requireConfigFile: false, + sourceType: 'module', + parserOptions: { + requireConfigFile: false, + }, }, }); diff --git a/packages/eslint-plugin/test/prefer-javascript.test.js b/packages/eslint-plugin/test/prefer-javascript.test.js index e31a72c7..f50d6ff6 100644 --- a/packages/eslint-plugin/test/prefer-javascript.test.js +++ b/packages/eslint-plugin/test/prefer-javascript.test.js @@ -3,10 +3,10 @@ const { RuleTester } = require('eslint'); const { rules } = require('..'); const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser'), - parserOptions: { + languageOptions: { + parser: require('@typescript-eslint/parser'), ecmaVersion: 2022, - requireConfigFile: false, + sourceType: 'module', }, }); @@ -26,37 +26,31 @@ ruleTester.run('prefer-javascript', rules['prefer-javascript'], { filename: 'file.ts', code: '/** this is a TS file */', errors: [{ message: errorMessage }], - output: '/** this is a TS file */', }, { filename: 'file.tsx', code: '/** this is a TSX file */', errors: [{ message: errorMessage }], - output: '/** this is a TSX file */', }, { filename: 'file.cts', code: '/** this is a CTS file */', errors: [{ message: errorMessage }], - output: '/** this is a CTS file */', }, { filename: 'file.ctsx', code: '/** this is a CTSX file */', errors: [{ message: errorMessage }], - output: '/** this is a CTSX file */', }, { filename: 'file.mts', code: '/** this is a MTS file */', errors: [{ message: errorMessage }], - output: '/** this is a MTS file */', }, { filename: 'file.mtsx', code: '/** this is a MTSX file */', errors: [{ message: errorMessage }], - output: '/** this is a MTSX file */', }, ], }); diff --git a/packages/eslint-plugin/test/prefer-typescript.test.js b/packages/eslint-plugin/test/prefer-typescript.test.js index 5040491d..31c71a2a 100644 --- a/packages/eslint-plugin/test/prefer-typescript.test.js +++ b/packages/eslint-plugin/test/prefer-typescript.test.js @@ -3,10 +3,10 @@ const { RuleTester } = require('eslint'); const { rules } = require('..'); const ruleTester = new RuleTester({ - parser: require.resolve('@typescript-eslint/parser'), - parserOptions: { + languageOptions: { + parser: require('@typescript-eslint/parser'), ecmaVersion: 2022, - requireConfigFile: false, + sourceType: 'module', }, }); @@ -26,37 +26,31 @@ ruleTester.run('prefer-typescript', rules['prefer-typescript'], { filename: 'file.js', code: '/** this is a JS file */', errors: [{ message: errorMessage }], - output: '/** this is a JS file */', }, { filename: 'file.jsx', code: '/** this is a JSX file */', errors: [{ message: errorMessage }], - output: '/** this is a JSX file */', }, { filename: 'file.cjs', code: '/** this is a CJS file */', errors: [{ message: errorMessage }], - output: '/** this is a CJS file */', }, { filename: 'file.cjsx', code: '/** this is a CJSX file */', errors: [{ message: errorMessage }], - output: '/** this is a CJSX file */', }, { filename: 'file.mjs', code: '/** this is a MJS file */', errors: [{ message: errorMessage }], - output: '/** this is a MJS file */', }, { filename: 'file.mjsx', code: '/** this is a MJSX file */', errors: [{ message: errorMessage }], - output: '/** this is a MJSX file */', }, ], }); diff --git a/packages/eslint-plugin/test/prefer-unicode-ellipsis.test.js b/packages/eslint-plugin/test/prefer-unicode-ellipsis.test.js index 2eabe54f..4b08b2a6 100644 --- a/packages/eslint-plugin/test/prefer-unicode-ellipsis.test.js +++ b/packages/eslint-plugin/test/prefer-unicode-ellipsis.test.js @@ -3,9 +3,13 @@ const { RuleTester } = require('eslint'); const { rules } = require('..'); const ruleTester = new RuleTester({ - parserOptions: { - ecmaFeatures: { - jsx: true, + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, }, }); diff --git a/packages/spectral-config/.eslintignore b/packages/spectral-config/.eslintignore deleted file mode 100644 index 849ddff3..00000000 --- a/packages/spectral-config/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -dist/ diff --git a/packages/spectral-config/.eslintrc b/packages/spectral-config/.eslintrc deleted file mode 100644 index cff1e925..00000000 --- a/packages/spectral-config/.eslintrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "@readme/eslint-config", - "rules": { "import/extensions": ["error", "always"] } -} diff --git a/packages/spectral-config/biome.json b/packages/spectral-config/biome.json new file mode 100644 index 00000000..b4ddf783 --- /dev/null +++ b/packages/spectral-config/biome.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.3.2/schema.json", + "extends": ["@readme/standards/biome", "@readme/standards/biome/esm"], + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "noDefaultExport": "off" + }, + "suspicious": { + "noThenProperty": "off" + } + } + } +} diff --git a/packages/spectral-config/package.json b/packages/spectral-config/package.json index ae69a204..d4218fe8 100644 --- a/packages/spectral-config/package.json +++ b/packages/spectral-config/package.json @@ -9,7 +9,8 @@ }, "scripts": { "build": "tsup", - "lint": "eslint .", + "lint": "biome check .", + "lint:fix": "biome check --write .", "prepack": "npm run build", "test": "vitest run" }, @@ -31,11 +32,12 @@ "@stoplight/spectral-cli": "^6.6.0" }, "devDependencies": { + "@biomejs/biome": "^2.3.2", "@ibm-cloud/openapi-ruleset": "^1.31.0", - "@readme/eslint-config": "file:../eslint-config", "@readme/oas-examples": "^7.0.3", + "@readme/standards": "file:../standards", "tsup": "^8.1.2", "vitest": "^4.0.6" }, - "prettier": "@readme/eslint-config/prettier" + "prettier": "@readme/standards/prettier" } diff --git a/packages/spectral-config/src/functions/alex.js b/packages/spectral-config/src/functions/alex.js index 464287de..ff1fc0a8 100644 --- a/packages/spectral-config/src/functions/alex.js +++ b/packages/spectral-config/src/functions/alex.js @@ -6,7 +6,7 @@ import { text } from 'alex'; * @see {@link https://alexjs.com/} * @param {string} input */ -export default function alex(input, options, context) { +export default function alex(input, _options, context) { const errors = text(input, { profanitySureness: 1 }).messages; return errors diff --git a/packages/spectral-config/test/.eslintrc b/packages/spectral-config/test/.eslintrc deleted file mode 100644 index 716c33cc..00000000 --- a/packages/spectral-config/test/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "@readme/eslint-config/testing/vitest" -} diff --git a/packages/spectral-config/test/alex-component-description.test.js b/packages/spectral-config/test/alex-component-description.test.js index e6c5f6b1..c8964c79 100644 --- a/packages/spectral-config/test/alex-component-description.test.js +++ b/packages/spectral-config/test/alex-component-description.test.js @@ -1,6 +1,6 @@ import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js'; import readme from '@readme/oas-examples/3.0/json/readme-legacy.json'; -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import rule from '../src/rules/alex-component-description.js'; diff --git a/packages/spectral-config/test/alex-component-summary.test.js b/packages/spectral-config/test/alex-component-summary.test.js index 89782cc2..e60dcf6f 100644 --- a/packages/spectral-config/test/alex-component-summary.test.js +++ b/packages/spectral-config/test/alex-component-summary.test.js @@ -1,6 +1,6 @@ import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js'; import readme from '@readme/oas-examples/3.0/json/readme-legacy.json'; -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import rule from '../src/rules/alex-component-summary.js'; diff --git a/packages/spectral-config/test/alex-operation-description.test.js b/packages/spectral-config/test/alex-operation-description.test.js index 060accc8..af580aa3 100644 --- a/packages/spectral-config/test/alex-operation-description.test.js +++ b/packages/spectral-config/test/alex-operation-description.test.js @@ -1,6 +1,6 @@ import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js'; import readme from '@readme/oas-examples/3.0/json/readme-legacy.json'; -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import rule from '../src/rules/alex-operation-description.js'; diff --git a/packages/spectral-config/test/alex-operation-summary.test.js b/packages/spectral-config/test/alex-operation-summary.test.js index a792a05f..5f398765 100644 --- a/packages/spectral-config/test/alex-operation-summary.test.js +++ b/packages/spectral-config/test/alex-operation-summary.test.js @@ -1,6 +1,6 @@ import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js'; import readme from '@readme/oas-examples/3.0/json/readme-legacy.json'; -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import rule from '../src/rules/alex-operation-summary.js'; diff --git a/packages/spectral-config/test/alex-parameter.test.js b/packages/spectral-config/test/alex-parameter.test.js index 853a0793..79bbdc8a 100644 --- a/packages/spectral-config/test/alex-parameter.test.js +++ b/packages/spectral-config/test/alex-parameter.test.js @@ -1,6 +1,6 @@ import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js'; import readme from '@readme/oas-examples/3.0/json/readme-legacy.json'; -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import rule from '../src/rules/alex-parameter.js'; diff --git a/packages/spectral-config/test/alex-response.test.js b/packages/spectral-config/test/alex-response.test.js index fa0229bc..1cfac09f 100644 --- a/packages/spectral-config/test/alex-response.test.js +++ b/packages/spectral-config/test/alex-response.test.js @@ -1,6 +1,6 @@ import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js'; import readme from '@readme/oas-examples/3.0/json/readme-legacy.json'; -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import rule from '../src/rules/alex-response.js'; diff --git a/packages/spectral-config/test/description-sentence-punctuation.test.js b/packages/spectral-config/test/description-sentence-punctuation.test.js index 709ea153..8c127d94 100644 --- a/packages/spectral-config/test/description-sentence-punctuation.test.js +++ b/packages/spectral-config/test/description-sentence-punctuation.test.js @@ -1,7 +1,7 @@ import { severityCodes, testRule } from '@ibm-cloud/openapi-ruleset/test/test-utils/index.js'; import petstore from '@readme/oas-examples/3.0/json/petstore-simple.json'; import readme from '@readme/oas-examples/3.0/json/readme-legacy.json'; -import { describe, it, expect } from 'vitest'; +import { describe, expect, it } from 'vitest'; import rule from '../src/rules/description-sentence-punctuation.js'; diff --git a/packages/stylelint-config/.eslintrc.cjs b/packages/stylelint-config/.eslintrc.cjs deleted file mode 100644 index 86377d07..00000000 --- a/packages/stylelint-config/.eslintrc.cjs +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: ['@readme/eslint-config', '@readme/eslint-config/testing/vitest'], -}; diff --git a/packages/stylelint-config/biome.json b/packages/stylelint-config/biome.json new file mode 100644 index 00000000..30d61287 --- /dev/null +++ b/packages/stylelint-config/biome.json @@ -0,0 +1,9 @@ +{ + "extends": ["@readme/standards/biome"], + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + } +} diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json index fca4c89c..a01fd471 100644 --- a/packages/stylelint-config/package.json +++ b/packages/stylelint-config/package.json @@ -4,7 +4,8 @@ "description": "ReadMe coding standards for styles", "main": "src/index.js", "scripts": { - "lint": "eslint .", + "lint": "biome check .", + "lint:fix": "biome check --write .", "test": "vitest run" }, "engines": { @@ -33,8 +34,9 @@ "postcss": "^8.4.12" }, "devDependencies": { - "@readme/eslint-config": "file:../eslint-config", + "@biomejs/biome": "^2.3.2", + "@readme/standards": "file:../standards", "vitest": "^4.0.6" }, - "prettier": "@readme/eslint-config/prettier" + "prettier": "@readme/standards/prettier" } diff --git a/packages/stylelint-config/test/index.test.js b/packages/stylelint-config/test/index.test.js index ad638cb2..7dba7c37 100644 --- a/packages/stylelint-config/test/index.test.js +++ b/packages/stylelint-config/test/index.test.js @@ -1,8 +1,8 @@ -import fs from 'fs'; -import path from 'path'; +import fs from 'node:fs'; +import path from 'node:path'; import stylelint from 'stylelint'; -import { describe, beforeEach, it, expect } from 'vitest'; +import { beforeEach, describe, expect, it } from 'vitest'; import config from '..';