| 'use strict'; | 
| const path = require('path'); | 
| const resolveFrom = require('resolve-from'); | 
| const callerPath = require('caller-path'); | 
|   | 
| module.exports = moduleId => { | 
|     if (typeof moduleId !== 'string') { | 
|         throw new TypeError('Expected a string'); | 
|     } | 
|   | 
|     const filePath = resolveFrom(path.dirname(callerPath()), moduleId); | 
|   | 
|     // Delete itself from module parent | 
|     if (require.cache[filePath] && require.cache[filePath].parent) { | 
|         let i = require.cache[filePath].parent.children.length; | 
|   | 
|         while (i--) { | 
|             if (require.cache[filePath].parent.children[i].id === filePath) { | 
|                 require.cache[filePath].parent.children.splice(i, 1); | 
|             } | 
|         } | 
|     } | 
|   | 
|     // Delete module from cache | 
|     delete require.cache[filePath]; | 
|   | 
|     // Return fresh module | 
|     return require(filePath); | 
| }; |