1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import hash from 'string-hash';
- const experiments = {};
- function luckyNumber(str) {
- return hash(str) / 0xffffffff;
- }
- function checkExperiments(state, emitter) {
- const all = Object.keys(experiments);
- const id = all.find(id => experiments[id].eligible(state));
- if (id) {
- const variant = experiments[id].variant(state);
- state.storage.enroll(id, variant);
- experiments[id].run(variant, state, emitter);
- }
- }
- export default function initialize(state, emitter) {
- emitter.on('DOMContentLoaded', () => {
- const xp = experiments[state.query.x];
- if (xp) {
- xp.run(+state.query.v, state, emitter);
- }
- });
- if (!state.storage.get('testpilot_ga__cid')) {
-
- emitter.on('DOMContentLoaded', () => {
- checkExperiments(state, emitter);
- });
- } else {
- const enrolled = state.storage.enrolled;
- enrolled.forEach(([id, variant]) => {
- const xp = experiments[id];
- if (xp) {
- xp.run(variant, state, emitter);
- }
- });
-
- if (enrolled.length === 0) {
- checkExperiments(state, emitter);
- }
- }
- }
|