npm package: @pakento/cms-sdk
Description: SDK para conectar tiendas en línea con Pakento CMS
Author: Pakento
Latest version: 4.3.26

# @pakento/cms-sdk

SDK para conectar tiendas en línea con Pakento CMS de forma rápida y sencilla.

## Instalación

```bash
npm install @pakento/cms-sdk
# o
bun add @pakento/cms-sdk
```

## Configuración

Agrega las siguientes variables de entorno a tu proyecto:

```env
PAKENTO_CMS_BASE_URL=https://app.pakento.com
PAKENTO_API_KEY=tu-api-key-aqui
```

## Uso

### Hook useItems

```tsx
import { useItems } from "@pakento/cms-sdk";

function ProductList() {
  const { items, loading, error, totalDocs, refetch } = useItems({
    page: 1,
    limit: 10,
  });

  if (loading) return <div>Cargando...</div>;
  if (error) return <div>Error: {error}</div>;

  return (
    <div>
      <h2>Productos ({totalDocs})</h2>
      {items.map((item) => (
        <div key={item.id}>
          <h3>{item.name}</h3>
          <p>Precio: {item.price_text}</p>
          <img src={item.cover_image_thumbnail_url} alt={item.name} />
        </div>
      ))}
      <button onClick={refetch}>Recargar</button>
    </div>
  );
}
```

### API Service

```tsx
import { pakentoCMSAPI } from "@pakento/cms-sdk";

// Uso directo del servicio
async function getProducts() {
  try {
    const response = await pakentoCMSAPI.getItems(1, 20);
    console.log(response.docs);
  } catch (error) {
    console.error("Error:", error.message);
  }
}
```

## Tipos

```tsx
import type { Item, ItemsResponse, UseItemsReturn } from "@pakento/cms-sdk";
```

## Desarrollo

### Configuración inicial

```bash
# Instalar dependencias
bun install

# Desarrollo con watch mode
bun run dev

# Build
bun run build

# Linting
bun run lint
bun run lint:fix
```

### Desarrollo local con link

Para probar el SDK en tu aplicación local:

1. En el directorio del SDK:

```bash
bun run build
bun link
```

2. En tu aplicación NextJS:

```bash
bun link @pakento/cms-sdk
```

3. Cuando hagas cambios en el SDK:

```bash
bun run build
```

Los cambios se reflejarán automáticamente en tu app.

### Para desconectar el link:

```bash
# En tu aplicación
bun unlink @pakento/cms-sdk

# Reinstalar desde NPM
bun add @pakento/cms-sdk
```

## Publicación

### Variables de entorno necesarias

```env
NPM_TOKEN=tu-npm-token-aqui
```

### Publicación automática

```bash
bun run release
```

Este comando te preguntará qué tipo de versión quieres publicar y ejecutará:

- Lint
- Build
- Commit
- Push
- Publish

### Publicación manual

```bash
# Cambiar versión manualmente en package.json
# Luego:
bun run build
npm publish --access public
```

### Tipos de versión

- **patch**: 1.0.0 → 1.0.1 (bug fixes)
- **minor**: 1.0.0 → 1.1.0 (nuevas features)
- **major**: 1.0.0 → 2.0.0 (breaking changes)
- **custom**: Especificar versión manualmente
- **skip**: No cambiar versión

## Estructura del proyecto

```
src/
├── hooks/
│   └── useItems.ts      # Hook principal para obtener items
├── services/
│   └── api.ts           # Cliente API con Axios
├── types/
│   └── index.ts         # Definiciones de tipos TypeScript
└── index.ts             # Exportaciones principales
```

## Manejo de errores

El SDK incluye manejo de errores para:

- API Key inválida (401)
- Endpoint no encontrado (404)
- Errores del servidor (5xx)
- Errores de conexión
- Errores de GraphQL

## Licencia

MIT

.build

## EJECUCION DE PREUBAS:

npx ts-node -P tsconfig.examples.json examples/testItems.ts

npx ts-node -P tsconfig.examples.json examples/testEntity.ts