import type { IncomingMessage, ServerResponse } from 'node:http'; import type { RouteRulesService } from '../../features/routing/index.js'; interface RouteRulesRouteDependencies { routeRules: RouteRulesService; readBody(req: IncomingMessage): Promise>; sendState(res: ServerResponse): Promise; } export function createRouteRulesRoute(dependencies: RouteRulesRouteDependencies) { return { async handle(req: IncomingMessage, res: ServerResponse) { if (req.method !== 'PUT' || !['/api/route-rules', '/api/route-rules/v2'].includes(req.url || '')) return false; const { rules, expectedRulesRevision, rulesContractVersion } = await dependencies.readBody(req); await dependencies.routeRules.update(rules, expectedRulesRevision, rulesContractVersion); await dependencies.sendState(res); return true; }, }; }