| 'use strict'; | 
| const callsites = require('callsites'); | 
|   | 
| module.exports = filepath => { | 
|     const stacks = callsites(); | 
|   | 
|     if (!filepath) { | 
|         return stacks[2].getFileName(); | 
|     } | 
|   | 
|     let seenVal = false; | 
|   | 
|     // Skip the first stack as it's this function | 
|     stacks.shift(); | 
|   | 
|     for (const stack of stacks) { | 
|         const parentFilepath = stack.getFileName(); | 
|   | 
|         if (typeof parentFilepath !== 'string') { | 
|             continue; | 
|         } | 
|   | 
|         if (parentFilepath === filepath) { | 
|             seenVal = true; | 
|             continue; | 
|         } | 
|   | 
|         // Skip native modules | 
|         if (parentFilepath === 'module.js') { | 
|             continue; | 
|         } | 
|   | 
|         if (seenVal && parentFilepath !== filepath) { | 
|             return parentFilepath; | 
|         } | 
|     } | 
| }; |