@@ -15,28 +15,37 @@ import { escalateHandler } from '../stewardships/escalate'
1515import { openStewardship } from '../stewardships/openStewardship'
1616import { updateStatusHandler } from '../stewardships/updateStatus'
1717
18- const rateLimiter = createRateLimiter ( { max : 60 , windowMs : 60 * 1000 } )
18+ // Separate instances match the original per-router isolation: packages and stewardships each had
19+ // their own createRateLimiter() call, giving independent 60 req/min buckets per IP.
20+ const packagesRateLimiter = createRateLimiter ( { max : 60 , windowMs : 60 * 1000 } )
21+ const stewardshipsRateLimiter = createRateLimiter ( { max : 60 , windowMs : 60 * 1000 } )
1922
2023export function akritesRouter ( ) : Router {
2124 const router = Router ( )
2225
2326 router . get ( '/metrics' , safeWrap ( metricsHandler ) )
24- // /packages/scatter must be registered before /packages to avoid Express treating 'scatter' as a path param
27+ // /packages/scatter registered before router.use('/packages', ...) so Express evaluates this
28+ // explicit route first; without this ordering the sub-router would receive the request first
29+ // and call next() on no match, adding unnecessary overhead.
2530 router . get ( '/packages/scatter' , safeWrap ( packageScatterHandler ) )
2631 router . get ( '/packages' , safeWrap ( packageListHandler ) )
2732 router . get ( '/activity' , safeWrap ( activityFeedHandler ) )
2833
2934 // --- packages ---
30- router . post ( / ^ \/ p a c k a g e s : b a t c h - s t e w a r d s h i p \/ ? $ / , rateLimiter , safeWrap ( batchGetStewardship ) )
35+ router . post (
36+ / ^ \/ p a c k a g e s : b a t c h - s t e w a r d s h i p \/ ? $ / ,
37+ packagesRateLimiter ,
38+ safeWrap ( batchGetStewardship ) ,
39+ )
3140 const packagesSubRouter = Router ( )
32- packagesSubRouter . use ( rateLimiter )
41+ packagesSubRouter . use ( packagesRateLimiter )
3342 packagesSubRouter . get ( '/metrics' , safeWrap ( getPackagesMetrics ) )
3443 packagesSubRouter . get ( '/detail' , safeWrap ( getPackage ) )
3544 router . use ( '/packages' , packagesSubRouter )
3645
3746 // --- stewardships ---
3847 const stewardshipsSubRouter = Router ( )
39- stewardshipsSubRouter . use ( rateLimiter )
48+ stewardshipsSubRouter . use ( stewardshipsRateLimiter )
4049 stewardshipsSubRouter . post ( '/' , safeWrap ( openStewardship ) )
4150 stewardshipsSubRouter . put ( '/:id/steward' , safeWrap ( assignStewardHandler ) )
4251 stewardshipsSubRouter . put ( '/:id/escalate' , safeWrap ( escalateHandler ) )
0 commit comments