@fabrix/spool-analytics
Version:
Spool: Analytics for Fabrix
74 lines (73 loc) • 2.8 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@fabrix/fabrix/dist/common");
const validator_1 = require("./validator");
const utils_1 = require("./utils");
const config = require("./config/index");
const pkg = require("../package.json");
const api = require("./api/index");
class AnalyticsSpool extends common_1.Spool {
constructor(app) {
super(app, {
config: config,
pkg: pkg,
api: api
});
this.analytics = {
minute: new Set(),
hour: new Set(),
day: new Set(),
week: new Set(),
month: new Set(),
quarter: new Set(),
year: new Set(),
};
}
validate() {
const requiredSpools = [
'router', 'express', 'sequelize', 'crons'
];
const spools = Object.keys(this.app.spools);
if (!spools.some(v => requiredSpools.indexOf(v) >= 0)) {
return Promise.reject(new Error(`spool-cart requires spools: ${requiredSpools.join(', ')}!`));
}
if (!this.app.config.get('analytics')) {
return Promise.reject(new Error('No configuration found at config.analytics!'));
}
if (!this.app.crons['AnalyticsCron']) {
return Promise.reject(new Error('AnalyticsCron is not available!'));
}
return Promise.all([
validator_1.Validator.validateAnalyticsConfig(this.app.config.get('analytics'))
])
.catch(err => {
return Promise.reject(err);
});
}
configure() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.all([
utils_1.Utils.copyDefaults(this.app),
utils_1.Utils.loadAnalytics(this.app)
])
.catch(err => {
return Promise.reject(err);
});
});
}
initialize() {
return __awaiter(this, void 0, void 0, function* () {
utils_1.Utils.addAnalyticsToCron(this.app);
return Promise.resolve();
});
}
}
exports.AnalyticsSpool = AnalyticsSpool;