Untitled
unknown
plain_text
4 years ago
6.7 kB
8
Indexable
const path = require('path');
module.exports = {
env: {
commonjs: true,
node: true,
browser: true,
es2021: true,
jest: true,
'cypress/globals': true,
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:prettier/recommended',
'red',
'plugin:sonarjs/recommended',
'plugin:cypress/recommended',
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 'latest',
sourceType: 'module',
},
parser: '@babel/eslint-parser',
plugins: [
'react',
'import',
'react-hooks',
'sonarjs',
'unicorn',
'fp',
'prefer-optional-chaining',
'jsdoc',
// '@shopify',
'jest',
'jest-dom',
'testing-library',
'cypress',
],
rules: {
'linebreak-style': 0,
'no-prototype-builtins': 0,
'no-case-declarations': 0,
'no-plusplus': 0,
'no-magic-numbers': 0,
'max-params': 0,
'max-depth': 0,
'no-implicit-coercion': 0,
quotes: 0,
'comma-dangle': 0,
'no-ternary': 0,
'no-children-prop': 0,
'react/prop-types': 0,
'react/no-unescaped-entities': 0,
'react/no-render-return-value': 0,
'react/no-children-prop': 0,
'react/jsx-no-useless-fragment': 0,
'no-restricted-syntax': [
2,
{
selector: 'ExportDefaultDeclaration',
message: 'Do not use default export. Use named exports instead.',
},
'WithStatement',
'ClassDeclaration',
'ClassExpression',
"BinaryExpression[operator='in']",
],
'arrow-body-style': [1, 'as-needed'],
'no-unused-expressions': [
2,
{
allowShortCircuit: true,
allowTernary: true,
allowTaggedTemplates: true,
enforceForJSX: true,
},
],
'react/jsx-boolean-value': 2,
'react/boolean-prop-naming': 2,
'react/no-multi-comp': 2,
'react/no-unstable-nested-components': 2,
'react/jsx-props-no-spreading': 2,
'jsdoc/check-types': 1,
'jsdoc/check-alignment': 1,
'fp/no-delete': 1,
camelcase: [
1,
{
properties: 'never',
},
],
'prefer-arrow-callback': 2,
'no-useless-call': 2,
'no-lone-blocks': 2,
'no-var': 2,
'prefer-const': 2,
'prefer-rest-params': 2,
'no-return-assign': [2, 'always'],
'no-else-return': 2,
'prefer-template': 2,
'prefer-spread': 2,
'no-return-await': 2,
'no-param-reassign': 2,
'array-callback-return': [2, { allowImplicit: true }],
'dot-notation': 2,
// '@shopify/prefer-early-return': 2, // too many warnings
// '@shopify/restrict-full-import': [
// 2,
// ['lodash', '@mui/material', "@mui/icons-material'"],
// ],
'object-shorthand': 2,
'import/first': 2,
'import/order': 2,
'import/no-duplicates': 2,
'import/no-useless-path-segments': [
2,
{
noUselessIndex: true,
},
],
'no-unneeded-ternary': [2, { defaultAssignment: false }],
'prefer-optional-chaining/prefer-optional-chaining': 1,
'require-atomic-updates': 1,
'no-nested-ternary': 1,
'no-console': [1, { allow: ['warn', 'error', 'debug'] }],
eqeqeq: 1,
'cypress/no-unnecessary-waiting': 1,
'sonarjs/cognitive-complexity': 0, // disabled because: sonar warns against react functional components
'sonarjs/prefer-immediate-return': 0, // disabled because: bad rule. Too opinionated.
'sonarjs/no-duplicate-string': 0,
'sonarjs/no-nested-template-literals': 0, // disabled because: we use t`string` (ttag special syntax) for translations.
'unicorn/better-regex': 2,
'unicorn/explicit-length-check': 2,
'unicorn/consistent-function-scoping': 2,
'unicorn/prefer-default-parameters': 2,
'unicorn/no-array-push-push': 1,
'unicorn/prefer-array-index-of': 1,
'unicorn/prefer-array-flat-map': 1,
'unicorn/prefer-array-some': 1,
'unicorn/prefer-array-find': 1,
'unicorn/prefer-array-flat': 1,
'unicorn/prefer-includes': 2,
'unicorn/prefer-spread': 2,
'unicorn/no-useless-undefined': 2,
'unicorn/no-for-loop': 2,
'no-shadow': [
2,
{
hoist: 'all',
allow: ['resolve', 'reject', 'done', 'next', 'err', 'error'],
},
],
'no-eval': 2,
'prettier/prettier': [
'error',
{
endOfLine: 'auto',
trailingComma: 'es5',
semi: true,
singleQuote: true,
bracketSpacing: true,
bracketSameLine: false,
printWidth: 85,
arrowParens: 'avoid',
parser: 'babel',
tabWidth: 2,
quoteProps: 'as-needed',
},
],
},
overrides: [
{
files: ['**/__tests__/**/*.[jt]s?(x)'],
extends: [
'plugin:testing-library/react',
'plugin:jest/all',
'plugin:jest-dom/recommended',
],
rules: {
'jest/prefer-expect-assertions': 0,
'jest/prefer-lowercase-title': [2, { ignore: ['describe'] }],
},
},
],
ignorePatterns: ['node_modules/'],
settings: {
react: {
version: 'detect',
},
jest: {
version: require('jest/package.json').version,
},
'import/resolver': {
alias: {
map: [
['@src', path.resolve(__dirname, 'src')],
['@assets', path.resolve(__dirname, 'src/assets')],
['@builders', path.resolve(__dirname, 'src/builders')],
['@hooks', path.resolve(__dirname, 'src/hooks')],
['@old', path.resolve(__dirname, 'src/pages')],
['@register', path.resolve(__dirname, 'src/register')],
['@ux-core', path.resolve(__dirname, 'src/ux-core')],
['@pages', path.resolve(__dirname, 'src/new/Pages')],
['@admin', path.resolve(__dirname, 'src/new/Pages/Admin')],
['@app', path.resolve(__dirname, 'src/new/Pages/App')],
['@container', path.resolve(__dirname, 'src/new/Pages/ContainerPage')],
['@layout', path.resolve(__dirname, 'src/new/Pages/Layout')],
['@login', path.resolve(__dirname, 'src/new/Pages/Login')],
[
'@userPreferences',
path.resolve(__dirname, 'src/new/Pages/user-preferences'),
],
['@users', path.resolve(__dirname, 'src/new/Pages/Users')],
['@entityManager', path.resolve(__dirname, 'src/new/EntityManager')],
['@entities', path.resolve(__dirname, 'src/new/Entities')],
['@components', path.resolve(__dirname, 'src/new/Components')],
],
},
},
},
};
Editor is loading...