summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYamagishi Kazutoshi <ykzts@desire.sh>2019-01-04 19:28:38 +0900
committerEugen Rochko <eugen@zeonfederated.com>2019-01-04 11:28:38 +0100
commitd5bdfaf0bb91d89bd29a6507dd7c9a7a6adfd7ca (patch)
tree3d9bc0d38d6313bed2728923bce9a5ab3477e7bf
parentc39c112ced73d7942d31f8d49fdde70eed18aece (diff)
Increase files checked by ESLint (#9705)
-rw-r--r--.eslintignore43
-rw-r--r--.eslintrc.js199
-rw-r--r--.eslintrc.yml172
-rw-r--r--package.json4
-rw-r--r--postcss.config.js14
-rw-r--r--vendor/.keep (renamed from vendor/assets/javascripts/.keep)0
-rw-r--r--vendor/assets/stylesheets/.keep0
7 files changed, 218 insertions, 214 deletions
diff --git a/.eslintignore b/.eslintignore
index 6d540c41387..d4930e1f528 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,30 +1,13 @@
-# See https://help.github.com/articles/ignoring-files for more about ignoring files.
-#
-# If you find yourself ignoring temporary files generated by your text editor
-# or operating system, you probably want to add a global ignore instead:
-# git config --global core.excludesfile '~/.gitignore_global'
-
-# Ignore bundler config.
-/.bundle
-
-# Ignore the default SQLite database.
-/db/*.sqlite3
-/db/*.sqlite3-journal
-
-# Ignore all logfiles and tempfiles.
-/log/*
-!/log/.keep
-/tmp
-coverage
-public/system
-public/assets
-.env
-.env.production
-node_modules/
-neo4j/
-
-# Ignore Vagrant files
-.vagrant/
-
-# Ignore Capistrano customizations
-config/deploy/*
+/build/**
+/coverage/**
+/db/**
+/lib/**
+/log/**
+/node_modules/**
+/nonobox/**
+/public/**
+!/public/embed.js
+/spec/**
+/tmp/**
+/vendor/**
+!.eslintrc.js
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000000..56e3d0530f5
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,199 @@
+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)$',
+ ],
+ },
+
+ 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',
+ },
+};
diff --git a/.eslintrc.yml b/.eslintrc.yml
deleted file mode 100644
index dddf29eb820..00000000000
--- a/.eslintrc.yml
+++ /dev/null
@@ -1,172 +0,0 @@
----
-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)$
-
-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
diff --git a/package.json b/package.json
index a7f2fd157a5..15d9f085a86 100644
--- a/package.json
+++ b/package.json
@@ -10,8 +10,8 @@
"build:production": "cross-env RAILS_ENV=production NODE_ENV=production ./bin/webpack",
"manage:translations": "node ./config/webpack/translationRunner.js",
"start": "node ./streaming/index.js",
- "test": "npm run test:lint && npm run test:jest",
- "test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ streaming/",
+ "test": "${npm_execpath} run test:lint && ${npm_execpath} run test:jest",
+ "test:lint": "eslint --ext=js .",
"test:jest": "cross-env NODE_ENV=test jest --coverage"
},
"repository": {
diff --git a/postcss.config.js b/postcss.config.js
index 84701e4ade3..1c820c3181b 100644
--- a/postcss.config.js
+++ b/postcss.config.js
@@ -1,13 +1,7 @@
-module.exports = {
+module.exports = ({ env }) => ({
plugins: {
- autoprefixer: {
- browsers: [
- 'last 2 versions',
- 'IE >= 11',
- 'iOS >= 9',
- ],
- },
+ autoprefixer: {},
'postcss-object-fit-images': {},
- cssnano: {},
+ cssnano: env === 'production' ? {} : false,
},
-};
+});
diff --git a/vendor/assets/javascripts/.keep b/vendor/.keep
index e69de29bb2d..e69de29bb2d 100644
--- a/vendor/assets/javascripts/.keep
+++ b/vendor/.keep
diff --git a/vendor/assets/stylesheets/.keep b/vendor/assets/stylesheets/.keep
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/vendor/assets/stylesheets/.keep
+++ /dev/null