Skip to content

Commit 8f25248

Browse files
committed
Chore: refactoring for prefer-global/*
1 parent 4dd9baf commit 8f25248

File tree

7 files changed

+139
-87
lines changed

7 files changed

+139
-87
lines changed

lib/rules/prefer-global/buffer.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,18 @@
55
"use strict"
66

77
const { READ } = require("eslint-utils")
8-
const defineHandlers = require("../../util/define-prefer-global-handlers")
8+
const checkForPreferGlobal = require("../../util/check-prefer-global")
9+
10+
const trackMap = {
11+
globals: {
12+
Buffer: { [READ]: true },
13+
},
14+
modules: {
15+
buffer: {
16+
Buffer: { [READ]: true },
17+
},
18+
},
19+
}
920

1021
module.exports = {
1122
meta: {
@@ -28,15 +39,10 @@ module.exports = {
2839
},
2940

3041
create(context) {
31-
return defineHandlers(context, {
32-
globals: {
33-
Buffer: { [READ]: true },
34-
},
35-
modules: {
36-
buffer: {
37-
Buffer: { [READ]: true },
38-
},
42+
return {
43+
"Program:exit"() {
44+
checkForPreferGlobal(context, trackMap)
3945
},
40-
})
46+
}
4147
},
4248
}

lib/rules/prefer-global/console.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,16 @@
55
"use strict"
66

77
const { READ } = require("eslint-utils")
8-
const defineHandlers = require("../../util/define-prefer-global-handlers")
8+
const checkForPreferGlobal = require("../../util/check-prefer-global")
9+
10+
const trackMap = {
11+
globals: {
12+
console: { [READ]: true },
13+
},
14+
modules: {
15+
console: { [READ]: true },
16+
},
17+
}
918

1019
module.exports = {
1120
meta: {
@@ -27,13 +36,10 @@ module.exports = {
2736
},
2837

2938
create(context) {
30-
return defineHandlers(context, {
31-
globals: {
32-
console: { [READ]: true },
33-
},
34-
modules: {
35-
console: { [READ]: true },
39+
return {
40+
"Program:exit"() {
41+
checkForPreferGlobal(context, trackMap)
3642
},
37-
})
43+
}
3844
},
3945
}

lib/rules/prefer-global/process.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,16 @@
55
"use strict"
66

77
const { READ } = require("eslint-utils")
8-
const defineHandlers = require("../../util/define-prefer-global-handlers")
8+
const checkForPreferGlobal = require("../../util/check-prefer-global")
9+
10+
const trackMap = {
11+
globals: {
12+
process: { [READ]: true },
13+
},
14+
modules: {
15+
process: { [READ]: true },
16+
},
17+
}
918

1019
module.exports = {
1120
meta: {
@@ -27,13 +36,10 @@ module.exports = {
2736
},
2837

2938
create(context) {
30-
return defineHandlers(context, {
31-
globals: {
32-
process: { [READ]: true },
33-
},
34-
modules: {
35-
process: { [READ]: true },
39+
return {
40+
"Program:exit"() {
41+
checkForPreferGlobal(context, trackMap)
3642
},
37-
})
43+
}
3844
},
3945
}

lib/rules/prefer-global/url-search-params.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,18 @@
55
"use strict"
66

77
const { READ } = require("eslint-utils")
8-
const defineHandlers = require("../../util/define-prefer-global-handlers")
8+
const checkForPreferGlobal = require("../../util/check-prefer-global")
9+
10+
const trackMap = {
11+
globals: {
12+
URLSearchParams: { [READ]: true },
13+
},
14+
modules: {
15+
url: {
16+
URLSearchParams: { [READ]: true },
17+
},
18+
},
19+
}
920

1021
module.exports = {
1122
meta: {
@@ -28,15 +39,10 @@ module.exports = {
2839
},
2940

3041
create(context) {
31-
return defineHandlers(context, {
32-
globals: {
33-
URLSearchParams: { [READ]: true },
34-
},
35-
modules: {
36-
url: {
37-
URLSearchParams: { [READ]: true },
38-
},
42+
return {
43+
"Program:exit"() {
44+
checkForPreferGlobal(context, trackMap)
3945
},
40-
})
46+
}
4147
},
4248
}

lib/rules/prefer-global/url.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,18 @@
55
"use strict"
66

77
const { READ } = require("eslint-utils")
8-
const defineHandlers = require("../../util/define-prefer-global-handlers")
8+
const checkForPreferGlobal = require("../../util/check-prefer-global")
9+
10+
const trackMap = {
11+
globals: {
12+
URL: { [READ]: true },
13+
},
14+
modules: {
15+
url: {
16+
URL: { [READ]: true },
17+
},
18+
},
19+
}
920

1021
module.exports = {
1122
meta: {
@@ -27,15 +38,10 @@ module.exports = {
2738
},
2839

2940
create(context) {
30-
return defineHandlers(context, {
31-
globals: {
32-
URL: { [READ]: true },
33-
},
34-
modules: {
35-
url: {
36-
URL: { [READ]: true },
37-
},
41+
return {
42+
"Program:exit"() {
43+
checkForPreferGlobal(context, trackMap)
3844
},
39-
})
45+
}
4046
},
4147
}

lib/util/check-prefer-global.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/**
2+
* @author Toru Nagashima
3+
* See LICENSE file in root directory for full license.
4+
*/
5+
"use strict"
6+
7+
const { ReferenceTracker } = require("eslint-utils")
8+
9+
/**
10+
* Verifier for `prefer-global/*` rules.
11+
*/
12+
class Verifier {
13+
/**
14+
* Initialize this instance.
15+
* @param {RuleContext} context The rule context to report.
16+
* @param {{modules:object,globals:object}} trackMap The track map.
17+
*/
18+
constructor(context, trackMap) {
19+
this.context = context
20+
this.trackMap = trackMap
21+
this.verify =
22+
context.options[0] === "never"
23+
? this.verifyToPreferModules
24+
: this.verifyToPreferGlobals
25+
}
26+
27+
/**
28+
* Verify the code to suggest the use of globals.
29+
* @returns {void}
30+
*/
31+
verifyToPreferGlobals() {
32+
const { context, trackMap } = this
33+
const tracker = new ReferenceTracker(context.getScope(), {
34+
mode: "legacy",
35+
})
36+
37+
for (const { node } of [
38+
...tracker.iterateCjsReferences(trackMap.modules),
39+
...tracker.iterateEsmReferences(trackMap.modules),
40+
]) {
41+
context.report({ node, messageId: "preferGlobal" })
42+
}
43+
}
44+
45+
/**
46+
* Verify the code to suggest the use of modules.
47+
* @returns {void}
48+
*/
49+
verifyToPreferModules() {
50+
const { context, trackMap } = this
51+
const tracker = new ReferenceTracker(context.getScope())
52+
53+
for (const { node } of tracker.iterateGlobalReferences(
54+
trackMap.globals
55+
)) {
56+
context.report({ node, messageId: "preferModule" })
57+
}
58+
}
59+
}
60+
61+
module.exports = function checkForPreferGlobal(context, trackMap) {
62+
new Verifier(context, trackMap).verify()
63+
}

lib/util/define-prefer-global-handlers.js

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)