@@ -18,7 +18,7 @@ import { Visitor } from "@swc/core/Visitor.js";
18
18
import type MagicString from "magic-string" ;
19
19
20
20
function transformEmits (
21
- emitsAst : ArrayExpression | ObjectExpression | Identifier ,
21
+ emitsAst : ArrayExpression | ObjectExpression | Identifier | null ,
22
22
setupAst : SetupAst ,
23
23
config : Config ,
24
24
) {
@@ -78,23 +78,31 @@ function transformEmits(
78
78
}
79
79
}
80
80
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` ;
84
86
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
+ }
87
97
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 ;
94
99
}
95
- console . log ( str ) ;
96
100
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
+ } ) ;
98
106
}
99
107
100
108
let emitNames : string [ ] = [ ] ;
@@ -103,21 +111,12 @@ function transformEmits(
103
111
visitor . visitFn ( setupAst ) ;
104
112
105
113
const setupOffset = setupAst . span . start ;
106
-
107
114
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 ) ;
112
117
} ) ;
113
118
}
114
119
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
-
121
120
str = `${ preCode } defineEmits([${ [ ...new Set ( [ ...keys , ...emitNames ] ) ] . join (
122
121
", " ,
123
122
) } ]);\n`;
0 commit comments