Types

Contratti TypeScript condivisi tra shell e microfrontend. Manifest, lifecycle, contesto runtime, routing, componenti, utente, HTTP, tema, configurazione.

I contratti

@pzeta/mfe-contracts/types è la superficie tipizzata della libreria. Definisce le interfacce che shell e MFE concordano per integrarsi senza accoppiamento implementativo. Tutti i tipi sono importabili come pure type (zero runtime cost):

import type {
  MFEManifest,
  MFEModule,
  MFEContext,
  MFERoute,
  MFEComponent,
  MFEUser,
  MFEEventBus,
  MFEHttpClient,
  MFETheme,
  MFEConfig,
} from '@pzeta/mfe-contracts/types'

Mappa concettuale

       SHELL                                    MICROFRONTEND
                                                
  ┌─ MFEConfig ──────┐                    ┌── MFEModule ──────┐
  │ name, url,       │   1. load via      │ getManifest()     │
  │ scope, module    │ ─────────────────► │ mount(el, ctx)    │
  │ environment      │                    │ unmount()         │
  └──────────────────┘                    │ onLoad?, ...      │
                                          └─────────┬─────────┘
                                                    │
                                                    │ 2. ritorna
                                                    ▼
                                          ┌── MFEManifest ────┐
                                          │ name, version     │
                                          │ description, icon │
                                          │ routes[]          │
                                          │ components[]?     │
                                          │ permissions[]?    │
                                          │ tailwindStyles?   │
                                          └─────────┬─────────┘
                                                    │
                                                    │ 3. mount()
                                                    ▼
                                          ┌── MFEContext ─────┐
                                          │ basePath          │
                                          │ onNavigate(path)  │
                                          │ http              │
                                          │ eventBus?         │
                                          │ getUser?          │
                                          │ getToken?         │
                                          │ env?              │
                                          │ theme?            │
                                          └───────────────────┘

Tipi disponibili

Manifest e lifecycle

TipoDescrizione
MFEManifestMetadata del MFE (nome, versione, route, componenti, permessi)
MFEModuleLifecycle hooks (mount/unmount obbligatori; onLoad/onBeforeUnmount/onRouteChange/getViewComponent opzionali)
MFEConfigConfigurazione di caricamento (URL ESM, scope, environment)
MFELoadedComponentComponente Vue caricato dinamicamente + metadata

Runtime context

TipoDescrizione
MFEContextBridge shell → MFE (basePath, http, eventBus, theme, onNavigate, ...)
MFEUserUtente autenticato (id, username, email, roles, permissions)
MFEEventBusBus eventi cross-MFE (emit/on/off)
MFEHttpClientClient HTTP fornito dalla shell (auth gestita) — get/post/put/patch/delete
MFEThemeStato e API tema condiviso (light/dark/system)

Routing e componenti

TipoDescrizione
MFERouteDefinizione rotta esposta (path, label, icon, permission, meta)
MFEComponentComponente Vue esposto dal MFE (nome, props, eventi, esempi)

Stili

TipoDescrizione
MFETailwindStylesEstensione tema Tailwind e classi CSS custom esposte dal MFE

Sotto-pagine