eslint-config/src/index.ts
rus07tam f6e39a9d63
Some checks failed
Publish to npm / publish-npm (release) Failing after 8s
feat: add ignore eslint.config.ts
2026-02-08 15:28:08 +00:00

67 lines
1.7 KiB
TypeScript

/* eslint-disable @typescript-eslint/naming-convention */
import pluginPerfectionist from 'eslint-plugin-perfectionist';
import pluginPrettier from 'eslint-plugin-prettier';
import pluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
import pluginSonarjs from 'eslint-plugin-sonarjs';
import pluginUnicorn from 'eslint-plugin-unicorn';
import tseslint from 'typescript-eslint';
import { sortBaseRule, sortDetailedRule } from './sort';
const ignores = {
ignores: [
'dist/**',
'**/dist/**',
'build/**',
'**/build/**',
'eslint.config.ts',
],
} as const;
const configs = [
tseslint.configs.stylisticTypeChecked,
tseslint.configs.eslintRecommended,
tseslint.configs.recommendedTypeChecked,
pluginPrettierRecommended,
pluginPerfectionist.configs['recommended-natural'],
pluginUnicorn.configs.all,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(pluginSonarjs.configs?.recommended ?? {}) as any, // broken sonarjs types?
] as const;
export const config = [
...configs,
ignores,
{
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: process.cwd(),
},
},
},
{
rules: {
'@typescript-eslint/naming-convention': 'error',
'perfectionist/sort-classes': ['error', sortDetailedRule],
'perfectionist/sort-interfaces': ['error', sortBaseRule],
'perfectionist/sort-object-types': ['error', sortBaseRule],
'perfectionist/sort-objects': ['error', sortBaseRule],
},
},
{
plugins: {
prettier: pluginPrettier,
},
rules: {
'prettier/prettier': [
'error',
{
singleQuote: true,
},
],
},
},
];
export default config;