From 25324d17a866bc04247767e4c9e8dc8adc29542a Mon Sep 17 00:00:00 2001 From: bloodwiing Date: Mon, 20 May 2024 12:14:39 +0300 Subject: [PATCH] Add: Success / Error object utils --- src/lib/util.server.js | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/lib/util.server.js diff --git a/src/lib/util.server.js b/src/lib/util.server.js new file mode 100644 index 0000000..d849d2b --- /dev/null +++ b/src/lib/util.server.js @@ -0,0 +1,58 @@ +import { fail } from "@sveltejs/kit"; + +/** + * @param {import("$types/status").Error} error + * @returns {import("@sveltejs/kit").ActionFailure} + */ +export function errorToFail(error) { + if (error.expected) { + return fail(400, error); + } + return fail(500, error); +} + +/** + * @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); + } +}