TryCatch and utils

This commit is contained in:
2025-07-13 12:43:43 +03:00
parent cfb756d82c
commit 4beee0399f
2 changed files with 49 additions and 0 deletions

32
tryCatch.ts Normal file
View File

@@ -0,0 +1,32 @@
// Types for the result object with discriminated union
type Success<T> = {
data: T;
error: null;
};
type Failure<E> = {
data: null;
error: E;
};
type Result<T, E = Error> = Success<T> | Failure<E>;
// Main wrapper function
export async function tryCatch<T, E = Error>(promise: Promise<T>): Promise<Result<T, E>> {
try {
const data = await promise;
return { data, error: null };
} catch (error) {
return { data: null, error: error as E };
}
}
// function for sync
export function tryCatchSync<T, E = Error>(callback: () => T): Result<T, E> {
try {
const data = callback();
return { data, error: null };
} catch (error) {
return { data: null, error: error as E };
}
}

17
utils.ts Normal file
View File

@@ -0,0 +1,17 @@
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export function normalizeLink(link: string) {
let tmp = link;
// Remove double slashes
while (tmp.includes("//")) {
tmp = tmp.replaceAll("//", "/");
}
return tmp;
}