2026-04-06
- eslint OK - import OK - jsdoc OK - node OK - oxc OK - promise OK - typescript OK - unicorn en cours
This commit is contained in:
parent
93dd909919
commit
2971fd7c5c
23 changed files with 3462 additions and 2091 deletions
1022
.oxlintrc.json
1022
.oxlintrc.json
File diff suppressed because it is too large
Load diff
54
bun.lock
54
bun.lock
|
|
@ -5,6 +5,11 @@
|
||||||
"": {
|
"": {
|
||||||
"name": "@gcch/configuration-oxlint",
|
"name": "@gcch/configuration-oxlint",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"eslint-plugin-astro": "^1.6.0",
|
||||||
|
"eslint-plugin-functional": "^9.0.4",
|
||||||
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
|
"eslint-plugin-perfectionist": "^5.8.0",
|
||||||
|
"eslint-plugin-sonarjs": "^4.0.2",
|
||||||
"globals": "^17.4.0",
|
"globals": "^17.4.0",
|
||||||
"oxlint": "^1.58.0",
|
"oxlint": "^1.58.0",
|
||||||
"oxlint-tsgolint": "^0.19.0",
|
"oxlint-tsgolint": "^0.19.0",
|
||||||
|
|
@ -14,25 +19,18 @@
|
||||||
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#c0620280e6",
|
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#c0620280e6",
|
||||||
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#91d4573bff",
|
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#91d4573bff",
|
||||||
"@types/bun": "^1.3.11",
|
"@types/bun": "^1.3.11",
|
||||||
"@types/node": "^25.5.0",
|
"@types/node": "^25.5.2",
|
||||||
"eslint-plugin-functional": "^9.0.4",
|
"knip": "^6.3.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
||||||
"eslint-plugin-perfectionist": "^5.7.0",
|
|
||||||
"eslint-plugin-sonarjs": "^4.0.2",
|
|
||||||
"knip": "^6.1.1",
|
|
||||||
"prettier": "^3.8.1",
|
"prettier": "^3.8.1",
|
||||||
"publint": "^0.3.18",
|
"publint": "^0.3.18",
|
||||||
"tsdown": "^0.21.7",
|
"tsdown": "^0.21.7",
|
||||||
"typescript": "^6.0.2",
|
"typescript": "^6.0.2",
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
|
||||||
"eslint-plugin-astro": "^1.6.0",
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"eslint-plugin-astro": "^1.6.0",
|
"eslint-plugin-astro": "^1.6.0",
|
||||||
"eslint-plugin-functional": "^9.0.4",
|
"eslint-plugin-functional": "^9.0.4",
|
||||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
"eslint-plugin-perfectionist": "^5.7.0",
|
"eslint-plugin-perfectionist": "^5.8.0",
|
||||||
"eslint-plugin-sonarjs": "^4.0.2",
|
"eslint-plugin-sonarjs": "^4.0.2",
|
||||||
"oxlint": "^1.58.0",
|
"oxlint": "^1.58.0",
|
||||||
"oxlint-tsgolint": "^0.19.0",
|
"oxlint-tsgolint": "^0.19.0",
|
||||||
|
|
@ -314,7 +312,7 @@
|
||||||
|
|
||||||
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
|
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
|
||||||
|
|
||||||
"@types/node": ["@types/node@25.5.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw=="],
|
"@types/node": ["@types/node@25.5.2", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg=="],
|
||||||
|
|
||||||
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
|
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
|
||||||
|
|
||||||
|
|
@ -498,7 +496,7 @@
|
||||||
|
|
||||||
"eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="],
|
"eslint-plugin-jsx-a11y": ["eslint-plugin-jsx-a11y@6.10.2", "", { "dependencies": { "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", "axe-core": "^4.10.0", "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", "string.prototype.includes": "^2.0.1" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q=="],
|
||||||
|
|
||||||
"eslint-plugin-perfectionist": ["eslint-plugin-perfectionist@5.7.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.57.1", "natural-orderby": "^5.0.0" }, "peerDependencies": { "eslint": "^8.45.0 || ^9.0.0 || ^10.0.0" } }, "sha512-WRHj7OZS/INutQ/gKN5C1ZGnMhkQ3oKZQAA2I7rl5yM8keBtSd9oj/qlJaHuwh5873FhMPqYlttcadF0YsTN7g=="],
|
"eslint-plugin-perfectionist": ["eslint-plugin-perfectionist@5.8.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.58.0", "natural-orderby": "^5.0.0" }, "peerDependencies": { "eslint": "^8.45.0 || ^9.0.0 || ^10.0.0" } }, "sha512-k8uIptWIxkUclonCFGyDzgYs9NI+Qh0a7cUXS3L7IYZDEsjXuimFBVbxXPQQngWqMiaxJRwbtYB4smMGMqF+cw=="],
|
||||||
|
|
||||||
"eslint-plugin-sonarjs": ["eslint-plugin-sonarjs@4.0.2", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "builtin-modules": "^3.3.0", "bytes": "^3.1.2", "functional-red-black-tree": "^1.0.1", "globals": "^17.4.0", "jsx-ast-utils-x": "^0.1.0", "lodash.merge": "^4.6.2", "minimatch": "^10.2.4", "scslre": "^0.3.0", "semver": "^7.7.4", "ts-api-utils": "^2.4.0", "typescript": ">=5" }, "peerDependencies": { "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0" } }, "sha512-BTcT1zr1iTbmJtVlcesISwnXzh+9uhf9LEOr+RRNf4kR8xA0HQTPft4oiyOCzCOGKkpSJxjR8ZYF6H7VPyplyw=="],
|
"eslint-plugin-sonarjs": ["eslint-plugin-sonarjs@4.0.2", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "builtin-modules": "^3.3.0", "bytes": "^3.1.2", "functional-red-black-tree": "^1.0.1", "globals": "^17.4.0", "jsx-ast-utils-x": "^0.1.0", "lodash.merge": "^4.6.2", "minimatch": "^10.2.4", "scslre": "^0.3.0", "semver": "^7.7.4", "ts-api-utils": "^2.4.0", "typescript": ">=5" }, "peerDependencies": { "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0" } }, "sha512-BTcT1zr1iTbmJtVlcesISwnXzh+9uhf9LEOr+RRNf4kR8xA0HQTPft4oiyOCzCOGKkpSJxjR8ZYF6H7VPyplyw=="],
|
||||||
|
|
||||||
|
|
@ -678,7 +676,7 @@
|
||||||
|
|
||||||
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
|
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
|
||||||
|
|
||||||
"knip": ["knip@6.1.1", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "get-tsconfig": "4.13.7", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-parser": "^0.121.0", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-BC/kbdxwCgv+p/3YkGbtlLxbOXhQDuR+CeKKFEpJyKb3BFwG1gZa+CMWSqAnPi+kUexz74m327d3zWxyn2fMew=="],
|
"knip": ["knip@6.3.0", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "get-tsconfig": "4.13.7", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-parser": "^0.121.0", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-g6dVPoTw6iNm3cubC5IWxVkVsd0r5hXhTBTbAGIEQN53GdA2ZM/slMTPJ7n5l8pBebNQPHpxjmKxuR4xVQ2/hQ=="],
|
||||||
|
|
||||||
"language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="],
|
"language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="],
|
||||||
|
|
||||||
|
|
@ -1006,12 +1004,16 @@
|
||||||
|
|
||||||
"@eslint/config-array/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
|
"@eslint/config-array/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
|
||||||
|
|
||||||
|
"@gcch/configuration-eslint/eslint-plugin-perfectionist": ["eslint-plugin-perfectionist@5.7.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.57.1", "natural-orderby": "^5.0.0" }, "peerDependencies": { "eslint": "^8.45.0 || ^9.0.0 || ^10.0.0" } }, "sha512-WRHj7OZS/INutQ/gKN5C1ZGnMhkQ3oKZQAA2I7rl5yM8keBtSd9oj/qlJaHuwh5873FhMPqYlttcadF0YsTN7g=="],
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
|
"@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
|
"@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
"@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
||||||
|
|
||||||
|
"bun-types/@types/node": ["@types/node@25.5.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw=="],
|
||||||
|
|
||||||
"clean-regexp/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="],
|
"clean-regexp/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="],
|
||||||
|
|
||||||
"eslint/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
"eslint/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
||||||
|
|
@ -1030,6 +1032,8 @@
|
||||||
|
|
||||||
"eslint-plugin-jsdoc/espree": ["espree@11.2.0", "", { "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" } }, "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw=="],
|
"eslint-plugin-jsdoc/espree": ["espree@11.2.0", "", { "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" } }, "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils": ["@typescript-eslint/utils@8.58.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA=="],
|
||||||
|
|
||||||
"eslint-plugin-sonarjs/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
|
"eslint-plugin-sonarjs/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
|
||||||
|
|
||||||
"fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
"fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
||||||
|
|
@ -1050,6 +1054,12 @@
|
||||||
|
|
||||||
"eslint-plugin-jsdoc/espree/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
"eslint-plugin-jsdoc/espree/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0" } }, "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.58.0", "", {}, "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.58.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.58.0", "@typescript-eslint/tsconfig-utils": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA=="],
|
||||||
|
|
||||||
"eslint-plugin-sonarjs/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="],
|
"eslint-plugin-sonarjs/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="],
|
||||||
|
|
||||||
"eslint/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="],
|
"eslint/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="],
|
||||||
|
|
@ -1058,8 +1068,26 @@
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
"@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/scope-manager/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.58.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.58.0", "@typescript-eslint/types": "^8.58.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.58.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="],
|
||||||
|
|
||||||
"eslint-plugin-sonarjs/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
"eslint-plugin-sonarjs/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
||||||
|
|
||||||
"eslint/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
"eslint/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/scope-manager/@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="],
|
||||||
|
|
||||||
|
"eslint-plugin-perfectionist/@typescript-eslint/utils/@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
import { configAstro } from "@gcch/configuration-eslint";
|
import { configAstro } from "@gcch/configuration-eslint";
|
||||||
import { defineConfig } from "eslint/config";
|
import { defineConfig } from "eslint/config";
|
||||||
|
|
||||||
export default defineConfig([...configAstro]);
|
const config = defineConfig([...configAstro]);
|
||||||
|
|
||||||
|
export default config;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
import config from "../index";
|
import config from "../index.ts";
|
||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,16 @@
|
||||||
import type { UserConfig } from "tsdown";
|
import type { UserConfig } from "tsdown";
|
||||||
|
|
||||||
import { defineConfig } from "tsdown";
|
import { defineConfig } from "tsdown";
|
||||||
|
|
||||||
const config: UserConfig = defineConfig({
|
const config: UserConfig = defineConfig({
|
||||||
|
checks: { circularDependency: true },
|
||||||
clean: true,
|
clean: true,
|
||||||
dts: { oxc: true, parallel: true },
|
dts: { oxc: true, parallel: true },
|
||||||
entry: ["../index.ts"],
|
entry: ["../index.ts"],
|
||||||
minify: false,
|
minify: false,
|
||||||
outDir: "../dist",
|
outDir: "../dist",
|
||||||
platform: "node",
|
platform: "node",
|
||||||
|
publint: true,
|
||||||
sourcemap: false,
|
sourcemap: false,
|
||||||
target: "esnext",
|
target: "esnext",
|
||||||
treeshake: true,
|
treeshake: true,
|
||||||
|
|
|
||||||
2305
dist/index.mjs
vendored
2305
dist/index.mjs
vendored
File diff suppressed because it is too large
Load diff
29
index.ts
29
index.ts
|
|
@ -1,13 +1,18 @@
|
||||||
import { defineConfig } from "oxlint";
|
|
||||||
import type { OxlintConfig } from "oxlint";
|
import type { OxlintConfig } from "oxlint";
|
||||||
import astroConfig from "./rules/astro";
|
import { defineConfig } from "oxlint";
|
||||||
import functionalRules from "./rules/functional";
|
|
||||||
import esLintRules from "./rules/eslint";
|
import astroConfig from "./rules/astro.ts";
|
||||||
import jsDocRules from "./rules/jsdoc";
|
import esLintRules from "./rules/eslint.ts";
|
||||||
import sonarJsRules from "./rules/sonarjs";
|
import functionalRules from "./rules/functional.ts";
|
||||||
import perfectionistRules from "./rules/perfectionist";
|
import importRules from "./rules/import.ts";
|
||||||
import typeScriptRules from "./rules/typescript";
|
import jsDocRules from "./rules/jsdoc.ts";
|
||||||
import unicornRules from "./rules/unicorn";
|
import perfectionistRules from "./rules/perfectionist.ts";
|
||||||
|
import sonarJsRules from "./rules/sonarjs.ts";
|
||||||
|
import typeScriptRules from "./rules/typescript.ts";
|
||||||
|
import unicornRules from "./rules/unicorn.ts";
|
||||||
|
import nodeRules from "./rules/node.ts";
|
||||||
|
import oxcRules from "./rules/oxc.ts";
|
||||||
|
import promiseRules from "./rules/promise.ts";
|
||||||
|
|
||||||
const config: OxlintConfig = defineConfig({
|
const config: OxlintConfig = defineConfig({
|
||||||
categories: {
|
categories: {
|
||||||
|
|
@ -36,9 +41,13 @@ const config: OxlintConfig = defineConfig({
|
||||||
rules: {
|
rules: {
|
||||||
...esLintRules,
|
...esLintRules,
|
||||||
...functionalRules,
|
...functionalRules,
|
||||||
|
...importRules,
|
||||||
...jsDocRules,
|
...jsDocRules,
|
||||||
...sonarJsRules,
|
...nodeRules,
|
||||||
|
...oxcRules,
|
||||||
...perfectionistRules,
|
...perfectionistRules,
|
||||||
|
...promiseRules,
|
||||||
|
...sonarJsRules,
|
||||||
...typeScriptRules,
|
...typeScriptRules,
|
||||||
...unicornRules,
|
...unicornRules,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
4
justfile
4
justfile
|
|
@ -48,3 +48,7 @@ clean:
|
||||||
rm -rf bun.lock
|
rm -rf bun.lock
|
||||||
rm -rf node_modules/
|
rm -rf node_modules/
|
||||||
rm -rfv dist/
|
rm -rfv dist/
|
||||||
|
|
||||||
|
# Teste les règles à la mise à jour des fichiers sources.
|
||||||
|
watch:
|
||||||
|
watchexec --watch "./rules/" just build lint-js
|
||||||
|
|
|
||||||
19
package.json
19
package.json
|
|
@ -15,32 +15,29 @@
|
||||||
"eslint-plugin-astro": "^1.6.0",
|
"eslint-plugin-astro": "^1.6.0",
|
||||||
"eslint-plugin-functional": "^9.0.4",
|
"eslint-plugin-functional": "^9.0.4",
|
||||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
"eslint-plugin-perfectionist": "^5.7.0",
|
"eslint-plugin-perfectionist": "^5.8.0",
|
||||||
"eslint-plugin-sonarjs": "^4.0.2",
|
"eslint-plugin-sonarjs": "^4.0.2",
|
||||||
"oxlint": "^1.58.0",
|
"oxlint": "^1.58.0",
|
||||||
"oxlint-tsgolint": "^0.19.0",
|
"oxlint-tsgolint": "^0.19.0",
|
||||||
"typescript": "^6.0.2"
|
"typescript": "^6.0.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"eslint-plugin-astro": "^1.6.0",
|
||||||
|
"eslint-plugin-functional": "^9.0.4",
|
||||||
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||||
|
"eslint-plugin-perfectionist": "^5.8.0",
|
||||||
|
"eslint-plugin-sonarjs": "^4.0.2",
|
||||||
"globals": "^17.4.0",
|
"globals": "^17.4.0",
|
||||||
"oxlint": "^1.58.0",
|
"oxlint": "^1.58.0",
|
||||||
"oxlint-tsgolint": "^0.19.0"
|
"oxlint-tsgolint": "^0.19.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
|
||||||
"eslint-plugin-astro": "^1.6.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@arethetypeswrong/core": "^0.18.2",
|
"@arethetypeswrong/core": "^0.18.2",
|
||||||
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#c0620280e6",
|
"@gcch/configuration-eslint": "git+https://git.gcch.fr/gcch/configuration-eslint#c0620280e6",
|
||||||
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#91d4573bff",
|
"@gcch/configuration-prettier": "git+https://git.gcch.fr/gcch/configuration-prettier#91d4573bff",
|
||||||
"@types/bun": "^1.3.11",
|
"@types/bun": "^1.3.11",
|
||||||
"@types/node": "^25.5.0",
|
"@types/node": "^25.5.2",
|
||||||
"eslint-plugin-astro": "^1.6.0",
|
"knip": "^6.3.0",
|
||||||
"eslint-plugin-functional": "^9.0.4",
|
|
||||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
||||||
"eslint-plugin-perfectionist": "^5.7.0",
|
|
||||||
"eslint-plugin-sonarjs": "^4.0.2",
|
|
||||||
"knip": "^6.1.1",
|
|
||||||
"prettier": "^3.8.1",
|
"prettier": "^3.8.1",
|
||||||
"publint": "^0.3.18",
|
"publint": "^0.3.18",
|
||||||
"tsdown": "^0.21.7",
|
"tsdown": "^0.21.7",
|
||||||
|
|
|
||||||
104
rules/astro.ts
104
rules/astro.ts
|
|
@ -7,70 +7,70 @@ const astroConfig: OxlintOverride = {
|
||||||
files: ["**/*.astro"],
|
files: ["**/*.astro"],
|
||||||
jsPlugins: ["eslint-plugin-astro"],
|
jsPlugins: ["eslint-plugin-astro"],
|
||||||
rules: {
|
rules: {
|
||||||
"astro/jsx-a11y/alt-text": "error",
|
"astro/jsx-a11y/alt-text": "deny",
|
||||||
"astro/jsx-a11y/anchor-ambiguous-text": "error",
|
"astro/jsx-a11y/anchor-ambiguous-text": "deny",
|
||||||
"astro/jsx-a11y/anchor-has-content": "error",
|
"astro/jsx-a11y/anchor-has-content": "deny",
|
||||||
"astro/jsx-a11y/anchor-is-valid": "error",
|
"astro/jsx-a11y/anchor-is-valid": "deny",
|
||||||
"astro/jsx-a11y/aria-activedescendant-has-tabindex": "error",
|
"astro/jsx-a11y/aria-activedescendant-has-tabindex": "deny",
|
||||||
"astro/jsx-a11y/aria-props": "error",
|
"astro/jsx-a11y/aria-props": "deny",
|
||||||
"astro/jsx-a11y/aria-proptypes": "error",
|
"astro/jsx-a11y/aria-proptypes": "deny",
|
||||||
"astro/jsx-a11y/aria-role": "error",
|
"astro/jsx-a11y/aria-role": "deny",
|
||||||
"astro/jsx-a11y/aria-unsupported-elements": "error",
|
"astro/jsx-a11y/aria-unsupported-elements": "deny",
|
||||||
"astro/jsx-a11y/autocomplete-valid": "error",
|
"astro/jsx-a11y/autocomplete-valid": "deny",
|
||||||
"astro/jsx-a11y/click-events-have-key-events": "error",
|
"astro/jsx-a11y/click-events-have-key-events": "deny",
|
||||||
"astro/jsx-a11y/control-has-associated-label": "error",
|
"astro/jsx-a11y/control-has-associated-label": "deny",
|
||||||
"astro/jsx-a11y/heading-has-content": "error",
|
"astro/jsx-a11y/heading-has-content": "deny",
|
||||||
"astro/jsx-a11y/html-has-lang": "error",
|
"astro/jsx-a11y/html-has-lang": "deny",
|
||||||
"astro/jsx-a11y/iframe-has-title": "error",
|
"astro/jsx-a11y/iframe-has-title": "deny",
|
||||||
"astro/jsx-a11y/img-redundant-alt": "error",
|
"astro/jsx-a11y/img-redundant-alt": "deny",
|
||||||
"astro/jsx-a11y/interactive-supports-focus": "error",
|
"astro/jsx-a11y/interactive-supports-focus": "deny",
|
||||||
"astro/jsx-a11y/label-has-associated-control": "error",
|
"astro/jsx-a11y/label-has-associated-control": "deny",
|
||||||
"astro/jsx-a11y/lang": "error",
|
"astro/jsx-a11y/lang": "deny",
|
||||||
"astro/jsx-a11y/media-has-caption": "error",
|
"astro/jsx-a11y/media-has-caption": "deny",
|
||||||
"astro/jsx-a11y/mouse-events-have-key-events": "error",
|
"astro/jsx-a11y/mouse-events-have-key-events": "deny",
|
||||||
"astro/jsx-a11y/no-access-key": "error",
|
"astro/jsx-a11y/no-access-key": "deny",
|
||||||
"astro/jsx-a11y/no-aria-hidden-on-focusable": "error",
|
"astro/jsx-a11y/no-aria-hidden-on-focusable": "deny",
|
||||||
"astro/jsx-a11y/no-autofocus": "error",
|
"astro/jsx-a11y/no-autofocus": "deny",
|
||||||
"astro/jsx-a11y/no-distracting-elements": "error",
|
"astro/jsx-a11y/no-distracting-elements": "deny",
|
||||||
"astro/jsx-a11y/no-interactive-element-to-noninteractive-role": "error",
|
"astro/jsx-a11y/no-interactive-element-to-noninteractive-role": "deny",
|
||||||
"astro/jsx-a11y/no-noninteractive-element-interactions": "error",
|
"astro/jsx-a11y/no-noninteractive-element-interactions": "deny",
|
||||||
"astro/jsx-a11y/no-noninteractive-element-to-interactive-role": "error",
|
"astro/jsx-a11y/no-noninteractive-element-to-interactive-role": "deny",
|
||||||
"astro/jsx-a11y/no-noninteractive-tabindex": "error",
|
"astro/jsx-a11y/no-noninteractive-tabindex": "deny",
|
||||||
"astro/jsx-a11y/no-redundant-roles": "error",
|
"astro/jsx-a11y/no-redundant-roles": "deny",
|
||||||
"astro/jsx-a11y/no-static-element-interactions": "error",
|
"astro/jsx-a11y/no-static-element-interactions": "deny",
|
||||||
"astro/jsx-a11y/prefer-tag-over-role": "error",
|
"astro/jsx-a11y/prefer-tag-over-role": "deny",
|
||||||
"astro/jsx-a11y/role-has-required-aria-props": "error",
|
"astro/jsx-a11y/role-has-required-aria-props": "deny",
|
||||||
"astro/jsx-a11y/role-supports-aria-props": "error",
|
"astro/jsx-a11y/role-supports-aria-props": "deny",
|
||||||
"astro/jsx-a11y/scope": "error",
|
"astro/jsx-a11y/scope": "deny",
|
||||||
"astro/jsx-a11y/tabindex-no-positive": "error",
|
"astro/jsx-a11y/tabindex-no-positive": "deny",
|
||||||
"astro/missing-client-only-directive-value": "error",
|
"astro/missing-client-only-directive-value": "deny",
|
||||||
"astro/no-conflict-set-directives": "error",
|
"astro/no-conflict-set-directives": "deny",
|
||||||
"astro/no-deprecated-astro-canonicalurl": "error",
|
"astro/no-deprecated-astro-canonicalurl": "deny",
|
||||||
"astro/no-deprecated-astro-fetchcontent": "error",
|
"astro/no-deprecated-astro-fetchcontent": "deny",
|
||||||
"astro/no-deprecated-astro-resolve": "error",
|
"astro/no-deprecated-astro-resolve": "deny",
|
||||||
"astro/no-deprecated-getentrybyslug": "error",
|
"astro/no-deprecated-getentrybyslug": "deny",
|
||||||
"astro/no-exports-from-components": "error",
|
"astro/no-exports-from-components": "deny",
|
||||||
"astro/no-set-html-directive": "error",
|
"astro/no-set-html-directive": "deny",
|
||||||
"astro/no-set-text-directive": "error",
|
"astro/no-set-text-directive": "deny",
|
||||||
"astro/no-unused-css-selector": "error",
|
"astro/no-unused-css-selector": "deny",
|
||||||
"astro/no-unused-define-vars-in-style": "error",
|
"astro/no-unused-define-vars-in-style": "deny",
|
||||||
"astro/prefer-class-list-directive": "error",
|
"astro/prefer-class-list-directive": "deny",
|
||||||
"astro/prefer-object-class-list": "error",
|
"astro/prefer-object-class-list": "deny",
|
||||||
"astro/prefer-split-class-list": [
|
"astro/prefer-split-class-list": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
splitLiteral: false,
|
splitLiteral: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"astro/sort-attributes": [
|
"astro/sort-attributes": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
ignoreCase: false,
|
ignoreCase: false,
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "alphabetical",
|
type: "alphabetical",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"astro/valid-compile": "error",
|
"astro/valid-compile": "deny",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,17 @@ const esLintRules: DummyRuleMap = {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"eslint/guard-for-in": "deny",
|
"eslint/guard-for-in": "deny",
|
||||||
"eslint/id-length": "deny",
|
"eslint/id-length": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
checkGeneric: true,
|
||||||
|
exceptionPatterns: [],
|
||||||
|
exceptions: ["_"],
|
||||||
|
max: 100_000_000,
|
||||||
|
min: 2,
|
||||||
|
properties: "always",
|
||||||
|
},
|
||||||
|
],
|
||||||
"eslint/init-declarations": ["deny", "always"],
|
"eslint/init-declarations": ["deny", "always"],
|
||||||
"eslint/new-cap": [
|
"eslint/new-cap": [
|
||||||
"deny",
|
"deny",
|
||||||
|
|
@ -266,6 +276,7 @@ const esLintRules: DummyRuleMap = {
|
||||||
"deny",
|
"deny",
|
||||||
{
|
{
|
||||||
args: "all",
|
args: "all",
|
||||||
|
argsIgnorePattern: "^_",
|
||||||
caughtErrors: "all",
|
caughtErrors: "all",
|
||||||
fix: {
|
fix: {
|
||||||
ignoreClassWithStaticInitBlock: false,
|
ignoreClassWithStaticInitBlock: false,
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import type { DummyRuleMap } from "oxlint";
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
const functionalRules: DummyRuleMap = {
|
const functionalRules: DummyRuleMap = {
|
||||||
"functional/immutable-data": "error",
|
"functional/immutable-data": "deny",
|
||||||
"functional/no-let": "error",
|
"functional/no-let": "deny",
|
||||||
"functional/no-throw-statements": "error",
|
"functional/no-throw-statements": "deny",
|
||||||
"functional/no-try-statements": "error",
|
"functional/no-try-statements": "deny",
|
||||||
"functional/prefer-property-signatures": "error",
|
"functional/prefer-property-signatures": "deny",
|
||||||
"functional/readonly-type": ["error", "generic"],
|
"functional/readonly-type": ["deny", "generic"],
|
||||||
};
|
};
|
||||||
|
|
||||||
export default functionalRules;
|
export default functionalRules;
|
||||||
|
|
|
||||||
109
rules/import.ts
Normal file
109
rules/import.ts
Normal file
|
|
@ -0,0 +1,109 @@
|
||||||
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
|
const importRules: DummyRuleMap = {
|
||||||
|
"import/consistent-type-specifier-style": ["deny", "prefer-top-level"],
|
||||||
|
"import/default": "deny",
|
||||||
|
"import/export": "deny",
|
||||||
|
"import/exports-last": "deny",
|
||||||
|
"import/extensions": [
|
||||||
|
"deny",
|
||||||
|
"always",
|
||||||
|
{
|
||||||
|
checkTypeImports: true,
|
||||||
|
ignorePackages: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/first": ["deny", "absolute-first"],
|
||||||
|
"import/group-exports": "deny",
|
||||||
|
"import/max-dependencies": "allow",
|
||||||
|
"import/named": "deny",
|
||||||
|
"import/namespace": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowComputed: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/no-absolute-path": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
amd: false,
|
||||||
|
commonjs: true,
|
||||||
|
esmodule: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/no-amd": "deny",
|
||||||
|
"import/no-anonymous-default-export": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowAnonymousClass: false,
|
||||||
|
allowAnonymousFunction: false,
|
||||||
|
allowArray: false,
|
||||||
|
allowArrowFunction: false,
|
||||||
|
allowCallExpression: false,
|
||||||
|
allowLiteral: false,
|
||||||
|
allowNew: false,
|
||||||
|
allowObject: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/no-commonjs": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowConditionalRequire: false,
|
||||||
|
allowPrimitiveModules: false,
|
||||||
|
allowRequire: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/no-cycle": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowUnsafeDynamicCyclicDependency: false,
|
||||||
|
ignoreExternal: false,
|
||||||
|
ignoreTypes: true,
|
||||||
|
maxDepth: 4_294_967_295,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// J'aime les exports par défaut.
|
||||||
|
"import/no-default-export": "allow",
|
||||||
|
"import/no-duplicates": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
considerQueryString: true,
|
||||||
|
preferInline: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/no-dynamic-require": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
esmodule: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/no-empty-named-blocks": "deny",
|
||||||
|
"import/no-mutable-exports": "deny",
|
||||||
|
"import/no-named-as-default": "deny",
|
||||||
|
"import/no-named-as-default-member": "deny",
|
||||||
|
"import/no-named-default": "deny",
|
||||||
|
/**
|
||||||
|
* Prohibit named exports.
|
||||||
|
*
|
||||||
|
* Named exports require strict identifier matching and can lead to fragile imports, while default exports enforce a
|
||||||
|
* single, consistent module entry point.
|
||||||
|
*
|
||||||
|
* Activer cette règle empêche l'existence de multiples exports au sein d'un module.
|
||||||
|
*/
|
||||||
|
"import/no-named-export": "allow",
|
||||||
|
"import/no-namespace": "deny",
|
||||||
|
"import/no-nodejs-modules": "allow",
|
||||||
|
"import/no-relative-parent-imports": "allow",
|
||||||
|
"import/no-self-import": "deny",
|
||||||
|
"import/no-unassigned-import": "deny",
|
||||||
|
"import/no-webpack-loader-syntax": "deny",
|
||||||
|
"import/prefer-default-export": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
target: "single",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/unambiguous": "deny",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default importRules;
|
||||||
|
|
@ -7,20 +7,50 @@ const jsDocRules: DummyRuleMap = {
|
||||||
"warn",
|
"warn",
|
||||||
{
|
{
|
||||||
definedTags: ["link"],
|
definedTags: ["link"],
|
||||||
|
typed: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"jsdoc/empty-tags": "warn",
|
"jsdoc/empty-tags": "warn",
|
||||||
"jsdoc/implements-on-classes": "warn",
|
"jsdoc/implements-on-classes": "warn",
|
||||||
"jsdoc/no-defaults": "warn",
|
"jsdoc/no-defaults": ["warn", { noOptionalParamNames: true }],
|
||||||
"jsdoc/require-param": "warn",
|
"jsdoc/require-param": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
checkConstructors: true,
|
||||||
|
checkDestructured: true,
|
||||||
|
checkDestructuredRoots: true,
|
||||||
|
checkGetters: true,
|
||||||
|
checkRestProperty: true,
|
||||||
|
checkSetters: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
"jsdoc/require-param-description": "warn",
|
"jsdoc/require-param-description": "warn",
|
||||||
"jsdoc/require-param-name": "warn",
|
"jsdoc/require-param-name": "warn",
|
||||||
|
// Pris en charge par les annotations de type TypeScript.
|
||||||
|
"jsdoc/require-param-type": "allow",
|
||||||
"jsdoc/require-property": "warn",
|
"jsdoc/require-property": "warn",
|
||||||
"jsdoc/require-property-description": "warn",
|
"jsdoc/require-property-description": "warn",
|
||||||
"jsdoc/require-property-name": "warn",
|
"jsdoc/require-property-name": "warn",
|
||||||
"jsdoc/require-returns": "warn",
|
// Pris en charge par les annotations de type TypeScript.
|
||||||
|
"jsdoc/require-property-type": "allow",
|
||||||
|
"jsdoc/require-returns": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
checkConstructors: true,
|
||||||
|
checkGetters: true,
|
||||||
|
forceRequireReturn: true,
|
||||||
|
forceReturnsWithAsync: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
"jsdoc/require-returns-description": "warn",
|
"jsdoc/require-returns-description": "warn",
|
||||||
"jsdoc/require-yields": "warn",
|
"jsdoc/require-returns-type": "allow",
|
||||||
|
"jsdoc/require-yields": [
|
||||||
|
"warn",
|
||||||
|
{
|
||||||
|
forceRequireYields: false,
|
||||||
|
withGeneratorTag: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export default jsDocRules;
|
export default jsDocRules;
|
||||||
|
|
|
||||||
12
rules/node.ts
Normal file
12
rules/node.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
|
const nodeRules: DummyRuleMap = {
|
||||||
|
"node/global-require": "deny",
|
||||||
|
"node/handle-callback-err": "allow",
|
||||||
|
"node/no-exports-assign": "deny",
|
||||||
|
"node/no-new-require": "deny",
|
||||||
|
"node/no-path-concat": "deny",
|
||||||
|
"node/no-process-env": "deny",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nodeRules;
|
||||||
|
|
@ -2,86 +2,86 @@ import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
const esLintRules: DummyRuleMap = {
|
const esLintRules: DummyRuleMap = {
|
||||||
"array-callback-return": [
|
"array-callback-return": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
allowVoid: true,
|
allowVoid: true,
|
||||||
checkForEach: true,
|
checkForEach: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"for-direction": "error",
|
"for-direction": "deny",
|
||||||
"max-params": [
|
"max-params": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
max: 3,
|
max: 3,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"no-array-constructor": "error",
|
"no-array-constructor": "deny",
|
||||||
"no-async-promise-executor": "error",
|
"no-async-promise-executor": "deny",
|
||||||
"no-case-declarations": "error",
|
"no-case-declarations": "deny",
|
||||||
"no-compare-neg-zero": "error",
|
"no-compare-neg-zero": "deny",
|
||||||
"no-cond-assign": "error",
|
"no-cond-assign": "deny",
|
||||||
"no-constant-binary-expression": "error",
|
"no-constant-binary-expression": "deny",
|
||||||
"no-constant-condition": "error",
|
"no-constant-condition": "deny",
|
||||||
"no-control-regex": "error",
|
"no-control-regex": "deny",
|
||||||
"no-debugger": "error",
|
"no-debugger": "deny",
|
||||||
"no-delete-var": "error",
|
"no-delete-var": "deny",
|
||||||
"no-dupe-else-if": "error",
|
"no-dupe-else-if": "deny",
|
||||||
"no-duplicate-case": "error",
|
"no-duplicate-case": "deny",
|
||||||
"no-duplicate-imports": [
|
"no-duplicate-imports": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
allowSeparateTypeImports: true,
|
allowSeparateTypeImports: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"no-empty": "error",
|
"no-empty": "deny",
|
||||||
"no-empty-character-class": "error",
|
"no-empty-character-class": "deny",
|
||||||
"no-empty-function": "error",
|
"no-empty-function": "deny",
|
||||||
"no-empty-pattern": "error",
|
"no-empty-pattern": "deny",
|
||||||
"no-empty-static-block": "error",
|
"no-empty-static-block": "deny",
|
||||||
"no-ex-assign": "error",
|
"no-ex-assign": "deny",
|
||||||
"no-extra-boolean-cast": "error",
|
"no-extra-boolean-cast": "deny",
|
||||||
"no-fallthrough": "error",
|
"no-fallthrough": "deny",
|
||||||
"no-global-assign": "error",
|
"no-global-assign": "deny",
|
||||||
"no-invalid-regexp": "error",
|
"no-invalid-regexp": "deny",
|
||||||
"no-irregular-whitespace": "error",
|
"no-irregular-whitespace": "deny",
|
||||||
"no-loss-of-precision": "error",
|
"no-loss-of-precision": "deny",
|
||||||
"no-misleading-character-class": "error",
|
"no-misleading-character-class": "deny",
|
||||||
"no-nonoctal-decimal-escape": "error",
|
"no-nonoctal-decimal-escape": "deny",
|
||||||
"no-param-reassign": "error",
|
"no-param-reassign": "deny",
|
||||||
"no-prototype-builtins": "error",
|
"no-prototype-builtins": "deny",
|
||||||
"no-regex-spaces": "error",
|
"no-regex-spaces": "deny",
|
||||||
"no-self-assign": "error",
|
"no-self-assign": "deny",
|
||||||
"no-shadow-restricted-names": "error",
|
"no-shadow-restricted-names": "deny",
|
||||||
"no-sparse-arrays": "error",
|
"no-sparse-arrays": "deny",
|
||||||
"no-unassigned-vars": "error",
|
"no-unassigned-vars": "deny",
|
||||||
"no-unexpected-multiline": "error",
|
"no-unexpected-multiline": "deny",
|
||||||
"no-unneeded-ternary": [
|
"no-unneeded-ternary": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
defaultAssignment: false,
|
defaultAssignment: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"no-unsafe-finally": "error",
|
"no-unsafe-finally": "deny",
|
||||||
"no-unsafe-optional-chaining": "error",
|
"no-unsafe-optional-chaining": "deny",
|
||||||
"no-unused-expressions": "error",
|
"no-unused-expressions": "deny",
|
||||||
"no-unused-labels": "error",
|
"no-unused-labels": "deny",
|
||||||
"no-unused-private-class-members": "error",
|
"no-unused-private-class-members": "deny",
|
||||||
"no-unused-vars": "error",
|
"no-unused-vars": "deny",
|
||||||
"no-useless-backreference": "error",
|
"no-useless-backreference": "deny",
|
||||||
"no-useless-catch": "error",
|
"no-useless-catch": "deny",
|
||||||
"no-useless-constructor": "error",
|
"no-useless-constructor": "deny",
|
||||||
"no-useless-escape": "error",
|
"no-useless-escape": "deny",
|
||||||
"no-var": "error",
|
"no-var": "deny",
|
||||||
"prefer-const": "error",
|
"prefer-const": "deny",
|
||||||
"prefer-rest-params": "error",
|
"prefer-rest-params": "deny",
|
||||||
"prefer-spread": "error",
|
"prefer-spread": "deny",
|
||||||
"preserve-caught-error": "error",
|
"preserve-caught-error": "deny",
|
||||||
"require-yield": "error",
|
"require-yield": "deny",
|
||||||
// Rentre en conflit avec perfectionnist.
|
// Rentre en conflit avec perfectionnist.
|
||||||
"sort-imports": "off",
|
"sort-imports": "off",
|
||||||
"use-isnan": "error",
|
"use-isnan": "deny",
|
||||||
"valid-typeof": "error",
|
"valid-typeof": "deny",
|
||||||
yoda: ["error", "never"],
|
yoda: ["deny", "never"],
|
||||||
};
|
};
|
||||||
|
|
||||||
export default esLintRules;
|
export default esLintRules;
|
||||||
|
|
|
||||||
35
rules/oxc.ts
Normal file
35
rules/oxc.ts
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
|
const oxcRules: DummyRuleMap = {
|
||||||
|
"oxc/approx-constant": "deny",
|
||||||
|
"oxc/bad-array-method-on-arguments": "deny",
|
||||||
|
"oxc/bad-bitwise-operator": "deny",
|
||||||
|
"oxc/bad-char-at-comparison": "deny",
|
||||||
|
"oxc/bad-comparison-sequence": "deny",
|
||||||
|
"oxc/bad-min-max-func": "deny",
|
||||||
|
"oxc/bad-object-literal-comparison": "deny",
|
||||||
|
"oxc/bad-replace-all-arg": "deny",
|
||||||
|
"oxc/branches-sharing-code": "warn",
|
||||||
|
"oxc/const-comparisons": "deny",
|
||||||
|
"oxc/double-comparisons": "deny",
|
||||||
|
"oxc/erasing-op": "deny",
|
||||||
|
"oxc/misrefactored-assign-op": "deny",
|
||||||
|
"oxc/missing-throw": "deny",
|
||||||
|
"oxc/no-accumulating-spread": "deny",
|
||||||
|
// This rule should generally not be used in modern JavaScript/TypeScript codebases without good reason.
|
||||||
|
"oxc/no-async-await": "allow",
|
||||||
|
"oxc/no-async-endpoint-handlers": "allow",
|
||||||
|
"oxc/no-barrel-file": ["deny", { threshold: 100 }],
|
||||||
|
"oxc/no-const-enum": "deny",
|
||||||
|
"oxc/no-map-spread": "allow",
|
||||||
|
// In most codebases at this point, you should not use this rule.
|
||||||
|
"oxc/no-optional-chaining": "allow",
|
||||||
|
// In most codebases at this point, you should not use this rule.
|
||||||
|
"oxc/no-rest-spread-properties": "allow",
|
||||||
|
"oxc/no-this-in-exported-function": "deny",
|
||||||
|
"oxc/number-arg-out-of-range": "deny",
|
||||||
|
"oxc/only-used-in-recursion": "deny",
|
||||||
|
"oxc/uninvoked-array-callback": "deny",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default oxcRules;
|
||||||
|
|
@ -2,147 +2,147 @@ import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
const perfectionistRules: DummyRuleMap = {
|
const perfectionistRules: DummyRuleMap = {
|
||||||
"perfectionist/sort-array-includes": [
|
"perfectionist/sort-array-includes": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-classes": [
|
"perfectionist/sort-classes": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-decorators": [
|
"perfectionist/sort-decorators": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-enums": [
|
"perfectionist/sort-enums": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-export-attributes": [
|
"perfectionist/sort-export-attributes": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-exports": [
|
"perfectionist/sort-exports": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-heritage-clauses": [
|
"perfectionist/sort-heritage-clauses": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-import-attributes": [
|
"perfectionist/sort-import-attributes": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-interfaces": [
|
"perfectionist/sort-interfaces": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-intersection-types": [
|
"perfectionist/sort-intersection-types": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-jsx-props": [
|
"perfectionist/sort-jsx-props": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-maps": [
|
"perfectionist/sort-maps": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-modules": [
|
"perfectionist/sort-modules": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-named-exports": [
|
"perfectionist/sort-named-exports": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-named-imports": [
|
"perfectionist/sort-named-imports": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-object-types": [
|
"perfectionist/sort-object-types": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-objects": [
|
"perfectionist/sort-objects": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-sets": [
|
"perfectionist/sort-sets": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-switch-case": [
|
"perfectionist/sort-switch-case": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-union-types": [
|
"perfectionist/sort-union-types": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"perfectionist/sort-variable-declarations": [
|
"perfectionist/sort-variable-declarations": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
order: "asc",
|
order: "asc",
|
||||||
type: "natural",
|
type: "natural",
|
||||||
|
|
|
||||||
64
rules/promise.ts
Normal file
64
rules/promise.ts
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
|
const promiseRules: DummyRuleMap = {
|
||||||
|
"promise/always-return": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreAssignmentVariable: ["globalThis"],
|
||||||
|
ignoreLastCallback: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"promise/avoid-new": "deny",
|
||||||
|
"promise/catch-or-return": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowFinally: false,
|
||||||
|
allowThen: false,
|
||||||
|
terminationMethod: ["catch"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"promise/no-callback-in-promise": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
callbacks: ["callback", "cb", "done", "next"],
|
||||||
|
exceptions: [],
|
||||||
|
timeoutsErr: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"promise/no-multiple-resolved": "deny",
|
||||||
|
"promise/no-nesting": "deny",
|
||||||
|
"promise/no-new-statics": "deny",
|
||||||
|
"promise/no-promise-in-callback": "deny",
|
||||||
|
"promise/no-return-in-finally": "deny",
|
||||||
|
"promise/no-return-wrap": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowReject: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"promise/param-names": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
rejectPattern: "^_?reject$",
|
||||||
|
resolvePattern: "^_?resolve$",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// Émet de faux positifs avec Effect.
|
||||||
|
"promise/prefer-await-to-callbacks": "allow",
|
||||||
|
"promise/prefer-await-to-then": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
strict: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"promise/prefer-catch": "deny",
|
||||||
|
"promise/spec-only": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowedMethods: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"promise/valid-params": "deny",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default promiseRules;
|
||||||
420
rules/sonarjs.ts
420
rules/sonarjs.ts
|
|
@ -1,216 +1,216 @@
|
||||||
import type { DummyRuleMap } from "oxlint";
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
const sonarJsRules: DummyRuleMap = {
|
const sonarJsRules: DummyRuleMap = {
|
||||||
"sonarjs/anchor-precedence": "error",
|
"sonarjs/anchor-precedence": "deny",
|
||||||
"sonarjs/argument-type": "error",
|
"sonarjs/argument-type": "deny",
|
||||||
"sonarjs/arguments-order": "error",
|
"sonarjs/arguments-order": "deny",
|
||||||
"sonarjs/arguments-usage": "error",
|
"sonarjs/arguments-usage": "deny",
|
||||||
"sonarjs/array-callback-without-return": "error",
|
"sonarjs/array-callback-without-return": "deny",
|
||||||
"sonarjs/assertions-in-tests": "error",
|
"sonarjs/assertions-in-tests": "deny",
|
||||||
"sonarjs/aws-apigateway-public-api": "error",
|
"sonarjs/aws-apigateway-public-api": "deny",
|
||||||
"sonarjs/aws-ec2-rds-dms-public": "error",
|
"sonarjs/aws-ec2-rds-dms-public": "deny",
|
||||||
"sonarjs/aws-ec2-unencrypted-ebs-volume": "error",
|
"sonarjs/aws-ec2-unencrypted-ebs-volume": "deny",
|
||||||
"sonarjs/aws-efs-unencrypted": "error",
|
"sonarjs/aws-efs-unencrypted": "deny",
|
||||||
"sonarjs/aws-iam-all-privileges": "error",
|
"sonarjs/aws-iam-all-privileges": "deny",
|
||||||
"sonarjs/aws-iam-privilege-escalation": "error",
|
"sonarjs/aws-iam-privilege-escalation": "deny",
|
||||||
"sonarjs/aws-iam-public-access": "error",
|
"sonarjs/aws-iam-public-access": "deny",
|
||||||
"sonarjs/aws-opensearchservice-domain": "error",
|
"sonarjs/aws-opensearchservice-domain": "deny",
|
||||||
"sonarjs/aws-rds-unencrypted-databases": "error",
|
"sonarjs/aws-rds-unencrypted-databases": "deny",
|
||||||
"sonarjs/aws-restricted-ip-admin-access": "error",
|
"sonarjs/aws-restricted-ip-admin-access": "deny",
|
||||||
"sonarjs/aws-s3-bucket-granted-access": "error",
|
"sonarjs/aws-s3-bucket-granted-access": "deny",
|
||||||
"sonarjs/aws-s3-bucket-insecure-http": "error",
|
"sonarjs/aws-s3-bucket-insecure-http": "deny",
|
||||||
"sonarjs/aws-s3-bucket-public-access": "error",
|
"sonarjs/aws-s3-bucket-public-access": "deny",
|
||||||
"sonarjs/aws-s3-bucket-versioning": "error",
|
"sonarjs/aws-s3-bucket-versioning": "deny",
|
||||||
"sonarjs/aws-sagemaker-unencrypted-notebook": "error",
|
"sonarjs/aws-sagemaker-unencrypted-notebook": "deny",
|
||||||
"sonarjs/aws-sns-unencrypted-topics": "error",
|
"sonarjs/aws-sns-unencrypted-topics": "deny",
|
||||||
"sonarjs/aws-sqs-unencrypted-queue": "error",
|
"sonarjs/aws-sqs-unencrypted-queue": "deny",
|
||||||
"sonarjs/bitwise-operators": "error",
|
"sonarjs/bitwise-operators": "deny",
|
||||||
"sonarjs/block-scoped-var": "error",
|
"sonarjs/block-scoped-var": "deny",
|
||||||
"sonarjs/call-argument-line": "error",
|
"sonarjs/call-argument-line": "deny",
|
||||||
"sonarjs/chai-determinate-assertion": "error",
|
"sonarjs/chai-determinate-assertion": "deny",
|
||||||
"sonarjs/class-name": "error",
|
"sonarjs/class-name": "deny",
|
||||||
"sonarjs/code-eval": "error",
|
"sonarjs/code-eval": "deny",
|
||||||
"sonarjs/cognitive-complexity": "error",
|
"sonarjs/cognitive-complexity": "deny",
|
||||||
"sonarjs/comma-or-logical-or-case": "error",
|
"sonarjs/comma-or-logical-or-case": "deny",
|
||||||
"sonarjs/concise-regex": "error",
|
"sonarjs/concise-regex": "deny",
|
||||||
"sonarjs/confidential-information-logging": "error",
|
"sonarjs/confidential-information-logging": "deny",
|
||||||
"sonarjs/constructor-for-side-effects": "error",
|
"sonarjs/constructor-for-side-effects": "deny",
|
||||||
"sonarjs/content-length": "error",
|
"sonarjs/content-length": "deny",
|
||||||
"sonarjs/content-security-policy": "error",
|
"sonarjs/content-security-policy": "deny",
|
||||||
"sonarjs/cookie-no-httponly": "error",
|
"sonarjs/cookie-no-httponly": "deny",
|
||||||
"sonarjs/cors": "error",
|
"sonarjs/cors": "deny",
|
||||||
"sonarjs/csrf": "error",
|
"sonarjs/csrf": "deny",
|
||||||
"sonarjs/deprecation": "error",
|
"sonarjs/deprecation": "deny",
|
||||||
"sonarjs/different-types-comparison": "error",
|
"sonarjs/different-types-comparison": "deny",
|
||||||
"sonarjs/disabled-auto-escaping": "error",
|
"sonarjs/disabled-auto-escaping": "deny",
|
||||||
"sonarjs/disabled-resource-integrity": "error",
|
"sonarjs/disabled-resource-integrity": "deny",
|
||||||
"sonarjs/disabled-timeout": "error",
|
"sonarjs/disabled-timeout": "deny",
|
||||||
"sonarjs/duplicates-in-character-class": "error",
|
"sonarjs/duplicates-in-character-class": "deny",
|
||||||
"sonarjs/dynamically-constructed-templates": "error",
|
"sonarjs/dynamically-constructed-templates": "deny",
|
||||||
"sonarjs/empty-string-repetition": "error",
|
"sonarjs/empty-string-repetition": "deny",
|
||||||
"sonarjs/encryption-secure-mode": "error",
|
"sonarjs/encryption-secure-mode": "deny",
|
||||||
"sonarjs/existing-groups": "error",
|
"sonarjs/existing-groups": "deny",
|
||||||
"sonarjs/file-permissions": "error",
|
"sonarjs/file-permissions": "deny",
|
||||||
"sonarjs/file-uploads": "error",
|
"sonarjs/file-uploads": "deny",
|
||||||
"sonarjs/fixme-tag": "error",
|
"sonarjs/fixme-tag": "deny",
|
||||||
"sonarjs/for-loop-increment-sign": "error",
|
"sonarjs/for-loop-increment-sign": "deny",
|
||||||
"sonarjs/frame-ancestors": "error",
|
"sonarjs/frame-ancestors": "deny",
|
||||||
"sonarjs/function-inside-loop": "error",
|
"sonarjs/function-inside-loop": "deny",
|
||||||
"sonarjs/function-return-type": "error",
|
"sonarjs/function-return-type": "deny",
|
||||||
"sonarjs/future-reserved-words": "error",
|
"sonarjs/future-reserved-words": "deny",
|
||||||
"sonarjs/generator-without-yield": "error",
|
"sonarjs/generator-without-yield": "deny",
|
||||||
"sonarjs/hardcoded-secret-signatures": "error",
|
"sonarjs/hardcoded-secret-signatures": "deny",
|
||||||
"sonarjs/hashing": "error",
|
"sonarjs/hashing": "deny",
|
||||||
"sonarjs/hidden-files": "error",
|
"sonarjs/hidden-files": "deny",
|
||||||
"sonarjs/in-operator-type-error": "error",
|
"sonarjs/in-operator-type-error": "deny",
|
||||||
"sonarjs/inconsistent-function-call": "error",
|
"sonarjs/inconsistent-function-call": "deny",
|
||||||
"sonarjs/index-of-compare-to-positive-number": "error",
|
"sonarjs/index-of-compare-to-positive-number": "deny",
|
||||||
"sonarjs/insecure-cookie": "error",
|
"sonarjs/insecure-cookie": "deny",
|
||||||
"sonarjs/insecure-jwt-token": "error",
|
"sonarjs/insecure-jwt-token": "deny",
|
||||||
"sonarjs/inverted-assertion-arguments": "error",
|
"sonarjs/inverted-assertion-arguments": "deny",
|
||||||
"sonarjs/jsx-no-leaked-render": "error",
|
"sonarjs/jsx-no-leaked-render": "deny",
|
||||||
"sonarjs/label-position": "error",
|
"sonarjs/label-position": "deny",
|
||||||
"sonarjs/link-with-target-blank": "error",
|
"sonarjs/link-with-target-blank": "deny",
|
||||||
"sonarjs/max-switch-cases": "error",
|
"sonarjs/max-switch-cases": "deny",
|
||||||
"sonarjs/misplaced-loop-counter": "error",
|
"sonarjs/misplaced-loop-counter": "deny",
|
||||||
"sonarjs/new-operator-misuse": "error",
|
"sonarjs/new-operator-misuse": "deny",
|
||||||
"sonarjs/no-all-duplicated-branches": "error",
|
"sonarjs/no-all-duplicated-branches": "deny",
|
||||||
"sonarjs/no-alphabetical-sort": "error",
|
"sonarjs/no-alphabetical-sort": "deny",
|
||||||
"sonarjs/no-angular-bypass-sanitization": "error",
|
"sonarjs/no-angular-bypass-sanitization": "deny",
|
||||||
"sonarjs/no-array-delete": "error",
|
"sonarjs/no-array-delete": "deny",
|
||||||
"sonarjs/no-associative-arrays": "error",
|
"sonarjs/no-associative-arrays": "deny",
|
||||||
"sonarjs/no-async-constructor": "error",
|
"sonarjs/no-async-constructor": "deny",
|
||||||
"sonarjs/no-case-label-in-switch": "error",
|
"sonarjs/no-case-label-in-switch": "deny",
|
||||||
"sonarjs/no-clear-text-protocols": "error",
|
"sonarjs/no-clear-text-protocols": "deny",
|
||||||
"sonarjs/no-code-after-done": "error",
|
"sonarjs/no-code-after-done": "deny",
|
||||||
"sonarjs/no-collapsible-if": "error",
|
"sonarjs/no-collapsible-if": "deny",
|
||||||
"sonarjs/no-collection-size-mischeck": "error",
|
"sonarjs/no-collection-size-mischeck": "deny",
|
||||||
"sonarjs/no-commented-code": "error",
|
"sonarjs/no-commented-code": "deny",
|
||||||
"sonarjs/no-control-regex": "error",
|
"sonarjs/no-control-regex": "deny",
|
||||||
"sonarjs/no-dead-store": "error",
|
"sonarjs/no-dead-store": "deny",
|
||||||
"sonarjs/no-delete-var": "error",
|
"sonarjs/no-delete-var": "deny",
|
||||||
"sonarjs/no-duplicate-in-composite": "error",
|
"sonarjs/no-duplicate-in-composite": "deny",
|
||||||
"sonarjs/no-duplicate-string": "error",
|
"sonarjs/no-duplicate-string": "deny",
|
||||||
"sonarjs/no-duplicated-branches": "error",
|
"sonarjs/no-duplicated-branches": "deny",
|
||||||
"sonarjs/no-element-overwrite": "error",
|
"sonarjs/no-element-overwrite": "deny",
|
||||||
"sonarjs/no-empty-after-reluctant": "error",
|
"sonarjs/no-empty-after-reluctant": "deny",
|
||||||
"sonarjs/no-empty-alternatives": "error",
|
"sonarjs/no-empty-alternatives": "deny",
|
||||||
"sonarjs/no-empty-character-class": "error",
|
"sonarjs/no-empty-character-class": "deny",
|
||||||
"sonarjs/no-empty-collection": "error",
|
"sonarjs/no-empty-collection": "deny",
|
||||||
"sonarjs/no-empty-group": "error",
|
"sonarjs/no-empty-group": "deny",
|
||||||
"sonarjs/no-empty-test-file": "error",
|
"sonarjs/no-empty-test-file": "deny",
|
||||||
"sonarjs/no-equals-in-for-termination": "error",
|
"sonarjs/no-equals-in-for-termination": "deny",
|
||||||
"sonarjs/no-exclusive-tests": "error",
|
"sonarjs/no-exclusive-tests": "deny",
|
||||||
"sonarjs/no-extra-arguments": "error",
|
"sonarjs/no-extra-arguments": "deny",
|
||||||
"sonarjs/no-fallthrough": "error",
|
"sonarjs/no-fallthrough": "deny",
|
||||||
"sonarjs/no-global-this": "error",
|
"sonarjs/no-global-this": "deny",
|
||||||
"sonarjs/no-globals-shadowing": "error",
|
"sonarjs/no-globals-shadowing": "deny",
|
||||||
"sonarjs/no-gratuitous-expressions": "error",
|
"sonarjs/no-gratuitous-expressions": "deny",
|
||||||
"sonarjs/no-hardcoded-ip": "error",
|
"sonarjs/no-hardcoded-ip": "deny",
|
||||||
"sonarjs/no-hardcoded-passwords": "error",
|
"sonarjs/no-hardcoded-passwords": "deny",
|
||||||
"sonarjs/no-hardcoded-secrets": "error",
|
"sonarjs/no-hardcoded-secrets": "deny",
|
||||||
"sonarjs/no-hook-setter-in-body": "error",
|
"sonarjs/no-hook-setter-in-body": "deny",
|
||||||
"sonarjs/no-identical-conditions": "error",
|
"sonarjs/no-identical-conditions": "deny",
|
||||||
"sonarjs/no-identical-expressions": "error",
|
"sonarjs/no-identical-expressions": "deny",
|
||||||
"sonarjs/no-identical-functions": "error",
|
"sonarjs/no-identical-functions": "deny",
|
||||||
"sonarjs/no-ignored-exceptions": "error",
|
"sonarjs/no-ignored-exceptions": "deny",
|
||||||
"sonarjs/no-ignored-return": "error",
|
"sonarjs/no-ignored-return": "deny",
|
||||||
"sonarjs/no-implicit-global": "error",
|
"sonarjs/no-implicit-global": "deny",
|
||||||
"sonarjs/no-in-misuse": "error",
|
"sonarjs/no-in-misuse": "deny",
|
||||||
"sonarjs/no-incomplete-assertions": "error",
|
"sonarjs/no-incomplete-assertions": "deny",
|
||||||
"sonarjs/no-inconsistent-returns": "error",
|
"sonarjs/no-inconsistent-returns": "deny",
|
||||||
"sonarjs/no-internal-api-use": "error",
|
"sonarjs/no-internal-api-use": "deny",
|
||||||
"sonarjs/no-intrusive-permissions": "error",
|
"sonarjs/no-intrusive-permissions": "deny",
|
||||||
"sonarjs/no-invalid-regexp": "error",
|
"sonarjs/no-invalid-regexp": "deny",
|
||||||
"sonarjs/no-invariant-returns": "error",
|
"sonarjs/no-invariant-returns": "deny",
|
||||||
"sonarjs/no-inverted-boolean-check": "error",
|
"sonarjs/no-inverted-boolean-check": "deny",
|
||||||
"sonarjs/no-ip-forward": "error",
|
"sonarjs/no-ip-forward": "deny",
|
||||||
"sonarjs/no-labels": "error",
|
"sonarjs/no-labels": "deny",
|
||||||
"sonarjs/no-literal-call": "error",
|
"sonarjs/no-literal-call": "deny",
|
||||||
"sonarjs/no-mime-sniff": "error",
|
"sonarjs/no-mime-sniff": "deny",
|
||||||
"sonarjs/no-misleading-array-reverse": "error",
|
"sonarjs/no-misleading-array-reverse": "deny",
|
||||||
"sonarjs/no-misleading-character-class": "error",
|
"sonarjs/no-misleading-character-class": "deny",
|
||||||
"sonarjs/no-mixed-content": "error",
|
"sonarjs/no-mixed-content": "deny",
|
||||||
"sonarjs/no-nested-assignment": "error",
|
"sonarjs/no-nested-assignment": "deny",
|
||||||
"sonarjs/no-nested-conditional": "error",
|
"sonarjs/no-nested-conditional": "deny",
|
||||||
"sonarjs/no-nested-functions": "error",
|
"sonarjs/no-nested-functions": "deny",
|
||||||
"sonarjs/no-nested-switch": "error",
|
"sonarjs/no-nested-switch": "deny",
|
||||||
"sonarjs/no-nested-template-literals": "error",
|
"sonarjs/no-nested-template-literals": "deny",
|
||||||
"sonarjs/no-os-command-from-path": "error",
|
"sonarjs/no-os-command-from-path": "deny",
|
||||||
"sonarjs/no-parameter-reassignment": "error",
|
"sonarjs/no-parameter-reassignment": "deny",
|
||||||
"sonarjs/no-primitive-wrappers": "error",
|
"sonarjs/no-primitive-wrappers": "deny",
|
||||||
"sonarjs/no-redundant-assignments": "error",
|
"sonarjs/no-redundant-assignments": "deny",
|
||||||
"sonarjs/no-redundant-boolean": "error",
|
"sonarjs/no-redundant-boolean": "deny",
|
||||||
"sonarjs/no-redundant-jump": "error",
|
"sonarjs/no-redundant-jump": "deny",
|
||||||
"sonarjs/no-redundant-optional": "error",
|
"sonarjs/no-redundant-optional": "deny",
|
||||||
"sonarjs/no-referrer-policy": "error",
|
"sonarjs/no-referrer-policy": "deny",
|
||||||
"sonarjs/no-regex-spaces": "error",
|
"sonarjs/no-regex-spaces": "deny",
|
||||||
"sonarjs/no-same-argument-assert": "error",
|
"sonarjs/no-same-argument-assert": "deny",
|
||||||
"sonarjs/no-same-line-conditional": "error",
|
"sonarjs/no-same-line-conditional": "deny",
|
||||||
"sonarjs/no-selector-parameter": "error",
|
"sonarjs/no-selector-parameter": "deny",
|
||||||
"sonarjs/no-session-cookies-on-static-assets": "error",
|
"sonarjs/no-session-cookies-on-static-assets": "deny",
|
||||||
"sonarjs/no-skipped-tests": "error",
|
"sonarjs/no-skipped-tests": "deny",
|
||||||
"sonarjs/no-small-switch": "error",
|
"sonarjs/no-small-switch": "deny",
|
||||||
"sonarjs/no-table-as-layout": "error",
|
"sonarjs/no-table-as-layout": "deny",
|
||||||
"sonarjs/no-try-promise": "error",
|
"sonarjs/no-try-promise": "deny",
|
||||||
"sonarjs/no-undefined-argument": "error",
|
"sonarjs/no-undefined-argument": "deny",
|
||||||
"sonarjs/no-unenclosed-multiline-block": "error",
|
"sonarjs/no-unenclosed-multiline-block": "deny",
|
||||||
"sonarjs/no-uniq-key": "error",
|
"sonarjs/no-uniq-key": "deny",
|
||||||
"sonarjs/no-unsafe-unzip": "error",
|
"sonarjs/no-unsafe-unzip": "deny",
|
||||||
"sonarjs/no-unthrown-error": "error",
|
"sonarjs/no-unthrown-error": "deny",
|
||||||
"sonarjs/no-unused-collection": "error",
|
"sonarjs/no-unused-collection": "deny",
|
||||||
"sonarjs/no-unused-vars": "error",
|
"sonarjs/no-unused-vars": "deny",
|
||||||
"sonarjs/no-use-of-empty-return-value": "error",
|
"sonarjs/no-use-of-empty-return-value": "deny",
|
||||||
"sonarjs/no-useless-catch": "error",
|
"sonarjs/no-useless-catch": "deny",
|
||||||
"sonarjs/no-useless-increment": "error",
|
"sonarjs/no-useless-increment": "deny",
|
||||||
"sonarjs/no-useless-intersection": "error",
|
"sonarjs/no-useless-intersection": "deny",
|
||||||
"sonarjs/no-useless-react-setstate": "error",
|
"sonarjs/no-useless-react-setstate": "deny",
|
||||||
"sonarjs/no-weak-cipher": "error",
|
"sonarjs/no-weak-cipher": "deny",
|
||||||
"sonarjs/no-weak-keys": "error",
|
"sonarjs/no-weak-keys": "deny",
|
||||||
"sonarjs/non-existent-operator": "error",
|
"sonarjs/non-existent-operator": "deny",
|
||||||
"sonarjs/null-dereference": "error",
|
"sonarjs/null-dereference": "deny",
|
||||||
"sonarjs/object-alt-content": "error",
|
"sonarjs/object-alt-content": "deny",
|
||||||
"sonarjs/os-command": "error",
|
"sonarjs/os-command": "deny",
|
||||||
"sonarjs/post-message": "error",
|
"sonarjs/post-message": "deny",
|
||||||
"sonarjs/prefer-default-last": "error",
|
"sonarjs/prefer-default-last": "deny",
|
||||||
"sonarjs/prefer-immediate-return": "error",
|
"sonarjs/prefer-immediate-return": "deny",
|
||||||
"sonarjs/prefer-promise-shorthand": "error",
|
"sonarjs/prefer-promise-shorthand": "deny",
|
||||||
"sonarjs/prefer-read-only-props": "error",
|
"sonarjs/prefer-read-only-props": "deny",
|
||||||
"sonarjs/prefer-regexp-exec": "error",
|
"sonarjs/prefer-regexp-exec": "deny",
|
||||||
"sonarjs/prefer-single-boolean-return": "error",
|
"sonarjs/prefer-single-boolean-return": "deny",
|
||||||
"sonarjs/prefer-type-guard": "error",
|
"sonarjs/prefer-type-guard": "deny",
|
||||||
"sonarjs/prefer-while": "error",
|
"sonarjs/prefer-while": "deny",
|
||||||
"sonarjs/production-debug": "error",
|
"sonarjs/production-debug": "deny",
|
||||||
"sonarjs/pseudo-random": "error",
|
"sonarjs/pseudo-random": "deny",
|
||||||
"sonarjs/public-static-readonly": "error",
|
"sonarjs/public-static-readonly": "deny",
|
||||||
"sonarjs/publicly-writable-directories": "error",
|
"sonarjs/publicly-writable-directories": "deny",
|
||||||
"sonarjs/reduce-initial-value": "error",
|
"sonarjs/reduce-initial-value": "deny",
|
||||||
"sonarjs/redundant-type-aliases": "error",
|
"sonarjs/redundant-type-aliases": "deny",
|
||||||
"sonarjs/regex-complexity": "error",
|
"sonarjs/regex-complexity": "deny",
|
||||||
"sonarjs/review-blockchain-mnemonic": "error",
|
"sonarjs/review-blockchain-mnemonic": "deny",
|
||||||
"sonarjs/session-regeneration": "error",
|
"sonarjs/session-regeneration": "deny",
|
||||||
"sonarjs/single-char-in-character-classes": "error",
|
"sonarjs/single-char-in-character-classes": "deny",
|
||||||
"sonarjs/single-character-alternation": "error",
|
"sonarjs/single-character-alternation": "deny",
|
||||||
"sonarjs/slow-regex": "error",
|
"sonarjs/slow-regex": "deny",
|
||||||
"sonarjs/sql-queries": "error",
|
"sonarjs/sql-queries": "deny",
|
||||||
"sonarjs/stable-tests": "error",
|
"sonarjs/stable-tests": "deny",
|
||||||
"sonarjs/stateful-regex": "error",
|
"sonarjs/stateful-regex": "deny",
|
||||||
"sonarjs/strict-transport-security": "error",
|
"sonarjs/strict-transport-security": "deny",
|
||||||
"sonarjs/table-header": "error",
|
"sonarjs/table-header": "deny",
|
||||||
"sonarjs/table-header-reference": "error",
|
"sonarjs/table-header-reference": "deny",
|
||||||
"sonarjs/test-check-exception": "error",
|
"sonarjs/test-check-exception": "deny",
|
||||||
"sonarjs/todo-tag": "error",
|
"sonarjs/todo-tag": "deny",
|
||||||
"sonarjs/unused-import": "error",
|
"sonarjs/unused-import": "deny",
|
||||||
"sonarjs/unused-named-groups": "error",
|
"sonarjs/unused-named-groups": "deny",
|
||||||
"sonarjs/unverified-certificate": "error",
|
"sonarjs/unverified-certificate": "deny",
|
||||||
"sonarjs/unverified-hostname": "error",
|
"sonarjs/unverified-hostname": "deny",
|
||||||
"sonarjs/updated-const-var": "error",
|
"sonarjs/updated-const-var": "deny",
|
||||||
"sonarjs/updated-loop-counter": "error",
|
"sonarjs/updated-loop-counter": "deny",
|
||||||
"sonarjs/use-type-alias": "error",
|
"sonarjs/use-type-alias": "deny",
|
||||||
"sonarjs/void-use": "error",
|
"sonarjs/void-use": "deny",
|
||||||
"sonarjs/weak-ssl": "error",
|
"sonarjs/weak-ssl": "deny",
|
||||||
"sonarjs/x-powered-by": "error",
|
"sonarjs/x-powered-by": "deny",
|
||||||
"sonarjs/xml-parser-xxe": "error",
|
"sonarjs/xml-parser-xxe": "deny",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default sonarJsRules;
|
export default sonarJsRules;
|
||||||
|
|
|
||||||
|
|
@ -1,94 +1,374 @@
|
||||||
import type { DummyRuleMap } from "oxlint";
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
|
/** Longueur minimale de la description accompagnat une directive (p. ex. `@ts-expect-error`). */
|
||||||
|
const MIN_DIRECTIVE_DESCRIPTION_LENGTH = 10;
|
||||||
|
|
||||||
const typeScriptRules: DummyRuleMap = {
|
const typeScriptRules: DummyRuleMap = {
|
||||||
"@typescript-eslint/adjacent-overload-signatures": "error",
|
"typescript/adjacent-overload-signatures": "deny",
|
||||||
"@typescript-eslint/array-type": [
|
"typescript/array-type": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
default: "generic",
|
default: "generic",
|
||||||
readonly: "generic",
|
readonly: "generic",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"@typescript-eslint/await-thenable": "error",
|
"typescript/await-thenable": "deny",
|
||||||
"@typescript-eslint/ban-ts-comment": [
|
"typescript/ban-ts-comment": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
minimumDescriptionLength: 10,
|
minimumDescriptionLength: MIN_DIRECTIVE_DESCRIPTION_LENGTH,
|
||||||
|
"ts-check": false,
|
||||||
|
"ts-expect-error": "allow-with-description",
|
||||||
|
"ts-ignore": true,
|
||||||
|
"ts-nocheck": true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"@typescript-eslint/ban-tslint-comment": "error",
|
"typescript/ban-tslint-comment": "deny",
|
||||||
"@typescript-eslint/class-literal-property-style": "error",
|
"typescript/class-literal-property-style": ["deny", "fields"],
|
||||||
"@typescript-eslint/consistent-generic-constructors": "error",
|
"typescript/consistent-generic-constructors": [
|
||||||
"@typescript-eslint/consistent-indexed-object-style": "error",
|
"deny",
|
||||||
"@typescript-eslint/consistent-type-assertions": "error",
|
{
|
||||||
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
|
option: "constructor",
|
||||||
"@typescript-eslint/dot-notation": "error",
|
},
|
||||||
"@typescript-eslint/no-array-delete": "error",
|
],
|
||||||
"@typescript-eslint/no-base-to-string": "error",
|
"typescript/consistent-indexed-object-style": ["deny", "record"],
|
||||||
"@typescript-eslint/no-confusing-non-null-assertion": "error",
|
"typescript/consistent-return": [
|
||||||
"@typescript-eslint/no-confusing-void-expression": "error",
|
"deny",
|
||||||
"@typescript-eslint/no-deprecated": "error",
|
{
|
||||||
"@typescript-eslint/no-duplicate-enum-values": "error",
|
treatUndefinedAsUnspecified: false,
|
||||||
"@typescript-eslint/no-duplicate-type-constituents": "error",
|
},
|
||||||
"@typescript-eslint/no-dynamic-delete": "error",
|
],
|
||||||
"@typescript-eslint/no-empty-object-type": "error",
|
"typescript/consistent-type-assertions": [
|
||||||
"@typescript-eslint/no-explicit-any": "error",
|
"deny",
|
||||||
"@typescript-eslint/no-extra-non-null-assertion": "error",
|
{
|
||||||
"@typescript-eslint/no-extraneous-class": "error",
|
assertionStyle: "never",
|
||||||
"@typescript-eslint/no-floating-promises": "error",
|
},
|
||||||
"@typescript-eslint/no-for-in-array": "error",
|
],
|
||||||
"@typescript-eslint/no-implied-eval": "error",
|
"typescript/consistent-type-definitions": ["deny", "type"],
|
||||||
"@typescript-eslint/no-inferrable-types": "error",
|
"typescript/consistent-type-exports": [
|
||||||
"@typescript-eslint/no-invalid-void-type": "error",
|
"deny",
|
||||||
"@typescript-eslint/no-meaningless-void-operator": "error",
|
{
|
||||||
"@typescript-eslint/no-misused-new": "error",
|
fixMixedExportsWithInlineTypeSpecifier: false,
|
||||||
"@typescript-eslint/no-misused-promises": "error",
|
},
|
||||||
"@typescript-eslint/no-misused-spread": "error",
|
],
|
||||||
"@typescript-eslint/no-mixed-enums": "error",
|
"typescript/consistent-type-imports": [
|
||||||
"@typescript-eslint/no-namespace": "error",
|
"deny",
|
||||||
"@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error",
|
{
|
||||||
"@typescript-eslint/no-non-null-asserted-optional-chain": "error",
|
disallowTypeAnnotations: true,
|
||||||
"@typescript-eslint/no-non-null-assertion": "error",
|
fixStyle: "separate-type-imports",
|
||||||
"@typescript-eslint/no-redundant-type-constituents": "error",
|
prefer: "type-imports",
|
||||||
"@typescript-eslint/no-require-imports": "error",
|
},
|
||||||
"@typescript-eslint/no-this-alias": "error",
|
],
|
||||||
"@typescript-eslint/no-unnecessary-condition": "error",
|
"typescript/dot-notation": [
|
||||||
"@typescript-eslint/no-unnecessary-template-expression": "error",
|
"deny",
|
||||||
"@typescript-eslint/no-unnecessary-type-arguments": "error",
|
{
|
||||||
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
allowIndexSignaturePropertyAccess: false,
|
||||||
"@typescript-eslint/no-unnecessary-type-constraint": "error",
|
allowKeywords: false,
|
||||||
"@typescript-eslint/no-unnecessary-type-conversion": "error",
|
allowPattern: "",
|
||||||
"@typescript-eslint/no-unsafe-argument": "error",
|
allowPrivateClassPropertyAccess: false,
|
||||||
"@typescript-eslint/no-unsafe-assignment": "error",
|
allowProtectedClassPropertyAccess: false,
|
||||||
"@typescript-eslint/no-unsafe-call": "error",
|
},
|
||||||
"@typescript-eslint/no-unsafe-declaration-merging": "error",
|
],
|
||||||
"@typescript-eslint/no-unsafe-enum-comparison": "error",
|
"typescript/explicit-function-return-type": [
|
||||||
"@typescript-eslint/no-unsafe-function-type": "error",
|
"deny",
|
||||||
"@typescript-eslint/no-unsafe-member-access": "error",
|
{
|
||||||
"@typescript-eslint/no-unsafe-return": "error",
|
allowConciseArrowFunctionExpressionsStartingWithVoid: false,
|
||||||
"@typescript-eslint/no-unsafe-unary-minus": "error",
|
allowDirectConstAssertionInArrowFunctions: true,
|
||||||
"@typescript-eslint/no-useless-default-assignment": "error",
|
allowedNames: [],
|
||||||
"@typescript-eslint/no-wrapper-object-types": "error",
|
allowExpressions: false,
|
||||||
"@typescript-eslint/non-nullable-type-assertion-style": "error",
|
allowFunctionsWithoutTypeParameters: false,
|
||||||
"@typescript-eslint/prefer-as-const": "error",
|
allowHigherOrderFunctions: true,
|
||||||
"@typescript-eslint/prefer-find": "error",
|
allowIIFEs: false,
|
||||||
"@typescript-eslint/prefer-for-of": "error",
|
allowTypedFunctionExpressions: true,
|
||||||
"@typescript-eslint/prefer-function-type": "error",
|
},
|
||||||
"@typescript-eslint/prefer-includes": "error",
|
],
|
||||||
"@typescript-eslint/prefer-literal-enum-member": "error",
|
"typescript/explicit-module-boundary-types": [
|
||||||
"@typescript-eslint/prefer-namespace-keyword": "error",
|
"deny",
|
||||||
"@typescript-eslint/prefer-nullish-coalescing": "error",
|
{
|
||||||
"@typescript-eslint/prefer-optional-chain": "error",
|
allowArgumentsExplicitlyTypedAsAny: false,
|
||||||
"@typescript-eslint/prefer-promise-reject-errors": "error",
|
allowDirectConstAssertionInArrowFunctions: true,
|
||||||
"@typescript-eslint/prefer-readonly": "error",
|
allowedNames: [],
|
||||||
"@typescript-eslint/prefer-reduce-type-parameter": "error",
|
allowHigherOrderFunctions: true,
|
||||||
"@typescript-eslint/prefer-regexp-exec": "error",
|
allowOverloadFunctions: false,
|
||||||
"@typescript-eslint/prefer-return-this-type": "error",
|
allowTypedFunctionExpressions: true,
|
||||||
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
},
|
||||||
"@typescript-eslint/related-getter-setter-pairs": "error",
|
],
|
||||||
"@typescript-eslint/require-await": "error",
|
"typescript/no-array-delete": "deny",
|
||||||
"@typescript-eslint/restrict-plus-operands": [
|
"typescript/no-base-to-string": [
|
||||||
"error",
|
"deny",
|
||||||
|
{
|
||||||
|
checkUnknown: true,
|
||||||
|
ignoredTypeNames: ["deny", "RegExp", "URL", "URLSearchParams"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-confusing-non-null-assertion": "deny",
|
||||||
|
"typescript/no-confusing-void-expression": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreArrowShorthand: false,
|
||||||
|
ignoreVoidOperator: false,
|
||||||
|
ignoreVoidReturningFunctions: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-deprecated": "deny",
|
||||||
|
"typescript/no-duplicate-enum-values": "deny",
|
||||||
|
"typescript/no-duplicate-type-constituents": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreIntersections: false,
|
||||||
|
ignoreUnions: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-dynamic-delete": "deny",
|
||||||
|
"typescript/no-empty-interface": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowSingleExtends: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-empty-object-type": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowInterfaces: "never",
|
||||||
|
allowObjectTypes: "never",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-explicit-any": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
fixToUnknown: true,
|
||||||
|
ignoreRestArgs: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-extra-non-null-assertion": "deny",
|
||||||
|
"typescript/no-extraneous-class": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowConstructorOnly: false,
|
||||||
|
allowEmpty: false,
|
||||||
|
allowStaticOnly: false,
|
||||||
|
allowWithDecorator: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-floating-promises": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowForKnownSafeCalls: [],
|
||||||
|
allowForKnownSafePromises: [],
|
||||||
|
checkThenables: true,
|
||||||
|
ignoreIIFE: false,
|
||||||
|
ignoreVoid: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-for-in-array": "deny",
|
||||||
|
"typescript/no-implied-eval": "deny",
|
||||||
|
"typescript/no-import-type-side-effects": "deny",
|
||||||
|
//
|
||||||
|
"typescript/no-inferrable-types": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreParameters: true,
|
||||||
|
ignoreProperties: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-invalid-void-type": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowAsThisParameter: false,
|
||||||
|
allowInGenericTypeArguments: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-meaningless-void-operator": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
checkNever: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-misused-new": "deny",
|
||||||
|
"typescript/no-misused-promises": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
checksConditionals: true,
|
||||||
|
checksSpreads: true,
|
||||||
|
checksVoidReturn: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-misused-spread": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allow: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-mixed-enums": "deny",
|
||||||
|
"typescript/no-namespace": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowDeclarations: false,
|
||||||
|
allowDefinitionFiles: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-non-null-asserted-nullish-coalescing": "deny",
|
||||||
|
"typescript/no-non-null-asserted-optional-chain": "deny",
|
||||||
|
"typescript/no-non-null-assertion": "deny",
|
||||||
|
"typescript/no-redundant-type-constituents": "deny",
|
||||||
|
"typescript/no-require-imports": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allow: [],
|
||||||
|
allowAsImport: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-this-alias": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowDestructuring: false,
|
||||||
|
allowedNames: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// J'apprécie de pouvoir être explicite dans la comparaison.
|
||||||
|
"typescript/no-unnecessary-boolean-literal-compare": "allow",
|
||||||
|
"typescript/no-unnecessary-condition": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowConstantLoopConditions: "never",
|
||||||
|
checkTypePredicates: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-unnecessary-parameter-property-assignment": "deny",
|
||||||
|
"typescript/no-unnecessary-qualifier": "deny",
|
||||||
|
"typescript/no-unnecessary-template-expression": "deny",
|
||||||
|
"typescript/no-unnecessary-type-arguments": "deny",
|
||||||
|
"typescript/no-unnecessary-type-assertion": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
checkLiteralConstAssertions: false,
|
||||||
|
typesToIgnore: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-unnecessary-type-constraint": "deny",
|
||||||
|
"typescript/no-unnecessary-type-conversion": "deny",
|
||||||
|
"typescript/no-unnecessary-type-parameters": "deny",
|
||||||
|
"typescript/no-unsafe-argument": "deny",
|
||||||
|
"typescript/no-unsafe-assignment": "deny",
|
||||||
|
"typescript/no-unsafe-call": "deny",
|
||||||
|
"typescript/no-unsafe-declaration-merging": "deny",
|
||||||
|
"typescript/no-unsafe-enum-comparison": "deny",
|
||||||
|
"typescript/no-unsafe-function-type": "deny",
|
||||||
|
"typescript/no-unsafe-member-access": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowOptionalChaining: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/no-unsafe-return": "deny",
|
||||||
|
"typescript/no-unsafe-type-assertion": "deny",
|
||||||
|
"typescript/no-unsafe-unary-minus": "deny",
|
||||||
|
"typescript/no-useless-default-assignment": "deny",
|
||||||
|
"typescript/no-useless-empty-export": "deny",
|
||||||
|
"typescript/no-wrapper-object-types": "deny",
|
||||||
|
"typescript/non-nullable-type-assertion-style": "allow",
|
||||||
|
"typescript/only-throw-error": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allow: [],
|
||||||
|
allowRethrowing: true,
|
||||||
|
allowThrowingAny: false,
|
||||||
|
allowThrowingUnknown: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/parameter-properties": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
prefer: "class-property",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/prefer-as-const": "deny",
|
||||||
|
"typescript/prefer-enum-initializers": "deny",
|
||||||
|
"typescript/prefer-find": "deny",
|
||||||
|
"typescript/prefer-for-of": "deny",
|
||||||
|
"typescript/prefer-function-type": "deny",
|
||||||
|
"typescript/prefer-includes": "deny",
|
||||||
|
|
||||||
|
"typescript/prefer-literal-enum-member": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowBitwiseExpressions: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/prefer-nullish-coalescing": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreBooleanCoercion: false,
|
||||||
|
ignoreConditionalTests: true,
|
||||||
|
ignoreIfStatements: false,
|
||||||
|
ignoreMixedLogicalExpressions: false,
|
||||||
|
ignorePrimitives: false,
|
||||||
|
ignoreTernaryTests: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/prefer-optional-chain": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
checkAny: true,
|
||||||
|
checkBigInt: true,
|
||||||
|
checkBoolean: true,
|
||||||
|
checkNumber: true,
|
||||||
|
checkString: true,
|
||||||
|
checkUnknown: true,
|
||||||
|
requireNullish: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/prefer-promise-reject-errors": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowEmptyReject: false,
|
||||||
|
allowThrowingAny: false,
|
||||||
|
allowThrowingUnknown: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/prefer-readonly": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
onlyInlineLambdas: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
// Nécessite trop de bruit dans le code avec l'ajout d'annotations de type `Readonly`.
|
||||||
|
"typescript/prefer-readonly-parameter-types": [
|
||||||
|
"allow",
|
||||||
|
{
|
||||||
|
allow: [],
|
||||||
|
checkParameterProperties: true,
|
||||||
|
ignoreInferredTypes: true,
|
||||||
|
treatMethodsAsReadonly: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/prefer-reduce-type-parameter": "deny",
|
||||||
|
"typescript/prefer-regexp-exec": "deny",
|
||||||
|
"typescript/prefer-return-this-type": "deny",
|
||||||
|
"typescript/prefer-string-starts-ends-with": ["deny", { allowSingleElementEquality: "never" }],
|
||||||
|
// Règle rendue caduque par typescript/ban-ts-comment.
|
||||||
|
"typescript/prefer-ts-expect-error": "allow",
|
||||||
|
"typescript/promise-function-async": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowAny: false,
|
||||||
|
allowedPromiseNames: [],
|
||||||
|
checkArrowFunctions: true,
|
||||||
|
checkFunctionDeclarations: true,
|
||||||
|
checkFunctionExpressions: true,
|
||||||
|
checkMethodDeclarations: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/related-getter-setter-pairs": "deny",
|
||||||
|
"typescript/require-array-sort-compare": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreStringArrays: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/require-await": "deny",
|
||||||
|
"typescript/restrict-plus-operands": [
|
||||||
|
"deny",
|
||||||
{
|
{
|
||||||
allowAny: false,
|
allowAny: false,
|
||||||
allowBoolean: false,
|
allowBoolean: false,
|
||||||
|
|
@ -97,9 +377,10 @@ const typeScriptRules: DummyRuleMap = {
|
||||||
allowRegExp: false,
|
allowRegExp: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"@typescript-eslint/restrict-template-expressions": [
|
"typescript/restrict-template-expressions": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
|
allow: [{ from: "lib", name: ["Error", "URL", "URLSearchParams"] }],
|
||||||
allowAny: false,
|
allowAny: false,
|
||||||
allowBoolean: false,
|
allowBoolean: false,
|
||||||
allowNever: false,
|
allowNever: false,
|
||||||
|
|
@ -108,12 +389,57 @@ const typeScriptRules: DummyRuleMap = {
|
||||||
allowRegExp: false,
|
allowRegExp: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"@typescript-eslint/return-await": ["error", "error-handling-correctness-only"],
|
"typescript/return-await": ["deny", "error-handling-correctness-only"],
|
||||||
"@typescript-eslint/switch-exhaustiveness-check": "error",
|
"typescript/strict-boolean-expressions": [
|
||||||
"@typescript-eslint/triple-slash-reference": "error",
|
"deny",
|
||||||
"@typescript-eslint/unbound-method": "error",
|
{
|
||||||
"@typescript-eslint/unified-signatures": "error",
|
allowAny: false,
|
||||||
"@typescript-eslint/use-unknown-in-catch-callback-variable": "error",
|
allowNullableBoolean: true,
|
||||||
|
allowNullableEnum: true,
|
||||||
|
allowNullableNumber: false,
|
||||||
|
allowNullableObject: false,
|
||||||
|
allowNullableString: false,
|
||||||
|
allowNumber: false,
|
||||||
|
allowString: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/strict-void-return": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowReturnAny: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/switch-exhaustiveness-check": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowDefaultCaseForExhaustiveSwitch: true,
|
||||||
|
considerDefaultExhaustiveForUnions: false,
|
||||||
|
defaultCaseCommentPattern: "@skip-exhaustive-check",
|
||||||
|
requireDefaultForNonUnion: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/triple-slash-reference": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
lib: "never",
|
||||||
|
path: "never",
|
||||||
|
types: "prefer-import",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/unbound-method": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreStatic: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/unified-signatures": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignoreDifferentlyNamedParameters: false,
|
||||||
|
ignoreOverloadsWithDifferentJSDoc: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"typescript/use-unknown-in-catch-callback-variable": "deny",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default typeScriptRules;
|
export default typeScriptRules;
|
||||||
|
|
|
||||||
642
rules/unicorn.ts
642
rules/unicorn.ts
|
|
@ -1,121 +1,545 @@
|
||||||
import type { DummyRuleMap } from "oxlint";
|
import type { DummyRuleMap } from "oxlint";
|
||||||
|
|
||||||
const unicornRules: DummyRuleMap = {
|
const unicornRules: DummyRuleMap = {
|
||||||
"unicorn/catch-error-name": "error",
|
/**
|
||||||
"unicorn/consistent-date-clone": "error",
|
* This rule enforces consistent and descriptive naming for error variables in `catch` statements, preventing the use
|
||||||
"unicorn/consistent-empty-array-spread": "error",
|
* of vague names like `badName` or _ when the error is used.
|
||||||
"unicorn/consistent-existence-index-check": "error",
|
*
|
||||||
"unicorn/custom-error-definition": "error",
|
* Using non-descriptive names like `badName` or _ makes the code harder to read and understand, especially when
|
||||||
"unicorn/error-message": "error",
|
* debugging. It's important to use clear, consistent names to represent errors.
|
||||||
"unicorn/escape-case": "error",
|
*/
|
||||||
|
"unicorn/catch-error-name": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
ignore: ["_"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
/** Enforces consistent usage of the `assert` module. */
|
||||||
|
"unicorn/consistent-assert": "deny",
|
||||||
|
/**
|
||||||
|
* The `Date` constructor can clone a `Date` object directly when passed as an argument, making timestamp conversion
|
||||||
|
* unnecessary. This rule enforces the use of the direct `Date` cloning instead of using `.getTime()` for conversion.
|
||||||
|
*
|
||||||
|
* Using `.getTime()` to convert a `Date` object to a timestamp and then back to a `Date` is redundant and
|
||||||
|
* unnecessary. Simply passing the `Date` object to the `Date` constructor is cleaner and more efficient.
|
||||||
|
*/
|
||||||
|
"unicorn/consistent-date-clone": "deny",
|
||||||
|
/**
|
||||||
|
* When spreading a ternary in an array, we can use both `[]` and `''` as fallbacks, but it's better to have
|
||||||
|
* consistent types in both branches.
|
||||||
|
*/
|
||||||
|
"unicorn/consistent-empty-array-spread": "deny",
|
||||||
|
/**
|
||||||
|
* Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and
|
||||||
|
* `findLastIndex()`. This ensures that comparisons are performed in a standard and clear way.
|
||||||
|
*
|
||||||
|
* This rule is meant to enforce a specific style and improve code clarity. Using inconsistent comparison styles
|
||||||
|
* (e.g., `index < 0`, `index >= 0`) can make the intention behind the code unclear, especially in large codebases.
|
||||||
|
*/
|
||||||
|
"unicorn/consistent-existence-index-check": "deny",
|
||||||
|
/**
|
||||||
|
* Enforces the only valid way of `Error` subclassing. It works with any super class that ends in `Error`.
|
||||||
|
*
|
||||||
|
* Incorrectly defined custom errors can lead to unexpected behavior when catching and identifying errors. Missing
|
||||||
|
* `super()` calls, wrong `name` property values, or non-standard class names make error handling unreliable.
|
||||||
|
*/
|
||||||
|
"unicorn/custom-error-definition": "deny",
|
||||||
|
/**
|
||||||
|
* Removes the extra spaces or new line characters inside a pair of braces that does not contain additional code. This
|
||||||
|
* ensures that braces are clean and do not contain unnecessary spaces or newlines.
|
||||||
|
*
|
||||||
|
* Extra spaces inside braces can negatively impact the readability of the code. Keeping braces clean and free of
|
||||||
|
* unnecessary characters improves consistency and makes the code easier to understand and maintain.
|
||||||
|
*/
|
||||||
|
"unicorn/empty-brace-spaces": "deny",
|
||||||
|
/**
|
||||||
|
* Enforces providing a `message` when creating built-in `Error` objects to improve readability and debugging.
|
||||||
|
*
|
||||||
|
* Throwing an `Error` without a message, like throw new `Error()`, provides no context on what went wrong, making
|
||||||
|
* debugging harder. A clear error message improves code clarity and helps developers quickly identify issues.
|
||||||
|
*/
|
||||||
|
"unicorn/error-message": "deny",
|
||||||
|
/**
|
||||||
|
* Enforces defining escape sequence values with uppercase characters rather than lowercase ones. This promotes
|
||||||
|
* readability by making the escaped value more distinguishable from the identifier.
|
||||||
|
*/
|
||||||
|
"unicorn/escape-case": "deny",
|
||||||
|
/** Enforce explicitly comparing the `length` or `size` property of a value. */
|
||||||
"unicorn/explicit-length-check": [
|
"unicorn/explicit-length-check": [
|
||||||
"error",
|
"deny",
|
||||||
{
|
{
|
||||||
"non-zero": "not-equal",
|
"non-zero": "not-equal",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"unicorn/new-for-builtins": "error",
|
/**
|
||||||
"unicorn/no-abusive-eslint-disable": "error",
|
* Enforces a consistent case style for filenames to improve project organization and maintainability. By default,
|
||||||
"unicorn/no-accessor-recursion": "error",
|
* `kebab-case` is enforced, but other styles can be configured.
|
||||||
"unicorn/no-anonymous-default-export": "error",
|
*
|
||||||
"unicorn/no-array-method-this-argument": "error",
|
* Files named `index.js`, `index.ts`, etc. are exempt from this rule as they cannot reliably be renamed to other
|
||||||
"unicorn/no-array-reverse": "error",
|
* casings (mainly just a problem with PascalCase).
|
||||||
"unicorn/no-array-sort": "error",
|
*
|
||||||
"unicorn/no-await-in-promise-methods": "error",
|
* Inconsistent file naming conventions make it harder to locate files, navigate projects, and enforce consistency
|
||||||
"unicorn/no-console-spaces": "error",
|
* across a codebase. Standardizing naming conventions improves readability, reduces cognitive overhead, and aligns
|
||||||
"unicorn/no-document-cookie": "error",
|
* with best practices in large-scale development.
|
||||||
"unicorn/no-empty-file": "error",
|
*/
|
||||||
"unicorn/no-hex-escape": "error",
|
"unicorn/filename-case": [
|
||||||
"unicorn/no-instanceof-builtins": "error",
|
"deny",
|
||||||
"unicorn/no-invalid-fetch-options": "error",
|
{
|
||||||
"unicorn/no-invalid-remove-event-listener": "error",
|
case: "kebabCase",
|
||||||
"unicorn/no-lonely-if": "error",
|
ignore: "",
|
||||||
"unicorn/no-magic-array-flat-depth": "error",
|
multipleFileExtensions: true,
|
||||||
"unicorn/no-negated-condition": "error",
|
},
|
||||||
"unicorn/no-negation-in-equality-check": "error",
|
],
|
||||||
"unicorn/no-nested-ternary": "error",
|
/** Enforces the use of `new` for many builtins and disallow it for some other. */
|
||||||
"unicorn/no-new-array": "error",
|
"unicorn/new-for-builtins": "deny",
|
||||||
"unicorn/no-new-buffer": "error",
|
/** Disallows `oxlint-disable` or `eslint-disable` comments without specifying rules. */
|
||||||
"unicorn/no-null": "error",
|
"unicorn/no-abusive-eslint-disable": "deny",
|
||||||
"unicorn/no-object-as-default-parameter": "error",
|
"unicorn/no-accessor-recursion": "deny",
|
||||||
"unicorn/no-process-exit": "error",
|
/** Disallows anonymous functions and classes as default exports. */
|
||||||
"unicorn/no-single-promise-in-promise-methods": "error",
|
"unicorn/no-anonymous-default-export": "deny",
|
||||||
"unicorn/no-static-only-class": "error",
|
/**
|
||||||
"unicorn/no-thenable": "error",
|
* Prevents passing a function reference directly to iterator methods.
|
||||||
"unicorn/no-this-assignment": "error",
|
*
|
||||||
"unicorn/no-typeof-undefined": "error",
|
* Passing functions to iterator methods can cause issues when the function is changed without realizing that the
|
||||||
"unicorn/no-unnecessary-array-flat-depth": "error",
|
* iterator passes 2 more parameters to it (index and array). This can lead to unexpected behavior when the function
|
||||||
"unicorn/no-unnecessary-array-splice-count": "error",
|
* signature changes.
|
||||||
"unicorn/no-unnecessary-await": "error",
|
*
|
||||||
"unicorn/no-unnecessary-slice-end": "error",
|
* Cause des soucis avec les pipelines `Effect`.
|
||||||
"unicorn/no-unreadable-array-destructuring": "error",
|
*/
|
||||||
"unicorn/no-unreadable-iife": "error",
|
"unicorn/no-array-callback-reference": "allow",
|
||||||
"unicorn/no-useless-collection-argument": "error",
|
/**
|
||||||
"unicorn/no-useless-error-capture-stack-trace": "error",
|
* Forbids the use of Array#forEach in favor of a for loop.
|
||||||
"unicorn/no-useless-fallback-in-spread": "error",
|
*
|
||||||
"unicorn/no-useless-length-check": "error",
|
* Je préfère utiliser les méthodes `.forEach` dans les pipelines.
|
||||||
"unicorn/no-useless-promise-resolve-reject": "error",
|
*/
|
||||||
"unicorn/no-useless-spread": "error",
|
"unicorn/no-array-for-each": "allow",
|
||||||
"unicorn/no-useless-switch-case": "error",
|
/**
|
||||||
"unicorn/no-useless-undefined": "error",
|
* Disallows the use of the `thisArg` parameter in array iteration methods such as `map`, `filter`, `some`, `every`,
|
||||||
"unicorn/no-zero-fractions": "error",
|
* and similar.
|
||||||
"unicorn/number-literal-case": "error",
|
*
|
||||||
"unicorn/numeric-separators-style": "error",
|
* The `thisArg` parameter makes code harder to understand and reason about. Instead, prefer arrow functions or bind
|
||||||
"unicorn/prefer-add-event-listener": "error",
|
* explicitly in a clearer way. Arrow functions inherit `this` from the lexical scope, which is more intuitive and
|
||||||
"unicorn/prefer-array-find": "error",
|
* less error-prone.
|
||||||
"unicorn/prefer-array-flat": "error",
|
*
|
||||||
"unicorn/prefer-array-flat-map": "error",
|
* Cause des soucis avec les pipelines `Effect`.
|
||||||
"unicorn/prefer-array-index-of": "error",
|
*/
|
||||||
"unicorn/prefer-array-some": "error",
|
"unicorn/no-array-method-this-argument": "allow",
|
||||||
"unicorn/prefer-at": "error",
|
/**
|
||||||
"unicorn/prefer-bigint-literals": "error",
|
* Disallow `Array#reduce()` and `Array#reduceRight()`.
|
||||||
"unicorn/prefer-blob-reading-methods": "error",
|
*
|
||||||
"unicorn/prefer-class-fields": "error",
|
* `reduce()` est utile dans certains cas.
|
||||||
"unicorn/prefer-classlist-toggle": "error",
|
*/
|
||||||
"unicorn/prefer-code-point": "error",
|
"unicorn/no-array-reduce": "allow",
|
||||||
"unicorn/prefer-date-now": "error",
|
"unicorn/no-array-reverse": "deny",
|
||||||
"unicorn/prefer-default-parameters": "error",
|
"unicorn/no-array-sort": "deny",
|
||||||
"unicorn/prefer-dom-node-append": "error",
|
/**
|
||||||
"unicorn/prefer-dom-node-remove": "error",
|
* Disallows member access from `await` expressions.
|
||||||
"unicorn/prefer-dom-node-text-content": "error",
|
*
|
||||||
"unicorn/prefer-event-target": "error",
|
* When accessing a member from an `await` expression, the `await` expression has to be parenthesized, which is not
|
||||||
"unicorn/prefer-global-this": "error",
|
* readable.
|
||||||
"unicorn/prefer-includes": "error",
|
*/
|
||||||
"unicorn/prefer-keyboard-event-key": "error",
|
"unicorn/no-await-expression-member": "deny",
|
||||||
"unicorn/prefer-logical-operator-over-ternary": "error",
|
/** Disallow using await in Promise method parameters. */
|
||||||
"unicorn/prefer-math-min-max": "error",
|
"unicorn/no-await-in-promise-methods": "deny",
|
||||||
"unicorn/prefer-math-trunc": "error",
|
/**
|
||||||
"unicorn/prefer-modern-dom-apis": "error",
|
* Disallows leading/trailing space inside `console.log()` and similar methods.
|
||||||
"unicorn/prefer-modern-math-apis": "error",
|
*
|
||||||
"unicorn/prefer-module": "error",
|
* The `console.log()` method and similar methods join the parameters with a space so adding a leading/trailing space
|
||||||
"unicorn/prefer-native-coercion-functions": "error",
|
* to a parameter, results in two spaces being added.
|
||||||
"unicorn/prefer-negative-index": "error",
|
*/
|
||||||
"unicorn/prefer-node-protocol": "error",
|
"unicorn/no-console-spaces": "deny",
|
||||||
"unicorn/prefer-number-properties": "error",
|
/** Disallows direct use of [`document.cookie`](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie). */
|
||||||
"unicorn/prefer-object-from-entries": "error",
|
"unicorn/no-document-cookie": "deny",
|
||||||
"unicorn/prefer-optional-catch-binding": "error",
|
/** Disallows files that do not contain any meaningful code. */
|
||||||
"unicorn/prefer-prototype-methods": "error",
|
/** Disallows files that do not contain any meaningful code. */
|
||||||
"unicorn/prefer-reflect-apply": "error",
|
"unicorn/no-empty-file": "deny",
|
||||||
"unicorn/prefer-regexp-test": "error",
|
/** Enforces a convention of using Unicode escapes instead of hexadecimal escapes for consistency and clarity. */
|
||||||
"unicorn/prefer-response-static-json": "error",
|
"unicorn/no-hex-escape": "deny",
|
||||||
"unicorn/prefer-set-has": "error",
|
/** Disallows mutating a variable immediately after initialization. */
|
||||||
"unicorn/prefer-set-size": "error",
|
"unicorn/no-immediate-mutation": "deny",
|
||||||
"unicorn/prefer-string-raw": "error",
|
/** Require `Array.isArray()` instead of `instanceof Array`. */
|
||||||
"unicorn/prefer-string-replace-all": "error",
|
"unicorn/no-instanceof-array": "deny",
|
||||||
"unicorn/prefer-string-slice": "error",
|
"unicorn/no-instanceof-builtins": "deny",
|
||||||
"unicorn/prefer-string-starts-ends-with": "error",
|
/**
|
||||||
"unicorn/prefer-string-trim-start-end": "error",
|
* Disallow invalid options in `fetch()` and new `Request().` Specifically, this rule ensures that a body is not
|
||||||
"unicorn/prefer-structured-clone": "error",
|
* provided when the method is `GET` or `HEAD,` as it will result in a `TypeError.`
|
||||||
|
*/
|
||||||
|
"unicorn/no-invalid-fetch-options": "deny",
|
||||||
|
/** It warns when you use a non-function value as the second argument of `removeEventListener`. */
|
||||||
|
"unicorn/no-invalid-remove-event-listener": "deny",
|
||||||
|
/** Disallow using `length` as the end argument of a `slice` call. */
|
||||||
|
"unicorn/no-length-as-slice-end": "deny",
|
||||||
|
/** Disallow `if` statements as the only statement in `if` blocks without `else`. */
|
||||||
|
"unicorn/no-lonely-if": "deny",
|
||||||
|
/**
|
||||||
|
* Disallow magic numbers for
|
||||||
|
* [`Array.prototype.flat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat)
|
||||||
|
* depth.
|
||||||
|
*
|
||||||
|
* Magic numbers are hard to understand and maintain. When calling `Array.prototype.flat`, it is usually called with
|
||||||
|
* `1`, or `Infinity`. If you are using a different number, it is better to add a comment explaining the reason for
|
||||||
|
* the depth provided.
|
||||||
|
*/
|
||||||
|
"unicorn/no-magic-array-flat-depth": "deny",
|
||||||
|
"unicorn/no-negated-condition": "deny",
|
||||||
|
/** Disallow negated expressions on the left of (in)equality checks. */
|
||||||
|
"unicorn/no-negation-in-equality-check": "deny",
|
||||||
|
/**
|
||||||
|
* This rule disallows deeply nested ternary expressions. Nested ternary expressions that are only one level deep and
|
||||||
|
* wrapped in parentheses are allowed.
|
||||||
|
*
|
||||||
|
* Nesting ternary expressions can make code more difficult to understand.
|
||||||
|
*/
|
||||||
|
"unicorn/no-nested-ternary": "deny",
|
||||||
|
/** Disallow new `Array()`. */
|
||||||
|
"unicorn/no-new-array": "deny",
|
||||||
|
/** Disallows the deprecated new `Buffer()` constructor. */
|
||||||
|
"unicorn/no-new-buffer": "deny",
|
||||||
|
/**
|
||||||
|
* Disallow the use of the `null` literal, to encourage using undefined instead.
|
||||||
|
*
|
||||||
|
* There are some reasons for using `undefined` instead of `null`.
|
||||||
|
*
|
||||||
|
* - From experience, most developers use `null` and `undefined` inconsistently and interchangeably, and few know when
|
||||||
|
* to use which.
|
||||||
|
* - Supporting both `null` and `undefined` complicates input validation.
|
||||||
|
* - Using `null` makes TypeScript types more verbose: `type A = {foo?: string | null} vs type A = {foo?: string}`.
|
||||||
|
*/
|
||||||
|
"unicorn/no-null": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
checkStrictEquality: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
/** Disallow the use of an object literal as a default value for a parameter. */
|
||||||
|
"unicorn/no-object-as-default-parameter": "deny",
|
||||||
|
/**
|
||||||
|
* Disallow all usage of `process.exit()`.
|
||||||
|
*
|
||||||
|
* `process.exit()` should generally only be used in command-line utilities. In all other types of applications, the
|
||||||
|
* code should throw an error instead.
|
||||||
|
*/
|
||||||
|
"unicorn/no-process-exit": "deny",
|
||||||
|
/** Disallow passing single-element arrays to `Promise` methods. */
|
||||||
|
"unicorn/no-single-promise-in-promise-methods": "deny",
|
||||||
|
/** Disallow `class` declarations that exclusively contain `static` members. */
|
||||||
|
"unicorn/no-static-only-class": "deny",
|
||||||
|
/** Disallow defining a `then` property. */
|
||||||
|
"unicorn/no-thenable": "deny",
|
||||||
|
/** Disallow assigning `this` to a variable. */
|
||||||
|
"unicorn/no-this-assignment": "deny",
|
||||||
|
/** Disallow `typeof` comparisons with `undefined`. */
|
||||||
|
"unicorn/no-typeof-undefined": "deny",
|
||||||
|
/** Disallows passing `1` to `Array.prototype.flat`. */
|
||||||
|
"unicorn/no-unnecessary-array-flat-depth": "deny",
|
||||||
|
/**
|
||||||
|
* Disallows passing `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#splice()` or
|
||||||
|
* `Array#toSpliced()`.
|
||||||
|
*/
|
||||||
|
"unicorn/no-unnecessary-array-splice-count": "deny",
|
||||||
|
/** Disallow awaiting on non-`Promise` values. */
|
||||||
|
"unicorn/no-unnecessary-await": "deny",
|
||||||
|
/** Disallows unnecessarily passing a second argument to `slice(...)`, for cases where it would not change the result. */
|
||||||
|
"unicorn/no-unnecessary-slice-end": "deny",
|
||||||
|
/**
|
||||||
|
* Disallows destructuring values from an array in ways that are difficult to read.
|
||||||
|
*
|
||||||
|
* Destructuring can be very useful, but it can also make some code harder to read. This rule prevents ignoring
|
||||||
|
* consecutive values (e.g. `let [,,foo] = array`) when destructuring from an array.
|
||||||
|
*/
|
||||||
|
"unicorn/no-unreadable-array-destructuring": "deny",
|
||||||
|
/** This rule disallows IIFEs with a parenthesized arrow function body. */
|
||||||
|
"unicorn/no-unreadable-iife": "deny",
|
||||||
|
/**
|
||||||
|
* Disallow useless values or fallbacks in `Set`, `Map`, `WeakSet`, or `WeakMap`.
|
||||||
|
*
|
||||||
|
* It is unnecessary to pass an empty array or empty string when constructing a `Set`, `Map`, `WeakSet`, or `WeakMap`,
|
||||||
|
* since they accept nullish values.
|
||||||
|
*
|
||||||
|
* It is also unnecessary to provide a fallback for possible nullish values.
|
||||||
|
*/
|
||||||
|
"unicorn/no-useless-collection-argument": "deny",
|
||||||
|
/**
|
||||||
|
* Disallows unnecessary `Error.captureStackTrace(…)` in error constructors.
|
||||||
|
*
|
||||||
|
* Calling `Error.captureStackTrace(…)` inside the constructor of a built-in `Error` subclass is unnecessary, since
|
||||||
|
* the `Error` constructor calls it automatically.
|
||||||
|
*/
|
||||||
|
"unicorn/no-useless-error-capture-stack-trace": "deny",
|
||||||
|
/** Disallow useless fallback when spreading in object litterals. */
|
||||||
|
"unicorn/no-useless-fallback-in-spread": "deny",
|
||||||
|
/** It checks for an unnecessary array length check in a logical expression. */
|
||||||
|
"unicorn/no-useless-length-check": "deny",
|
||||||
|
/**
|
||||||
|
* Disallows returning values wrapped in `Promise.resolve` or `Promise.reject` in an async function or a
|
||||||
|
* `Promise#then/catch/finally` callback.
|
||||||
|
*/
|
||||||
|
"unicorn/no-useless-promise-resolve-reject": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
allowReject: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
/**
|
||||||
|
* Disallows using spread syntax in following, unnecessary cases:
|
||||||
|
*
|
||||||
|
* - Spread an array literal as elements of an array literal
|
||||||
|
* - Spread an array literal as arguments of a call or a new call
|
||||||
|
* - Spread an object literal as properties of an object literal
|
||||||
|
* - Use spread syntax to clone an array created inline
|
||||||
|
*/
|
||||||
|
"unicorn/no-useless-spread": "deny",
|
||||||
|
/** Disallows useless `default` cases in `switch` statements. */
|
||||||
|
"unicorn/no-useless-switch-case": "deny",
|
||||||
|
/** Prevents usage of undefined in cases where it would be useless. */
|
||||||
|
"unicorn/no-useless-undefined": "deny",
|
||||||
|
/**
|
||||||
|
* Prevents the use of zero fractions.
|
||||||
|
*
|
||||||
|
* There is no difference in JavaScript between, for example, `1,` `1.0` and `1.`, so prefer the former for consistency and brevity.
|
||||||
|
*/
|
||||||
|
"unicorn/no-zero-fractions": "deny",
|
||||||
|
/**
|
||||||
|
* This rule enforces proper case for numeric literals.
|
||||||
|
*
|
||||||
|
* When both an identifier and a numeric literal are in lower case, it can be hard to differentiate between them.
|
||||||
|
*/
|
||||||
|
"unicorn/number-literal-case": "deny",
|
||||||
|
/**
|
||||||
|
* Enforces a convention of grouping digits using numeric separators.
|
||||||
|
*
|
||||||
|
* A long series of digits can be difficult to read, and it can be difficult to determine the value of the number at a glance. Breaking up the digits with numeric separators (`_`) can greatly improve readability.
|
||||||
|
*/
|
||||||
|
"unicorn/numeric-separators-style": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
binary: {
|
||||||
|
groupLength: 3,
|
||||||
|
minimumDigits: 4,
|
||||||
|
},
|
||||||
|
hexadecimal: {
|
||||||
|
groupLength: 3,
|
||||||
|
minimumDigits: 4,
|
||||||
|
},
|
||||||
|
number: {
|
||||||
|
groupLength: 3,
|
||||||
|
minimumDigits: 4,
|
||||||
|
},
|
||||||
|
octal: {
|
||||||
|
groupLength: 3,
|
||||||
|
minimumDigits: 4,
|
||||||
|
},
|
||||||
|
onlyIfContainsSeparator: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"unicorn/prefer-add-event-listener": "deny",
|
||||||
|
/**
|
||||||
|
* Encourages using `Array.prototype.find` instead of `filter(...)[0]` or similar patterns when only the first
|
||||||
|
* matching element is needed.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-array-find": "deny",
|
||||||
|
/** Prefers `Array#flat()` over legacy techniques to flatten arrays. */
|
||||||
|
"unicorn/prefer-array-flat": "deny",
|
||||||
|
/** Prefers the use of `.flatMap()` when `map().flat()` are used together. */
|
||||||
|
"unicorn/prefer-array-flat-map": "deny",
|
||||||
|
/**
|
||||||
|
* Enforces using `indexOf` or `lastIndexOf` instead of `findIndex` or `findLastIndex` when the callback is a simple strict equality comparison.
|
||||||
|
*
|
||||||
|
* Using `findIndex(x => x === value)` is unnecessarily verbose when `indexOf(value)` accomplishes the same thing more concisely and clearly. It also avoids the overhead of creating a callback function.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-array-index-of": "deny",
|
||||||
|
/**
|
||||||
|
* Prefers using `Array#some()` over `Array#find()`, `Array#findLast()` with comparing to `undefined`, or
|
||||||
|
* `Array#findIndex()`, `Array#findLastIndex()` and a non-zero length check on the result of `Array#filter()`.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-array-some": "deny",
|
||||||
|
/**
|
||||||
|
* Prefer the `Array#at()` and `String#at()` methods for index access.
|
||||||
|
*
|
||||||
|
* This rule also discourages using `String#charAt()`.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-at": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Check all index access, not just special patterns like `array.length - 1`. When enabled, `array[0]`,
|
||||||
|
* `array[1]`, etc. will also be flagged.
|
||||||
|
*/
|
||||||
|
checkAllIndexAccess: true,
|
||||||
|
/**
|
||||||
|
* List of function names to treat as "get last element" functions. These functions will be checked for `.at(-1)`
|
||||||
|
* usage.
|
||||||
|
*/
|
||||||
|
getLastElementFunctions: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"unicorn/prefer-bigint-literals": "deny",
|
||||||
|
/**
|
||||||
|
* Recommends using `Blob#text()` and `Blob#arrayBuffer()` over `FileReader#readAsText()` and
|
||||||
|
* `FileReader#readAsArrayBuffer()`.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-blob-reading-methods": "deny",
|
||||||
|
"unicorn/prefer-class-fields": "deny",
|
||||||
|
"unicorn/prefer-classlist-toggle": "deny",
|
||||||
|
/**
|
||||||
|
* Prefers usage of `String.prototype.codePointAt` over `String.prototype.charCodeAt.` Prefers usage of
|
||||||
|
* `String.fromCodePoint` over `String.fromCharCode`.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-code-point": "deny",
|
||||||
|
/** Prefers use of `Date.now()` over new `Date().getTime()` or new `Date().valueOf()`. */
|
||||||
|
"unicorn/prefer-date-now": "deny",
|
||||||
|
"unicorn/prefer-default-parameters": "deny",
|
||||||
|
/**
|
||||||
|
* Enforces the use of, for example, `document.body.append(div);` over `document.body.appendChild(div);` for DOM
|
||||||
|
* nodes.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-dom-node-append": "deny",
|
||||||
|
/**
|
||||||
|
* Use `.dataset` on DOM elements over `getAttribute(…)`, `.setAttribute(…)`, `.removeAttribute(…)` and
|
||||||
|
* ``.hasAttribute(…)`.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-dom-node-dataset": "allow",
|
||||||
|
/** Prefers the use of `child.remove()` over `parentNode.removeChild(child)`. */
|
||||||
|
"unicorn/prefer-dom-node-remove": "deny",
|
||||||
|
"unicorn/prefer-dom-node-text-content": "deny",
|
||||||
|
/**
|
||||||
|
* Prefers `EventTarget` over `EventEmitter`.
|
||||||
|
*
|
||||||
|
* This rule reduces the bundle size and makes your code more cross-platform friendly.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-event-target": "deny",
|
||||||
|
"unicorn/prefer-global-this": "deny",
|
||||||
|
"unicorn/prefer-includes": "deny",
|
||||||
|
"unicorn/prefer-keyboard-event-key": "deny",
|
||||||
|
"unicorn/prefer-logical-operator-over-ternary": "deny",
|
||||||
|
/** Prefers use of `Math.min()` and `Math.max()` instead of ternary expressions when performing simple comparisons. */
|
||||||
|
"unicorn/prefer-math-min-max": "deny",
|
||||||
|
/** Prefers use of `Math.trunc()` instead of bitwise operations for clarity and more reliable results. */
|
||||||
|
"unicorn/prefer-math-trunc": "deny",
|
||||||
|
"unicorn/prefer-modern-dom-apis": "deny",
|
||||||
|
/**
|
||||||
|
* Checks for usage of legacy patterns for mathematical operations.
|
||||||
|
*
|
||||||
|
* Modern JavaScript provides more concise and readable alternatives to legacy patterns.
|
||||||
|
*
|
||||||
|
* Currently, the following cases are checked:
|
||||||
|
*
|
||||||
|
* - Prefer `Math.log10(x)` over alternatives
|
||||||
|
* - Prefer `Math.hypot(…)` over alternatives
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-modern-math-apis": "deny",
|
||||||
|
/**
|
||||||
|
* Prefer JavaScript modules (ESM) over CommonJS.
|
||||||
|
*
|
||||||
|
* CommonJS globals and patterns (`require`, `module`, `exports`, `__filename`, `__dirname`) make code harder to
|
||||||
|
* migrate and can block ESM-only features.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-module": "deny",
|
||||||
|
/** Prefers built in functions, over custom ones with the same functionality. */
|
||||||
|
"unicorn/prefer-native-coercion-functions": "deny",
|
||||||
|
"unicorn/prefer-negative-index": "deny",
|
||||||
|
/**
|
||||||
|
* Prefer using the `node:protocol` when importing Node.js builtin modules.
|
||||||
|
*
|
||||||
|
* Node.js builtin modules should be imported using the `node:` protocol to avoid ambiguity with local modules.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-node-protocol": "deny",
|
||||||
|
/**
|
||||||
|
* Disallows use of parseInt(), parseFloat(), isNan(), isFinite(), Nan, Infinity and -Infinity as global variables.
|
||||||
|
*
|
||||||
|
* ECMAScript 2015 moved globals onto the Number constructor for consistency and to slightly improve them. This rule
|
||||||
|
* enforces their usage to limit the usage of globals:
|
||||||
|
*
|
||||||
|
* - `Number.parseInt()` over `parseInt()`
|
||||||
|
* - `Number.parseFloat()` over `parseFloat()`
|
||||||
|
* - `Number.isNaN()` over `isNaN()` (they have slightly different behavior)
|
||||||
|
* - `Number.isFinite()` over `isFinite()` (they have slightly different behavior)
|
||||||
|
* - `Number.NaN` over `NaN`
|
||||||
|
* - `Number.POSITIVE_INFINITY` over `Infinity`
|
||||||
|
* - `Number.NEGATIVE_INFINITY` over `-Infinity`
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-number-properties": [
|
||||||
|
"deny",
|
||||||
|
{
|
||||||
|
/** If set to `true`, checks for usage of `Infinity` and `-Infinity` as global variables. */
|
||||||
|
checkInfinity: true,
|
||||||
|
/** If set to `true`, checks for usage of `NaN` as a global variable. */
|
||||||
|
checkNaN: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"unicorn/prefer-object-from-entries": "deny",
|
||||||
|
"unicorn/prefer-optional-catch-binding": "deny",
|
||||||
|
/**
|
||||||
|
* “Borrowing” a method from an instance of `Array` or `Object` is less clear than getting it from the corresponding
|
||||||
|
* prototype.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-prototype-methods": "deny",
|
||||||
|
/**
|
||||||
|
* Prefer `.querySelector()` over `.getElementById().` And prefer `.querySelectorAll()` over
|
||||||
|
* `.getElementsByClassName()`, `.getElementsByTagName()`, and `.getElementsByName()`.
|
||||||
|
*/
|
||||||
|
"unicorn/prefer-query-selector": "deny",
|
||||||
|
"unicorn/prefer-reflect-apply": "deny",
|
||||||
|
/** Prefers `RegExp#test()` over `String#match()` and `String#exec()`. */
|
||||||
|
"unicorn/prefer-regexp-test": "deny",
|
||||||
|
"unicorn/prefer-response-static-json": "deny",
|
||||||
|
/** Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. */
|
||||||
|
"unicorn/prefer-set-has": "deny",
|
||||||
|
/** Prefer `Set#size` over `Set#length` when the `Set` is converted to an array. */
|
||||||
|
"unicorn/prefer-set-size": "deny",
|
||||||
|
"unicorn/prefer-string-raw": "deny",
|
||||||
|
/** Prefers `String#replaceAll()` over `String#replace()` when using a regex with the global flag. */
|
||||||
|
"unicorn/prefer-string-replace-all": "deny",
|
||||||
|
/** Prefer `String#slice()` over `String#substr()` and `String#substring()`. */
|
||||||
|
"unicorn/prefer-string-slice": "deny",
|
||||||
|
/** Prefer `String#startsWith()` and `String#endsWith()` over using a regex with `/^foo/` or `/foo$/`. */
|
||||||
|
"unicorn/prefer-string-starts-ends-with": "deny",
|
||||||
|
"unicorn/prefer-string-trim-start-end": "deny",
|
||||||
|
"unicorn/prefer-structured-clone": "deny",
|
||||||
"unicorn/prefer-ternary": "off",
|
"unicorn/prefer-ternary": "off",
|
||||||
"unicorn/prefer-top-level-await": "error",
|
/** Prefer top-level await over top-level promises and async function calls. */
|
||||||
"unicorn/prefer-type-error": "error",
|
"unicorn/prefer-top-level-await": "deny",
|
||||||
"unicorn/relative-url-style": "error",
|
/** Enforce throwing a `TypeError` instead of a generic `Error` after a type checking if-statement. */
|
||||||
"unicorn/require-array-join-separator": "error",
|
"unicorn/prefer-type-error": "deny",
|
||||||
"unicorn/require-module-attributes": "error",
|
"unicorn/relative-url-style": "deny",
|
||||||
"unicorn/require-module-specifiers": "error",
|
"unicorn/require-array-join-separator": "deny",
|
||||||
"unicorn/require-number-to-fixed-digits-argument": "error",
|
/**
|
||||||
"unicorn/text-encoding-identifier-case": "error",
|
* This rule enforces non-empty attribute list in `import`/`export` statements and `import()` expressions.
|
||||||
"unicorn/throw-new-error": "error",
|
*
|
||||||
|
* Import attributes are meant to provide metadata about how a module should be loaded (e.g., with `{ type: "json"
|
||||||
|
* }`). An empty attribute object provides no information and should be removed.
|
||||||
|
*/
|
||||||
|
"unicorn/require-module-attributes": "deny",
|
||||||
|
"unicorn/require-module-specifiers": "deny",
|
||||||
|
/** Enforce using the digits argument with `Number#toFixed()`. */
|
||||||
|
"unicorn/require-number-to-fixed-digits-argument": "deny",
|
||||||
|
/**
|
||||||
|
* Requires empty switch cases to omit braces, while non-empty cases must use braces. This reduces visual clutter for
|
||||||
|
* empty cases and enforces proper scoping for non-empty ones.
|
||||||
|
*
|
||||||
|
* Using braces unnecessarily for empty cases adds visual noise, while omitting braces in non-empty cases can lead to
|
||||||
|
* scoping issues.
|
||||||
|
*/
|
||||||
|
"unicorn/switch-case-braces": ["deny", "avoid"],
|
||||||
|
/**
|
||||||
|
* This rule enforces consistent casing for text encoding identifiers, specifically:
|
||||||
|
*
|
||||||
|
* - `'utf8'` instead of `'UTF-8'` or `'utf-8'` (or `'utf-8'` if `withDash` is enabled) ;
|
||||||
|
* - `'ascii'` instead of `'ASCII'`.
|
||||||
|
*
|
||||||
|
* Inconsistent casing of encoding identifiers reduces code readability and can lead to subtle confusion across a
|
||||||
|
* codebase. Although casing is not strictly enforced by ECMAScript or Node.js, using lowercase is the conventional
|
||||||
|
* and widely recognized style.
|
||||||
|
*/
|
||||||
|
"unicorn/text-encoding-identifier-case": "deny",
|
||||||
|
/**
|
||||||
|
* This rule makes sure you always use new when throwing an error.
|
||||||
|
*
|
||||||
|
* In JavaScript, omitting `new` (e.g., `throw Error('message')`) is allowed, but it does not properly initialize the
|
||||||
|
* error object. This can lead to missing stack traces or incorrect prototype chains. Using `new` makes the intent
|
||||||
|
* clear, ensures consistent behavior, and helps avoid subtle bugs.
|
||||||
|
*/
|
||||||
|
"unicorn/throw-new-error": "deny",
|
||||||
};
|
};
|
||||||
|
|
||||||
export default unicornRules;
|
export default unicornRules;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue