This commit is contained in:
gcch 2025-10-01 14:14:20 +02:00
commit 18d605339f
12 changed files with 434 additions and 149 deletions

View file

@ -0,0 +1,39 @@
import type { Linter } from "eslint";
import functional from "eslint-plugin-functional";
import typescriptEslint from "typescript-eslint";
export const règlesProgrammationFonctionnelle: Readonly<Linter.Config> = {
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" }],
// Le style tacite complique la lecture du code.
"functional/prefer-tacit": "off",
// 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,
},
],
},
],
},
};