• eslint.config.mjs
  • import globals from "globals";
    import path from "node:path";
    import { fileURLToPath } from "node:url";
    import js from "@eslint/js";
    import { FlatCompat } from "@eslint/eslintrc";
    import jsdoc from "eslint-plugin-jsdoc";
    
    const __filename = fileURLToPath(import.meta.url);
    const __dirname = path.dirname(__filename);
    const compat = new FlatCompat({
      baseDirectory: __dirname,
      recommendedConfig: js.configs.recommended,
      allConfig: js.configs.all,
    });
    
    export default [
      ...compat.extends("prettier"),
      {
        languageOptions: {
          globals: {
            ...globals.node,
            ...globals.browser,
          },
    
          ecmaVersion: 2022,
          sourceType: "module",
        },
        plugins: {
          jsdoc,
        },
        rules: {
          "no-unexpected-multiline": "error",
          "accessor-pairs": [
            "error",
            {
              getWithoutSet: false,
              setWithoutGet: true,
            },
          ],
          "block-scoped-var": "warn",
          "consistent-return": "error",
          curly: "error",
          "no-alert": "error",
          "no-caller": "error",
          "no-warning-comments": [
            "warn",
            {
              terms: ["TODO", "FIXME"],
              location: "start",
            },
          ],
          "no-with": "warn",
          radix: "warn",
          "no-delete-var": "error",
          "no-undef-init": "off",
          "no-undef": "error",
          "no-undefined": "off",
          "no-unused-vars": "warn",
          "no-use-before-define": "error",
          "constructor-super": "error",
          "no-class-assign": "error",
          "no-const-assign": "error",
          "no-dupe-class-members": "error",
          "no-this-before-super": "error",
          "object-shorthand": ["warn"],
          "no-mixed-spaces-and-tabs": "warn",
          "no-multiple-empty-lines": "warn",
          "no-negated-condition": "warn",
          "no-unneeded-ternary": "warn",
          "keyword-spacing": [
            "error",
            {
              before: true,
              after: true,
            },
          ],
          "jsdoc/require-returns": "warn",
          "jsdoc/require-returns-description": "warn",
          "jsdoc/require-param-description": "warn",
          "jsdoc/require-jsdoc": "warn",
        },
      },
    ];