UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

161 lines 8.16 kB
"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