# Ejemplo: CSV con dos vistas

Patrón del catálogo: "Ejemplo 1: CSV con una vista" + "Ejemplo 2: añadir una segunda vista al
mismo CSV" — una sola fuente (`pokemons-data.csv`), un `csv-table` → `table`, y dos vistas
independientes (`stats`, `pokedex`) que reejecutan el mismo transform contract por separado.

## Qué copiar

- `pokemons-data.mview/mview.json` — declara `source.adapter: "csv-table"`, `source.input: "table"`
  y dos entradas en `views[]`, cada una con su propio `transform.mjs` / `view.html`.
- La forma de cada `transform.mjs`: valida columnas requeridas, deriva campos, y expone
  `context.manifest` / `context.view` en el modelo devuelto.

## Qué reemplazar

- `pokemons-data.csv` por la fuente real.
- Las columnas requeridas y las métricas derivadas en cada `transform.mjs`.
- El diseño de cada `view.html` — no heredar el grid/estilos de la Pokédex como plantilla visual.

## Verificación

```bash
node --test test.mjs
```

`test.mjs` valida el manifiesto, ejecuta ambas vistas contra una copia temporal de la fuente,
compara los modelos con `expected/data.json`, agrega una fila a la copia temporal, corre un
refresh, y confirma que el `total` de ambas vistas cambió sin modificar `pokemons-data.csv` ni
ningún archivo del paquete.
