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.
36 lines
801 B
36 lines
801 B
"use strict"; |
|
|
|
const STRIP_FILENAME_RE = /^[^:]+: /; |
|
|
|
const format = err => { |
|
if (err instanceof SyntaxError) { |
|
err.name = "SyntaxError"; |
|
err.message = err.message.replace(STRIP_FILENAME_RE, ""); |
|
err.hideStack = true; |
|
} else if (err instanceof TypeError) { |
|
err.name = null; |
|
err.message = err.message.replace(STRIP_FILENAME_RE, ""); |
|
err.hideStack = true; |
|
} |
|
|
|
return err; |
|
}; |
|
|
|
class LoaderError extends Error { |
|
constructor(err) { |
|
super(); |
|
const { |
|
name, |
|
message, |
|
codeFrame, |
|
hideStack |
|
} = format(err); |
|
this.name = "BabelLoaderError"; |
|
this.message = `${name ? `${name}: ` : ""}${message}\n\n${codeFrame}\n`; |
|
this.hideStack = hideStack; |
|
Error.captureStackTrace(this, this.constructor); |
|
} |
|
|
|
} |
|
|
|
module.exports = LoaderError; |