@aller/blink
Version:
A library for tracking user behaviour.
55 lines • 2.4 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var event_time_1 = require("../utils/event-time");
var general_data_1 = __importDefault(require("../utils/general-data"));
/**
* Prepares a raw impression by aggregating its fields so that
* it can be sent to the server in the format aas expects.
*/
function prepareArticleImpressionEvent(page, id, time) {
var ap = page.state.articlePreview[id] || {
id: id || 'error',
url: undefined,
};
var inscreenTime = id
? event_time_1.calculateEventTime({
times: page.state.inscreen[id],
screenEvents: page.state.screen.events,
now: time,
})
: 0;
return __assign({}, general_data_1.default(page.state), { id: ap.id, context: ap.context || undefined, type: 'impression', inscreenTime: inscreenTime, article: { url: ap.url, harvesterId: ap.id }, title: ap.title || undefined, height: ap.height || 0, width: ap.width || 0, personalizationParametersRequested: ap.personalizationParametersRequested || undefined, personalizationSystemUsed: ap.personalizationSystemUsed || undefined, position: ap.position || undefined });
}
exports.default = prepareArticleImpressionEvent;
function getAllArticleImpressionEventsPrepared(page, time) {
if (!page || !page.state) {
return [];
}
return Object.keys(page.state.articlePreview)
.map(function (articleId) {
try {
return prepareArticleImpressionEvent(page, articleId, time);
}
catch (err) {
var event = { id: '', pageView: '', type: 'error' };
return event;
}
})
.filter(function (event) { return event.type !== 'error'; });
}
exports.getAllArticleImpressionEventsPrepared = getAllArticleImpressionEventsPrepared;
//# sourceMappingURL=prepare-impression-event.js.map
;