UNPKG

8.27 kBSource Map (JSON)View Raw
1{"version":3,"file":"script.debug.js","sources":["../src/astron.ts","../src/utils.ts"],"sourcesContent":["import type {JsonObject, Wnd} from './types';\nimport {doNotTrack, buildWarn, isBot} from './utils';\nimport {version} from '../package.json';\n\nexport {Wnd};\nconst run = () => {\n if (!window) return;\n const isDnt = doNotTrack();\n\n const {\n // @ts-ignore\n screen: {width, height},\n // @ts-ignore\n navigator: {language, userAgent},\n location: {hostname, pathname, search, origin},\n document,\n history,\n } = window;\n\n const script = document.querySelector('script[data-site]');\n if (!script) return console.error('script.js not found');\n\n // @ts-ignore\n const url = new URL(document.currentScript.src).origin;\n\n const attr = (key: string) =>\n script && (script.getAttribute(key) || script.getAttribute(`data-${key}`));\n\n const shortcode = attr('site'); // shortcode\n const dnt0ff = attr('dnt-off'); // shoud we send dnt=0?\n const spa = attr('spa'); // is it spa\n const warn = buildWarn();\n const parsedHosthName = attr('hostname') || hostname;\n // @ts-ignore\n const canonical = attr('canonical'); // should we monitor canonical urls\n\n if (!shortcode) return warn('site not found');\n if (isBot(userAgent)) return warn('bot detected');\n if (dnt0ff && isDnt) return warn('dnt-off and dnt=1');\n\n if (\n 'visibilityState' in document &&\n // @ts-ignore\n 'prerender' === document.visibilityState\n ) {\n return warn('Prerendering');\n }\n\n const historyAttached = () => {\n const pushState = history.pushState;\n if (void 0 !== history) {\n history.pushState = function () {\n var output = pushState.apply(history, arguments as any);\n return (\n window.dispatchEvent(new Event('pushstate')),\n window.dispatchEvent(new Event('prxm')),\n output\n );\n };\n window.addEventListener('popstate', function () {\n window.dispatchEvent(new Event('prxm'));\n });\n window.addEventListener('prxm', monitor);\n }\n };\n\n const hashAttached = () => {\n window.addEventListener('hashchange', monitor);\n };\n\n const init = () => {\n warn('init');\n\n if (spa) {\n switch (spa) {\n case 'history':\n historyAttached();\n break;\n case 'hash':\n hashAttached();\n break;\n default:\n void 0 !== history ? historyAttached() : hashAttached();\n }\n } else {\n window.addEventListener('load', monitor);\n }\n };\n\n const pxl = (p: string, e: JsonObject) => {\n const element = document.createElement('img') as HTMLImageElement;\n element.setAttribute('aria-hidden', 'true');\n element.setAttribute('alt', '');\n element.src = url + e.toString();\n element.style.position = 'absolute';\n // @ts-ignore\n element.src = url + p + '/pixel?' + new URLSearchParams(e).toString();\n element.addEventListener('load', function () {\n element.parentNode && element.parentNode.removeChild(element);\n });\n element.addEventListener('error', function () {\n element.parentNode && element.parentNode.removeChild(element);\n });\n document.body.appendChild(element);\n };\n // @ts-ignore\n const event = (e: JsonObject) => {};\n\n const send = (p: string, data: JsonObject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('POST', url + p, true);\n xhr.setRequestHeader('Content-Type', 'text/plain');\n xhr.addEventListener('error', function () {\n pxl(p, data);\n });\n xhr.send(JSON.stringify(data));\n };\n\n const monitor = () => {\n const data = {\n p: origin + pathname + search,\n v: version,\n s: shortcode,\n h: parsedHosthName,\n r: document.referrer,\n cid: Date.now().toString(32),\n // @ts-ignore\n l: navigator.userLanguage || navigator.language || '',\n // performance metrics\n };\n send('/hit/torch', data);\n };\n\n // @ts-ignore\n const monitorEvent = () => {};\n\n if (!(window as Wnd).proxima) {\n const proxima = {\n monitor: monitor,\n event: monitor,\n };\n (window as Wnd).proxima = proxima;\n init();\n }\n};\nrun();\n","import {Wnd} from './astron';\n\nexport const isBot = (userAgent: string) => {\n return (\n /(bot|spider|crawl)/i.test(userAgent) ||\n (window as Wnd)._phantom ||\n (window as Wnd).__nightmare ||\n (window as Wnd).navigator.webdriver ||\n (window as Wnd).Cypress\n );\n};\n\nexport const doNotTrack = () => {\n const {doNotTrack, navigator, external} = window as Wnd;\n\n const msTracking = () => {\n return (\n external &&\n // @ts-ignore\n typeof external.msTrackingProtectionEnabled === 'function' &&\n // @ts-ignore\n external.msTrackingProtectionEnabled()\n );\n };\n\n const dnt =\n doNotTrack ||\n navigator.doNotTrack ||\n // @ts-ignore\n navigator.msDoNotTrack ||\n msTracking();\n\n return dnt === true || dnt === 1 || dnt === 'yes' || dnt === '1';\n};\n\nexport const buildWarn = () => (msg: string | string[]) => {\n // @ts-ignore\n if (DEBUG) {\n console.warn('Proxima:', msg);\n }\n};\n"],"names":["window","isDnt","navigator","external","dnt","doNotTrack","msDoNotTrack","msTrackingProtectionEnabled","userAgent","location","hostname","pathname","search","origin","document","history","script","querySelector","console","error","url","URL","currentScript","src","attr","key","getAttribute","shortcode","dnt0ff","spa","warn","msg","parsedHosthName","test","_phantom","__nightmare","webdriver","Cypress","isBot","visibilityState","historyAttached","pushState","output","apply","arguments","dispatchEvent","Event","addEventListener","monitor","hashAttached","data","xhr","p","v","s","h","r","referrer","cid","Date","now","toString","l","userLanguage","language","XMLHttpRequest","open","setRequestHeader","e","element","createElement","setAttribute","style","position","URLSearchParams","parentNode","removeChild","body","appendChild","send","JSON","stringify","proxima","event","init","run"],"mappings":"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"}
\No newline at end of file