@@ -7,7 +7,7 @@ import { digestHashObject } from './helpers'
77import { logger } from './logger'
88import { resolveImport } from './resolveImport'
99
10- import type { InternalResolverOptions , ResolverOptions } from './types'
10+ import type { InternalResolverOptions , ResolvedResult , ResolverOptions } from './types'
1111import type { Resolver } from 'enhanced-resolve'
1212
1313const times = [ ]
@@ -25,11 +25,7 @@ export const interfaceVersion = 2
2525 * @param file the importing file's full path; i.e. '/usr/local/bin/file.js'
2626 * @param options
2727 */
28- export function resolve (
29- specifier : string ,
30- file : string ,
31- options ?: ResolverOptions | undefined | null
32- ) : { found : boolean ; path ?: string | null } {
28+ export function resolve ( specifier : string , file : string , options ?: ResolverOptions | undefined | null ) : ResolvedResult {
3329 let t0 : DOMHighResTimeStamp = 0
3430
3531 if ( options ?. performanceToLog ) t0 = performance . now ( )
@@ -62,3 +58,35 @@ export function resolve(
6258
6359 return result
6460}
61+
62+ export function createCustomResolver ( options : ResolverOptions ) {
63+ const resolver = enhancedResolve . ResolverFactory . createResolver ( {
64+ ...options ,
65+ conditionNames : options ?. conditionNames ?? defaultConditionNames ,
66+ extensions : options ?. extensions ?? defaultExtensions ,
67+ extensionAlias : options ?. extensionAlias ?? defaultExtensionAlias ,
68+ mainFields : options ?. mainFields ?? defaultMainFields ,
69+ fileSystem : new enhancedResolve . CachedInputFileSystem ( fs , 5 * 1000 ) ,
70+ useSyncFileSystemCalls : true ,
71+ } )
72+
73+ return {
74+ name : 'eslint-import-resolver-x' ,
75+ interfaceVersion : 3 ,
76+ resolve ( modulePath : string , source : string ) {
77+ let t0 : DOMHighResTimeStamp = 0
78+
79+ if ( options ?. performanceToLog ) t0 = performance . now ( )
80+
81+ const result = resolveImport ( modulePath , source , cachedOptions , resolver )
82+
83+ if ( options ?. performanceToLog ) {
84+ const t1 = performance . now ( )
85+ times . push ( t1 - t0 )
86+ logger ( 'time resolve:' , t1 )
87+ }
88+
89+ return result
90+ } ,
91+ }
92+ }
0 commit comments