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
27 lines • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = getSplitsAndCommitConfigForExpression;
const fold_1 = require("./fold");
function getSplitsAndCommitConfigForExpression(expression, splits, commitConfig) {
const splitIds = getSplitIdsForExpression(expression);
return {
splits: Object.fromEntries(Object.entries(splits).filter(([splitId]) => splitIds.has(splitId))),
commitConfig: {
splitConfig: Object.fromEntries(Object.entries(commitConfig.splitConfig).filter(([splitId]) => splitIds.has(splitId))),
},
};
}
function getSplitIdsForExpression(expression) {
return (0, fold_1.mapExpressionWithResult)((expr) => {
const splitSet = new Set();
if ((expr === null || expr === void 0 ? void 0 : expr.type) === "SplitExpression" && expr.splitId) {
splitSet.add(expr.splitId);
}
return { newExpression: expr, mapResult: splitSet };
}, (...splitSets) => {
const resultSplitSet = new Set();
splitSets.forEach((splitSet) => splitSet.forEach((value) => resultSplitSet.add(value)));
return resultSplitSet;
}, expression).mapResult;
}
//# sourceMappingURL=getSplitsAndCommitConfigForExpression.js.map