1
1
mirror of https://github.com/theoludwig/eslint-config-conventions.git synced 2024-12-18 21:45:04 +01:00

Compare commits

..

9 Commits

Author SHA1 Message Date
14d3e0ba30
chore: usage of projectService for tsconfig.json 2024-09-18 00:32:33 +02:00
921aacdc9b
test: easier to debug in case of failures 2024-09-18 00:29:14 +02:00
a03e2bd109
fix: relax @typescript-eslint/return-await 2024-09-18 00:26:51 +02:00
2db017e805
test: ensure we do not use deprecated rules 2024-09-18 00:20:22 +02:00
19f74fc6a2
feat: add unicorn/prefer-structured-clone
BREAKING CHANGE: New rule introduced
2024-09-17 23:58:02 +02:00
bcd9fe10d3
fix: remove deprecated TypeScript ESLint rules
`@typescript-eslint/no-loss-of-precision`
`@typescript-eslint/no-var-requires`
`@typescript-eslint/prefer-ts-expect-error`
`@typescript-eslint/no-throw-literal`
`@typescript-eslint/no-useless-template-literals`
`@typescript-eslint/ban-types`
`@typescript-eslint/type-annotation-spacing`

Fixes #4
2024-09-17 23:43:56 +02:00
c2147dbc7a
fix: remove deprecated ESLint rules
`no-confusing-arrow`
`no-floating-decimal`
`no-mixed-operators`
`quote-props`
`arrow-parens`
2024-09-17 23:17:45 +02:00
e6a222d01f
build(deps): update latest
BREAKING CHANGE: peerDependencies:
`eslint@^8.57.0`
`eslint-plugin-promise@^7.0.0`
`eslint-plugin-unicorn@^55.0.0`
`@typescript-eslint/eslint-plugin@^8.0.0`
`@typescript-eslint/parser@^8.0.0`
2024-09-17 23:11:38 +02:00
eac273c076
feat: add @typescript-eslint/prefer-return-this-type
BREAKING CHANGE: New rule introduced
2024-07-27 09:00:42 +02:00
7 changed files with 394 additions and 462 deletions

View File

