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);
 | |
|   }
 | |
| };
 |