UNPKG

unleash-server

Version:

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

54 lines 2.07 kB
import { InMemStorageProvider, FeatureEvaluator, } from './feature-evaluator/index.js'; import { serializeDates } from '../../types/serialize-dates.js'; export const mapFeaturesForClient = (features) => features.map((feature) => mapFeatureForClient(feature)); export const mapFeatureForClient = (feature) => { return { impressionData: false, ...feature, variants: (feature.variants || []).map((variant) => ({ overrides: [], ...variant, payload: variant.payload && { ...variant.payload, type: variant.payload.type, }, })), project: feature.project, strategies: feature.strategies.map((strategy) => ({ parameters: {}, ...strategy, title: strategy.title ?? undefined, disabled: strategy.disabled ?? false, variants: (strategy.variants || []).map((variant) => ({ ...variant, payload: variant.payload && { ...variant.payload, type: variant.payload.type, }, })), constraints: strategy.constraints?.map((constraint) => ({ inverted: false, values: [], ...constraint, operator: constraint.operator, })) || [], })), dependencies: feature.dependencies, }; }; export const mapSegmentsForClient = (segments) => serializeDates(segments); export const offlineUnleashClient = async ({ features, context, segments, }) => { const client = new FeatureEvaluator({ ...context, appName: context.appName, storageProvider: new InMemStorageProvider(), bootstrap: { // FIXME: mismatch between playground and proxy types data: mapFeaturesForClient(features), segments: mapSegmentsForClient(segments || []), }, }); await client.start(); return client; }; //# sourceMappingURL=offline-unleash-client.js.map