diff options
| author | MohamedBassem <me@mbassem.com> | 2025-07-27 22:50:52 +0100 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2025-07-27 22:50:52 +0100 |
| commit | 160fd9712ed14d80b665d5a6c19bc4ee806ed5eb (patch) | |
| tree | ac0ac5ba8eb0adcef28e105be0ef805bc3b89ded /packages/shared/tryCatch.ts | |
| parent | afcc27d5578377d66d79506a147ef8e9fd668783 (diff) | |
| download | karakeep-160fd9712ed14d80b665d5a6c19bc4ee806ed5eb.tar.zst | |
refactor: Refactor crawlerWorker to use tryCatch
Diffstat (limited to 'packages/shared/tryCatch.ts')
| -rw-r--r-- | packages/shared/tryCatch.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/shared/tryCatch.ts b/packages/shared/tryCatch.ts new file mode 100644 index 00000000..9b50a121 --- /dev/null +++ b/packages/shared/tryCatch.ts @@ -0,0 +1,24 @@ +// Types for the result object with discriminated union +interface Success<T> { + data: T; + error: null; +} + +interface 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 }; + } +} |
