+++ /dev/null
-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)$',
- ],
- 'import/resolver': {
- node: {
- paths: ['app/javascript'],
- },
- },
- },
-
- 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-restricted-properties': [
- 'error',
- { property: 'substring', message: 'Use .slice instead of .substring.' },
- { property: 'substr', message: 'Use .slice instead of .substr.' },
- ],
- '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',
- {
- allowFinally: true,
- },
- ],
- },
-};
+++ /dev/null
-require:
- - rubocop-rails
-
-AllCops:
- TargetRubyVersion: 2.5
- NewCops: disable
- Exclude:
- - 'spec/**/*'
- - 'db/**/*'
- - 'app/views/**/*'
- - 'config/**/*'
- - 'bin/*'
- - 'Rakefile'
- - 'node_modules/**/*'
- - 'Vagrantfile'
- - 'vendor/**/*'
- - 'lib/json_ld/*'
- - 'lib/templates/**/*'
-
-Bundler/OrderedGems:
- Enabled: false
-
-Layout/AccessModifierIndentation:
- EnforcedStyle: indent
-
-Layout/EmptyLineAfterMagicComment:
- Enabled: false
-
-Layout/EmptyLineAfterGuardClause:
- Enabled: false
-
-Layout/EmptyLineBetweenDefs:
- AllowAdjacentOneLineDefs: true
-
-Layout/EmptyLinesAroundAttributeAccessor:
- Enabled: true
-
-Layout/FirstHashElementIndentation:
- EnforcedStyle: consistent
-
-Layout/HashAlignment:
- Enabled: false
-
-Layout/SpaceAroundMethodCallOperator:
- Enabled: true
-
-Layout/SpaceInsideHashLiteralBraces:
- EnforcedStyle: space
-
-Lint/DeprecatedOpenSSLConstant:
- Enabled: true
-
-Lint/DuplicateElsifCondition:
- Enabled: true
-
-Lint/MixedRegexpCaptureTypes:
- Enabled: true
-
-Lint/RaiseException:
- Enabled: true
-
-Lint/StructNewOverride:
- Enabled: true
-
-Lint/UselessAccessModifier:
- ContextCreatingMethods:
- - class_methods
-
-Metrics/AbcSize:
- Max: 100
- Exclude:
- - 'lib/mastodon/*_cli.rb'
-
-Metrics/BlockLength:
- Max: 55
- Exclude:
- - 'lib/tasks/**/*'
- - 'lib/mastodon/*_cli.rb'
-
-Metrics/BlockNesting:
- Max: 3
- Exclude:
- - 'lib/mastodon/*_cli.rb'
-
-Metrics/ClassLength:
- CountComments: false
- Max: 400
- Exclude:
- - 'lib/mastodon/*_cli.rb'
-
-Metrics/CyclomaticComplexity:
- Max: 25
- Exclude:
- - 'lib/mastodon/*_cli.rb'
-
-Layout/LineLength:
- AllowURI: true
- Enabled: false
-
-Metrics/MethodLength:
- CountComments: false
- Max: 65
- Exclude:
- - 'lib/mastodon/*_cli.rb'
-
-Metrics/ModuleLength:
- CountComments: false
- Max: 200
-
-Metrics/ParameterLists:
- Max: 5
- CountKeywordArgs: true
-
-Metrics/PerceivedComplexity:
- Max: 25
-
-Naming/MemoizedInstanceVariableName:
- Enabled: false
-
-Naming/MethodParameterName:
- Enabled: true
-
-Rails:
- Enabled: true
-
-Rails/ApplicationController:
- Enabled: false
- Exclude:
- - 'app/controllers/well_known/**/*.rb'
-
-Rails/BelongsTo:
- Enabled: false
-
-Rails/ContentTag:
- Enabled: false
-
-Rails/EnumHash:
- Enabled: false
-
-Rails/Exit:
- Exclude:
- - 'lib/mastodon/*'
- - 'lib/cli.rb'
-
-Rails/FilePath:
- Enabled: false
-
-Rails/HasAndBelongsToMany:
- Enabled: false
-
-Rails/HasManyOrHasOneDependent:
- Enabled: false
-
-Rails/HelperInstanceVariable:
- Enabled: false
-
-Rails/HttpStatus:
- Enabled: false
-
-Rails/IndexBy:
- Enabled: false
-
-Rails/InverseOf:
- Enabled: false
-
-Rails/LexicallyScopedActionFilter:
- Enabled: false
-
-Rails/OutputSafety:
- Enabled: true
-
-Rails/RakeEnvironment:
- Enabled: false
-
-Rails/RedundantForeignKey:
- Enabled: false
-
-Rails/SkipsModelValidations:
- Enabled: false
-
-Rails/UniqueValidationWithoutIndex:
- Enabled: false
-
-Style/AccessorGrouping:
- Enabled: true
-
-Style/AccessModifierDeclarations:
- Enabled: false
-
-Style/ArrayCoercion:
- Enabled: true
-
-Style/BisectedAttrAccessor:
- Enabled: true
-
-Style/CaseLikeIf:
- Enabled: false
-
-Style/ClassAndModuleChildren:
- Enabled: false
-
-Style/CollectionMethods:
- Enabled: true
- PreferredMethods:
- find_all: 'select'
-
-Style/Documentation:
- Enabled: false
-
-Style/DoubleNegation:
- Enabled: true
-
-Style/ExpandPathArguments:
- Enabled: false
-
-Style/ExponentialNotation:
- Enabled: true
-
-Style/FormatString:
- Enabled: false
-
-Style/FormatStringToken:
- Enabled: false
-
-Style/FrozenStringLiteralComment:
- Enabled: true
-
-Style/GuardClause:
- Enabled: false
-
-Style/HashAsLastArrayItem:
- Enabled: false
-
-Style/HashEachMethods:
- Enabled: true
-
-Style/HashLikeCase:
- Enabled: true
-
-Style/HashTransformKeys:
- Enabled: true
-
-Style/HashTransformValues:
- Enabled: false
-
-Style/IfUnlessModifier:
- Enabled: false
-
-Style/InverseMethods:
- Enabled: false
-
-Style/Lambda:
- Enabled: false
-
-Style/MutableConstant:
- Enabled: false
-
-Style/PercentLiteralDelimiters:
- PreferredDelimiters:
- '%i': '()'
- '%w': '()'
-
-Style/PerlBackrefs:
- AutoCorrect: false
-
-Style/RedundantAssignment:
- Enabled: false
-
-Style/RedundantFetchBlock:
- Enabled: true
-
-Style/RedundantFileExtensionInRequire:
- Enabled: true
-
-Style/RedundantRegexpCharacterClass:
- Enabled: false
-
-Style/RedundantRegexpEscape:
- Enabled: false
-
-Style/RedundantReturn:
- Enabled: true
-
-Style/RegexpLiteral:
- Enabled: false
-
-Style/RescueStandardError:
- Enabled: false
-
-Style/SignalException:
- Enabled: false
-
-Style/SlicingWithRange:
- Enabled: true
-
-Style/SymbolArray:
- Enabled: false
-
-Style/TrailingCommaInArrayLiteral:
- EnforcedStyleForMultiline: 'comma'
-
-Style/TrailingCommaInHashLiteral:
- EnforcedStyleForMultiline: 'comma'
-
-Style/UnpackFirst:
- Enabled: false