Documentation Index
Fetch the complete documentation index at: https://acme-c84a37e5.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Visión general
Las funciones de la librería devuelven un resultado que evita excepciones y facilita el control de flujo.
run devuelve un objeto con ok: true y data, o ok: false y error.
all devuelve un array con resultados por tarea: ok, error o skipped.
- Las métricas opcionales ayudan a observar intentos, reintentos y duración.
RunResult en run
import { run } from "tryo";
type User = { id: string; name: string };
const result = await run<User>(() => fetch("/api/user").then((r) => r.json()));
if (result.ok) {
console.log(result.data);
} else {
console.error(result.error.code);
}
Estructura del resultado:
- Éxito:
{ ok: true, data, error: null, metrics? }
- Error:
{ ok: false, data: null, error, metrics? }
Las métricas incluyen:
totalAttempts
totalRetries
totalDuration
lastError?
RunAllItemResult en all
import { all } from "tryo";
const tasks = [
() => fetch("/a").then((r) => r.text()),
() => fetch("/b").then((r) => r.text()),
() => fetch("/c").then((r) => r.text()),
];
const results = await all<string>(tasks);
for (const r of results) {
if (r.status === "ok") console.log(r.data);
if (r.status === "error") console.error(r.error.code);
}
Estados posibles por ítem:
ok: tarea exitosa con data
error: tarea fallida con error
skipped: tarea no ejecutada por cancelación o fail-fast
Helpers de tipo para all
La librería exporta utilidades para discriminar resultados y mejorar el tipado:
import { isSuccess, type SuccessResult, type ErrorResult } from "tryo";
const results = await all<number>([
async () => 1,
async () => {
throw new Error("x");
},
]);
const successes: SuccessResult<number>[] = results.filter(isSuccess);
const failures: ErrorResult<any>[] = results.filter(
(r) => r.status === "error"
);