@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
37 lines (31 loc) • 1 kB
text/typescript
import { CONTROL } from '../../utils/constants';
import { isString } from '../../utils/lang';
import SplitIO from '../../../types/splitio';
export type IFallbackCalculator = (definitionName: string, label?: string) => {
treatment: string;
config: string | null | SplitIO.JsonObject;
label: string
};
export const FALLBACK_PREFIX = 'fallback - ';
export function FallbackTreatmentsCalculator(fallbacks: SplitIO.FallbackTreatmentConfiguration = {}): IFallbackCalculator {
return (flagName: string, label = '') => {
const fallback = fallbacks.byFlag?.[flagName] || fallbacks.global;
return fallback ?
isString(fallback) ?
{
treatment: fallback,
config: null,
label: `${FALLBACK_PREFIX}${label}`,
} :
{
treatment: fallback.treatment,
config: fallback.config,
label: `${FALLBACK_PREFIX}${label}`,
} :
{
treatment: CONTROL,
config: null,
label,
};
};
}