Files
recipe-app/.kilo/plans/1779643125894-lucky-island.md
T
Nils-Johan Gynther 26c217e0eb
Test Suite / backend-pr-quick (push) Has been skipped
Test Suite / quick-import-pr-quick (push) Has been skipped
Test Suite / backend-full (push) Successful in 6m16s
Test Suite / flutter-quality (push) Failing after 1m15s
chore(backend): address deprecated dependencies in test stack
- 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
2026-05-24 19:47:24 +02:00

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