import globals from "globals"; import pluginJs from "@eslint/js"; import tsParser from "@typescript-eslint/parser"; import stylistic from "@stylistic/eslint-plugin"; import tsPlugin from "@typescript-eslint/eslint-plugin"; /** @type {import("eslint").Linter.Config[]} */ export default [ pluginJs.configs.recommended, { files: ["**/*.ts"], ignores: ["**/*.d.ts", "dist"], languageOptions: { globals: globals.node, ecmaVersion: "latest", sourceType: "module", parser: tsParser, }, plugins: { "@typescript-eslint": tsPlugin, "@stylistic": stylistic, }, rules: { "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" }], "arrow-body-style": ["error", "as-needed"], camelcase: "error", curly: ["error", "multi-line"], eqeqeq: ["error", "always"], "no-console": "off", "no-var": "error", "prefer-const": "error", yoda: "error", "@stylistic/arrow-spacing": ["error", { before: true, after: true }], "@stylistic/comma-dangle": ["error", "always-multiline"], "@stylistic/comma-spacing": ["error", { before: false, after: true }], "@stylistic/comma-style": ["error", "last"], "@stylistic/dot-location": ["error", "property"], "@stylistic/keyword-spacing": ["error", { before: true, after: true }], "@stylistic/no-multi-spaces": "error", "@stylistic/no-multiple-empty-lines": [ "error", { max: 2, maxEOF: 1, maxBOF: 0, }, ], "@stylistic/no-trailing-spaces": ["error"], "@stylistic/object-curly-spacing": ["error", "always"], "@stylistic/quotes": ["error", "double"], "@stylistic/indent": ["error", "tab"], "@stylistic/semi": ["error", "always"], "@stylistic/space-infix-ops": "error", }, }, ];