@featurevisor/core
Version:
Core package of Featurevisor for Node.js usage
37 lines • 1.68 kB
JavaScript
;
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