'use strict';
							 | 
						|
								const path = require('path');
							 | 
						|
								const Module = require('module');
							 | 
						|
								const fs = require('fs');
							 | 
						|
								
							 | 
						|
								const resolveFrom = (fromDir, moduleId, silent) => {
							 | 
						|
									if (typeof fromDir !== 'string') {
							 | 
						|
										throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof fromDir}\``);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									if (typeof moduleId !== 'string') {
							 | 
						|
										throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof moduleId}\``);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									try {
							 | 
						|
										fromDir = fs.realpathSync(fromDir);
							 | 
						|
									} catch (err) {
							 | 
						|
										if (err.code === 'ENOENT') {
							 | 
						|
											fromDir = path.resolve(fromDir);
							 | 
						|
										} else if (silent) {
							 | 
						|
											return null;
							 | 
						|
										} else {
							 | 
						|
											throw err;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									const fromFile = path.join(fromDir, 'noop.js');
							 | 
						|
								
							 | 
						|
									const resolveFileName = () => Module._resolveFilename(moduleId, {
							 | 
						|
										id: fromFile,
							 | 
						|
										filename: fromFile,
							 | 
						|
										paths: Module._nodeModulePaths(fromDir)
							 | 
						|
									});
							 | 
						|
								
							 | 
						|
									if (silent) {
							 | 
						|
										try {
							 | 
						|
											return resolveFileName();
							 | 
						|
										} catch (err) {
							 | 
						|
											return null;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									return resolveFileName();
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								module.exports = (fromDir, moduleId) => resolveFrom(fromDir, moduleId);
							 | 
						|
								module.exports.silent = (fromDir, moduleId) => resolveFrom(fromDir, moduleId, true);
							 |