@@ -3,30 +3,7 @@ import { ConfigManager } from './config-manager';
33import { Logger } from './logger' ;
44import { SvelteSnapshotManager } from './svelte-snapshots' ;
55import { createSvelteSys } from './svelte-sys' ;
6- import { ensureRealSvelteFilePath , isVirtualSvelteFilePath } from './utils' ;
7-
8- // TODO remove when we update to typescript 5.0
9- declare module 'typescript/lib/tsserverlibrary' {
10- interface LanguageServiceHost {
11- /** @deprecated supply resolveModuleNameLiterals instead for resolution that can handle newer resolution modes like nodenext */
12- resolveModuleNames ?(
13- moduleNames : string [ ] ,
14- containingFile : string ,
15- reusedNames : string [ ] | undefined ,
16- redirectedReference : ts . ResolvedProjectReference | undefined ,
17- options : ts . CompilerOptions ,
18- containingSourceFile ?: ts . SourceFile
19- ) : ( ts . ResolvedModule | undefined ) [ ] ;
20- resolveModuleNameLiterals ?(
21- moduleLiterals : readonly ts . StringLiteralLike [ ] ,
22- containingFile : string ,
23- redirectedReference : ts . ResolvedProjectReference | undefined ,
24- options : ts . CompilerOptions ,
25- containingSourceFile : ts . SourceFile ,
26- reusedNames : readonly ts . StringLiteralLike [ ] | undefined
27- ) : readonly ts . ResolvedModuleWithFailedLookupLocations [ ] ;
28- }
29- }
6+ import { ensureRealSvelteFilePath , isSvelteFilePath , isVirtualSvelteFilePath } from './utils' ;
307
318/**
329 * Caches resolved modules.
@@ -161,12 +138,22 @@ export function patchModuleLoader(
161138
162139 return resolved . map ( ( tsResolvedModule , idx ) => {
163140 const moduleName = moduleNames [ idx ] ;
164- if ( tsResolvedModule || ! ensureRealSvelteFilePath ( moduleName ) . endsWith ( '.svelte' ) ) {
141+ if (
142+ ! isSvelteFilePath ( moduleName ) ||
143+ // corresponding .d.ts files take precedence over .svelte files
144+ tsResolvedModule ?. resolvedFileName . endsWith ( '.d.ts' ) ||
145+ tsResolvedModule ?. resolvedFileName . endsWith ( '.d.svelte.ts' )
146+ ) {
165147 return tsResolvedModule ;
166148 }
167149
168- return resolveSvelteModuleNameFromCache ( moduleName , containingFile , compilerOptions )
169- . resolvedModule ;
150+ const result = resolveSvelteModuleNameFromCache (
151+ moduleName ,
152+ containingFile ,
153+ compilerOptions
154+ ) . resolvedModule ;
155+ // .svelte takes precedence over .svelte.ts etc
156+ return result ?? tsResolvedModule ;
170157 } ) ;
171158 }
172159
@@ -238,14 +225,19 @@ export function patchModuleLoader(
238225
239226 return resolved . map ( ( tsResolvedModule , idx ) => {
240227 const moduleName = moduleLiterals [ idx ] . text ;
228+
241229 if (
242- tsResolvedModule . resolvedModule ||
243- ! ensureRealSvelteFilePath ( moduleName ) . endsWith ( '.svelte' )
230+ ! isSvelteFilePath ( moduleName ) ||
231+ // corresponding .d.ts files take precedence over .svelte files
232+ tsResolvedModule ?. resolvedModule ?. resolvedFileName . endsWith ( '.d.ts' ) ||
233+ tsResolvedModule ?. resolvedModule ?. resolvedFileName . endsWith ( '.d.svelte.ts' )
244234 ) {
245235 return tsResolvedModule ;
246236 }
247237
248- return resolveSvelteModuleNameFromCache ( moduleName , containingFile , options ) ;
238+ const result = resolveSvelteModuleNameFromCache ( moduleName , containingFile , options ) ;
239+ // .svelte takes precedence over .svelte.ts etc
240+ return result ?? tsResolvedModule ;
249241 } ) ;
250242 }
251243
0 commit comments