Skip to content

Commit ee0c071

Browse files
committed
refactor: eslint v8 compat
it makes easier for us to drop eslint v8.
1 parent 308c80c commit ee0c071

18 files changed

+90
-65
lines changed

lib/rules/callback-return.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* See LICENSE file in root directory for full license.
44
*/
55
"use strict"
6+
const { getSourceCode } = require("../util/eslint-compat")
67

78
/** @type {import('eslint').Rule.RuleModule} */
89
module.exports = {
@@ -27,7 +28,7 @@ module.exports = {
2728

2829
create(context) {
2930
const callbacks = context.options[0] || ["callback", "cb", "next"]
30-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
31+
const sourceCode = getSourceCode(context)
3132

3233
/**
3334
* Find the closest parent matching a list of types.

lib/rules/exports-style.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"use strict"
66

77
const { hasParentNode } = require("../util/has-parent-node.js")
8+
const { getSourceCode, getScope } = require("../util/eslint-compat")
89

910
/*istanbul ignore next */
1011
/**
@@ -302,7 +303,7 @@ module.exports = {
302303
const batchAssignAllowed = Boolean(
303304
context.options[1] != null && context.options[1].allowBatchAssign
304305
)
305-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
306+
const sourceCode = getSourceCode(context)
306307

307308
/**
308309
* Gets the location info of reports.
@@ -426,8 +427,8 @@ module.exports = {
426427
}
427428

428429
return {
429-
"Program:exit"(node) {
430-
const scope = sourceCode.getScope?.(node) ?? context.getScope() //TODO: remove context.getScope() when dropping support for ESLint < v9
430+
"Program:exit"() {
431+
const scope = getScope(context)
431432

432433
switch (mode) {
433434
case "module.exports":

lib/rules/global-require.js

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
"use strict"
66

7+
const { getScope, getAncestors } = require("../util/eslint-compat")
8+
79
const ACCEPTABLE_PARENTS = [
810
"AssignmentExpression",
911
"VariableDeclarator",
@@ -59,26 +61,18 @@ module.exports = {
5961
},
6062

6163
create(context) {
62-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
63-
6464
return {
6565
CallExpression(node) {
66-
const currentScope =
67-
sourceCode.getScope?.(node) ?? context.getScope() //TODO: remove context.getScope() when dropping support for ESLint < v9
66+
const currentScope = getScope(context, node)
6867

6968
if (
7069
node.callee.type === "Identifier" &&
7170
node.callee.name === "require" &&
7271
!isShadowed(currentScope, node.callee)
7372
) {
74-
const isGoodRequire = (
75-
sourceCode.getAncestors?.(node) ??
76-
context.getAncestors()
77-
) // TODO: remove context.getAncestors() when dropping support for ESLint < v9
78-
.every(
79-
parent =>
80-
ACCEPTABLE_PARENTS.indexOf(parent.type) > -1
81-
)
73+
const isGoodRequire = getAncestors(context, node).every(
74+
parent => ACCEPTABLE_PARENTS.indexOf(parent.type) > -1
75+
)
8276

8377
if (!isGoodRequire) {
8478
context.report({ node, messageId: "unexpected" })

lib/rules/handle-callback-err.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
"use strict"
66

7+
const { getScope } = require("../util/eslint-compat")
8+
79
/** @type {import('eslint').Rule.RuleModule} */
810
module.exports = {
911
meta: {
@@ -25,7 +27,6 @@ module.exports = {
2527
},
2628

2729
create(context) {
28-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
2930
const errorArgument = context.options[0] || "err"
3031

3132
/**
@@ -71,7 +72,7 @@ module.exports = {
7172
* @returns {void}
7273
*/
7374
function checkForError(node) {
74-
const scope = sourceCode.getScope?.(node) ?? context.getScope() //TODO: remove context.getScope() when dropping support for ESLint < v9
75+
const scope = getScope(context, node)
7576
const parameters = getParameters(scope)
7677
const firstParameter = parameters[0]
7778

lib/rules/hashbang.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const getConvertPath = require("../util/get-convert-path")
1111
const { getPackageJson } = require("../util/get-package-json")
1212
const getNpmignore = require("../util/get-npmignore")
1313
const { isBinFile } = require("../util/is-bin-file")
14+
const { getSourceCode } = require("../util/eslint-compat")
1415

1516
const ENV_SHEBANG = "#!/usr/bin/env"
1617
const NODE_SHEBANG = `${ENV_SHEBANG} {{executableName}}\n`
@@ -119,7 +120,7 @@ module.exports = {
119120
},
120121
},
121122
create(context) {
122-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
123+
const sourceCode = getSourceCode(context)
123124
const filePath = context.filename ?? context.getFilename()
124125
if (filePath === "<input>") {
125126
return {}

lib/rules/no-deprecated-api.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const getConfiguredNodeVersion = require("../util/get-configured-node-version")
1515
const getSemverRange = require("../util/get-semver-range")
1616
const extendTrackmapWithNodePrefix = require("../util/extend-trackmap-with-node-prefix")
1717
const unprefixNodeColon = require("../util/unprefix-node-colon")
18+
const { getScope } = require("../util/eslint-compat")
1819

1920
/** @typedef {import('../unsupported-features/types.js').DeprecatedInfo} DeprecatedInfo */
2021
/**
@@ -820,10 +821,9 @@ module.exports = {
820821
})
821822
}
822823

823-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
824824
return {
825-
"Program:exit"(node) {
826-
const scope = sourceCode.getScope?.(node) ?? context.getScope() //TODO: remove context.getScope() when dropping support for ESLint < v9
825+
"Program:exit"() {
826+
const scope = getScope(context)
827827

828828
const tracker = new ReferenceTracker(scope, {
829829
mode: "legacy",

lib/rules/no-exports-assign.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"use strict"
66

77
const { findVariable } = require("@eslint-community/eslint-utils")
8+
const { getScope } = require("../util/eslint-compat")
89

910
/**
1011
* @param {import('estree').Node} node
@@ -61,11 +62,9 @@ module.exports = {
6162
type: "problem",
6263
},
6364
create(context) {
64-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
65-
6665
return {
6766
AssignmentExpression(node) {
68-
const scope = sourceCode.getScope?.(node) ?? context.getScope() //TODO: remove context.getScope() when dropping support for ESLint < v9
67+
const scope = getScope(context)
6968

7069
if (
7170
!isExports(node.left, scope) ||

lib/rules/no-path-concat.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const {
1111
getStringIfConstant,
1212
} = require("@eslint-community/eslint-utils")
1313
const { hasParentNode } = require("../util/has-parent-node.js")
14+
const { getSourceCode } = require("../util/eslint-compat")
1415

1516
/**
1617
* Get the first char of the specified template element.
@@ -195,7 +196,7 @@ module.exports = {
195196
create(context) {
196197
return {
197198
"Program:exit"(programNode) {
198-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
199+
const sourceCode = getSourceCode(context)
199200
const globalScope =
200201
sourceCode.getScope?.(programNode) ?? context.getScope()
201202
const tracker = new ReferenceTracker(globalScope)

lib/rules/no-unsupported-features/es-syntax.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const rangeSubset = require("semver/ranges/subset")
1010
const getConfiguredNodeVersion = require("../../util/get-configured-node-version")
1111
const getSemverRange = require("../../util/get-semver-range")
1212
const mergeVisitorsInPlace = require("../../util/merge-visitors-in-place")
13+
const { getScope } = require("../../util/eslint-compat")
1314
/** @type {Record<string, ESSyntax>} */
1415
const features = require("./es-syntax.json")
1516

@@ -113,8 +114,7 @@ function normalizeScope(initialScope, node) {
113114
* @returns {boolean}
114115
*/
115116
function isStrict(context, node) {
116-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
117-
const scope = sourceCode.getScope?.(node) ?? context.getScope() //TODO: remove context.getScope() when dropping support for ESLint < v9
117+
const scope = getScope(context)
118118
return normalizeScope(scope, node).isStrict
119119
}
120120

lib/rules/prefer-promises/dns.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const {
99
CONSTRUCT,
1010
ReferenceTracker,
1111
} = require("@eslint-community/eslint-utils")
12+
const { getScope } = require("../../util/eslint-compat")
1213

1314
/** @type {import('@eslint-community/eslint-utils').TraceMap<boolean>} */
1415
const dns = {
@@ -57,9 +58,8 @@ module.exports = {
5758

5859
create(context) {
5960
return {
60-
"Program:exit"(node) {
61-
const sourceCode = context.sourceCode ?? context.getSourceCode() // TODO: just use context.sourceCode when dropping eslint < v9
62-
const scope = sourceCode.getScope?.(node) ?? context.getScope() //TODO: remove context.getScope() when dropping support for ESLint < v9
61+
"Program:exit"() {
62+
const scope = getScope(context)
6363
const tracker = new ReferenceTracker(scope, { mode: "legacy" })
6464
const references = [
6565
...tracker.iterateCjsReferences(traceMap),

0 commit comments

Comments
 (0)