Skip to content

Commit 2cfe45f

Browse files
authored
fix: support "setup" attribute in <script> tag in vue 3 (#667)
In Vue 3, when <script> tag has "setup" attribute, SFC parser assigned script block to a separate field called "scriptSetup" ✅ Closes: #665
1 parent 34ebcd8 commit 2cfe45f

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

src/typescript-reporter/extension/vue/TypeScriptVueExtension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ function createTypeScriptVueExtension(
112112
} else if (isVueTemplateCompilerV3(compiler)) {
113113
const parsed = compiler.parse(vueSourceText);
114114

115-
if (parsed.descriptor && parsed.descriptor.script) {
116-
const scriptV3 = parsed.descriptor.script;
115+
if (parsed.descriptor && (parsed.descriptor.script || parsed.descriptor.scriptSetup)) {
116+
const scriptV3 = (parsed.descriptor.script || parsed.descriptor.scriptSetup)!;
117117

118118
// map newer version of SFCScriptBlock to the generic one
119119
script = {

src/typescript-reporter/extension/vue/types/vue__compiler-sfc.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ interface SFCDescriptor {
2323
filename: string;
2424
template: SFCBlock | null;
2525
script: SFCBlock | null;
26+
scriptSetup: SFCBlock | null;
2627
styles: SFCBlock[];
2728
customBlocks: SFCBlock[];
2829
}

test/e2e/fixtures/implementation/typescript-vue.fixture

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ h1 {
9292
</p>
9393
</template>
9494

95-
<script lang="ts">
95+
<script setup lang="ts">
9696
import User, { getUserName } from '@/model/User';
9797

9898
export default {

0 commit comments

Comments
 (0)