From ecd4b8221c7a0bbed40137648932eb504ae0a3af Mon Sep 17 00:00:00 2001 From: Whymarrh Whitby Date: Wed, 22 Jan 2020 11:07:19 -0330 Subject: [PATCH] Use shared MetaMask ESLint config (#7882) --- .eslintignore | 2 + .eslintrc | 220 -------------------------------------------------- .eslintrc.js | 95 ++++++++++++++++++++++ package.json | 1 + yarn.lock | 5 ++ 5 files changed, 103 insertions(+), 220 deletions(-) delete mode 100644 .eslintrc create mode 100644 .eslintrc.js diff --git a/.eslintignore b/.eslintignore index 8fb306d16..d791f6a12 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,5 @@ +!.eslintrc.js + node_modules/** dist/** builds/** diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 354a77663..000000000 --- a/.eslintrc +++ /dev/null @@ -1,220 +0,0 @@ -{ - "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": ["plugin:react/recommended"], - - "env": { - "es6": true, - "node": true, - "browser": true, - "mocha" : true - }, - - "plugins": [ - "babel", - "mocha", - "chai", - "react", - "json", - "import" - ], - - "globals": { - "document": false, - "navigator": false, - "web3": true, - "window": false, - "$": false, - "QUnit": false - }, - - "rules": { - "default-case": 2, - "import/default": 2, - "import/export": 2, - "import/named": 2, - "import/namespace": 2, - "import/newline-after-import": 2, - "import/no-absolute-path": 2, - "import/no-amd": 2, - "import/no-anonymous-default-export": [2, { "allowObject": true }], - "import/no-duplicates": 2, - "import/no-dynamic-require": 2, - "import/no-mutable-exports": 2, - "import/no-named-as-default": 2, - "import/no-named-as-default-member": 2, - "import/no-named-default": 2, - "import/no-self-import": 2, - "import/no-unresolved": [2, { "commonjs": true }], - "import/no-unused-modules": 2, - "import/no-useless-path-segments": [2, { "commonjs": true }], - "import/no-webpack-loader-syntax": 2, - "no-restricted-globals": ["error", "event"], - "accessor-pairs": 2, - "arrow-spacing": [2, { "before": true, "after": true }], - "block-spacing": [2, "always"], - "brace-style": 2, - "camelcase": [2, { "properties": "never", "allow": ["^UNSAFE_"] }], - "comma-dangle": [2, "always-multiline"], - "comma-spacing": [2, { "before": false, "after": true }], - "comma-style": [2, "last"], - "constructor-super": 2, - "curly": 2, - "dot-location": [2, "property"], - "eol-last": 2, - "eqeqeq": [2, "allow-null"], - "generator-star-spacing": [2, { "before": true, "after": true }], - "handle-callback-err": [2, "^(err|error)$" ], - "indent": [2, 2,{ "SwitchCase": 1 }], - "jsx-quotes": [2, "prefer-double"], - "key-spacing": 2, - "keyword-spacing": [2, { "before": true, "after": true }], - "new-cap": [2, { "newIsCap": true, "capIsNew": false }], - "new-parens": 2, - "no-array-constructor": 2, - "no-async-promise-executor": "error", - "no-caller": 2, - "no-class-assign": 2, - "no-cond-assign": 2, - "no-confusing-arrow": 2, - "no-const-assign": 2, - "no-control-regex": 2, - "no-debugger": 2, - "no-delete-var": 2, - "no-dupe-args": 2, - "no-dupe-class-members": 2, - "no-dupe-keys": 2, - "no-duplicate-case": 2, - "no-duplicate-imports": 2, - "no-empty-character-class": 2, - "no-empty-pattern": 2, - "no-eval": 2, - "no-ex-assign": 2, - "no-extend-native": 2, - "no-extra-bind": 2, - "no-extra-boolean-cast": 2, - "no-extra-parens": [2, "functions"], - "no-fallthrough": 2, - "no-floating-decimal": 2, - "no-func-assign": 2, - "no-implied-eval": 2, - "no-inner-declarations": [2, "functions"], - "no-invalid-regexp": 2, - "no-irregular-whitespace": 2, - "no-iterator": 2, - "no-label-var": 2, - "no-labels": [2, { "allowLoop": false, "allowSwitch": false }], - "no-lone-blocks": 2, - "no-mixed-spaces-and-tabs": 2, - "no-multi-spaces": 2, - "no-multi-str": 2, - "no-multiple-empty-lines": [2, { "max": 2 }], - "no-native-reassign": 2, - "no-negated-in-lhs": 2, - "no-new": 2, - "no-new-func": 2, - "no-new-object": 2, - "no-new-require": 2, - "no-new-symbol": 2, - "no-new-wrappers": 2, - "no-obj-calls": 2, - "no-octal": 2, - "no-octal-escape": 2, - "no-path-concat": 2, - "no-proto": 2, - "no-redeclare": 2, - "no-regex-spaces": 2, - "no-return-assign": [2, "except-parens"], - "no-self-assign": 2, - "no-self-compare": 2, - "no-sequences": 2, - "no-shadow-restricted-names": 2, - "no-spaced-func": 2, - "no-sparse-arrays": 2, - "no-this-before-super": 2, - "no-throw-literal": 2, - "no-trailing-spaces": 2, - "no-undef": 2, - "no-undef-init": 2, - "no-unexpected-multiline": 2, - "no-unmodified-loop-condition": 2, - "no-unneeded-ternary": [2, { "defaultAssignment": false }], - "no-unreachable": 2, - "no-unsafe-finally": 2, - "no-unused-expressions": ["error", { "allowShortCircuit" : true, "allowTernary": true }], - "no-unused-vars": [2, { "vars": "all", "args": "all", "argsIgnorePattern": "[_]+" }], - "no-use-before-define": [2, { "functions": false }], - "no-useless-call": 2, - "no-useless-computed-key": 2, - "no-useless-constructor": 2, - "no-useless-escape": 2, - "no-var": 2, - "no-whitespace-before-property": 2, - "no-with": 2, - "object-curly-spacing": [2, "always"], - "one-var": [2, { "initialized": "never" }], - "operator-linebreak": [2, "after", { "overrides": { "?": "ignore", ":": "ignore" } }], - "padded-blocks": "off", - "quotes": [2, "single", {"avoidEscape": true, "allowTemplateLiterals": true}], - "react/no-unused-prop-types": "error", - "react/no-unused-state": 2, - "react/jsx-boolean-value": 2, - "react/jsx-curly-brace-presence": [2, { "props": "never", "children": "never" }], - "react/jsx-equals-spacing": 2, - "react/no-deprecated": 2, - "react/default-props-match-prop-types": 2, - "react/jsx-closing-tag-location": 2, - "react/jsx-no-duplicate-props": 2, - "react/jsx-closing-bracket-location": 2, - "react/jsx-first-prop-new-line": 2, - "react/jsx-max-props-per-line": [2, { "maximum": 1, "when": "multiline"} ], - "react/jsx-tag-spacing": [2, { - "closingSlash": "never", - "beforeSelfClosing": "always", - "afterOpening": "never" - }], - "react/jsx-wrap-multilines": [2, { - "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" - }], - "semi": [2, "never"], - "babel/semi": [2, "never"], - "semi-spacing": [2, { "before": false, "after": true }], - "space-before-blocks": [2, "always"], - "space-before-function-paren": [2, "always"], - "space-in-parens": [2, "never"], - "space-infix-ops": 2, - "space-unary-ops": [2, { "words": true, "nonwords": false }], - "spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!", ","], "exceptions": ["=", "-"] } ], - "strict": 0, - "template-curly-spacing": [2, "never"], - "use-isnan": 2, - "valid-typeof": 2, - "wrap-iife": [2, "any"], - "yield-star-spacing": [2, "both"], - "yoda": [2, "never"], - "prefer-const": 2, - "mocha/no-exclusive-tests": "error" - } -} diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..558e66bc2 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,95 @@ +module.exports = { + 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', + 'plugin:react/recommended', + ], + + env: { + 'browser': true, + 'mocha': true, + }, + + plugins: [ + 'babel', + 'mocha', + 'chai', + 'react', + 'json', + 'import', + ], + + globals: { + 'web3': true, + '$': false, + 'QUnit': false, + }, + + rules: { + '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', + '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-exclusive-tests': 'error', + }, +} diff --git a/package.json b/package.json index eb7f465d2..7c55a399b 100644 --- a/package.json +++ b/package.json @@ -195,6 +195,7 @@ "@babel/preset-env": "^7.5.5", "@babel/preset-react": "^7.0.0", "@babel/register": "^7.5.5", + "@metamask/eslint-config": "^1.0.0", "@metamask/forwarder": "^1.1.0", "@metamask/onboarding": "^0.2.0", "@sentry/cli": "^1.49.0", diff --git a/yarn.lock b/yarn.lock index 5679b8b42..f9344614e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1997,6 +1997,11 @@ scroll "^2.0.3" warning "^3.0.0" +"@metamask/eslint-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@metamask/eslint-config/-/eslint-config-1.0.0.tgz#046012398bb27f56395355c96ef07152925043b7" + integrity sha512-MmxM2sknVhIHyXCjR6LcK57OPJ30gTEX5v/jwC+qXuw4GIgUAPbxFp3AFmFRAJwty3RMjJSbRJ7YlamMq67U8w== + "@metamask/forwarder@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@metamask/forwarder/-/forwarder-1.1.0.tgz#13829d8244bbf19ea658c0b20d21a77b67de0bdd"