@@ -78,6 +78,9 @@ export interface TsResolverOptions
78
78
79
79
const fileSystem = fs as FileSystem
80
80
81
+ const JS_EXT_PATTERN = / \. (?: [ c m ] j s | j s x ? ) $ /
82
+ const RELATIVE_PATH_PATTERN = / ^ \. { 1 , 2 } (?: \/ .* ) ? $ /
83
+
81
84
let mappersBuildForOptions : TsResolverOptions
82
85
let mappers : Array < ( ( specifier : string ) => string [ ] ) | null > | undefined
83
86
let resolver : Resolver
@@ -147,7 +150,7 @@ export function resolve(
147
150
// naive attempt at @types /* resolution,
148
151
// if path is neither absolute nor relative
149
152
if (
150
- ( / \. j s x ? $ / . test ( foundNodePath ! ) ||
153
+ ( JS_EXT_PATTERN . test ( foundNodePath ! ) ||
151
154
( opts . alwaysTryTypes && ! foundNodePath ) ) &&
152
155
! / ^ @ t y p e s [ / \\ ] / . test ( source ) &&
153
156
! path . isAbsolute ( source ) &&
@@ -238,9 +241,6 @@ function removeQuerystring(id: string) {
238
241
return id
239
242
}
240
243
241
- const JS_EXT_PATTERN = / \. (?: [ c m ] j s | j s x ? ) $ /
242
- const RELATIVE_PATH_PATTERN = / ^ \. { 1 , 2 } (?: \/ .* ) ? $ /
243
-
244
244
/** Remove .js or .jsx extension from module id. */
245
245
function removeJsExtension ( id : string ) {
246
246
return id . replace ( JS_EXT_PATTERN , '' )
@@ -268,6 +268,8 @@ function getMappedPath(
268
268
extensions = defaultExtensions ,
269
269
retry ?: boolean ,
270
270
) : string | undefined {
271
+ extensions = [ '' , ...extensions ]
272
+
271
273
let paths : string [ ] | undefined = [ ]
272
274
273
275
if ( RELATIVE_PATH_PATTERN . test ( source ) ) {
@@ -278,9 +280,7 @@ function getMappedPath(
278
280
} else {
279
281
paths = mappers !
280
282
. map ( mapper =>
281
- mapper ?.( source ) . map ( item =>
282
- [ '' , ...extensions ] . map ( ext => `${ item } ${ ext } ` ) ,
283
- ) ,
283
+ mapper ?.( source ) . map ( item => extensions . map ( ext => `${ item } ${ ext } ` ) ) ,
284
284
)
285
285
. flat ( 2 )
286
286
. filter ( isFile )
0 commit comments