UNPKG

@xylabs/promise

Version:

Base functionality used throughout XY Labs TypeScript/JavaScript libraries

58 lines (53 loc) 1.41 kB
// src/fulfilled.ts var fulfilled = (val) => { return val.status === "fulfilled"; }; // src/fulfilledValues.ts var fulfilledValues = (previousValue, currentValue) => { if (currentValue.status === "fulfilled") previousValue.push(currentValue.value); return previousValue; }; // src/PromiseEx.ts var PromiseEx = class extends Promise { /** Whether the promise has been cancelled via a value callback. */ cancelled; _value; constructor(func, value) { super(func); this._value = value; } // eslint-disable-next-line unicorn/no-thenable then(onfulfilled, onrejected, onvalue) { if (onvalue?.(this._value)) { this.cancelled = true; } return super.then(onfulfilled, onrejected); } /** * Inspects the attached value via the callback; if it returns true, marks the promise as cancelled. * @param onvalue - A callback that receives the attached value and returns whether to cancel. * @returns This instance for chaining. */ value(onvalue) { if (onvalue?.(this._value)) { this.cancelled = true; } return this; } }; // src/rejected.ts var rejected = (val) => { return val.status === "rejected"; }; // src/toPromise.ts function toPromise(value) { return value instanceof Promise ? value : Promise.resolve(value); } export { PromiseEx, fulfilled, fulfilledValues, rejected, toPromise }; //# sourceMappingURL=index.mjs.map