@caidrive/shared
Version:
caidrive.shared.components
74 lines (73 loc) • 1.34 kB
JavaScript
;
/**
* 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;