ngx-matomo
Version:
Matomo (aka. Piwik) web analytics for Angular applications.
79 lines • 10.5 kB
JavaScript
import { Inject, Injectable } from '@angular/core';
import { MATOMO_CONFIGURATION } from './matomo-configuration';
import * as i0 from "@angular/core";
/**
* Service for injecting the Matomo tracker in the application.
* This service shall no longer be used directly within an application.
*/
export class MatomoInjector {
/**
* Creates an instance of MatomoInjector.
*
* @param configuration Matomo configuration provided by DI.
*/
constructor(configuration) {
this.configuration = configuration;
try {
window['_paq'] = window['_paq'] || (!!this.configuration.scriptUrl ? [] : { push: () => { } });
}
catch (e) {
if (!(e instanceof ReferenceError)) {
throw e;
}
}
}
/**
* Configures and injects the Matomo tracker in the DOM.
*/
init() {
try {
if (this.configuration?.requireConsent === true) {
window['_paq'].push(['requireConsent']);
}
else if (this.configuration?.requireCookieConsent === true) {
window['_paq'].push(['requireCookieConsent']);
}
if (this.configuration?.skipTrackingInitialPageView === false) {
window['_paq'].push(['trackPageView']);
if (this.configuration?.trackLinks === true &&
this.configuration?.routeTracking?.enable === false) {
setTimeout(() => {
window['_paq'].push([
'enableLinkTracking',
this.configuration?.trackLinkValue ?? false,
]);
}, 0);
}
}
if (this.configuration.trackers?.length) {
const [mainTracker, ...otherTrackers] = this.configuration.trackers;
window['_paq'].push(['setTrackerUrl', mainTracker.trackerUrl]);
window['_paq'].push(['setSiteId', mainTracker.siteId.toString()]);
otherTrackers.forEach((tracker) => window['_paq'].push(['addTracker', tracker.trackerUrl, tracker.siteId.toString()]));
}
if (!!this.configuration.scriptUrl) {
const script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.defer = true;
script.src = this.configuration.scriptUrl;
const firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode?.insertBefore(script, firstScript);
}
}
catch (e) {
if (!(e instanceof ReferenceError)) {
throw e;
}
}
}
}
MatomoInjector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: MatomoInjector, deps: [{ token: MATOMO_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
MatomoInjector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: MatomoInjector });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: MatomoInjector, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [MATOMO_CONFIGURATION]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0b21vLWluamVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0b21vL3NyYy9saWIvbWF0b21vLWluamVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUF1QixvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVduRjs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUN6Qjs7OztPQUlHO0lBQ0gsWUFBMkQsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQzNGLElBQUk7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDL0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxjQUFjLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLElBQUk7WUFDRixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsY0FBYyxLQUFLLElBQUksRUFBRTtnQkFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzthQUN6QztpQkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEtBQUssSUFBSSxFQUFFO2dCQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLDJCQUEyQixLQUFLLEtBQUssRUFBRTtnQkFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLElBQ0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLEtBQUssSUFBSTtvQkFDdkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLEtBQUssRUFDbkQ7b0JBQ0EsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDOzRCQUNsQixvQkFBb0I7NEJBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsY0FBYyxJQUFJLEtBQUs7eUJBQzVDLENBQUMsQ0FBQztvQkFDTCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ1A7YUFDRjtZQUNELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUN2QyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQ3BFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xFLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQ25GLENBQUM7YUFDSDtZQUNELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFO2dCQUNsQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO2dCQUNoQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDcEIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBQzFDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0QsV0FBVyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQzNEO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxjQUFjLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQzs7MkdBOURVLGNBQWMsa0JBTUwsb0JBQW9COytHQU43QixjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQU9JLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdG9tb0NvbmZpZ3VyYXRpb24sIE1BVE9NT19DT05GSUdVUkFUSU9OIH0gZnJvbSAnLi9tYXRvbW8tY29uZmlndXJhdGlvbic7XG5cbi8qKlxuICogQWNjZXNzIHRvIHRoZSBnbG9iYWwgd2luZG93IHZhcmlhYmxlLlxuICovXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzoge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIHByb3RvdHlwZTogV2luZG93O1xuICBuZXcgKCk6IFdpbmRvdztcbn07XG5cbi8qKlxuICogU2VydmljZSBmb3IgaW5qZWN0aW5nIHRoZSBNYXRvbW8gdHJhY2tlciBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGlzIHNlcnZpY2Ugc2hhbGwgbm8gbG9uZ2VyIGJlIHVzZWQgZGlyZWN0bHkgd2l0aGluIGFuIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWF0b21vSW5qZWN0b3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNYXRvbW9JbmplY3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gTWF0b21vIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQgYnkgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVE9NT19DT05GSUdVUkFUSU9OKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IE1hdG9tb0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0cnkge1xuICAgICAgd2luZG93WydfcGFxJ10gPSB3aW5kb3dbJ19wYXEnXSB8fCAoISF0aGlzLmNvbmZpZ3VyYXRpb24uc2NyaXB0VXJsID8gW10gOiB7IHB1c2g6ICgpID0+IHt9IH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlcyBhbmQgaW5qZWN0cyB0aGUgTWF0b21vIHRyYWNrZXIgaW4gdGhlIERPTS5cbiAgICovXG4gIGluaXQoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LnJlcXVpcmVDb25zZW50ID09PSB0cnVlKSB7XG4gICAgICAgIHdpbmRvd1snX3BhcSddLnB1c2goWydyZXF1aXJlQ29uc2VudCddKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5yZXF1aXJlQ29va2llQ29uc2VudCA9PT0gdHJ1ZSkge1xuICAgICAgICB3aW5kb3dbJ19wYXEnXS5wdXNoKFsncmVxdWlyZUNvb2tpZUNvbnNlbnQnXSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5za2lwVHJhY2tpbmdJbml0aWFsUGFnZVZpZXcgPT09IGZhbHNlKSB7XG4gICAgICAgIHdpbmRvd1snX3BhcSddLnB1c2goWyd0cmFja1BhZ2VWaWV3J10pO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uPy50cmFja0xpbmtzID09PSB0cnVlICYmXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uPy5yb3V0ZVRyYWNraW5nPy5lbmFibGUgPT09IGZhbHNlXG4gICAgICAgICkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93WydfcGFxJ10ucHVzaChbXG4gICAgICAgICAgICAgICdlbmFibGVMaW5rVHJhY2tpbmcnLFxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24/LnRyYWNrTGlua1ZhbHVlID8/IGZhbHNlLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24udHJhY2tlcnM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBbbWFpblRyYWNrZXIsIC4uLm90aGVyVHJhY2tlcnNdID0gdGhpcy5jb25maWd1cmF0aW9uLnRyYWNrZXJzO1xuICAgICAgICB3aW5kb3dbJ19wYXEnXS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIG1haW5UcmFja2VyLnRyYWNrZXJVcmxdKTtcbiAgICAgICAgd2luZG93WydfcGFxJ10ucHVzaChbJ3NldFNpdGVJZCcsIG1haW5UcmFja2VyLnNpdGVJZC50b1N0cmluZygpXSk7XG4gICAgICAgIG90aGVyVHJhY2tlcnMuZm9yRWFjaCgodHJhY2tlcikgPT5cbiAgICAgICAgICB3aW5kb3dbJ19wYXEnXS5wdXNoKFsnYWRkVHJhY2tlcicsIHRyYWNrZXIudHJhY2tlclVybCwgdHJhY2tlci5zaXRlSWQudG9TdHJpbmcoKV0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoISF0aGlzLmNvbmZpZ3VyYXRpb24uc2NyaXB0VXJsKSB7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgICAgICBzY3JpcHQuc3JjID0gdGhpcy5jb25maWd1cmF0aW9uLnNjcmlwdFVybDtcbiAgICAgICAgY29uc3QgZmlyc3RTY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XG4gICAgICAgIGZpcnN0U2NyaXB0LnBhcmVudE5vZGU/Lmluc2VydEJlZm9yZShzY3JpcHQsIGZpcnN0U2NyaXB0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=