{
  "overrides": [
    {
      "files": [
        "**/*.ts?(x)"
      ],
      "env": {},
      "globals": {},
      "parser": "@typescript-eslint/parser",
      "parserOptions": {
        "ecmaVersion": 2018,
        "sourceType": "module",
        "project": [
          "./tsconfig.json"
        ]
      },
      "plugins": [
        "zillow"
      ],
      "rules": {
        "spaced-comment": [
          "error",
          "always",
          {
            "line": {
              "markers": [
                "/"
              ]
            }
          }
        ],
        "zillow/import/first": [
          "off"
        ],
        "zillow/react/jsx-filename-extension": [
          "error",
          {
            "extensions": [
              ".js",
              ".jsx",
              ".tsx"
            ]
          }
        ],
        "zillow/react/prop-types": [
          "off"
        ],
        "zillow/react/sort-comp": [
          "off"
        ],
        "zillow/@typescript-eslint/array-type": [
          "error"
        ],
        "zillow/@typescript-eslint/ban-tslint-comment": [
          "error"
        ],
        "zillow/@typescript-eslint/class-literal-property-style": [
          "error"
        ],
        "zillow/@typescript-eslint/consistent-type-assertions": [
          "error"
        ],
        "zillow/@typescript-eslint/consistent-type-definitions": [
          "error"
        ],
        "zillow/@typescript-eslint/consistent-type-imports": [
          "error",
          {
            "prefer": "type-imports",
            "disallowTypeAnnotations": true
          }
        ],
        "default-param-last": [
          "off"
        ],
        "zillow/@typescript-eslint/default-param-last": [
          "off"
        ],
        "dot-notation": [
          "off"
        ],
        "zillow/@typescript-eslint/dot-notation": [
          "error",
          {
            "allowKeywords": true,
            "allowPrivateClassPropertyAccess": false,
            "allowPattern": ""
          }
        ],
        "zillow/@typescript-eslint/explicit-function-return-type": [
          "off"
        ],
        "zillow/@typescript-eslint/explicit-member-accessibility": [
          "error",
          {
            "accessibility": "no-public"
          }
        ],
        "init-declarations": [
          "off"
        ],
        "zillow/@typescript-eslint/init-declarations": [
          "error",
          "never",
          {
            "ignoreForLoopInit": true
          }
        ],
        "lines-between-class-members": [
          "off"
        ],
        "zillow/@typescript-eslint/lines-between-class-members": [
          "error",
          "always",
          {
            "exceptAfterSingleLine": false,
            "exceptAfterOverload": true
          }
        ],
        "zillow/@typescript-eslint/member-ordering": [
          "error"
        ],
        "zillow/@typescript-eslint/method-signature-style": [
          "error"
        ],
        "camelcase": [
          "off"
        ],
        "zillow/@typescript-eslint/naming-convention": [
          "error",
          {
            "selector": "default",
            "format": [
              "camelCase"
            ]
          },
          {
            "selector": "variable",
            "format": [
              "camelCase",
              "UPPER_CASE"
            ]
          },
          {
            "selector": "variable",
            "types": [
              "function"
            ],
            "format": [
              "camelCase",
              "PascalCase"
            ]
          },
          {
            "selector": "function",
            "format": [
              "camelCase",
              "PascalCase"
            ]
          },
          {
            "selector": "parameter",
            "format": [
              "camelCase"
            ],
            "leadingUnderscore": "allow"
          },
          {
            "selector": "memberLike",
            "format": [
              "camelCase"
            ],
            "modifiers": [
              "private"
            ],
            "leadingUnderscore": "require"
          },
          {
            "selector": "memberLike",
            "filter": "^TODO$",
            "format": null
          },
          {
            "selector": "property",
            "filter": "^(Component|AppTree)$",
            "format": null
          },
          {
            "selector": "typeLike",
            "format": [
              "PascalCase"
            ]
          },
          {
            "selector": "interface",
            "custom": {
              "regex": "^I[A-Z](?![A-Z])",
              "match": false
            },
            "format": [
              "PascalCase"
            ]
          },
          {
            "selector": "method",
            "filter": "^UNSAFE_",
            "format": null
          }
        ],
        "zillow/@typescript-eslint/no-base-to-string": [
          "error"
        ],
        "zillow/@typescript-eslint/no-confusing-non-null-assertion": [
          "error"
        ],
        "zillow/@typescript-eslint/no-dupe-class-members": [
          "off"
        ],
        "zillow/@typescript-eslint/no-dynamic-delete": [
          "error"
        ],
        "zillow/@typescript-eslint/no-extra-non-null-assertion": [
          "error"
        ],
        "zillow/@typescript-eslint/no-extraneous-class": [
          "error"
        ],
        "zillow/@typescript-eslint/no-implicit-any-catch": [
          "off",
          {
            "allowExplicitAny": false
          }
        ],
        "no-invalid-this": [
          "off"
        ],
        "zillow/@typescript-eslint/no-invalid-this": [
          "error"
        ],
        "zillow/@typescript-eslint/no-invalid-void-type": [
          "error",
          {
            "allowInGenericTypeArguments": true
          }
        ],
        "no-loop-func": [
          "off"
        ],
        "zillow/@typescript-eslint/no-loop-func": [
          "error"
        ],
        "no-loss-of-precision": [
          "off"
        ],
        "zillow/@typescript-eslint/no-loss-of-precision": [
          "error"
        ],
        "no-magic-numbers": [
          "off"
        ],
        "zillow/@typescript-eslint/no-magic-numbers": [
          "off",
          {
            "ignore": [],
            "ignoreArrayIndexes": true,
            "enforceConst": true,
            "detectObjects": false,
            "ignoreNumericLiteralTypes": true,
            "ignoreReadonlyClassProperties": true
          }
        ],
        "zillow/@typescript-eslint/no-non-null-asserted-optional-chain": [
          "error"
        ],
        "zillow/@typescript-eslint/no-parameter-properties": [
          "error"
        ],
        "no-redeclare": [
          "off"
        ],
        "zillow/@typescript-eslint/no-redeclare": [
          "error",
          {
            "builtinGlobals": true,
            "ignoreDeclarationMerge": true
          }
        ],
        "no-shadow": [
          "off"
        ],
        "zillow/@typescript-eslint/no-shadow": [
          "error",
          {
            "builtinGlobals": false,
            "hoist": "functions",
            "allow": [
              "fetch",
              "global"
            ],
            "ignoreTypeValueShadow": true,
            "ignoreFunctionTypeParameterNameValueShadow": true
          }
        ],
        "zillow/@typescript-eslint/no-require-imports": [
          "error"
        ],
        "zillow/@typescript-eslint/no-throw-literal": [
          "error"
        ],
        "zillow/@typescript-eslint/no-type-alias": [
          "error",
          {
            "allowAliases": "always",
            "allowCallbacks": "always",
            "allowConditionalTypes": "never",
            "allowConstructors": "never",
            "allowLiterals": "in-intersections",
            "allowMappedTypes": "never",
            "allowTupleTypes": "never"
          }
        ],
        "zillow/@typescript-eslint/no-unnecessary-boolean-literal-compare": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unnecessary-condition": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unnecessary-qualifier": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unnecessary-type-arguments": [
          "error"
        ],
        "no-unused-expressions": [
          "off"
        ],
        "zillow/@typescript-eslint/no-unused-expressions": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unused-vars-experimental": [
          "off"
        ],
        "no-useless-constructor": [
          "off"
        ],
        "zillow/@typescript-eslint/no-useless-constructor": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-enum-initializers": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-for-of": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-function-type": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-includes": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-literal-enum-member": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-nullish-coalescing": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-optional-chain": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-readonly": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-readonly-parameter-types": [
          "off"
        ],
        "zillow/@typescript-eslint/prefer-reduce-type-parameter": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-string-starts-ends-with": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-ts-expect-error": [
          "error"
        ],
        "zillow/@typescript-eslint/promise-function-async": [
          "error"
        ],
        "zillow/@typescript-eslint/require-array-sort-compare": [
          "error"
        ],
        "no-return-await": [
          "off"
        ],
        "zillow/@typescript-eslint/return-await": [
          "error"
        ],
        "zillow/@typescript-eslint/strict-boolean-expressions": [
          "off"
        ],
        "zillow/@typescript-eslint/switch-exhaustiveness-check": [
          "error"
        ],
        "zillow/@typescript-eslint/typedef": [
          "off"
        ],
        "zillow/@typescript-eslint/unified-signatures": [
          "error"
        ],
        "zillow/@typescript-eslint/await-thenable": [
          "error"
        ],
        "zillow/@typescript-eslint/no-floating-promises": [
          "error"
        ],
        "zillow/@typescript-eslint/no-for-in-array": [
          "error"
        ],
        "zillow/@typescript-eslint/no-implied-eval": [
          "error"
        ],
        "zillow/@typescript-eslint/no-misused-promises": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unnecessary-type-assertion": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unsafe-assignment": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unsafe-call": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unsafe-member-access": [
          "error"
        ],
        "zillow/@typescript-eslint/no-unsafe-return": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-regexp-exec": [
          "error"
        ],
        "require-await": [
          "off"
        ],
        "zillow/@typescript-eslint/require-await": [
          "error"
        ],
        "zillow/@typescript-eslint/restrict-plus-operands": [
          "error"
        ],
        "zillow/@typescript-eslint/restrict-template-expressions": [
          "error"
        ],
        "zillow/@typescript-eslint/unbound-method": [
          "error"
        ],
        "zillow/@typescript-eslint/adjacent-overload-signatures": [
          "error"
        ],
        "zillow/@typescript-eslint/ban-ts-comment": [
          "error",
          {
            "ts-expect-error": "allow-with-description",
            "ts-ignore": true,
            "ts-nocheck": true,
            "ts-check": false,
            "minimumDescriptionLength": 3
          }
        ],
        "zillow/@typescript-eslint/ban-types": [
          "error",
          {
            "extendDefaults": true,
            "types": {
              "object": {
                "fixWith": "Record<string, unknown>",
                "message": "The `object` type is currently hard to use ([see this issue](https://github.com/microsoft/TypeScript/issues/21732)).\nConsider using `Record<string, unknown>` instead, as it allows you to more easily inspect and use the keys."
              }
            }
          }
        ],
        "zillow/@typescript-eslint/explicit-module-boundary-types": [
          "off",
          {
            "allowArgumentsExplicitlyTypedAsAny": false,
            "allowDirectConstAssertionInArrowFunctions": true,
            "allowedNames": [],
            "allowHigherOrderFunctions": true,
            "allowTypedFunctionExpressions": true
          }
        ],
        "no-array-constructor": [
          "off"
        ],
        "zillow/@typescript-eslint/no-array-constructor": [
          "error"
        ],
        "no-empty-function": [
          "off"
        ],
        "zillow/@typescript-eslint/no-empty-function": [
          "error",
          {
            "allow": [
              "arrowFunctions",
              "functions",
              "methods"
            ]
          }
        ],
        "zillow/@typescript-eslint/no-empty-interface": [
          "error"
        ],
        "zillow/@typescript-eslint/no-explicit-any": [
          "warn"
        ],
        "zillow/@typescript-eslint/no-inferrable-types": [
          "error"
        ],
        "zillow/@typescript-eslint/no-misused-new": [
          "error"
        ],
        "zillow/@typescript-eslint/no-namespace": [
          "error"
        ],
        "zillow/@typescript-eslint/no-non-null-assertion": [
          "warn"
        ],
        "zillow/@typescript-eslint/no-this-alias": [
          "error"
        ],
        "no-unused-vars": [
          "off"
        ],
        "zillow/@typescript-eslint/no-unused-vars": [
          "error",
          {
            "argsIgnorePattern": "^_",
            "varsIgnorePattern": "^ignored",
            "args": "after-used",
            "ignoreRestSiblings": true
          }
        ],
        "no-use-before-define": [
          "off"
        ],
        "zillow/@typescript-eslint/no-use-before-define": [
          "error",
          {
            "functions": false,
            "typedefs": false
          }
        ],
        "zillow/@typescript-eslint/no-var-requires": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-as-const": [
          "error"
        ],
        "zillow/@typescript-eslint/prefer-namespace-keyword": [
          "error"
        ],
        "zillow/@typescript-eslint/triple-slash-reference": [
          "error",
          {
            "lib": "never",
            "path": "never",
            "types": "prefer-import"
          }
        ],
        "constructor-super": [
          "off"
        ],
        "getter-return": [
          "off"
        ],
        "no-const-assign": [
          "off"
        ],
        "no-dupe-args": [
          "off"
        ],
        "no-dupe-class-members": [
          "off"
        ],
        "no-dupe-keys": [
          "off"
        ],
        "no-func-assign": [
          "off"
        ],
        "no-import-assign": [
          "off"
        ],
        "no-new-symbol": [
          "off"
        ],
        "no-obj-calls": [
          "off"
        ],
        "no-setter-return": [
          "off"
        ],
        "no-this-before-super": [
          "off"
        ],
        "no-undef": [
          "off"
        ],
        "no-unreachable": [
          "off"
        ],
        "no-unsafe-negation": [
          "off"
        ],
        "no-var": [
          "error"
        ],
        "prefer-const": [
          "error"
        ],
        "prefer-rest-params": [
          "error"
        ],
        "prefer-spread": [
          "error"
        ],
        "valid-typeof": [
          "off"
        ],
        "zillow/prettier/prettier": [
          "error",
          {
            "$schema": "http://json.schemastore.org/prettierrc",
            "arrowParens": "always",
            "bracketSpacing": true,
            "embeddedLanguageFormatting": "auto",
            "jsxBracketSameLine": false,
            "htmlWhitespaceSensitivity": "css",
            "requirePragma": false,
            "insertPragma": false,
            "proseWrap": "preserve",
            "semi": true,
            "useTabs": false,
            "endOfLine": "lf",
            "printWidth": 100,
            "singleQuote": true,
            "tabWidth": 4,
            "trailingComma": "es5",
            "quoteProps": "consistent"
          },
          {
            "usePrettierrc": false
          }
        ],
        "zillow/@typescript-eslint/quotes": [
          "off"
        ],
        "zillow/@typescript-eslint/brace-style": [
          "off"
        ],
        "zillow/@typescript-eslint/comma-spacing": [
          "off"
        ],
        "zillow/@typescript-eslint/func-call-spacing": [
          "off"
        ],
        "zillow/@typescript-eslint/indent": [
          "off"
        ],
        "zillow/@typescript-eslint/keyword-spacing": [
          "off"
        ],
        "zillow/@typescript-eslint/member-delimiter-style": [
          "off"
        ],
        "zillow/@typescript-eslint/no-extra-parens": [
          "off"
        ],
        "zillow/@typescript-eslint/no-extra-semi": [
          "off"
        ],
        "zillow/@typescript-eslint/semi": [
          "off"
        ],
        "zillow/@typescript-eslint/space-before-function-paren": [
          "off"
        ],
        "zillow/@typescript-eslint/type-annotation-spacing": [
          "off"
        ],
        "zillow/@typescript-eslint/comma-dangle": [
          "off"
        ]
      },
      "settings": {}
    }
  ]
}