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
51 lines • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getExpressionEvaluationCountLogs = getExpressionEvaluationCountLogs;
exports.getEventLogs = getEventLogs;
exports.getExposureLogs = getExposureLogs;
exports.mergeLogs = mergeLogs;
function getExpressionEvaluationCountLogs(expression) {
if (expression.isTransient) {
return {};
}
return {
evaluations: { [expression.id]: 1 },
};
}
function getEventLogs(event) {
return { eventList: [event] };
}
function getExposureLogs(exposure) {
return { exposureList: [exposure] };
}
function mergeLogs(...logs) {
const filteredLogs = logs.filter(Boolean);
if (filteredLogs.length === 0) {
return {};
}
if (filteredLogs.length === 1) {
return filteredLogs[0];
}
const messageList = filteredLogs.flatMap((b) => { var _a; return (_a = b.messageList) !== null && _a !== void 0 ? _a : []; });
const eventList = filteredLogs
.flatMap((b) => { var _a; return (_a = b.eventList) !== null && _a !== void 0 ? _a : []; })
.concat(filteredLogs.flatMap((b) => b.events
? Object.entries(b.events).flatMap(([eventJson, count]) => new Array(count).fill(JSON.parse(eventJson)))
: []));
const exposureList = filteredLogs
.flatMap((b) => { var _a; return (_a = b.exposureList) !== null && _a !== void 0 ? _a : []; })
.concat(filteredLogs.flatMap((b) => b.exposures
? Object.entries(b.exposures).flatMap(([exposureJson, count]) => new Array(count).fill(JSON.parse(exposureJson)))
: []));
const evaluationList = filteredLogs.flatMap((b) => { var _a; return (_a = b.evaluationList) !== null && _a !== void 0 ? _a : []; });
const evaluations = filteredLogs.reduce((acc, b) => {
if (b.evaluations) {
Object.entries(b.evaluations).forEach(([expressionId, count]) => {
acc[expressionId] = (acc[expressionId] || 0) + count;
});
}
return acc;
}, {});
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (messageList.length > 0 ? { messageList } : {})), (eventList.length > 0 ? { eventList } : {})), (exposureList.length > 0 ? { exposureList } : {})), (evaluationList.length > 0 ? { evaluationList } : {})), (Object.keys(evaluations).length > 0 ? { evaluations } : {}));
}
//# sourceMappingURL=reductionLogs.js.map