@@ -277,7 +277,7 @@ interface SvelteMap {
277
277
* those transformed source later on.
278
278
*/
279
279
async function createSvelteMap ( config : EmitDtsConfig ) : Promise < SvelteMap > {
280
- const svelteFiles = new Map ( ) ;
280
+ const svelteFiles = new Map < string , { transformed : string ; isTsFile : boolean } > ( ) ;
281
281
282
282
// TODO detect Svelte version in here and set shimsPath accordingly if not given from above
283
283
const noSvelteComponentTyped = config . svelteShimsPath
@@ -286,6 +286,12 @@ async function createSvelteMap(config: EmitDtsConfig): Promise<SvelteMap> {
286
286
const version = noSvelteComponentTyped ? undefined : '3.42.0' ;
287
287
288
288
function add ( path : string ) : boolean {
289
+ const normalizedPath = path . replace ( / \\ / g, '/' ) ;
290
+
291
+ if ( svelteFiles . has ( normalizedPath ) ) {
292
+ return svelteFiles . get ( normalizedPath ) ! . isTsFile ;
293
+ }
294
+
289
295
const code = ts . sys . readFile ( path , 'utf-8' ) ;
290
296
const isTsFile = / < s c r i p t \s + [ ^ > ] * ?l a n g = ( ' | " ) ( t s | t y p e s c r i p t ) ( ' | " ) / . test ( code ) ;
291
297
const transformed = svelte2tsx ( code , {
@@ -295,13 +301,13 @@ async function createSvelteMap(config: EmitDtsConfig): Promise<SvelteMap> {
295
301
version,
296
302
noSvelteComponentTyped : noSvelteComponentTyped
297
303
} ) . code ;
298
- svelteFiles . set ( path . replace ( / \\ / g , '/' ) , transformed ) ;
304
+ svelteFiles . set ( normalizedPath , { transformed, isTsFile } ) ;
299
305
return isTsFile ;
300
306
}
301
307
302
308
return {
303
309
add,
304
- get : ( key : string ) => svelteFiles . get ( key . replace ( / \\ / g, '/' ) )
310
+ get : ( key : string ) => svelteFiles . get ( key . replace ( / \\ / g, '/' ) ) ?. transformed
305
311
} ;
306
312
}
307
313
0 commit comments