{
  "extends": [
    // Extend the airbnb eslint config
    "airbnb-base",
    // Vue
    "plugin:vue/vue3-recommended"
  ],
  "parserOptions": {
    "sourceType": "module"
  },
  // ESLint will not look in parent folders for eslint configs
  "root": true,
  // An environment defines global variables that are predefined.
  "env": {
    "browser": true,
    "es6": true,
    "node": true
  },
  // Additional global variables your script accesses during execution
  "globals": {
    "Joomla": true,
    "MediaManager": true,
    "bootstrap": true
  },
  // Rule overrides
  "rules": {
    // Disable no-params-reassign for properties
    "no-param-reassign": ["error", { "props": false }],
    // Allow usage of dev-dependencies in js files in build directory
    "import/no-extraneous-dependencies": ["error", {"devDependencies": ["build/**/*.js"]}],
    // Allow strict mode (we are not dealing with modules)
    "strict": [0],
    // Disable alert rule till we have a CE in place
    "no-alert": 0,
    // Max length to match the .php files
    "max-len": ["error",
      150,
      2,
      {
        "ignoreUrls": true,
        "ignoreComments": false,
        "ignoreRegExpLiterals": true,
        "ignoreStrings": true,
        "ignoreTemplateLiterals": true
      }
    ],
    // Allow extensions on imports
    "import/extensions": 0,
    "func-names": [
      "error",
      "as-needed"
    ]
  },
  "overrides": [
    {
      "files": ["tests/**/*.js", "tests/**/*.mjs"],
      "rules": {
        "no-undef": ["off"],
        "import/no-extraneous-dependencies": ["off"]
      }
    },
    {
      "files": ["tests/System/support/index.js"],
      "rules": {
        "no-console": ["off"]
      }
    },
    {
      "files": ["tests/System/support/commands/db.mjs"],
      "rules": {
        "no-useless-escape": ["off"]
      }
    }
  ]
}
