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.
		
		
		
		
		
			
		
			
				
					117 lines
				
				3.6 KiB
			
		
		
			
		
	
	
					117 lines
				
				3.6 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | var es5 = require("./es5"); | ||
|  | var Objectfreeze = es5.freeze; | ||
|  | var util = require("./util"); | ||
|  | var inherits = util.inherits; | ||
|  | var notEnumerableProp = util.notEnumerableProp; | ||
|  | 
 | ||
|  | function subError(nameProperty, defaultMessage) { | ||
|  |     function SubError(message) { | ||
|  |         if (!(this instanceof SubError)) return new SubError(message); | ||
|  |         notEnumerableProp(this, "message", | ||
|  |             typeof message === "string" ? message : defaultMessage); | ||
|  |         notEnumerableProp(this, "name", nameProperty); | ||
|  |         if (Error.captureStackTrace) { | ||
|  |             Error.captureStackTrace(this, this.constructor); | ||
|  |         } else { | ||
|  |             Error.call(this); | ||
|  |         } | ||
|  |     } | ||
|  |     inherits(SubError, Error); | ||
|  |     return SubError; | ||
|  | } | ||
|  | 
 | ||
|  | var _TypeError, _RangeError; | ||
|  | var Warning = subError("Warning", "warning"); | ||
|  | var CancellationError = subError("CancellationError", "cancellation error"); | ||
|  | var TimeoutError = subError("TimeoutError", "timeout error"); | ||
|  | var AggregateError = subError("AggregateError", "aggregate error"); | ||
|  | try { | ||
|  |     _TypeError = TypeError; | ||
|  |     _RangeError = RangeError; | ||
|  | } catch(e) { | ||
|  |     _TypeError = subError("TypeError", "type error"); | ||
|  |     _RangeError = subError("RangeError", "range error"); | ||
|  | } | ||
|  | 
 | ||
|  | var methods = ("join pop push shift unshift slice filter forEach some " + | ||
|  |     "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); | ||
|  | 
 | ||
|  | for (var i = 0; i < methods.length; ++i) { | ||
|  |     if (typeof Array.prototype[methods[i]] === "function") { | ||
|  |         AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | es5.defineProperty(AggregateError.prototype, "length", { | ||
|  |     value: 0, | ||
|  |     configurable: false, | ||
|  |     writable: true, | ||
|  |     enumerable: true | ||
|  | }); | ||
|  | AggregateError.prototype["isOperational"] = true; | ||
|  | var level = 0; | ||
|  | AggregateError.prototype.toString = function() { | ||
|  |     var indent = Array(level * 4 + 1).join(" "); | ||
|  |     var ret = "\n" + indent + "AggregateError of:" + "\n"; | ||
|  |     level++; | ||
|  |     indent = Array(level * 4 + 1).join(" "); | ||
|  |     for (var i = 0; i < this.length; ++i) { | ||
|  |         var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; | ||
|  |         var lines = str.split("\n"); | ||
|  |         for (var j = 0; j < lines.length; ++j) { | ||
|  |             lines[j] = indent + lines[j]; | ||
|  |         } | ||
|  |         str = lines.join("\n"); | ||
|  |         ret += str + "\n"; | ||
|  |     } | ||
|  |     level--; | ||
|  |     return ret; | ||
|  | }; | ||
|  | 
 | ||
|  | function OperationalError(message) { | ||
|  |     if (!(this instanceof OperationalError)) | ||
|  |         return new OperationalError(message); | ||
|  |     notEnumerableProp(this, "name", "OperationalError"); | ||
|  |     notEnumerableProp(this, "message", message); | ||
|  |     this.cause = message; | ||
|  |     this["isOperational"] = true; | ||
|  | 
 | ||
|  |     if (message instanceof Error) { | ||
|  |         notEnumerableProp(this, "message", message.message); | ||
|  |         notEnumerableProp(this, "stack", message.stack); | ||
|  |     } else if (Error.captureStackTrace) { | ||
|  |         Error.captureStackTrace(this, this.constructor); | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | inherits(OperationalError, Error); | ||
|  | 
 | ||
|  | var errorTypes = Error["__BluebirdErrorTypes__"]; | ||
|  | if (!errorTypes) { | ||
|  |     errorTypes = Objectfreeze({ | ||
|  |         CancellationError: CancellationError, | ||
|  |         TimeoutError: TimeoutError, | ||
|  |         OperationalError: OperationalError, | ||
|  |         RejectionError: OperationalError, | ||
|  |         AggregateError: AggregateError | ||
|  |     }); | ||
|  |     es5.defineProperty(Error, "__BluebirdErrorTypes__", { | ||
|  |         value: errorTypes, | ||
|  |         writable: false, | ||
|  |         enumerable: false, | ||
|  |         configurable: false | ||
|  |     }); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = { | ||
|  |     Error: Error, | ||
|  |     TypeError: _TypeError, | ||
|  |     RangeError: _RangeError, | ||
|  |     CancellationError: errorTypes.CancellationError, | ||
|  |     OperationalError: errorTypes.OperationalError, | ||
|  |     TimeoutError: errorTypes.TimeoutError, | ||
|  |     AggregateError: errorTypes.AggregateError, | ||
|  |     Warning: Warning | ||
|  | }; |