@@ -18,7 +18,7 @@ import { Visitor } from "@swc/core/Visitor.js";
1818import type MagicString from "magic-string" ;
1919
2020function transformEmits (
21- emitsAst : ArrayExpression | ObjectExpression | Identifier ,
21+ emitsAst : ArrayExpression | ObjectExpression | Identifier | null ,
2222 setupAst : SetupAst ,
2323 config : Config ,
2424) {
@@ -78,23 +78,31 @@ function transformEmits(
7878 }
7979 }
8080
81- if ( emitsAst . type === "ObjectExpression" ) {
82- const { start, end } = getRealSpan ( emitsAst . span , offset ) ;
83- str = `${ preCode } defineEmits(${ script . slice ( start , end ) } );\n` ;
81+ let keys : string [ ] = [ ] ;
82+ if ( emitsAst ) {
83+ if ( emitsAst . type === "ObjectExpression" ) {
84+ const { start, end } = getRealSpan ( emitsAst . span , offset ) ;
85+ str = `${ preCode } defineEmits(${ script . slice ( start , end ) } );\n` ;
8486
85- return MyVisitor ;
86- }
87+ return MyVisitor ;
88+ }
89+
90+ if ( emitsAst . type === "Identifier" ) {
91+ if ( name !== emitsAst . value ) {
92+ str = `${ preCode } defineEmits(${ emitsAst . value } );\n` ;
93+ } else {
94+ str = `${ preCode } defineEmits($${ emitsAst . value } );\n` ;
95+ isSameEmitsName = true ;
96+ }
8797
88- if ( emitsAst . type === "Identifier" ) {
89- if ( name !== emitsAst . value ) {
90- str = `${ preCode } defineEmits(${ emitsAst . value } );\n` ;
91- } else {
92- str = `${ preCode } defineEmits($${ emitsAst . value } );\n` ;
93- isSameEmitsName = true ;
98+ return MyVisitor ;
9499 }
95- console . log ( str ) ;
96100
97- return MyVisitor ;
101+ keys = emitsAst . elements . map ( ( ast ) => {
102+ const { span } = ast ! . expression as Identifier ;
103+ const { start, end } = getRealSpan ( span , offset ) ;
104+ return script . slice ( start , end ) ;
105+ } ) ;
98106 }
99107
100108 let emitNames : string [ ] = [ ] ;
@@ -103,21 +111,12 @@ function transformEmits(
103111 visitor . visitFn ( setupAst ) ;
104112
105113 const setupOffset = setupAst . span . start ;
106-
107114 emitNames = ( visitor . firstArgAst as Identifier [ ] ) . map ( ( ast ) => {
108- const {
109- span : { start, end } ,
110- } = ast ;
111- return setupScript . slice ( start - setupOffset , end - setupOffset ) ;
115+ const { start, end } = getRealSpan ( ast . span , setupOffset ) ;
116+ return setupScript . slice ( start , end ) ;
112117 } ) ;
113118 }
114119
115- const keys = emitsAst . elements . map ( ( ast ) => {
116- const { span } = ast ! . expression as Identifier ;
117- const { start, end } = getRealSpan ( span , offset ) ;
118- return script . slice ( start , end ) ;
119- } ) ;
120-
121120 str = `${ preCode } defineEmits([${ [ ...new Set ( [ ...keys , ...emitNames ] ) ] . join (
122121 ", " ,
123122 ) } ]);\n`;
0 commit comments