26c217e0eb
- Updated jest ecosystem to v30.x in backend/package.json - Added controlled overrides for test-exclude to remove inflight@1.0.6 and glob@7.2.3 - Updated README.md with deprecation handling procedures and debugging steps - Modified .kilo/plans/1779643125894-lucky-island.md to document systematic approach for dependency management
99 lines
4.2 KiB
Markdown
99 lines
4.2 KiB
Markdown
# Plan: Hantera deprecated dependencies (`inflight` / `glob`) i backend
|
|
|
|
## Mål
|
|
Minska säkerhets- och stabilitetsrisk från deprecated/transitiva paket i `backend` genom kontrollerad uppgradering, verifiering och CI-skydd utan att bryta befintliga flöden.
|
|
|
|
## Bakgrund
|
|
`npm ci` i `backend` visar varningar för:
|
|
- `inflight@1.0.6` (ej underhållen, memory leak)
|
|
- `glob@7.2.3` (föråldrad med kända sårbarheter)
|
|
|
|
Detta är normalt transitiva beroenden, men bör ändå adresseras systematiskt.
|
|
|
|
## Scope
|
|
- Endast Node-backend (`backend/`)
|
|
- Inga funktionella ändringar i app-logik
|
|
- Fokus: dependency graph, lockfile, CI-kontroller, dokumentation
|
|
|
|
## Implementationsplan
|
|
|
|
1. **Kartlägg källan till transitiva paket**
|
|
- Kör i `backend/`:
|
|
- `npm ls inflight`
|
|
- `npm ls glob`
|
|
- Dokumentera exakt vilka toppnivåpaket som drar in versionerna.
|
|
- Syfte: avgöra om problemet löses via toppnivåuppdatering eller `overrides`.
|
|
|
|
2. **Uppdatera direkta beroenden först (minst invasivt)**
|
|
- Kör riktad uppdatering av paket som identifieras i steg 1 (t.ex. test-/build-verktyg först, runtime efteråt).
|
|
- Kör därefter:
|
|
- `npm ci`
|
|
- `npm ls inflight glob`
|
|
- Beslutspunkt:
|
|
- Om `glob@7`/`inflight` försvinner: gå vidare till verifiering.
|
|
- Om kvarstår: gå till steg 3.
|
|
|
|
3. **Inför `overrides` i `backend/package.json` vid behov**
|
|
- Lägg till kontrollerade `overrides` för att styra bort sårbara/föråldrade versioner.
|
|
- Prioritet:
|
|
- `glob` till modern, kompatibel version i aktiv support.
|
|
- Undvik tvingad ersättning av `inflight` med inkompatibla alias om konsumentpaket inte stödjer det.
|
|
- Regenerera lockfile via normal npm-process och verifiera installationsflöde.
|
|
|
|
4. **Säkerhetsverifiera dependency-trädet**
|
|
- Kör:
|
|
- `npm audit --audit-level=high`
|
|
- `npm audit` (för full kontext)
|
|
- Klassificera återstående fynd:
|
|
- fixbara nu
|
|
- accepterad residualrisk (med motivering)
|
|
|
|
5. **Regressionstest av backend efter dependency-ändringar**
|
|
- Kör samma kvalitetskedja som används i projektet:
|
|
- `npm run prisma:validate`
|
|
- `npm run prisma:generate`
|
|
- `npm run typecheck`
|
|
- `npm run lint`
|
|
- `npm test`
|
|
- `npm run build`
|
|
- Syfte: säkerställa att dependency-upgrade inte skapar drift-/build-regressioner.
|
|
|
|
6. **Skärp CI-policy (om inte redan tillräcklig)**
|
|
- Verifiera att `.github/workflows/test.yml` fortsatt kör `npm audit --audit-level=high` för backend-push.
|
|
- Om önskat: höj till `critical` eller behåll `high` enligt teamets riskprofil.
|
|
- Rekommendation: behåll `high` i nuläget för bättre tidig signal i ett aktivt projekt.
|
|
|
|
7. **Dokumentera beslut och operativ hantering**
|
|
- Uppdatera `README.md` kort med:
|
|
- att deprecated-varningar hanterats
|
|
- hur man felsöker nya transitiva varningar (`npm ls <paket>`)
|
|
- policy för hur snabbt dependencies ska uppdateras
|
|
|
|
## Risker och mitigering
|
|
- **Risk: Breaking changes vid dependency bump**
|
|
- Mitigering: uppgradera stegvis + full kvalitetskedja i steg 5.
|
|
- **Risk: `overrides` maskerar underliggande kompatibilitetsproblem**
|
|
- Mitigering: använd `overrides` endast när toppnivåuppdatering inte räcker; dokumentera tydligt varför.
|
|
- **Risk: Kvarvarande audit-fynd blockerar release**
|
|
- Mitigering: klassificera residualrisk och skapa uppföljningsärende med ägare och deadline.
|
|
|
|
## Leverabler
|
|
- Uppdaterat `backend/package.json` (ev. `overrides` + uppdaterade versionsintervall)
|
|
- Uppdaterad `backend/package-lock.json`
|
|
- Eventuell liten CI-justering i `.github/workflows/test.yml`
|
|
- Kort dokumentationsnotis i `README.md`
|
|
|
|
## Acceptanskriterier
|
|
- `npm ls inflight` visar inte problematisk kedja, eller tydligt dokumenterad residualrisk med motivering.
|
|
- `npm ls glob` visar ingen osäker/föråldrad kedja (eller dokumenterad temporär avvikelse med plan).
|
|
- `npm audit --audit-level=high` passerar, eller kvarvarande fynd är explicit riskaccepterade.
|
|
- Backend-kvalitetskedjan passerar utan regression.
|
|
- CI för backend fortsätter passera.
|
|
|
|
## Rekommenderad genomförandeordning
|
|
1) Kartlägg (`npm ls`)
|
|
2) Riktade uppdateringar
|
|
3) `overrides` endast vid behov
|
|
4) Audit + full testkedja
|
|
5) CI/dokumentation
|