UNPKG

@caidrive/shared

Version:

caidrive.shared.components

74 lines (73 loc) 1.34 kB
"use strict"; /** * What it does. * * @param name - Parameter description. * @returns Type and description of the returned object. * * @example * ``` * Write me later. * ``` */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Result = void 0; class Result { /** * */ constructor(isSuccess, _error, _value) { this.isSuccess = isSuccess; this._error = _error; this._value = _value; Object.freeze(this); } /** * */ get value() { if (!this.isSuccess) { throw new Error(" Can not get the value of an erroneous result. See errorValue instead."); } return this._value; } /** * */ get isFailure() { return !this.isSuccess; } /** * */ get error() { return this._error; } /** * */ static ok(value) { /* */ return new Result(true, null, value); } /** * */ static fail(error) { /* */ return new Result(false, error); } /** * */ static combine(results = []) { for (let result of results) { if (result.isFailure) return result; } return Result.ok(); } } exports.Result = Result;