UNPKG

@synet/net

Version:

Network abstraction layer for Synet. visit https://syntehtism.ai for more information.

67 lines (66 loc) 1.84 kB
"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;