You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
641 B
37 lines
641 B
'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; |
|
} |
|
} |
|
};
|
|
|