{
  env: {
    node: true,
  },

  rules: {
    // Possible Errors
    comma-dangle: [2, "always-multiline"],
    no-cond-assign: 0,
    no-console: 2,
    no-constant-condition: 0,
    no-debugger: 2,
    no-dupe-args: 2,
    no-dupe-keys: 2,
    no-duplicate-case: 2,
    no-empty: 2,
    no-empty-character-class: 2,
    no-ex-assign: 2,
    no-extra-boolean-cast: 2,
    no-extra-parens: 0,
    no-extra-semi: 2,
    no-func-assign: 2,
    no-inner-declarations: 2,
    no-invalid-regexp: 2,
    no-irregular-whitespace: 2,
    no-negated-in-lhs: 2,
    no-obj-calls: 2,
    no-regex-spaces: 2,
    no-sparse-arrays: 2,
    no-unreachable: 2,
    use-isnan: 2,
    valid-jsdoc: 0,
    valid-typeof: 2,
    no-unexpected-multiline: 2,

    // Best Practices
    accessor-pairs: 2,
    block-scoped-var: 2,
    complexity: 0,
    consistent-return: 0,
    curly: 0,
    default-case: 0,
    dot-notation: 2,
    dot-location: [2, "property"],
    eqeqeq: 2,
    guard-for-in: 0,
    no-alert: 2,
    no-caller: 2,
    no-div-regex: 2,
    no-else-return: 0,
    no-labels: 2,
    no-eq-null: 2,
    no-eval: 2,
    no-extend-native: 2,
    no-extra-bind: 2,
    no-fallthrough: 0,
    no-floating-decimal: 2,
    no-implicit-coercion: 0,
    no-implied-eval: 2,
    no-invalid-this: 2,
    no-iterator: 2,
    no-lone-blocks: 2,
    no-loop-func: 2,
    no-multi-spaces: 0,
    no-multi-str: 2,
    no-native-reassign: 2,
    no-new-func: 2,
    no-new-wrappers: 2,
    no-new: 2,
    no-octal-escape: 2,
    no-octal: 2,
    no-param-reassign: 0,
    no-process-env: 2,
    no-proto: 2,
    no-redeclare: 2,
    no-return-assign: 0,
    no-script-url: 2,
    no-self-compare: 2,
    no-sequences: 0, // allow the comma operator
    no-throw-literal: 2,
    no-unused-expressions: 0,
    no-useless-call: 2,
    no-void: 2,
    no-warning-comments: 2,
    no-with: 2,
    radix: 2,
    vars-on-top: 0,
    wrap-iife: [2, "inside"],
    yoda: 2,

    // Strict Mode
    strict: [2, "never"],

    // Variables
    init-declarations: 0,
    no-catch-shadow: 2,
    no-delete-var: 2,
    no-label-var: 2,
    no-shadow-restricted-names: 2,
    no-shadow: 0,
    no-undef-init: 2,
    no-undef: 2,
    no-undefined: 0,
    no-unused-vars: [ 2, { args: "none" }],
    no-use-before-define: [2, "nofunc"],

    // Node.js
    callback-return: 0,
    handle-callback-err: 2,
    no-mixed-requires: 2,
    no-new-require: 2,
    no-path-concat: 2,
    no-process-exit: 2,
    no-restricted-modules: 2,
    no-sync: 2,

    // Stylistic Issues
    array-bracket-spacing: 2,
    block-spacing: 2,
    brace-style: [2, "stroustrup", { allowSingleLine: true }],
    camelcase: 2,
    comma-spacing: 2,
    comma-style: 2,
    computed-property-spacing: 2,
    consistent-this: 0,
    eol-last: 2,
    func-names: 0,
    func-style: [2, "declaration"],
    id-length: 0,
    id-match: 2,
    indent-legacy: [2, 2, { VariableDeclarator: 2 }],
    key-spacing: [2, { mode: "minimum" }],
    lines-around-comment: 2,
    linebreak-style: 2,
    max-nested-callbacks: [2, 1],
    new-cap: 2,
    new-parens: 2,
    newline-after-var: 0,
    no-array-constructor: 2,
    no-continue: 2,
    no-inline-comments: 0,
    no-lonely-if: 2,
    no-mixed-spaces-and-tabs: 2,
    no-multiple-empty-lines: 0,
    no-nested-ternary: 0,
    no-new-object: 2,
    no-spaced-func: 2,
    no-ternary: 0,
    no-trailing-spaces: 2,
    no-underscore-dangle: 0,
    no-unneeded-ternary: 2,
    object-curly-spacing: [2, "always"],
    object-curly-newline: 0,
    object-property-newline: 0,
    one-var: 0,
    operator-assignment: 2,
    operator-linebreak: [2, "after", { overrides: { ":": "ignore" } }],
    padded-blocks: [2, "never"],
    quote-props: [2, "consistent-as-needed"],
    quotes: [2, "single", "avoid-escape"],
    semi-spacing: 2,
    semi: 2,
    sort-vars: 0,
    keyword-spacing: 2,
    space-before-blocks: 2,
    space-before-function-paren: [2, {"anonymous": "always", "named": "never"}],
    space-in-parens: 2,
    space-infix-ops: 2,
    space-unary-ops: 2,
    spaced-comment: [2, "always", { block: { markers: ["!"] } }],
    wrap-regex: 0,
  },
}
