Files
xboct-flow/eslint.config.mjs
T

99 lines
2.3 KiB
JavaScript

import { includeIgnoreFile } from "@eslint/compat";
import js from "@eslint/js";
import vitest from "@vitest/eslint-plugin";
import prettier from "eslint-config-prettier";
import { defineConfig } from "eslint/config";
import globals from "globals";
import path from "node:path";
import ts from "typescript-eslint";
const gitignorePath = path.resolve(import.meta.dirname, ".gitignore");
export default defineConfig(
includeIgnoreFile(gitignorePath),
js.configs.recommended,
...ts.configs.recommended,
prettier,
{
languageOptions: { globals: { ...globals.node } },
rules: {
"no-undef": "off",
// base rule is for JS; TS interfaces/ctors need the typed version below
"no-unused-vars": "off",
"no-console": ["error", { allow: ["warn", "error"] }],
"@typescript-eslint/no-magic-numbers": [
"error",
{
enforceConst: true,
ignoreDefaultValues: true,
ignore: [0, 1, 2],
},
],
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
},
],
"@typescript-eslint/parameter-properties": [
"error",
{
prefer: "class-property",
allow: [],
},
],
"@typescript-eslint/naming-convention": [
"error",
{
selector: "classProperty",
modifiers: ["private"],
format: null,
custom: {
regex: "^.*$",
match: false,
},
},
],
},
},
{
files: ["**/constants.ts", "**/constants/*.ts"],
rules: {
"no-magic-numbers": "off",
"@typescript-eslint/no-magic-numbers": "off",
},
},
{
files: ["scripts/**"],
rules: {
"no-magic-numbers": "off",
"@typescript-eslint/no-magic-numbers": "off",
"no-console": "off",
},
},
{
files: ["src/**/*.test.ts", "src/**/*.spec.ts", "tests/**/*.test.ts"],
plugins: { vitest },
rules: {
...vitest.configs.recommended.rules,
"vitest/no-focused-tests": "error",
"vitest/no-disabled-tests": "warn",
"vitest/expect-expect": "error",
"vitest/no-conditional-expect": "error",
"vitest/require-hook": "warn",
"vitest/consistent-test-it": [
"error",
{ fn: "it", withinDescribe: "it" },
],
"vitest/require-top-level-describe": "error",
"vitest/no-identical-title": "error",
"no-magic-numbers": "off",
"@typescript-eslint/no-magic-numbers": "off",
},
},
);