npm package: @retaila/shared-types
Description: Tipos compartidos para el proyecto Retail
Author: Retail Team
Latest version: 2.0.29

# @retaila/shared-types

Tipos compartidos para el proyecto Retail.

## Instalación

```bash
npm install @retaila/shared-types
```

## Desarrollo

### Publicar nueva versión

```bash
# Compilar
npm run build

# Publicar (patch/minor/major)
npm run publish:patch
npm run publish:minor
npm run publish:major
```

## Uso

```typescript
import { Product, User, Order } from '@retaila/shared-types';
```

## Nueva Estructura Organizada por Entidad

```
src/
├── common/           # Tipos base compartidos (BaseEntity, etc.)
├── product/          # Todo relacionado con productos
│   ├── types.ts      # Interfaces de Product, ProductVariant, etc.
│   ├── dto.ts        # DTOs para operaciones CRUD de productos
│   └── index.ts      # Exportaciones de productos
├── user/             # Todo relacionado con usuarios
│   ├── types.ts      # Interfaces de User, UserAddress
│   ├── dto.ts        # DTOs para operaciones CRUD de usuarios
│   └── index.ts      # Exportaciones de usuarios
├── order/            # Todo relacionado con pedidos
│   ├── types.ts      # Interfaces de Order, OrderItem, etc.
│   ├── dto.ts        # DTOs para operaciones CRUD de pedidos
│   └── index.ts      # Exportaciones de pedidos
├── account/          # Todo relacionado con cuentas
│   ├── types.ts      # Interfaces de Account, AccountSettings
│   ├── dto.ts        # DTOs para operaciones CRUD de cuentas
│   └── index.ts      # Exportaciones de cuentas
└── api/              # Tipos específicos de API
```

## Entidades Disponibles

### Product
- **Product**: Producto con variantes, atributos y categorías
- **ProductVariant**: Variantes de productos
- **ProductCategory**: Categorías de productos
- **ProductAttribute**: Atributos de productos
- **ProductMedia**: Medios de productos

**Enums**: ProductStatus, ProductType, WeightUnit, DimensionUnit, AttributeType, MediaType

### User
- **User**: Usuario del sistema
- **UserAddress**: Direcciones de usuario

**Enums**: AddressType

### Order
- **Order**: Pedido con items y direcciones
- **OrderItem**: Items de pedido
- **OrderAddress**: Direcciones de pedido

**Enums**: OrderStatus, PaymentStatus

### Account
- **Account**: Cuenta/tienda
- **AccountSettings**: Configuraciones de cuenta
- **NotificationSettings**: Configuraciones de notificaciones
- **SeoSettings**: Configuraciones SEO

## Cómo Funciona

Este paquete proporciona tipos TypeScript que se incorporan directamente en el build de cada aplicación:

1. **Instalación**: `npm install file:../shared-types`
2. **Importación**: `import { Product } from '@retail/shared-types'`
3. **Build**: TypeScript automáticamente incluye los tipos en el build de la aplicación
4. **No build separado**: No es necesario compilar este paquete

## Ventajas de la Nueva Estructura

- **Organización por dominio**: Cada entidad tiene su propia carpeta con todos sus tipos relacionados
- **Fácil navegación**: Es más fácil encontrar tipos específicos de una entidad
- **Escalabilidad**: Fácil agregar nuevas entidades sin afectar las existentes
- **Mantenimiento**: Cambios en una entidad están contenidos en su carpeta
- **Importaciones más claras**: `import { Product } from '@retail/shared-types'` importa todo lo relacionado con productos

## Contribución

1. Agregar nuevos tipos en la carpeta de la entidad correspondiente
2. Exportar desde el index.ts de la entidad
3. Los cambios se reflejan inmediatamente en las aplicaciones que usen este paquete