mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 18:00:18 +01:00
5ee1291662
Previously all browser globals were allowed to be used anywhere by ESLint because we had set the `env` property to `browser` in the ESLint config. This has made it easy to accidentally use browser globals (e.g. #8338), so it has been removed. Instead we now have a short list of allowed globals. All browser globals are now accessed as properties on `window`. Unfortunately this change resulted in a few different confusing unit test errors, as some of our unit tests setup assumed that a particular global would be used via `window` or `global`. In particular, `window.fetch` didn't work correctly because it wasn't patched by the AbortController polyfill (only `global.fetch` was being patched). The `jsdom-global` package we were using complicated matters by setting all of the JSDOM `window` properties directly on `global`, overwriting the `AbortController` for example. The `helpers.js` test setup module has been simplified somewhat by removing `jsdom-global` and constructing the JSDOM instance manually. The JSDOM window is set on `window`, and a few properties are set on `global` as well as needed by various dependencies. `node-fetch` and the AbortController polyfill/patch now work as expected as well, though `fetch` is only available on `window` now.
100 lines
2.9 KiB
JavaScript
100 lines
2.9 KiB
JavaScript
module.exports = {
|
|
root: true,
|
|
parser: 'babel-eslint',
|
|
parserOptions: {
|
|
'sourceType': 'module',
|
|
'ecmaVersion': 2017,
|
|
'ecmaFeatures': {
|
|
'experimentalObjectRestSpread': true,
|
|
'impliedStrict': true,
|
|
'modules': true,
|
|
'blockBindings': true,
|
|
'arrowFunctions': true,
|
|
'objectLiteralShorthandMethods': true,
|
|
'objectLiteralShorthandProperties': true,
|
|
'templateStrings': true,
|
|
'classes': true,
|
|
'jsx': true,
|
|
},
|
|
},
|
|
|
|
extends: [
|
|
'@metamask/eslint-config',
|
|
'@metamask/eslint-config/config/nodejs',
|
|
'@metamask/eslint-config/config/mocha',
|
|
'plugin:react/recommended',
|
|
],
|
|
|
|
plugins: [
|
|
'babel',
|
|
'react',
|
|
'json',
|
|
'import',
|
|
],
|
|
|
|
globals: {
|
|
'$': 'readonly',
|
|
document: 'readonly',
|
|
QUnit: 'readonly',
|
|
window: 'readonly',
|
|
},
|
|
|
|
rules: {
|
|
'arrow-parens': 'error',
|
|
'no-mixed-operators': 'error',
|
|
'import/default': 'error',
|
|
'import/export': 'error',
|
|
'import/named': 'error',
|
|
'import/namespace': 'error',
|
|
'import/newline-after-import': 'error',
|
|
'import/no-absolute-path': 'error',
|
|
'import/no-amd': 'error',
|
|
'import/no-anonymous-default-export': ['error', { 'allowObject': true }],
|
|
'import/no-duplicates': 'error',
|
|
'import/no-dynamic-require': 'error',
|
|
'import/no-mutable-exports': 'error',
|
|
'import/no-named-as-default': 'error',
|
|
'import/no-named-as-default-member': 'error',
|
|
'import/no-named-default': 'error',
|
|
'import/no-self-import': 'error',
|
|
'import/no-unresolved': ['error', { 'commonjs': true }],
|
|
'import/no-unused-modules': 'error',
|
|
'import/no-useless-path-segments': ['error', { 'commonjs': true }],
|
|
'import/no-webpack-loader-syntax': 'error',
|
|
'react/no-unused-prop-types': 'error',
|
|
'react/no-unused-state': 'error',
|
|
'react/jsx-boolean-value': 'error',
|
|
'react/jsx-curly-brace-presence': ['error', { 'props': 'never', 'children': 'never' }],
|
|
'react/jsx-equals-spacing': 'error',
|
|
'react/no-deprecated': 'error',
|
|
'react/default-props-match-prop-types': 'error',
|
|
'react/jsx-closing-tag-location': 'error',
|
|
'react/jsx-no-duplicate-props': 'error',
|
|
'react/jsx-closing-bracket-location': 'error',
|
|
'react/jsx-first-prop-new-line': ['error', 'multiline'],
|
|
'react/jsx-max-props-per-line': ['error', { 'maximum': 1, 'when': 'multiline' } ],
|
|
'react/jsx-tag-spacing': ['error', {
|
|
'closingSlash': 'never',
|
|
'beforeSelfClosing': 'always',
|
|
'afterOpening': 'never',
|
|
}],
|
|
'react/jsx-wrap-multilines': ['error', {
|
|
'declaration': 'parens-new-line',
|
|
'assignment': 'parens-new-line',
|
|
'return': 'parens-new-line',
|
|
'arrow': 'parens-new-line',
|
|
'condition': 'parens-new-line',
|
|
'logical': 'parens-new-line',
|
|
'prop': 'parens-new-line',
|
|
}],
|
|
'babel/semi': ['error', 'never'],
|
|
'mocha/no-setup-in-describe': 'off',
|
|
},
|
|
|
|
settings: {
|
|
'react': {
|
|
'version': 'detect',
|
|
},
|
|
},
|
|
}
|