@ -93,25 +93,12 @@
],
"no-array-constructor": "error",
"no-caller": "error",
"no-confusing-arrow": "error",
"no-delete-var": "error",
"no-empty": ["error", { "allowEmptyCatch": true }],
"no-empty-static-block": "error",
"no-eval": "error",
"no-floating-decimal": "error",
"no-global-assign": "error",
"no-implied-eval": "error",
"no-mixed-operators": [
"error",
{
"groups": [
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
["&&", "||"],
["in", "instanceof"]
],
"allowSamePrecedence": true
}
],
"no-multi-str": "error",
"no-new-func": "error",
"no-object-constructor": "error",
@ -148,13 +135,11 @@
"prefer-object-has-own": "error",
"prefer-promise-reject-errors": "error",
"prefer-regex-literals": ["error", { "disallowRedundantWrapping": true }],
"quote-props": ["error", "as-needed"],
"radix": "error",
"yoda": ["error", "never"],
"curly": ["error", "all"],
"func-style": ["error", "expression"],
"prefer-arrow-callback": "error",
"arrow-parens": ["error", "always"],
"arrow-body-style": ["error", "always"],
"promise/param-names": "error",
@ -188,6 +173,7 @@
"unicorn/require-array-join-separator": "error",
"unicorn/prefer-number-properties": "error",
"unicorn/prefer-modern-math-apis": "error",
"unicorn/prefer-structured-clone": "error",
"unicorn/template-indent": "error"
},
"overrides": [
@ -199,8 +185,6 @@
"no-undef": "off",
"no-dupe-class-members": "off",
"@typescript-eslint/no-dupe-class-members": "error",
"no-loss-of-precision": "off",
"@typescript-eslint/no-loss-of-precision": "error",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": [
"error",
@ -231,7 +215,7 @@
{ "builtinGlobals": false }
],
"no-throw-literal": "off",
"@typescript-eslint/no-throw-literal": "error",
"@typescript-eslint/only-throw-error": "error",
"no-unused-expressions": "off",
"@typescript-eslint/no-unused-expressions": [
"error",
@ -243,14 +227,15 @@
],
"no-useless-constructor": "off",
"@typescript-eslint/no-useless-constructor": "error",
"@typescript-eslint/no-useless-template-literals": "error",
"@typescript-eslint/no-unnecessary-template-expression": "error",
"@typescript-eslint/adjacent-overload-signatures": "error",
"@typescript-eslint/array-type": [
"error",
{ "default": "array-simple" }
],
"@typescript-eslint/ban-types": "error",
"@typescript-eslint/no-unsafe-function-type": "error",
"@typescript-eslint/no-wrapper-object-types": "error",
"@typescript-eslint/consistent-type-definitions": [
"error",
"interface"
@ -295,7 +280,6 @@
],
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/no-unsafe-unary-minus": "error",
"@typescript-eslint/no-array-delete": "error",
@ -313,7 +297,7 @@
],
"@typescript-eslint/prefer-readonly": "error",
"@typescript-eslint/prefer-reduce-type-parameter": "error",
"@typescript-eslint/prefer-ts-expect-error": "error",
"@typescript-eslint/prefer-return-this-type": "error",
"@typescript-eslint/promise-function-async": "error",
"prefer-promise-reject-errors": "off",
"@typescript-eslint/prefer-promise-reject-errors": "error",
@ -329,7 +313,6 @@
"error",
{ "allowNumber": true }
],
"@typescript-eslint/return-await": ["error", "always"],
"@typescript-eslint/strict-boolean-expressions": [
"error",
{
@ -341,8 +324,7 @@
"allowNullableNumber": false,
"allowAny": false
}
],
"@typescript-eslint/type-annotation-spacing": "error"
]
}
}
]

View File

@ -31,4 +31,4 @@ jobs:
steps:
- uses: "actions/checkout@v4.1.7"
- uses: "wagoid/commitlint-github-action@v6.0.1"
- uses: "wagoid/commitlint-github-action@v6.1.2"

View File

@ -35,9 +35,9 @@ More information about **formatting rules** vs **code-quality rules** can be fou
```sh
npm install --save-dev \
eslint@^8.56.0 \
eslint-plugin-promise@^6.1.1 \
eslint-plugin-unicorn@^53.0.0 \
eslint@^8.57.0 \
eslint-plugin-promise@^7.0.0 \
eslint-plugin-unicorn@^55.0.0 \
eslint-config-conventions@latest
```
@ -55,9 +55,9 @@ If you want to use **TypeScript**, you also need to install:
```sh
npm install --save-dev \
"typescript@^5.3.3" \
"@typescript-eslint/eslint-plugin@>=6.21.0" \
"@typescript-eslint/parser@>=6.21.0"
"typescript@^5.6.2" \
"@typescript-eslint/eslint-plugin@^8.0.0" \
"@typescript-eslint/parser@^8.0.0"
```
Dependencies are:
@ -72,6 +72,7 @@ Dependencies are:
```json
{
"root": true,
"extends": ["conventions"],
"plugins": ["promise", "unicorn"]
}
@ -81,6 +82,7 @@ Dependencies are:
```json
{
"root": true,
"extends": ["conventions"],
"plugins": ["promise", "unicorn"],
"overrides": [
@ -89,7 +91,7 @@ Dependencies are:
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"parserOptions": {
"project": "./tsconfig.json"
"projectService": true
}
}
]

View File

@ -1,6 +1,6 @@
{
"extends": "./index.js",
"parserOptions": {
"project": "./tsconfig.json"
"projectService": true
}
}

