UNPKG

@sequencemedia/react-router-redux-render

Version:

Sync/async isomorphic render of React apps with React Router + Redux

148 lines (142 loc) 2.44 kB
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' } } }) ]