import js from "@eslint/js"; import oxlint from "eslint-plugin-oxlint"; import perfectionist from "eslint-plugin-perfectionist"; import globals from "globals"; import tseslint from "typescript-eslint"; export default tseslint.config( js.configs.recommended, perfectionist.configs["recommended-natural"], ...tseslint.configs.strictTypeChecked, ...tseslint.configs.stylisticTypeChecked, oxlint.configs["flat/recommended"], { files: ["*.js", "web/app/themes/haiku-atelier-2024/src/**/*.ts"], languageOptions: { ecmaVersion: "latest", globals: { ...globals.browser, ...globals.es2020, }, parserOptions: { projectService: true, tsconfigRootDir: import.meta.dirname, }, }, rules: { /* Utilise Array plutôt que T[]. */ "@typescript-eslint/array-type": [ "error", { default: "generic", readonly: "generic", }, ], /* L'usage d'interfaces ou de types doit être à la discrétion du développeur. */ "@typescript-eslint/consistent-type-definitions": "off", /* Désactive cette règle pour les fonctions fléchées pour rendre le code moins verbeux. */ "@typescript-eslint/no-confusing-void-expression": [ "error", { ignoreArrowShorthand: true, ignoreVoidOperator: false, }, ], /* Chiant avec certaines Promises. */ "@typescript-eslint/no-misused-promises": "off", /* Cette règle empêche l'usage de génériques précisant les types de retour de fonctions. */ "@typescript-eslint/no-unnecessary-type-parameters": "off", // Pour utiliser LogTape. "@typescript-eslint/no-unused-expressions": "off", /* Cette règle est doublon avec les règles noUnused* de TypeScript. */ "@typescript-eslint/no-unused-vars": "off", /* Cette règle empêche de lever des erreurs génériques (p.ex. `E extends Error`). */ "@typescript-eslint/only-throw-error": "off", /* Cette règle empêche le style fonctionnel « point free ». */ "@typescript-eslint/unbound-method": "off", /* Cette règle interdit l'usage de fonctions vides sauf pour les fonctions fléchées. */ "no-empty-function": ["error", { allow: ["arrowFunctions"] }], }, }, );