UNPKG

navidev-adt-api

Version:

API de conexión al Abap Developer Tools

76 lines (75 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.right = exports.left = exports.Right = exports.Left = exports.Result = void 0; class Result { constructor(isSuccess, error, value) { if (isSuccess && error) { throw new Error("InvalidOperation: A result cannot be successful and contain an error"); } if (!isSuccess && !error) { throw new Error("InvalidOperation: A failing result needs to contain an error message"); } this.isSuccess = isSuccess; this.isFailure = !isSuccess; this._error = error; this._value = value; Object.freeze(this); } getValue() { /*if (!this.isSuccess) { throw new Error( "Can't get the value of an error result. Use 'errorValue' instead." ); }*/ return this._value; } getErrorValue() { return this._error; } static ok(value) { return new Result(true, undefined, 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; class Left { constructor(value) { this.value = value; } isLeft() { return true; } isRight() { return false; } } exports.Left = Left; class Right { constructor(value) { this.value = value; } isLeft() { return false; } isRight() { return true; } } exports.Right = Right; const left = (l) => { return new Left(l); }; exports.left = left; const right = (a) => { return new Right(a); }; exports.right = right;