# Versiones, soporte y migración

## Política

| netpay3ds | Build Angular | Package compatibility validated | Functional certification |
| --- | ---: | --- | --- |
| 1.x | 13 | Angular 13.2–21 | Official sample mocks PASS; Sandbox real external |
| 2.x | 22 | Angular 22 | Golden 3DS mocks PASS; external Sandbox pending |

| Era | Línea | Angular | Dist-tag |
| --- | --- | --- | --- |
| Antes de 2.x estable | 1.x | Build 13; consumers 13.2–21 | `latest` y `legacy` |
| Pruebas modernas | 2.x prerelease | 22 | `next` |
| Después de 2.x estable | 1.x | Build 13; consumers 13.2–21 | `legacy` |
| Después de 2.x estable | 2.x | 22 | `latest` |

**Legacy EOL: TBD.** No se establece una fecha sin aprobación de Producto,
Integraciones y Producción.

Angular 22 es la base técnica de `netpay3ds` 2.x. La línea 1.x lo rechaza
intencionalmente mediante peers. Un build de consumer exitoso no sustituye la
certificación funcional contra Sandbox y Hosted Checkout.

## De 0.5.7 a 1.0.0

No cambia el nombre del paquete ni el API público. Mientras 1.x sea la línea
estable principal, ambos comandos instalan la última 1.x:

```bash
npm install netpay3ds
npm install netpay3ds@legacy
```

No se esperan cambios de código fuente en el consumer únicamente por actualizar
de 0.5.7 a 1.0.0. Esto no garantiza impacto cero: cada aplicación debe ejecutar
su regresión funcional 3DS, incluidos frictionless, challenge y confirm, antes
de promover la actualización.

No se requieren `--force` ni `--legacy-peer-deps`. El frontend debe permitir
los hosts descritos en el README mediante CSP. El backend debe publicar el
endpoint de configuración por ambiente, con CORS restringido, sin credenciales
y con una respuesta válida que incluya URL e integrity de Songbird.

Antes de liberar 1.0.0 deben validarse `init`, `config`, `setup`, `proceed`,
`canProceed` y el flujo de confirm mediante el sample oficial. La conectividad
Sandbox/Producción real se registra como validación externa cuando requiere
credenciales u origins que no existen en el repositorio.

Una aplicación con `"netpay3ds": "0.5.7"` permanece exactamente en esa versión.
El rango `"^0.5.7"` tampoco puede resolver 1.0.0; este comportamiento se prueba
automáticamente como parte de `npm run verify:semver`.

## De 1.x a 2.x

La migración a Angular 22 se realizó en `release/2.x`, separada de
`release/1.x`:

1. Se ejecutaron las migraciones oficiales de Angular de forma secuencial por
   cada major desde 13 hasta 22.
2. Se ejecutaron tests, coverage y build después de cada major.
3. Se preservaron la API y el comportamiento observable de 1.1.1.
4. Antes de publicar, se debe validar `2.0.0-rc.1` con `next` y consumidores
   reales.
5. Sólo `2.0.0` estable puede promoverse a `latest` tras las aprobaciones
   externas.

La versión 2.x deberá declarar peers Angular `>=22.0.0 <23.0.0`. Una aplicación
con `"netpay3ds": "^1.0.0"` no recibirá 2.x automáticamente.

## Mantenimiento de 2.x

- Parches de seguridad: prioritarios.
- Patches: actualización frecuente con todas las validaciones.
- Minors: revisión controlada.
- Majors: migración planificada.

Ninguna actualización se publica sólo porque aparezca en `npm outdated`.
