| [9af201e] | 1 | "use strict";
|
|---|
| 2 | module.exports = function(Promise) {
|
|---|
| 3 | function PromiseInspection(promise) {
|
|---|
| 4 | if (promise !== undefined) {
|
|---|
| 5 | promise = promise._target();
|
|---|
| 6 | this._bitField = promise._bitField;
|
|---|
| 7 | this._settledValueField = promise._isFateSealed()
|
|---|
| 8 | ? promise._settledValue() : undefined;
|
|---|
| 9 | }
|
|---|
| 10 | else {
|
|---|
| 11 | this._bitField = 0;
|
|---|
| 12 | this._settledValueField = undefined;
|
|---|
| 13 | }
|
|---|
| 14 | }
|
|---|
| 15 |
|
|---|
| 16 | PromiseInspection.prototype._settledValue = function() {
|
|---|
| 17 | return this._settledValueField;
|
|---|
| 18 | };
|
|---|
| 19 |
|
|---|
| 20 | var value = PromiseInspection.prototype.value = function () {
|
|---|
| 21 | if (!this.isFulfilled()) {
|
|---|
| 22 | throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a");
|
|---|
| 23 | }
|
|---|
| 24 | return this._settledValue();
|
|---|
| 25 | };
|
|---|
| 26 |
|
|---|
| 27 | var reason = PromiseInspection.prototype.error =
|
|---|
| 28 | PromiseInspection.prototype.reason = function () {
|
|---|
| 29 | if (!this.isRejected()) {
|
|---|
| 30 | throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a");
|
|---|
| 31 | }
|
|---|
| 32 | return this._settledValue();
|
|---|
| 33 | };
|
|---|
| 34 |
|
|---|
| 35 | var isFulfilled = PromiseInspection.prototype.isFulfilled = function() {
|
|---|
| 36 | return (this._bitField & 33554432) !== 0;
|
|---|
| 37 | };
|
|---|
| 38 |
|
|---|
| 39 | var isRejected = PromiseInspection.prototype.isRejected = function () {
|
|---|
| 40 | return (this._bitField & 16777216) !== 0;
|
|---|
| 41 | };
|
|---|
| 42 |
|
|---|
| 43 | var isPending = PromiseInspection.prototype.isPending = function () {
|
|---|
| 44 | return (this._bitField & 50397184) === 0;
|
|---|
| 45 | };
|
|---|
| 46 |
|
|---|
| 47 | var isResolved = PromiseInspection.prototype.isResolved = function () {
|
|---|
| 48 | return (this._bitField & 50331648) !== 0;
|
|---|
| 49 | };
|
|---|
| 50 |
|
|---|
| 51 | PromiseInspection.prototype.isCancelled = function() {
|
|---|
| 52 | return (this._bitField & 8454144) !== 0;
|
|---|
| 53 | };
|
|---|
| 54 |
|
|---|
| 55 | Promise.prototype.__isCancelled = function() {
|
|---|
| 56 | return (this._bitField & 65536) === 65536;
|
|---|
| 57 | };
|
|---|
| 58 |
|
|---|
| 59 | Promise.prototype._isCancelled = function() {
|
|---|
| 60 | return this._target().__isCancelled();
|
|---|
| 61 | };
|
|---|
| 62 |
|
|---|
| 63 | Promise.prototype.isCancelled = function() {
|
|---|
| 64 | return (this._target()._bitField & 8454144) !== 0;
|
|---|
| 65 | };
|
|---|
| 66 |
|
|---|
| 67 | Promise.prototype.isPending = function() {
|
|---|
| 68 | return isPending.call(this._target());
|
|---|
| 69 | };
|
|---|
| 70 |
|
|---|
| 71 | Promise.prototype.isRejected = function() {
|
|---|
| 72 | return isRejected.call(this._target());
|
|---|
| 73 | };
|
|---|
| 74 |
|
|---|
| 75 | Promise.prototype.isFulfilled = function() {
|
|---|
| 76 | return isFulfilled.call(this._target());
|
|---|
| 77 | };
|
|---|
| 78 |
|
|---|
| 79 | Promise.prototype.isResolved = function() {
|
|---|
| 80 | return isResolved.call(this._target());
|
|---|
| 81 | };
|
|---|
| 82 |
|
|---|
| 83 | Promise.prototype.value = function() {
|
|---|
| 84 | return value.call(this._target());
|
|---|
| 85 | };
|
|---|
| 86 |
|
|---|
| 87 | Promise.prototype.reason = function() {
|
|---|
| 88 | var target = this._target();
|
|---|
| 89 | target._unsetRejectionIsUnhandled();
|
|---|
| 90 | return reason.call(target);
|
|---|
| 91 | };
|
|---|
| 92 |
|
|---|
| 93 | Promise.prototype._value = function() {
|
|---|
| 94 | return this._settledValue();
|
|---|
| 95 | };
|
|---|
| 96 |
|
|---|
| 97 | Promise.prototype._reason = function() {
|
|---|
| 98 | this._unsetRejectionIsUnhandled();
|
|---|
| 99 | return this._settledValue();
|
|---|
| 100 | };
|
|---|
| 101 |
|
|---|
| 102 | Promise.PromiseInspection = PromiseInspection;
|
|---|
| 103 | };
|
|---|