James Henry 68eeb2eeed
feat(linter): create new workspaces with ESLint v9 and typescript-eslint v8 (#27404)
Closes #27451

---------

Co-authored-by: Leosvel Pérez Espinosa <leosvel.perez.espinosa@gmail.com>
Co-authored-by: Jack Hsu <jack.hsu@gmail.com>
2024-09-12 16:02:27 -04:00

74 lines
2.3 KiB
TypeScript

import typescript from './configs/typescript';
import javascript from './configs/javascript';
import reactTmp from './configs/react-tmp';
import reactBase from './configs/react-base';
import reactJsx from './configs/react-jsx';
import reactTypescript from './configs/react-typescript';
import angularCode from './configs/angular';
import angularTemplate from './configs/angular-template';
import flatBase from './flat-configs/base';
import enforceModuleBoundaries, {
RULE_NAME as enforceModuleBoundariesRuleName,
} from './rules/enforce-module-boundaries';
import nxPluginChecksRule, {
RULE_NAME as nxPluginChecksRuleName,
} from './rules/nx-plugin-checks';
import dependencyChecks, {
RULE_NAME as dependencyChecksRuleName,
} from './rules/dependency-checks';
// Resolve any custom rules that might exist in the current workspace
import { workspaceRules } from './resolve-workspace-rules';
module.exports = {
configs: {
// eslintrc configs
typescript,
javascript,
react: reactTmp,
'react-base': reactBase,
'react-typescript': reactTypescript,
'react-jsx': reactJsx,
angular: angularCode,
'angular-template': angularTemplate,
// flat configs
// Note: Using getters here to avoid importing packages `angular-eslint` statically, which can lead to errors if not installed.
'flat/base': flatBase,
get ['flat/typescript']() {
return require('./flat-configs/typescript').default;
},
get ['flat/javascript']() {
return require('./flat-configs/javascript').default;
},
get ['flat/react']() {
return require('./flat-configs/react-tmp').default;
},
get ['flat/react-base']() {
return require('./flat-configs/react-base').default;
},
get ['flat/react-typescript']() {
return require('./flat-configs/react-typescript').default;
},
get ['flat/react-jsx']() {
return require('./flat-configs/react-jsx').default;
},
get ['flat/angular']() {
return require('./flat-configs/angular').default;
},
get ['flat/angular-template']() {
return require('./flat-configs/angular-template').default;
},
},
rules: {
[enforceModuleBoundariesRuleName]: enforceModuleBoundaries,
[nxPluginChecksRuleName]: nxPluginChecksRule,
[dependencyChecksRuleName]: dependencyChecks,
...workspaceRules,
},
};