> ## Documentation Index
> Fetch the complete documentation index at: https://acme-c84a37e5.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Introducción

> Manejo de errores tipado para TypeScript con lógica de reintentos y control de concurrencia

<img className="block dark:hidden" src="https://mintcdn.com/acme-c84a37e5/F2BjdC4pEAaDdoiY/logo/light.svg?fit=max&auto=format&n=F2BjdC4pEAaDdoiY&q=85&s=18e71ec927d036edfd6ec1593b26c259" alt="Logo Light" width="200" height="50" data-path="logo/light.svg" />

<img className="hidden dark:block" src="https://mintcdn.com/acme-c84a37e5/F2BjdC4pEAaDdoiY/logo/dark.svg?fit=max&auto=format&n=F2BjdC4pEAaDdoiY&q=85&s=0ceeb50908b3b6e5841c41c2c1a689bf" alt="Logo Dark" width="200" height="50" data-path="logo/dark.svg" />

## Bienvenido a Tryo

Una librería moderna y tipada para el manejo de errores que hace que las operaciones asíncronas sean predecibles y resilientes.

<CardGroup cols={2}>
  <Card title="Inicio Rápido" icon="rocket" href="/es/quickstart">
    Empieza en menos de 5 minutos
  </Card>

  <Card title="Referencia de API" icon="code" href="/es/api-reference/tryo">
    Explora la documentación completa de la API
  </Card>

  <Card title="Ejemplos" icon="lightbulb" href="/es/examples/react">
    Ejemplos y patrones del mundo real
  </Card>

  <Card title="GitHub" icon="github" href="https://github.com/tu-usuario/tu-repo">
    Ver código fuente y contribuir
  </Card>
</CardGroup>

## Características

<AccordionGroup>
  <Accordion icon="check" title="Manejo de Errores Tipado">
    No más bloques `try-catch`. Obtén uniones discriminadas con soporte completo de TypeScript.

    ```typescript theme={null}
    const result = await runner.run(() => apiCall());
    if (result.ok) {
      // TypeScript sabe que data está disponible
      console.log(result.data);
    }
    ```
  </Accordion>

  <Accordion icon="arrows-rotate" title="Lógica de Reintentos Inteligente">
    Backoff exponencial integrado con jitter para prevenir el problema de thundering herd.

    ```typescript theme={null}
    await runner.run(() => unstableApi(), {
      retry: {
        maxRetries: 3,
        strategy: RetryStrategies.exponential(1000),
      }
    });
    ```
  </Accordion>

  <Accordion icon="layer-group" title="Control de Concurrencia">
    Ejecuta múltiples operaciones con paralelismo controlado.

    ```typescript theme={null}
    await runner.all(tasks, { 
      concurrency: 5 
    });
    ```
  </Accordion>

  <Accordion icon="ban" title="Manejo de Abort">
    Soporte de primera clase para `AbortController` y cancelación elegante.

    ```typescript theme={null}
    await runner.run(() => fetch('/api', { signal }), {
      ignoreAbort: true
    });
    ```
  </Accordion>
</AccordionGroup>

## Instalación

<CodeGroup>
  ```bash npm theme={null}
  npm install tryo
  ```

  ```bash pnpm theme={null}
  pnpm add tryo
  ```

  ```bash yarn theme={null}
  yarn add tryo
  ```
</CodeGroup>

## Ejemplo Rápido

```typescript theme={null}
import tryo from "tryo";

const runner = tryo();

const result = await runner.run(() => fetch("https://api.example.com/users"), {
  retry: {
    maxRetries: 3,
    strategy: RetryStrategies.fixed(1000),
  },
  hooks: {
    onError: (error) => console.error(error),
  }
});

if (result.ok) {
  const users = await result.data.json();
  console.log(users);
}
```

<Note>
  **Consejo Pro:** Usa `tryo()` una vez y reutilízalo en tu aplicación para un
  manejo de errores consistente.
</Note>

## Siguientes Pasos

<CardGroup cols={2}>
  <Card title="Conceptos Principales" icon="book" href="/es/concepts/result-type">
    Aprende sobre tipos Result y normalización de errores
  </Card>

  <Card title="Integración con React" icon="react" href="/es/examples/react">
    Mira cómo usarlo con hooks de React
  </Card>
</CardGroup>
