{
  "extends": [
    "tslint-eslint-rules",
    "tslint-config-airbnb"
  ],
  "rules": {
    "naming-convention": [
      true,
      // all interfaces must start with 'I'
      {
        "type": "interface",
        "prefix": "I"
      },
      // use camelCase for all members, will be inherited by protected and private
      {
        "type": "member",
        "format": "camelCase"
      },
      // protected members will be REQUIRED to have a leading underscore. you can use "allow" as alternative
      {
        "type": "property",
        "modifiers": "protected",
        "leadingUnderscore": "require"
      },
      // to simply allow and not enforce double leading underscores, use "prefix": ["__", ""]
      {
        "type": "property",
        "modifiers": [
          "private"
        ],
        "leadingUnderscore": null,
        "prefix": "_"
      },
      // to simply allow and not enforce double leading underscores, use "prefix": ["__", ""]
      {
        "type": "property",
        "modifiers": [
          "static",
          "private"
        ],
        "leadingUnderscore": null,
        "prefix": "__",
        "format": [
          "UPPER_CASE"
        ]
      },
      // use UPPER_CASE for static properties
      {
        "type": "property",
        "modifiers": [
          "static"
        ],
        "leadingUnderscore": null,
        "format": [
          "UPPER_CASE"
        ]
      }
    ],
    "variable-name": [
      true,
      "check-format",
      "allow-leading-underscore"
    ],
    "ter-arrow-parens": [
      true,
      "always"
    ],
    "brace-style": [
      true,
      "Stroustrup"
    ],
    "semicolon": [
      true,
      "always",
      "ignore-bound-class-methods"
    ],
    "max-line-length": [
      true,
      120
    ]
  }
}
