diff --git a/superset/assets/.eslintrc b/superset/assets/.eslintrc index c41b7a5d7..c4f149167 100644 --- a/superset/assets/.eslintrc +++ b/superset/assets/.eslintrc @@ -27,21 +27,28 @@ "env": { "browser": true }, + "plugins": ["react"], "rules": { - "camelcase": ["error", { - "allow": ["^UNSAFE_"], - "properties": "never" - }], + "camelcase": [ + "error", + { + "allow": ["^UNSAFE_"], + "properties": "never" + } + ], "class-methods-use-this": 0, "func-names": 0, "guard-for-in": 0, - "import/extensions": ["error", { - ".js": "always", - ".jsx": "always", - ".ts": "always", - ".tsx": "always", - ".json": "always" - }], + "import/extensions": [ + "error", + { + ".js": "always", + ".jsx": "always", + ".ts": "always", + ".tsx": "always", + ".json": "always" + } + ], "import/no-named-as-default": 0, "import/prefer-default-export": 0, "indent": 0, @@ -68,9 +75,14 @@ "react/no-string-refs": 0, "react/no-unescaped-entities": 0, "react/no-unused-prop-types": 0, - "react/require-default-props": 0 + "react/require-default-props": 0, + "react/jsx-fragments": 1, + "react/prop-types": 0 }, "settings": { - "import/resolver": "webpack" + "import/resolver": "webpack", + "react": { + "version": "detect" + } } } diff --git a/superset/assets/package-lock.json b/superset/assets/package-lock.json index da11f586c..050195fe7 100644 --- a/superset/assets/package-lock.json +++ b/superset/assets/package-lock.json @@ -10271,25 +10271,56 @@ } }, "eslint-plugin-react": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", - "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", "dev": true, "requires": { "array-includes": "^3.0.3", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1", - "prop-types": "^15.6.2" + "jsx-ast-utils": "^2.2.1", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.2", + "resolve": "^1.12.0" }, "dependencies": { "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { - "array-includes": "^3.0.3" + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "react-is": { + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", + "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==", + "dev": true + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" } } } @@ -10778,7 +10809,7 @@ "dependencies": { "core-js": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "resolved": "http://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" } } diff --git a/superset/assets/package.json b/superset/assets/package.json index ba69037c4..68b343dba 100644 --- a/superset/assets/package.json +++ b/superset/assets/package.json @@ -183,7 +183,7 @@ "eslint-plugin-jsx-a11y": "^5.1.1", "eslint-plugin-no-only-tests": "^2.0.1", "eslint-plugin-prettier": "^2.6.0", - "eslint-plugin-react": "^7.0.1", + "eslint-plugin-react": "^7.16.0", "exports-loader": "^0.7.0", "fetch-mock": "^7.0.0-alpha.6", "file-loader": "^1.1.11", diff --git a/superset/assets/src/SqlLab/components/App.jsx b/superset/assets/src/SqlLab/components/App.jsx index 418a03f9c..016a19ecd 100644 --- a/superset/assets/src/SqlLab/components/App.jsx +++ b/superset/assets/src/SqlLab/components/App.jsx @@ -109,10 +109,10 @@ class App extends React.PureComponent { ); } else { content = ( - + <> - + ); } return ( diff --git a/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx b/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx index 5ac1e2570..4d8de5726 100644 --- a/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx +++ b/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx @@ -184,7 +184,7 @@ class ExploreResultsButton extends React.PureComponent { render() { const allowsSubquery = this.props.database && this.props.database.allows_subquery; return ( - + <>