unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
54 lines • 2.07 kB
JavaScript
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