@@ -152,28 +152,9 @@ export class Resolver {
152
152
return this . filenameCache . indexOf ( bundleItem . filename ) !== - 1 ;
153
153
}
154
154
155
- private resolveCompilerPathModulename ( bundleItem : BundleItem ) : string {
156
-
157
- let moduleName = bundleItem . moduleName ;
158
-
159
- if ( bundleItem . isNpmModule ( ) && bundleItem . isTypingsFile ( ) &&
160
- bundleItem . filename . indexOf ( bundleItem . moduleName ) === - 1 ) {
161
-
162
- const filename = PathTool . fixWindowsPath ( bundleItem . filename ) ;
163
- const matches = filename . match ( / \/ n o d e _ m o d u l e s \/ ( .* ) \/ / ) ;
164
-
165
- if ( matches && matches [ 1 ] ) {
166
- moduleName = matches [ 1 ] ;
167
- this . log . debug ( "Resolved module name [%s] to [%s]" , bundleItem . moduleName , moduleName ) ;
168
- }
169
- }
170
-
171
- return moduleName ;
172
- }
173
-
174
155
private resolveFilename ( requiringModule : string , bundleItem : BundleItem , onFilenameResolved : ( ) => void ) {
175
156
176
- const moduleName = this . resolveCompilerPathModulename ( bundleItem ) ;
157
+ let moduleName = bundleItem . moduleName ;
177
158
178
159
if ( this . bowerPackages [ moduleName ] ) {
179
160
bundleItem . filename = this . bowerPackages [ moduleName ] ;
@@ -197,23 +178,42 @@ export class Resolver {
197
178
} ;
198
179
199
180
browserResolve ( moduleName , bopts , ( error , filename ) => {
181
+
200
182
if ( ! error ) {
201
183
bundleItem . filename = fs . realpathSync ( filename ) ;
202
184
return onFilenameResolved ( ) ;
203
185
}
186
+
187
+ // This is probably a compiler path module
188
+ if ( bundleItem . filename && ! bundleItem . isTypingsFile ( ) && (
189
+ bundleItem . filename . endsWith ( ".js" ) ||
190
+ bundleItem . filename . endsWith ( ".jsx" ) ||
191
+ bundleItem . filename . endsWith ( ".ts" ) ||
192
+ bundleItem . filename . endsWith ( ".tsx" ) )
193
+ ) {
194
+ return onFilenameResolved ( ) ;
195
+ }
196
+
197
+ // This is probably a compiler path module (.d.ts)
198
+ if ( bundleItem . isNpmModule ( ) && bundleItem . isTypingsFile ( ) &&
199
+ bundleItem . filename . indexOf ( bundleItem . moduleName ) === - 1 ) {
200
+ const filepath = PathTool . fixWindowsPath ( bundleItem . filename ) ;
201
+ const matches = filepath . match ( / \/ n o d e _ m o d u l e s \/ ( .* ) \/ / ) ;
202
+ if ( matches && matches [ 1 ] ) {
203
+ moduleName = matches [ 1 ] ;
204
+ this . log . debug ( "Resolved module name [%s] to [%s]" , bundleItem . moduleName , moduleName ) ;
205
+ }
206
+ }
207
+
204
208
bopts = {
205
209
basedir : bundleItem . filename ? path . dirname ( bundleItem . filename ) : this . config . karma . basePath ,
206
210
extensions : this . config . bundlerOptions . resolve . extensions ,
207
211
moduleDirectory : this . config . bundlerOptions . resolve . directories ,
208
212
modules : this . shims
209
213
} ;
210
214
211
- browserResolve ( moduleName , bopts , ( error2 , filename2 ) => {
215
+ browserResolve ( moduleName , bopts , ( error2 : any , filename2 : fs . PathLike ) => {
212
216
if ( error2 ) {
213
- if ( bundleItem . filename && ! bundleItem . isTypingsFile ( ) ) {
214
- // This is probably a compiler path module (.js)
215
- return onFilenameResolved ( ) ;
216
- }
217
217
throw new Error ( "Unable to resolve module [" +
218
218
moduleName + "] from [" + requiringModule + "]" + os . EOL +
219
219
JSON . stringify ( bopts , undefined , 2 ) + os . EOL +
@@ -231,7 +231,7 @@ export class Resolver {
231
231
232
232
if ( bundleItem . isScript ( ) && this . dependencyWalker . hasRequire ( bundleItem . source ) ) {
233
233
this . dependencyWalker . collectJavascriptDependencies ( bundleItem , ( moduleNames ) => {
234
- async . each ( moduleNames , ( moduleName , onModuleResolved ) => {
234
+ async . each ( moduleNames , ( moduleName : string , onModuleResolved : ( ) => void ) => {
235
235
const dependency = new BundleItem ( moduleName ) ;
236
236
this . resolveModule ( bundleItem . filename , dependency , buffer , ( resolved ) => {
237
237
if ( resolved ) {
0 commit comments