@piwikpro/ngx-piwik-pro
Version:
Piwik PRO tracking library for Angular apps.
58 lines • 7.9 kB
JavaScript
import { APP_INITIALIZER, PLATFORM_ID, isDevMode } from '@angular/core';
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
import PiwikPro, { DataLayer, Miscellaneous } from '@piwikpro/tracking-base-library';
import { NGX_PIWIK_PRO_SETTINGS_TOKEN } from '../tokens/ngx-piwik-pro-settings.token';
import { VERSION } from "../../version";
export const NGX_PIWIK_PRO_INITIALIZER_PROVIDER = {
provide: APP_INITIALIZER,
multi: true,
useFactory: PiwikProInitializer,
deps: [
NGX_PIWIK_PRO_SETTINGS_TOKEN,
DOCUMENT,
PLATFORM_ID,
]
};
export function PiwikProInitializer(settings, document, platformId) {
return async () => {
if (!isPlatformBrowser(platformId)) {
return;
}
window._paq = window._paq || [];
Miscellaneous.setTrackingSourceProvider("angular", VERSION);
if (!settings.containerId) {
if (!isDevMode()) {
console.error('Empty tracking code for Piwik Pro. Make sure to provide one when initializing NgxPiwikProModule.');
}
return;
}
if (!settings.containerURL) {
if (!isDevMode()) {
console.error('Empty tracking URL for Piwik Pro. Make sure to provide one when initializing NgxPiwikProModule.');
}
return;
}
if (!document) {
if (!isDevMode()) {
console.error('Was not possible to access Document interface. Make sure this module is running on a Browser w/ access do Document interface.');
}
}
if (settings.dataLayerName) {
DataLayer.setDataLayerName(settings.dataLayerName);
}
const s = document.createElement('script');
s.async = true;
if (settings.nonce) {
s.setAttribute("nonce", settings.nonce);
}
s.text = PiwikPro.getInitScript({
containerId: settings.containerId,
containerUrl: settings.containerURL,
nonceValue: settings.nonce,
dataLayerName: settings.dataLayerName
});
const head = document.getElementsByTagName('head')[0];
head.appendChild(s);
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl3aWstcHJvLmluaXRpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXBpd2lrLXByby9zcmMvbGliL2luaXRpYWxpemVycy9waXdpay1wcm8uaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBb0I7SUFDakUsT0FBTyxFQUFFLGVBQWU7SUFDeEIsS0FBSyxFQUFFLElBQUk7SUFDWCxVQUFVLEVBQUUsbUJBQW1CO0lBQy9CLElBQUksRUFBRTtRQUNKLDRCQUE0QjtRQUM1QixRQUFRO1FBQ1IsV0FBVztLQUNaO0NBQ0YsQ0FBQTtBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsUUFBMEIsRUFDMUIsUUFBa0IsRUFDbEIsVUFBa0I7SUFFbEIsT0FBTyxLQUFLLElBQUksRUFBRTtRQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDaEMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLGtHQUFrRyxDQUFDLENBQUM7WUFDcEgsQ0FBQztZQUVELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpR0FBaUcsQ0FBQyxDQUFDO1lBQ25ILENBQUM7WUFFRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLCtIQUErSCxDQUFDLENBQUM7WUFDakosQ0FBQztRQUNILENBQUM7UUFFRCxJQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUMsQ0FBQztZQUN2QixTQUFTLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ3RELENBQUM7UUFFRCxNQUFNLENBQUMsR0FBc0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsQ0FBQyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzlCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLO1lBQzFCLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTtTQUN0QyxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksR0FBb0IsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgRmFjdG9yeVByb3ZpZGVyLCBQTEFURk9STV9JRCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IFBpd2lrUHJvLCB7IERhdGFMYXllciwgTWlzY2VsbGFuZW91cyB9IGZyb20gJ0BwaXdpa3Byby90cmFja2luZy1iYXNlLWxpYnJhcnknO1xuXG5pbXBvcnQgeyBOR1hfUElXSUtfUFJPX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi4vdG9rZW5zL25neC1waXdpay1wcm8tc2V0dGluZ3MudG9rZW4nO1xuaW1wb3J0IHsgUGl3aWtQcm9TZXR0aW5ncyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGl3aWstcHJvLXNldHRpbmdzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uLy4uL3ZlcnNpb25cIlxuXG5leHBvcnQgY29uc3QgTkdYX1BJV0lLX1BST19JTklUSUFMSVpFUl9QUk9WSURFUjogRmFjdG9yeVByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gIG11bHRpOiB0cnVlLFxuICB1c2VGYWN0b3J5OiBQaXdpa1Byb0luaXRpYWxpemVyLFxuICBkZXBzOiBbXG4gICAgTkdYX1BJV0lLX1BST19TRVRUSU5HU19UT0tFTixcbiAgICBET0NVTUVOVCxcbiAgICBQTEFURk9STV9JRCxcbiAgXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUGl3aWtQcm9Jbml0aWFsaXplcihcbiAgc2V0dGluZ3M6IFBpd2lrUHJvU2V0dGluZ3MsXG4gIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgcGxhdGZvcm1JZDogc3RyaW5nXG4pIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2luZG93Ll9wYXEgPSB3aW5kb3cuX3BhcSB8fCBbXTtcbiAgICBNaXNjZWxsYW5lb3VzLnNldFRyYWNraW5nU291cmNlUHJvdmlkZXIoXCJhbmd1bGFyXCIsIFZFUlNJT04pO1xuXG4gICAgaWYgKCFzZXR0aW5ncy5jb250YWluZXJJZCkge1xuICAgICAgaWYgKCFpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFbXB0eSB0cmFja2luZyBjb2RlIGZvciBQaXdpayBQcm8uIE1ha2Ugc3VyZSB0byBwcm92aWRlIG9uZSB3aGVuIGluaXRpYWxpemluZyBOZ3hQaXdpa1Byb01vZHVsZS4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghc2V0dGluZ3MuY29udGFpbmVyVVJMKSB7XG4gICAgICBpZiAoIWlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VtcHR5IHRyYWNraW5nIFVSTCBmb3IgUGl3aWsgUHJvLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBvbmUgd2hlbiBpbml0aWFsaXppbmcgTmd4UGl3aWtQcm9Nb2R1bGUuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWRvY3VtZW50KSB7XG4gICAgICBpZiAoIWlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIERvY3VtZW50IGludGVyZmFjZS4gTWFrZSBzdXJlIHRoaXMgbW9kdWxlIGlzIHJ1bm5pbmcgb24gYSBCcm93c2VyIHcvIGFjY2VzcyBkbyBEb2N1bWVudCBpbnRlcmZhY2UuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYoc2V0dGluZ3MuZGF0YUxheWVyTmFtZSl7XG4gICAgICAgIERhdGFMYXllci5zZXREYXRhTGF5ZXJOYW1lKHNldHRpbmdzLmRhdGFMYXllck5hbWUpXG4gICAgfVxuXG4gICAgY29uc3QgczogSFRNTFNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzLmFzeW5jID0gdHJ1ZTtcbiAgICBpZiAoc2V0dGluZ3Mubm9uY2UpIHtcbiAgICAgIHMuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgc2V0dGluZ3Mubm9uY2UpO1xuICAgIH1cbiAgICBzLnRleHQgPSBQaXdpa1Byby5nZXRJbml0U2NyaXB0KHtcbiAgICAgIGNvbnRhaW5lcklkOiBzZXR0aW5ncy5jb250YWluZXJJZCxcbiAgICAgIGNvbnRhaW5lclVybDogc2V0dGluZ3MuY29udGFpbmVyVVJMLFxuICAgICAgbm9uY2VWYWx1ZTogc2V0dGluZ3Mubm9uY2UsXG4gICAgICBkYXRhTGF5ZXJOYW1lOiBzZXR0aW5ncy5kYXRhTGF5ZXJOYW1lXG4gICAgfSlcblxuICAgIGNvbnN0IGhlYWQ6IEhUTUxIZWFkRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzKTtcbiAgfVxufVxuIl19