{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": 6,
    "sourceType": "module"
  },
  "env": { "node": true, "es6": true },
  "plugins": ["@typescript-eslint", "import", "jest"],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:import/recommended",
    "plugin:import/typescript",
    "plugin:jest/recommended"
  ],
  "rules": {
    "no-use-before-define": "off",
    "@typescript-eslint/no-use-before-define": "off",
    "@typescript-eslint/no-explicit-any": "off",
    "@typescript-eslint/no-non-null-assertion": "off",
    "@typescript-eslint/explicit-function-return-type": "off",
    "@typescript-eslint/interface-name-prefix": "off",
    "import/no-extraneous-dependencies": [
      "error",
      {
        "devDependencies": ["**/src/test/**", "**/src/**/*{test,spec}.ts"]
      }
    ]
  },
  "overrides": [
    {
      // Restrict usage of fs module outside tests to keep foam compatible with the browser
      "files": ["**/src/**"],
      "excludedFiles": ["**/src/test/**", "**/src/**/*{test,spec}.ts"],
      "rules": {
        "no-restricted-imports": [
          "error",
          {
            "name": "fs",
            "message": "Extension code must not rely Node.js filesystem, use vscode.workspace.fs instead."
          }
        ]
      }
    }
  ],
  "settings": {
    "import/core-modules": ["vscode"],
    "import/parsers": {
      "@typescript-eslint/parser": [".ts", ".tsx"]
    },
    "import/resolver": {
      "typescript": {
        "alwaysTryTypes": true
      }
    }
  },
  "ignorePatterns": ["**/core/common/**", "*.js"],
  "reportUnusedDisableDirectives": true
}
