Skip to content

Commit d0af6dd

Browse files
committed
Fix checking for vue lang ts file
1 parent 21143f5 commit d0af6dd

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

lib/rules/require-typed-ref.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,18 @@ module.exports = {
4545
}
4646

4747
if (utils.isVueFile(filename)) {
48-
const scriptSetup = utils.getScriptSetupElement(context)
49-
if (
50-
!scriptSetup ||
51-
(!utils.hasAttribute(scriptSetup, 'lang', 'ts') &&
52-
!utils.hasAttribute(scriptSetup, 'lang', 'typescript'))
53-
) {
48+
const sourceCode = context.getSourceCode()
49+
const documentFragment =
50+
sourceCode.parserServices.getDocumentFragment &&
51+
sourceCode.parserServices.getDocumentFragment()
52+
if (!documentFragment) {
53+
return {}
54+
}
55+
const scripts = documentFragment.children.filter(
56+
/** @returns {element is VElement} */
57+
(element) => utils.isVElement(element) && element.name === 'script'
58+
)
59+
if (scripts.every((script) => !utils.hasAttribute(script, 'lang', 'ts'))) {
5460
return {}
5561
}
5662
}

tests/lib/rules/require-typed-ref.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,30 @@ tester.run('require-typed-ref', rule, {
231231
],
232232
languageOptions: { parser: require('vue-eslint-parser') }
233233
},
234+
{
235+
filename: 'test.vue',
236+
code: `
237+
<script lang="ts">
238+
import { ref } from 'vue'
239+
export default {
240+
setup() {
241+
const count = ref()
242+
}
243+
}
244+
</script>
245+
}
246+
`,
247+
errors: [
248+
{
249+
messageId: 'noType',
250+
line: 6,
251+
column: 29,
252+
endLine: 6,
253+
endColumn: 34
254+
}
255+
],
256+
languageOptions: { parser: require('vue-eslint-parser') }
257+
},
234258
{
235259
filename: 'test.ts',
236260
code: `

0 commit comments

Comments
 (0)