Skip to content

Commit 507e1c7

Browse files
dinodsaurusimevro
authored andcommitted
feat: add airbnb eslint config (LogRocket#218)
1 parent 9ec10bb commit 507e1c7

File tree

8 files changed

+89
-77
lines changed

8 files changed

+89
-77
lines changed

.eslintrc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
{
2-
"extends": "@dtrussia/eslint-config-dtrussia"
2+
"extends": "airbnb",
3+
"env": {
4+
"browser": true
5+
}
36
}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ export default createLogger({
282282

283283
## To Do
284284
- [ ] Update example to [create-react-app](https://github.com/facebookincubator/create-react-app)
285-
- [ ] Update eslint config to [airbnb's](https://www.npmjs.com/package/eslint-config-airbnb)
285+
- [x] Update eslint config to [airbnb's](https://www.npmjs.com/package/eslint-config-airbnb)
286286
- [ ] Clean up code, because it's very messy, to be honest
287287
- [ ] Write tests
288288
- [ ] Node.js support

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,8 @@
5252
},
5353
"homepage": "https://github.com/theaqua/redux-logger#readme",
5454
"devDependencies": {
55-
"@dtrussia/eslint-config-dtrussia": "2.2.1",
5655
"babel-cli": "^6.24.0",
5756
"babel-core": "^6.24.0",
58-
"babel-eslint": "7.1.1",
5957
"babel-loader": "^6.4.1",
6058
"babel-plugin-add-module-exports": "0.2.1",
6159
"babel-plugin-transform-es2015-modules-umd": "6.24.0",
@@ -65,8 +63,11 @@
6563
"babel-preset-stage-0": "^6.22.0",
6664
"chai": "3.5.0",
6765
"codecov": "1.0.1",
68-
"eslint": "3.10.2",
69-
"eslint-plugin-react": "6.7.1",
66+
"eslint": "^3.19.0",
67+
"eslint-config-airbnb": "^14.1.0",
68+
"eslint-plugin-import": "^2.2.0",
69+
"eslint-plugin-jsx-a11y": "^4.0.0",
70+
"eslint-plugin-react": "^6.10.3",
7071
"http-server": "0.9.0",
7172
"husky": "^0.13.2",
7273
"mocha": "3.1.2",

src/core.js

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import diffLogger from './diff';
1313
*/
1414
function getLogLevel(level, action, payload, type) {
1515
switch (typeof level) {
16-
case `object`:
17-
return typeof level[type] === `function` ? level[type](...payload) : level[type];
18-
case `function`:
16+
case 'object':
17+
return typeof level[type] === 'function' ? level[type](...payload) : level[type];
18+
case 'function':
1919
return level(action);
2020
default:
2121
return level;
@@ -29,17 +29,17 @@ function defaultTitleFormatter(options) {
2929
} = options;
3030

3131
return (action, time, took) => {
32-
const parts = [`action`];
32+
const parts = ['action'];
3333

3434
parts.push(`%c${String(action.type)}`);
3535
if (timestamp) parts.push(`%c@ ${time}`);
3636
if (duration) parts.push(`%c(in ${took.toFixed(2)} ms)`);
3737

38-
return parts.join(` `);
38+
return parts.join(' ');
3939
};
4040
}
4141

42-
export function printBuffer(buffer, options) {
42+
function printBuffer(buffer, options) {
4343
const {
4444
logger,
4545
actionTransformer,
@@ -50,7 +50,7 @@ export function printBuffer(buffer, options) {
5050
diff,
5151
} = options;
5252

53-
const isUsingDefaultFormatter = typeof options.titleFormatter === `undefined`;
53+
const isUsingDefaultFormatter = typeof options.titleFormatter === 'undefined';
5454

5555
buffer.forEach((logEntry, key) => {
5656
const { started, startedTime, action, prevState, error } = logEntry;
@@ -64,52 +64,53 @@ export function printBuffer(buffer, options) {
6464

6565
// Message
6666
const formattedAction = actionTransformer(action);
67-
const isCollapsed = (typeof collapsed === `function`) ? collapsed(() => nextState, action, logEntry) : collapsed;
67+
const isCollapsed = (typeof collapsed === 'function') ? collapsed(() => nextState, action, logEntry) : collapsed;
6868

6969
const formattedTime = formatTime(startedTime);
70-
const titleCSS = colors.title ? `color: ${colors.title(formattedAction)};` : ``;
71-
const headerCSS = [`color: gray; font-weight: lighter;`];
70+
const titleCSS = colors.title ? `color: ${colors.title(formattedAction)};` : '';
71+
const headerCSS = ['color: gray; font-weight: lighter;'];
7272
headerCSS.push(titleCSS);
73-
if (options.timestamp) headerCSS.push(`color: gray; font-weight: lighter;`);
74-
if (options.duration) headerCSS.push(`color: gray; font-weight: lighter;`);
73+
if (options.timestamp) headerCSS.push('color: gray; font-weight: lighter;');
74+
if (options.duration) headerCSS.push('color: gray; font-weight: lighter;');
7575
const title = titleFormatter(formattedAction, formattedTime, took);
7676

7777
// Render
7878
try {
7979
if (isCollapsed) {
8080
if (colors.title && isUsingDefaultFormatter) logger.groupCollapsed(`%c ${title}`, ...headerCSS);
8181
else logger.groupCollapsed(title);
82+
} else if (colors.title && isUsingDefaultFormatter) {
83+
logger.group(`%c ${title}`, ...headerCSS);
8284
} else {
83-
if (colors.title && isUsingDefaultFormatter) logger.group(`%c ${title}`, ...headerCSS);
84-
else logger.group(title);
85+
logger.group(title);
8586
}
8687
} catch (e) {
8788
logger.log(title);
8889
}
8990

90-
const prevStateLevel = getLogLevel(level, formattedAction, [prevState], `prevState`);
91-
const actionLevel = getLogLevel(level, formattedAction, [formattedAction], `action`);
92-
const errorLevel = getLogLevel(level, formattedAction, [error, prevState], `error`);
93-
const nextStateLevel = getLogLevel(level, formattedAction, [nextState], `nextState`);
91+
const prevStateLevel = getLogLevel(level, formattedAction, [prevState], 'prevState');
92+
const actionLevel = getLogLevel(level, formattedAction, [formattedAction], 'action');
93+
const errorLevel = getLogLevel(level, formattedAction, [error, prevState], 'error');
94+
const nextStateLevel = getLogLevel(level, formattedAction, [nextState], 'nextState');
9495

9596
if (prevStateLevel) {
96-
if (colors.prevState) logger[prevStateLevel](`%c prev state`, `color: ${colors.prevState(prevState)}; font-weight: bold`, prevState);
97-
else logger[prevStateLevel](`prev state`, prevState);
97+
if (colors.prevState) logger[prevStateLevel]('%c prev state', `color: ${colors.prevState(prevState)}; font-weight: bold`, prevState);
98+
else logger[prevStateLevel]('prev state', prevState);
9899
}
99100

100101
if (actionLevel) {
101-
if (colors.action) logger[actionLevel](`%c action `, `color: ${colors.action(formattedAction)}; font-weight: bold`, formattedAction);
102-
else logger[actionLevel](`action `, formattedAction);
102+
if (colors.action) logger[actionLevel]('%c action ', `color: ${colors.action(formattedAction)}; font-weight: bold`, formattedAction);
103+
else logger[actionLevel]('action ', formattedAction);
103104
}
104105

105106
if (error && errorLevel) {
106-
if (colors.error) logger[errorLevel](`%c error `, `color: ${colors.error(error, prevState)}; font-weight: bold;`, error);
107-
else logger[errorLevel](`error `, error);
107+
if (colors.error) logger[errorLevel]('%c error ', `color: ${colors.error(error, prevState)}; font-weight: bold;`, error);
108+
else logger[errorLevel]('error ', error);
108109
}
109110

110111
if (nextStateLevel) {
111-
if (colors.nextState) logger[nextStateLevel](`%c next state`, `color: ${colors.nextState(nextState)}; font-weight: bold`, nextState);
112-
else logger[nextStateLevel](`next state`, nextState);
112+
if (colors.nextState) logger[nextStateLevel]('%c next state', `color: ${colors.nextState(nextState)}; font-weight: bold`, nextState);
113+
else logger[nextStateLevel]('next state', nextState);
113114
}
114115

115116
if (diff) {
@@ -119,7 +120,9 @@ export function printBuffer(buffer, options) {
119120
try {
120121
logger.groupEnd();
121122
} catch (e) {
122-
logger.log(`—— log end ——`);
123+
logger.log('—— log end ——');
123124
}
124125
});
125126
}
127+
128+
export default printBuffer;

src/defaults.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default {
2-
level: `log`,
2+
level: 'log',
33
logger: console,
44
logErrors: true,
55
collapsed: undefined,
@@ -10,11 +10,11 @@ export default {
1010
actionTransformer: action => action,
1111
errorTransformer: error => error,
1212
colors: {
13-
title: () => `inherit`,
14-
prevState: () => `#9E9E9E`,
15-
action: () => `#03A9F4`,
16-
nextState: () => `#4CAF50`,
17-
error: () => `#F20404`,
13+
title: () => 'inherit',
14+
prevState: () => '#9E9E9E',
15+
action: () => '#03A9F4',
16+
nextState: () => '#4CAF50',
17+
error: () => '#F20404',
1818
},
1919
diff: false,
2020
diffPredicate: undefined,

src/diff.js

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ import differ from 'deep-diff';
22

33
// https://github.com/flitbit/diff#differences
44
const dictionary = {
5-
'E': {
6-
color: `#2196F3`,
7-
text: `CHANGED:`,
5+
E: {
6+
color: '#2196F3',
7+
text: 'CHANGED:',
88
},
9-
'N': {
10-
color: `#4CAF50`,
11-
text: `ADDED:`,
9+
N: {
10+
color: '#4CAF50',
11+
text: 'ADDED:',
1212
},
13-
'D': {
14-
color: `#F44336`,
15-
text: `DELETED:`,
13+
D: {
14+
color: '#F44336',
15+
text: 'DELETED:',
1616
},
17-
'A': {
18-
color: `#2196F3`,
19-
text: `ARRAY:`,
17+
A: {
18+
color: '#2196F3',
19+
text: 'ARRAY:',
2020
},
2121
};
2222

@@ -28,14 +28,14 @@ function render(diff) {
2828
const { kind, path, lhs, rhs, index, item } = diff;
2929

3030
switch (kind) {
31-
case `E`:
32-
return [path.join(`.`), lhs, `→`, rhs];
33-
case `N`:
34-
return [path.join(`.`), rhs];
35-
case `D`:
36-
return [path.join(`.`)];
37-
case `A`:
38-
return [`${path.join(`.`)}[${index}]`, item];
31+
case 'E':
32+
return [path.join('.'), lhs, '→', rhs];
33+
case 'N':
34+
return [path.join('.'), rhs];
35+
case 'D':
36+
return [path.join('.')];
37+
case 'A':
38+
return [`${path.join('.')}[${index}]`, item];
3939
default:
4040
return [];
4141
}
@@ -46,12 +46,12 @@ export default function diffLogger(prevState, newState, logger, isCollapsed) {
4646

4747
try {
4848
if (isCollapsed) {
49-
logger.groupCollapsed(`diff`);
49+
logger.groupCollapsed('diff');
5050
} else {
51-
logger.group(`diff`);
51+
logger.group('diff');
5252
}
5353
} catch (e) {
54-
logger.log(`diff`);
54+
logger.log('diff');
5555
}
5656

5757
if (diff) {
@@ -62,12 +62,12 @@ export default function diffLogger(prevState, newState, logger, isCollapsed) {
6262
logger.log(`%c ${dictionary[kind].text}`, style(kind), ...output);
6363
});
6464
} else {
65-
logger.log(`—— no diff ——`);
65+
logger.log('—— no diff ——');
6666
}
6767

6868
try {
6969
logger.groupEnd();
7070
} catch (e) {
71-
logger.log(`—— diff end —— `);
71+
logger.log('—— diff end —— ');
7272
}
7373
}

src/helpers.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
export const repeat = (str, times) => (new Array(times + 1)).join(str);
22

3-
export const pad = (num, maxLength) => repeat(`0`, maxLength - num.toString().length) + num;
3+
export const pad = (num, maxLength) => repeat('0', maxLength - num.toString().length) + num;
44

5-
export const formatTime = (time) => `${pad(time.getHours(), 2)}:${pad(time.getMinutes(), 2)}:${pad(time.getSeconds(), 2)}.${pad(time.getMilliseconds(), 3)}`;
5+
export const formatTime = time => `${pad(time.getHours(), 2)}:${pad(time.getMinutes(), 2)}:${pad(time.getSeconds(), 2)}.${pad(time.getMilliseconds(), 3)}`;
66

77
// Use performance API if it's available in order to get better precision
8-
export const timer = (typeof performance !== `undefined` && performance !== null) && typeof performance.now === `function` ? performance : Date;
8+
export const timer =
9+
(typeof performance !== 'undefined' && performance !== null) && typeof performance.now === 'function' ?
10+
performance :
11+
Date;

src/index.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { printBuffer } from './core';
1+
import printBuffer from './core';
22
import { timer } from './helpers';
33
import defaults from './defaults';
4-
4+
/* eslint max-len: ["error", 110, { "ignoreComments": true }] */
55
/**
66
* Creates logger with following options
77
*
@@ -37,7 +37,7 @@ function createLogger(options = {}) {
3737
} = loggerOptions;
3838

3939
// Return if 'console' object is not defined
40-
if (typeof logger === `undefined`) {
40+
if (typeof logger === 'undefined') {
4141
return () => next => action => next(action);
4242
}
4343

@@ -67,9 +67,9 @@ const store = createStore(
6767

6868
const logBuffer = [];
6969

70-
return ({ getState }) => (next) => (action) => {
70+
return ({ getState }) => next => (action) => {
7171
// Exit early if predicate function returns 'false'
72-
if (typeof predicate === `function` && !predicate(getState, action)) {
72+
if (typeof predicate === 'function' && !predicate(getState, action)) {
7373
return next(action);
7474
}
7575

@@ -96,7 +96,9 @@ const store = createStore(
9696
logEntry.took = timer.now() - logEntry.started;
9797
logEntry.nextState = stateTransformer(getState());
9898

99-
const diff = loggerOptions.diff && typeof diffPredicate === `function` ? diffPredicate(getState, action) : loggerOptions.diff;
99+
const diff = loggerOptions.diff && typeof diffPredicate === 'function' ?
100+
diffPredicate(getState, action) :
101+
loggerOptions.diff;
100102

101103
printBuffer(logBuffer, { ...loggerOptions, diff });
102104
logBuffer.length = 0;
@@ -106,20 +108,20 @@ const store = createStore(
106108
};
107109
}
108110

111+
// eslint-disable-next-line consistent-return
109112
const defaultLogger = ({ dispatch, getState } = {}) => {
110-
if (typeof dispatch === `function` || typeof getState === `function`) {
113+
if (typeof dispatch === 'function' || typeof getState === 'function') {
111114
return createLogger()({ dispatch, getState });
112-
} else {
115+
}
113116
// eslint-disable-next-line no-console
114-
console.error(`
117+
console.error(`
115118
[redux-logger v3] BREAKING CHANGE
116119
[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with default settings.
117120
[redux-logger v3] Change
118121
[redux-logger v3] import createLogger from 'redux-logger'
119122
[redux-logger v3] to
120123
[redux-logger v3] import { createLogger } from 'redux-logger'
121124
`);
122-
}
123125
};
124126

125127
export {

0 commit comments

Comments
 (0)