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.
		
		
		
		
		
			
		
			
				
					104 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					104 lines
				
				2.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								module.exports = function(Promise) {
							 | 
						||
| 
								 | 
							
								function PromiseInspection(promise) {
							 | 
						||
| 
								 | 
							
								    if (promise !== undefined) {
							 | 
						||
| 
								 | 
							
								        promise = promise._target();
							 | 
						||
| 
								 | 
							
								        this._bitField = promise._bitField;
							 | 
						||
| 
								 | 
							
								        this._settledValueField = promise._isFateSealed()
							 | 
						||
| 
								 | 
							
								            ? promise._settledValue() : undefined;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								        this._bitField = 0;
							 | 
						||
| 
								 | 
							
								        this._settledValueField = undefined;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PromiseInspection.prototype._settledValue = function() {
							 | 
						||
| 
								 | 
							
								    return this._settledValueField;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var value = PromiseInspection.prototype.value = function () {
							 | 
						||
| 
								 | 
							
								    if (!this.isFulfilled()) {
							 | 
						||
| 
								 | 
							
								        throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a    See http://goo.gl/MqrFmX\u000a");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return this._settledValue();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var reason = PromiseInspection.prototype.error =
							 | 
						||
| 
								 | 
							
								PromiseInspection.prototype.reason = function () {
							 | 
						||
| 
								 | 
							
								    if (!this.isRejected()) {
							 | 
						||
| 
								 | 
							
								        throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a    See http://goo.gl/MqrFmX\u000a");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return this._settledValue();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isFulfilled = PromiseInspection.prototype.isFulfilled = function() {
							 | 
						||
| 
								 | 
							
								    return (this._bitField & 33554432) !== 0;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isRejected = PromiseInspection.prototype.isRejected = function () {
							 | 
						||
| 
								 | 
							
								    return (this._bitField & 16777216) !== 0;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isPending = PromiseInspection.prototype.isPending = function () {
							 | 
						||
| 
								 | 
							
								    return (this._bitField & 50397184) === 0;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var isResolved = PromiseInspection.prototype.isResolved = function () {
							 | 
						||
| 
								 | 
							
								    return (this._bitField & 50331648) !== 0;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PromiseInspection.prototype.isCancelled = function() {
							 | 
						||
| 
								 | 
							
								    return (this._bitField & 8454144) !== 0;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.__isCancelled = function() {
							 | 
						||
| 
								 | 
							
								    return (this._bitField & 65536) === 65536;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype._isCancelled = function() {
							 | 
						||
| 
								 | 
							
								    return this._target().__isCancelled();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.isCancelled = function() {
							 | 
						||
| 
								 | 
							
								    return (this._target()._bitField & 8454144) !== 0;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.isPending = function() {
							 | 
						||
| 
								 | 
							
								    return isPending.call(this._target());
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.isRejected = function() {
							 | 
						||
| 
								 | 
							
								    return isRejected.call(this._target());
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.isFulfilled = function() {
							 | 
						||
| 
								 | 
							
								    return isFulfilled.call(this._target());
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.isResolved = function() {
							 | 
						||
| 
								 | 
							
								    return isResolved.call(this._target());
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.value = function() {
							 | 
						||
| 
								 | 
							
								    return value.call(this._target());
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype.reason = function() {
							 | 
						||
| 
								 | 
							
								    var target = this._target();
							 | 
						||
| 
								 | 
							
								    target._unsetRejectionIsUnhandled();
							 | 
						||
| 
								 | 
							
								    return reason.call(target);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype._value = function() {
							 | 
						||
| 
								 | 
							
								    return this._settledValue();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.prototype._reason = function() {
							 | 
						||
| 
								 | 
							
								    this._unsetRejectionIsUnhandled();
							 | 
						||
| 
								 | 
							
								    return this._settledValue();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Promise.PromiseInspection = PromiseInspection;
							 | 
						||
| 
								 | 
							
								};
							 |