factuges_2025/packages/eslint-config/express.js
2025-05-02 13:22:10 +02:00

76 lines
1.8 KiB
JavaScript

import globals from "globals";
import tseslint from "typescript-eslint";
import baseConfig from "./base.js";
/** @type {import("eslint").Linter.Config[]} */
export default [
...baseConfig,
{
languageOptions: {
globals: {
...globals.node,
Express: true,
},
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
},
plugins: {
"@typescript-eslint": tseslint.plugin,
},
rules: {
"@typescript-eslint/consistent-type-imports": [
"warn",
{
fixStyle: "inline-type-imports",
prefer: "type-imports",
},
],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-floating-promises": ["error", { ignoreVoid: true }],
// TypeScript specific rules
"@typescript-eslint/no-misused-promises": [
"error",
{
checksVoidReturn: false,
},
],
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unsafe-member-access": "off",
"@typescript-eslint/no-unused-vars": [
"warn",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
},
],
"@typescript-eslint/require-await": "off",
"import/no-default-export": "off",
"import/prefer-default-export": "off",
// Express and Node specific rules
"no-console": ["warn", { allow: ["warn", "error"] }],
"no-process-env": "off",
// Error handling
"no-unused-vars": "error",
},
settings: {
"import/parsers": {
"@typescript-eslint/parser": [".ts"],
},
"import/resolver": {
node: {
extensions: [".js", ".ts"],
},
typescript: {
alwaysTryTypes: true,
project: ["./tsconfig.json"],
},
},
},
},
];