UNPKG

765 BJavaScriptView Raw
1'use strict'
2
3const _ = require('lodash')
4const path = require('path')
5const carmiRoot = require('../carmiRoot')
6const testPaths = [
7 '__tests__',
8 'babelPlugin'
9].map(p => path.resolve(__dirname, p))
10
11function isExternalLine(line) {
12 const isCarmi = _.includes(line, carmiRoot)
13 const isTest = _.some(testPaths, p => _.includes(line, p))
14 const containsLineNumber = _.includes(line, ':')
15 return (!isCarmi || isTest) && containsLineNumber
16}
17
18module.exports = () => {
19 const firstExternalLine = (new Error()).stack
20 .split('\n')
21 .slice(1)
22 .find(isExternalLine) || 'unknown'
23
24 return firstExternalLine
25 .substr(firstExternalLine.indexOf(path.sep))
26 .split(':')
27 .map((str, idx) => idx > 0 ? `${parseInt(str, 10)}` : str)
28 .join(':')
29}