-
Notifications
You must be signed in to change notification settings - Fork 5
/
node.js
99 lines (84 loc) · 1.9 KB
/
node.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
'use strict';
const { scriptBase, baseRulesAppliedLast, tsBase, moduleImports } = require('./base');
const baseConfig = {
env: {
browser: false,
node: true,
},
parser: 'babel-eslint',
parserOptions: {
sourceType: 'script',
ecmaVersion: 2018,
},
plugins: ['node', ...scriptBase.plugins],
rules: {
...require('eslint-plugin-node').configs.recommended.rules,
...scriptBase.rules,
'node/no-unpublished-require': 'off', // we live dangerously here
'node/no-extraneous-require': 'off', // incorrect?
...baseRulesAppliedLast,
},
};
const baseModulesConfig = {
...baseConfig,
parserOptions: {
sourceType: 'module',
ecmaVersion: '2021',
},
rules: {
...baseConfig.rules,
'import/exports-last': 'off',
// Does not respect npm packages...
'import/no-unresolved': 'off',
'node/no-missing-import': 'off',
// This is ESM...
'node/no-unsupported-features/es-syntax': 'off',
'node/no-unpublished-import': 'off', // common-tags is totally published
},
};
const baseTSModulesConfig = {
...tsBase,
plugins: [tsBase.plugins, moduleImports.plugins, '@typescript-eslint'].flat(),
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
rules: {
...tsBase.rules,
...moduleImports.rules,
// much concise
'@typescript-eslint/prefer-optional-chain': 'error',
...baseRulesAppliedLast,
},
};
const cjs = [
{
...baseConfig,
files: ['**/*.js', '**/*.cjs'],
},
{
...baseModulesConfig,
files: ['**/*.mjs'],
},
];
const mjs = [
{
...baseConfig,
files: ['**/*.cjs'],
},
{
...baseModulesConfig,
files: ['**/*.js', '**/*.mjs'],
},
];
const mts = [
{
...baseTSModulesConfig,
files: ['**/*.ts'],
},
];
module.exports = {
baseConfig,
baseModulesConfig,
baseTSModulesConfig,
nodeCJS: [...cjs],
nodeESM: [...mjs],
nodeMTS: [...mts],
};