# 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 `) - 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