1 | 'use strict'
|
2 |
|
3 | const _ = require('lodash')
|
4 | const path = require('path')
|
5 | const carmiRoot = require('../carmiRoot')
|
6 | const testPaths = [
|
7 | '__tests__',
|
8 | 'babelPlugin'
|
9 | ].map(p => path.resolve(__dirname, p))
|
10 |
|
11 | function 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 |
|
18 | module.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 | }
|