/**
 * @license
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Do not add any bazel-specific properties in this file to keep it clean.
// Please add such properties to the .eslintrc-bazel.js file
const path = require('path');

module.exports = {
  "extends": ["eslint:recommended", "google"],
  "parserOptions": {
    "ecmaVersion": 9,
    "sourceType": "module"
  },
  "env": {
    "browser": true,
    "es6": true
  },
  "rules": {
    // https://eslint.org/docs/rules/no-confusing-arrow
    "no-confusing-arrow": "error",
    // https://eslint.org/docs/rules/newline-per-chained-call
    "newline-per-chained-call": ["error", {"ignoreChainWithDepth": 2}],
    // https://eslint.org/docs/rules/arrow-body-style
    "arrow-body-style": ["error", "as-needed",
      {"requireReturnForObjectLiteral": true}],
    // https://eslint.org/docs/rules/arrow-parens
    "arrow-parens": ["error", "as-needed"],
    // https://eslint.org/docs/rules/block-spacing
    "block-spacing": ["error", "always"],
    // https://eslint.org/docs/rules/brace-style
    "brace-style": ["error", "1tbs", {"allowSingleLine": true}],
    // https://eslint.org/docs/rules/camelcase
    "camelcase": "off",
    // https://eslint.org/docs/rules/comma-dangle
    "comma-dangle": ["error", {
      "arrays": "always-multiline",
      "objects": "always-multiline",
      "imports": "always-multiline",
      "exports": "always-multiline",
      "functions": "never"
    }],
    // https://eslint.org/docs/rules/eol-last
    "eol-last": "off",
    // https://eslint.org/docs/rules/indent
    "indent": ["error", 2, {
      "MemberExpression": 2,
      "FunctionDeclaration": {"body": 1, "parameters": 2},
      "FunctionExpression": {"body": 1, "parameters": 2},
      "CallExpression": {"arguments": 2},
      "ArrayExpression": 1,
      "ObjectExpression": 1,
      "SwitchCase": 1
    }],
    // https://eslint.org/docs/rules/keyword-spacing
    "keyword-spacing": ["error", {"after": true, "before": true}],
    // https://eslint.org/docs/rules/lines-between-class-members
    "lines-between-class-members": ["error", "always"],
    // https://eslint.org/docs/rules/max-len
    "max-len": [
      "error",
      80,
      2,
      {
        "ignoreComments": true,
        "ignorePattern": "^import .*;$"
      }
    ],
    // https://eslint.org/docs/rules/new-cap
    "new-cap": ["error", {
      "capIsNewExceptions": ["Polymer", "GestureEventListeners"],
      "capIsNewExceptionPattern": "^.*Mixin$"
    }],
    // https://eslint.org/docs/rules/no-console
    "no-console": ["error", { allow: ["warn", "error", "info", "assert", "group", "groupEnd"] }],
    // https://eslint.org/docs/rules/no-multiple-empty-lines
    "no-multiple-empty-lines": ["error", {"max": 1}],
    // https://eslint.org/docs/rules/no-prototype-builtins
    "no-prototype-builtins": "off",
    // https://eslint.org/docs/rules/no-redeclare
    "no-redeclare": "off",
    // https://eslint.org/docs/rules/no-trailing-spaces
    "no-trailing-spaces": "error",
    // https://eslint.org/docs/rules/no-irregular-whitespace
    "no-irregular-whitespace": "error",
    // https://eslint.org/docs/rules/array-callback-return
    "array-callback-return": ['error', { allowImplicit: true }],
    // https://eslint.org/docs/rules/no-restricted-syntax
    "no-restricted-syntax": [
      "error",
      {
        "selector": "ExpressionStatement > CallExpression > MemberExpression[object.name='test'][property.name='only']",
        "message": "Remove test.only."
      },
      {
        "selector": "ExpressionStatement > CallExpression > MemberExpression[object.name='suite'][property.name='only']",
        "message": "Remove suite.only."
      }
    ],
    // no-undef disables global variable.
    // "globals" declares allowed global variables.
    // https://eslint.org/docs/rules/no-undef
    "no-undef": ["error"],
    // https://eslint.org/docs/rules/no-useless-escape
    "no-useless-escape": "off",
    // https://eslint.org/docs/rules/no-var
    "no-var": "error",
    // https://eslint.org/docs/rules/operator-linebreak
    "operator-linebreak": "off",
    // https://eslint.org/docs/rules/object-shorthand
    "object-shorthand": ["error", "always"],
    // https://eslint.org/docs/rules/padding-line-between-statements
    "padding-line-between-statements": [
      "error",
      {
        "blankLine": "always",
        "prev": "class",
        "next": "*"
      },
      {
        "blankLine": "always",
        "prev": "*",
        "next": "class"
      }
    ],
    // https://eslint.org/docs/rules/prefer-arrow-callback
    "prefer-arrow-callback": "error",
    // https://eslint.org/docs/rules/prefer-const
    "prefer-const": "error",
    // https://eslint.org/docs/rules/prefer-promise-reject-errors
    "prefer-promise-reject-errors": "error",
    // https://eslint.org/docs/rules/prefer-spread
    "prefer-spread": "error",
    // https://eslint.org/docs/rules/prefer-object-spread
    "prefer-object-spread": "error",
    // https://eslint.org/docs/rules/quote-props
    "quote-props": ["error", "consistent-as-needed"],
    // https://eslint.org/docs/rules/semi
    "semi": ["error", "always"],
    // https://eslint.org/docs/rules/template-curly-spacing
    "template-curly-spacing": "error",

    // https://eslint.org/docs/rules/require-jsdoc
    "require-jsdoc": 0,
    // https://eslint.org/docs/rules/valid-jsdoc
    "valid-jsdoc": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-alignment
    "jsdoc/check-alignment": 2,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-examples
    "jsdoc/check-examples": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-indentation
    "jsdoc/check-indentation": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-param-names
    "jsdoc/check-param-names": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-syntax
    "jsdoc/check-syntax": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-tag-names
    "jsdoc/check-tag-names": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types
    "jsdoc/check-types": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-implements-on-classes
    "jsdoc/implements-on-classes": 2,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-description
    "jsdoc/match-description": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-newline-after-description
    "jsdoc/newline-after-description": 2,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types
    "jsdoc/no-types": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types
    "jsdoc/no-undefined-types": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description
    "jsdoc/require-description": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-description-complete-sentence
    "jsdoc/require-description-complete-sentence": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-example
    "jsdoc/require-example": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description
    "jsdoc/require-hyphen-before-param-description": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc
    "jsdoc/require-jsdoc": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param
    "jsdoc/require-param": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-description
    "jsdoc/require-param-description": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-name
    "jsdoc/require-param-name": 2,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns
    "jsdoc/require-returns": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns-check
    "jsdoc/require-returns-check": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns-description
    "jsdoc/require-returns-description": 0,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-valid-types
    "jsdoc/valid-types": 2,
    // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-file-overview
    "jsdoc/require-file-overview": ["error", {
      "tags": {
        "license": {
          "mustExist": true,
          "preventDuplicates": true
        }
      }
    }],
    // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-self-import.md
    "import/no-self-import": 2,
    // The no-cycle rule is slow, because it doesn't cache dependencies.
    // Disable it.
    // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-cycle.md
    "import/no-cycle": 0,
    // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-useless-path-segments.md
    "import/no-useless-path-segments": 2,
    // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unused-modules.md
    "import/no-unused-modules": 2,
    // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-default-export.md
    "import/no-default-export": 2,
    // Custom rule from the //tools/js/eslint-rules directory.
    // See //tools/js/eslint-rules/README.md for details
    "goog-module-id": 2,
    // Prevents certain identifiers being used.
    // Prefer flush() over flushAsynchronousOperations().
    "id-blacklist": ["error", "flushAsynchronousOperations"],
  },

  // List of allowed globals in all files
  "globals": {
    // Polygerrit global variables.
    // You must not add anything new in this list!
    // Instead export variables from modules
    // TODO(dmfilippov): Remove global variables from polygerrit
    // Global variables from 3rd party libraries.
    // You should not add anything in this list, always try to import
    // If import is not possible - you can extend this list
    "ShadyCSS": "readonly",
    "linkify": "readonly",
    "security": "readonly",
  },
  "overrides": [
    {
      // .js-only rules
      "files": ["**/*.js"],
      "rules": {
        // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-type
        "jsdoc/require-param-type": 2,
        // https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns-type
        "jsdoc/require-returns-type": 2,
        // The rule is required for .js files only, because typescript compiler
        // always checks import.
        "import/no-unresolved": 2,
        "import/named": 2,
      },
      "globals": {
        "goog": "readonly",
      }
    },
    {
      "files": ["**/*.ts"],
      "extends": [require.resolve("gts/.eslintrc.json")],
      "rules": {
        "no-restricted-imports": ["error", {
          name: "@polymer/decorators/lib/decorators",
          message: "Use @polymer/decorators instead",
        }],
        // The following rules is required to match internal google rules
        "@typescript-eslint/restrict-plus-operands": "error",
        // https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unsupported-features/node-builtins.md
        "node/no-unsupported-features/node-builtins": "off",
        "jsdoc/no-types": 2,
      },
      "parserOptions": {
        "project": path.resolve(__dirname, "./tsconfig_eslint.json"),
      }
    },
    {
      "files": ["**/*.ts"],
      "excludedFiles": "*.d.ts",
      "rules": {
        // Custom rule from the //tools/js/eslint-rules directory.
        // See //tools/js/eslint-rules/README.md for details
        "ts-imports-js": 2,
      }
    },
    {
      "files": ["**/*.d.ts"],
      "rules": {
        // See details in the //tools/js/eslint-rules/report-ts-error.js file.
        "report-ts-error": "error",
      }
    },
    {
      "files": ["*.html", "test.js", "test-infra.js"],
      "rules": {
        "jsdoc/require-file-overview": "off"
      },
    },
    {
      "files": [
        "*.html",
        "common-test-setup.js",
        "common-test-setup-karma.js",
        "*_test.js",
        "a11y-test-utils.js",
      ],
      // Additional global variables allowed in tests
      "globals": {
        // Global variables from 3rd party test libraries/frameworks.
        // You can extend this list if you want to use other global
        // variables from these libraries and import is not possible
        "MockInteractions": "readonly",
        "_": "readonly",
        "axs": "readonly",
        "a11ySuite": "readonly",
        "assert": "readonly",
        "expect": "readonly",
        "fixture": "readonly",
        "flush": "readonly",
        "flushAsynchronousOperations": "readonly",
        "setup": "readonly",
        "sinon": "readonly",
        "stub": "readonly",
        "suite": "readonly",
        "suiteSetup": "readonly",
        "suiteTeardown": "readonly",
        "teardown": "readonly",
        "test": "readonly",
        "fixtureFromElement": "readonly",
        "fixtureFromTemplate": "readonly",
      }
    },
    {
      "files": "import-href.js",
      "globals": {
        "HTMLImports": "readonly",
      }
    },
    {
      "files": ["samples/**/*.js"],
      "globals": {
        // Settings for samples. You can add globals here if you want to use it
        "Gerrit": "readonly",
        "Polymer": "readonly",
      }
    },
    {
      "files": ["test/functional/**/*.js"],
      // Settings for functional tests. These scripts are node scripts.
      // Turn off "no-undef" to allow any global variable
      "env": {
        "browser": false,
        "node": true,
        "es6": false
      },
      "rules": {
        "no-undef": "off",
      }
    },
    {
      "files": ["*_html.js", "gr-icons.js", "*-theme.js", "*-styles.js"],
      "rules": {
        "max-len": "off"
      }
    },
    {
      "files": ["*_html.js"],
      "rules": {
        "prettier/prettier": ["error", {
          "bracketSpacing": false,
          "singleQuote": true,
        }]
      }
    }
  ],
  "plugins": [
    "html",
    "jsdoc",
    "import",
    "prettier"
  ],
  "settings": {
    "html/report-bad-indent": "error",
    "import/resolver": {
      "node": {},
      [path.resolve(__dirname, './.eslint-ts-resolver.js')]: {},
    },
  },
};
