ixiclinicDocs
DesarrolladoresApps del monorepo

packages/types

@ixiclinic/types — tipos TypeScript compartidos (entidades y contratos de API) que consumen todas las apps del monorepo. Compila primero en Turbo.

@ixiclinic/types (packages/types) es el paquete de tipos TypeScript compartidos del monorepo: las entidades del dominio y los contratos de la API. Todas las apps lo importan vía @ixiclinic/types, de modo que un mismo tipo (un Patient, un Invoice, una AuthResponse) significa lo mismo en el API, el admin, el portal, el lab-site y el mobile.

StackTypeScript (sin runtime)
Paquete@ixiclinic/types
Outputdist/ (tsc) — main: dist/index.js, types: dist/index.d.ts

Nota: Es una librería, no una app desplegable. En el orden de build de Turbo compila primero, porque todas las apps dependen de él vía ^build (ver Arquitectura).

Estructura (packages/types/src/)

El barrel index.ts reexporta los dos módulos:

export * from './entities.js';
export * from './api.js';

entities.ts — entidades del dominio

Agrupa las interfaces y tipos de las entidades del sistema, entre ellas:

  • Núcleo / SaaS: Tenant, Branch, User, UserTenant, Plan, Subscription, Demo, Organization, SaasUser.
  • Slider / Hero Builder: SlideType, SlideBlock, SlideBlockStyle, HomeSlide, SliderConfig, TenantSliderSettings y sus tipos de soporte.
  • Website Builder: GlobalConfig, HeaderConfig, FooterConfig, SectionBase, las variantes de sección (HeroSection, ServicesSection, InfoBarSection, TestimonialsSection, CtaSection, StatsSection, ContactSection, FaqSection, AppointmentCtaSection), la unión WebsiteSection, WebsiteSectionType y WebsiteConfig.
  • Portal del cliente: ClientAccount, Company, CompanyEmployee, ClientAppointment.
  • Recetas y clínica: Prescription, PrescriptionTest, PrescriptionMedication, PatientVitals, PatientNote, y los tipos de historial clínico (HistorialResultRow, HistorialDoctor, HistorialOrder, PatientHistorialStats, PatientHistorial).

api.ts — contratos de la API

Tipos de petición/respuesta compartidos entre el API y los clientes:

  • Genéricos / auth: PaginatedResponse<T>, LoginRequest, RegisterRequest, AuthResponse, RefreshRequest, RefreshResponse, SwitchContextRequest, ApiError.
  • SaaS: SaasDashboard, DemoMetrics, SaasAuthResponse.
  • Portal del cliente: ClientAuthResponse, ClientLoginRequest, ClientRegisterPatientRequest, ClientRegisterCompanyRequest.

Cómo añadir un tipo

  1. Edita packages/types/src/entities.ts (entidad de dominio) o packages/types/src/api.ts (contrato de petición/respuesta) y exporta la interfaz o el tipo nuevo. Al estar reexportados por index.ts, queda disponible automáticamente como @ixiclinic/types.

  2. Recompila el paquete para que las apps vean el .d.ts actualizado:

    pnpm --filter @ixiclinic/types build   # o pnpm build (Turbo compila types primero)
  3. Úsalo desde cualquier app:

    import type { Patient, AuthResponse } from "@ixiclinic/types";

Nota: Como types compila antes que todo lo demás, si una app no "ve" un tipo recién agregado, casi siempre es porque falta recompilar el paquete (dist/ desactualizado).

On this page