unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
39 lines • 1.6 kB
JavaScript
import { ALL_PROJECTS } from '../../../util/index.js';
export const getReferencedSegmentIds = (features, projects = [ALL_PROJECTS], namePrefix = '') => {
const allProjects = projects.length === 0 || projects.includes(ALL_PROJECTS);
const referencedSegmentIds = new Set();
for (const feature of features) {
if (!feature.name.startsWith(namePrefix)) {
continue;
}
if (!allProjects && !projects.includes(feature.project ?? '')) {
continue;
}
for (const strategy of feature.strategies ?? []) {
for (const segmentId of strategy.segments ?? []) {
referencedSegmentIds.add(segmentId);
}
}
}
return referencedSegmentIds;
};
export const getVisibleRevision = (revisionState, projects = [ALL_PROJECTS], referencedSegmentIds) => {
if (!revisionState) {
return 0;
}
const projectList = projects.length > 0 && !projects.includes(ALL_PROJECTS)
? projects
: Array.from(revisionState.projectRevisions.keys());
let visibleRevision = revisionState.maxReferencedSegmentRevision ?? 0;
if (referencedSegmentIds) {
visibleRevision = 0;
for (const segmentId of referencedSegmentIds) {
visibleRevision = Math.max(visibleRevision, revisionState.segmentRevisions.get(segmentId) ?? 0);
}
}
for (const project of projectList) {
visibleRevision = Math.max(visibleRevision, revisionState.projectRevisions.get(project) ?? 0);
}
return visibleRevision;
};
//# sourceMappingURL=visible-revision.js.map