1const resolveFrom = require(require.resolve('resolve-from'));
2
3const silent = (fromDirectory: string, request: string) => {
4  const fs = require('fs');
5  const path = require('path');
6  try {
7    fromDirectory = fs.realpathSync(fromDirectory);
8  } catch (error: any) {
9    if (error.code === 'ENOENT') {
10      fromDirectory = path.resolve(fromDirectory);
11    } else {
12      return;
13    }
14  }
15
16  let outputPath = path.join(fromDirectory, 'node_modules', request);
17  if (fs.existsSync(outputPath)) {
18    return outputPath;
19  }
20  if (!path.extname(outputPath)) {
21    outputPath += '.js';
22  }
23  if (fs.existsSync(outputPath)) {
24    return outputPath;
25  }
26  outputPath = path.join(fromDirectory, request);
27  if (fs.existsSync(outputPath)) {
28    return outputPath;
29  }
30};
31
32module.exports = jest.fn((fromDirectory, request) => {
33  const path = silent(fromDirectory, request);
34  if (!path) {
35    return resolveFrom(fromDirectory, request);
36  }
37  return path;
38});
39
40module.exports.silent = jest.fn(silent);
41