Skip to content

Commit c129a4d

Browse files
committed
refactor(lint): fix .eslintrc
1 parent 09b09e0 commit c129a4d

File tree

5 files changed

+48
-29
lines changed

5 files changed

+48
-29
lines changed

.eslintrc

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extend": "eslint-config-airbnb",
2+
"extends": "eslint-config-airbnb",
33

44
"parserOptions": {
55
"ecmaVersion": 6,
@@ -20,60 +20,82 @@
2020

2121
"plugins": [
2222
"import",
23-
"react"
23+
"react",
24+
"dependencies"
2425
],
2526

27+
"globals": {
28+
"__CLIENT__": true,
29+
"__SERVER__": true,
30+
"__DEVELOPMENT__": true,
31+
"__DISABLE_SSR__": true
32+
},
33+
2634
"rules": {
2735
//Possible Errors
2836
"no-console": "error",
2937
"no-unexpected-multiline": "error",
3038

3139
// Best Practices
40+
"class-methods-use-this": "off",
41+
"consistent-return": ["error", { "treatUndefinedAsUnspecified": true }],
3242
"dot-location": ["error", "property"],
3343
"no-implicit-globals": "error",
3444
"no-invalid-this": "error",
45+
"no-param-reassign": ["error", { "props": false }],
3546
"no-unmodified-loop-condition": "error",
3647
"no-useless-call": "error",
48+
"no-void": "off",
3749

3850
// Variables
3951
"no-catch-shadow": "error",
4052
"no-label-var": "error",
53+
"no-shadow": ["error", { "allow": ["cb", "next", "req", "res", "err", "error"] }],
4154
"no-undef-init": "error",
4255
"no-undefined": "error",
4356
"no-use-before-define": ["error", "nofunc"],
57+
"no-unused-expressions": ["error", { "allowShortCircuit": true }],
58+
"no-unused-vars": ["error", { "args": "none" }],
4459

4560
// Node.js
4661
"callback-return": "error",
4762
"no-path-concat": "error",
4863

4964
// Stylistic Issues
65+
"comma-dangle": ["error", "always-multiline"],
5066
"linebreak-style": ["error", "unix"],
67+
"no-plusplus": "off",
5168

5269
// ECMAScript 6
53-
"arrow-parens": "error",
70+
"arrow-parens": ["error", "always"],
5471
"constructor-super": "error",
5572
"generator-star-spacing": ["error", "after"],
5673
"no-this-before-super": "error",
74+
"prefer-arrow-callback": ["error", { "allowNamedFunctions": true }],
5775
"prefer-spread": "error",
76+
"prefer-template": "off",
5877

5978
// React
79+
"react/forbid-prop-types": "off",
6080
"react/no-danger": "error",
61-
"react/no-deprecated": "error",
62-
"react/no-did-mount-set-state": "error",
63-
"react/no-did-update-set-state": "error",
6481
"react/no-direct-mutation-state": "error",
65-
"react/no-is-mounted": "error",
6682
"react/no-set-state": "error",
67-
"react/no-string-refs": "error",
68-
"react/require-extension": ["error", {"extensions": [".js", ".jsx"]}],
69-
"react/wrap-multilines": "error",
83+
"react/no-unused-prop-types": "off",
84+
"react/prefer-stateless-function": "off",
85+
"react/prop-types": "off",
86+
"react/self-closing-comp": "off",
7087

7188
// JSX
72-
"react/jsx-equals-spacing": "error",
73-
"react/jsx-indent": ["error", 2],
89+
"react/jsx-filename-extension": ["error", { "extensions": [".js", ".jsx"] }],
7490
"react/jsx-key": "error",
7591
"react/jsx-max-props-per-line": ["error", {"maximum": 3}],
76-
"react/jsx-no-duplicate-props": "error",
77-
"react/jsx-space-before-closing": "error"
92+
93+
// dependencies
94+
"dependencies/case-sensitive": "error",
95+
"dependencies/no-cycles": "error",
96+
"dependencies/no-unresolved": "error",
97+
98+
// coding styles
99+
"max-len": ["error", 100]
78100
}
79101
}

