{
  "env": {
    "node": true,
    "es2020": true
  },
  "extends": ["airbnb-base", "plugin:mocha/recommended", "plugin:prettier/recommended"],
  "parserOptions": {
    "ecmaVersion": 11,
    "sourceType": "module"
  },
  "overrides": [
    {
      "files": ["**/*.spec.{c,m,}js", "test/**/*.{c,m,}js"],
      "env": {
        "mocha": true
      }
    }
  ],
  "rules": {
    "mocha/no-mocha-arrows": "off",
    "func-names": "off",
    "import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
    "import/no-unresolved": [2, { "ignore": ["^#[\\w\\d/\\-]+$"] }],
    "no-restricted-syntax": [
      "error",
      {
        "selector": "ForInStatement",
        "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array."
      },
      {
        "selector": "LabeledStatement",
        "message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
      },
      {
        "selector": "WithStatement",
        "message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
      }
    ],
    "no-shadow": "off"
  }
}
