@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
92 lines (91 loc) • 2.62 kB
TypeScript
/**
* @module Utilities
*/
export declare const RESULT: {
readonly FAILURE: "failure";
readonly SUCCESS: "success";
};
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export type ResultFailure<TError = unknown> = {
type: (typeof RESULT)["FAILURE"];
error: TError;
};
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export type ResultSuccess<TValue = unknown> = {
type: (typeof RESULT)["SUCCESS"];
value: TValue;
};
/**
* The `Result` type represents either success or failure.
*
* @example
* ```ts
* import { Result, resultFailure, resultSuccess, RESULT } from "@daiso-tech/core/utilities";
*
* function random(): Result<string, Error> {
* const nbr = Math.round(Math.random() * 100);
* if (nbr > 50) {
* // The resultFailure function return a failed result
* return resultFailure(new Error("Unexpected error occured"));
* }
* // The resultSuccess function return a success result
* return resultSuccess("Function succeded");
* }
*
* const result = random();
*
* // Checking for failure
* if (result.type === RESULT.FAILURE) {
* console.log("Error occured:", result.error);
* }
*
* // Checking for success
* if (result.type === RESULT.SUCCESS) {
* console.log("Result was successful:", result.value);
* }
* ```
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export type Result<TValue = unknown, TError = unknown> = ResultFailure<TError> | ResultSuccess<TValue>;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export type InferResultError<TValue> = TValue extends Result ? Extract<TValue, ResultFailure>["error"] : unknown;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export type InferResultSuccess<TValue> = TValue extends Result ? Extract<TValue, ResultSuccess>["value"] : TValue;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export declare function isResultFailure<TError = unknown>(value: unknown): value is ResultFailure<TError>;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export declare function isResultSuccess<TSuccess = unknown>(value: unknown): value is ResultSuccess<TSuccess>;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export declare function isResult<TValue = unknown, TError = unknown>(value: unknown): value is Result<TValue, TError>;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export declare function resultFailure<TError = unknown>(error: TError): ResultFailure<TError>;
/**
*
* IMPORT_PATH: `"@daiso-tech/core/utilities"`
*/
export declare function resultSuccess<TValue>(value: TValue): ResultSuccess<TValue>;