UNPKG

@mntm/stats

Version:

A package for integrating analytics tools

53 lines (52 loc) 1.54 kB
import { loadScript, thenable } from '../utils.js'; import { launchParams } from '../launch.js'; import { safeWindow } from '../dom.js'; /** * Implements Universal Analytics * * @param code UA-XXXXXXX */ export const createProviderUA = (code) => { const context = safeWindow; context.GoogleAnalyticsObject = 'ua'; context.ua = Object.assign(function ua() { // eslint-disable-next-line prefer-rest-params const args = arguments; context.ua.q.push(args); }, { loaded: false, q: [], l: Date.now() }); context.ua('create', { userId: launchParams.vk_user_id, trackingId: code, // Disable cookie storage: 'none', storeGac: false, legacyHistoryImport: false }); const load = loadScript(`https://www.google-analytics.com/analytics.js`); const ready = load.then(() => { if (context.ua.loaded) { context.ua('send', 'pageview'); } else { throw new Error('net::ERR_BLOCKED_BY_CLIENT'); } }); const provider = { send(event, params) { return thenable(ready, () => { context.ua('send', { hitType: 'event', eventCategory: params.category || 'main', eventAction: event, eventLabel: params.label || '', screenName: params.screen || 'unknown' }); }); } }; return provider; };