abby-client
Version:
This is the client library for Greetz's very own A/B testing platform.
37 lines (29 loc) • 844 B
JavaScript
;
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;