navidev-adt-api
Version:
API de conexión al Abap Developer Tools
76 lines (75 loc) • 1.8 kB
JavaScript
;
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;