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