react-experiment-hoc
Version:
Simple hoc to provide a/b-test features.
26 lines (21 loc) • 900 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getVariant = void 0;
var _weighted = _interopRequireDefault(require("./weighted"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var getVariant = function getVariant(variants, experiment, fallback, persistent, setCookie, getCookie) {
var key = "experiment_".concat(experiment).concat(persistent);
var cookieIndex = getCookie(key);
var index = cookieIndex;
if (!index || !variants[index] || persistent < 0) index = (0, _weighted["default"])(variants.map(function (v) {
return v.weight;
}));
if (!cookieIndex && !fallback && persistent >= 0) setCookie(key, index, {
path: '/',
expires: !persistent ? null : new Date(Date.now() + 60 * 60 * 24 * 365 * 10 * 1000)
});
return variants[index].name;
};
exports.getVariant = getVariant;