UNPKG

@mate-academy/sourcebuster

Version:

Get sources of your site's visitors (utm / organic / referral / typein).

137 lines (110 loc) 3.72 kB
"use strict"; var terms = require('./terms'), utils = require('./helpers/utils'); var data = { containers: { current: 'sbjs_current', current_extra: 'sbjs_current_add', first: 'sbjs_first', first_extra: 'sbjs_first_add', session: 'sbjs_session', udata: 'sbjs_udata', promocode: 'sbjs_promo' }, service: { migrations: 'sbjs_migrations' }, delimiter: '|||', aliases: { main: { type: 'typ', source: 'src', medium: 'mdm', campaign: 'cmp', content: 'cnt', term: 'trm', account_id: 'ac_id', campaign_id: 'cmp_id', ad_group_id: 'adg_id', ad_id: 'ad_id', term_id: 'trm_id' }, extra: { fire_date: 'fd', entrance_point: 'ep', referer: 'rf' }, session: { pages_seen: 'pgs', current_page: 'cpg', session_id: 'sid' }, udata: { visits: 'vst', ip: 'uip', agent: 'uag' }, promo: 'code' }, pack: { main: function(sbjs) { return ( data.aliases.main.type + '=' + sbjs.type + data.delimiter + data.aliases.main.source + '=' + sbjs.source + data.delimiter + data.aliases.main.medium + '=' + sbjs.medium + data.delimiter + data.aliases.main.campaign + '=' + sbjs.campaign + data.delimiter + data.aliases.main.content + '=' + sbjs.content + data.delimiter + data.aliases.main.term + '=' + sbjs.term + data.delimiter + data.aliases.main.account_id + '=' + sbjs.account_id + data.delimiter + data.aliases.main.campaign_id + '=' + sbjs.campaign_id + data.delimiter + data.aliases.main.ad_group_id + '=' + sbjs.ad_group_id + data.delimiter + data.aliases.main.ad_id + '=' + sbjs.ad_id + data.delimiter + data.aliases.main.term_id + '=' + sbjs.term_id ); }, unpack: function(str) { var sbjs = {}; var parts = str.split('|||'); parts.forEach(function(part) { var keyValue = part.split('='); var key = keyValue[0]; var value = keyValue[1]; sbjs[key] = value; }); return sbjs; }, extra: function(timezone_offset) { return ( data.aliases.extra.fire_date + '=' + utils.setDate(new Date, timezone_offset) + data.delimiter + data.aliases.extra.entrance_point + '=' + document.location.href + data.delimiter + data.aliases.extra.referer + '=' + (document.referrer || terms.none) ); }, user: function(visits, user_ip) { return ( data.aliases.udata.visits + '=' + visits + data.delimiter + data.aliases.udata.ip + '=' + user_ip + data.delimiter + data.aliases.udata.agent + '=' + navigator.userAgent ); }, session: function(pages, session_id) { var session = ( data.aliases.session.pages_seen + '=' + pages + data.delimiter + data.aliases.session.current_page + '=' + document.location.href ); if (session_id) { return ( session + data.delimiter + data.aliases.session.session_id + '=' + session_id ); } return session; }, promo: function(promo) { return ( data.aliases.promo + '=' + utils.setLeadingZeroToInt(utils.randomInt(promo.min, promo.max), promo.max.toString().length) ); } } }; module.exports = data;