All files / lib/builder allocator.js

100% Statements 28/28
100% Branches 8/8
100% Functions 2/2
100% Lines 28/28

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38  2x 2x 2x   37x 37x 37x 37x 39x 39x 39x 39x 39x 39x   37x     38x 4x   34x 34x 34x 34x 40x 40x 40x 40x 27x   40x 40x   34x    
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAllocation = getAllocation;
exports.getUpdatedAvailableRangesAfterFilling = getUpdatedAvailableRangesAfterFilling;
function getAllocation(availableRanges, fill) {
    const result = [];
    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;
}
function getUpdatedAvailableRangesAfterFilling(availableRanges, fill) {
    if (fill === 0) {
        return availableRanges;
    }
    const result = [];
    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;
}
//# sourceMappingURL=allocator.js.map