You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | /* | ||
|  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | ||
|  | 	Author Ivan Kopeykin @vankop | ||
|  | */ | ||
|  | 
 | ||
|  | "use strict"; | ||
|  | 
 | ||
|  | const WebpackError = require("./WebpackError"); | ||
|  | const CURRENT_METHOD_REGEXP = /at ([a-zA-Z0-9_.]*)/; | ||
|  | 
 | ||
|  | /** | ||
|  |  * @param {string=} method method name | ||
|  |  * @returns {string} message | ||
|  |  */ | ||
|  | function createMessage(method) { | ||
|  | 	return `Abstract method${method ? " " + method : ""}. Must be overridden.`; | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * @constructor | ||
|  |  */ | ||
|  | function Message() { | ||
|  | 	/** @type {string} */ | ||
|  | 	this.stack = undefined; | ||
|  | 	Error.captureStackTrace(this); | ||
|  | 	/** @type {RegExpMatchArray} */ | ||
|  | 	const match = this.stack.split("\n")[3].match(CURRENT_METHOD_REGEXP); | ||
|  | 
 | ||
|  | 	this.message = match && match[1] ? createMessage(match[1]) : createMessage(); | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Error for abstract method | ||
|  |  * @example | ||
|  |  * class FooClass { | ||
|  |  *     abstractMethod() { | ||
|  |  *         throw new AbstractMethodError(); // error message: Abstract method FooClass.abstractMethod. Must be overridden.
 | ||
|  |  *     } | ||
|  |  * } | ||
|  |  * | ||
|  |  */ | ||
|  | class AbstractMethodError extends WebpackError { | ||
|  | 	constructor() { | ||
|  | 		super(new Message().message); | ||
|  | 		this.name = "AbstractMethodError"; | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = AbstractMethodError; |