open-index/open-npm huggingface dataset:
npm package: @franelfers/github-contributions
Description: Utilidad para obtener estadísticas de contribuciones de GitHub de un usuario. Permite consultar el total de contribuciones y el desglose por año en un rango de fechas configurables.
Latest version: 1.0.0

# @franelfers/github-contributions

Utilidad para obtener estadísticas de contribuciones de GitHub de un usuario. Permite consultar el total de contribuciones y el desglose por año en un rango de fechas configurables.

## Setup

```bash
npm install @franelfers/github-contributions
```

## Uso

### getContributions(user, from, to)

Función que obtiene las estadísticas de contribuciones de GitHub para un usuario en un rango de años.

```typescript
import getContributions from "@franelfers/github-contributions"

// Obtener contribuciones de 2020 a 2023
const stats = await getContributions("torvalds", 2020, 2023)

// Resultado
console.log(stats.totalContributions) // Total de contribuciones
console.log(stats[2020]) // Contribuciones en 2020
console.log(stats[2021]) // Contribuciones en 2021
```

### Parámetros

- `user: string` - Nombre de usuario de GitHub
- `from: number` - Año de inicio (inclusive)
- `to: number` - Año de fin (inclusive)

### Retorna

`Promise` que resuelve a un objeto con:
- `totalContributions: number` - Total de contribuciones en el rango
- `[year: number]: number` - Contribuciones para cada año

**Ejemplo:**

```typescript
const stats = await getContributions("octocat", 2020, 2023)

// Resultado
{
  totalContributions: 5000,
  2020: 1000,
  2021: 1200,
  2022: 1300,
  2023: 1500
}
```

### Ejemplo completo

```typescript
import getContributions from "@franelfers/github-contributions"

async function analyzeUserContributions() {
  try {
    const stats = await getContributions("linus", 2019, 2024)
    
    console.log(`Total contribuciones: ${stats.totalContributions}`)
    
    for (let year = 2019; year <= 2024; year++) {
      console.log(`${year}: ${stats[year]} contribuciones`)
    }
  } catch (error) {
    console.error("Error obteniendo estadísticas:", error)
  }
}

analyzeUserContributions()
```

## Características

- ✅ Obtiene estadísticas reales de GitHub
- ✅ Desglose por año en un rango configurable
- ✅ Retorna total de contribuciones y valores individuales
- ✅ Basado en Promise para integración moderna
- ✅ Soporte para cualquier usuario público de GitHub
npm package: @franelfers/queue
Description: Paquete para gestionar la ejecución de funciones en cola con control de intervalo. Limita la ejecución de funciones a una por intervalo configurable (por defecto 1000ms).
Latest version: 1.0.0

# @franelfers/queue

Paquete para gestionar la ejecución de funciones en cola con control de intervalo. Limita la ejecución de funciones a una por intervalo configurable (por defecto 1000ms).

## Setup

```bash
npm install @franelfers/queue
```

## Uso

### QueueExecution

Clase que gestiona una cola de ejecución con intervalos configurables entre cada ejecución.

```typescript
import { QueueExecution } from "@franelfers/queue"

// Instanciar con intervalo por defecto (1000ms)
const queue = new QueueExecution()

// Or con intervalo personalizado
const queue = new QueueExecution(2000)

// Con logger personalizado
const queue = new QueueExecution(1000, customLogger)
```

### executeWhenAvailable<T>(callback, timeout?)

Encola una función para ser ejecutada cuando esté disponible. Las funciones se ejecutan cronológicamente, cada una separada por el intervalo configurado.

**Parámetros:**
- `callback: () => T` - Función a ejecutar cuando esté disponible
- `timeout?: number` - Timeout en milisegundos (por defecto 30000ms)

**Retorna:** `Promise<T>` - Promise que resuelve con el resultado de la callback o rechaza si se alcanza el timeout

**Ejemplo:**

```typescript
const queue = new QueueExecution(1000)

// Ejecutar una función
try {
  const result = await queue.executeWhenAvailable(() => {
    console.log("Executing now!")
    return "done"
  })
  console.log(result) // "done"
} catch {
  console.log("Timeout while waiting for execution")
}

// Múltiples ejecuciones en cola
const promise1 = queue.executeWhenAvailable(() => console.log("1"))
const promise2 = queue.executeWhenAvailable(() => console.log("2"))
const promise3 = queue.executeWhenAvailable(() => console.log("3"))

// Se ejecutarán en orden: 1, 2, 3 (cada una con 1000ms de separación)
await Promise.all([promise1, promise2, promise3])
```

## Características

- ✅ Ejecución secuencial de funciones con intervalo configurable
- ✅ Soporte para Promises y tipos genéricos
- ✅ Timeout configurable para cada ejecución
- ✅ Logging integrado de operaciones de cola
- ✅ Manejo automático de limpieza de timers