42 lines
		
	
	
		
			944 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			944 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 
 | ||
|  | let pnp; | ||
|  | 
 | ||
|  | try { | ||
|  |   pnp = require(`pnpapi`); | ||
|  | } catch (error) { | ||
|  |   // not in PnP; not a problem
 | ||
|  | } | ||
|  | 
 | ||
|  | let defaultResolver; | ||
|  | 
 | ||
|  | function requireDefaultResolver() { | ||
|  |   if (!defaultResolver) { | ||
|  |     try { | ||
|  |       defaultResolver = require(`jest-resolve/build/defaultResolver`).default; | ||
|  |     } catch (error) { | ||
|  |       defaultResolver = require(`jest-resolve/build/default_resolver`).default; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   return defaultResolver; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = (request, options) => { | ||
|  |   const {basedir, defaultResolver, extensions} = options; | ||
|  | 
 | ||
|  |   if (pnp) { | ||
|  |     const resolution = pnp.resolveRequest(request, `${basedir}/`, {extensions}); | ||
|  | 
 | ||
|  |     // When the request is a native module, Jest expects to get the string back unmodified, but pnp returns null instead.
 | ||
|  |     if (resolution === null) | ||
|  |       return request; | ||
|  | 
 | ||
|  |     return resolution; | ||
|  |   } else { | ||
|  |     if (!defaultResolver) | ||
|  |       defaultResolver = requireDefaultResolver(); | ||
|  | 
 | ||
|  |     return defaultResolver(request, options); | ||
|  |   } | ||
|  | }; |