{
  "ignorePatterns": ["**/*"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
      "rules": {
        "@nx/enforce-module-boundaries": [
          "error",
          {
            "enforceBuildableLibDependency": true,
            "allow": [],
            "depConstraints": [
              {
                "sourceTag": "type:plugin",
                "onlyDependOnLibsWithTags": [
                  "type:util",
                  "type:ui",
                  "type:feature"
                ]
              },
              {
                "sourceTag": "type:app",
                "onlyDependOnLibsWithTags": [
                  "type:util",
                  "type:ui",
                  "type:feature"
                ]
              },
              {
                "sourceTag": "type:feature",
                "onlyDependOnLibsWithTags": [
                  "type:feature",
                  "type:ui",
                  "type:util"
                ]
              },
              {
                "sourceTag": "type:ui",
                "onlyDependOnLibsWithTags": ["type:ui", "type:util"]
              },
              {
                "sourceTag": "type:util",
                "onlyDependOnLibsWithTags": ["type:util"]
              }
            ]
          }
        ]
      }
    },
    {
      "files": ["*.ts", "*.tsx"],
      "extends": [
        "plugin:@typescript-eslint/recommended",
        "plugin:@typescript-eslint/recommended-requiring-type-checking",
        "plugin:deprecation/recommended",
        "prettier"
      ],
      "rules": {
        "@typescript-eslint/no-unused-vars": ["error"],
        "no-multiple-empty-lines": [
          2,
          {
            "max": 1
          }
        ],
        "quotes": [
          "error",
          "single",
          {
            "avoidEscape": true
          }
        ]
      }
    },
    {
      "files": ["*.spec.ts"],
      "extends": [
        "plugin:@typescript-eslint/recommended",
        "plugin:@typescript-eslint/recommended-requiring-type-checking",
        "plugin:deprecation/recommended",
        "prettier"
      ],
      "rules": {
        "@typescript-eslint/no-unused-vars": ["error"],
        "no-multiple-empty-lines": [
          2,
          {
            "max": 1
          }
        ],
        "quotes": [
          "error",
          "single",
          {
            "avoidEscape": true
          }
        ],
        "@typescript-eslint/no-unsafe-member-access": "off",
        "@typescript-eslint/no-unsafe-call": "off",
        "@typescript-eslint/no-unsafe-assignment": "off",
        "@typescript-eslint/no-explicit-any": "off",
        "@typescript-eslint/no-unsafe-argument": "off",
        "@typescript-eslint/no-unsafe-return": "off",
        "@ngrx/prefix-selectors-with-select": "off"
      }
    },
    {
      "files": ["*.js", "*.jsx"],
      "rules": {}
    }
  ],
  "extends": ["./.eslintrc.base.json"]
}