Some checks failed
CI/CD Pipeline / unit-tests (push) Failing after 1m16s
CI/CD Pipeline / integration-tests (push) Failing after 2m32s
CI/CD Pipeline / lint (push) Successful in 5m22s
CI/CD Pipeline / e2e-tests (push) Has been skipped
CI/CD Pipeline / build (push) Has been skipped
38 lines
641 B
JavaScript
38 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;
|
|
}
|
|
}
|
|
};
|