{
  "extends": ["prettier"],
  "root": true,
  "ignorePatterns": ["node_modules/**/*", "projects/**/*"],
  "overrides": [
    {
      "files": ["*.ts"],
      "parserOptions": {
        "project": true,
        "createDefaultProgram": true
      },
      "extends": [
        "plugin:@angular-eslint/ng-cli-compat",
        "plugin:@angular-eslint/ng-cli-compat--formatting-add-on",
        "plugin:@angular-eslint/template/process-inline-templates"
      ],
      "rules": {
        "@angular-eslint/component-selector": [
          "error",
          {
            "type": ["element", "attribute"],
            "prefix": ["zeppelin"],
            "style": "kebab-case"
          }
        ],
        "@angular-eslint/directive-selector": [
          "error",
          {
            "type": "attribute",
            "prefix": ["zeppelin"],
            "style": "kebab-case"
          }
        ],
        "@angular-eslint/no-forward-ref": "off",
        "@angular-eslint/prefer-output-readonly": "error",
        "@typescript-eslint/adjacent-overload-signatures": "off",
        "@typescript-eslint/array-type": "off",
        "@typescript-eslint/ban-tslint-comment": "off",
        "@typescript-eslint/class-literal-property-style": "off",
        "@typescript-eslint/consistent-generic-constructors": "off",
        "@typescript-eslint/consistent-indexed-object-style": "off",
        "@typescript-eslint/consistent-type-assertions": "off",
        "@typescript-eslint/consistent-type-definitions": "off",
        "@typescript-eslint/no-confusing-non-null-assertion": "off",
        "@typescript-eslint/no-empty-function": "off",
        "@typescript-eslint/no-inferrable-types": "off",
        "@typescript-eslint/prefer-for-of": "off",
        "@typescript-eslint/prefer-function-type": "off",
        "@typescript-eslint/member-delimiter-style": "off",
        "@typescript-eslint/semi": "off",
        "@typescript-eslint/type-annotation-spacing": "off",
        "@typescript-eslint/ban-types": [
          "error",
          {
            "types": {
              "Object": {
                "message": "Use {} instead."
              },
              "String": {
                "message": "Use string instead."
              },
              "Number": {
                "message": "Use number instead."
              },
              "Boolean": {
                "message": "Use boolean instead."
              },
              "Function": {
                "message": "Use specific callable interface instead."
              }
            }
          }
        ],
        "@typescript-eslint/member-ordering": "warn",
        "@typescript-eslint/explicit-member-accessibility": [
          "off",
          {
            "accessibility": "explicit"
          }
        ],
        "@typescript-eslint/no-explicit-any": "error",
        "@typescript-eslint/no-floating-promises": "off",
        "@typescript-eslint/no-for-in-array": "error",
        "@typescript-eslint/naming-convention": "off",
        "@typescript-eslint/no-non-null-assertion": "off",
        "@typescript-eslint/no-this-alias": "error",
        "@typescript-eslint/no-unused-vars": [
          "error",
          {
            "argsIgnorePattern": "^_",
            "varsIgnorePattern": "^_"
          }
        ],
        "@typescript-eslint/quotes": "off",
        "eol-last": "off",
        "import/no-cycle": "error",
        "import/no-deprecated": "off",
        "import/no-unassigned-import": "error",
        "import/order": "error",
        "jsdoc/newline-after-description": "off",
        "max-len": "off",
        "new-parens": "off",
        "no-bitwise": "off",
        "no-duplicate-imports": "error",
        "no-invalid-this": "error",
        "no-irregular-whitespace": "error",
        "no-magic-numbers": "off",
        "no-param-reassign": "error",
        "no-redeclare": "error",
        "no-sparse-arrays": "error",
        "no-template-curly-in-string": "error",
        "no-trailing-spaces": "off",
        "no-underscore-dangle": "off",
        "prefer-arrow/prefer-arrow-functions": "warn",
        "prefer-object-spread": "error",
        "prefer-template": "error",
        "quote-props": "off",
        "space-before-function-paren": "off",
        "yoda": "error"
      }
    },
    {
      "files": ["*.js"],
      "parserOptions": {
        "ecmaVersion": "latest",
        "sourceType": "module"
      },
      "env": {
        "node": true,
        "es6": true
      }
    },
    {
      "files": ["*.html"],
      "extends": ["plugin:@angular-eslint/template/recommended"],
      "rules": {}
    }
  ]
}
