@@ -142,7 +142,12 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
142
142
143
143
const createModuleResolver =
144
144
( containingFile : string ) =>
145
- ( moduleName : string ) : tsModule . ResolvedModuleFull | undefined => {
145
+ (
146
+ moduleName : string ,
147
+ resolveModule : ( ) =>
148
+ | tsModule . ResolvedModuleWithFailedLookupLocations
149
+ | undefined ,
150
+ ) : tsModule . ResolvedModuleFull | undefined => {
146
151
if ( isRelativeCSS ( moduleName ) ) {
147
152
return {
148
153
extension : ts . Extension . Dts ,
@@ -152,25 +157,21 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
152
157
moduleName ,
153
158
) ,
154
159
} ;
155
- } else if (
156
- isCSS ( moduleName ) &&
157
- languageServiceHost . getResolvedModuleWithFailedLookupLocationsFromCache
158
- ) {
160
+ }
161
+ if ( isCSS ( moduleName ) ) {
159
162
// TODO: Move this section to a separate file and add basic tests.
160
163
// 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
+
166
167
const baseUrl = info . project . getCompilerOptions ( ) . baseUrl ;
167
168
const match = '/index.ts' ;
168
169
169
170
// An array of paths TypeScript searched for the module. All include .ts, .tsx, .d.ts, or .json extensions.
170
171
// NOTE: TypeScript doesn't expose this in their interfaces, which is why the type is unknown.
171
172
// https://github.com/microsoft/TypeScript/issues/28770
172
173
const failedLocations : readonly string [ ] = (
173
- failedModule as unknown as {
174
+ resolvedModule as unknown as {
174
175
failedLookupLocations : readonly string [ ] ;
175
176
}
176
177
) . failedLookupLocations ;
@@ -227,7 +228,10 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
227
228
228
229
return moduleNames . map ( ( { text : moduleName } , index ) => {
229
230
try {
230
- const resolvedModule = moduleResolver ( moduleName ) ;
231
+ const resolvedModule = moduleResolver (
232
+ moduleName ,
233
+ ( ) => resolvedModules [ index ] ,
234
+ ) ;
231
235
if ( resolvedModule ) return { resolvedModule } ;
232
236
} catch ( e ) {
233
237
logger . error ( e ) ;
@@ -259,7 +263,12 @@ const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
259
263
260
264
return moduleNames . map ( ( moduleName , index ) => {
261
265
try {
262
- const resolvedModule = moduleResolver ( moduleName ) ;
266
+ const resolvedModule = moduleResolver ( moduleName , ( ) =>
267
+ languageServiceHost . getResolvedModuleWithFailedLookupLocationsFromCache ?.(
268
+ moduleName ,
269
+ containingFile ,
270
+ ) ,
271
+ ) ;
263
272
if ( resolvedModule ) return resolvedModule ;
264
273
} catch ( e ) {
265
274
logger . error ( e ) ;
0 commit comments