-
Notifications
You must be signed in to change notification settings - Fork 6
/
eslint.config.js
110 lines (100 loc) · 2.77 KB
/
eslint.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import js from '@eslint/js';
import globals from 'globals';
import * as importConfig from './tools/eslint/import_config.js';
import {
rules as rulesForJavaScript,
createLanguageOptionsForModule,
createLanguageOptionsForCommonJS,
} from './tools/eslint/javascript.js';
import { configs as prettierConfigs } from './tools/eslint/prettier.js';
import {
createlanguageOptionsForTypeScript,
config as configForTypeScript,
} from './tools/eslint/typescript.js';
const THIS_FILE_NAME = fileURLToPath(import.meta.url);
const THIS_DIR_NAME = path.dirname(THIS_FILE_NAME);
const ECMA262_VERSION = 2022;
const languageOptionsForModule = createLanguageOptionsForModule(ECMA262_VERSION, {
...globals.nodeBuiltin,
});
const languageOptionsForCommonJS = createLanguageOptionsForCommonJS(ECMA262_VERSION, {
...globals.node,
...globals.commonjs,
});
const JS_FILES = ['**/*.mjs', '**/*.js'];
const COMMONJS_FILES = ['**/*.cjs'];
const TYPESCRIPT_FILES = [
// @prettier-ignore
'**/*.ts',
'**/*.mts',
'**/*.cts',
];
const APPLICATION_FILES = TYPESCRIPT_FILES.map((path) => {
return `packages/option-t/src/${path}`;
});
// https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new
export default [
js.configs.recommended,
{
linterOptions: {
reportUnusedDisableDirectives: true,
},
rules: {
...rulesForJavaScript,
},
},
{
ignores: [
// @prettier-ignore
// Project-specific generated files
'**/__dist/**/*',
'**/__tmp_base/**/*',
'**/__tmp_mjs/**/*',
'**/__tmp_cjs/**/*',
'**/cjs/**/*',
'**/esm/**/*',
'**/lib/**/*',
],
},
{
files: JS_FILES,
languageOptions: languageOptionsForModule,
},
{
files: JS_FILES,
...importConfig.configForJavaScript,
},
{
files: COMMONJS_FILES,
languageOptions: languageOptionsForCommonJS,
},
{
files: ['**/__tests__/**/*'],
languageOptions: languageOptionsForModule,
rules: {
'no-magic-numbers': 'off',
},
},
{
files: TYPESCRIPT_FILES,
languageOptions: createlanguageOptionsForTypeScript(THIS_DIR_NAME),
...configForTypeScript,
},
{
files: TYPESCRIPT_FILES,
...importConfig.configForTypeScript,
},
{
files: APPLICATION_FILES,
languageOptions: createlanguageOptionsForTypeScript(
path.resolve(THIS_DIR_NAME, 'packages/option-t/'),
),
},
{
files: APPLICATION_FILES,
...importConfig.configForLibaryCode,
},
...prettierConfigs,
];