UNPKG

@featurevisor/core

Version:

Core package of Featurevisor for Node.js usage

37 lines 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFeatureRanges = getFeatureRanges; const fs = require("fs"); async function getFeatureRanges(projectConfig, datasource) { const featureRanges = new Map(); const featureIsInGroup = {}; // featureKey => boolean const groups = []; if (fs.existsSync(projectConfig.groupsDirectoryPath)) { const groupFiles = await datasource.listGroups(); for (const groupKey of groupFiles) { const parsedGroup = await datasource.readGroup(groupKey); groups.push({ ...parsedGroup, key: groupKey, }); let accumulatedPercentage = 0; parsedGroup.slots.forEach(function (slot, slotIndex) { const isFirstSlot = slotIndex === 0; if (slot.feature) { const featureKey = slot.feature; if (typeof featureKey === "string") { featureIsInGroup[featureKey] = true; } const featureRangesForFeature = featureRanges.get(featureKey) || []; const start = isFirstSlot ? accumulatedPercentage : accumulatedPercentage + 1; const end = accumulatedPercentage + slot.percentage * 1000; featureRangesForFeature.push([start, end]); featureRanges.set(slot.feature, featureRangesForFeature); } accumulatedPercentage += slot.percentage * 1000; }); } } return { featureRanges, featureIsInGroup }; } //# sourceMappingURL=getFeatureRanges.js.map