Skip to content

Commit dacc876

Browse files
committed
fix: support eslint v8.x and v9 compatibility
1 parent b85b038 commit dacc876

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/utils/defineTemplateBodyVisitor.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ function defineTemplateBodyVisitor(
1414
templateVisitor: TemplateListener,
1515
scriptVisitor?: Rule.RuleListener
1616
) {
17-
if (!context.parserServices.defineTemplateBodyVisitor) {
17+
const parserServices = getParserServices(context);
18+
if (!parserServices.defineTemplateBodyVisitor) {
1819
if (path.extname(context.getFilename()) === ".vue") {
1920
context.report({
2021
loc: { line: 1, column: 0 },
@@ -26,10 +27,19 @@ function defineTemplateBodyVisitor(
2627
return {};
2728
}
2829

29-
return context.parserServices.defineTemplateBodyVisitor(
30+
return parserServices.defineTemplateBodyVisitor(
3031
templateVisitor,
3132
scriptVisitor
3233
);
3334
}
3435

36+
/**
37+
* This function is API compatible with eslint v8.x and eslint v9 or later.
38+
* @see https://eslint.org/blog/2023/09/preparing-custom-rules-eslint-v9/#from-context-to-sourcecode
39+
*/
40+
function getParserServices(context: Rule.RuleContext) {
41+
// @ts-expect-error TODO: remove this when eslint v8 support is dropped
42+
return context.sourceCode ? context.sourceCode.parserServices : context.parserServices
43+
}
44+
3545
export default defineTemplateBodyVisitor;

0 commit comments

Comments
 (0)