{ "version": 3, "sources": ["../../../src/frontend/scripts/track-page-view.ts"], "sourcesContent": ["import { TrackPageViewProperties } from './properties/track-page-view.properties'\r\n\r\n\"use strict\"\r\n\r\nexport const onLoad = () => {\r\n if (!window.onMyWebsite?.properties) {\r\n throw new Error('On My Website: Unable to track the page view as the properties are undefined');\r\n }\r\n \r\n // Make the method trackPageView global.\r\n window.onMyWebsite.trackPageView = trackPageView;\r\n \r\n if (window.onMyWebsite.properties.trackPageViewOnLoad) {\r\n window.addEventListener('load', () => {\r\n setTimeout(async () => {\r\n await window.onMyWebsite?.trackPageView();\r\n }, 5000);\r\n });\r\n }\r\n}\r\n\r\nexport const trackPageView = async() => {\r\n if (!window.onMyWebsite?.properties) {\r\n throw new Error('On My Website: Unable to track the page view as the properties are undefined');\r\n }\r\n\r\n const endpoint = `${window.onMyWebsite.properties.trackApiOrigin ?? ''}/api/on-my-website/v1.0/page-views/track`;\r\n const onMyWebsiteProperties = window.onMyWebsite.properties;\r\n\r\n const payload: TrackPageViewProperties = {\r\n reference: onMyWebsiteProperties.reference,\r\n encodedPathAndQuery: `${window.location?.pathname}${window.location?.search}`,\r\n umbracoNodeId: onMyWebsiteProperties.umbracoNodeId\r\n };\r\n\r\n if (\r\n !onMyWebsiteProperties.captureUserAgent && \r\n onMyWebsiteProperties.blockedUserAgents && \r\n window.navigator?.userAgent && \r\n window.navigator.userAgent != ''\r\n ) {\r\n // If we are not capturing user agents, we can still use the user agent in JavaScript to see if it's blocked.\r\n for (var tt = 1; tt <= onMyWebsiteProperties.blockedUserAgents.length; tt++) {\r\n if (new RegExp(onMyWebsiteProperties.blockedUserAgents[tt - 1], 'ig').test(window.navigator.userAgent)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (\r\n onMyWebsiteProperties.captureUserAgent && \r\n window.navigator?.userAgent && \r\n window.navigator.userAgent != ''\r\n ) {\r\n payload.userAgent = window.navigator.userAgent;\r\n }\r\n\r\n if (\r\n onMyWebsiteProperties.captureReferrer && \r\n window.document?.referrer && \r\n window.document.referrer != ''\r\n ) {\r\n payload.referrer = window.document.referrer;\r\n }\r\n\r\n // Use the Fetch API if available\r\n var hasFetch = false;\r\n if (typeof globalThis.fetch === 'function') {\r\n hasFetch = true;\r\n }\r\n\r\n if (hasFetch) {\r\n var throwGenericError = false;\r\n\r\n await fetch(endpoint, {\r\n cache: 'no-cache',\r\n credentials: 'include',\r\n keepalive: true,\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(payload), \r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n if (response.status >= 500 && response.status <= 599) {\r\n throwGenericError = true;\r\n throw new Error(`On My Website: Track page view returned a ${response.status} error status code from the Fetch API`);\r\n }\r\n return false;\r\n }\r\n return true;\r\n })\r\n .catch(error => {\r\n if (throwGenericError) {\r\n throw error;\r\n }\r\n throw new Error(`On My Website: Track page view threw a generic error from the Fetch API - ${error}`);\r\n });\r\n } else {\r\n // Fallback to XMLHttpRequest if Fetch API is not available\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('POST', endpoint, true);\r\n xhr.setRequestHeader('Connection', 'keep-alive');\r\n xhr.setRequestHeader('Content-Type', 'application/json');\r\n xhr.setRequestHeader('Cache-Control', 'no-cache');\r\n xhr.setRequestHeader('Pragma', 'no-cache');\r\n xhr.withCredentials = true;\r\n\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status >= 500 && xhr.status <= 599) {\r\n throw new Error(`On My Website: Track page view returned a ${xhr.status} error status code from XMLHttpRequest`);\r\n }\r\n }\r\n };\r\n\r\n xhr.onerror = function () {\r\n throw new Error(`On My Website: Track page view returned a network error from XMLHttpRequest`);\r\n };\r\n\r\n xhr.send(JSON.stringify(payload));\r\n }\r\n}\r\n\r\nonLoad();"], "mappings": "gOAIO,IAAMA,EAAS,IAAM,CAJ5B,IAAAC,EAKI,GAAI,GAACA,EAAA,OAAO,cAAP,MAAAA,EAAoB,YACrB,MAAM,IAAI,MAAM,8EAA8E,EAIlG,OAAO,YAAY,cAAgBC,EAE/B,OAAO,YAAY,WAAW,qBAC9B,OAAO,iBAAiB,OAAQ,IAAM,CAClC,WAAW,IAAYC,EAAA,wBAdnC,IAAAF,EAegB,MAAMA,EAAA,OAAO,cAAP,YAAAA,EAAoB,eAC9B,GAAG,GAAI,CACX,CAAC,CAET,EAEaC,EAAgB,IAAWC,EAAA,wBArBxC,IAAAF,EAAAG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAsBI,GAAI,GAACR,EAAA,OAAO,cAAP,MAAAA,EAAoB,YACrB,MAAM,IAAI,MAAM,8EAA8E,EAGlG,IAAMS,EAAW,IAAGN,EAAA,OAAO,YAAY,WAAW,iBAA9B,KAAAA,EAAgD,EAAE,2CAChEO,EAAwB,OAAO,YAAY,WAE3CC,EAAmC,CACrC,UAAWD,EAAsB,UACjC,oBAAqB,IAAGN,EAAA,OAAO,WAAP,YAAAA,EAAiB,QAAQ,IAAGC,EAAA,OAAO,WAAP,YAAAA,EAAiB,MAAM,GAC3E,cAAeK,EAAsB,aACzC,EAEA,GACI,CAACA,EAAsB,kBACvBA,EAAsB,qBACtBJ,EAAA,OAAO,YAAP,MAAAA,EAAkB,YAClB,OAAO,UAAU,WAAa,IAG9B,QAASM,EAAK,EAAGA,GAAMF,EAAsB,kBAAkB,OAAQE,IACnE,GAAI,IAAI,OAAOF,EAAsB,kBAAkBE,EAAK,CAAC,EAAG,IAAI,EAAE,KAAK,OAAO,UAAU,SAAS,EACjG,OAMRF,EAAsB,oBACtBH,EAAA,OAAO,YAAP,MAAAA,EAAkB,YAClB,OAAO,UAAU,WAAa,KAE9BI,EAAQ,UAAY,OAAO,UAAU,WAIrCD,EAAsB,mBACtBF,EAAA,OAAO,WAAP,MAAAA,EAAiB,WACjB,OAAO,SAAS,UAAY,KAE5BG,EAAQ,SAAW,OAAO,SAAS,UAIvC,IAAIE,EAAW,GAKf,GAJI,OAAO,WAAW,OAAU,aAC5BA,EAAW,IAGXA,EAAU,CACV,IAAIC,EAAoB,GAExB,MAAM,MAAML,EAAU,CAClB,MAAO,WACP,YAAa,UACb,UAAW,GACX,OAAQ,OACR,QAAS,CACL,eAAgB,kBACpB,EACA,KAAM,KAAK,UAAUE,CAAO,CAChC,CAAC,EACA,KAAKI,GAAY,CACd,GAAI,CAACA,EAAS,GAAI,CACd,GAAIA,EAAS,QAAU,KAAOA,EAAS,QAAU,IAC7C,MAAAD,EAAoB,GACd,IAAI,MAAM,6CAA6CC,EAAS,MAAM,uCAAuC,EAEvH,MAAO,EACX,CACA,MAAO,EACX,CAAC,EACA,MAAMC,GAAS,CACZ,MAAIF,EACME,EAEJ,IAAI,MAAM,6EAA6EA,CAAK,EAAE,CACxG,CAAC,CACL,KAAO,CAEH,IAAMC,EAAM,IAAI,eAChBA,EAAI,KAAK,OAAQR,EAAU,EAAI,EAC/BQ,EAAI,iBAAiB,aAAc,YAAY,EAC/CA,EAAI,iBAAiB,eAAgB,kBAAkB,EACvDA,EAAI,iBAAiB,gBAAiB,UAAU,EAChDA,EAAI,iBAAiB,SAAU,UAAU,EACzCA,EAAI,gBAAkB,GAEtBA,EAAI,mBAAqB,UAAY,CACjC,GAAIA,EAAI,aAAe,GACfA,EAAI,QAAU,KAAOA,EAAI,QAAU,IACnC,MAAM,IAAI,MAAM,6CAA6CA,EAAI,MAAM,wCAAwC,CAG3H,EAEAA,EAAI,QAAU,UAAY,CACtB,MAAM,IAAI,MAAM,6EAA6E,CACjG,EAEAA,EAAI,KAAK,KAAK,UAAUN,CAAO,CAAC,CACpC,CACJ,GAEAZ,EAAO", "names": ["onLoad", "_a", "trackPageView", "__async", "_b", "_c", "_d", "_e", "_f", "_g", "endpoint", "onMyWebsiteProperties", "payload", "tt", "hasFetch", "throwGenericError", "response", "error", "xhr"] }