From 21143f53cc99e84c470ca79319dfd1a8ad380553 Mon Sep 17 00:00:00 2001 From: Eugene Kovalchuk Date: Thu, 14 Mar 2024 09:19:23 +0000 Subject: [PATCH 1/3] Fix checking for script setup --- lib/rules/require-typed-ref.js | 16 +++++++++------- tests/lib/rules/require-typed-ref.js | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/rules/require-typed-ref.js b/lib/rules/require-typed-ref.js index 60a82432a..9f61e8b49 100644 --- a/lib/rules/require-typed-ref.js +++ b/lib/rules/require-typed-ref.js @@ -44,13 +44,15 @@ module.exports = { return {} } - const scriptSetup = utils.getScriptSetupElement(context) - if ( - scriptSetup && - !utils.hasAttribute(scriptSetup, 'lang', 'ts') && - !utils.hasAttribute(scriptSetup, 'lang', 'typescript') - ) { - return {} + if (utils.isVueFile(filename)) { + const scriptSetup = utils.getScriptSetupElement(context) + if ( + !scriptSetup || + (!utils.hasAttribute(scriptSetup, 'lang', 'ts') && + !utils.hasAttribute(scriptSetup, 'lang', 'typescript')) + ) { + return {} + } } const defines = iterateDefineRefs( diff --git a/tests/lib/rules/require-typed-ref.js b/tests/lib/rules/require-typed-ref.js index 6e8797943..2d78f0e91 100644 --- a/tests/lib/rules/require-typed-ref.js +++ b/tests/lib/rules/require-typed-ref.js @@ -86,6 +86,20 @@ tester.run('require-typed-ref', rule, { `, languageOptions: { parser: require('vue-eslint-parser') } }, + { + filename: 'test.vue', + code: ` + + `, + languageOptions: { parser: require('vue-eslint-parser') } + }, { filename: 'test.js', code: ` From d0af6dd9aa4cc1fef8c10f2b7f38feeb5655d4cd Mon Sep 17 00:00:00 2001 From: Eugene Kovalchuk Date: Fri, 15 Mar 2024 08:08:35 +0000 Subject: [PATCH 2/3] Fix checking for vue lang ts file --- lib/rules/require-typed-ref.js | 18 ++++++++++++------ tests/lib/rules/require-typed-ref.js | 24 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/lib/rules/require-typed-ref.js b/lib/rules/require-typed-ref.js index 9f61e8b49..db0566350 100644 --- a/lib/rules/require-typed-ref.js +++ b/lib/rules/require-typed-ref.js @@ -45,12 +45,18 @@ module.exports = { } if (utils.isVueFile(filename)) { - const scriptSetup = utils.getScriptSetupElement(context) - if ( - !scriptSetup || - (!utils.hasAttribute(scriptSetup, 'lang', 'ts') && - !utils.hasAttribute(scriptSetup, 'lang', 'typescript')) - ) { + const sourceCode = context.getSourceCode() + const documentFragment = + sourceCode.parserServices.getDocumentFragment && + sourceCode.parserServices.getDocumentFragment() + if (!documentFragment) { + return {} + } + const scripts = documentFragment.children.filter( + /** @returns {element is VElement} */ + (element) => utils.isVElement(element) && element.name === 'script' + ) + if (scripts.every((script) => !utils.hasAttribute(script, 'lang', 'ts'))) { return {} } } diff --git a/tests/lib/rules/require-typed-ref.js b/tests/lib/rules/require-typed-ref.js index 2d78f0e91..5b18bcb3c 100644 --- a/tests/lib/rules/require-typed-ref.js +++ b/tests/lib/rules/require-typed-ref.js @@ -231,6 +231,30 @@ tester.run('require-typed-ref', rule, { ], languageOptions: { parser: require('vue-eslint-parser') } }, + { + filename: 'test.vue', + code: ` + + } + `, + errors: [ + { + messageId: 'noType', + line: 6, + column: 29, + endLine: 6, + endColumn: 34 + } + ], + languageOptions: { parser: require('vue-eslint-parser') } + }, { filename: 'test.ts', code: ` From 777d46976fd8bd8d638a01b5b521d6f00fc48292 Mon Sep 17 00:00:00 2001 From: Eugene Kovalchuk Date: Fri, 15 Mar 2024 08:57:00 +0000 Subject: [PATCH 3/3] fix code formatting --- lib/rules/require-typed-ref.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/rules/require-typed-ref.js b/lib/rules/require-typed-ref.js index db0566350..c05e6c829 100644 --- a/lib/rules/require-typed-ref.js +++ b/lib/rules/require-typed-ref.js @@ -56,7 +56,9 @@ module.exports = { /** @returns {element is VElement} */ (element) => utils.isVElement(element) && element.name === 'script' ) - if (scripts.every((script) => !utils.hasAttribute(script, 'lang', 'ts'))) { + if ( + scripts.every((script) => !utils.hasAttribute(script, 'lang', 'ts')) + ) { return {} } }