{
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended",
    "airbnb",
    "react-app"
  ],
  "plugins": [
    "sort-destructure-keys",
    "typescript-sort-keys",
    "postro4no"
  ],
  "rules": {
    "@typescript-eslint/array-type": [
      "warn",
      { "default" : "generic" }
    ],
    "@typescript-eslint/indent": ["warn", 2],
    "@typescript-eslint/member-delimiter-style": ["warn", {
      "multiline": {
        "delimiter": "comma",
        "requireLast": true
      },
      "singleline": {
        "delimiter": "comma",
        "requireLast": false
      }
    }],
    "@typescript-eslint/no-shadow": "warn",
    "@typescript-eslint/semi": ["error", "never"],
    "import/extensions": [
      "warn",
      "never",
      {
        "svg": "always",
        "css": "always",
        "scss": "always"
      }
    ],
    "import/no-duplicates": "warn",
    "import/no-extraneous-dependencies": [
      "warn",
      {
        "devDependencies": [
          "src/setupTests.ts",
          "src/**/stories.tsx"
        ]
      }
    ],
    "jsx-quotes": [
      "warn",
      "prefer-single"
    ],
    "no-param-reassign": [
      "warn",
      {
        "props": true,
        "ignorePropertyModificationsFor": ["self", "acc"]
      }
    ],
    "postro4no/function-args": "warn",
    "postro4no/import": "warn",
    "postro4no/object-props": "warn",
    "react/jsx-filename-extension": [
      "warn",
      { "extensions": [".tsx"] }
    ],
    "react/jsx-indent": ["warn", 2],
    "sort-destructure-keys/sort-destructure-keys": [
      1,
      { "caseSensitive": false }
    ],
    "sort-keys": [
      "warn",
      "asc", {
        "caseSensitive": true,
        "natural": true
      }
    ],
    "typescript-sort-keys/interface": 1,
    "typescript-sort-keys/string-enum": 1,

    "camelcase": "off",
    "import/no-unresolved": "off",
    "import/prefer-default-export": "off",
    "indent": "off",
    "no-plusplus": "off",
    "no-shadow": "off",
    "no-underscore-dangle": "off",
    "no-unused-vars": "off",
    "react/jsx-fragments": "off",
    "react/jsx-one-expression-per-line": "off",
    "react/prop-types": "off",
    "react/react-in-jsx-scope": "off",
    "react/require-default-props": "off",
    "semi": "off"
  }
}
