@jsreport/jsreport-core
Version:
javascript based business reporting
32 lines (26 loc) • 819 B
JavaScript
module.exports = function normalizeError (errValue, normalizedErrorPrefix = 'User code threw with non-Error: ') {
let newError
const isErrorObj = (
typeof errValue === 'object' &&
typeof errValue.hasOwnProperty === 'function' &&
Object.prototype.hasOwnProperty.call(errValue, 'message')
)
const isValidError = (
isErrorObj ||
typeof errValue === 'string'
)
if (!isValidError) {
if (Object.prototype.toString.call(errValue) === '[object Object]') {
newError = new Error(`${normalizedErrorPrefix}${JSON.stringify(errValue)}`)
} else {
newError = new Error(`${normalizedErrorPrefix}${errValue}`)
}
} else {
if (typeof errValue === 'string') {
newError = new Error(errValue)
} else {
newError = errValue
}
}
return newError
}