| 
									
										
										
										
											2019-01-04 19:28:38 +09:00
										 |  |  | module.exports = { | 
					
						
							|  |  |  |   root: true, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   env: { | 
					
						
							|  |  |  |     browser: true, | 
					
						
							|  |  |  |     node: true, | 
					
						
							|  |  |  |     es6: true, | 
					
						
							|  |  |  |     jest: true, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   globals: { | 
					
						
							|  |  |  |     ATTACHMENT_HOST: false, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   parser: 'babel-eslint', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   plugins: [ | 
					
						
							|  |  |  |     'react', | 
					
						
							|  |  |  |     'jsx-a11y', | 
					
						
							|  |  |  |     'import', | 
					
						
							|  |  |  |     'promise', | 
					
						
							|  |  |  |   ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   parserOptions: { | 
					
						
							|  |  |  |     sourceType: 'module', | 
					
						
							|  |  |  |     ecmaFeatures: { | 
					
						
							|  |  |  |       experimentalObjectRestSpread: true, | 
					
						
							|  |  |  |       jsx: true, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     ecmaVersion: 2018, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   settings: { | 
					
						
							|  |  |  |     react: { | 
					
						
							|  |  |  |       version: 'detect', | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     'import/extensions': [ | 
					
						
							|  |  |  |       '.js', | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'import/ignore': [ | 
					
						
							|  |  |  |       'node_modules', | 
					
						
							|  |  |  |       '\\.(css|scss|json)$', | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2019-02-01 00:14:05 +01:00
										 |  |  |     'import/resolver': { | 
					
						
							|  |  |  |       node: { | 
					
						
							|  |  |  |         paths: ['app/javascript'], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2019-01-04 19:28:38 +09:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   rules: { | 
					
						
							|  |  |  |     'brace-style': 'warn', | 
					
						
							|  |  |  |     'comma-dangle': ['error', 'always-multiline'], | 
					
						
							|  |  |  |     'comma-spacing': [ | 
					
						
							|  |  |  |       'warn', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         before: false, | 
					
						
							|  |  |  |         after: true, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'comma-style': ['warn', 'last'], | 
					
						
							|  |  |  |     'consistent-return': 'error', | 
					
						
							|  |  |  |     'dot-notation': 'error', | 
					
						
							|  |  |  |     eqeqeq: 'error', | 
					
						
							|  |  |  |     indent: ['warn', 2], | 
					
						
							|  |  |  |     'jsx-quotes': ['error', 'prefer-single'], | 
					
						
							|  |  |  |     'no-catch-shadow': 'error', | 
					
						
							|  |  |  |     'no-cond-assign': 'error', | 
					
						
							|  |  |  |     'no-console': [ | 
					
						
							|  |  |  |       'warn', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         allow: [ | 
					
						
							|  |  |  |           'error', | 
					
						
							|  |  |  |           'warn', | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'no-fallthrough': 'error', | 
					
						
							|  |  |  |     'no-irregular-whitespace': 'error', | 
					
						
							|  |  |  |     'no-mixed-spaces-and-tabs': 'warn', | 
					
						
							|  |  |  |     'no-nested-ternary': 'warn', | 
					
						
							|  |  |  |     'no-trailing-spaces': 'warn', | 
					
						
							|  |  |  |     'no-undef': 'error', | 
					
						
							|  |  |  |     'no-unreachable': 'error', | 
					
						
							|  |  |  |     'no-unused-expressions': 'error', | 
					
						
							|  |  |  |     'no-unused-vars': [ | 
					
						
							|  |  |  |       'error', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         vars: 'all', | 
					
						
							|  |  |  |         args: 'after-used', | 
					
						
							|  |  |  |         ignoreRestSiblings: true, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'object-curly-spacing': ['error', 'always'], | 
					
						
							|  |  |  |     'padded-blocks': [ | 
					
						
							|  |  |  |       'error', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         classes: 'always', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     quotes: ['error', 'single'], | 
					
						
							|  |  |  |     semi: 'error', | 
					
						
							|  |  |  |     strict: 'off', | 
					
						
							|  |  |  |     'valid-typeof': 'error', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     'react/jsx-boolean-value': '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-multiprop'], | 
					
						
							|  |  |  |     'react/jsx-indent': ['error', 2], | 
					
						
							|  |  |  |     'react/jsx-no-bind': 'error', | 
					
						
							|  |  |  |     'react/jsx-no-duplicate-props': 'error', | 
					
						
							|  |  |  |     'react/jsx-no-undef': 'error', | 
					
						
							|  |  |  |     'react/jsx-tag-spacing': 'error', | 
					
						
							|  |  |  |     'react/jsx-uses-react': 'error', | 
					
						
							|  |  |  |     'react/jsx-uses-vars': 'error', | 
					
						
							|  |  |  |     'react/jsx-wrap-multilines': 'error', | 
					
						
							|  |  |  |     'react/no-multi-comp': 'off', | 
					
						
							|  |  |  |     'react/no-string-refs': 'error', | 
					
						
							|  |  |  |     'react/prop-types': 'error', | 
					
						
							|  |  |  |     'react/self-closing-comp': 'error', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     'jsx-a11y/accessible-emoji': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/alt-text': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/anchor-has-content': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/anchor-is-valid': [ | 
					
						
							|  |  |  |       'warn', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         components: [ | 
					
						
							|  |  |  |           'Link', | 
					
						
							|  |  |  |           'NavLink', | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         specialLink: [ | 
					
						
							|  |  |  |           'to', | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         aspect: [ | 
					
						
							|  |  |  |           'noHref', | 
					
						
							|  |  |  |           'invalidHref', | 
					
						
							|  |  |  |           'preferButton', | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'jsx-a11y/aria-activedescendant-has-tabindex': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/aria-props': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/aria-proptypes': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/aria-role': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/aria-unsupported-elements': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/heading-has-content': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/html-has-lang': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/iframe-has-title': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/img-redundant-alt': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/interactive-supports-focus': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/label-has-for': 'off', | 
					
						
							|  |  |  |     'jsx-a11y/mouse-events-have-key-events': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/no-access-key': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/no-distracting-elements': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/no-noninteractive-element-interactions': [ | 
					
						
							|  |  |  |       'warn', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         handlers: [ | 
					
						
							|  |  |  |           'onClick', | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'jsx-a11y/no-onchange': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/no-redundant-roles': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/no-static-element-interactions': [ | 
					
						
							|  |  |  |       'warn', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         handlers: [ | 
					
						
							|  |  |  |           'onClick', | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'jsx-a11y/role-has-required-aria-props': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/role-supports-aria-props': 'off', | 
					
						
							|  |  |  |     'jsx-a11y/scope': 'warn', | 
					
						
							|  |  |  |     'jsx-a11y/tabindex-no-positive': 'warn', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     'import/extensions': [ | 
					
						
							|  |  |  |       'error', | 
					
						
							|  |  |  |       'always', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         js: 'never', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'import/newline-after-import': 'error', | 
					
						
							|  |  |  |     'import/no-extraneous-dependencies': [ | 
					
						
							|  |  |  |       'error', | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         devDependencies: [ | 
					
						
							|  |  |  |           'config/webpack/**', | 
					
						
							|  |  |  |           'app/javascript/mastodon/test_setup.js', | 
					
						
							|  |  |  |           'app/javascript/**/__tests__/**', | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |     'import/no-unresolved': 'error', | 
					
						
							|  |  |  |     'import/no-webpack-loader-syntax': 'error', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     'promise/catch-or-return': 'error', | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }; |