module.exports = {
parser: "@typescript-eslint/parser",
extends: ["eslint:recommended"],
plugins: ["@typescript-eslint"],
parserOptions: {
ecmaVersion: 2022,
sourceType: "module",
project: "./tsconfig.json",
},
env: {
node: true,
es2022: true,
jest: true,
},
rules: {
// TypeScript specific rules
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-non-null-assertion": "warn",
// General rules
"no-console": "off", // We use console for logging
"prefer-const": "error",
"no-var": "error",
"object-shorthand": "error",
"prefer-template": "error",
// Code style
quotes: ["error", "double"],
semi: ["error", "always"],
indent: ["error", 2],
"linebreak-style": ["error", "unix"],
"eol-last": ["error", "always"],
"no-trailing-spaces": "error",
// Import rules
"sort-imports": [
"error",
{
ignoreCase: false,
ignoreDeclarationSort: true,
ignoreMemberSort: false,
memberSyntaxSortOrder: ["none", "all", "multiple", "single"],
},
],
},
ignorePatterns: ["dist/", "node_modules/", "coverage/", "*.js", "*.d.ts"],
};