UNPKG

vulpix

Version:

CSP-like channels library

33 lines (32 loc) 1.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AsyncResult = void 0; const result_1 = require("../result"); /** * Asynchronous Result wrapper which is equivalent to Result<T, E> but for async computations. * Replaces the use of Promise<Result<T, E>> and hides some Promise methods such as `catch` and `finally` * because it will always resolve. */ class AsyncResult { constructor(promiseLike) { this.promiseLike = promiseLike; } then(onfulfilled, onrejected) { return this.promiseLike.then(onfulfilled, onrejected); } toPromise() { return Promise.resolve(this.promiseLike); } static ok(value) { return value === null || value === undefined ? new AsyncResult(Promise.resolve(result_1.Result.ok())) : new AsyncResult(Promise.resolve(result_1.Result.ok(value))); } static error(error) { return new AsyncResult(Promise.resolve(result_1.Result.error(error))); } static of(promiseLike) { return new AsyncResult(promiseLike); } } exports.AsyncResult = AsyncResult;