|  | '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; | 
|  | } | 
|  | } | 
|  | }; |