UNPKG

eslint-config-regiojet-next

Version:

Eslint Typescript rules for Next.js React projects

74 lines (64 loc) 2 kB
import nextEslint from '@next/eslint-plugin-next'; import getConfig, { reactPlugins as baseReactPlugins, defaultImportExtensions, defaultImportExtensionsRuleGranularOption, defaultImportNoExtraneousDependenciesDevDependencies, defaultImportResolverNodeExtensions, files, mapFiles, perfectionist, reactConfigs, reactTsOff, refresh, refreshFiles, tsFiles, plugins as tsVanillaPlugins, } from 'eslint-config-regiojet-typescript-react'; import baseDir from './directory.mjs'; import { bestPractices as bestNextPractices, coreWebVitals, ignores } from './rules/index.mjs'; const dineddd = defaultImportNoExtraneousDependenciesDevDependencies; const diergo = defaultImportExtensionsRuleGranularOption; const { flatConfig: { recommended: { plugins: allNextPlugins } } } = nextEslint; const nextPlugin = { ...allNextPlugins['@next/next'], }; delete nextPlugin.configs; delete nextPlugin.flatConfig; export const nextPlugins = { '@next/next': nextPlugin, }; export const nextConfigs = [ ...bestNextPractices, ...coreWebVitals, ]; export const plugins = { ...tsVanillaPlugins, ...baseReactPlugins, ...nextPlugins, }; const defaultOptions = { files, importExtensions: defaultImportExtensions, importExtensionsRuleGranularOption: diergo, importNoExtraneousDependenciesDevDependencies: dineddd, importResolverNodeExtensions: defaultImportResolverNodeExtensions, plugins, tsFiles, }; const tsConfigs = getConfig(baseDir, defaultOptions); const reactConfigsWithFiles = mapFiles(reactConfigs, files); const refreshConfigsWithFiles = mapFiles(refresh, refreshFiles); const perfectionistWithFiles = mapFiles(perfectionist, files); const nextConfigsWithFiles = mapFiles(nextConfigs, files); const offWithFiles = mapFiles(reactTsOff, tsFiles); const config = [ ...tsConfigs, ...reactConfigsWithFiles, ...refreshConfigsWithFiles, ...perfectionistWithFiles, ...nextConfigsWithFiles, ...offWithFiles, ...ignores, ]; export default config;