import type { Linter } from "eslint"; import javascript from "@eslint/js"; export const règlesJavaScript: Readonly = { name: "JavaScript", rules: { ...javascript.configs.recommended.rules, /** * Impose la présence de déclarations `return` dans les _callbacks_ des méthodes `Array`. * * Il est autorisé ici l'usage de valeurs de retour en `void` et la vérification de valeurs de retour superflues * pour `forEach()`. * * @link [ESLint](https://eslint.org/docs/latest/rules/array-callback-return) */ "array-callback-return": ["error", { allowVoid: true, checkForEach: true }], /** Surchargé par une meilleur version présente dans le plugin _Unicorn_. */ "no-nested-ternary": "off", /** * Interdit l'usage de variables lues sans être préalablement assignées. * * @link [ESLint](https://eslint.org/docs/latest/rules/no-unassigned-vars) */ "no-unassigned-vars": "error", /** * Interdit l'usage d'opérateurs ternaires quand des opérations plus simples existent. Cela inclut ici l'usage de * ternaires comme opération d'assignation par défaut d'une valeur. * * @link [ESLint](https://eslint.org/docs/latest/rules/no-unneeded-ternary) */ "no-unneeded-ternary": ["error", { defaultAssignment: false }], /** * Interdit l'usage de boucles ne permettant qu'une seule itération. Par la nature de l'analyse statique de code, * certains cas peuvent ne pas être détectées. * * @link [ESLint](https://eslint.org/docs/latest/rules/no-unreachable-loop) */ "no-unreachable-loop": "error", /** * Interdit l'utilisation d'une variable avant sa définition. * * La règle est désactivée ici pour que l'ordre de déclaration au sein d'un module n'ait pas d'importance. * * @link [ESLint](https://eslint.org/docs/latest/rules/no-use-before-define) */ "no-use-before-define": "off", /** * Interdit l'assignation de variables non utilisées. Par la nature de l'analyse statique de code, certains cas * peuvent ne pas être détectées. * * @link [ESLint](https://eslint.org/docs/latest/rules/no-useless-assignment) */ "no-useless-assignment": "error", /** * Interdit ici l'usage de conditions « [Yoda](https://en.wikipedia.org/wiki/Yoda_conditions) » pour des soucis de * lisibilité du code. * * @link [ESLint](https://eslint.org/docs/latest/rules/yoda) */ yoda: ["error", "never"], }, };