@fabrix/spool-analytics
Version:
Spool: Analytics for Fabrix
53 lines (52 loc) • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
exports.Utils = {
loadAnalytics: (app) => {
const profile = app.config.get('analytics.profile');
const frequency = app.config.get('analytics.config.frequency') || {};
Object.keys(app.analytics || {}).forEach(function (key) {
const analytic = app.analytics[key];
if (analytic.methods && analytic.methods.indexOf('run') > -1
&& app.config.get('analytics.config.auto_run') !== false) {
analytic.run();
app.log.debug(`Analytics auto running ${analytic.name}`);
}
if (app.config.get('analytics.config.profiles')
&& app.config.get(`analytics.config.profiles.${profile}`)) {
app.config.get(`analytics.config.profiles.${profile}`).forEach(allowed => {
const allowedAnalytic = allowed.split('.')[0];
const allowedMethod = allowed.split('.')[1];
if (allowedAnalytic === key
&& allowedMethod
&& analytic.methods.indexOf(allowedMethod) > -1) {
Object.entries(frequency).forEach(([_time, _analyticNames]) => {
if (_analyticNames.indexOf(allowed) > -1) {
app.spools.analytics.analytics[_time].add(allowed);
}
});
}
});
}
});
return Promise.resolve();
},
copyDefaults: (app) => {
app.config.set('analyticsDefaults', lodash_1.clone(app.config.get('analytics')));
return Promise.resolve({});
},
addAnalyticToCron: (app, time, analyticName) => {
const allowedAnalyticStr = analyticName.split('.')[0];
const allowedMethodStr = analyticName.split('.')[1];
const analytic = app.analytics[allowedAnalyticStr][allowedMethodStr];
app.crons.AnalyticsCron.addAnalytic(time, analyticName, analytic);
},
addAnalyticsToCron: (app) => {
const frequency = Object.entries(app.spools.analytics.analytics);
frequency.forEach(([_time, setter]) => {
setter.forEach(analyticName => {
exports.Utils.addAnalyticToCron(app, _time, analyticName);
});
});
}
};