29 lines
		
	
	
		
			781 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			781 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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; |