@aller/blink
Version:
A library for tracking user behaviour.
161 lines • 8.16 kB
JavaScript
"use strict";
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 __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var prepare_impression_event_1 = __importStar(require("./events/prepare-impression-event"));
var prepare_ad_event_1 = __importStar(require("./events/prepare-ad-event"));
var prepare_active_time_event_1 = __importStar(require("./events/prepare-active-time-event"));
var prepare_pageload_event_1 = __importDefault(require("./events/prepare-pageload-event"));
var prepare_click_event_1 = __importDefault(require("./events/prepare-click-event"));
var prepare_custom_event_1 = __importDefault(require("./events/prepare-custom-event"));
var prepare_box_event_1 = __importStar(require("./events/prepare-box-event"));
var actions_1 = require("./actions");
var prepare_video_load_event_1 = __importDefault(require("./events/prepare-video-load-event"));
var prepare_video_watch_event_1 = __importStar(require("./events/prepare-video-watch-event"));
var prepare_video_ad_event_1 = __importDefault(require("./events/prepare-video-ad-event"));
var get_page_state_1 = __importDefault(require("./selectors/get-page-state"));
var player_1 = require("./utils/player");
function senderMiddleware(send, sendDirect) {
return function (_a) {
var getState = _a.getState;
return function (next) { return function (action) {
// Send all events if we get a pageInit event
// Make sure we do it before the PAGE_INIT flushes the state
if (action.type === actions_1.PAGE_INIT) {
var payload = action.payload, utils = action.utils;
var beforePage = get_page_state_1.default(getState(), payload.pageId).state;
var eventsToSend = prepare_ad_event_1.getAllAdEventsPrepared(beforePage, utils, payload.time).concat(prepare_active_time_event_1.getAllActiveTimeEventsPrepared(beforePage, utils, payload.time), prepare_impression_event_1.getAllArticleImpressionEventsPrepared(beforePage, payload.time));
if (eventsToSend.length > 0) {
send(eventsToSend);
}
}
// Execute the action, which might mutate the state
var returnValue = next(action);
var state = getState();
var page = get_page_state_1.default(state, action.payload.pageId);
switch (action.type) {
case actions_1.DFP_IMPRESSION_VIEWABLE:
case actions_1.DFP_SLOT_RENDER_ENDED:
case actions_1.DFP_SLOT_ON_LOAD:
send([
prepare_ad_event_1.default({
page: page,
id: action.payload.id,
utils: action.utils,
}),
]);
break;
case actions_1.CLICK:
sendDirect([
prepare_click_event_1.default({
page: page,
url: action.payload.url,
clickId: action.payload.clickId,
externalId: action.payload.id,
context: action.payload.context,
}),
]);
break;
case actions_1.VIDEO_LOAD:
send([
prepare_video_load_event_1.default(__assign({ page: page }, action.payload)),
]);
break;
case actions_1.VIDEO_STOP:
send(prepare_video_watch_event_1.default(__assign({ page: page }, action.payload)));
break;
case actions_1.PLAYER_HIDDEN:
var videoIds = player_1.getUniqueVideoIdsForPlayer(page.state.video.events, action.payload.playerId);
// "Brodcast" player hidden event to all videos with the playerId
videoIds.forEach(function (videoId) {
send(prepare_video_watch_event_1.default(__assign({ page: page, videoId: videoId }, action.payload)));
});
break;
case actions_1.VIDEO_AD:
send([
prepare_video_ad_event_1.default(__assign({ page: page }, action.payload)),
]);
break;
case actions_1.CUSTOM:
send([
prepare_custom_event_1.default({
page: page,
customDomain: action.payload.customDomain,
customType: action.payload.customType,
customContent: action.payload.customContent,
customValue: action.payload.customValue,
time: action.payload.time,
}),
]);
break;
case actions_1.PAGE_LOAD:
send([
prepare_pageload_event_1.default({
page: page,
url: action.payload.url,
utils: action.utils,
}),
]);
break;
case actions_1.ARTICLE_PREVIEW_SCREEN_EXIT:
send([prepare_impression_event_1.default(page, action.payload.id)]);
break;
case actions_1.BOX_SCREEN_EXIT:
send([prepare_box_event_1.default(page, action.payload.id)]);
break;
case actions_1.AD_SCREEN_EXIT:
case actions_1.AD_SCREEN_EXIT_0:
send([
prepare_ad_event_1.default({
page: page,
id: action.payload.id,
utils: action.utils,
}),
]);
break;
case actions_1.ARTICLE_ACTIVITY_STOP:
sendDirect([
prepare_active_time_event_1.default({
page: page,
id: action.payload.id,
utils: action.utils,
}),
]);
break;
case actions_1.SEND_ALL_EVENTS:
{
var payload = action.payload, utils = action.utils;
var eventsToSend = prepare_ad_event_1.getAllAdEventsPrepared(page, utils, payload.time).concat(prepare_active_time_event_1.getAllActiveTimeEventsPrepared(page, utils, payload.time), prepare_impression_event_1.getAllArticleImpressionEventsPrepared(page, payload.time), prepare_video_watch_event_1.getAllVideoWatchEventsPrepared(page, payload.time), prepare_box_event_1.getAllBoxEventsPrepared(page, payload.time));
if (eventsToSend.length > 0) {
sendDirect(eventsToSend);
}
}
break;
default:
break;
}
return returnValue;
}; };
};
}
exports.default = senderMiddleware;
//# sourceMappingURL=senderMiddleware.js.map