module.exports = {
  root: true,
  env: {
    es6: true,
    browser: true,
    node: true,
    mocha: true,
  },
  extends: 'airbnb',
  parser: 'babel-eslint',
  parserOptions: {
    ecmaVersion: 7,
    sourceType: 'module',
  },
  plugins: [
    'babel',
    'mocha',
    'flowtype',
  ],
  rules: {
    'arrow-body-style': 'off',
    'no-plusplus': 'off',
    'arrow-parens': ['error', 'always'], // airbnb use as-needed
    'consistent-this': ['error', 'self'],
    'object-curly-spacing': 'off', // use babel plugin rule
    'babel/object-curly-spacing': ['error', 'always'],
    'import/no-unresolved': 'off',
    'import/no-named-as-default': 'off',
    'import/extensions': 'off',
    'import/no-extraneous-dependencies': 'off',
    'import/prefer-default-export': 'off',
    'react/prefer-stateless-function': 'off',
    'react/no-unused-prop-types': 'off', // buggy
    'react/require-default-props': 'off', // airbnb use error
    'react/forbid-prop-types': 'off', // airbnb use error
    'react/jsx-filename-extension': ['error', {extensions: ['.js']}], // airbnb is using .jsx
    'react/no-direct-mutation-state': 'error', // airbnb is disabling this rule
    'react/sort-comp': [2, {
      order: [
        'static-methods',
        'lifecycle',
        'everything-else',
        '/^render.+$/',
        'render'
      ],
    }],
    'mocha/handle-done-callback': 'error',
    'mocha/no-exclusive-tests': 'error',
    'mocha/no-global-tests': 'error',
    'mocha/no-pending-tests': 'error',
    'mocha/no-skipped-tests': 'error',
    'jsx-a11y/no-static-element-interactions': 'off',
    'flowtype/require-valid-file-annotation': ['error', 'always'],
    'flowtype/require-parameter-type': 'off',
    'flowtype/require-return-type': 'off',
    'flowtype/space-after-type-colon': 'off',
    'flowtype/space-before-type-colon': 'off',
    'flowtype/type-id-match': 'off',
  },
};

@@ -18,43 +18,14 @@
 %7B%0A  
-root: true,%0A  env: %7B%0A    es6: true,
+env: %7B
 %0A   
@@ -48,12 +48,11 @@
     
-node
+es6
 : tr
@@ -59,21 +59,20 @@
 ue,%0A    
-mocha
+node
 : true,%0A
@@ -91,1389 +91,360 @@
 ds: 
-'airbnb',%0A  parser: 'babel-eslint',%0A  parserOptions: %7B%0A    ecmaVersion: 7,%0A    sourceType: 'module',%0A  %7D,%0A  plugins: %5B%0A    'babel',%0A    'mocha',%0A    'flowtype',%0A  %5D,%0A  rules: %7B%0A    'arrow-body-style': 'off'
+%5B'eslint:recommended', 'plugin:react/recommended'%5D
 ,%0A  
-  'no-plusplus': 'off',%0A    'arrow-pare
+plugi
 ns
-'
 : %5B'
-error', 'always'%5D, // airbnb use as-needed%0A    'consistent-this': %5B'error
+react
 ', '
-s
+bab
 el
-f
 '%5D,%0A  
-  'object-curly-spacing': 'off', // use babel plugin rule%0A    'babel/object-curly-spacing': %5B'error', 'always'%5D,%0A    'import/no-unresolved': 'off',%0A    'import/no-named-as-default': 'off',%0A    'import/exten
+settings: %7B%0A    react: %7B%0A      ver
 sion
-s'
 : '
-off',%0A    'import/no-extraneous-dependencies': 'off',%0A    'import/prefer-default-export': 'off',%0A    'react/prefer-stateless-function': 'off',%0A    'react/no-unused-prop-types': 'off', // buggy%0A    'react/require-default-props': 'off', // airbnb use error%0A    'react/forbid-prop-types': 'off', // airbnb use error%0A    'react/jsx-filename-extension': %5B'error', %7Bextensions: %5B'.js'%5D%7D%5D, // airbnb is using .jsx%0A    'react/no-direct-mutation-state': 'error', // airbnb is disabling this rule%0A    'react/sort-comp': %5B2, %7B%0A      order: %5B%0A        'static-methods',%0A        'lifecycle',%0A        'everything-else',%0A        '/%5Erender.+$/',%0A        'render'%0A      %5D,%0A    %7D%5D,%0A    'mocha/handle-done-callback': 'error',%0A    'mocha/no-exclusive-tests': 'error',%0A    'mocha/no-global-tests': 'error',%0A    'mocha/no-pending-tests'
+detect',%0A    %7D,%0A  %7D,%0A  parser: 'babel-eslint',%0A  parserOptions: %7B%0A    ecmaFeatures: %7B%0A      jsx: true,%0A    %7D,%0A    ecmaVersion: 2018,%0A    sourceType: 'module',%0A  %7D,%0A  rules: %7B%0A    'react/jsx-uses-vars': 2,%0A    indent
 : 
+%5B
 'error',
 %0A   
@@ -443,145 +443,52 @@
 or',
-%0A    'mocha/no-skipped-tests': 'error',%0A    'jsx-a11y/no-static-element-interactions': 'off',%0A    'flowtype/require-valid-file-annotation
+ 2, %7B SwitchCase: 1 %7D%5D,%0A    'linebreak-style
 ': %5B
@@ -501,22 +501,20 @@
 ', '
-always
+unix
 '%5D,%0A    
 'flo
@@ -513,227 +513,71 @@
     
-'flowtype/require-parameter-type': 'off',%0A    'flowtype/require-return-type': 'off',%0A    'flowtype/space-after-type-colon': 'off',%0A    'flowtype/space-before-type-colon': 'off',%0A    'flowtype/type-id-match': 'off'
+quotes: %5B'error', 'single'%5D,%0A    semi: %5B'error', 'never'%5D
 ,%0A  %7D,%0A%7D
 ;%0A
@@ -578,6 +578,5 @@
 %7D,%0A%7D
-;
 %0A

update eslint