{
  "extends": [
    "eslint:recommended"
  ],

  "plugins": [
    "import"
  ],

  "env": {
    "browser": true,
    "node": true,
    "es6": true
  },

  "rules": {
    "indent": ["error", 2, {"SwitchCase": 1}],
    "quotes": ["warn", "single", "avoid-escape"],
    "linebreak-style": ["error", "unix"],
    "semi": ["error", "always"],
    "no-underscore-dangle": "off",
    "eqeqeq": ["error", "smart"],
    "no-unused-expressions": "off",
    "new-cap" : "off",
    "no-mixed-requires": "off",
    "camelcase": ["error", {"properties": "never"}],
    "no-use-before-define": ["error", "nofunc"],
    "eol-last": ["error", "always"],
    "keyword-spacing": "error",
    "comma-style": "error",
    "no-trailing-spaces": "error",
    "space-before-function-paren": ["error", {"named": "never"}]
  },

  "parserOptions": {
    "ecmaVersion": 2018,
    "sourceType": "module"
  },

  "overrides": [
    {
      "files": ["src/**/*.js"],
      "excludedFiles": ["src/**/__tests__/**"],
      "extends": [
        "plugin:compat/recommended"
      ],
      "rules": {
        "no-restricted-syntax": ["error", "ForOfStatement", "ForInStatement", "ArrayPattern"],
        "compat/compat": ["error", "defaults, node >=14"],
        "no-throw-literal": "error",
        "import/no-default-export": "error",
        "import/no-self-import": "error"
      },
      "parserOptions": {
        "ecmaVersion": 2015,
        "sourceType": "module"
      }
    }
  ],

  "settings": {
    "polyfills": [
      "Promise" // required as a polyfill by the user
    ]
  }
}
