From bc4fa44c9b9085da174d0c582d38062a65e01341 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sat, 30 Jul 2016 21:35:00 -0700 Subject: [PATCH] Linting improvements --- .eslintrc | 30 +++++++++++++++++++++++++++--- js/Actions.jsx | 12 ++++++------ js/Balance.jsx | 4 ++-- js/Character.jsx | 2 +- js/ClutterBar.jsx | 2 +- js/ContextMenu.jsx | 2 +- js/DragTarget.jsx | 3 ++- js/Kbps.jsx | 14 ++++++-------- js/Khz.jsx | 14 ++++++-------- js/MainWindow.jsx | 4 ++-- js/Marquee.jsx | 2 +- js/MonoStereo.jsx | 2 +- js/Position.jsx | 2 +- js/Repeat.jsx | 2 +- js/ShadeTime.jsx | 2 +- js/Shuffle.jsx | 2 +- js/Time.jsx | 10 +++++----- js/Visualizer.jsx | 2 +- js/Volume.jsx | 4 ++-- js/browser.js | 4 ++-- js/hotkeys.js | 6 +++--- js/winamp.js | 46 ++++++++++++++++++++++------------------------ 22 files changed, 95 insertions(+), 76 deletions(-) diff --git a/.eslintrc b/.eslintrc index 0364accf..2787d782 100644 --- a/.eslintrc +++ b/.eslintrc @@ -23,18 +23,23 @@ }, "rules": { + "arrow-parens": "error", + "arrow-spacing": "error", "block-scoped-var": "warn", "brace-style": ["warn", "1tbs"], "camelcase": "error", "comma-dangle": ["error", "never"], "comma-spacing": "error", "consistent-return": "warn", + "constructor-super": "error", "dot-notation": ["error", { "allowKeywords": false }], "eol-last": "error", "eqeqeq": ["error", "smart"], "guard-for-in": "error", "indent": ["error", 2, {"SwitchCase": 1}], + "jsx-quotes": ["error", "prefer-single"], "key-spacing": "warn", + "keyword-spacing": "error", "linebreak-style": "error", "max-depth": ["warn", 4], "max-params": ["warn", 5], @@ -42,15 +47,17 @@ "no-alert": "error", "no-caller": "error", "no-catch-shadow": "error", + "no-const-assign": "error", "no-debugger": "error", "no-delete-var": "error", "no-div-regex": "warn", "no-dupe-args": "error", + "no-dupe-class-members": "error", "no-dupe-keys": "error", "no-duplicate-case": "error", + "no-duplicate-imports": "error", "no-else-return": "warn", "no-empty-character-class": "error", - "no-labels": "error", "no-eval": "error", "no-ex-assign": "error", "no-extend-native": "warn", @@ -63,6 +70,7 @@ "no-inner-declarations": "error", "no-irregular-whitespace": "error", "no-label-var": "error", + "no-labels": "error", "no-lone-blocks": "error", "no-lonely-if": "error", "no-multi-spaces": "warn", @@ -71,6 +79,7 @@ "no-negated-in-lhs": "warn", "no-nested-ternary": "error", "no-new-object": "error", + "no-new-symbol": "error", "no-new-wrappers": "error", "no-obj-calls": "error", "no-octal": "error", @@ -79,6 +88,7 @@ "no-redeclare": "error", "no-shadow": "error", "no-spaced-func": "error", + "no-this-before-super": "error", "no-throw-literal": "error", "no-trailing-spaces": "error", "no-undef": "error", @@ -89,19 +99,33 @@ "no-unused-expressions": "error", "no-unused-vars": "error", "no-use-before-define": ["error", "nofunc"], + "no-useless-rename": "error", + "no-var": "warn", "no-with": "error", "object-curly-spacing": ["error", "never"], + "prefer-arrow-callback": "warn", + "prefer-const": "error", + "prefer-spread": "error", + "prefer-template": "warn", "quote-props": ["warn", "consistent-as-needed"], "quotes": ["error", "single", "avoid-escape"], "radix": "error", - "react/jsx-uses-react": "error", + "react/jsx-closing-bracket-location": ["error", "line-aligned"], + "react/jsx-curly-spacing": "error", + "react/jsx-equals-spacing": "error", + "react/jsx-first-prop-new-line": ["error", "multiline"], + "react/jsx-indent": ["error", 2], "react/jsx-no-bind": "error", + "react/jsx-uses-react": "error", "react/jsx-uses-vars": "error", + "react/prefer-stateless-function": "error", + "react/require-render-return": "error", + "react/self-closing-comp": "error", "semi": "error", - "keyword-spacing": "error", "space-before-function-paren": ["error", {"anonymous": "never", "named": "never"}], "space-infix-ops": "error", "space-unary-ops": ["error", { "words": true, "nonwords": false }], + "template-curly-spacing": "error", "use-isnan": "error", "valid-typeof": "error", "wrap-iife": "error" diff --git a/js/Actions.jsx b/js/Actions.jsx index b7700607..37100e66 100644 --- a/js/Actions.jsx +++ b/js/Actions.jsx @@ -21,13 +21,13 @@ class Actions extends React.Component { } render() { return
- -
-
-
- + +
+
+
+
; } } -module.exports = connect(state => state.media)(Actions); +module.exports = connect((state) => state.media)(Actions); diff --git a/js/Balance.jsx b/js/Balance.jsx index 6a40a187..3d50063f 100644 --- a/js/Balance.jsx +++ b/js/Balance.jsx @@ -33,7 +33,7 @@ class Balance extends React.Component { const offset = (sprite - 1) * 15; const style = { - backgroundPosition: '0 -' + offset + 'px' + backgroundPosition: `0 -${offset}px` }; return state.media)(Balance); +module.exports = connect((state) => state.media)(Balance); diff --git a/js/Character.jsx b/js/Character.jsx index 965d10e1..63e0de3e 100644 --- a/js/Character.jsx +++ b/js/Character.jsx @@ -2,7 +2,7 @@ import React from 'react'; module.exports = (props) => { const char = '' + props.children; - const className = 'character character-' + char.toLowerCase().charCodeAt(0); + const className = `character character-${char.toLowerCase().charCodeAt(0)}`; return
{props.children}
; }; diff --git a/js/ClutterBar.jsx b/js/ClutterBar.jsx index aac66df1..90b6855f 100644 --- a/js/ClutterBar.jsx +++ b/js/ClutterBar.jsx @@ -34,4 +34,4 @@ class ClutterBar extends React.Component { } } -module.exports = connect(state => state.display)(ClutterBar); +module.exports = connect((state) => state.display)(ClutterBar); diff --git a/js/ContextMenu.jsx b/js/ContextMenu.jsx index 7e05d006..8263b528 100644 --- a/js/ContextMenu.jsx +++ b/js/ContextMenu.jsx @@ -72,4 +72,4 @@ class ContextMenu extends React.Component { } } -module.exports = connect(state => state.contextMenu)(ContextMenu); +module.exports = connect((state) => state.contextMenu)(ContextMenu); diff --git a/js/DragTarget.jsx b/js/DragTarget.jsx index 3ac160e6..a3cc1cc9 100644 --- a/js/DragTarget.jsx +++ b/js/DragTarget.jsx @@ -20,7 +20,8 @@ class DragTarget extends React.Component { return
+ onDrop={this.handleDrop} + > {this.props.children}
; } diff --git a/js/Kbps.jsx b/js/Kbps.jsx index 029fbc76..5f986501 100644 --- a/js/Kbps.jsx +++ b/js/Kbps.jsx @@ -4,12 +4,10 @@ import {connect} from 'react-redux'; import CharacterString from './CharacterString.jsx'; -class Kbps extends React.Component { - render() { - return - {this.props.kbps} - ; - } -} +const Kbps = (props) => { + return + {props.kbps} + ; +}; -module.exports = connect(state => state.media)(Kbps); +module.exports = connect((state) => state.media)(Kbps); diff --git a/js/Khz.jsx b/js/Khz.jsx index 7f21b84a..ac29eeae 100644 --- a/js/Khz.jsx +++ b/js/Khz.jsx @@ -4,12 +4,10 @@ import {connect} from 'react-redux'; import CharacterString from './CharacterString.jsx'; -class Khz extends React.Component { - render() { - return - {this.props.khz} - ; - } -} +const Khz = (props) => { + return + {props.khz} + ; +}; -module.exports = connect(state => state.media)(Khz); +module.exports = connect((state) => state.media)(Khz); diff --git a/js/MainWindow.jsx b/js/MainWindow.jsx index 1debe9a4..039daebd 100644 --- a/js/MainWindow.jsx +++ b/js/MainWindow.jsx @@ -81,9 +81,9 @@ const MainWindow = (props) => { - + ; }; -module.exports = connect(state => state)(MainWindow); +module.exports = connect((state) => state)(MainWindow); diff --git a/js/Marquee.jsx b/js/Marquee.jsx index 2176e742..e039c123 100644 --- a/js/Marquee.jsx +++ b/js/Marquee.jsx @@ -117,4 +117,4 @@ export { loopText, Marquee }; -export default connect(state => state)(Marquee); +export default connect((state) => state)(Marquee); diff --git a/js/MonoStereo.jsx b/js/MonoStereo.jsx index a2eb0f88..9c92241b 100644 --- a/js/MonoStereo.jsx +++ b/js/MonoStereo.jsx @@ -9,4 +9,4 @@ const MonoStereo = (props) => { ; }; -module.exports = connect(state => state.media)(MonoStereo); +module.exports = connect((state) => state.media)(MonoStereo); diff --git a/js/Position.jsx b/js/Position.jsx index 26ae779e..bc33d01a 100644 --- a/js/Position.jsx +++ b/js/Position.jsx @@ -52,4 +52,4 @@ class Position extends React.Component { } } -module.exports = connect(state => state)(Position); +module.exports = connect((state) => state)(Position); diff --git a/js/Repeat.jsx b/js/Repeat.jsx index 4141e505..0fad4347 100644 --- a/js/Repeat.jsx +++ b/js/Repeat.jsx @@ -19,4 +19,4 @@ class Repeat extends React.Component { } } -module.exports = connect(state => state.media)(Repeat); +module.exports = connect((state) => state.media)(Repeat); diff --git a/js/ShadeTime.jsx b/js/ShadeTime.jsx index cddb411b..eac38aa0 100644 --- a/js/ShadeTime.jsx +++ b/js/ShadeTime.jsx @@ -29,4 +29,4 @@ class Time extends React.Component { } } -module.exports = connect(state => state.media)(Time); +module.exports = connect((state) => state.media)(Time); diff --git a/js/Shuffle.jsx b/js/Shuffle.jsx index c6c0b8ba..2241ec79 100644 --- a/js/Shuffle.jsx +++ b/js/Shuffle.jsx @@ -19,4 +19,4 @@ class Shuffle extends React.Component { } } -module.exports = connect(state => state.media)(Shuffle); +module.exports = connect((state) => state.media)(Shuffle); diff --git a/js/Time.jsx b/js/Time.jsx index 849e9cac..8c69f5c6 100644 --- a/js/Time.jsx +++ b/js/Time.jsx @@ -19,12 +19,12 @@ class Time extends React.Component { const timeObj = getTimeObj(seconds); return
{this.props.timeMode === 'REMAINING' &&
} -
-
-
-
+
+
+
+
; } } -module.exports = connect(state => state.media)(Time); +module.exports = connect((state) => state.media)(Time); diff --git a/js/Visualizer.jsx b/js/Visualizer.jsx index 72e32acd..7453dafe 100644 --- a/js/Visualizer.jsx +++ b/js/Visualizer.jsx @@ -20,4 +20,4 @@ class Visualizer extends React.Component { } } -module.exports = connect(state => state)(Visualizer); +module.exports = connect((state) => state)(Visualizer); diff --git a/js/Volume.jsx b/js/Volume.jsx index 81be1514..0a706cc6 100644 --- a/js/Volume.jsx +++ b/js/Volume.jsx @@ -32,7 +32,7 @@ class Volume extends React.Component { const offset = (sprite - 1) * 15; const style = { - backgroundPosition: '0 -' + offset + 'px' + backgroundPosition: `0 -${offset}px` }; return state.media)(Volume); +module.exports = connect((state) => state.media)(Volume); diff --git a/js/browser.js b/js/browser.js index f49114ef..54b32fc6 100644 --- a/js/browser.js +++ b/js/browser.js @@ -1,6 +1,6 @@ module.exports = function(base) { - var supportsAudioApi = !!(base.AudioContext || base.webkitAudioContext); - var supportsCanvas = !!(base.document.createElement('canvas').getContext); + const supportsAudioApi = !!(base.AudioContext || base.webkitAudioContext); + const supportsCanvas = !!(base.document.createElement('canvas').getContext); this.isCompatible = supportsAudioApi && supportsCanvas; }; diff --git a/js/hotkeys.js b/js/hotkeys.js index bf8a3e7c..c0660ca1 100644 --- a/js/hotkeys.js +++ b/js/hotkeys.js @@ -1,9 +1,9 @@ import {play, pause, stop} from './actionCreators'; module.exports = function(winamp, store) { - var keylog = []; - var trigger = [78, 85, 76, 27, 76, 27, 83, 79, 70, 84]; - document.addEventListener('keydown', function(e){ + let keylog = []; + const trigger = [78, 85, 76, 27, 76, 27, 83, 79, 70, 84]; + document.addEventListener('keydown', (e) => { if (e.ctrlKey) { // Is CTRL depressed? switch (e.keyCode) { // CTRL+D diff --git a/js/winamp.js b/js/winamp.js index c7d0cb75..0c6aadf5 100755 --- a/js/winamp.js +++ b/js/winamp.js @@ -27,7 +27,7 @@ module.exports = { this.dispatch({type: 'SET_VOLUME', volume: options.volume}); this.dispatch({type: 'SET_BALANCE', balance: options.balance}); this.loadFromUrl(options.mediaFile.url, options.mediaFile.name); - var skinFile = new MyFile(); + const skinFile = new MyFile(); skinFile.setUrl(options.skinUrl); this.setSkin(skinFile); @@ -36,39 +36,37 @@ module.exports = { }, _registerListeners: function() { - var self = this; - this.windowManager.registerWindow(this.mainWindow); - this.media.addEventListener('timeupdate', function() { - self.dispatch({type: 'UPDATE_TIME_ELAPSED', elapsed: self.media.timeElapsed()}); + this.media.addEventListener('timeupdate', () => { + this.dispatch({type: 'UPDATE_TIME_ELAPSED', elapsed: this.media.timeElapsed()}); // Legacy - window.dispatchEvent(self.events.timeUpdated); + window.dispatchEvent(this.events.timeUpdated); }); - this.media.addEventListener('visualizerupdate', function(analyser) { - self.skin.visualizer.paintFrame(self.visualizerStyle, analyser); + this.media.addEventListener('visualizerupdate', (analyser) => { + this.skin.visualizer.paintFrame(this.visualizerStyle, analyser); }); - this.media.addEventListener('ended', function() { - self.skin.visualizer.clear(); - self.dispatch({type: 'MEDIA_IS_STOPPED'}); + this.media.addEventListener('ended', () => { + this.skin.visualizer.clear(); + this.dispatch({type: 'MEDIA_IS_STOPPED'}); }); - this.media.addEventListener('waiting', function() { - self.dispatch({type: 'START_WORKING'}); + this.media.addEventListener('waiting', () => { + this.dispatch({type: 'START_WORKING'}); }); - this.media.addEventListener('stopWaiting', function() { - self.dispatch({type: 'STOP_WORKING'}); + this.media.addEventListener('stopWaiting', () => { + this.dispatch({type: 'STOP_WORKING'}); }); - this.media.addEventListener('playing', function() { - self.dispatch({type: 'MEDIA_IS_PLAYING'}); + this.media.addEventListener('playing', () => { + this.dispatch({type: 'MEDIA_IS_PLAYING'}); }); - this.fileInput.onchange = function(e){ - self.loadFromFileReference(e.target.files[0]); + this.fileInput.onchange = (e) => { + this.loadFromFileReference(e.target.files[0]); }; }, @@ -93,7 +91,7 @@ module.exports = { seekForwardBy: function(seconds) { this.media.seekToTime(this.media.timeElapsed() + seconds); - window.dispatchEvent(self.events.timeUpdated); + window.dispatchEvent(this.events.timeUpdated); }, toggleRepeat: function() { @@ -114,7 +112,7 @@ module.exports = { }, loadFromFileReference: function(fileReference) { - var file = new MyFile(); + const file = new MyFile(); file.setFileReference(fileReference); if (new RegExp('(wsz|zip)$', 'i').test(fileReference.name)) { this.skin.setSkinByFile(file); @@ -132,7 +130,7 @@ module.exports = { } else { this.fileName = fileName; } - var file = new MyFile(); + const file = new MyFile(); file.setUrl(url); file.processBuffer(this._loadBuffer.bind(this)); }, @@ -156,8 +154,8 @@ module.exports = { /* Listeners */ _loadBuffer: function(buffer) { function setMetaData() { - var kbps = '128'; - var khz = Math.round(this.media.sampleRate() / 1000).toString(); + const kbps = '128'; + const khz = Math.round(this.media.sampleRate() / 1000).toString(); this.dispatch({type: 'SET_MEDIA_KBPS', kbps: kbps}); this.dispatch({type: 'SET_MEDIA_KHZ', khz: khz}); this.dispatch({type: 'SET_CHANNELS_COUNT', channels: this.media.channels()});