@synet/net
Version:
Network abstraction layer for Synet. visit https://syntehtism.ai for more information.
67 lines (66 loc) • 1.84 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Result = void 0;
const wireguard_errors_1 = require("../errors/wireguard-errors");
/**
* Simplified Result pattern
*/
class Result {
constructor(_isSuccess, _value, _errorType, _errorMessage, _errorCause) {
this._isSuccess = _isSuccess;
this._value = _value;
this._errorType = _errorType;
this._errorMessage = _errorMessage;
this._errorCause = _errorCause;
}
get isSuccess() {
return this._isSuccess;
}
get isFailure() {
return !this._isSuccess;
}
get value() {
if (!this.isSuccess) {
throw new Error("Cannot get value from a failed result");
}
return this._value;
}
get errorType() {
return this._errorType;
}
get errorMessage() {
return this._errorMessage;
}
get errorCause() {
return this._errorCause;
}
static success(value) {
return new Result(true, value);
}
static fail(type, message, cause) {
return new Result(false, undefined, type, message, cause);
}
// Helper methods for cleaner consumer code
onSuccess(fn) {
if (this.isSuccess) {
fn(this.value);
}
return this;
}
onFailure(fn) {
if (this.isFailure && this._errorType) {
fn(this._errorType, this._errorMessage || "", this._errorCause);
}
return this;
}
/**
* Maps a successful result to another type
*/
map(fn) {
if (this.isSuccess) {
return Result.success(fn(this.value));
}
return Result.fail(this._errorType || wireguard_errors_1.ErrorType.UNKNOWN, this._errorMessage || "Unknown error", this._errorCause);
}
}
exports.Result = Result;