'use strict'
|
|
/**
|
* This will be removed in next versions as it is not handled in the babel-loader
|
* See: https://github.com/geowarin/friendly-errors-webpack-plugin/issues/2
|
*/
|
function cleanStackTrace (message) {
|
return message
|
.replace(/^\s*at\s.*:\d+:\d+[\s)]*\n/gm, '') // at ... ...:x:y
|
}
|
|
function cleanMessage (message) {
|
return message
|
// match until the last semicolon followed by a space
|
// this should match
|
// linux => "(SyntaxError: )Unexpected token (5:11)"
|
// windows => "(SyntaxError: C:/projects/index.js: )Unexpected token (5:11)"
|
.replace(/^Module build failed.*:(\sSyntaxError:(.*:)?)?\s/, 'Syntax Error: ')
|
}
|
|
function isBabelSyntaxError (e) {
|
return e.name === 'ModuleBuildError' &&
|
e.message.indexOf('SyntaxError') >= 0
|
}
|
|
function transform (error) {
|
if (isBabelSyntaxError(error)) {
|
return Object.assign({}, error, {
|
message: cleanStackTrace(cleanMessage(error.message) + '\n'),
|
severity: 1000,
|
name: 'Syntax Error'
|
})
|
}
|
|
return error
|
}
|
|
module.exports = transform
|