async-injection
Version:
A robust lightweight dependency injection library for TypeScript.
47 lines • 1.2 kB
JavaScript
import { isPromise } from './utils.js';
/**
* Internal class that allows us to track the state of a promise (chain).
*/
export class State {
static MakeState(promise, rejected, fulfilled) {
const retVal = new State();
if (isPromise(promise)) {
retVal._pending = true;
retVal._promise = promise.then((v) => {
retVal._fulfilled = v;
retVal._pending = false;
return v;
}, (e) => {
retVal._rejected = e;
retVal._pending = false;
throw e;
});
}
else {
retVal._pending = false;
if (rejected) {
retVal._rejected = rejected;
}
else {
retVal._fulfilled = fulfilled;
}
retVal._promise = null;
}
return retVal;
}
constructor() {
}
get promise() {
return this._promise;
}
get pending() {
return this._pending;
}
get fulfilled() {
return this._fulfilled;
}
get rejected() {
return this._rejected;
}
}
//# sourceMappingURL=state.js.map