Jelajahi Sumber

Fix lint warnings

Andrew Swistak 6 tahun lalu
induk
melakukan
06400b04db

+ 23 - 23
.eslintrc.js

@@ -1,43 +1,43 @@
 module.exports = {
   env: {
     browser: true,
-    es6: true
+    es6: true,
   },
   extends: ['eslint:recommended', 'plugin:react/recommended', 'plugin:prettier/recommended'],
   settings: {
     react: {
-      version: 'detect'
-    }
+      version: 'detect',
+    },
   },
   globals: {
     Atomics: 'readonly',
-    SharedArrayBuffer: 'readonly'
+    SharedArrayBuffer: 'readonly',
   },
-  parser: "babel-eslint",
+  parser: 'babel-eslint',
   parserOptions: {
     ecmaFeatures: {
-      jsx: true
+      jsx: true,
     },
     ecmaVersion: 2018,
-    sourceType: 'module'
+    sourceType: 'module',
   },
   rules: {
     'arrow-body-style': ['warn', 'as-needed'],
     'arrow-parens': ['warn', 'as-needed'],
     'arrow-spacing': 'error',
     'block-spacing': ['error', 'never'],
-    camelcase: ['error', { properties: 'always' }],
+    camelcase: ['error', {properties: 'always'}],
     'comma-dangle': 0,
-    'comma-spacing': ['error', { before: false, after: true }],
+    'comma-spacing': ['error', {before: false, after: true}],
     'comma-style': ['error', 'last'],
     'global-require': 0,
     indent: ['error', 2],
-    'key-spacing': ['error', { beforeColon: false, afterColon: true }],
-    'keyword-spacing': ['error', { before: true, after: true }],
+    'key-spacing': ['error', {beforeColon: false, afterColon: true}],
+    'keyword-spacing': ['error', {before: true, after: true}],
     'linebreak-style': ['error', 'unix'],
     'linebreak-style': ['error', 'unix'],
     'max-len': ['error', 120],
-    'no-confusing-arrow': ['error', { allowParens: false }],
+    'no-confusing-arrow': ['error', {allowParens: false}],
     'no-multi-spaces': 'error',
     'no-shadow': 1,
     'no-trailing-spaces': 'error',
@@ -45,23 +45,23 @@ module.exports = {
     'no-unused-vars': 1,
     'no-useless-rename': 'error',
     'no-whitespace-before-property': 'error',
-    'object-curly-newline': ['error', { consistent: true }],
+    'object-curly-newline': ['error', {consistent: true}],
     'object-curly-spacing': ['error', 'never'],
     quotes: ['error', 'single'],
     semi: ['error', 'always'],
-    'semi-spacing': ['error', { before: false, after: true }],
+    'semi-spacing': ['error', {before: false, after: true}],
     'space-before-blocks': ['error', 'always'],
     'space-before-function-paren': [
       'error',
       {
         anonymous: 'never',
         named: 'never',
-        asyncArrow: 'always'
-      }
+        asyncArrow: 'always',
+      },
     ],
     'space-in-parens': ['error', 'never'],
-    'space-infix-ops': ['error', { int32Hint: false }],
-    'space-unary-ops': [2, { words: true, nonwords: false }],
+    'space-infix-ops': ['error', {int32Hint: false}],
+    'space-unary-ops': [2, {words: true, nonwords: false}],
 
     'react/jsx-filename-extension': ['error'],
     'react/jsx-indent': [1, 2],
@@ -71,7 +71,7 @@ module.exports = {
     'react/jsx-no-target-blank': 2,
     'react/jsx-props-no-multi-spaces': 1,
     'react/jsx-sort-props': 1,
-    'react/jsx-tag-spacing': ['warn', { beforeSelfClosing: true }],
+    'react/jsx-tag-spacing': ['warn', {beforeSelfClosing: true}],
     'react/no-children-prop': 1,
     'react/no-deprecated': 1,
     'react/no-direct-mutation-state': 2,
@@ -92,8 +92,8 @@ module.exports = {
         arrow: 'parens-new-line',
         condition: 'parens-new-line',
         logical: 'parens-new-line',
-        prop: 'parens-new-line'
-      }
-    ]
-  }
+        prop: 'parens-new-line',
+      },
+    ],
+  },
 };

+ 1 - 1
.prettierrc.js

@@ -4,4 +4,4 @@ module.exports = {
   jsxSingleQuote: true,
   bracketSpacing: false,
   trailingComma: 'es5',
-}
+};

+ 1 - 2
app/assets/javascripts/cable.js

@@ -9,5 +9,4 @@
   this.App || (this.App = {});
 
   App.cable = ActionCable.createConsumer();
