Use eslint config from the js sdk
Extend the js sdk's eslint config to give as consistent a code style as possible. Add react/jsx/flow stuff that we use here.pull/21833/head
parent
a16aeeef2a
commit
4ba224aac3
117
.eslintrc
117
.eslintrc
|
@ -1,117 +0,0 @@
|
||||||
{
|
|
||||||
"parser": "babel-eslint",
|
|
||||||
"plugins": [
|
|
||||||
"react",
|
|
||||||
"flowtype"
|
|
||||||
],
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": 6,
|
|
||||||
"sourceType": "module",
|
|
||||||
"ecmaFeatures": {
|
|
||||||
"jsx": true,
|
|
||||||
"impliedStrict": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"amd": true,
|
|
||||||
"es6": true,
|
|
||||||
"node": true,
|
|
||||||
"mocha": true
|
|
||||||
},
|
|
||||||
"extends": ["eslint:recommended", "plugin:react/recommended"],
|
|
||||||
"rules": {
|
|
||||||
"no-undef": ["warn"],
|
|
||||||
"global-strict": ["off"],
|
|
||||||
"no-extra-semi": ["warn"],
|
|
||||||
"no-underscore-dangle": ["off"],
|
|
||||||
"no-console": ["off"],
|
|
||||||
"no-unused-vars": ["off"],
|
|
||||||
"no-trailing-spaces": ["warn", {
|
|
||||||
"skipBlankLines": true
|
|
||||||
}],
|
|
||||||
"no-unreachable": ["warn"],
|
|
||||||
"no-spaced-func": ["warn"],
|
|
||||||
"no-new-func": ["error"],
|
|
||||||
"no-new-wrappers": ["error"],
|
|
||||||
"no-invalid-regexp": ["error"],
|
|
||||||
"no-extra-bind": ["error"],
|
|
||||||
"no-magic-numbers": ["error", {
|
|
||||||
"ignore": [-1, 0, 1], // usually used in array/string indexing
|
|
||||||
"ignoreArrayIndexes": true,
|
|
||||||
"enforceConst": true,
|
|
||||||
"detectObjects": true
|
|
||||||
}],
|
|
||||||
"consistent-return": ["error"],
|
|
||||||
"valid-jsdoc": ["error"],
|
|
||||||
"no-use-before-define": ["error"],
|
|
||||||
"camelcase": ["warn"],
|
|
||||||
"array-callback-return": ["error"],
|
|
||||||
"dot-location": ["warn", "property"],
|
|
||||||
"guard-for-in": ["error"],
|
|
||||||
"no-useless-call": ["warn"],
|
|
||||||
"no-useless-escape": ["warn"],
|
|
||||||
"no-useless-concat": ["warn"],
|
|
||||||
"brace-style": ["warn", "1tbs"],
|
|
||||||
"comma-style": ["warn", "last"],
|
|
||||||
"space-before-function-paren": ["warn", "never"],
|
|
||||||
"space-before-blocks": ["warn", "always"],
|
|
||||||
"keyword-spacing": ["warn", {
|
|
||||||
"before": true,
|
|
||||||
"after": true
|
|
||||||
}],
|
|
||||||
|
|
||||||
// dangling commas required, but only for multiline objects/arrays
|
|
||||||
"comma-dangle": ["warn", "always-multiline"],
|
|
||||||
// always === instead of ==, unless dealing with null/undefined
|
|
||||||
"eqeqeq": ["error", "smart"],
|
|
||||||
// always use curly braces, even with single statements
|
|
||||||
"curly": ["error", "all"],
|
|
||||||
// phasing out var in favour of let/const is a good idea
|
|
||||||
"no-var": ["warn"],
|
|
||||||
// always require semicolons
|
|
||||||
"semi": ["error", "always"],
|
|
||||||
// prefer rest and spread over the Old Ways
|
|
||||||
"prefer-spread": ["warn"],
|
|
||||||
"prefer-rest-params": ["warn"],
|
|
||||||
|
|
||||||
/** react **/
|
|
||||||
|
|
||||||
// bind or arrow function in props causes performance issues
|
|
||||||
"react/jsx-no-bind": ["error", {
|
|
||||||
"ignoreRefs": true
|
|
||||||
}],
|
|
||||||
"react/jsx-key": ["error"],
|
|
||||||
"react/prefer-stateless-function": ["warn"],
|
|
||||||
|
|
||||||
/** flowtype **/
|
|
||||||
"flowtype/require-parameter-type": [
|
|
||||||
1,
|
|
||||||
{
|
|
||||||
"excludeArrowFunctions": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"flowtype/define-flow-type": 1,
|
|
||||||
"flowtype/require-return-type": [
|
|
||||||
1,
|
|
||||||
"always",
|
|
||||||
{
|
|
||||||
"annotateUndefined": "never",
|
|
||||||
"excludeArrowFunctions": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"flowtype/space-after-type-colon": [
|
|
||||||
1,
|
|
||||||
"always"
|
|
||||||
],
|
|
||||||
"flowtype/space-before-type-colon": [
|
|
||||||
1,
|
|
||||||
"never"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"flowtype": {
|
|
||||||
"onlyFilesWithFlowAnnotation": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
module.exports = {
|
||||||
|
parser: "babel-eslint",
|
||||||
|
extends: ["./node_modules/matrix-js-sdk/.eslintrc.js"],
|
||||||
|
plugins: [
|
||||||
|
"react",
|
||||||
|
"flowtype",
|
||||||
|
],
|
||||||
|
env: {
|
||||||
|
es6: true,
|
||||||
|
},
|
||||||
|
parserOptions: {
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
/** react **/
|
||||||
|
// This just uses the react plugin to help eslint known when
|
||||||
|
// variables have been used in JSX
|
||||||
|
"react/jsx-uses-vars": "error",
|
||||||
|
|
||||||
|
// bind or arrow function in props causes performance issues
|
||||||
|
"react/jsx-no-bind": ["error", {
|
||||||
|
"ignoreRefs": true,
|
||||||
|
}],
|
||||||
|
"react/jsx-key": ["error"],
|
||||||
|
|
||||||
|
/** flowtype **/
|
||||||
|
"flowtype/require-parameter-type": ["warn", {
|
||||||
|
"excludeArrowFunctions": true,
|
||||||
|
}],
|
||||||
|
"flowtype/define-flow-type": "warn",
|
||||||
|
"flowtype/require-return-type": ["warn",
|
||||||
|
"always",
|
||||||
|
{
|
||||||
|
"annotateUndefined": "never",
|
||||||
|
"excludeArrowFunctions": true,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"flowtype/space-after-type-colon": ["warn", "always"],
|
||||||
|
"flowtype/space-before-type-colon": ["warn", "never"],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* things that are errors in the js-sdk config that the current
|
||||||
|
* code does not adhere to, turned down to warn
|
||||||
|
*/
|
||||||
|
"max-len": ["warn"],
|
||||||
|
"valid-jsdoc": ["warn"],
|
||||||
|
"new-cap": ["warn"],
|
||||||
|
"key-spacing": ["warn"],
|
||||||
|
"arrow-parens": ["warn"],
|
||||||
|
"prefer-const": ["warn"],
|
||||||
|
|
||||||
|
// crashes currently: https://github.com/eslint/eslint/issues/6274
|
||||||
|
"generator-star-spacing": "off",
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
flowtype: {
|
||||||
|
onlyFilesWithFlowAnnotation: true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
|
@ -74,7 +74,7 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-cli": "^6.5.2",
|
"babel-cli": "^6.5.2",
|
||||||
"babel-core": "^6.14.0",
|
"babel-core": "^6.14.0",
|
||||||
"babel-eslint": "^6.1.0",
|
"babel-eslint": "^6.1.2",
|
||||||
"babel-loader": "^6.2.5",
|
"babel-loader": "^6.2.5",
|
||||||
"babel-plugin-add-module-exports": "^0.2.1",
|
"babel-plugin-add-module-exports": "^0.2.1",
|
||||||
"babel-plugin-transform-async-to-generator": "^6.16.0",
|
"babel-plugin-transform-async-to-generator": "^6.16.0",
|
||||||
|
@ -86,9 +86,10 @@
|
||||||
"babel-preset-es2016": "^6.11.3",
|
"babel-preset-es2016": "^6.11.3",
|
||||||
"babel-preset-es2017": "^6.14.0",
|
"babel-preset-es2017": "^6.14.0",
|
||||||
"babel-preset-react": "^6.11.1",
|
"babel-preset-react": "^6.11.1",
|
||||||
"eslint": "^2.13.1",
|
"eslint": "^3.13.1",
|
||||||
"eslint-plugin-flowtype": "^2.17.0",
|
"eslint-config-google": "^0.7.1",
|
||||||
"eslint-plugin-react": "^6.2.1",
|
"eslint-plugin-flowtype": "^2.30.0",
|
||||||
|
"eslint-plugin-react": "^6.9.0",
|
||||||
"expect": "^1.16.0",
|
"expect": "^1.16.0",
|
||||||
"json-loader": "^0.5.3",
|
"json-loader": "^0.5.3",
|
||||||
"karma": "^0.13.22",
|
"karma": "^0.13.22",
|
||||||
|
|
Loading…
Reference in New Issue