hypertune
Version:
[Hypertune](https://www.hypertune.com/) is the most flexible platform for feature flags, A/B testing, analytics and app configuration. Built with full end-to-end type-safety, Git-style version control and local, synchronous, in-memory flag evaluation. Opt
22 lines (18 loc) • 572 B
text/typescript
import { ObjectValue } from "../shared/types";
export default function decodeFlagValues<
FlagValues extends ObjectValue,
Flag extends keyof FlagValues & string,
>({
flagPaths,
encodedValues,
}: {
flagPaths: Flag[];
encodedValues: string;
}): Pick<FlagValues, Flag> {
const flagValues = JSON.parse(atob(encodedValues)) as Pick<FlagValues, Flag>;
const missingFlags = flagPaths.filter((flag) => !(flag in flagValues));
if (missingFlags.length > 0) {
throw new Error(`Missing flag values for: ${missingFlags.join(", ")}`);
}
return flagValues;
}