import { Linter } from "eslint"; import pluginMocha from "eslint-plugin-mocha"; import pluginPromise from "eslint-plugin-promise"; import pluginUnicorn from "eslint-plugin-unicorn"; import globals from "globals"; import configPrettier from "eslint-config-prettier"; import configJs from "@eslint/js"; const config: Linter.Config = { name: "@contentful/eslint-config-backend", languageOptions: { ecmaVersion: 2022, sourceType: "commonjs", globals: { ...globals.es2021, ...globals.node, ...globals.mocha, }, }, plugins: { mocha: pluginMocha, promise: pluginPromise, unicorn: pluginUnicorn, }, rules: { ...configJs.configs.recommended.rules, // eslint eqeqeq: "error", "guard-for-in": "error", "max-depth": ["error", 3], "max-nested-callbacks": ["error", 3], "new-cap": ["error", { newIsCap: true, capIsNew: false }], "no-multi-assign": "warn", "no-plusplus": ["error", { allowForLoopAfterthoughts: true }], "no-unused-vars": [ "error", { vars: "all", args: "after-used", varsIgnorePattern: "^_" }, ], "no-use-before-define": [ "error", { functions: true, classes: true, variables: true }, ], "no-var": "error", "one-var": ["error", { initialized: "never" }], "prefer-const": "error", // mocha "mocha/no-exclusive-tests": "error", "mocha/handle-done-callback": "error", // unicorn "unicorn/filename-case": ["error", { case: "kebabCase" }], // prettier ...(configPrettier.rules as Linter.Config["rules"]), }, }; export default config;