mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-28 00:06:53 +01:00
53354224fc
Upgrades biome to 1.6.1, and updates husky pre-commit hook. Most changes here are making type imports explicit.
56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
import type {
|
|
IStrategy,
|
|
IFeatureStrategy,
|
|
IFeatureStrategyParameters,
|
|
IStrategyParameter,
|
|
} from 'interfaces/strategy';
|
|
|
|
// Create a new feature strategy with default values from a strategy definition.
|
|
export const createFeatureStrategy = (
|
|
featureId: string,
|
|
strategyDefinition: IStrategy,
|
|
): Omit<IFeatureStrategy, 'id'> => {
|
|
const parameters: IFeatureStrategyParameters = {};
|
|
|
|
strategyDefinition.parameters.forEach((parameter: IStrategyParameter) => {
|
|
parameters[parameter.name] = createFeatureStrategyParameterValue(
|
|
featureId,
|
|
parameter,
|
|
);
|
|
});
|
|
|
|
return {
|
|
name: strategyDefinition.name,
|
|
constraints: [],
|
|
parameters,
|
|
};
|
|
};
|
|
|
|
// Create default feature strategy parameter values from a strategy definition.
|
|
const createFeatureStrategyParameterValue = (
|
|
featureId: string,
|
|
parameter: IStrategyParameter,
|
|
): string => {
|
|
if (
|
|
parameter.name === 'rollout' ||
|
|
parameter.name === 'percentage' ||
|
|
parameter.type === 'percentage'
|
|
) {
|
|
return '50';
|
|
}
|
|
|
|
if (parameter.name === 'stickiness') {
|
|
return '';
|
|
}
|
|
|
|
if (parameter.name === 'groupId') {
|
|
return featureId;
|
|
}
|
|
|
|
if (parameter.type === 'boolean') {
|
|
return 'false';
|
|
}
|
|
|
|
return '';
|
|
};
|