@@ -86,8 +86,9 @@ export function refineSvelteAst(preprocessedText: string, ast: AST) {
8686 const [ temporaryAttributeWithLeadingSpace , encodedContent ] = matchResult ;
8787 const plainContent = base64Decode ( encodedContent ) ;
8888
89- const restoreOffset =
89+ const restoreTextOffset =
9090 plainContent . length - ( temporaryAttributeWithLeadingSpace . length + '{}' . length ) ;
91+ const restoreLineOffset = plainContent . split ( EOL ) . length - 1 ;
9192
9293 function recursion ( node : unknown ) : void {
9394 if ( ! isTypeof ( node , z . object ( { type : z . string ( ) } ) ) ) {
@@ -122,10 +123,40 @@ export function refineSvelteAst(preprocessedText: string, ast: AST) {
122123 }
123124
124125 if ( ast . instance . end <= node . start ) {
125- node . start += restoreOffset ;
126+ node . start += restoreTextOffset ;
127+
128+ if (
129+ isTypeof (
130+ node ,
131+ z . object ( {
132+ loc : z . object ( {
133+ start : z . object ( {
134+ line : z . number ( ) ,
135+ } ) ,
136+ } ) ,
137+ } ) ,
138+ )
139+ ) {
140+ node . loc . start . line += restoreLineOffset ;
141+ }
126142 }
127143 if ( ast . instance . end <= node . end ) {
128- node . end += restoreOffset ;
144+ node . end += restoreTextOffset ;
145+
146+ if (
147+ isTypeof (
148+ node ,
149+ z . object ( {
150+ loc : z . object ( {
151+ end : z . object ( {
152+ line : z . number ( ) ,
153+ } ) ,
154+ } ) ,
155+ } ) ,
156+ )
157+ ) {
158+ node . loc . end . line += restoreLineOffset ;
159+ }
129160 }
130161 }
131162
@@ -134,16 +165,16 @@ export function refineSvelteAst(preprocessedText: string, ast: AST) {
134165 ast . instance = {
135166 type : 'RefinedScript' ,
136167 start : ast . instance . start ,
137- end : ast . instance . end + restoreOffset ,
168+ end : ast . instance . end + restoreTextOffset ,
138169 loc : {
139170 start : {
140171 line : preprocessedText . slice ( 0 , ast . instance . start ) . split ( EOL ) . length ,
141172 } ,
142173 } ,
143174 content : {
144175 type : 'RefinedScriptSource' ,
145- start : ast . instance . end + restoreOffset - ( '</script>' . length + plainContent . length ) ,
146- end : ast . instance . end + restoreOffset - '</script>' . length ,
176+ start : ast . instance . end + restoreTextOffset - ( '</script>' . length + plainContent . length ) ,
177+ end : ast . instance . end + restoreTextOffset - '</script>' . length ,
147178 loc : {
148179 start : {
149180 line : ast . instance . content . body [ 0 ] . loc . start . line ,
0 commit comments