EchoForum/src/lib/status.js

46 lines
883 B
JavaScript

/**
* @param {any} result
* @returns {import("$types/status").Error | null}
*/
export function getError(result) {
if ('error' in result) {
return result;
}
return null;
}
/**
* @param {any} result
* @returns {import("$types/status").Success | null}
*/
export function getSuccess(result) {
if ('success' in result) {
return result;
}
return null;
}
/**
* @template T
* @param {any} result
* @param {function(import("$types/status").Error): T} callback
* @returns {T | undefined}
*/
export function runIfError(result, callback) {
if ('error' in result) {
return callback(result);
}
}
/**
* @template T
* @param {any} result
* @param {function(import("$types/status").Success): T} callback
* @returns {T | undefined}
*/
export function runIfSuccess(result, callback) {
if ('success' in result) {
return callback(result);
}
}