module.exports = {
							 | 
						|
								  rules: {
							 | 
						|
								    // enforces getter/setter pairs in objects
							 | 
						|
								    // https://eslint.org/docs/rules/accessor-pairs
							 | 
						|
								    'accessor-pairs': 'off',
							 | 
						|
								
							 | 
						|
								    // enforces return statements in callbacks of array's methods
							 | 
						|
								    // https://eslint.org/docs/rules/array-callback-return
							 | 
						|
								    'array-callback-return': ['error', { allowImplicit: true }],
							 | 
						|
								
							 | 
						|
								    // treat var statements as if they were block scoped
							 | 
						|
								    // https://eslint.org/docs/rules/block-scoped-var
							 | 
						|
								    'block-scoped-var': 'error',
							 | 
						|
								
							 | 
						|
								    // specify the maximum cyclomatic complexity allowed in a program
							 | 
						|
								    // https://eslint.org/docs/rules/complexity
							 | 
						|
								    complexity: ['off', 20],
							 | 
						|
								
							 | 
						|
								    // enforce that class methods use "this"
							 | 
						|
								    // https://eslint.org/docs/rules/class-methods-use-this
							 | 
						|
								    'class-methods-use-this': ['error', {
							 | 
						|
								      exceptMethods: [],
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // require return statements to either always or never specify values
							 | 
						|
								    // https://eslint.org/docs/rules/consistent-return
							 | 
						|
								    'consistent-return': 'error',
							 | 
						|
								
							 | 
						|
								    // specify curly brace conventions for all control statements
							 | 
						|
								    // https://eslint.org/docs/rules/curly
							 | 
						|
								    curly: ['error', 'multi-line'], // multiline
							 | 
						|
								
							 | 
						|
								    // require default case in switch statements
							 | 
						|
								    // https://eslint.org/docs/rules/default-case
							 | 
						|
								    'default-case': ['error', { commentPattern: '^no default$' }],
							 | 
						|
								
							 | 
						|
								    // Enforce default clauses in switch statements to be last
							 | 
						|
								    // https://eslint.org/docs/rules/default-case-last
							 | 
						|
								    'default-case-last': 'error',
							 | 
						|
								
							 | 
						|
								    // https://eslint.org/docs/rules/default-param-last
							 | 
						|
								    'default-param-last': 'error',
							 | 
						|
								
							 | 
						|
								    // encourages use of dot notation whenever possible
							 | 
						|
								    // https://eslint.org/docs/rules/dot-notation
							 | 
						|
								    'dot-notation': ['error', { allowKeywords: true }],
							 | 
						|
								
							 | 
						|
								    // enforces consistent newlines before or after dots
							 | 
						|
								    // https://eslint.org/docs/rules/dot-location
							 | 
						|
								    'dot-location': ['error', 'property'],
							 | 
						|
								
							 | 
						|
								    // require the use of === and !==
							 | 
						|
								    // https://eslint.org/docs/rules/eqeqeq
							 | 
						|
								    eqeqeq: ['error', 'always', { null: 'ignore' }],
							 | 
						|
								
							 | 
						|
								    // Require grouped accessor pairs in object literals and classes
							 | 
						|
								    // https://eslint.org/docs/rules/grouped-accessor-pairs
							 | 
						|
								    'grouped-accessor-pairs': 'error',
							 | 
						|
								
							 | 
						|
								    // make sure for-in loops have an if statement
							 | 
						|
								    // https://eslint.org/docs/rules/guard-for-in
							 | 
						|
								    'guard-for-in': 'error',
							 | 
						|
								
							 | 
						|
								    // enforce a maximum number of classes per file
							 | 
						|
								    // https://eslint.org/docs/rules/max-classes-per-file
							 | 
						|
								    'max-classes-per-file': ['error', 1],
							 | 
						|
								
							 | 
						|
								    // disallow the use of alert, confirm, and prompt
							 | 
						|
								    // https://eslint.org/docs/rules/no-alert
							 | 
						|
								    'no-alert': 'warn',
							 | 
						|
								
							 | 
						|
								    // disallow use of arguments.caller or arguments.callee
							 | 
						|
								    // https://eslint.org/docs/rules/no-caller
							 | 
						|
								    'no-caller': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow lexical declarations in case/default clauses
							 | 
						|
								    // https://eslint.org/docs/rules/no-case-declarations
							 | 
						|
								    'no-case-declarations': 'error',
							 | 
						|
								
							 | 
						|
								    // Disallow returning value in constructor
							 | 
						|
								    // https://eslint.org/docs/rules/no-constructor-return
							 | 
						|
								    'no-constructor-return': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow division operators explicitly at beginning of regular expression
							 | 
						|
								    // https://eslint.org/docs/rules/no-div-regex
							 | 
						|
								    'no-div-regex': 'off',
							 | 
						|
								
							 | 
						|
								    // disallow else after a return in an if
							 | 
						|
								    // https://eslint.org/docs/rules/no-else-return
							 | 
						|
								    'no-else-return': ['error', { allowElseIf: false }],
							 | 
						|
								
							 | 
						|
								    // disallow empty functions, except for standalone funcs/arrows
							 | 
						|
								    // https://eslint.org/docs/rules/no-empty-function
							 | 
						|
								    'no-empty-function': ['error', {
							 | 
						|
								      allow: [
							 | 
						|
								        'arrowFunctions',
							 | 
						|
								        'functions',
							 | 
						|
								        'methods',
							 | 
						|
								      ]
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // disallow empty destructuring patterns
							 | 
						|
								    // https://eslint.org/docs/rules/no-empty-pattern
							 | 
						|
								    'no-empty-pattern': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow comparisons to null without a type-checking operator
							 | 
						|
								    // https://eslint.org/docs/rules/no-eq-null
							 | 
						|
								    'no-eq-null': 'off',
							 | 
						|
								
							 | 
						|
								    // disallow use of eval()
							 | 
						|
								    // https://eslint.org/docs/rules/no-eval
							 | 
						|
								    'no-eval': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow adding to native types
							 | 
						|
								    // https://eslint.org/docs/rules/no-extend-native
							 | 
						|
								    'no-extend-native': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow unnecessary function binding
							 | 
						|
								    // https://eslint.org/docs/rules/no-extra-bind
							 | 
						|
								    'no-extra-bind': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow Unnecessary Labels
							 | 
						|
								    // https://eslint.org/docs/rules/no-extra-label
							 | 
						|
								    'no-extra-label': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow fallthrough of case statements
							 | 
						|
								    // https://eslint.org/docs/rules/no-fallthrough
							 | 
						|
								    'no-fallthrough': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow the use of leading or trailing decimal points in numeric literals
							 | 
						|
								    // https://eslint.org/docs/rules/no-floating-decimal
							 | 
						|
								    'no-floating-decimal': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow reassignments of native objects or read-only globals
							 | 
						|
								    // https://eslint.org/docs/rules/no-global-assign
							 | 
						|
								    'no-global-assign': ['error', { exceptions: [] }],
							 | 
						|
								
							 | 
						|
								    // deprecated in favor of no-global-assign
							 | 
						|
								    // https://eslint.org/docs/rules/no-native-reassign
							 | 
						|
								    'no-native-reassign': 'off',
							 | 
						|
								
							 | 
						|
								    // disallow implicit type conversions
							 | 
						|
								    // https://eslint.org/docs/rules/no-implicit-coercion
							 | 
						|
								    'no-implicit-coercion': ['off', {
							 | 
						|
								      boolean: false,
							 | 
						|
								      number: true,
							 | 
						|
								      string: true,
							 | 
						|
								      allow: [],
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // disallow var and named functions in global scope
							 | 
						|
								    // https://eslint.org/docs/rules/no-implicit-globals
							 | 
						|
								    'no-implicit-globals': 'off',
							 | 
						|
								
							 | 
						|
								    // disallow use of eval()-like methods
							 | 
						|
								    // https://eslint.org/docs/rules/no-implied-eval
							 | 
						|
								    'no-implied-eval': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow this keywords outside of classes or class-like objects
							 | 
						|
								    // https://eslint.org/docs/rules/no-invalid-this
							 | 
						|
								    'no-invalid-this': 'off',
							 | 
						|
								
							 | 
						|
								    // disallow usage of __iterator__ property
							 | 
						|
								    // https://eslint.org/docs/rules/no-iterator
							 | 
						|
								    'no-iterator': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of labels for anything other than loops and switches
							 | 
						|
								    // https://eslint.org/docs/rules/no-labels
							 | 
						|
								    'no-labels': ['error', { allowLoop: false, allowSwitch: false }],
							 | 
						|
								
							 | 
						|
								    // disallow unnecessary nested blocks
							 | 
						|
								    // https://eslint.org/docs/rules/no-lone-blocks
							 | 
						|
								    'no-lone-blocks': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow creation of functions within loops
							 | 
						|
								    // https://eslint.org/docs/rules/no-loop-func
							 | 
						|
								    'no-loop-func': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow magic numbers
							 | 
						|
								    // https://eslint.org/docs/rules/no-magic-numbers
							 | 
						|
								    'no-magic-numbers': ['off', {
							 | 
						|
								      ignore: [],
							 | 
						|
								      ignoreArrayIndexes: true,
							 | 
						|
								      enforceConst: true,
							 | 
						|
								      detectObjects: false,
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // disallow use of multiple spaces
							 | 
						|
								    // https://eslint.org/docs/rules/no-multi-spaces
							 | 
						|
								    'no-multi-spaces': ['error', {
							 | 
						|
								      ignoreEOLComments: false,
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // disallow use of multiline strings
							 | 
						|
								    // https://eslint.org/docs/rules/no-multi-str
							 | 
						|
								    'no-multi-str': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of new operator when not part of the assignment or comparison
							 | 
						|
								    // https://eslint.org/docs/rules/no-new
							 | 
						|
								    'no-new': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of new operator for Function object
							 | 
						|
								    // https://eslint.org/docs/rules/no-new-func
							 | 
						|
								    'no-new-func': 'error',
							 | 
						|
								
							 | 
						|
								    // disallows creating new instances of String, Number, and Boolean
							 | 
						|
								    // https://eslint.org/docs/rules/no-new-wrappers
							 | 
						|
								    'no-new-wrappers': 'error',
							 | 
						|
								
							 | 
						|
								    // Disallow \8 and \9 escape sequences in string literals
							 | 
						|
								    // https://eslint.org/docs/rules/no-nonoctal-decimal-escape
							 | 
						|
								    'no-nonoctal-decimal-escape': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of (old style) octal literals
							 | 
						|
								    // https://eslint.org/docs/rules/no-octal
							 | 
						|
								    'no-octal': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of octal escape sequences in string literals, such as
							 | 
						|
								    // var foo = 'Copyright \251';
							 | 
						|
								    // https://eslint.org/docs/rules/no-octal-escape
							 | 
						|
								    'no-octal-escape': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow reassignment of function parameters
							 | 
						|
								    // disallow parameter object manipulation except for specific exclusions
							 | 
						|
								    // rule: https://eslint.org/docs/rules/no-param-reassign.html
							 | 
						|
								    'no-param-reassign': ['error', {
							 | 
						|
								      props: true,
							 | 
						|
								      ignorePropertyModificationsFor: [
							 | 
						|
								        'acc', // for reduce accumulators
							 | 
						|
								        'accumulator', // for reduce accumulators
							 | 
						|
								        'e', // for e.returnvalue
							 | 
						|
								        'ctx', // for Koa routing
							 | 
						|
								        'context', // for Koa routing
							 | 
						|
								        'req', // for Express requests
							 | 
						|
								        'request', // for Express requests
							 | 
						|
								        'res', // for Express responses
							 | 
						|
								        'response', // for Express responses
							 | 
						|
								        '$scope', // for Angular 1 scopes
							 | 
						|
								        'staticContext', // for ReactRouter context
							 | 
						|
								      ]
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // disallow usage of __proto__ property
							 | 
						|
								    // https://eslint.org/docs/rules/no-proto
							 | 
						|
								    'no-proto': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow declaring the same variable more than once
							 | 
						|
								    // https://eslint.org/docs/rules/no-redeclare
							 | 
						|
								    'no-redeclare': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow certain object properties
							 | 
						|
								    // https://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
							 | 
						|
								    // https://eslint.org/docs/rules/no-return-assign
							 | 
						|
								    'no-return-assign': ['error', 'always'],
							 | 
						|
								
							 | 
						|
								    // disallow redundant `return await`
							 | 
						|
								    // https://eslint.org/docs/rules/no-return-await
							 | 
						|
								    'no-return-await': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of `javascript:` urls.
							 | 
						|
								    // https://eslint.org/docs/rules/no-script-url
							 | 
						|
								    'no-script-url': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow self assignment
							 | 
						|
								    // https://eslint.org/docs/rules/no-self-assign
							 | 
						|
								    'no-self-assign': ['error', {
							 | 
						|
								      props: true,
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // disallow comparisons where both sides are exactly the same
							 | 
						|
								    // https://eslint.org/docs/rules/no-self-compare
							 | 
						|
								    'no-self-compare': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of comma operator
							 | 
						|
								    // https://eslint.org/docs/rules/no-sequences
							 | 
						|
								    'no-sequences': 'error',
							 | 
						|
								
							 | 
						|
								    // restrict what can be thrown as an exception
							 | 
						|
								    // https://eslint.org/docs/rules/no-throw-literal
							 | 
						|
								    'no-throw-literal': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow unmodified conditions of loops
							 | 
						|
								    // https://eslint.org/docs/rules/no-unmodified-loop-condition
							 | 
						|
								    'no-unmodified-loop-condition': 'off',
							 | 
						|
								
							 | 
						|
								    // disallow usage of expressions in statement position
							 | 
						|
								    // https://eslint.org/docs/rules/no-unused-expressions
							 | 
						|
								    'no-unused-expressions': ['error', {
							 | 
						|
								      allowShortCircuit: false,
							 | 
						|
								      allowTernary: false,
							 | 
						|
								      allowTaggedTemplates: false,
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // disallow unused labels
							 | 
						|
								    // https://eslint.org/docs/rules/no-unused-labels
							 | 
						|
								    'no-unused-labels': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow unnecessary .call() and .apply()
							 | 
						|
								    // https://eslint.org/docs/rules/no-useless-call
							 | 
						|
								    'no-useless-call': 'off',
							 | 
						|
								
							 | 
						|
								    // Disallow unnecessary catch clauses
							 | 
						|
								    // https://eslint.org/docs/rules/no-useless-catch
							 | 
						|
								    'no-useless-catch': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow useless string concatenation
							 | 
						|
								    // https://eslint.org/docs/rules/no-useless-concat
							 | 
						|
								    'no-useless-concat': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow unnecessary string escaping
							 | 
						|
								    // https://eslint.org/docs/rules/no-useless-escape
							 | 
						|
								    'no-useless-escape': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow redundant return; keywords
							 | 
						|
								    // https://eslint.org/docs/rules/no-useless-return
							 | 
						|
								    'no-useless-return': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow use of void operator
							 | 
						|
								    // https://eslint.org/docs/rules/no-void
							 | 
						|
								    'no-void': 'error',
							 | 
						|
								
							 | 
						|
								    // disallow usage of configurable warning terms in comments: e.g. todo
							 | 
						|
								    // https://eslint.org/docs/rules/no-warning-comments
							 | 
						|
								    'no-warning-comments': ['off', { terms: ['todo', 'fixme', 'xxx'], location: 'start' }],
							 | 
						|
								
							 | 
						|
								    // disallow use of the with statement
							 | 
						|
								    // https://eslint.org/docs/rules/no-with
							 | 
						|
								    'no-with': 'error',
							 | 
						|
								
							 | 
						|
								    // require using Error objects as Promise rejection reasons
							 | 
						|
								    // https://eslint.org/docs/rules/prefer-promise-reject-errors
							 | 
						|
								    'prefer-promise-reject-errors': ['error', { allowEmptyReject: true }],
							 | 
						|
								
							 | 
						|
								    // Suggest using named capture group in regular expression
							 | 
						|
								    // https://eslint.org/docs/rules/prefer-named-capture-group
							 | 
						|
								    'prefer-named-capture-group': 'off',
							 | 
						|
								
							 | 
						|
								    // https://eslint.org/docs/rules/prefer-regex-literals
							 | 
						|
								    'prefer-regex-literals': ['error', {
							 | 
						|
								      disallowRedundantWrapping: true,
							 | 
						|
								    }],
							 | 
						|
								
							 | 
						|
								    // require use of the second argument for parseInt()
							 | 
						|
								    // https://eslint.org/docs/rules/radix
							 | 
						|
								    radix: 'error',
							 | 
						|
								
							 | 
						|
								    // require `await` in `async function` (note: this is a horrible rule that should never be used)
							 | 
						|
								    // https://eslint.org/docs/rules/require-await
							 | 
						|
								    'require-await': 'off',
							 | 
						|
								
							 | 
						|
								    // Enforce the use of u flag on RegExp
							 | 
						|
								    // https://eslint.org/docs/rules/require-unicode-regexp
							 | 
						|
								    'require-unicode-regexp': 'off',
							 | 
						|
								
							 | 
						|
								    // requires to declare all vars on top of their containing scope
							 | 
						|
								    // https://eslint.org/docs/rules/vars-on-top
							 | 
						|
								    'vars-on-top': 'error',
							 | 
						|
								
							 | 
						|
								    // require immediate function invocation to be wrapped in parentheses
							 | 
						|
								    // https://eslint.org/docs/rules/wrap-iife.html
							 | 
						|
								    'wrap-iife': ['error', 'outside', { functionPrototypeMethods: false }],
							 | 
						|
								
							 | 
						|
								    // require or disallow Yoda conditions
							 | 
						|
								    // https://eslint.org/docs/rules/yoda
							 | 
						|
								    yoda: 'error'
							 | 
						|
								  }
							 | 
						|
								};
							 |