ngx-matomo
Version:
Matomo (aka. Piwik) web analytics for Angular applications.
1 lines • 109 kB
Source Map (JSON)
{"version":3,"file":"ngx-matomo.mjs","sources":["../../../projects/ngx-matomo/src/lib/matomo-configuration.ts","../../../projects/ngx-matomo/src/lib/matomo-injector.service.ts","../../../projects/ngx-matomo/src/lib/matomo-tracker.service.ts","../../../projects/ngx-matomo/src/helpers.ts","../../../projects/ngx-matomo/src/lib/matomo-route-tracker.service.ts","../../../projects/ngx-matomo/src/lib/matomo.module.ts","../../../projects/ngx-matomo/src/public-api.ts","../../../projects/ngx-matomo/src/ngx-matomo.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface SanitizedMatomoConfiguration {\n /**\n * URL of the Matomo JS script to execute.\n */\n scriptUrl?: string;\n /**\n * Version of the Matomo JS script to download.\n * (there is no easy way to know for sure which features will be supported in the script)\n */\n scriptVersion: number;\n /**\n * Array of trackers, each one of them being described by its URL and site id.\n */\n trackers: Array<{ trackerUrl: string; siteId: number }>;\n /**\n * If true, user consent will be required.\n */\n requireConsent?: boolean;\n /**\n * If true, user consent will be required for cookies to be stored and used.\n */\n requireCookieConsent?: boolean;\n /**\n * If true, initial page view will not be tracked.\n */\n skipTrackingInitialPageView?: boolean;\n /**\n * If true, link will be automatically tracked on the first page (if enabled).\n */\n trackLinks?: boolean;\n /**\n * When link tracking has been enabled, this sets the value to the call to `enableLinkTracking`\n */\n trackLinkValue?: boolean;\n /**\n * Parameters related to route tracking.\n */\n routeTracking?: {\n /**\n * If true, automatic route tracking is enabled.\n */\n enable: boolean;\n /**\n * List of DOM element ids for tracking content impressions.\n */\n contentIds?: Array<string>;\n };\n}\n\n/**\n * Matomo module configuration interface.\n */\nexport interface MatomoConfiguration extends SanitizedMatomoConfiguration {\n /**\n * If true, automatically track the app being started.\n * @deprecated\n */\n trackAppStart?: boolean;\n}\n\nexport function sanitizeConfiguration(\n configuration: Partial<MatomoConfiguration>\n): Partial<SanitizedMatomoConfiguration> {\n const sanitizedConfiguration: Partial<SanitizedMatomoConfiguration> = {\n ...defaultConfiguration,\n ...configuration,\n };\n\n if (configuration.trackAppStart !== undefined && configuration.trackAppStart !== null) {\n sanitizedConfiguration.skipTrackingInitialPageView = !configuration.trackAppStart;\n }\n\n if (configuration.routeTracking !== undefined && configuration.routeTracking !== null) {\n sanitizedConfiguration.routeTracking = configuration.routeTracking;\n }\n\n return sanitizedConfiguration;\n}\n\n/**\n * Injection token for Matomo configuration.\n */\nexport const MATOMO_CONFIGURATION = new InjectionToken<string>('MATOMO_CONFIGURATION');\n\n/**\n * Default configuration for the Matomo module.\n */\nconst defaultConfiguration: Partial<SanitizedMatomoConfiguration> = {\n scriptVersion: 4,\n trackers: [],\n requireConsent: false,\n requireCookieConsent: false,\n skipTrackingInitialPageView: false,\n trackLinks: true,\n trackLinkValue: false,\n routeTracking: {\n enable: false,\n },\n};\n","import { Inject, Injectable } from '@angular/core';\n\nimport { MatomoConfiguration, MATOMO_CONFIGURATION } from './matomo-configuration';\n\n/**\n * Access to the global window variable.\n */\ndeclare const window: {\n [key: string]: any;\n prototype: Window;\n new (): Window;\n};\n\n/**\n * Service for injecting the Matomo tracker in the application.\n * This service shall no longer be used directly within an application.\n */\n@Injectable()\nexport class MatomoInjector {\n /**\n * Creates an instance of MatomoInjector.\n *\n * @param configuration Matomo configuration provided by DI.\n */\n constructor(@Inject(MATOMO_CONFIGURATION) private readonly configuration: MatomoConfiguration) {\n try {\n window['_paq'] = window['_paq'] || (!!this.configuration.scriptUrl ? [] : { push: () => {} });\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Configures and injects the Matomo tracker in the DOM.\n */\n init(): void {\n try {\n if (this.configuration?.requireConsent === true) {\n window['_paq'].push(['requireConsent']);\n } else if (this.configuration?.requireCookieConsent === true) {\n window['_paq'].push(['requireCookieConsent']);\n }\n if (this.configuration?.skipTrackingInitialPageView === false) {\n window['_paq'].push(['trackPageView']);\n if (\n this.configuration?.trackLinks === true &&\n this.configuration?.routeTracking?.enable === false\n ) {\n setTimeout(() => {\n window['_paq'].push([\n 'enableLinkTracking',\n this.configuration?.trackLinkValue ?? false,\n ]);\n }, 0);\n }\n }\n if (this.configuration.trackers?.length) {\n const [mainTracker, ...otherTrackers] = this.configuration.trackers;\n window['_paq'].push(['setTrackerUrl', mainTracker.trackerUrl]);\n window['_paq'].push(['setSiteId', mainTracker.siteId.toString()]);\n otherTrackers.forEach((tracker) =>\n window['_paq'].push(['addTracker', tracker.trackerUrl, tracker.siteId.toString()])\n );\n }\n if (!!this.configuration.scriptUrl) {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = this.configuration.scriptUrl;\n const firstScript = document.getElementsByTagName('script')[0];\n firstScript.parentNode?.insertBefore(script, firstScript);\n }\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { MATOMO_CONFIGURATION, MatomoConfiguration } from './matomo-configuration';\n\n/**\n * Access to the global window variable.\n */\ndeclare var window: {\n [key: string]: any;\n prototype: Window;\n new (): Window;\n};\n// declare interface Window {\n// _paq: any;\n// }\n\n/**\n * Matomo scope\n */\ntype MatomoScope = 'page' | 'visit' | 'event';\n\nconst heatmapSessionRecording = {\n disableCaptureKeystrokes(): void {\n try {\n window['_paq'].push(['HeatmapSessionRecording::disableCaptureKeystrokes']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n },\n};\n\n/**\n * Wrapper for functions available in the Matomo Javascript tracker.\n *\n * @export\n */\n@Injectable()\nexport class MatomoTracker {\n heatmapSessionRecording = heatmapSessionRecording;\n\n /**\n * Creates an instance of MatomoTracker.\n *\n * @param configuration Matomo configuration provided by DI.\n */\n constructor(@Inject(MATOMO_CONFIGURATION) private readonly configuration: MatomoConfiguration) {\n try {\n if (typeof window['_paq'] === 'undefined') {\n console.warn('Matomo has not yet been initialized!');\n }\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Logs a visit to this page.\n *\n * @param [customTitle] Optional title of the visited page.\n */\n trackPageView(customTitle?: string): void {\n try {\n const args: any[] = [];\n if (!!customTitle) {\n args.push(customTitle);\n }\n window['_paq'].push(['trackPageView', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Logs an event with an event category (Videos, Music, Games…), an event action (Play, Pause, Duration,\n * Add Playlist, Downloaded, Clicked…), and an optional event name and optional numeric value.\n *\n * @param category Category of the event.\n * @param action Action of the event.\n * @param [name] Optional name of the event.\n * @param [value] Optional value for the event.\n */\n trackEvent(category: string, action: string, name?: string, value?: number): void {\n try {\n const args: any[] = [category, action];\n if (!!name) {\n args.push(name);\n if (typeof value === 'number') {\n args.push(value);\n }\n }\n window['_paq'].push(['trackEvent', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Logs an internal site search for a specific keyword, in an optional category,\n * specifying the optional count of search results in the page.\n *\n * @param keyword Keywords of the search query.\n * @param [category] Optional category of the search query.\n * @param [resultsCount] Optional number of results returned by the search query.\n */\n trackSiteSearch(keyword: string, category?: string, resultsCount?: number): void {\n try {\n const args: any[] = [keyword];\n if (!!category) {\n args.push(category);\n if (typeof resultsCount === 'number') {\n args.push(resultsCount);\n }\n }\n window['_paq'].push(['trackSiteSearch', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Manually logs a conversion for the numeric goal ID, with an optional numeric custom revenue customRevenue.\n *\n * @param idGoal numeric ID of the goal to log a conversion for.\n * @param [customRevenue] Optional custom revenue to log for the goal.\n */\n trackGoal(idGoal: number, customRevenue?: number): void {\n try {\n const args: any[] = [idGoal];\n if (typeof customRevenue === 'number') {\n args.push(customRevenue);\n }\n window['_paq'].push(['trackGoal', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Manually logs a click from your own code.\n *\n * @param url Full URL which is to be tracked as a click.\n * @param linkType Either 'link' for an outlink or 'download' for a download.\n */\n trackLink(url: string, linkType: 'link' | 'download'): void {\n try {\n window['_paq'].push(['trackLink', url, linkType]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Scans the entire DOM for all content blocks and tracks all impressions once the DOM ready event has been triggered.\n *\n * @see {@link https://developer.matomo.org/guides/content-tracking|Content Tracking}\n */\n trackAllContentImpressions(): void {\n try {\n window['_paq'].push(['trackAllContentImpressions']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Scans the entire DOM for all content blocks as soon as the page is loaded.<br />\n * It tracks an impression only if a content block is actually visible.\n *\n * @param checkOnScroll If true, checks for new content blocks while scrolling the page.\n * @param timeInterval Duration, in milliseconds, between two checks upon scroll.\n * @see {@link https://developer.matomo.org/guides/content-tracking|Content Tracking}\n */\n trackVisibleContentImpressions(checkOnScroll: boolean, timeInterval: number): void {\n try {\n window['_paq'].push(['trackVisibleContentImpressions', checkOnScroll, timeInterval]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Scans the given DOM node and its children for content blocks and tracks an impression for them\n * if no impression was already tracked for it.\n *\n * @param node DOM node in which to look for content blocks which have not been previously tracked.\n * @see {@link https://developer.matomo.org/guides/content-tracking|Content Tracking}\n */\n trackContentImpressionsWithinNode(node: Node): void {\n try {\n window['_paq'].push(['trackContentImpressionsWithinNode', node]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Tracks an interaction with the given DOM node/content block.\n *\n * @param node DOM node for which to track a content interaction.\n * @param contentInteraction Name of the content interaction.\n * @see {@link https://developer.matomo.org/guides/content-tracking|Content Tracking}\n */\n trackContentInteractionNode(node: Node, contentInteraction: string): void {\n try {\n window['_paq'].push(['trackContentInteractionNode', node, contentInteraction]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Tracks a content impression using the specified values.\n *\n * @param contentName Content name.\n * @param contentPiece Content piece.\n * @param contentTarget Content target.\n * @see {@link https://developer.matomo.org/guides/content-tracking|Content Tracking}\n */\n trackContentImpression(contentName: string, contentPiece: string, contentTarget: string): void {\n try {\n window['_paq'].push(['trackContentImpression', contentName, contentPiece, contentTarget]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Tracks a content interaction using the specified values.\n *\n * @param contentInteraction Content interaction.\n * @param contentName Content name.\n * @param contentPiece Content piece.\n * @param contentTarget Content target.\n * @see {@link https://developer.matomo.org/guides/content-tracking|Content Tracking}\n */\n trackContentInteraction(\n contentInteraction: string,\n contentName: string,\n contentPiece: string,\n contentTarget: string\n ): void {\n try {\n window['_paq'].push([\n 'trackContentInteraction',\n contentInteraction,\n contentName,\n contentPiece,\n contentTarget,\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Logs all found content blocks within a page to the console.<br />\n * This is useful to debug / test content tracking.\n */\n logAllContentBlocksOnPage(): void {\n try {\n window['_paq'].push(['logAllContentBlocksOnPage']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sends a ping request.<br />\n * Ping requests do not track new actions.\n * If they are sent within the standard visit length, they will extend the existing visit and the current last action for the visit.\n * If sent after the standard visit length, ping requests will create a new visit using the last action in the last known visit.<br />\n * See also enableHeartBeatTimer.\n */\n ping(): void {\n try {\n window['_paq'].push(['ping']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Installs a Heart beat timer that will regularly send requests to Matomo in order to better measure the time spent on the page.<br />\n * These requests will be sent only when the user is actively viewing the page (when the tab is active and in focus).<br />\n * These requests will not track additional actions or page views.<br />\n * By default, the delay is set to 15 seconds.\n *\n * @param delay Delay, in seconds, between two heart beats to the server.\n */\n enableHeartBeatTimer(delay: number): void {\n try {\n window['_paq'].push(['enableHeartBeatTimer', delay]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Installs link tracking on all applicable link elements.\n *\n * @param [enable=false] Set to true to use pseudo click-handler (treat middle click and open contextmenu as\n * left click).<br />\n * A right click (or any click that opens the context menu) on a link will be tracked as clicked even if \"Open in new tab\"\n * is not selected.<br />\n * If false (default), nothing will be tracked on open context menu or middle click.\n */\n enableLinkTracking(enable: boolean = false): void {\n try {\n window['_paq'].push(['enableLinkTracking', enable]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Enables cross domain linking. By default, the visitor ID that identifies a unique visitor is stored in the browser's\n * first party cookies.<br />\n * This means the cookie can only be accessed by pages on the same domain.<br />\n * If you own multiple domains and would like to track all the actions and pageviews of a specific visitor into the same visit,\n * you may enable cross domain linking.<br />\n * Whenever a user clicks on a link it will append a URL parameter pk_vid to the clicked URL which forwards the current\n * visitor ID value to the page of the different domain.\n *\n * @see {@link https://matomo.org/faq/how-to/faq_23654/|Cross Domain Linking}\n */\n enableCrossDomainLinking(): void {\n try {\n window['_paq'].push(['enableCrossDomainLinking']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the cross domain linking timeout.<br />\n * By default, the two visits across domains will be linked together when the link is clicked and the page is loaded within\n * a 180 seconds timeout window.\n *\n * @param timeout Timeout, in seconds, between two actions across two domains before creating a new visit.\n * @see {@link https://matomo.org/faq/how-to/faq_23654/|Cross Domain Linking}\n */\n setCrossDomainLinkingTimeout(timeout: number): void {\n try {\n window['_paq'].push(['setCrossDomainLinkingTimeout', timeout]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Returns the query parameter to append to links to handle cross domain linking.<br />\n * Use this to add cross domain support for links that are added to the DOM dynamically.\n *\n * @returns Promise for the `pk_vid` query parameter.\n * @see {@link https://matomo.org/faq/how-to/faq_23654/|Cross Domain Linking}\n */\n getCrossDomainLinkingUrlParameter(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getCrossDomainLinkingUrlParameter());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Overrides document.title\n *\n * @param title Title of the document.\n */\n setDocumentTitle(title: string): void {\n try {\n window['_paq'].push(['setDocumentTitle', title]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets array of hostnames or domains to be treated as local.<br />\n * For wildcard subdomains, you can use: `setDomains('.example.com')`; or `setDomains('*.example.com');`.<br />\n * You can also specify a path along a domain: `setDomains('*.example.com/subsite1');`.\n *\n * @param domains List of hostnames or domains, with or without path, to be treated as local.\n * @see {@link https://matomo.org/faq/how-to/faq_23654/|Cross Domain Linking}\n */\n setDomains(domains: string[]): void {\n try {\n window['_paq'].push(['setDomains', domains]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Override the page's reported URL.\n *\n * @param url URL to be reported for the page.\n */\n setCustomUrl(url: string): void {\n try {\n window['_paq'].push(['setCustomUrl', url]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Overrides the detected Http-Referer.\n *\n * @param url URL to be reported for the referer.\n */\n setReferrerUrl(url: string): void {\n try {\n window['_paq'].push(['setReferrerUrl', url]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Specifies the website ID.<br />\n * Redundant: can be specified in getTracker() constructor.\n *\n * // TODO Investigate if setSiteId needs to be removed from MatomoTracker.\n * @param siteId Site ID for the tracker.\n */\n setSiteId(siteId: number): void {\n try {\n window['_paq'].push(['setSiteId', siteId]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Specifies the Matomo HTTP API URL endpoint.<br />\n * Points to the root directory of Matomo, e.g. http://matomo.example.org/ or https://example.org/matomo/.<br />\n * This function is only useful when the 'Overlay' report is not working.<br />\n * By default, you do not need to use this function.\n *\n * @param url URL for Matomo HTTP API endpoint.\n */\n setApiUrl(url: string): void {\n try {\n window['_paq'].push(['setApiUrl', url]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Specifies the Matomo server URL.<br />\n * Redundant: can be specified in getTracker() constructor.\n *\n * // TODO Investigate if setTrackerUrl needs to be removed from MatomoTracker.\n * @param url URL for the Matomo server.\n */\n setTrackerUrl(url: string): void {\n try {\n window['_paq'].push(['setTrackerUrl', url]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Returns the Matomo server URL.\n *\n * @returns Promise for the Matomo server URL.\n */\n getMatomoUrl(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getPiwikUrl());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the current url of the page that is currently being visited.<br />\n * If a custom URL was set before calling this method, the custom URL will be returned.\n *\n * @returns Promise for the URL of the current page.\n */\n getCurrentUrl(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getCurrentUrl());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Sets classes to be treated as downloads (in addition to piwik_download).\n *\n * @param classes Class, or list of classes to be treated as downloads.\n */\n setDownloadClasses(classes: string | string[]): void {\n try {\n window['_paq'].push(['setDownloadClasses', classes]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets file extensions to be recognized as downloads.<br />\n * Example: `'docx'` or `['docx', 'xlsx']`.\n *\n * @param extensions Extension, or list of extensions to be recognized as downloads.\n */\n setDownloadExtensions(extensions: string | string[]): void {\n try {\n window['_paq'].push(['setDownloadClasses', extensions]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets additional file extensions to be recognized as downloads.<br />\n * Example: `'docx'` or `['docx', 'xlsx']`.\n *\n * @param extensions Extension, or list of extensions to be recognized as downloads.\n */\n addDownloadExtensions(extensions: string | string[]): void {\n try {\n window['_paq'].push(['setDownloadClasses', extensions]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Specifies file extensions to be removed from the list of download file extensions.<br />\n * Example: `'docx'` or `['docx', 'xlsx']`.\n *\n * @param extensions Extension, or list of extensions not to be recognized as downloads.\n */\n removeDownloadExtensions(extensions: string | string[]): void {\n try {\n window['_paq'].push(['setDownloadClasses', extensions]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets classes to be ignored if present in link (in addition to piwik_ignore).\n *\n * @param classes Class, or list of classes to be ignored if present in link.\n */\n setIgnoreClasses(classes: string | string[]): void {\n try {\n window['_paq'].push(['setDownloadClasses', classes]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets classes to be treated as outlinks (in addition to piwik_link).\n *\n * @param classes Class, or list of classes to be treated as outlinks.\n */\n setLinkClasses(classes: string | string[]): void {\n try {\n window['_paq'].push(['setDownloadClasses', classes]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets delay for link tracking (in milliseconds).\n *\n * @param delay Delay, in milliseconds, for link tracking.\n */\n setLinkTrackingTimer(delay: number): void {\n try {\n window['_paq'].push(['setLinkTrackingTimer', delay]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Returns delay for link tracking.\n *\n * @returns Promise for the delay in milliseconds.\n */\n getLinkTrackingTimer(): Promise<number> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getLinkTrackingTimer());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Sets if or not to record the hash tag (anchor) portion of URLs.\n *\n * @param value If true, the hash tag portion of the URLs won't be recorded.\n */\n discardHashTag(value: boolean): void {\n try {\n window['_paq'].push(['discardHashTag', value]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * By default Matomo uses the browser DOM Timing API to accurately determine the time it takes to generate and download\n * the page. You may overwrite this value with this function.\n * This function is deprecated in Matomo 4.x.\n *\n * @param generationTime Time, in milliseconds, of the page generation.\n */\n setGenerationTimeMs(generationTime: number): void {\n if (this.configuration.scriptVersion < 4) {\n try {\n window['_paq'].push(['setGenerationTimeMs', generationTime]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n }\n\n /**\n * Appends a custom string to the end of the HTTP request to piwik.php.\n *\n * @param appendToUrl String to append to the end of the HTTP request to piwik.php/matomo.php.\n */\n appendToTrackingUrl(appendToUrl: string): void {\n try {\n window['_paq'].push(['appendToTrackingUrl', appendToUrl]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Enables a frame-buster to prevent the tracked web page from being framed/iframed.\n */\n killFrame(): void {\n try {\n window['_paq'].push(['killFrame']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Forces the browser to load the live URL if the tracked web page is loaded from a local file\n * (e.g., saved to someone's desktop).\n *\n * @param url URL to track instead of file:// URLs.\n */\n redirectFile(url: string): void {\n try {\n window['_paq'].push(['redirectFile', url]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Records how long the page has been viewed if the minimumVisitLength is attained;\n * the heartBeatDelay determines how frequently to update the server.\n *\n * @param minimumVisitLength Duration before notifying the server for the duration of the visit to a page.\n * @param heartBeatDelay Delay, in seconds, between two updates to the server.\n * @see {@link https://developer.matomo.org/guides/tracking-javascript-guide#accurately-measure-the-time-spent-on-each-page}\n */\n setHeartBeatTimer(minimumVisitLength: number, heartBeatDelay: number): void {\n try {\n window['_paq'].push(['setHeartBeatTimer', minimumVisitLength, heartBeatDelay]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Returns the 16 characters ID for the visitor.\n *\n * @returns Promise for the the 16 characters ID for the visitor.\n */\n getVisitorId(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getVisitorId());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the visitor cookie contents in an array.\n *\n * @returns Promise for the cookie contents in an array.\n */\n getVisitorInfo(): Promise<any[]> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getVisitorInfo());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the visitor attribution array (Referer information and/or Campaign name & keyword).<br />\n * Attribution information is used by Matomo to credit the correct referrer (first or last referrer)\n * used when a user triggers a goal conversion.\n *\n * @returns Promise for the visitor attribution array (Referer information and/or Campaign name & keyword).\n */\n getAttributionInfo(): Promise<any[]> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getAttributionInfo());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the attribution campaign name.\n *\n * @returns Promise for the the attribution campaign name.\n */\n getAttributionCampaignName(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getAttributionCampaignName());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the attribution campaign keyword.\n *\n * @returns Promise for the attribution campaign keyword.\n */\n getAttributionCampaignKeyword(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getAttributionCampaignKeyword());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the attribution referrer timestamp.\n *\n * @returns Promise for the attribution referrer timestamp (as string).\n */\n getAttributionReferrerTimestamp(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getAttributionReferrerTimestamp());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the attribution referrer URL.\n *\n * @returns Promise for the attribution referrer URL\n */\n getAttributionReferrerUrl(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getAttributionReferrerUrl());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Returns the User ID string if it was set.\n *\n * @returns Promise for the User ID for the visitor.\n * @see {@link https://matomo.org/docs/user-id/|Matomo User ID}\n */\n getUserId(): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getUserId());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Sets a User ID to this user (such as an email address or a username).\n *\n * @param userId User ID to set for the current visitor.\n * @see {@link https://matomo.org/docs/user-id/|Matomo User ID}\n */\n setUserId(userId: string): void {\n try {\n window['_paq'].push(['setUserId', userId]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Resets the User ID which also generates a new Visitor ID.\n *\n * @see {@link https://matomo.org/docs/user-id/|Matomo User ID}\n */\n resetUserId(): void {\n try {\n window['_paq'].push(['resetUserId']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets a custom variable.\n *\n * @param index Index, the number from 1 to 5 where this custom variable name is stored for the current page view.\n * @param name Name, the name of the variable, for example: Category, Sub-category, UserType.\n * @param value Value, for example: \"Sports\", \"News\", \"World\", \"Business\"…\n * @param scope Scope of the custom variable:<br />\n * - 'page' means the custom variable applies to the current page view.\n * - 'visit' means the custom variable applies to the current visitor.\n * - 'event' means the custom variable applies to the current event.\n * @see {@link https://matomo.org/docs/custom-variables/|Custom Variables}\n */\n setCustomVariable(index: number, name: string, value: string, scope: MatomoScope): void {\n try {\n window['_paq'].push(['setCustomVariable', index, name, value, scope]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Deletes a custom variable.\n *\n * @param index Index of the custom variable to delete.\n * @param scope Scope of the custom variable to delete.\n * @see {@link https://matomo.org/docs/custom-variables/|Custom Variables}\n */\n deleteCustomVariable(index: number, scope: MatomoScope): void {\n try {\n window['_paq'].push(['deleteCustomVariable', index, scope]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Deletes all custom variables.\n *\n * @param scope Scope of the custom variables to delete.\n * @see {@link https://matomo.org/docs/custom-variables/|Custom Variables}\n */\n deleteCustomVariables(scope: MatomoScope): void {\n try {\n window['_paq'].push(['deleteCustomVariables', scope]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Retrieves a custom variable.\n *\n * @param index Index of the custom variable to retrieve.\n * @param scope Scope of the custom variable to retrieve.\n * @returns Promise for the value of custom variable.\n * @see {@link https://matomo.org/docs/custom-variables/|Custom Variables}\n */\n getCustomVariable(index: number, scope: MatomoScope): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getCustomVariable(index, scope));\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * When called then the Custom Variables of scope 'visit' will be stored (persisted) in a first party cookie\n * for the duration of the visit.<br />\n * This is useful if you want to call getCustomVariable later in the visit.<br />\n * (by default custom variables are not stored on the visitor's computer.)\n *\n * @see {@link https://matomo.org/docs/custom-variables/|Custom Variables}\n */\n storeCustomVariablesInCookie(): void {\n try {\n window['_paq'].push(['storeCustomVariablesInCookie']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets a custom dimension.<br />\n * (requires Matomo 2.15.1 + Custom Dimensions plugin)\n *\n * @param customDimensionId ID of the custom dimension to set.\n * @param customDimensionValue Value to be set.\n * @see {@link https://plugins.piwik.org/CustomDimensions|Custom Dimensions}\n */\n setCustomDimension(customDimensionId: number, customDimensionValue: string): void {\n try {\n window['_paq'].push(['setCustomDimension', customDimensionId, customDimensionValue]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Deletes a custom dimension.<br />\n * (requires Matomo 2.15.1 + Custom Dimensions plugin)\n *\n * @param customDimensionId ID of the custom dimension to delete.\n * @see {@link https://plugins.piwik.org/CustomDimensions|Custom Dimensions}\n */\n deleteCustomDimension(customDimensionId: number): void {\n try {\n window['_paq'].push(['deleteCustomDimension', customDimensionId]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Retrieve a custom dimension.<br />\n * (requires Matomo 2.15.1 + Custom Dimensions plugin)\n *\n * @param customDimensionId ID of the custom dimension to retrieve.\n * @returns Promise for the value for the requested custom dimension.\n * @see {@link https://plugins.piwik.org/CustomDimensions|Custom Dimensions}\n */\n getCustomDimension(customDimensionId: number): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getCustomDimension(customDimensionId));\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Sets campaign name parameter(s).\n *\n * @param name Name of the campaign\n * @see {@link https://matomo.org/docs/tracking-campaigns/|Campaigns}\n */\n setCampaignNameKey(name: string): void {\n try {\n window['_paq'].push(['setCampaignNameKey', name]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets campaign keyword parameter(s).\n *\n * @param keyword Keyword parameter(s) of the campaign.\n * @see {@link https://matomo.org/docs/tracking-campaigns/|Campaigns}\n */\n setCampaignKeywordKey(keyword: string): void {\n try {\n window['_paq'].push(['setCampaignKeywordKey', keyword]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets if or not to attribute a conversion to the first referrer.<br />\n * By default, conversion is attributed to the most recent referrer.\n *\n * @param conversionToFirstReferrer If true, Matomo will attribute the Goal conversion to the first referrer used\n * instead of the last one.\n * @see {@link https://matomo.org/docs/tracking-campaigns/|Campaigns}\n * @see {@link https://matomo.org/faq/general/faq_106/#faq_106|Conversions to the first referrer}\n */\n setConversionAttributionFirstReferrer(conversionToFirstReferrer: boolean): void {\n try {\n window['_paq'].push(['setConversionAttributionFirstReferrer', conversionToFirstReferrer]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the current page view as a product or category page view.<br />\n * When you call setEcommerceView, it must be followed by a call to trackPageView to record the product or category page view.\n *\n * @param productSKU SKU of the viewed product.\n * @param productName Name of the viewed product.\n * @param productCategory Category of the viewed product.\n * @param price Price of the viewed product.\n */\n setEcommerceView(\n productSKU: string,\n productName: string,\n productCategory: string,\n price: number\n ): void {\n try {\n window['_paq'].push(['setEcommerceView', productSKU, productName, productCategory, price]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Adds a product into the eCommerce order.<br />\n * Must be called for each product in the order.\n *\n * @param productSKU SKU of the product to add.\n * @param [productName] Optional name of the product to add.\n * @param [productCategory] Optional category of the product to add.\n * @param [price] Optional price of the product to add.\n * @param [quantity] Optional quantity of the product to add.\n */\n addEcommerceItem(\n productSKU: string,\n productName?: string,\n productCategory?: string,\n price?: number,\n quantity?: number\n ): void {\n try {\n const args: any[] = [productSKU];\n if (!!productName) {\n args.push(productName);\n if (!!productCategory) {\n args.push(productCategory);\n if (typeof price === 'number') {\n args.push(price);\n if (typeof quantity === 'number') {\n args.push(quantity);\n }\n }\n }\n }\n window['_paq'].push(['addEcommerceItem', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Removes the specified product from the untracked ecommerce order.\n *\n * @param productSKU SKU of the product to remove.\n */\n removeEcommerceItem(productSKU: string): void {\n try {\n const args: any[] = [productSKU];\n window['_paq'].push(['removeEcommerceItem', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Removes all products in the untracked ecommerce order.<br />\n * Note: this is done automatically after trackEcommerceOrder() is called.\n */\n clearEcommerceCart(): void {\n try {\n window['_paq'].push(['clearEcommerceCart']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Returns all ecommerce items currently in the untracked ecommerce order.\n * The returned array will be a copy, so changing it won't affect the ecommerce order.<br />\n * To affect what gets tracked, use the addEcommerceItem()/removeEcommerceItem()/clearEcommerceCart() methods.<br />\n * Use this method to see what will be tracked before you track an order or cart update.\n */\n getEcommerceItems(): Promise<\n Array<{\n productSKU: string;\n productName?: string;\n productCategory?: string;\n price?: number;\n quantity?: number;\n }>\n > {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.getEcommerceItems());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Tracks a shopping cart.<br />\n * Call this function every time a user is adding, updating or deleting a product from the cart.\n *\n * @param grandTotal Grand total of the shopping cart.\n */\n trackEcommerceCartUpdate(grandTotal: number): void {\n try {\n window['_paq'].push(['trackEcommerceCartUpdate', grandTotal]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Tracks an Ecommerce order, including any eCommerce item previously added to the order.<br />\n * orderId and grandTotal (ie.revenue) are required parameters.\n *\n * @param orderId ID of the tracked order.\n * @param grandTotal Grand total of the tracked order.\n * @param [subTotal] Sub total of the tracked order.\n * @param [tax] Taxes for the tracked order.\n * @param [shipping] Shipping fees for the tracked order.\n * @param [discount] Discount granted for the tracked order.\n */\n trackEcommerceOrder(\n orderId: string,\n grandTotal: number,\n subTotal?: number,\n tax?: number,\n shipping?: number,\n discount?: number | boolean\n ): void {\n try {\n const args: any[] = [orderId, grandTotal];\n if (typeof subTotal === 'number') {\n args.push(subTotal);\n if (typeof tax === 'number') {\n args.push(tax);\n if (typeof shipping === 'number') {\n args.push(shipping);\n if (typeof discount === 'number' || typeof discount === 'boolean') {\n args.push(discount);\n }\n }\n }\n }\n window['_paq'].push(['trackEcommerceOrder', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n // xxxx(): void {\n // try {\n // window['_paq'].push(['HeatmapSessionRecording::disableCaptureKeystrokes']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['HeatmapSessionRecording::disableAutoDetectNewPageView']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['enableAutoDetectNewPageView']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['disableRecordMovements']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['enableRecordMovements']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['setNewPageView + fetchConfig']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['setMaxCaptureTime + maxTimeInSeconds']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['setMaxTextInputLength + maxLengthCharacters']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['disableCaptureKeystrokes']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['enableCaptureKeystrokes']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['setTrigger + shouldTriggerFunction']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['matchTrackerUrl']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['disable']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['enable']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['isEnabled']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['enableDebugMode']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['setMatomoTrackers']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n // xxxx(): void {\n // try {\n // window['_paq'].push(['getPiwikTrackers']);\n // } catch (e) {\n // if (!(e instanceof ReferenceError)) {\n // throw e;\n // }\n // }\n // }\n\n /**\n * By default the Matomo tracker assumes consent to tracking.\n * To change this behavior so nothing is tracked until a user consents, you must call requireConsent.\n */\n requireConsent(): void {\n try {\n window['_paq'].push(['requireConsent']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Require user cookie consent before storing and using any cookies.\n */\n requireCookieConsent(): void {\n try {\n window['_paq'].push(['requireCookieConsent']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Marks that the current user has consented.<br />\n * The consent is one-time only, so in a subsequent browser session, the user will have to consent again.<br />\n * To remember consent, see the method below: rememberConsentGiven.\n */\n setConsentGiven(): void {\n try {\n window['_paq'].push(['setConsentGiven']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Marks that the current user has consented to store and use cookies.<br />\n * The consent is one-time only, so in a subsequent browser session, the user will have to consent again.<br />\n * To remember consent, see the method below: rememberCookieConsentGiven.\n */\n setCookieConsentGiven(): void {\n try {\n window['_paq'].push(['setCookieConsentGiven']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Marks that the current user has consented, and remembers this consent through a browser cookie.<br />\n * The next time the user visits the site, Matomo will remember that they consented, and track them.<br />\n * If you call this method, you do not need to call setConsentGiven.\n *\n * @param hoursToExpire Expiry period for your user consent.\n */\n rememberConsentGiven(hoursToExpire?: number): void {\n try {\n const args: number[] = [];\n if (typeof hoursToExpire === 'number') {\n args.push(hoursToExpire);\n }\n window['_paq'].push(['rememberConsentGiven', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Marks that the current user has consented, and remembers this consent through a browser cookie.<br />\n * The next time the user visits the site, Matomo will remember that they consented, and track them.<br />\n * If you call this method, you do not need to call setCookieConsentGiven.\n *\n * @param hoursToExpire Expiry period for your user consent.\n */\n rememberCookieConsentGiven(hoursToExpire?: number): void {\n try {\n const args: number[] = [];\n if (typeof hoursToExpire === 'number') {\n args.push(hoursToExpire);\n }\n window['_paq'].push(['rememberCookieConsentGiven', ...args]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Removes a user's consent, both if the consent was one-time only and if the consent was remembered.<br />\n * This makes sure the cookie that remembered the given consent is deleted.<br />\n * After calling this method, the user will have to consent again in order to be tracked.\n */\n forgetConsentGiven(): void {\n try {\n window['_paq'].push(['forgetConsentGiven']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Removes a user's consent, both if the consent was one-time only and if the consent was remembered.<br />\n * This makes sure the cookie that remembered the given consent is deleted.<br />\n * After calling this method, the user will have to consent again in order to be tracked.\n */\n forgetCookieConsentGiven(): void {\n try {\n window['_paq'].push(['forgetCookieConsentGiven']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets if to not to track users who opt out of tracking using Mozilla's (proposed) Do Not Track setting.\n *\n * @param doNotTrack If true, users who opted for Do Not Track in their settings won't be tracked.\n * @see {@link https://www.w3.org/TR/tracking-dnt/}\n */\n setDoNotTrack(doNotTrack: boolean): void {\n try {\n window['_paq'].push(['setDoNotTrack', doNotTrack]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Disables all first party cookies.<br />\n * Existing Matomo cookies for this websites will be deleted on the next page view.\n */\n disableCookies(): void {\n try {\n window['_paq'].push(['disableCookies']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Deletes the tracking cookies currently set (useful when creating new visits).\n */\n deleteCookies(): void {\n try {\n window['_paq'].push(['deleteCookies']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Returns whether cookies are enabled and supported by this browser.\n *\n * @returns Promise for the support and activation of cookies.\n */\n hasCookies(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n try {\n window['_paq'].push([\n function (this: any): void {\n resolve(this.hasCookies());\n },\n ]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n reject(e);\n }\n }\n });\n }\n\n /**\n * Sets the tracking cookie name prefix.<br />\n * Default prefix is 'pk'.\n *\n * @param prefix Prefix for the tracking cookie names.\n */\n setCookieNamePrefix(prefix: string): void {\n try {\n window['_paq'].push(['setCookieNamePrefix', prefix]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the domain of the tracking cookies.<br />\n * Default is the document domain.<br />\n * If your website can be visited at both www.example.com and example.com, you would use: `'.example.com'` or `'*.example.com'`.\n *\n * @param domain Domain of the tracking cookies.\n */\n setCookieDomain(domain: string): void {\n try {\n window['_paq'].push(['setCookieDomain', domain]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the path of the tracking cookies.<br />\n * Default is '/'.\n *\n * @param path Path of the tracking cookies.\n */\n setCookiePath(path: string): void {\n try {\n window['_paq'].push(['setCookiePath', path]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets if or not to enable the Secure cookie flag on all first party cookies.<br />\n * This should be used when your website is only available under HTTPS so that all tracking cookies are always sent\n * over secure connection.\n *\n * @param secure If true, the secure cookie flag will be set on all first party cookies.\n */\n setSecureCookie(secure: boolean): void {\n try {\n window['_paq'].push(['setSecureCookie', secure]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the visitor cookie timeout.<br />\n * Default is 13 months.\n *\n * @param timeout Timeout, in seconds, for the visitor cookie timeout.\n */\n setVisitorCookieTimeout(timeout: number): void {\n try {\n window['_paq'].push(['setVisitorCookieTimeout', timeout]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the referral cookie timeout.<br />\n * Default is 6 months.\n *\n * @param timeout Timeout, in seconds, for the referral cookie timeout.\n */\n setReferralCookieTimeout(timeout: number): void {\n try {\n window['_paq'].push(['setReferralCookieTimeout', timeout]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the session cookie timeout.<br />\n * Default is 30 minutes.\n *\n * @param timeout Timeout, in seconds, for the session cookie timeout.\n */\n setSessionCookieTimeout(timeout: number): void {\n try {\n window['_paq'].push(['setSessionCookieTimeout', timeout]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Adds a click listener to a specific link element.<br />\n * When clicked, Matomo will log the click automatically.\n *\n * @param element Element on which to add a click listener.\n */\n addListener(element: Element): void {\n try {\n window['_paq'].push(['addListener', element]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets the request method to either 'GET' or 'POST'. (The default is 'GET'.)<br />\n * To use the POST request method, either:<br />\n * 1) the Matomo host is the same as the tracked website host (Matomo installed in the same domain as your tracked website), or<br />\n * 2) if Matomo is not installed on the same host as your website, you need to enable CORS (Cross domain requests).\n *\n * @param method HTTP method for sending information to the Matomo server.\n */\n setRequestMethod(method: 'GET' | 'POST'): void {\n try {\n window['_paq'].push(['setRequestMethod', method]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets a function that will process the request content.<br />\n * The function will be called once the request (query parameters string) has been prepared, and before the request content is sent.\n *\n * @param callback Function that will process the request content.\n */\n setCustomRequestProcessing(callback: (queryParameters: string) => void): void {\n try {\n window['_paq'].push(['setCustomRequestProcessing', callback]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Sets request Content-Type header value.<br />\n * Applicable when 'POST' request method is used via setRequestMethod.\n *\n * @param contentType Value for Content-Type HTTP header.\n */\n setRequestContentType(contentType: string): void {\n try {\n window['_paq'].push(['setRequestContentType', contentType]);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n\n /**\n * Disables the feature which groups together multiple tracking requests and send them as a bulk POST request.<br />\n * Disabling this feature is useful when you want to be able to replay all logs: one must use disableQueueRequest\n * to disable this behavior to later be able to replay logged Matomo logs (otherwise a subset of the requests\n * wouldn't be able to be replayed).\n */\n disableQueueRequest(): void {\n try {\n window['_paq'].push(['disableQueueRequest']);\n } catch (e) {\n if (!(e instanceof ReferenceError)) {\n throw e;\n }\n }\n }\n}\n","/**\n * Checks if a value or object is non null.\n *\n * @export\n */\nexport function isNonNull<T>(value: T | undefined | null): value is NonNullable<T> {\n return value != null;\n}\n\nexport function isDefined<T>(value: T | undefined | null): value is NonNullable<T> {\n return <T>value !== undefined && <T>value !== null;\n}\n","import { Injectable, Inject, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, NavigationStart, Router } from '@angular/router';\n\nimport { Subscription } from 'rxjs';\nimport { filter, map, pairwise } from 'rxjs/operators';\n\nimport { isNonNull } from '../helpers';\nimport { MatomoConfiguration, MATOMO_CONFIGURATION } from './matomo-configuration';\nimport { MatomoTracker } from './matomo-tracker.service';\n\n/**\n * Service for tracking route changes.\n *\n * @export\n */\n@Injectable()\nexport class MatomoRouteTracker implements OnDestroy {\n /**\n * Previous route url of matomo route tracker.\n */\n private previousPageUrl?: string;\n /**\n * Subscription for managing route events.\n */\n private subscription?: Subscription;\n\n /**\n * Creates an instance of MatomoRouteTracker.\n *\n * @param configuration Matomo configuration provided by DI.\n * @param matomoTracker Instance of MatomoTracker provided by DI.\n * @param router Instance of Router provided by DI.\n * @param activatedRoute Instance of ActivatedRoute provided by DI.\n */\n constructor(\n @Inject(MATOMO_CONFIGURATION) private readonly configuration: MatomoConfiguration,\n private readonly matomoTracker: MatomoTracker,\n private readonly router: Router,\n private readonly activatedRoute: ActivatedRoute\n ) {}\n\n /**\n * Starts tracking route changes.\n * Matomo DocumentTitle will be set with `data.matomoTitle` of your routes.\n *\n * This service shall not be used directly within an application.\n */\n startTracking(): void {\n this.subscription = this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart || event instanceof NavigationEnd),\n map((event) => ({ timestamp: new Date().getTime(), event })),\n pairwise(),\n filter(([a, b]) => a.event instanceof NavigationStart && b.event instanceof NavigationEnd)\n )\n .subscribe({\n next: ([start, end]) => {\n let currentRoute = this.activatedRoute.root;\n while (currentRoute.children[0] !== undefined) {\n currentRoute = currentRoute.children[0];\n }\n // Set referrer if it exists\n if (this.previousPageUrl) {\n this.matomoTracker.setReferrerUrl(this.previousPageUrl);\n }\n // Track current page\n if (!!currentRoute.snapshot.data['matomoTitle']) {\n this.matomoTracker.setDocumentTitle(currentRoute.snapshot.data['matomoTitle']);\n }\n this.matomoTracker.setCustomUrl(window.location.href);\n // Remove all previously assigned custom variables\n // (requires Matomo (formerly Piwik) 3.0.2+)\n this.matomoTracker.deleteCustomVariables('page');\n this.matomoTracker.setGenerationTimeMs(end.timestamp - start.timestamp);\n this.matomoTracker.trackPageView();\n // Set previous route URL\n this.previousPageUrl = window.location.href;\n\n // Make Matomo aware of newly added content\n this.configuration?.routeTracking?.contentIds\n ?.map(document.getElementById)\n ?.filter(isNonNull)\n ?.forEach((content) => {\n // TODO To be implemented when Media Analytics will be supported.\n // this.matomoTracker.scanForMedia(content);\n // TODO To be implemented when Form Analytics will be supported.\n // this.matomoTracker.scanForForms(content);\n this.matomoTracker.trackContentImpressionsWithinNode(content);\n });\n\n if (this.configuration.trackLinks === true) {\n this.matomoTracker.enableLinkTracking(this.configuration.trackLinkValue);\n }\n },\n });\n }\n\n /**\n * Stops tracking route changes.\n */\n stopTracking(): void {\n this.subscription?.unsubscribe();\n }\n\n /**\n * Angular OnDestroy lifecycle hook.\n */\n ngOnDestroy(): void {\n if (!!this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import { NgModule, ModuleWithProviders, Inject, PLATFORM_ID, Injector } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { MatomoConfiguration, MATOMO_CONFIGURATION } from './matomo-configuration';\nimport { MatomoInjector } from './matomo-injector.service';\nimport { MatomoTracker } from './matomo-tracker.service';\nimport { MatomoRouteTracker } from './matomo-route-tracker.service';\n\n/**\n * Angular module encapsulating Matomo features.\n */\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [MatomoInjector, MatomoTracker, MatomoRouteTracker],\n})\nexport class MatomoModule {\n /**\n * Creates an instance of Matomo module.\n *\n * @param platformId Angular platform provided by DI.\n * @param injector Instance of Angular Injector provided by DI.\n * @param configuration Matomo configuration provided by DI.\n * @param matomoInjector Instance of MatomoInjector provided by DI.\n */\n constructor(\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) private readonly platformId: Object,\n private readonly injector: Injector,\n @Inject(MATOMO_CONFIGURATION) private readonly configuration: MatomoConfiguration,\n private readonly matomoInjector: MatomoInjector\n ) {\n // Warn if module is not being loaded by a browser.\n if (!isPlatformBrowser(this.platformId)) {\n console.warn('ngx-Matomo does not support server platform');\n }\n // Inject the Matomo script and create trackers.\n this.matomoInjector.init();\n // Enable route tracking if requested.\n if (this.configuration?.routeTracking?.enable === true) {\n // Using Injector instead of DI in order to allow use in routerless apps.\n this.injector.get(MatomoRouteTracker).startTracking();\n }\n }\n\n /**\n * Use this method in your root module to provide the MatomoTracker service.\n */\n static forRoot(configuration?: Partial<MatomoConfiguration>): ModuleWithProviders<MatomoModule> {\n return {\n ngModule: MatomoModule,\n providers: [\n {\n provide: MATOMO_CONFIGURATION,\n useValue: configuration,\n },\n MatomoTracker,\n MatomoRouteTracker,\n ],\n };\n }\n}\n","/*\n * Public API Surface of ngx-matomo\n */\n\nexport { MatomoConfiguration, MATOMO_CONFIGURATION } from './lib/matomo-configuration';\nexport * from './lib/matomo-injector.service';\nexport * from './lib/matomo-tracker.service';\nexport * from './lib/matomo-route-tracker.service';\nexport * from './lib/matomo.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatomoTracker","i1.MatomoInjector"],"mappings":"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"}