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
This commit is contained in:
@@ -1,51 +1,98 @@
|
||||
# Plan: Konfigurera minimiålder för paketrelease
|
||||
# Plan: Hantera deprecated dependencies (`inflight` / `glob`) i backend
|
||||
|
||||
## Mål
|
||||
Införa en "cooldown" för npm-paket så att mycket nyligen publicerade versioner blockeras vid installation i projektet.
|
||||
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.
|
||||
|
||||
## Nuläge (verifierat)
|
||||
- Projektet använder npm (lockfile finns i `backend/package-lock.json` och `.kilo/package-lock.json`).
|
||||
- Backend installeras i CI med `npm ci` i `.github/workflows/test.yml`.
|
||||
- Ingen befintlig `.npmrc` i repo-roten eller i `backend/`.
|
||||
- Ingen Renovate/Dependabot-konfiguration hittades i repot.
|
||||
## 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)
|
||||
|
||||
## Föreslagen implementation
|
||||
1. **Sätt projektpolicy i backend**
|
||||
- Skapa `backend/.npmrc` med:
|
||||
- `min-release-age=1`
|
||||
- Motivering: backend är den körda Node-applikationen och har tydlig CI-kedja med `npm ci`.
|
||||
Detta är normalt transitiva beroenden, men bör ändå adresseras systematiskt.
|
||||
|
||||
2. **(Valfritt) Sätt policy för Kilo-verktygsmappen**
|
||||
- Om `.kilo/` installeras/uppdateras aktivt i detta repo, skapa även `.kilo/.npmrc` med samma värde.
|
||||
- Om `.kilo/` är sekundär och inte del av normal drift kan detta utelämnas.
|
||||
## Scope
|
||||
- Endast Node-backend (`backend/`)
|
||||
- Inga funktionella ändringar i app-logik
|
||||
- Fokus: dependency graph, lockfile, CI-kontroller, dokumentation
|
||||
|
||||
3. **CI-effekt (ingen workflow-ändring krävs)**
|
||||
- `npm ci` i GitHub Actions kommer automatiskt respektera `backend/.npmrc`.
|
||||
- Ingen ändring av `.github/workflows/test.yml` behövs för grundfunktionen.
|
||||
## Implementationsplan
|
||||
|
||||
4. **Dokumentera kort i befintlig drift-/utvecklingsdokumentation**
|
||||
- Lägg 2-4 rader där dependency-policy redan beskrivs (om sådan sektion finns).
|
||||
- Innehåll: syfte, värde (`1` dag), och hur man tillfälligt hanterar blockerade uppgraderingar.
|
||||
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`.
|
||||
|
||||
5. **Verifiering**
|
||||
- Lokalt i `backend/`:
|
||||
- `npm config get min-release-age` (ska visa `1` med projektconfig aktiv)
|
||||
- `npm ci` (ska fungera normalt)
|
||||
- CI:
|
||||
- Bekräfta att befintligt workflow passerar utan regressionsfel.
|
||||
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.
|
||||
|
||||
## Risker och hantering
|
||||
- **Risk:** Legitima hotfix-versioner blir tillfälligt blockerade (<24h gamla).
|
||||
- **Hantering:** vänta in cooldown eller använd tillfällig manuell policyjustering i kontrollerad incident.
|
||||
- **Risk:** Inkonsistent policy om flera npm-delprojekt hanteras olika.
|
||||
- **Hantering:** besluta explicit om `.kilo/` ska omfattas.
|
||||
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.
|
||||
|
||||
## Rekommenderade standardval
|
||||
- Minimiålder: **1 dag** (`min-release-age=1`) nu.
|
||||
- Scope: **backend först**; utöka till `.kilo/` endast om den mappen används aktivt i teamets vardagsflö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
|
||||
- `backend/.npmrc` finns med `min-release-age=1`.
|
||||
- `npm ci` i backend fungerar lokalt.
|
||||
- CI-jobben som kör backend-installation fortsätter passera.
|
||||
- (Om valt) `.kilo/.npmrc` följer samma policy.
|
||||
- `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
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
- **Supply-chain-skydd för npm i backend:** `backend/.npmrc` innehåller nu `min-release-age=1`, vilket kräver att paketversioner är minst 1 dag gamla innan `npm install`/`npm ci` tillåts.
|
||||
- **CI påverkas automatiskt:** Backend-jobben i GitHub Actions använder redan `npm ci` i `backend/` och följer därmed policyn utan workflow-ändringar.
|
||||
- **Driftpolicy:** Vid blockerad akut uppgradering väntar vi normalt ut cooldown-fönstret i stället för att öppna generell policy.
|
||||
- **Deprecation-kedja åtgärdad i backend-teststacken:** `jest` uppgraderad till 30.x och backend använder en kontrollerad `overrides` för `test-exclude`, vilket tar bort `inflight@1.0.6` och `glob@7` från dependency-trädet.
|
||||
- **Felsökning av transitiva varningar:** Kör `npm ls <paket>` i `backend/` för att se exakt toppnivåkälla innan åtgärd (uppdatera direkt beroende först, `overrides` endast vid behov).
|
||||
- **Uppdateringspolicy för dependencies:** Säkerhets- och deprecation-relaterade backend-beroenden prioriteras löpande och ska normalt hanteras i närmast följande utvecklingscykel.
|
||||
|
||||
# Nyheter och förbättringar (2026-05-21)
|
||||
|
||||
|
||||
Generated
+1509
-889
File diff suppressed because it is too large
Load Diff
@@ -48,7 +48,7 @@
|
||||
"@nestjs/testing": "^11.1.19",
|
||||
"@types/bcryptjs": "^2.4.6",
|
||||
"@types/express": "^5.0.5",
|
||||
"@types/jest": "^29.5.14",
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/multer": "^1.4.12",
|
||||
"@types/node": "^22.19.19",
|
||||
"@types/passport-jwt": "^4.0.1",
|
||||
@@ -58,11 +58,14 @@
|
||||
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
||||
"@typescript-eslint/parser": "^8.46.2",
|
||||
"eslint": "^9.38.0",
|
||||
"jest": "^29.7.0",
|
||||
"jest": "^30.4.2",
|
||||
"supertest": "^7.2.2",
|
||||
"ts-jest": "^29.2.6",
|
||||
"ts-jest": "^29.4.11",
|
||||
"typescript": "^5.4.5"
|
||||
},
|
||||
"overrides": {
|
||||
"test-exclude": "^8.0.0"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "ts-jest",
|
||||
"testEnvironment": "node",
|
||||
|
||||
Reference in New Issue
Block a user