UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

33 lines 1.35 kB
import { differenceInMinutes } from 'date-fns'; import { median } from '../../util/median.js'; export function calculateStageDurations(featureLifeCycles) { const sortedLifeCycles = featureLifeCycles.sort((a, b) => a.enteredStageAt.getTime() - b.enteredStageAt.getTime()); const groupedByProjectAndStage = sortedLifeCycles.reduce((acc, curr, index, array) => { const key = `${curr.project}/${curr.stage}`; if (!acc[key]) { acc[key] = []; } const nextItem = array .slice(index + 1) .find((item) => item.feature === curr.feature && item.stage !== curr.stage); const endTime = nextItem ? nextItem.enteredStageAt : new Date(); const duration = differenceInMinutes(endTime, curr.enteredStageAt); acc[key].push(duration); return acc; }, {}); return calculateMedians(groupedByProjectAndStage); } export const calculateMedians = (groupedByProjectAndStage) => { const medians = []; Object.entries(groupedByProjectAndStage).forEach(([key, durations]) => { const [project, stage] = key.split('/'); const duration = median(durations); medians.push({ project, stage: stage, duration, }); }); return medians; }; //# sourceMappingURL=calculate-stage-durations.js.map