-
-}).call(this);
+}.call(this));

+ 0 - 1
app/javascript/packs/frontend/api.js

@@ -17,7 +17,6 @@ export const Pokemon = {
 };
 
 const API = {
-  // eslint-disable-line object-curly-newline
   Pokemon,
 };
 

+ 7 - 2
app/javascript/packs/frontend/components/pages/pokemon.jsx

@@ -1,4 +1,5 @@
 import React, {lazy, Suspense} from 'react';
+import PropTypes from 'prop-types';
 import {Route, Switch} from 'react-router-dom';
 
 const PokemonShow = lazy(() => import('./pokemon/show'));
@@ -11,8 +12,8 @@ function Pokemon({match}) {
     <>
       <Suspense fallback={<div>Loading...</div>}>
         <Switch>
-          <Route exact path={`${match.path}/:id`} component={PokemonShow} />
-          <Route exact path={`${match.path}`} component={PokemonIndex} />
+          <Route component={PokemonShow} exact path={`${match.path}/:id`} />
+          <Route component={PokemonIndex} exact path={`${match.path}`} />
 
           <Route component={NotFound} />
         </Switch>
@@ -21,4 +22,8 @@ function Pokemon({match}) {
   );
 }
 
+Pokemon.propTypes = {
+  match: PropTypes.object.isRequired,
+};
+
 export default Pokemon;

+ 6 - 7
app/javascript/packs/frontend/components/pages/pokemon/index.jsx

@@ -13,18 +13,17 @@ class PokemonIndex extends React.Component {
       const data = await Pokemon.index();
       this.setState({pokemon: data.data});
     } catch (err) {
+      // eslint-disable-next-line no-console
       console.log(JSON.stringify(err, null, 2));
     }
   }
 
   render() {
-    const pokemon = this.state.pokemon.map((pkmn, i) => {
-      return (
-        <li key={pkmn.id}>
-          <Link to={`/pokemon/${pkmn.id}`}>{pkmn.nickname}</Link>
-        </li>
-      );
-    });
+    const pokemon = this.state.pokemon.map(pkmn => (
+      <li key={pkmn.id}>
+        <Link to={`/pokemon/${pkmn.id}`}>{pkmn.nickname}</Link>
+      </li>
+    ));
 
     return <ul>{pokemon}</ul>;
   }

+ 6 - 0
app/javascript/packs/frontend/components/pages/pokemon/show.jsx

@@ -1,9 +1,14 @@
 import React from 'react';
+import PropTypes from 'prop-types';
 import {Link} from 'react-router-dom';
 
 import {Pokemon} from '../../../api';
 
 class PokemonShow extends React.Component {
+  static propTypes = {
+    match: PropTypes.object.isRequired,
+  };
+
   state = {
     pokemon: {},
   };
@@ -13,6 +18,7 @@ class PokemonShow extends React.Component {
       const data = await Pokemon.get(this.props.match.params.id);
       this.setState({pokemon: data.data});
     } catch (err) {
+      // eslint-disable-next-line no-console
       console.log(JSON.stringify(err, null, 2));
     }
   }

+ 1 - 1
babel.config.js

@@ -11,7 +11,7 @@ module.exports = function(api) {
         '`BABEL_ENV` environment variables. Valid values are "development", ' +
         '"test", and "production". Instead, received: ' +
         JSON.stringify(currentEnv) +
-        '.',
+        '.'
     );
   }
 

+ 3 - 3
config/webpack/development.js

@@ -1,5 +1,5 @@
-process.env.NODE_ENV = process.env.NODE_ENV || 'development'
+process.env.NODE_ENV = process.env.NODE_ENV || 'development';
 
-const environment = require('./environment')
+const environment = require('./environment');
 
-module.exports = environment.toWebpackConfig()
+module.exports = environment.toWebpackConfig();

+ 3 - 3
config/webpack/production.js

@@ -1,5 +1,5 @@
-process.env.NODE_ENV = process.env.NODE_ENV || 'production'
+process.env.NODE_ENV = process.env.NODE_ENV || 'production';
 
-const environment = require('./environment')
+const environment = require('./environment');
 
-module.exports = environment.toWebpackConfig()
+module.exports = environment.toWebpackConfig();

+ 3 - 3
config/webpack/test.js

@@ -1,5 +1,5 @@
-process.env.NODE_ENV = process.env.NODE_ENV || 'development'
+process.env.NODE_ENV = process.env.NODE_ENV || 'development';
 
-const environment = require('./environment')
+const environment = require('./environment');
 
-module.exports = environment.toWebpackConfig()
+module.exports = environment.toWebpackConfig();