@absmartly/javascript-sdk
Version:
A/B Smartly Javascript SDK
27 lines (26 loc) • 855 B
JavaScript
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;
;