UNPKG

derpibooru-api

Version:

Modern TypeScript implementation of Derpibooru API with Zod validation

44 lines (43 loc) 1.45 kB
function safe(promiseOrFunc, options) { if (promiseOrFunc instanceof Promise) { return safeAsync(promiseOrFunc, options ?? {}); } return safeSync(promiseOrFunc, options ?? {}); } async function safeAsync(promise, options) { try { const data = await promise; return { data, success: true }; } catch (localError) { if (options.errorMessage !== undefined) { return { success: false, error: options.errorMessage }; } if (localError instanceof Error) { return { success: false, error: localError.message }; } if (options.processError !== undefined) { return { success: false, error: options.processError(localError) }; } return { success: false, error: "Something went wrong" }; } } function safeSync(func, options) { try { const data = func(); return { data, success: true }; } catch (localError) { if (options.errorMessage !== undefined) { return { success: false, error: options.errorMessage }; } if (localError instanceof Error) { return { success: false, error: localError.message }; } if (options.processError !== undefined) { return { success: false, error: options.processError(localError) }; } return { success: false, error: "Something went wrong" }; } } export { safe };