UNPKG

@absmartly/javascript-sdk

Version:

A/B Smartly Javascript SDK

27 lines (26 loc) 855 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VariantAssigner = void 0; const utils_1 = require("./utils"); const murmur3_32_1 = require("./murmur3_32"); class VariantAssigner { constructor(unit) { this._unitHash = (0, murmur3_32_1.murmur3_32)((0, utils_1.stringToUint8Array)(unit).buffer); } assign(split, seedHi, seedLo) { const prob = this._probability(seedHi, seedLo); return (0, utils_1.chooseVariant)(split, prob); } _probability(seedHi, seedLo) { const key = this._unitHash; const buffer = new ArrayBuffer(12); const view = new DataView(buffer); view.setUint32(0, seedLo, true); view.setUint32(4, seedHi, true); view.setUint32(8, key, true); return (0, murmur3_32_1.murmur3_32)(buffer) * (1.0 / 0xffffffff); } } exports.VariantAssigner = VariantAssigner;