UNPKG

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
"use strict"; 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