Skip to content

Commit 969fb78

Browse files
author
Cédric Belin
committed
Update the settings of the static analyzer
1 parent 85cead7 commit 969fb78

File tree

2 files changed

+72
-19
lines changed

2 files changed

+72
-19
lines changed

etc/eslint.config.js renamed to etc/eslint.js

Lines changed: 68 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1-
import babelParser from "@babel/eslint-parser";
1+
import {join} from "node:path";
22
import js from "@eslint/js";
3-
import globals from "globals";
3+
import ts from "typescript-eslint";
44

5-
export default [
5+
export default ts.config(
66
js.configs.recommended,
7+
...ts.configs.strictTypeChecked,
8+
...ts.configs.stylisticTypeChecked,
79
{
810
languageOptions: {
9-
globals: {...globals.nodeBuiltin},
10-
parser: babelParser,
1111
parserOptions: {
12-
requireConfigFile: false,
13-
babelOptions: {
14-
babelrc: false,
15-
configFile: false,
16-
plugins: ["@babel/plugin-syntax-import-attributes"]
17-
}
12+
project: "tsconfig.json",
13+
tsconfigRootDir: join(import.meta.dirname, "..")
1814
}
1915
},
2016
rules: {
@@ -28,7 +24,7 @@ export default [
2824
"no-template-curly-in-string": "error",
2925
"no-unmodified-loop-condition": "error",
3026
"no-unreachable-loop": "error",
31-
"no-use-before-define": ["error", {functions: false}],
27+
"no-use-before-define": "off",
3228
"no-useless-assignment": "error",
3329
"require-atomic-updates": ["error", {allowProperties: true}],
3430

@@ -53,7 +49,7 @@ export default [
5349
"grouped-accessor-pairs": "error",
5450
"guard-for-in": "error",
5551
"id-denylist": "error",
56-
"id-length": ["error", {exceptions: ["_", "x", "y"]}],
52+
"id-length": ["error", {exceptions: ["_", "$", "x", "y"]}],
5753
"id-match": "error",
5854
"init-declarations": "error",
5955
"logical-assignment-operators": "error",
@@ -64,7 +60,6 @@ export default [
6460
"max-nested-callbacks": "error",
6561
"max-params": "off",
6662
"max-statements": ["error", {max: 25}],
67-
"multiline-comment-style": ["error", "separate-lines"],
6863
"new-cap": ["error", {capIsNewExceptions: ["RangeError", "SyntaxError", "TypeError"]}],
6964
"no-alert": "error",
7065
"no-array-constructor": "error",
@@ -155,8 +150,64 @@ export default [
155150
"vars-on-top": "error",
156151
"yoda": "error",
157152

158-
"line-comment-position": "error",
159-
"unicode-bom": "error"
153+
"unicode-bom": "error",
154+
155+
"@typescript-eslint/class-methods-use-this": "off",
156+
"@typescript-eslint/consistent-return": "error",
157+
"@typescript-eslint/consistent-type-exports": "error",
158+
"@typescript-eslint/consistent-type-imports": "error",
159+
"@typescript-eslint/default-param-last": "error",
160+
"@typescript-eslint/explicit-function-return-type": ["error", {allowExpressions: true}],
161+
"@typescript-eslint/explicit-member-accessibility": ["error", {accessibility: "no-public"}],
162+
"@typescript-eslint/explicit-module-boundary-types": "error",
163+
"@typescript-eslint/init-declarations": "error",
164+
"@typescript-eslint/max-params": ["error", {max: 4}],
165+
"@typescript-eslint/member-ordering": "error",
166+
"@typescript-eslint/method-signature-style": "error",
167+
"@typescript-eslint/naming-convention": "off",
168+
"@typescript-eslint/no-confusing-void-expression": "off",
169+
"@typescript-eslint/no-dupe-class-members": "error",
170+
"@typescript-eslint/no-empty-object-type": "error",
171+
"@typescript-eslint/no-explicit-any": "off",
172+
"@typescript-eslint/no-import-type-side-effects": "error",
173+
"@typescript-eslint/no-invalid-this": "error",
174+
"@typescript-eslint/no-loop-func": "error",
175+
"@typescript-eslint/no-magic-numbers": "off",
176+
"@typescript-eslint/no-non-null-assertion": "off",
177+
"@typescript-eslint/no-redeclare": "error",
178+
"@typescript-eslint/no-require-imports": "error",
179+
"@typescript-eslint/no-restricted-imports": "error",
180+
"@typescript-eslint/no-shadow": "error",
181+
"@typescript-eslint/no-unnecessary-parameter-property-assignment": "error",
182+
"@typescript-eslint/no-unnecessary-qualifier": "error",
183+
"@typescript-eslint/no-unnecessary-type-parameters": "error",
184+
"@typescript-eslint/no-unsafe-unary-minus": "error",
185+
"@typescript-eslint/no-unused-expressions": ["error", {allowTaggedTemplates: true, allowTernary: true}],
186+
"@typescript-eslint/no-use-before-define": ["error", {functions: false}],
187+
"@typescript-eslint/no-useless-empty-export": "error",
188+
"@typescript-eslint/parameter-properties": "error",
189+
"@typescript-eslint/prefer-destructuring": "error",
190+
"@typescript-eslint/prefer-enum-initializers": "off",
191+
"@typescript-eslint/prefer-find": "error",
192+
"@typescript-eslint/prefer-readonly": "error",
193+
"@typescript-eslint/prefer-readonly-parameter-types": "off",
194+
"@typescript-eslint/prefer-regexp-exec": "error",
195+
"@typescript-eslint/promise-function-async": "off",
196+
"@typescript-eslint/require-array-sort-compare": "error",
197+
"@typescript-eslint/restrict-template-expressions": "off",
198+
"@typescript-eslint/return-await": "error",
199+
"@typescript-eslint/strict-boolean-expressions": "off",
200+
"@typescript-eslint/switch-exhaustiveness-check": "error",
201+
"@typescript-eslint/typedef": "error"
202+
}
203+
},
204+
{
205+
files: ["gulpfile.js", "test/**/*.js"],
206+
rules: {
207+
"prefer-arrow-callback": "off",
208+
"@typescript-eslint/explicit-function-return-type": "off",
209+
"@typescript-eslint/explicit-module-boundary-types": "off",
210+
"@typescript-eslint/no-floating-promises": "off"
160211
}
161212
}
162-
];
213+
);

gulpfile.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ export function clean() {
1616

1717
// Performs the static analysis of source code.
1818
export async function lint() {
19+
await build();
1920
await $`tsc --project tsconfig.json`;
20-
return $`eslint --config=etc/eslint.config.js gulpfile.js bin example src test`;
21+
return $`eslint --config=etc/eslint.js gulpfile.js bin example src test`;
2122
}
2223

2324
// Publishes the package.
@@ -27,8 +28,9 @@ export async function publish() {
2728
}
2829

2930
// Runs the test suite.
30-
export function test() {
31+
export async function test() {
3132
env.NODE_ENV = "test";
33+
await build();
3234
return $`node --test --test-reporter=spec`;
3335
}
3436

0 commit comments

Comments
 (0)