UNPKG

eslint-config-regiojet-typescript-react

Version:

Eslint Typescript rules for JS and TS React projects

173 lines (163 loc) 5.13 kB
import getTsConfig, { barrels, barrelsFiles, customs, defaultTs, errors, es6, getLanguageOptions, getImportConfig as getTsImportConfig, ignores, mapFiles, node, perfectionist, plus, strict, stylistic, tsConfig, tsPlugins, tsStrict, tsStylistic, plugins as tsVanillaPlugins, vanillaConfigs, vanillaPlugins, variables, } from 'eslint-config-regiojet-typescript'; import { a11y, reactConfigs as allReactConfigs, bestPractices, getConfig as getReactConfig, hooks, react, perfectionist as reactPerfectionist, reactPlugins, reactStylistic, plugins as reactVanillaPlugins, refresh, } from 'eslint-config-regiojet-vanilla-react'; import { files, plugins, refreshFiles, tsFiles, } from './eslint.config.mjs'; import { defaultImportExtensions, defaultImportExtensionsRuleGranularOption, defaultImportNoExtraneousDependenciesDevDependencies, defaultImportResolverNodeExtensions, } from './rules/imports.mjs'; import reactConfigs from './rules/react.mjs'; import reactTsOff from './rules/reactTsOff.mjs'; const dineddd = defaultImportNoExtraneousDependenciesDevDependencies; const diergo = defaultImportExtensionsRuleGranularOption; const defaultOptions = { barrelsFiles, files, importExtensions: defaultImportExtensions, importExtensionsRuleGranularOption: diergo, importNoExtraneousDependenciesDevDependencies: dineddd, importResolverNodeExtensions: defaultImportResolverNodeExtensions, plugins, tsFiles, }; /** * returns eslint config for typescript * @param {string} baseDir - base directory for tsconfig.json * @param {object} [options={}] - options * @param {Array.<string>} [options.barrelsFiles=['**\/index.{js,mjs,mts,ts}']] - file patterns for barrel files * @param {Array.<string>} [options.files=['**\/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}']] - file patterns to lint * @param {Array.<string>} [options.importExtensions=['.tsx', '.js', '.jsx', '.mjs', '.mts', '.ts']] - extensions for module settings import/extensions * @param {Object.<string, string>} [options.importExtensionsRuleGranularOption] - granural oprions for import/extensions rule; for default values see Readme.md * @param {Array.<string>} [options.importNoExtraneousDependenciesDevDependencies=['see Readme.md']] - devDependencies for import/no-extraneous-dependencies rule * @param {Array.<string>} [options.importResolverNodeExtensions=['.tsx', '.js', '.jsx', '.json', '.mjs', '.mts', '.ts']] - extensions for module settings import/resolver.node.extensions * @param {Object.<string, Object | undefined>} [options.plugins] - default plugins; for default values see Readme.md * @param {Array.<string>} [options.refreshFiles=['**\/*.jsx', '**\/*.tsx']] - file patterns for refresh rules * @param {Array.<string>} [options.tsFiles=['**\/*.jsx', '**\/*.tsx']] - file patterns for refresh rules * @returns {Array.<Object>} - ESLint Flat config */ const getConfig = (baseDir, options = defaultOptions) => { const { barrelsFiles: customBarrelsFiles = barrelsFiles, files: customFiles = files, importExtensions: ie = defaultImportExtensions, importExtensionsRuleGranularOption: iergo = diergo, importNoExtraneousDependenciesDevDependencies: ineddd = dineddd, importResolverNodeExtensions: irne = defaultImportResolverNodeExtensions, plugins: customPlugins = plugins, refreshFiles: customRefreshFiles = refreshFiles, tsFiles: customTsFiles = tsFiles, } = options; const tsConfigs = getTsConfig(baseDir, { barrelsFiles: customBarrelsFiles, files: customFiles, importExtensions: ie, importExtensionsRuleGranularOption: iergo, importNoExtraneousDependenciesDevDependencies: ineddd, importResolverNodeExtensions: irne, plugins: customPlugins, tsFiles: customTsFiles, }); const reactConfigsWithFiles = mapFiles(reactConfigs, customFiles); const refreshConfigsWithFiles = mapFiles(refresh, customRefreshFiles); const perfectionistWithFiles = mapFiles(reactPerfectionist, files); const offWithFiles = mapFiles(reactTsOff, tsFiles); const eslintConfig = [ { name: 'typescript-react/base', plugins: customPlugins, }, ...tsConfigs, ...reactConfigsWithFiles, ...refreshConfigsWithFiles, ...perfectionistWithFiles, ...offWithFiles, ...ignores, ]; return eslintConfig; }; export { a11y, allReactConfigs, barrels, barrelsFiles, bestPractices, customs, defaultImportExtensions, defaultImportExtensionsRuleGranularOption, defaultImportNoExtraneousDependenciesDevDependencies, defaultImportResolverNodeExtensions, defaultTs, errors, es6, files, getLanguageOptions, getReactConfig, getTsImportConfig, hooks, ignores, mapFiles, node, perfectionist, plugins, plus, react, reactConfigs, reactPerfectionist, reactPlugins, reactStylistic, reactTsOff, reactVanillaPlugins, refresh, refreshFiles, strict, stylistic, tsConfig, tsFiles, tsPlugins, tsStrict, tsStylistic, tsVanillaPlugins, vanillaConfigs, vanillaPlugins, variables, }; export default getConfig;