Skip to content

Commit 3d79333

Browse files
committed
New: prefer-global/* rules
1 parent 217411d commit 3d79333

19 files changed

+821
-0
lines changed

.eslintrc.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,16 @@ module.exports = {
3131
],
3232
},
3333
},
34+
{
35+
files: ["**/rules/prefer-global/*.js"],
36+
rules: {
37+
"@mysticatea/eslint-plugin/require-meta-docs-url": [
38+
"error",
39+
{
40+
pattern: `https://github.com/mysticatea/eslint-plugin-node/blob/v${version}/docs/rules/prefer-global/{{name}}.md`,
41+
},
42+
],
43+
},
44+
},
3445
],
3546
}

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ $ npm install --save-dev eslint eslint-plugin-node
7676
| Rule ID | Description | |
7777
|:--------|:------------|:--:|
7878
| [node/exports-style](./docs/rules/exports-style.md) | enforce either `module.exports` or `exports` | |
79+
| [node/prefer-global/buffer](./docs/rules/prefer-global/buffer.md) | enforce either `Buffer` or `require("buffer").Buffer` | |
80+
| [node/prefer-global/console](./docs/rules/prefer-global/console.md) | enforce either `console` or `require("console")` | |
81+
| [node/prefer-global/process](./docs/rules/prefer-global/process.md) | enforce either `process` or `require("process")` | |
82+
| [node/prefer-global/url-search-params](./docs/rules/prefer-global/url-search-params.md) | enforce either `URLSearchParams` or `require("url").URLSearchParams` | |
83+
| [node/prefer-global/url](./docs/rules/prefer-global/url.md) | enforce either `URL` or `require("url").URL` | |
7984

8085
<!--RULES_TABLE_END-->
8186

docs/rules/prefer-global/buffer.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# enforce either `Buffer` or `require("buffer").Buffer` (prefer-global/buffer)
2+
3+
The `Buffer` class of `buffer` module is defined as a global variable.
4+
5+
```js
6+
console.log(Buffer === require("buffer").Buffer) //→ true
7+
```
8+
9+
It will be readable if we use either `Buffer` consistently.
10+
11+
## Rule Details
12+
13+
This rule enforces which `Buffer` we should use.
14+
15+
### Options
16+
17+
This rule has a string option.
18+
19+
```json
20+
{
21+
"node/prefer-global/buffer": ["error", "always" | "never"]
22+
}
23+
```
24+
25+
- `"always"` (default) ... enforces to use the global variable `Buffer` rather than `require("buffer").Buffer`.
26+
- `"never"` ... enforces to use `require("buffer").Buffer` rather than the global variable `Buffer`.
27+
28+
#### always
29+
30+
Examples of :-1: **incorrect** code for this rule:
31+
32+
```js
33+
/*eslint node/prefer-global/buffer: [error]*/
34+
35+
const { Buffer } = require("buffer")
36+
const b = Buffer.alloc(16)
37+
```
38+
39+
Examples of :+1: **correct** code for this rule:
40+
41+
```js
42+
/*eslint node/prefer-global/buffer: [error]*/
43+
44+
const b = Buffer.alloc(16)
45+
```
46+
47+
#### never
48+
49+
Examples of :-1: **incorrect** code for the `"never"` option:
50+
51+
```js
52+
/*eslint node/prefer-global/buffer: [error, never]*/
53+
54+
const b = Buffer.alloc(16)
55+
```
56+
57+
Examples of :+1: **correct** code for the `"never"` option:
58+
59+
```js
60+
/*eslint node/prefer-global/buffer: [error, never]*/
61+
62+
const { Buffer } = require("buffer")
63+
const b = Buffer.alloc(16)
64+
```

docs/rules/prefer-global/console.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# enforce either `console` or `require("console")` (prefer-global/console)
2+
3+
The `console` module is defined as a global variable.
4+
5+
```js
6+
console.log(console === require("console")) //→ true
7+
```
8+
9+
It will be readable if we use either `console` consistently.
10+
11+
## Rule Details
12+
13+
This rule enforces which `console` we should use.
14+
15+
### Options
16+
17+
This rule has a string option.
18+
19+
```json
20+
{
21+
"node/prefer-global/console": ["error", "always" | "never"]
22+
}
23+
```
24+
25+
- `"always"` (default) ... enforces to use the global variable `console` rather than `require("console")`.
26+
- `"never"` ... enforces to use `require("console")` rather than the global variable `console`.
27+
28+
#### always
29+
30+
Examples of :-1: **incorrect** code for this rule:
31+
32+
```js
33+
/*eslint node/prefer-global/console: [error]*/
34+
35+
const console = require("console")
36+
console.log("hello")
37+
```
38+
39+
Examples of :+1: **correct** code for this rule:
40+
41+
```js
42+
/*eslint node/prefer-global/console: [error]*/
43+
44+
console.log("hello")
45+
```
46+
47+
#### never
48+
49+
Examples of :-1: **incorrect** code for the `"never"` option:
50+
51+
```js
52+
/*eslint node/prefer-global/console: [error, never]*/
53+
54+
console.log("hello")
55+
```
56+
57+
Examples of :+1: **correct** code for the `"never"` option:
58+
59+
```js
60+
/*eslint node/prefer-global/console: [error, never]*/
61+
62+
const console = require("console")
63+
console.log("hello")
64+
```

docs/rules/prefer-global/process.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# enforce either `process` or `require("process")` (prefer-global/process)
2+
3+
The `process` module is defined as a global variable.
4+
5+
```js
6+
process.log(process === require("process")) //→ true
7+
```
8+
9+
It will be readable if we use either `process` consistently.
10+
11+
## Rule Details
12+
13+
This rule enforces which `process` we should use.
14+
15+
### Options
16+
17+
This rule has a string option.
18+
19+
```json
20+
{
21+
"node/prefer-global/process": ["error", "always" | "never"]
22+
}
23+
```
24+
25+
- `"always"` (default) ... enforces to use the global variable `process` rather than `require("process")`.
26+
- `"never"` ... enforces to use `require("process")` rather than the global variable `process`.
27+
28+
#### always
29+
30+
Examples of :-1: **incorrect** code for this rule:
31+
32+
```js
33+
/*eslint node/prefer-global/process: [error]*/
34+
35+
const process = require("process")
36+
process.exit(0)
37+
```
38+
39+
Examples of :+1: **correct** code for this rule:
40+
41+
```js
42+
/*eslint node/prefer-global/process: [error]*/
43+
44+
process.exit(0)
45+
```
46+
47+
#### never
48+
49+
Examples of :-1: **incorrect** code for the `"never"` option:
50+
51+
```js
52+
/*eslint node/prefer-global/process: [error, never]*/
53+
54+
process.exit(0)
55+
```
56+
57+
Examples of :+1: **correct** code for the `"never"` option:
58+
59+
```js
60+
/*eslint node/prefer-global/process: [error, never]*/
61+
62+
const process = require("process")
63+
process.exit(0)
64+
```
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# enforce either `URLSearchParams` or `require("url").URLSearchParams` (prefer-global/url)
2+
3+
The `URLSearchParams` class of `url` module is defined as a global variable.
4+
5+
```js
6+
console.log(URLSearchParams === require("url").URLSearchParams) //→ true
7+
```
8+
9+
It will be readable if we use either `URLSearchParams` consistently.
10+
11+
## Rule Details
12+
13+
This rule enforces which `URLSearchParams` we should use.
14+
15+
### Options
16+
17+
This rule has a string option.
18+
19+
```json
20+
{
21+
"node/prefer-global/url": ["error", "always" | "never"]
22+
}
23+
```
24+
25+
- `"always"` (default) ... enforces to use the global variable `URLSearchParams` rather than `require("url").URLSearchParams`.
26+
- `"never"` ... enforces to use `require("url").URLSearchParams` rather than the global variable `URLSearchParams`.
27+
28+
#### always
29+
30+
Examples of :-1: **incorrect** code for this rule:
31+
32+
```js
33+
/*eslint node/prefer-global/url: [error]*/
34+
35+
const { URLSearchParams } = require("url")
36+
const u = new URLSearchParams(s)
37+
```
38+
39+
Examples of :+1: **correct** code for this rule:
40+
41+
```js
42+
/*eslint node/prefer-global/url: [error]*/
43+
44+
const u = new URLSearchParams(s)
45+
```
46+
47+
#### never
48+
49+
Examples of :-1: **incorrect** code for the `"never"` option:
50+
51+
```js
52+
/*eslint node/prefer-global/url: [error, never]*/
53+
54+
const u = new URLSearchParams(s)
55+
```
56+
57+
Examples of :+1: **correct** code for the `"never"` option:
58+
59+
```js
60+
/*eslint node/prefer-global/url: [error, never]*/
61+
62+
const { URLSearchParams } = require("url")
63+
const u = new URLSearchParams(s)
64+
```

docs/rules/prefer-global/url.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# enforce either `URL` or `require("url").URL` (prefer-global/url)
2+
3+
The `URL` class of `url` module is defined as a global variable.
4+
5+
```js
6+
console.log(URL === require("url").URL) //→ true
7+
```
8+
9+
It will be readable if we use either `URL` consistently.
10+
11+
## Rule Details
12+
13+
This rule enforces which `URL` we should use.
14+
15+
### Options
16+
17+
This rule has a string option.
18+
19+
```json
20+
{
21+
"node/prefer-global/url": ["error", "always" | "never"]
22+
}
23+
```
24+
25+
- `"always"` (default) ... enforces to use the global variable `URL` rather than `require("url").URL`.
26+
- `"never"` ... enforces to use `require("url").URL` rather than the global variable `URL`.
27+
28+
#### always
29+
30+
Examples of :-1: **incorrect** code for this rule:
31+
32+
```js
33+
/*eslint node/prefer-global/url: [error]*/
34+
35+
const { URL } = require("url")
36+
const u = new URL(s)
37+
```
38+
39+
Examples of :+1: **correct** code for this rule:
40+
41+
```js
42+
/*eslint node/prefer-global/url: [error]*/
43+
44+
const u = new URL(s)
45+
```
46+
47+
#### never
48+
49+
Examples of :-1: **incorrect** code for the `"never"` option:
50+
51+
```js
52+
/*eslint node/prefer-global/url: [error, never]*/
53+
54+
const u = new URL(s)
55+
```
56+
57+
Examples of :+1: **correct** code for the `"never"` option:
58+
59+
```js
60+
/*eslint node/prefer-global/url: [error, never]*/
61+
62+
const { URL } = require("url")
63+
const u = new URL(s)
64+
```

lib/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ module.exports = {
1818
"no-unsupported-features/es-builtins": require("./rules/no-unsupported-features/es-builtins"),
1919
"no-unsupported-features/es-syntax": require("./rules/no-unsupported-features/es-syntax"),
2020
"no-unsupported-features/node-builtins": require("./rules/no-unsupported-features/node-builtins"),
21+
"prefer-global/buffer": require("./rules/prefer-global/buffer"),
22+
"prefer-global/console": require("./rules/prefer-global/console"),
23+
"prefer-global/process": require("./rules/prefer-global/process"),
24+
"prefer-global/url-search-params": require("./rules/prefer-global/url-search-params"),
25+
"prefer-global/url": require("./rules/prefer-global/url"),
2126
"process-exit-as-throw": require("./rules/process-exit-as-throw"),
2227
shebang: require("./rules/shebang"),
2328

0 commit comments

Comments
 (0)