@@ -39,7 +39,7 @@ import {
39
39
} from "./style-context.js" ;
40
40
import { getGlobalsForSvelte , getGlobalsForSvelteScript } from "./globals.js" ;
41
41
import type { NormalizedParserOptions } from "./parser-options.js" ;
42
- import { isTypeScript , normalizeParserOptions } from "./parser-options.js" ;
42
+ import { getLanguage , normalizeParserOptions } from "./parser-options.js" ;
43
43
import { getFragmentFromRoot } from "./compat.js" ;
44
44
import {
45
45
isEnableRunes ,
@@ -143,18 +143,24 @@ function parseAsSvelte(
143
143
) ;
144
144
145
145
const scripts = ctx . sourceCode . scripts ;
146
- const resultScript = ctx . isTypeScript ( )
147
- ? parseTypeScriptInSvelte (
148
- scripts . getCurrentVirtualCodeInfo ( ) ,
149
- scripts . attrs ,
150
- parserOptions ,
151
- { slots : ctx . slots , svelteParseContext } ,
152
- )
153
- : parseScriptInSvelte (
154
- scripts . getCurrentVirtualCode ( ) ,
155
- scripts . attrs ,
156
- parserOptions ,
157
- ) ;
146
+ const language = ctx . getLanguage ( ) ;
147
+
148
+ const resultScript =
149
+ language === "ts" || language === "jsdoc"
150
+ ? parseTypeScriptInSvelte (
151
+ scripts . getCurrentVirtualCodeInfo ( ) ,
152
+ {
153
+ ...scripts . attrs ,
154
+ lang : language === "jsdoc" ? "ts" : scripts . attrs . lang ,
155
+ } ,
156
+ parserOptions ,
157
+ { slots : ctx . slots , svelteParseContext } ,
158
+ )
159
+ : parseScriptInSvelte (
160
+ scripts . getCurrentVirtualCode ( ) ,
161
+ scripts . attrs ,
162
+ parserOptions ,
163
+ ) ;
158
164
ctx . scriptLet . restore ( resultScript ) ;
159
165
ctx . tokens . push ( ...resultScript . ast . tokens ) ;
160
166
ctx . comments . push ( ...resultScript . ast . comments ) ;
@@ -252,10 +258,17 @@ function parseAsScript(
252
258
parserOptions : NormalizedParserOptions ,
253
259
svelteParseContext : SvelteParseContext ,
254
260
) : ParseResult {
255
- const lang = parserOptions . filePath ?. split ( "." ) . pop ( ) ;
256
- const resultScript = isTypeScript ( parserOptions , lang )
257
- ? parseTypeScript ( code , { lang } , parserOptions , svelteParseContext )
258
- : parseScript ( code , { lang } , parserOptions ) ;
261
+ const rawLang = parserOptions . filePath ?. split ( "." ) . pop ( ) ;
262
+ const lang = getLanguage ( parserOptions , rawLang , code ) ;
263
+ const resultScript =
264
+ lang === "ts" || lang === "jsdoc"
265
+ ? parseTypeScript (
266
+ code ,
267
+ { lang : lang === "jsdoc" ? "ts" : rawLang } ,
268
+ parserOptions ,
269
+ svelteParseContext ,
270
+ )
271
+ : parseScript ( code , { lang : rawLang } , parserOptions ) ;
259
272
260
273
// Add $$xxx variable
261
274
addGlobalVariables (
0 commit comments