|  | 
| 1 | 1 | import { cleanUp } from "../ErrorHelpers"; | 
| 2 | 2 | import WebpackError from "../lib/WebpackError"; | 
| 3 | 3 | 
 | 
| 4 |  | -export default class ModuleError extends WebpackError { | 
| 5 |  | -	error?: Error; | 
|  | 4 | +const createMessage = ( | 
|  | 5 | +	err: Error, | 
|  | 6 | +	type: "Error" | "Warning", | 
|  | 7 | +	from?: string | 
|  | 8 | +) => { | 
|  | 9 | +	let message = `Module ${type}${from ? ` (from ${from}):\n` : ": "}`; | 
| 6 | 10 | 
 | 
| 7 |  | -	constructor(err: Error, { from }: { from?: string } = {}) { | 
| 8 |  | -		let message = "Module Error"; | 
|  | 11 | +	if (err && typeof err === "object" && err.message) { | 
|  | 12 | +		message += err.message; | 
|  | 13 | +	} else if (err) { | 
|  | 14 | +		message += err; | 
|  | 15 | +	} | 
| 9 | 16 | 
 | 
| 10 |  | -		if (from) { | 
| 11 |  | -			message += ` (from ${from}):\n`; | 
| 12 |  | -		} else { | 
| 13 |  | -			message += ": "; | 
| 14 |  | -		} | 
|  | 17 | +	return message; | 
|  | 18 | +}; | 
| 15 | 19 | 
 | 
| 16 |  | -		if (err && typeof err === "object" && err.message) { | 
| 17 |  | -			message += err.message; | 
| 18 |  | -		} else if (err) { | 
| 19 |  | -			message += err; | 
| 20 |  | -		} | 
|  | 20 | +const getErrorDetails = (err: Error) => | 
|  | 21 | +	err && typeof err === "object" && err.stack | 
|  | 22 | +		? cleanUp(err.stack, err.name, err.message) | 
|  | 23 | +		: undefined; | 
| 21 | 24 | 
 | 
| 22 |  | -		super(message); | 
|  | 25 | +export class ModuleError extends WebpackError { | 
|  | 26 | +	error?: Error; | 
| 23 | 27 | 
 | 
|  | 28 | +	constructor(err: Error, { from }: { from?: string } = {}) { | 
|  | 29 | +		super(createMessage(err, "Error", from)); | 
| 24 | 30 | 		this.name = "ModuleError"; | 
| 25 | 31 | 		this.error = err; | 
| 26 |  | -		this.details = | 
| 27 |  | -			err && typeof err === "object" && err.stack | 
| 28 |  | -				? cleanUp(err.stack, err.name, err.message) | 
| 29 |  | -				: undefined; | 
|  | 32 | +		this.details = getErrorDetails(err); | 
|  | 33 | +	} | 
|  | 34 | +} | 
|  | 35 | + | 
|  | 36 | +export class ModuleWarning extends WebpackError { | 
|  | 37 | +	error?: Error; | 
|  | 38 | + | 
|  | 39 | +	constructor(err: Error, { from }: { from?: string } = {}) { | 
|  | 40 | +		super(createMessage(err, "Warning", from)); | 
|  | 41 | +		this.name = "ModuleWarning"; | 
|  | 42 | +		this.error = err; | 
|  | 43 | +		this.details = getErrorDetails(err); | 
| 30 | 44 | 	} | 
| 31 | 45 | } | 
0 commit comments