Skip to content

Commit 7b7b4ce

Browse files
authored
Improve compatibility with ESLint v9 (#2331)
1 parent 022afb5 commit 7b7b4ce

File tree

62 files changed

+290
-165
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+290
-165
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default {
2+
/* empty */
3+
}

docs/.vitepress/config.mts

+4
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ export default async () => {
145145
plugins: [vitePluginRequireResolve(), viteCommonjs()],
146146
resolve: {
147147
alias: {
148+
'eslint/use-at-your-own-risk': path.join(
149+
dirname,
150+
'./build-system/shim/eslint/use-at-your-own-risk.mjs'
151+
),
148152
eslint: path.join(dirname, './build-system/shim/eslint.mjs'),
149153
assert: path.join(dirname, './build-system/shim/assert.mjs'),
150154
path: path.join(dirname, './build-system/shim/path.mjs'),

eslint.config.js

+14
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,20 @@ module.exports = [
160160
'dot-notation': 'error',
161161
'arrow-body-style': 'error',
162162

163+
'no-restricted-properties': [
164+
'error',
165+
{
166+
object: 'context',
167+
property: 'parserServices',
168+
message: 'Use sourceCode.parserServices'
169+
},
170+
{
171+
object: 'context',
172+
property: 'getScope',
173+
message: 'Use utils.getScope'
174+
}
175+
],
176+
163177
'unicorn/consistent-function-scoping': [
164178
'error',
165179
{ checkArrowFunctions: false }

lib/rules/block-order.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,10 @@ module.exports = {
106106
function getOrderElement(element) {
107107
return orders.find((o) => o.selector.test(element))
108108
}
109+
const sourceCode = context.getSourceCode()
109110
const documentFragment =
110-
context.parserServices.getDocumentFragment &&
111-
context.parserServices.getDocumentFragment()
111+
sourceCode.parserServices.getDocumentFragment &&
112+
sourceCode.parserServices.getDocumentFragment()
112113

113114
function getTopLevelHTMLElements() {
114115
if (documentFragment) {

lib/rules/block-tag-newline.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,14 @@ module.exports = {
8484
},
8585
/** @param {RuleContext} context */
8686
create(context) {
87+
const sourceCode = context.getSourceCode()
8788
const df =
88-
context.parserServices.getDocumentFragment &&
89-
context.parserServices.getDocumentFragment()
89+
sourceCode.parserServices.getDocumentFragment &&
90+
sourceCode.parserServices.getDocumentFragment()
9091
if (!df) {
9192
return {}
9293
}
9394

94-
const sourceCode = context.getSourceCode()
95-
9695
/**
9796
* @param {VStartTag} startTag
9897
* @param {string} beforeText

lib/rules/comment-directive.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -313,9 +313,10 @@ module.exports = {
313313
const options = context.options[0] || {}
314314
/** @type {boolean} */
315315
const reportUnusedDisableDirectives = options.reportUnusedDisableDirectives
316+
const sourceCode = context.getSourceCode()
316317
const documentFragment =
317-
context.parserServices.getDocumentFragment &&
318-
context.parserServices.getDocumentFragment()
318+
sourceCode.parserServices.getDocumentFragment &&
319+
sourceCode.parserServices.getDocumentFragment()
319320

320321
return {
321322
Program(node) {

lib/rules/component-name-in-template-casing.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,10 @@ module.exports = {
8686
/** @type {string[]} */
8787
const globals = (options.globals || []).map(casing.pascalCase)
8888
const registeredComponentsOnly = options.registeredComponentsOnly !== false
89+
const sourceCode = context.getSourceCode()
8990
const tokens =
90-
context.parserServices.getTemplateBodyTokenStore &&
91-
context.parserServices.getTemplateBodyTokenStore()
91+
sourceCode.parserServices.getTemplateBodyTokenStore &&
92+
sourceCode.parserServices.getTemplateBodyTokenStore()
9293

9394
/** @type { Set<string> } */
9495
const registeredComponents = new Set(globals)

lib/rules/custom-event-name-casing.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,10 @@ module.exports = {
210210
return
211211
}
212212
// const emit = defineEmits()
213-
const variable = findVariable(context.getScope(), emitParam)
213+
const variable = findVariable(
214+
utils.getScope(context, emitParam),
215+
emitParam
216+
)
214217
if (!variable) {
215218
return
216219
}
@@ -251,7 +254,10 @@ module.exports = {
251254
}
252255
const emitParam = emitProperty.value
253256
// `setup(props, {emit})`
254-
const variable = findVariable(context.getScope(), emitParam)
257+
const variable = findVariable(
258+
utils.getScope(context, emitParam),
259+
emitParam
260+
)
255261
if (!variable) {
256262
return
257263
}
@@ -260,7 +266,10 @@ module.exports = {
260266
}
261267
} else {
262268
// `setup(props, context)`
263-
const variable = findVariable(context.getScope(), contextParam)
269+
const variable = findVariable(
270+
utils.getScope(context, contextParam),
271+
contextParam
272+
)
264273
if (!variable) {
265274
return
266275
}

lib/rules/first-attribute-linebreak.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@ module.exports = {
3939
const multiline =
4040
(context.options[0] && context.options[0].multiline) || 'below'
4141

42+
const sourceCode = context.getSourceCode()
4243
const template =
43-
context.parserServices.getTemplateBodyTokenStore &&
44-
context.parserServices.getTemplateBodyTokenStore()
44+
sourceCode.parserServices.getTemplateBodyTokenStore &&
45+
sourceCode.parserServices.getTemplateBodyTokenStore()
4546

4647
/**
4748
* Report attribute

lib/rules/html-closing-bracket-newline.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ module.exports = {
5959
},
6060
context.options[0] || {}
6161
)
62+
const sourceCode = context.getSourceCode()
6263
const template =
63-
context.parserServices.getTemplateBodyTokenStore &&
64-
context.parserServices.getTemplateBodyTokenStore()
64+
sourceCode.parserServices.getTemplateBodyTokenStore &&
65+
sourceCode.parserServices.getTemplateBodyTokenStore()
6566

6667
return utils.defineDocumentVisitor(context, {
6768
/** @param {VStartTag | VEndTag} node */

lib/rules/html-closing-bracket-spacing.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ module.exports = {
8080
create(context) {
8181
const sourceCode = context.getSourceCode()
8282
const tokens =
83-
context.parserServices.getTemplateBodyTokenStore &&
84-
context.parserServices.getTemplateBodyTokenStore()
83+
sourceCode.parserServices.getTemplateBodyTokenStore &&
84+
sourceCode.parserServices.getTemplateBodyTokenStore()
8585
const options = parseOptions(context.options[0], tokens)
8686

8787
return utils.defineDocumentVisitor(context, {

lib/rules/html-indent.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ const utils = require('../utils')
1111
module.exports = {
1212
/** @param {RuleContext} context */
1313
create(context) {
14+
const sourceCode = context.getSourceCode()
1415
const tokenStore =
15-
context.parserServices.getTemplateBodyTokenStore &&
16-
context.parserServices.getTemplateBodyTokenStore()
16+
sourceCode.parserServices.getTemplateBodyTokenStore &&
17+
sourceCode.parserServices.getTemplateBodyTokenStore()
1718
const visitor = indentCommon.defineVisitor(context, tokenStore, {
1819
baseIndent: 1
1920
})

lib/rules/html-self-closing.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ module.exports = {
159159
},
160160
fix(fixer) {
161161
const tokens =
162-
context.parserServices.getTemplateBodyTokenStore()
162+
sourceCode.parserServices.getTemplateBodyTokenStore()
163163
const close = tokens.getLastToken(node.startTag)
164164
if (close.type !== 'HTMLTagClose') {
165165
return null
@@ -183,7 +183,7 @@ module.exports = {
183183
},
184184
fix(fixer) {
185185
const tokens =
186-
context.parserServices.getTemplateBodyTokenStore()
186+
sourceCode.parserServices.getTemplateBodyTokenStore()
187187
const close = tokens.getLastToken(node.startTag)
188188
if (close.type !== 'HTMLSelfClosingTagClose') {
189189
return null

lib/rules/max-attributes-per-line.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ module.exports = {
124124
const multilineMaximum = configuration.multiline
125125
const singlelinemMaximum = configuration.singleline
126126
const template =
127-
context.parserServices.getTemplateBodyTokenStore &&
128-
context.parserServices.getTemplateBodyTokenStore()
127+
sourceCode.parserServices.getTemplateBodyTokenStore &&
128+
sourceCode.parserServices.getTemplateBodyTokenStore()
129129

130130
return utils.defineTemplateBodyVisitor(context, {
131131
VStartTag(node) {

lib/rules/max-len.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,8 @@ module.exports = {
307307
const scriptTokens = sourceCode.ast.tokens
308308
const scriptComments = sourceCode.getAllComments()
309309

310-
if (context.parserServices.getTemplateBodyTokenStore && templateBody) {
311-
const tokenStore = context.parserServices.getTemplateBodyTokenStore()
310+
if (sourceCode.parserServices.getTemplateBodyTokenStore && templateBody) {
311+
const tokenStore = sourceCode.parserServices.getTemplateBodyTokenStore()
312312

313313
const templateTokens = tokenStore.getTokens(templateBody, {
314314
includeComments: true

lib/rules/max-lines-per-block.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,10 @@ module.exports = {
6565
}
6666

6767
const code = context.getSourceCode()
68+
const sourceCode = context.getSourceCode()
6869
const documentFragment =
69-
context.parserServices.getDocumentFragment &&
70-
context.parserServices.getDocumentFragment()
70+
sourceCode.parserServices.getDocumentFragment &&
71+
sourceCode.parserServices.getDocumentFragment()
7172

7273
function getTopLevelHTMLElements() {
7374
if (documentFragment) {

lib/rules/multiline-html-element-content-newline.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,10 @@ module.exports = {
9898
const ignores = options.ignores
9999
const ignoreWhenEmpty = options.ignoreWhenEmpty
100100
const allowEmptyLines = options.allowEmptyLines
101-
const template =
102-
context.parserServices.getTemplateBodyTokenStore &&
103-
context.parserServices.getTemplateBodyTokenStore()
104101
const sourceCode = context.getSourceCode()
102+
const template =
103+
sourceCode.parserServices.getTemplateBodyTokenStore &&
104+
sourceCode.parserServices.getTemplateBodyTokenStore()
105105

106106
/** @type {VElement | null} */
107107
let inIgnoreElement = null

lib/rules/mustache-interpolation-spacing.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ module.exports = {
3030
/** @param {RuleContext} context */
3131
create(context) {
3232
const options = context.options[0] || 'always'
33+
const sourceCode = context.getSourceCode()
3334
const template =
34-
context.parserServices.getTemplateBodyTokenStore &&
35-
context.parserServices.getTemplateBodyTokenStore()
35+
sourceCode.parserServices.getTemplateBodyTokenStore &&
36+
sourceCode.parserServices.getTemplateBodyTokenStore()
3637

3738
return utils.defineTemplateBodyVisitor(context, {
3839
/** @param {VExpressionContainer} node */

lib/rules/next-tick-style.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ function getVueNextTickCallExpression(identifier, context) {
4343
identifier.parent.type === 'CallExpression' &&
4444
identifier.parent.callee === identifier
4545
) {
46-
const variable = findVariable(context.getScope(), identifier)
46+
const variable = findVariable(
47+
utils.getScope(context, identifier),
48+
identifier
49+
)
4750

4851
if (variable != null && variable.defs.length === 1) {
4952
const def = variable.defs[0]

lib/rules/no-async-in-computed-properties.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,9 @@ module.exports = {
260260

261261
return utils.compositingVisitors(
262262
{
263-
Program() {
264-
const tracker = new ReferenceTracker(context.getScope())
263+
/** @param {Program} program */
264+
Program(program) {
265+
const tracker = new ReferenceTracker(utils.getScope(context, program))
265266
const traceMap = utils.createCompositionApiTraceMap({
266267
[ReferenceTracker.ESM]: true,
267268
computed: {

lib/rules/no-child-content.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ module.exports = {
123123
if (elementNode.endTag === null) {
124124
return
125125
}
126-
127-
const tokenStore = context.parserServices.getTemplateBodyTokenStore()
126+
const sourceCode = context.getSourceCode()
127+
const tokenStore = sourceCode.parserServices.getTemplateBodyTokenStore()
128128
const elementComments = tokenStore.getTokensBetween(
129129
elementNode.startTag,
130130
elementNode.endTag,

lib/rules/no-dupe-keys.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ module.exports = {
118118
for (const prop of props) {
119119
if (!prop.propName) continue
120120

121-
const variable = findVariable(context.getScope(), prop.propName)
121+
const variable = findVariable(
122+
utils.getScope(context, node),
123+
prop.propName
124+
)
122125
if (!variable || variable.defs.length === 0) continue
123126

124127
if (
@@ -149,7 +152,7 @@ module.exports = {
149152
*/
150153
function extractReferences(node) {
151154
if (node.type === 'Identifier') {
152-
const variable = findVariable(context.getScope(), node)
155+
const variable = findVariable(utils.getScope(context, node), node)
153156
if (!variable) {
154157
return []
155158
}

lib/rules/no-dupe-v-else-if.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,10 @@ module.exports = {
8383
},
8484
/** @param {RuleContext} context */
8585
create(context) {
86+
const sourceCode = context.getSourceCode()
8687
const tokenStore =
87-
context.parserServices.getTemplateBodyTokenStore &&
88-
context.parserServices.getTemplateBodyTokenStore()
88+
sourceCode.parserServices.getTemplateBodyTokenStore &&
89+
sourceCode.parserServices.getTemplateBodyTokenStore()
8990
/**
9091
* Determines whether the two given nodes are considered to be equal. In particular, given that the nodes
9192
* represent expressions in a boolean context, `||` and `&&` can be considered as commutative operators.

lib/rules/no-empty-component-block.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,11 @@ module.exports = {
5757
* @returns {RuleListener} AST event handlers.
5858
*/
5959
create(context) {
60-
if (!context.parserServices.getDocumentFragment) {
60+
const sourceCode = context.getSourceCode()
61+
if (!sourceCode.parserServices.getDocumentFragment) {
6162
return {}
6263
}
63-
const documentFragment = context.parserServices.getDocumentFragment()
64+
const documentFragment = sourceCode.parserServices.getDocumentFragment()
6465
if (!documentFragment) {
6566
return {}
6667
}

lib/rules/no-expose-after-await.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,10 @@ module.exports = {
192192
// `setup(props, {emit})`
193193
const variable =
194194
exposeParam.type === 'Identifier'
195-
? findVariable(context.getScope(), exposeParam)
195+
? findVariable(
196+
utils.getScope(context, exposeParam),
197+
exposeParam
198+
)
196199
: null
197200
if (!variable) {
198201
return
@@ -205,7 +208,10 @@ module.exports = {
205208
}
206209
} else if (contextParam.type === 'Identifier') {
207210
// `setup(props, context)`
208-
const variable = findVariable(context.getScope(), contextParam)
211+
const variable = findVariable(
212+
utils.getScope(context, contextParam),
213+
contextParam
214+
)
209215
if (!variable) {
210216
return
211217
}

lib/rules/no-extra-parens.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,11 @@ function isIIFE(node) {
8484
* @returns {TemplateListener} AST event handlers.
8585
*/
8686
function createForVueSyntax(context) {
87-
if (!context.parserServices.getTemplateBodyTokenStore) {
87+
const sourceCode = context.getSourceCode()
88+
if (!sourceCode.parserServices.getTemplateBodyTokenStore) {
8889
return {}
8990
}
90-
const tokenStore = context.parserServices.getTemplateBodyTokenStore()
91+
const tokenStore = sourceCode.parserServices.getTemplateBodyTokenStore()
9192

9293
/**
9394
* Checks if the given node turns into a filter when unwraped.

lib/rules/no-lifecycle-after-await.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ module.exports = {
6060

6161
return utils.compositingVisitors(
6262
{
63-
Program() {
64-
const tracker = new ReferenceTracker(context.getScope())
63+
/** @param {Program} program */
64+
Program(program) {
65+
const tracker = new ReferenceTracker(utils.getScope(context, program))
6566
const traceMap = {
6667
/** @type {TraceMap} */
6768
vue: {

0 commit comments

Comments
 (0)