-
Notifications
You must be signed in to change notification settings - Fork 0
/
eslint.config.mjs
57 lines (50 loc) · 1.34 KB
/
eslint.config.mjs
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
//@ts-check
import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import eslintConfigPrettier from "eslint-config-prettier";
/** @type {import('typescript-eslint').Config} */
const configs = [
{ files: ["**/*.{js,mjs,cjs,ts,d.ts}"] },
useGlobals("node"),
pluginJs.configs.recommended,
...tseslint.configs.recommended,
{
rules: {
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": "warn",
"@typescript-eslint/no-require-imports": "off",
"@typescript-eslint/no-empty-object-type": "off",
},
},
// Make sure to put this last, so it gets the chance to override other configs
eslintConfigPrettier,
];
export default configs;
/**
*
* @param {'node' | 'browser'} mode
*/
function useGlobals(mode) {
//
// settings for browser-based apps
// (treat all '*.js' files as common application/scripts)
const globalsEnvBrowser = {
files: ["**/*.js"],
languageOptions: { sourceType: "script" },
};
// settings for node-based apps
const globalsEnvNode = { languageOptions: { globals: globals.node } };
// toggle returned settings on input parameter
switch (mode) {
case "node": {
return globalsEnvNode;
}
case "browser": {
return globalsEnvBrowser;
}
default: {
return {};
}
}
}