/
+node.js
111 lines (107 loc) · 3.8 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
100
101
102
103
104
105
106
107
108
109
110
111
/**
* @author Toru Nagashima
* See LICENSE file in root directory for full license.
*/
"use strict"
module.exports = {
parserOptions: {
ecmaFeatures: { globalReturn: true },
ecmaVersion: 2020,
sourceType: "script",
},
globals: {
// ECMAScript (experimental)
globalThis: "readonly",
// ECMA-404
Intl: "readonly",
// Web Standard
TextDecoder: "readonly",
TextEncoder: "readonly",
URL: "readonly",
URLSearchParams: "readonly",
WebAssembly: "readonly",
clearInterval: "readonly",
clearTimeout: "readonly",
console: "readonly",
queueMicrotask: "readonly",
setInterval: "readonly",
setTimeout: "readonly",
// Node.js
Buffer: "readonly",
GLOBAL: "readonly",
clearImmediate: "readonly",
global: "readonly",
process: "readonly",
root: "readonly",
setImmediate: "readonly",
// CommonJS
__dirname: "readonly",
__filename: "readonly",
exports: "writable",
module: "readonly",
require: "readonly",
},
rules: {
"@mysticatea/node/callback-return": "error",
"@mysticatea/node/exports-style": ["error", "module.exports"],
"@mysticatea/node/file-extension-in-import": [
"error",
"always",
{ ".js": "never", ".ts": "never", ".tsx": "never" },
],
"@mysticatea/node/global-require": "error",
"@mysticatea/node/handle-callback-err": "error",
"@mysticatea/node/no-callback-literal": "off",
"@mysticatea/node/no-deprecated-api": "error",
"@mysticatea/node/no-exports-assign": "error",
"@mysticatea/node/no-extraneous-import": "error",
"@mysticatea/node/no-extraneous-require": "error",
"@mysticatea/node/no-missing-import": "error",
"@mysticatea/node/no-missing-require": "error",
"@mysticatea/node/no-mixed-requires": "error",
"@mysticatea/node/no-new-require": "error",
"@mysticatea/node/no-path-concat": "error",
"@mysticatea/node/no-process-env": "error",
"@mysticatea/node/no-process-exit": "error",
"@mysticatea/node/no-restricted-import": "error",
"@mysticatea/node/no-restricted-require": "error",
"@mysticatea/node/no-sync": "error",
"@mysticatea/node/no-unpublished-bin": "error",
"@mysticatea/node/no-unpublished-import": "error",
"@mysticatea/node/no-unpublished-require": "error",
"@mysticatea/node/no-unsupported-features/es-builtins": "error",
"@mysticatea/node/no-unsupported-features/es-syntax": "error",
"@mysticatea/node/no-unsupported-features/node-builtins": "error",
"@mysticatea/node/prefer-global/buffer": "error",
"@mysticatea/node/prefer-global/console": "error",
"@mysticatea/node/prefer-global/process": "error",
"@mysticatea/node/prefer-global/text-decoder": "off",
"@mysticatea/node/prefer-global/text-encoder": "off",
"@mysticatea/node/prefer-global/url-search-params": "off",
"@mysticatea/node/prefer-global/url": "off",
"@mysticatea/node/prefer-promises/dns": "off",
"@mysticatea/node/prefer-promises/fs": "off",
"@mysticatea/node/process-exit-as-throw": "error",
"@mysticatea/node/shebang": "error",
},
settings: {
node: {
tryExtensions: [
".vue",
".tsx",
".ts",
".mjs",
".cjs",
".js",
".json",
".node",
],
},
},
overrides: [
{
files: ["*.mjs", "*.ts", "*.tsx", "*.vue"],
extends: [require.resolve("./+modules.js")],
},
],
}