33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import type { Linter } from "eslint";
|
|
|
|
import typescriptEslint from "typescript-eslint";
|
|
|
|
type EsLintConfig = Readonly<Linter.Config>;
|
|
|
|
const trouveConfiguration = (configuration: ReadonlyArray<Linter.Config>, nom: string): EsLintConfig =>
|
|
configuration.find((v: EsLintConfig) => v.name === nom) ?? {};
|
|
|
|
const base = trouveConfiguration(typescriptEslint.configs.strictTypeChecked, "typescript-eslint/base");
|
|
const desactivationsJavaScript = trouveConfiguration(
|
|
typescriptEslint.configs.strictTypeChecked,
|
|
"typescript-eslint/eslint-recommended",
|
|
);
|
|
const strictTypeChecked = trouveConfiguration(
|
|
typescriptEslint.configs.strictTypeChecked,
|
|
"typescript-eslint/strict-type-checked",
|
|
);
|
|
const stylisticTypeChecked = trouveConfiguration(
|
|
typescriptEslint.configs.stylisticTypeChecked,
|
|
"typescript-eslint/stylistic-type-checked",
|
|
);
|
|
|
|
export const règlesTypeScript: Readonly<Linter.Config> = {
|
|
languageOptions: base.languageOptions ?? {},
|
|
name: "TypeScript",
|
|
plugins: base.plugins ?? {},
|
|
rules: {
|
|
...desactivationsJavaScript.rules,
|
|
...strictTypeChecked.rules,
|
|
...stylisticTypeChecked.rules,
|
|
},
|
|
};
|