You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
944 B
41 lines
944 B
|
|
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); |
|
} |
|
};
|
|
|