File size: 1,949 Bytes
70e641d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Configuración plana (ESLint 9). Sólo usa los paquetes ya declarados en package.json:
// @typescript-eslint/parser y @typescript-eslint/eslint-plugin — sin añadir dependencias.
import tsPlugin from "@typescript-eslint/eslint-plugin";
import tsParser from "@typescript-eslint/parser";

export default [
  {
    ignores: ["dist/**", "node_modules/**", "../dist/**"],
  },
  {
    files: ["src/**/*.ts", "tests/**/*.ts"],
    languageOptions: {
      parser: tsParser,
      ecmaVersion: 2022,
      sourceType: "module",
      parserOptions: {
        project: "./tsconfig.json",
        tsconfigRootDir: import.meta.dirname,
      },
    },
    plugins: {
      "@typescript-eslint": tsPlugin,
    },
    rules: {
      // El motor de patrones es código validado por veterinarios: lo que se persigue aquí son
      // fallos silenciosos (variables muertas, promesas sin await, comparaciones laxas), no estilo.
      "@typescript-eslint/no-unused-vars": [
        "error",
        { argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
      ],
      "@typescript-eslint/await-thenable": "error",
      // En "error": todo el trabajo asíncrono pasa por `manejadorAsync`/`sinEsperar` (async.ts),
      // que reportan el rechazo en el toast, o por un `void` explícito cuando la función ya
      // absorbe su error a propósito. Un handler `async` suelto vuelve a tragar fallos en
      // silencio, así que debe romper el lint.
      "@typescript-eslint/no-floating-promises": "error",
      "@typescript-eslint/no-misused-promises": "error",
      "@typescript-eslint/no-explicit-any": "warn",
      eqeqeq: ["error", "always", { null: "ignore" }],
      "no-var": "error",
      "prefer-const": "error",
      // `console.log` filtró prompts con datos de paciente en el ia.js legacy; se avisa para que
      // no vuelva a entrar. warn/error siguen permitidos.
      "no-console": ["warn", { allow: ["warn", "error"] }],
    },
  },
];