katanakit-js / useAttempt
Function: useAttempt()
ts
function useAttempt<T>(operation, mapError?): Promise<SafeResult<T>>;Defined in: src/core/services/result.service.ts:26
Runs an operation (sync or async) and captures any throw as a Safe Result.
The canonical replacement for ad-hoc try/catch at service boundaries: the mapper defaults to useErrorNormalize, so SDK errors, Error instances and plain strings all come back normalized.
Type Parameters
| Type Parameter | Description |
|---|---|
T | Success value type. |
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
operation | () => T | Promise<T> | undefined | The operation to run. |
mapError | (error) => { details?: unknown; message: string; status: number; } | useErrorNormalize | Optional error mapper (default: useErrorNormalize). |
Returns
Promise<SafeResult<T>>
{ data, error, ok } — never throws.
Example
ts
import { useAttempt } from "katanakit-js";
const result = await useAttempt(() => sdk.insert("posts", row));
if (result.ok) console.log(result.data);
else console.error(result.error.message);