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

51 lines 2.42 kB
"use strict"; 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