@@ -142,7 +142,12 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
142142
143143 const createModuleResolver =
144144 ( containingFile : string ) =>
145- ( moduleName : string ) : tsModule . ResolvedModuleFull | undefined => {
145+ (
146+ moduleName : string ,
147+ resolveModule : ( ) =>
148+ | tsModule . ResolvedModuleWithFailedLookupLocations
149+ | undefined ,
150+ ) : tsModule . ResolvedModuleFull | undefined => {
146151 if ( isRelativeCSS ( moduleName ) ) {
147152 return {
148153 extension : ts . Extension . Dts ,
@@ -152,25 +157,21 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
152157 moduleName ,
153158 ) ,
154159 } ;
155- } else if (
156- isCSS ( moduleName ) &&
157- languageServiceHost . getResolvedModuleWithFailedLookupLocationsFromCache
158- ) {
160+ }
161+ if ( isCSS ( moduleName ) ) {
159162 // TODO: Move this section to a separate file and add basic tests.
160163 // Attempts to locate the module using TypeScript's previous search paths. These include "baseUrl" and "paths".
161- const failedModule =
162- languageServiceHost . getResolvedModuleWithFailedLookupLocationsFromCache (
163- moduleName ,
164- containingFile ,
165- ) ;
164+ const resolvedModule = resolveModule ( ) ;
165+ if ( ! resolvedModule ) return ;
166+
166167 const baseUrl = info . project . getCompilerOptions ( ) . baseUrl ;
167168 const match = '/index.ts' ;
168169
169170 // An array of paths TypeScript searched for the module. All include .ts, .tsx, .d.ts, or .json extensions.
170171 // NOTE: TypeScript doesn't expose this in their interfaces, which is why the type is unknown.
171172 // https://github.com/microsoft/TypeScript/issues/28770
172173 const failedLocations : readonly string [ ] = (
173- failedModule as unknown as {
174+ resolvedModule as unknown as {
174175 failedLookupLocations : readonly string [ ] ;
175176 }
176177 ) . failedLookupLocations ;
@@ -227,7 +228,10 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
227228
228229 return moduleNames . map ( ( { text : moduleName } , index ) => {
229230 try {
230- const resolvedModule = moduleResolver ( moduleName ) ;
231+ const resolvedModule = moduleResolver (
232+ moduleName ,
233+ ( ) => resolvedModules [ index ] ,
234+ ) ;
231235 if ( resolvedModule ) return { resolvedModule } ;
232236 } catch ( e ) {
233237 logger . error ( e ) ;
@@ -259,7 +263,12 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
259263
260264 return moduleNames . map ( ( moduleName , index ) => {
261265 try {
262- const resolvedModule = moduleResolver ( moduleName ) ;
266+ const resolvedModule = moduleResolver ( moduleName , ( ) =>
267+ languageServiceHost . getResolvedModuleWithFailedLookupLocationsFromCache ?.(
268+ moduleName ,
269+ containingFile ,
270+ ) ,
271+ ) ;
263272 if ( resolvedModule ) return resolvedModule ;
264273 } catch ( e ) {
265274 logger . error ( e ) ;
0 commit comments