735
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -43,23 +43,23 @@
"release": "semantic-release"
},
"peerDependencies": {
"eslint": "^8.56.0",
"eslint-plugin-promise": "^6.1.1 || ^7.0.0",
"eslint-plugin-unicorn": "^51.0.1 || ^52.0.0 || ^53.0.0 || ^54.0.0 || ^55.0.0"
"eslint": "^8.57.0",
"eslint-plugin-promise": "^7.0.0",
"eslint-plugin-unicorn": "^55.0.0"
},
"devDependencies": {
"@types/eslint": "8.56.11",
"@types/node": "20.14.12",
"@typescript-eslint/eslint-plugin": "7.17.0",
"@typescript-eslint/parser": "7.17.0",
"@types/eslint": "8.56.12",
"@types/node": "22.5.5",
"@typescript-eslint/eslint-plugin": "8.6.0",
"@typescript-eslint/parser": "8.6.0",
"editorconfig-checker": "5.1.8",
"eslint": "8.57.0",
"eslint-plugin-promise": "7.0.0",
"eslint": "8.57.1",
"eslint-plugin-promise": "7.1.0",
"eslint-plugin-unicorn": "55.0.0",
"markdownlint-cli2": "0.13.0",
"markdownlint-cli2": "0.14.0",
"markdownlint-rule-relative-links": "3.0.0",
"prettier": "3.3.3",
"semantic-release": "23.1.1",
"typescript": "5.5.4"
"typescript": "5.6.2"
}
}

View File

@ -16,8 +16,31 @@ test("ensure we validate correctly JavaScript files", async () => {
const [withErrors] = await eslint.lintFiles(
"test/fixtures/javascript-with-errors.js",
)
assert.strictEqual(noErrors?.errorCount, 0)
assert.strictEqual(withErrors?.errorCount, 3)
assert.strictEqual(noErrors?.errorCount, 0, JSON.stringify(noErrors, null, 2))
assert.strictEqual(
withErrors?.errorCount,
3,
JSON.stringify(withErrors, null, 2),
)
})
test("ensure we do not use deprecated rules", async () => {
const [javascriptLintResult] = await eslint.lintFiles(
"test/fixtures/javascript-no-errors.js",
)
const [typescriptLintResult] = await eslint.lintFiles(
"test/fixtures/typescript-no-errors.ts",
)
assert.strictEqual(
javascriptLintResult.usedDeprecatedRules.length,
0,
JSON.stringify(javascriptLintResult, null, 2),
)
assert.strictEqual(
typescriptLintResult.usedDeprecatedRules.length,
0,
JSON.stringify(typescriptLintResult, null, 2),
)
})
test("ensure we validate correctly TypeScript files", async () => {
@ -27,20 +50,32 @@ test("ensure we validate correctly TypeScript files", async () => {
const [withErrors] = await eslint.lintFiles(
"test/fixtures/javascript-with-errors.js",
)
assert.strictEqual(noErrors?.errorCount, 0)
assert.strictEqual(withErrors?.errorCount, 3)
assert.strictEqual(noErrors?.errorCount, 0, JSON.stringify(noErrors, null, 2))
assert.strictEqual(
withErrors?.errorCount,
3,
JSON.stringify(withErrors, null, 2),
)
})
test("ensure we allow top-level await", async () => {
const [lintResult] = await eslint.lintFiles(
"test/fixtures/top-level-await.mjs",
)
assert.strictEqual(lintResult?.errorCount, 0)
assert.strictEqual(
lintResult?.errorCount,
0,
JSON.stringify(lintResult, null, 2),
)
})
test("ensure we allow to ignore floating promise with void operator (@typescript-eslint/no-floating-promises)", async () => {
const [lintResult] = await eslint.lintFiles(
"test/fixtures/typescript-no-errors-ignore-promise.ts",
)
assert.strictEqual(lintResult?.errorCount, 0)
assert.strictEqual(
lintResult?.errorCount,
0,
JSON.stringify(lintResult, null, 2),
)
})