@mntm/stats
Version:
A package for integrating analytics tools
53 lines (52 loc) • 1.54 kB
JavaScript
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;
};