UNPKG

@featurevisor/core

Version:

Core package of Featurevisor for Node.js usage

46 lines (37 loc) 1.07 kB
import type { Range, Percentage } from "@featurevisor/types"; export function getAllocation(availableRanges: Range[], fill: Percentage): Range[] { const result: Range[] = []; let remaining = fill; let i = 0; while (remaining > 0 && i < availableRanges.length) { const range = availableRanges[i]; const [start, end] = range; const rangeFill = Math.min(remaining, end - start); result.push([start, start + rangeFill]); remaining -= rangeFill; i++; } return result; } export function getUpdatedAvailableRangesAfterFilling( availableRanges: Range[], fill: Percentage, ): Range[] { if (fill === 0) { return availableRanges; } const result: Range[] = []; let remaining = fill; let i = 0; while (remaining > 0 && i < availableRanges.length) { const range = availableRanges[i]; const [start, end] = range; const rangeFill = Math.min(remaining, end - start); if (rangeFill < end - start) { result.push([start + rangeFill, end]); } remaining -= rangeFill; i++; } return result; }