UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

43 lines 1.68 kB
import { Strategy } from './strategy.js'; import { normalizedStrategyValue } from './util.js'; import { resolveContextValue } from '../helpers.js'; const STICKINESS = { default: 'default', random: 'random', }; export default class FlexibleRolloutStrategy extends Strategy { constructor(radnomGenerator) { super('flexibleRollout'); this.randomGenerator = () => `${Math.round(Math.random() * 10_000) + 1}`; if (radnomGenerator) { this.randomGenerator = radnomGenerator; } } resolveStickiness(stickiness, context) { switch (stickiness) { case STICKINESS.default: return (context.userId || context.sessionId || this.randomGenerator()); case STICKINESS.random: return this.randomGenerator(); default: return resolveContextValue(context, stickiness); } } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types isEnabled(parameters, context) { const groupId = parameters.groupId || (context.featureToggle && String(context.featureToggle)) || ''; const percentage = Number(parameters.rollout); const stickiness = parameters.stickiness || STICKINESS.default; const stickinessId = this.resolveStickiness(stickiness, context); if (!stickinessId) { return false; } const normalizedUserId = normalizedStrategyValue(stickinessId, groupId); return percentage > 0 && normalizedUserId <= percentage; } } //# sourceMappingURL=flexible-rollout-strategy.js.map