text: module.exports = {
    rules: {
      // enforces return statements in callbacks of array's methods
      // http://eslint.org/docs/rules/array-callback-return
      'array-callback-return': 'error',
  
      // treat var statements as if they were block scoped
      'block-scoped-var': 'error',
  
      // encourages use of dot notation whenever possible
      'dot-notation': ['error', {allowKeywords: true}],
  
      // require the use of === and !==
      // http://eslint.org/docs/rules/eqeqeq
      eqeqeq: ['error', 'always', {null: 'ignore'}],
  
      // disallow use of arguments.caller or arguments.callee
      'no-caller': 'error',
  
      // disallow lexical declarations in case/default clauses
      // http://eslint.org/docs/rules/no-case-declarations.html
      'no-case-declarations': 'error',
  
      // disallow empty functions, except for standalone funcs/arrows
      // http://eslint.org/docs/rules/no-empty-function
      'no-empty-function': [
        'error',
        {
          allow: ['arrowFunctions', 'functions', 'methods'],
        },
      ],
  
      // disallow empty destructuring patterns
      // http://eslint.org/docs/rules/no-empty-pattern
      'no-empty-pattern': 'error',
  
      // disallow use of eval()
      'no-eval': 'error',
  
      // disallow adding to native types
      'no-extend-native': 'error',
  
      // disallow unnecessary function binding
      'no-extra-bind': 'error',
  
      // disallow Unnecessary Labels
      // http://eslint.org/docs/rules/no-extra-label
      'no-extra-label': 'error',
  
      // disallow fallthrough of case statements
      'no-fallthrough': 'error',
  
      // disallow reassignments of native objects or read-only globals
      // http://eslint.org/docs/rules/no-global-assign
      'no-global-assign': ['error', {exceptions: []}],
  
      // disallow use of eval()-like methods
      'no-implied-eval': 'error',
  
      // disallow usage of __iterator__ property
      'no-iterator': 'error',
  
      // disallow unnecessary nested blocks
      'no-lone-blocks': 'error',
  
      // disallow use of multiline strings
      'no-multi-str': 'error',
  
      // disallow use of new operator when not part of the assignment or comparison
      'no-new': 'error',
  
      // disallow use of new operator for Function object
      'no-new-func': 'error',
  
      // disallows creating new instances of String, Number, and Boolean
      'no-new-wrappers': 'error',
  
      // disallow use of (old style) octal literals
      'no-octal': 'error',
  
      // disallow use of octal escape sequences in string literals, such as
      // var foo = 'Copyright \251';
      'no-octal-escape': 'error',
  
      // disallow usage of __proto__ property
      'no-proto': 'error',
  
      // disallow declaring the same variable more then once
      'no-redeclare': 'error',
  
      // disallow certain object properties
      // http://eslint.org/docs/rules/no-restricted-properties
      'no-restricted-properties': [
        'error',
        {
          object: 'arguments',
          property: 'callee',
          message: 'arguments.callee is deprecated',
        },
        {
          object: 'global',
          property: 'isFinite',
          message: 'Please use Number.isFinite instead',
        },
        {
          object: 'self',
          property: 'isFinite',
          message: 'Please use Number.isFinite instead',
        },
        {
          object: 'window',
          property: 'isFinite',
          message: 'Please use Number.isFinite instead',
        },
        {
          object: 'global',
          property: 'isNaN',
          message: 'Please use Number.isNaN instead',
        },
        {
          object: 'self',
          property: 'isNaN',
          message: 'Please use Number.isNaN instead',
        },
        {
          object: 'window',
          property: 'isNaN',
          message: 'Please use Number.isNaN instead',
        },
        {
          property: '__defineGetter__',
          message: 'Please use Object.defineProperty instead.',
        },
        {
          property: '__defineSetter__',
          message: 'Please use Object.defineProperty instead.',
        },
        {
          object: 'Math',
          property: 'pow',
          message: 'Use the exponentiation operator (**) instead.',
        },
      ],
  
      // disallow use of assignment in return statement
      'no-return-assign': ['error', 'always'],
  
      // disallow redundant `return await`
      'no-return-await': 'error',
  
      // disallow use of `javascript:` urls.
      'no-script-url': 'error',
  
      // disallow self assignment
      // http://eslint.org/docs/rules/no-self-assign
      'no-self-assign': 'error',
  
      // disallow comparisons where both sides are exactly the same
      'no-self-compare': 'error',
  
      // disallow use of comma operator
      'no-sequences': 'error',
  
      // restrict what can be thrown as an exception
      'no-throw-literal': 'error',
  
      // disallow usage of expressions in statement position
      'no-unused-expressions': [
        'error',
        {
          allowShortCircuit: false,
          allowTernary: false,
          allowTaggedTemplates: false,
        },
      ],
  
      // disallow unused labels
      // http://eslint.org/docs/rules/no-unused-labels
      'no-unused-labels': 'error',
  
      // disallow useless string concatenation
      // http://eslint.org/docs/rules/no-useless-concat
      'no-useless-concat': 'error',
  
      // disallow unnecessary string escaping
      // http://eslint.org/docs/rules/no-useless-escape
      'no-useless-escape': 'error',
  
      // disallow redundant return; keywords
      // http://eslint.org/docs/rules/no-useless-return
      'no-useless-return': 'error',
  
      // disallow use of void operator
      // http://eslint.org/docs/rules/no-void
      'no-void': 'error',
  
      // disallow use of the with statement
      'no-with': 'error',
  
      // require using Error objects as Promise rejection reasons
      // http://eslint.org/docs/rules/prefer-promise-reject-errors
      'prefer-promise-reject-errors': ['error', {allowEmptyReject: true}],
  
      // require use of the second argument for parseInt()
      radix: 'error',
  
      // requires to declare all vars on top of their containing scope
      'vars-on-top': 'error',
  
      // require or disallow Yoda conditions
      yoda: 'error',
    },
  };
  