@sequencemedia/react-router-redux-render
Version:
Sync/async isomorphic render of React apps with React Router + Redux
148 lines (142 loc) • 2.44 kB
JavaScript
import globals from 'globals'
import standard from '@sequencemedia/eslint-config-standard/configs/recommended/merge'
import typescript from '@sequencemedia/eslint-config-typescript/configs/recommended/merge'
import babelParser from '@babel/eslint-parser'
import typescriptParser from '@typescript-eslint/parser'
import reactPlugin from 'eslint-plugin-react'
const reactParserOptions = {
ecmaFeatures: {
jsx: true
}
}
const reactPlugins = {
react: reactPlugin
}
const reactRules = {
'no-unused-vars': [
'error',
{
varsIgnorePattern: 'React'
}
],
quotes: [
'error',
'single'
],
'jsx-quotes': [
'error',
'prefer-single'
],
'react/jsx-indent': [
'error',
2,
{
checkAttributes: true,
indentLogicalExpressions: true
}
]
}
const reactSettings = {
react: {
version: 'detect'
}
}
export default [
{
ignores: [
'coverage'
]
},
/**
* React config for all `jsx` files
*/
{
...reactPlugin.configs.flat.recommended,
settings: {
...reactSettings
}
},
/**
* Standard config
*/
standard({
files: [
'**/*.{mjs,cjs,mts,cts}'
],
ignores: [
'src',
'test'
],
languageOptions: {
globals: {
...globals.node
}
}
}),
standard({
files: [
'src/**/*.{mjs,cjs,mts,cts}'
],
languageOptions: {
globals: {
...globals.node
}
}
}),
standard({
files: [
'test/**/*.{mjs,cjs,mts,cts}'
],
languageOptions: {
globals: {
...globals.mocha
}
}
}),
/**
* Standard config for all `jsx` files
*/
standard({
files: [
'src/**/*.jsx'
],
languageOptions: {
parser: babelParser,
parserOptions: {
...reactParserOptions,
project: null
},
globals: {
...globals.browser
}
},
plugins: {
...reactPlugins
}, // @ts-expect-error Storybook
rules: {
...reactRules
},
settings: {
...reactSettings
}
}),
/**
* TypeScript config
*/
typescript({
files: [
'**/*.{mts,cts}'
],
languageOptions: {
parser: typescriptParser,
parserOptions: {
projectService: true,
project: 'tsconfig.json'
},
globals: {
...globals.node,
ReactRouterReduxRenderTypes: 'readonly'
}
}
})
]