UNPKG

abby-client

Version:

This is the client library for Greetz's very own A/B testing platform.

37 lines (29 loc) 844 B
'use strict'; const rp = require('request-promise-native'); const ABBY_EXPERIMENTS_KEY = Symbol("__abbyExperiments"); const ABBY_TIMEOUT_KEY = Symbol("__abbyTimeout"); const UPDATE_INTERVAL = 60000 * 5; // 5 minutes let load = async (/**Configs*/configs) => { let options = { uri: `${configs.apiEndpoint}/experiments`, qs: { tag: [configs.tags] }, json: true } let /**Array.<Experiment>*/experiments = await rp(options); global[ABBY_EXPERIMENTS_KEY] = experiments; if(!global[ABBY_TIMEOUT_KEY]) { global[ABBY_TIMEOUT_KEY] = setTimeout(() => sync(configs, UPDATE_INTERVAL)); } return experiments; }; let sync = { load }; Object.defineProperty(sync, "data", { get: () => { return global[ABBY_EXPERIMENTS_KEY]; } }); module.exports = sync;