@@ -277,7 +277,7 @@ interface SvelteMap {
277277 * those transformed source later on.
278278 */
279279async function createSvelteMap ( config : EmitDtsConfig ) : Promise < SvelteMap > {
280- const svelteFiles = new Map ( ) ;
280+ const svelteFiles = new Map < string , { transformed : string ; isTsFile : boolean } > ( ) ;
281281
282282 // TODO detect Svelte version in here and set shimsPath accordingly if not given from above
283283 const noSvelteComponentTyped = config . svelteShimsPath
@@ -286,6 +286,12 @@ async function createSvelteMap(config: EmitDtsConfig): Promise<SvelteMap> {
286286 const version = noSvelteComponentTyped ? undefined : '3.42.0' ;
287287
288288 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+
289295 const code = ts . sys . readFile ( path , 'utf-8' ) ;
290296 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 ) ;
291297 const transformed = svelte2tsx ( code , {
@@ -295,13 +301,13 @@ async function createSvelteMap(config: EmitDtsConfig): Promise<SvelteMap> {
295301 version,
296302 noSvelteComponentTyped : noSvelteComponentTyped
297303 } ) . code ;
298- svelteFiles . set ( path . replace ( / \\ / g , '/' ) , transformed ) ;
304+ svelteFiles . set ( normalizedPath , { transformed, isTsFile } ) ;
299305 return isTsFile ;
300306 }
301307
302308 return {
303309 add,
304- get : ( key : string ) => svelteFiles . get ( key . replace ( / \\ / g, '/' ) )
310+ get : ( key : string ) => svelteFiles . get ( key . replace ( / \\ / g, '/' ) ) ?. transformed
305311 } ;
306312}
307313
0 commit comments