UNPKG

next-actuator

Version:

A fully composable actuator implementation for Next.js projects

22 lines 1.14 kB
const evaluateComponent = async (req, name, component) => { const status = await component .status(req) .then((res) => (typeof res === 'boolean' ? res : res < 400) ? 'UP' : 'DOWN') .catch(() => 'DOWN'); return [name, { status, details: component.details }]; }; export const handleHealth = async (req, config) => { const componentEvaluationPromises = Object .entries(config.components) .map(([name, component]) => evaluateComponent(req, name, component)); const results = await Promise.all(componentEvaluationPromises); const hasNormalDown = results.some(([name, result]) => result.status === 'DOWN' && config.components[name].strategy !== 'DEGRADED'); const hasDegradedDown = results.some(([name, result]) => result.status === 'DOWN' && config.components[name].strategy === 'DEGRADED'); const status = hasNormalDown ? 'DOWN' : hasDegradedDown ? 'DEGRADED' : 'UP'; const res = { status, ...(results.length > 0 && { components: Object.fromEntries(results) }) }; return Response.json(res, { status: 200 }); }; //# sourceMappingURL=handle-health.js.map