@piwikpro/ngx-piwik-pro
Version:
Piwik PRO tracking library for Angular apps.
60 lines • 8 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) {
if (window) {
window._paq = window._paq || [];
Miscellaneous.setTrackingSourceProvider("angular", VERSION);
}
return async () => {
if (!isPlatformBrowser(platformId)) {
return;
}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl3aWstcHJvLmluaXRpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXBpd2lrLXByby9zcmMvbGliL2luaXRpYWxpemVycy9waXdpay1wcm8uaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBb0I7SUFDakUsT0FBTyxFQUFFLGVBQWU7SUFDeEIsS0FBSyxFQUFFLElBQUk7SUFDWCxVQUFVLEVBQUUsbUJBQW1CO0lBQy9CLElBQUksRUFBRTtRQUNKLDRCQUE0QjtRQUM1QixRQUFRO1FBQ1IsV0FBVztLQUNaO0NBQ0YsQ0FBQTtBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsUUFBMEIsRUFDMUIsUUFBa0IsRUFDbEIsVUFBa0I7SUFFbEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDaEMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLElBQUksRUFBRTtRQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0dBQWtHLENBQUMsQ0FBQztZQUNwSCxDQUFDO1lBRUQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLGlHQUFpRyxDQUFDLENBQUM7WUFDbkgsQ0FBQztZQUVELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0hBQStILENBQUMsQ0FBQztZQUNqSixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUcsUUFBUSxDQUFDLGFBQWEsRUFBQyxDQUFDO1lBQ3ZCLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFzQixRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2YsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDOUIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1lBQ2pDLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEtBQUs7WUFDMUIsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhO1NBQ3RDLENBQUMsQ0FBQTtRQUVGLE1BQU0sSUFBSSxHQUFvQixRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBGYWN0b3J5UHJvdmlkZXIsIFBMQVRGT1JNX0lELCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgUGl3aWtQcm8sIHsgRGF0YUxheWVyLCBNaXNjZWxsYW5lb3VzIH0gZnJvbSAnQHBpd2lrcHJvL3RyYWNraW5nLWJhc2UtbGlicmFyeSc7XG5cbmltcG9ydCB7IE5HWF9QSVdJS19QUk9fU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi90b2tlbnMvbmd4LXBpd2lrLXByby1zZXR0aW5ncy50b2tlbic7XG5pbXBvcnQgeyBQaXdpa1Byb1NldHRpbmdzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9waXdpay1wcm8tc2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tIFwiLi4vLi4vdmVyc2lvblwiXG5cbmV4cG9ydCBjb25zdCBOR1hfUElXSUtfUFJPX0lOSVRJQUxJWkVSX1BST1ZJREVSOiBGYWN0b3J5UHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgbXVsdGk6IHRydWUsXG4gIHVzZUZhY3Rvcnk6IFBpd2lrUHJvSW5pdGlhbGl6ZXIsXG4gIGRlcHM6IFtcbiAgICBOR1hfUElXSUtfUFJPX1NFVFRJTkdTX1RPS0VOLFxuICAgIERPQ1VNRU5ULFxuICAgIFBMQVRGT1JNX0lELFxuICBdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQaXdpa1Byb0luaXRpYWxpemVyKFxuICBzZXR0aW5nczogUGl3aWtQcm9TZXR0aW5ncyxcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBwbGF0Zm9ybUlkOiBzdHJpbmdcbikge1xuICBpZiAod2luZG93KSB7XG4gICAgd2luZG93Ll9wYXEgPSB3aW5kb3cuX3BhcSB8fCBbXTtcbiAgICBNaXNjZWxsYW5lb3VzLnNldFRyYWNraW5nU291cmNlUHJvdmlkZXIoXCJhbmd1bGFyXCIsIFZFUlNJT04pXG4gIH1cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFzZXR0aW5ncy5jb250YWluZXJJZCkge1xuICAgICAgaWYgKCFpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFbXB0eSB0cmFja2luZyBjb2RlIGZvciBQaXdpayBQcm8uIE1ha2Ugc3VyZSB0byBwcm92aWRlIG9uZSB3aGVuIGluaXRpYWxpemluZyBOZ3hQaXdpa1Byb01vZHVsZS4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghc2V0dGluZ3MuY29udGFpbmVyVVJMKSB7XG4gICAgICBpZiAoIWlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VtcHR5IHRyYWNraW5nIFVSTCBmb3IgUGl3aWsgUHJvLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBvbmUgd2hlbiBpbml0aWFsaXppbmcgTmd4UGl3aWtQcm9Nb2R1bGUuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWRvY3VtZW50KSB7XG4gICAgICBpZiAoIWlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcyBub3QgcG9zc2libGUgdG8gYWNjZXNzIERvY3VtZW50IGludGVyZmFjZS4gTWFrZSBzdXJlIHRoaXMgbW9kdWxlIGlzIHJ1bm5pbmcgb24gYSBCcm93c2VyIHcvIGFjY2VzcyBkbyBEb2N1bWVudCBpbnRlcmZhY2UuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYoc2V0dGluZ3MuZGF0YUxheWVyTmFtZSl7XG4gICAgICAgIERhdGFMYXllci5zZXREYXRhTGF5ZXJOYW1lKHNldHRpbmdzLmRhdGFMYXllck5hbWUpXG4gICAgfVxuXG4gICAgY29uc3QgczogSFRNTFNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzLmFzeW5jID0gdHJ1ZTtcbiAgICBpZiAoc2V0dGluZ3Mubm9uY2UpIHtcbiAgICAgIHMuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgc2V0dGluZ3Mubm9uY2UpO1xuICAgIH1cbiAgICBzLnRleHQgPSBQaXdpa1Byby5nZXRJbml0U2NyaXB0KHtcbiAgICAgIGNvbnRhaW5lcklkOiBzZXR0aW5ncy5jb250YWluZXJJZCxcbiAgICAgIGNvbnRhaW5lclVybDogc2V0dGluZ3MuY29udGFpbmVyVVJMLFxuICAgICAgbm9uY2VWYWx1ZTogc2V0dGluZ3Mubm9uY2UsXG4gICAgICBkYXRhTGF5ZXJOYW1lOiBzZXR0aW5ncy5kYXRhTGF5ZXJOYW1lXG4gICAgfSlcblxuICAgIGNvbnN0IGhlYWQ6IEhUTUxIZWFkRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzKTtcbiAgfVxufVxuIl19