| const confusingBrowserGlobals = require('confusing-browser-globals'); | |
| 
 | |
| module.exports = { | |
|   rules: { | |
|     // enforce or disallow variable initializations at definition | |
|     'init-declarations': 'off', | |
| 
 | |
|     // disallow the catch clause parameter name being the same as a variable in the outer scope | |
|     'no-catch-shadow': 'off', | |
| 
 | |
|     // disallow deletion of variables | |
|     'no-delete-var': 'error', | |
| 
 | |
|     // disallow labels that share a name with a variable | |
|     // https://eslint.org/docs/rules/no-label-var | |
|     'no-label-var': 'error', | |
| 
 | |
|     // disallow specific globals | |
|     'no-restricted-globals': [ | |
|       'error', | |
|       { | |
|         name: 'isFinite', | |
|         message: | |
|           'Use Number.isFinite instead https://github.com/airbnb/javascript#standard-library--isfinite', | |
|       }, | |
|       { | |
|         name: 'isNaN', | |
|         message: | |
|           'Use Number.isNaN instead https://github.com/airbnb/javascript#standard-library--isnan', | |
|       }, | |
|     ].concat(confusingBrowserGlobals), | |
| 
 | |
|     // disallow declaration of variables already declared in the outer scope | |
|     'no-shadow': 'error', | |
| 
 | |
|     // disallow shadowing of names such as arguments | |
|     'no-shadow-restricted-names': 'error', | |
| 
 | |
|     // disallow use of undeclared variables unless mentioned in a /*global */ block | |
|     'no-undef': 'error', | |
| 
 | |
|     // disallow use of undefined when initializing variables | |
|     'no-undef-init': 'error', | |
| 
 | |
|     // disallow use of undefined variable | |
|     // https://eslint.org/docs/rules/no-undefined | |
|     // TODO: enable? | |
|     'no-undefined': 'off', | |
| 
 | |
|     // disallow declaration of variables that are not used in the code | |
|     'no-unused-vars': ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: true }], | |
| 
 | |
|     // disallow use of variables before they are defined | |
|     'no-use-before-define': ['error', { functions: true, classes: true, variables: true }], | |
|   } | |
| };
 |