64 lines
2.2 KiB
TypeScript
64 lines
2.2 KiB
TypeScript
import javascriptEslint from "@eslint/js";
|
|
import { Linter } from "eslint";
|
|
import functional from "eslint-plugin-functional";
|
|
import perfectionist from "eslint-plugin-perfectionist";
|
|
import { defineConfig, globalIgnores } from "eslint/config";
|
|
import globals from "globals";
|
|
import typescriptEslint from "typescript-eslint";
|
|
|
|
export const configTypescriptNavigateur: ReadonlyArray<Linter.Config> = defineConfig([
|
|
globalIgnores(["dist/**/*"], "Ignore le Dossier de Compilation"),
|
|
{
|
|
files: ["**/*.js", "**/*.ts"],
|
|
name: "Fichiers à analyser",
|
|
},
|
|
javascriptEslint.configs.recommended,
|
|
typescriptEslint.configs.strictTypeChecked,
|
|
typescriptEslint.configs.stylisticTypeChecked,
|
|
{
|
|
languageOptions: {
|
|
ecmaVersion: "latest",
|
|
globals: { ...globals.browser, ...globals.es2026 },
|
|
parserOptions: {
|
|
ecmaVersion: "latest",
|
|
projectService: true,
|
|
sourceType: "module",
|
|
tsconfigRootDir: import.meta.dirname,
|
|
},
|
|
},
|
|
name: "Configuration du projet",
|
|
},
|
|
{
|
|
name: "Programmation fonctionnelle",
|
|
plugins: { functional: functional as typeof typescriptEslint.plugin },
|
|
rules: {
|
|
...functional.configs.noExceptions.rules,
|
|
...functional.configs.noMutations.rules,
|
|
...functional.configs.externalTypeScriptRecommended.rules,
|
|
...functional.configs.stylistic.rules,
|
|
// Choix stylistique.
|
|
"@typescript-eslint/array-type": ["error", { default: "generic", readonly: "generic" }],
|
|
// L'imposition d'une immutabilité plus importante est extrêmement contraignante.
|
|
"functional/prefer-immutable-types": ["error", { enforcement: "ReadonlyShallow" }],
|
|
// Choix stylistique.
|
|
"functional/readonly-type": ["error", "generic"],
|
|
// L'imposition d'une immutabilité plus importante est extrêmement contraignante.
|
|
"functional/type-declaration-immutability": [
|
|
"error",
|
|
{
|
|
ignoreInterfaces: false,
|
|
rules: [
|
|
{
|
|
comparator: "AtLeast",
|
|
fixer: false,
|
|
identifiers: "^(?!I?Mutable).+",
|
|
immutability: "ReadonlyShallow",
|
|
suggestions: false,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
},
|
|
perfectionist.configs["recommended-natural"],
|
|
]);
|