extends: "tslint:recommended"
rules:
    semicolon: [true, "always", "ignore-interfaces"]

    no-shadowed-variable: false
    no-console: false
    member-ordering: false
    ordered-imports: true
    max-line-length: false

    # Due to VSCode syntax highlighting we're unlikely to do this wrong, and it gets annoying
    # when trying to construct literal Fn::Sub() arguments.
    no-invalid-template-strings: false

    # No preference for quotes (?)
    quotemark: false

    # Our props struct currently don't start with "I"
    interface-name: false

    # We're not Java
    max-classes-per-file: false

    # We have this wrong on all classes, keep it a warning for now
    member-access:
        severity: warning

    # Rule is dumb, complains about aliases for interface definitions
    interface-over-type-literal: false

    # File should end with a newline. Why?
    eofline: false

    # Way more readable without
    arrow-parens: false

    # We're using namespaces.
    no-namespace: false

    # Super annoying
    object-literal-sort-keys: false

    # Trailing comma gets into a fight with itself when splitting lists over multiple lines
    trailing-comma: false

    # We create Constructs for their side effect all the time
    no-unused-expression: [true, "allow-new"]

    # Without this rule, _blabla would be disallowed, which is necessary to silence unused variable errors.
    variable-name: [true, "ban-keywords", "check-format", "allow-leading-underscore"]