Mirror of https://github.com/roostorg/coop
github.com/roostorg/coop
1import { createRequire } from 'node:module';
2import { FlatCompat } from '@eslint/eslintrc';
3import { fixupConfigRules, fixupPluginRules } from '@eslint/compat';
4import functional from 'eslint-plugin-functional';
5
6const require = createRequire(import.meta.url);
7const { ignorePatterns: _, ...legacyConfig } = require('./.eslintrc.cjs');
8
9const compat = new FlatCompat({
10 baseDirectory: import.meta.dirname,
11});
12
13const functionalPlugin = fixupPluginRules(functional);
14
15const flatConfigs = fixupConfigRules(compat.config(legacyConfig)).map((config) =>
16 config.plugins?.functional
17 ? {
18 ...config,
19 plugins: { ...config.plugins, functional: functionalPlugin },
20 }
21 : config,
22);
23
24export default [
25 {
26 ignores: [
27 '**/*.d.ts',
28 'eslint.config.mjs',
29 '.eslintrc.cjs',
30 '.eslintformat.js',
31 'transpiled/**',
32 'coverage/**',
33 'lib/cache/**',
34 ],
35 },
36 ...flatConfigs.map((config) =>
37 config.files ? config : { ...config, files: ['**/*.ts', '**/*.tsx', '**/*.js'] },
38 ),
39];