UNPKG

unleash-server

Version:

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

62 lines 2.02 kB
import { PayloadType } from 'unleash-client'; import { getDefaultVariant } from 'unleash-client/lib/variant.js'; export default class FlagResolver { constructor(expOpt) { this.experiments = expOpt.flags; this.externalResolver = expOpt.externalResolver; } getAll(context) { const flags = { ...this.experiments }; Object.keys(flags).forEach((flagName) => { const flag = flags[flagName]; if (typeof flag === 'boolean') { if (!flag) { flags[flagName] = this.externalResolver.isEnabled(flagName, context); } } else { if (!flag?.enabled) { flags[flagName] = this.externalResolver.getVariant(flagName, context); } } }); return flags; } isEnabled(expName, context) { const exp = this.experiments[expName]; if (exp) { if (typeof exp === 'boolean') return exp; else return exp.enabled; } return this.externalResolver.isEnabled(expName, context); } getVariant(expName, context) { const exp = this.experiments[expName]; if (exp) { if (typeof exp === 'boolean') return getDefaultVariant(); else if (exp.enabled) return exp; } return this.externalResolver.getVariant(expName, context); } getStaticContext() { return this.externalResolver.getStaticContext(); } get impactMetrics() { return this.externalResolver?.impactMetrics; } } export const getVariantValue = (variant) => { if (variant?.enabled) { if (!variant.payload) return variant.name; if (variant.payload.type === PayloadType.JSON) { return JSON.parse(variant.payload.value); } return variant.payload.value; } }; //# sourceMappingURL=flag-resolver.js.map