src/ReduxAsyncLoaderContext.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* https://github.com/ryanflorence/async-props/blob/master/LICENSE.md
88
*/
99

10-
import React, { Component } from 'react';
10+
import { Component } from 'react';
1111
import PropTypes from 'prop-types';
1212
import computeChangedRoutes from './computeChangedRoutes';
1313
import { beginAsyncLoad, endAsyncLoad, skipAsyncLoad } from './actions';

src/computeChangedRoutes.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export default function computeChangedRoutes(prevState, nextState) {
1515
return nextRoutes;
1616
}
1717

18-
let parentIsLeaving = false;
1918
const leaveIndex = prevRoutes.findIndex((route) => (
2019
nextRoutes.indexOf(route) === -1 ||
2120
routeParamsChanged(route, prevState, nextState) ||
@@ -24,7 +23,7 @@ export default function computeChangedRoutes(prevState, nextState) {
2423
));
2524
const leaveRoutes = leaveIndex === -1 ? [] : prevRoutes.slice(leaveIndex);
2625

27-
return nextRoutes.filter(function (route) {
26+
return nextRoutes.filter((route) => {
2827
const isNew = prevRoutes.indexOf(route) === -1;
2928
const paramsChanged = leaveRoutes.indexOf(route) !== -1;
3029

@@ -45,7 +44,7 @@ function routeParamsChanged(route, prevState, nextState) {
4544
}
4645

4746
function queryParamsChanged(route, prevState, nextState) {
48-
const queryKeys = route.asyncLoaderProps && route.asyncLoaderProps.queryKeys || route.queryKeys;
47+
const queryKeys = (route.asyncLoaderProps && route.asyncLoaderProps.queryKeys) || route.queryKeys;
4948
if (!queryKeys) {
5049
return false;
5150
}
@@ -66,6 +65,6 @@ function queryParamsChanged(route, prevState, nextState) {
6665
}
6766

6867
function routeChanged(route, prevState, nextState) {
69-
const routeChanged = route.asyncLoaderProps && route.asyncLoaderProps.routeChanged;
70-
return routeChanged && routeChanged(route, prevState, nextState);
68+
const changed = route.asyncLoaderProps && route.asyncLoaderProps.routeChanged;
69+
return changed && changed(route, prevState, nextState);
7170
}

src/deferLoader.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { Component, cloneElement } from 'react';
1+
import React, { Component } from 'react';
22
import PropTypes from 'prop-types';
33
import hoistStatics from 'hoist-non-react-statics';
44

@@ -30,6 +30,6 @@ export default function deferLoader(loader) {
3030
};
3131
}
3232

33-
function getDisplayName(Component) {
34-
return Component.displayName || Component.name;
33+
function getDisplayName(component) {
34+
return component.displayName || component.name;
3535
}

src/flattenComponents.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,22 @@
88
import { loadAsyncPropertyName } from './names';
99

1010
// based on https://github.com/ryanflorence/async-props/blob/v0.3.2/modules/AsyncProps.js#L8-L18
11-
function eachComponents(components, iterator) {
11+
function eachComponents(components, cb) {
1212
for (let i = 0, l = components.length; i < l; i++) {
1313
const component = components[i];
1414
if (typeof component === 'object') {
1515
// named components
1616
// https://github.com/reactjs/react-router/blob/master/docs/API.md#named-components
17-
for (let key of Object.keys(component)) {
18-
iterator(component[key], i, key);
19-
}
17+
Object.keys(component).forEach((key) => cb(component[key], i, key));
2018
} else {
21-
iterator(component, i);
19+
cb(component, i); // eslint-disable-line callback-return
2220
}
2321
}
2422
}
2523

2624
// based on https://github.com/ryanflorence/async-props/blob/v0.3.2/modules/AsyncProps.js#L20-L27
2725
export default function flattenComponents(components) {
28-
var flattened = [];
26+
const flattened = [];
2927
eachComponents(components, (Component) => {
3028
if (Component && Component[loadAsyncPropertyName]) {
3129
flattened.push(Component);

0 commit comments

Comments
 (0)