{
  "extends": [
    "tslint:latest",
    "tslint-react",
    "tslint-microsoft-contrib",
    "tslint-eslint-rules",
    "tslint-config-prettier"
  ],
  "rules": {
    "max-line-length": [true, 120],
    "no-unsafe-any": false, // A lot of false positives
    "strict-boolean-expressions": false,
    "missing-jsdoc": false,
    "trailing-comma": [true],
    "typedef": [true, "property-declaration"],
    "variable-name": [false],
    "quotemark": [true, "single", "jsx-double"],
    "interface-name": [true, "never-prefix"],
    "member-access": false,
    "ordered-imports": [false],
    "no-relative-imports": false,
    "semicolon": [true, "ignore-bound-class-methods"],

    "no-default-export": true,

    // microsoft-tslint-contrib
    "import-name": false,
    "export-name": false,
    "no-import-side-effect": false,
    "misnamed-import": false,
    "restrict-plus-operand": false,
    "no-single-line-block-comment": false,

    "no-any": false,

    "prefer-type-cast": false,
    "no-reserved-keywords": false,

    // Resolve conflicting rules for array types
    "array-type": [true, "array-simple"],
    "prefer-array-literal": [false],

    "react-unused-props-and-state": false,
    "react-tsx-curly-spacing": false,
    "jsx-boolean-value": [true, "never"],
    // This does not work consistently
    // and sometimes adding a `key` causes unnecessary re-renders.
    "jsx-key": false,

    // Allows TSLint to recognize bluebird promises as valid promises
    // that can be `await`ed
    "await-promise": [true, "Bluebird"],

    "no-backbone-get-set-outside-model": false,

    // False positives, see https://github.com/palantir/tslint/issues/3419
    "no-redundant-jsdoc": false,

    "completed-docs": [
      false,
      {
        "enums": true,
        "functions": {
          "visibilities": ["exported"]
        }
      }
    ],

    // Disable, because of things like
    // `import express from 'express'` does not match the default export `e`
    "match-default-export-name": false
  },

  "jsRules": {
    "object-literal-sort-keys": false
  }
}
