UNPKG

@mntm/stats

Version:

A package for integrating analytics tools

41 lines (40 loc) 1.24 kB
import { loadScript, thenable } from '../utils.js'; import { launchParams } from '../launch.js'; import { safeWindow } from '../dom.js'; /** * Implements Yandex Metrika * * @param code XXXXXXX */ export const createProviderYM = (code, init) => { const context = safeWindow; context.ym = Object.assign(function ym() { // eslint-disable-next-line prefer-rest-params const args = arguments; context.ym.a.push(args); }, { a: [], l: Date.now() }); context.ym(code, 'init', init); context.ym(code, 'setUserID', launchParams.vk_user_id); // Use a CDN because it seems faster const load = loadScript('https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js'); const ready = load.then(() => { if (!context.Ya) { throw new Error('net::ERR_BLOCKED_BY_CLIENT'); } }); const provider = { send(event, params) { return thenable(ready, () => { context.ym(code, 'reachGoal', event, { category: params.category, label: params.label, screen: params.screen || 'unknown' }); }); } }; return provider; };