Created
June 8, 2022 13:49
-
-
Save mqklin/029d6e0d3aec6c89dec98557c8cef6fb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* global module, __dirname */ | |
/* eslint-disable import/no-commonjs, import/no-nodejs-modules */ | |
const path = require('path'); | |
module.exports = { | |
globals: { | |
require: 'readonly', | |
process: 'readonly', | |
// browser env | |
Promise: 'readonly', | |
document: 'readonly', | |
console: 'readonly', | |
window: 'readonly', | |
setTimeout: 'readonly', | |
clearTimeout: 'readonly', | |
setInterval: 'readonly', | |
clearInterval: 'readonly', | |
navigator: 'readonly', | |
FormData: 'readonly', | |
FileReader: 'readonly', | |
Image: 'readonly', | |
URLSearchParams: 'readonly', | |
getComputedStyle: 'readonly', | |
Symbol: 'readonly', | |
IntersectionObserver: 'readonly', | |
File: 'readonly', | |
Set: 'readonly', | |
Proxy: 'readonly', | |
structuredClone: 'readonly', | |
}, | |
parser: '@babel/eslint-parser', | |
parserOptions: { | |
requireConfigFile: false, | |
babelOptions: require(path.resolve(__dirname, 'webpack-configs/app.js'))({SENTRY_ENV: 'atom'}).module.rules[0].use.options, | |
}, | |
plugins: [ | |
'react', | |
'import', | |
'babel', | |
'brackets', | |
'react-hooks', | |
'unicorn', | |
], | |
settings: { | |
'import/resolver': { | |
node: true, | |
webpack: { | |
config: path.resolve(__dirname, 'webpack-configs/dev.js'), | |
}, | |
}, | |
react: { | |
version: 'detect', | |
}, | |
propWrapperFunctions: ['forbidExtraProps'], | |
}, | |
rules: { | |
'valid-typeof': ['error', {requireStringLiterals: true}], | |
'arrow-parens': ['error', 'as-needed'], | |
'arrow-spacing': ['error'], | |
'brace-style': ['error', 'stroustrup'], | |
'comma-spacing': ['error'], | |
'eol-last': ['error', 'always'], | |
'func-call-spacing': ['error'], | |
'jsx-quotes': ['error'], | |
'key-spacing': ['error'], | |
'block-spacing': ['error'], | |
'keyword-spacing': ['error'], | |
'linebreak-style': ['error', 'unix'], | |
'lines-between-class-members': ['error', 'always', {exceptAfterSingleLine: true}], | |
'no-case-declarations': ['error'], | |
'no-console': ['error'], | |
'no-const-assign': ['error'], | |
'no-debugger': ['error'], | |
'no-dupe-args': ['error'], | |
'no-eval': ['error'], | |
'no-dupe-class-members': ['error'], | |
'no-dupe-keys': ['error'], | |
'no-duplicate-case': ['error'], | |
'no-duplicate-imports': ['error'], | |
'no-empty': ['error', {allowEmptyCatch: true}], | |
'no-extra-boolean-cast': ['error', {enforceForLogicalOperands: true}], | |
'no-extra-parens': ['error', 'all', {ignoreJSX: 'all'}], | |
'no-extra-semi': ['error'], | |
'no-global-assign': ['error'], | |
'prefer-destructuring': ['error', {VariableDeclarator: {array: false, object: true}, AssignmentExpression: {array: true, object: false}}], | |
'no-implicit-coercion': ['error', {disallowTemplateShorthand: true}], | |
'no-sequences': ['error', {allowInParentheses: false}], | |
radix: ['error'], | |
'arrow-body-style': ['error'], | |
'dot-location': ['error', 'property'], | |
'no-irregular-whitespace': ['error'], | |
'no-mixed-spaces-and-tabs': ['error'], | |
'no-multi-spaces': ['error'], | |
'no-constant-condition': ['error'], | |
'getter-return': ['error'], | |
'no-useless-escape': ['error'], | |
'no-control-regex': ['error'], | |
// 'no-prototype-builtins': ['error'], | |
'no-multi-str': ['error'], | |
'no-multiple-empty-lines': ['error', {max: 2, maxEOF: 1}], | |
'no-redeclare': ['error'], | |
'no-sparse-arrays': ['error'], | |
'no-await-in-loop': ['error'], | |
'no-self-assign': ['error'], | |
'no-whitespace-before-property': ['error'], | |
'no-trailing-spaces': ['error'], | |
'no-undef': ['error'], | |
'no-unexpected-multiline': ['error'], | |
'no-unreachable': ['error'], | |
'object-property-newline': ['error', {allowAllPropertiesOnSameLine: true}], | |
'no-unused-expressions': ['error', {allowTaggedTemplates: true, allowTernary: true, enforceForJSX: true}], | |
'no-unused-vars': ['error', {vars: 'all', ignoreRestSiblings: true, args: 'all', argsIgnorePattern: '^_+$', caughtErrors: 'all'}], | |
'no-use-before-define': ['error', {functions: false, classes: false}], | |
'no-var': ['error'], | |
'no-script-url': ['error'], | |
'no-multi-assign': ['error'], | |
'no-func-assign': ['error'], | |
'space-unary-ops': ['error'], | |
'no-invalid-regexp': ['error'], | |
'prefer-regex-literals': ['error'], | |
'prefer-template': ['error'], | |
'template-curly-spacing': ['error'], | |
'for-direction': ['error'], | |
'object-curly-spacing': ['error', 'never'], | |
'prefer-const': ['error'], | |
'prefer-rest-params': ['error'], | |
'quote-props': ['error', 'as-needed'], | |
'space-before-blocks': ['error'], | |
'operator-assignment': ['error'], | |
'use-isnan': ['error'], | |
'no-loss-of-precision': ['error'], | |
'dot-notation': ['error'], | |
'no-useless-computed-key': ['error'], | |
'space-infix-ops': ['error'], | |
'space-in-parens': ['error'], | |
'no-useless-rename': ['error'], | |
'array-bracket-spacing': ['error'], | |
'computed-property-spacing': ['error'], | |
'no-async-promise-executor': ['error'], | |
'max-nested-callbacks': ['error'], | |
'no-return-await': ['error'], | |
'prefer-promise-reject-errors': ['error'], | |
// 'prefer-object-has-own': ['error'], | |
eqeqeq: ['error'], | |
'semi-spacing': ['error'], | |
'no-unsafe-optional-chaining': ['error'], | |
'no-useless-backreference': ['error'], | |
'no-nonoctal-decimal-escape': ['error'], | |
'no-octal-escape': ['error'], | |
'no-undefined': ['error'], | |
'no-extend-native': ['error'], | |
'no-invalid-this': ['error'], | |
curly: ['error'], | |
indent: ['error', 2, {SwitchCase: 1, flatTernaryExpressions: true}], | |
quotes: ['error', 'single'], | |
'prefer-exponentiation-operator': ['error'], | |
semi: ['error', 'always', {omitLastInOneLineBlock: true}], | |
'space-before-function-paren': ['error', { | |
anonymous: 'never', | |
named: 'never', | |
asyncArrow: 'always', | |
}], | |
'no-constructor-return': ['error'], | |
'no-dupe-else-if': ['error'], | |
'no-setter-return': ['error'], | |
'no-restricted-syntax': [ | |
'error', | |
{ | |
selector: 'AssignmentExpression[left.object.name=\'window\']', | |
message: 'Don\'t write to window!', | |
}, | |
], | |
'comma-dangle': ['error', { | |
arrays: 'always-multiline', | |
objects: 'always-multiline', | |
imports: 'always-multiline', | |
exports: 'always-multiline', | |
functions: 'always-multiline', | |
}], | |
'react-hooks/rules-of-hooks': 'error', | |
'react/no-unused-state': 'error', | |
'react/no-unused-prop-types': 'error', | |
'react/prop-types': 'error', | |
'react/jsx-sort-props': ['error', {reservedFirst: true}], | |
'react/sort-prop-types': ['error', {ignoreCase: true}], | |
'react/jsx-curly-brace-presence': ['error', {props: 'never', children: 'never'}], | |
'react/jsx-no-useless-fragment': 'error', | |
'react/jsx-pascal-case': ['error', {allowAllCaps: true}], | |
'react/no-danger-with-children': 'error', | |
// 'react/jsx-no-constructed-context-values': 'error', | |
'react/jsx-uses-vars': 'error', | |
'react/jsx-equals-spacing': 'error', | |
'react/jsx-tag-spacing': ['error', {beforeSelfClosing: 'never'}], | |
'react/jsx-no-target-blank': 'error', | |
'react/jsx-no-undef': ['error', {allowGlobals: true}], | |
'react/jsx-no-duplicate-props': 'error', | |
'react/jsx-key': 'error', | |
'react/jsx-first-prop-new-line': ['error'], | |
'react/jsx-indent': ['error', 2, {indentLogicalExpressions: true}], | |
'react/jsx-indent-props': ['error', 2], | |
'react/jsx-curly-spacing': [2, {children: true}], | |
'react/jsx-wrap-multilines': ['error', { | |
declaration: 'parens-new-line', | |
assignment: 'parens-new-line', | |
return: 'parens-new-line', | |
arrow: 'parens-new-line', | |
condition: 'parens-new-line', | |
}], | |
'import/no-unresolved': [2, {commonjs: true}], | |
'import/named': 'error', | |
'import/default': 'error', | |
'import/no-named-as-default': 'error', | |
// 'import/no-unused-modules': ['error', {unusedExports: true}], | |
// 'import/order': ['error', {groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object']}], | |
'import/no-nodejs-modules': 'error', | |
'import/no-extraneous-dependencies': 'error', | |
'import/no-cycle': 'error', | |
'import/no-self-import': 'error', | |
'import/first': 'error', | |
'import/no-commonjs': ['error', {allowRequire: true}], | |
'import/dynamic-import-chunkname': 'error', | |
'babel/semi': 'error', | |
'brackets/array-bracket-newline': 'error', | |
'brackets/conditional-parens-newline': 'error', | |
'brackets/func-parens-newline': 'error', | |
'brackets/object-curly-newline': 'error', | |
'unicorn/no-array-callback-reference': 'error', | |
}, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment