@@ -153,22 +153,30 @@ export function minifyTemplate(node: ts.TaggedTemplateExpression) {
153
153
cookedValues . push ( span . literal . text ) ;
154
154
} ) ;
155
155
}
156
- const [ spans ] = minifyCookedValues ( cookedValues ) ;
157
- return ts . createTaggedTemplate (
158
- node . tag ,
159
- node . typeArguments ,
160
- ts . isNoSubstitutionTemplateLiteral ( node . template )
161
- ? ts . createNoSubstitutionTemplateLiteral ( spans [ 0 ] )
162
- : ts . createTemplateExpression (
163
- ts . createTemplateHead ( spans [ 0 ] ) ,
164
- node . template . templateSpans . map ( ( span , index ) => {
165
- return ts . createTemplateSpan (
166
- span . expression ,
167
- index === spans . length - 2
168
- ? ts . createTemplateTail ( spans [ index + 1 ] )
169
- : ts . createTemplateMiddle ( spans [ index + 1 ] ) ,
170
- ) ;
171
- } ) ,
172
- ) ,
173
- ) ;
156
+ const [ spans , indicates ] = minifyCookedValues ( cookedValues ) ;
157
+ let newTemplate : ts . TemplateLiteral ;
158
+ if ( ts . isNoSubstitutionTemplateLiteral ( template ) ) {
159
+ newTemplate = ts . createNoSubstitutionTemplateLiteral ( spans [ 0 ] || '' ) ;
160
+ } else {
161
+ const templateSpans = template . templateSpans . slice ( ) ;
162
+ indicates . forEach ( ( expressionIndex , iteration ) => {
163
+ templateSpans . splice ( expressionIndex - iteration , 1 ) ;
164
+ } ) ;
165
+ if ( templateSpans . length === 0 ) {
166
+ newTemplate = ts . createNoSubstitutionTemplateLiteral ( spans [ 0 ] || '' ) ;
167
+ } else {
168
+ newTemplate = ts . createTemplateExpression (
169
+ ts . createTemplateHead ( spans [ 0 ] ) ,
170
+ templateSpans . map ( ( span , index ) => {
171
+ return ts . createTemplateSpan (
172
+ span . expression ,
173
+ index === spans . length - 2
174
+ ? ts . createTemplateTail ( spans [ index + 1 ] )
175
+ : ts . createTemplateMiddle ( spans [ index + 1 ] ) ,
176
+ ) ;
177
+ } ) ,
178
+ ) ;
179
+ }
180
+ }
181
+ return ts . createTaggedTemplate ( node . tag , node . typeArguments , newTemplate ) ;
174
182
}
0 commit comments