epiphany/node_modules/parent-module/index.js
2023-12-09 22:48:07 -08:00

37 lines
641 B
JavaScript

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