PageSourceSearch

https://tk.money.com/mgtk/js/dist/[email protected]

js money.com collected 2026-10-01 08:32:17 UTC 19,348 bytes, 2 lines download raw bytes

1var MGTK=function(){"use strict";const e={version:"0.5.9",apiUrl:"https://tk.money.com/events",pcuUrlPattern:/^https:\/\/(secure\.)?money\.com\/(pr|go)\//,impressionThreshold:.1,impressionTime:100,batchSize:20,batchTimeout:2e3,maxBatchWait:5e3,maxConcurrentRequests:3,debug:!1,retryAttempts:3,retryDelay:1e3,fetchTimeout:1e4,storageKey:"mgtk_data",_extensionListening:!1,trackedLinks:new WeakSet,linkTimers:new WeakMap,trackedIframes:new WeakSet,iframeTimers:new WeakMap,visibleIframes:new Set,iframesWithPcu:new WeakSet,_iframePcuListener:null,_parentVisibility:null,_scrollHandler:null,_resizeHandler:null,_messageHandler:null,activeTimerIds:new Set,observer:null,mutationObserver:null,initialized:!1,destroyed:!1,eventQueue:[],batchTimer:null,batchStartTime:null,activeRequests:0,requestQueue:[],failedQueue:[],eventIds:new Map,_storageAvailable:null,_previousMGTK:void 0,_inIframe:null,_iframeReferer:null,_iframePcuid:null,_embedImpTracked:!1,isInIframe:function(){if(null!==this._inIframe)return this._inIframe;try{this._inIframe=window.self!==window.top}catch(e){this._inIframe=!0}if(this._inIframe)try{const e=new URLSearchParams(window.location.search);this._iframeReferer=e.get("ca_referer"),this._iframePcuid=e.get("pcuid"),this.log("Running in iframe, referer:",this._iframeReferer,"pcuid:",this._iframePcuid)}catch(e){}return this._inIframe},init:function(e={}){if(this.initialized)return console.warn("MGTK already initialized"),this;this.destroyed=!1,e.apiUrl&&(this.apiUrl=e.apiUrl),void 0!==e.impressionThreshold&&(this.impressionThreshold=e.impressionThreshold),void 0!==e.impressionTime&&(this.impressionTime=e.impressionTime),void 0!==e.batchSize&&(this.batchSize=e.batchSize),void 0!==e.batchTimeout&&(this.batchTimeout=e.batchTimeout),void 0!==e.maxBatchWait&&(this.maxBatchWait=e.maxBatchWait),void 0!==e.maxConcurrentRequests&&(this.maxConcurrentRequests=e.maxConcurrentRequests),void 0!==e.debug&&(this.debug=e.debug),void 0!==e.retryAttempts&&(this.retryAttempts=e.retryAttempts),void 0!==e.retryDelay&&(this.retryDelay=e.retryDelay),void 0!==e.fetchTimeout&&(this.fetchTimeout=e.fetchTimeout),this.recoverFailedEvents();const t=this.isInIframe();return this.initialized=!0,this.setupObserver(),this.setupFlushListeners(),this.scanForLinks(),t?(this.setupParentVisibilityListener(),this.notifyParentAboutPcuLinks()):(this.scanForIframes(),this.setupIframeScrollListener(),this.setupIframePcuListener()),this.observeNewElements(),document.addEventListener("mgtk:extension-connect",()=>{this._extensionListening=!0,this.log("Extension connected"),this.emitDebugEvent("event-queued",{message:"Extension connected",queueSize:this.eventQueue.length,initialized:!0,version:this.version})}),this.log("MGTK initialized",t?"(in iframe)":"(in parent)"),this},log:function(...e){this.debug&&console.log("[MGTK]",...e)},emitDebugEvent:function(e,t){if(!this.debug&&!this._extensionListening)return;const i=new CustomEvent("mgtk:debug",{detail:{type:e,timestamp:Date.now(),data:t}});document.dispatchEvent(i)},generateEventId:function(e){const t=`${e.event_type}:${e.link}:${e.timestamp}`;let i=2166136261;for(let e=0;e<t.length;e++)i^=t.charCodeAt(e),i=Math.imul(i,16777619);return{hash:(i>>>0).toString(36),key:t}},isDuplicateEvent:function(e){const{hash:t,key:i}=this.generateEventId(e);if(this.eventIds.has(t)){if(this.eventIds.get(t)===i)return!0;this.log("Hash collision detected, allowing event")}if(this.eventIds.set(t,i),this.eventIds.size>1e3){const e=this.eventIds.keys().next().value;e&&this.eventIds.delete(e)}return!1},isStorageAvailable:function(){if(null!==this._storageAvailable)return this._storageAvailable;try{const e="__mgtk_storage_test__";return localStorage.setItem(e,e),localStorage.removeItem(e),this._storageAvailable=!0,!0}catch(e){return this._storageAvailable=!1,!1}},safeStorageSet:function(e,t){if(!this.isStorageAvailable())return!1;try{return localStorage.setItem(e,t),!0}catch(i){const s=i;if("QuotaExceededError"===s.name||"NS_ERROR_DOM_QUOTA_REACHED"===s.name)try{return localStorage.removeItem(`${this.storageKey}_failed`),localStorage.setItem(e,t),!0}catch(e){return!1}return!1}},recoverFailedEvents:function(){if(this.isStorageAvailable())try{const e=localStorage.getItem(`${this.storageKey}_failed`);if(e){const t=JSON.parse(e);Array.isArray(t)&&(this.failedQueue=t,localStorage.removeItem(`${this.storageKey}_failed`),this.failedQueue.length>0&&this.retryFailedEvents())}}catch(e){try{localStorage.removeItem(`${this.storageKey}_failed`)}catch(e){}}},saveFailedEvents:function(){if(0===this.failedQueue.length)return;const e=this.failedQueue.slice(-100);this.safeStorageSet(`${this.storageKey}_failed`,JSON.stringify(e))},retryFailedEvents:async function(){for(;this.failedQueue.length>0;){const e=this.failedQueue.shift();if(!e)break;const{events:t,attempts:i=0}=e;if(i>=this.retryAttempts){this.log("Max retry attempts reached, dropping events:",t.length);continue}const s=this.retryDelay*Math.pow(2,i);await new Promise(e=>setTimeout(e,s));try{await this.sendBatchedEvents(t,!1,!0)}catch(e){this.failedQueue.push({events:t,attempts:i+1}),this.saveFailedEvents()}}},setupObserver:function(){"IntersectionObserver"in window?this.observer=new IntersectionObserver(e=>
1{e.forEach(e=>{const t=e.target,i=e.intersectionRatio;if("A"===t.tagName){const s=t;e.isIntersecting&&i>=this.impressionThreshold?this.startLinkTimer(s):this.clearLinkTimer(s)}else if("IFRAME"===t.tagName){const s=t,r=this.iframesWithPcu.has(s);e.isIntersecting&&(i>=this.impressionThreshold||i>0&&r)?(this.sendIframeVisibility(s,!0,i),this.visibleIframes.add(s),i>=this.impressionThreshold?this.startIframeTimer(s):this.clearIframeTimer(s)):(!this.visibleIframes.has(s)&&e.isIntersecting||this.sendIframeVisibility(s,!1,0),this.visibleIframes.delete(s),this.clearIframeTimer(s))}})},{threshold:[0,this.impressionThreshold]}):console.warn("IntersectionObserver not supported")},setupFlushListeners:function(){void 0!==document.visibilityState&&document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&this.flushBatch(!0)}),window.addEventListener("beforeunload",()=>this.flushBatch(!0)),window.addEventListener("pagehide",()=>this.flushBatch(!0))},scanForLinks:function(e=!1){try{document.querySelectorAll("a[href]").forEach(t=>{const i=t;i.href&&this.isPCULink(i.href)&&this.observeLink(i,e)})}catch(e){console.error("MGTK: Error scanning for links:",e)}},isPCULink:function(e){try{return this.pcuUrlPattern.test(e)}catch(e){return!1}},observeLink:function(e,t=!1){this.observer?this.trackedLinks.has(e)||(t&&(this.observer.unobserve(e),this.clearLinkTimer(e)),this.observer.observe(e)):this.trackedLinks.has(e)||(this.trackLinkImpression(e),this.trackedLinks.add(e))},startLinkTimer:function(e){if(this.destroyed||this.trackedLinks.has(e)||this.linkTimers.has(e))return;const t=setTimeout(()=>{this.destroyed||(this.activeTimerIds.delete(t),this.linkTimers.delete(e),this.isElementTrulyVisible(e)?(this.trackLinkImpression(e),this.trackedLinks.add(e)):this.log("Element not truly visible, skipping:",e.href))},this.impressionTime);this.activeTimerIds.add(t),this.linkTimers.set(e,t)},clearLinkTimer:function(e){const t=this.linkTimers.get(e);t&&(clearTimeout(t),this.activeTimerIds.delete(t),this.linkTimers.delete(e))},trackLinkImpression:function(e){const t=this.isInIframe()&&this._iframeReferer?this._iframeReferer:window.location.href;let i=this.extractPcuid(e.href);i||(i=e.getAttribute("data-trk-pcu-uuid")||void 0),!i&&this.isInIframe()&&this._iframePcuid&&(i=this._iframePcuid);const s=e.getAttribute("data-trk-pcu-type")||void 0,r=e.getAttribute("data-catk-label")||e.getAttribute("data-trk-company")||void 0,n=e.getAttribute("data-catk-type")||void 0,a=e.getAttribute("data-catk-value")||void 0,o={event_type:"pcu_link_imp",timestamp:Date.now(),link:e.href,pcuid:i,pcu_type:s,label:this.extractLinkText(e),catk_company:r,catk_type:n,catk_value:a,page:t,referrer:document.referrer||""};this.queueEvent(o)},extractLinkText:function(e){const t=e.getAttribute("data-catk-text");if(t)return t.trim().substring(0,64);const i=e.getAttribute("data-tile-title");if(i)return i.trim().substring(0,64);const s=(e.textContent||e.innerText||"").replace(/[\x00-\x1F\x7F-\x9F]/g,"").replace(/\s+/g," ").trim().substring(0,64);return!s&&e.querySelector("img")?"[img]":s},scanForIframes:function(){if(!this.isInIframe())try{document.querySelectorAll("iframe[src]").forEach(e=>{const t=e;this.isTrackableIframe(t)&&this.observeIframe(t)})}catch(e){console.error("MGTK: Error scanning for iframes:",e)}},isTrackableIframe:function(e){try{if(!e.classList.contains("ca-embed-iframe"))return!1;const t=e.src;return!!t&&t.includes("/embeds/v1")}catch(e){return!1}},observeIframe:function(e){this.observer?this.observer.observe(e):this.trackedIframes.has(e)||(this.trackIframeImpression(e),this.trackedIframes.add(e))},startIframeTimer:function(e){if(this.destroyed||this.trackedIframes.has(e)||this.iframeTimers.has(e))return;const t=setTimeout(()=>{this.destroyed||(this.activeTimerIds.delete(t),this.trackIframeImpression(e),this.trackedIframes.add(e),this.iframeTimers.delete(e))},this.impressionTime);this.activeTimerIds.add(t),this.iframeTimers.set(e,t)},clearIframeTimer:function(e){const t=this.iframeTimers.get(e);t&&(clearTimeout(t),this.activeTimerIds.delete(t),this.iframeTimers.delete(e))},trackIframeImpression:function(e){const t=e.src,i=this.extractPcuid(t),s={event_type:"embed_imp",timestamp:Date.now(),link:t,pcuid:i,page:window.location.href,referrer:document.referrer||""};this.queueEvent(s),this.log("Iframe embed_imp tracked:",t)},sendIframeVisibility:function(e,t,i){var s;try{const r=e.getBoundingClientRect(),n=Math.max(0,-r.top),a=Math.max(0,-r.left),o=r.height-Math.max(0,r.bottom-window.innerHeight),h=r.width-Math.max(0,r.right-window.innerWidth);null===(s=e.contentWindow)||void 0===s||s.postMessage({type:"mgtk-iframe-visibility",isVisible:t,ratio:null!=i?i:0,visibleRegion:{top:n,left:a,bottom:o,right:h}},"*")}catch(e){}},setupIframeScrollListener:function(){if(this.isInIframe())return;let e=!1;this._scrollHandler=()=>{e||(requestAnimationFrame(()=>
1{this.visibleIframes.forEach(e=>{this.sendIframeVisibility(e,!0)}),e=!1}),e=!0)},this._resizeHandler=()=>{this.visibleIframes.forEach(e=>{this.sendIframeVisibility(e,!0)})},window.addEventListener("scroll",this._scrollHandler,{passive:!0}),window.addEventListener("resize",this._resizeHandler,{passive:!0})},setupIframePcuListener:function(){this.isInIframe()||(this._iframePcuListener=e=>{var t;if("mgtk-has-pcu"!==(null===(t=e.data)||void 0===t?void 0:t.type)||!e.source)return;document.querySelectorAll("iframe").forEach(t=>{if(t.contentWindow===e.source&&(e.data.hasPcuLinks?(this.iframesWithPcu.add(t),this.log("Iframe reports PCU links:",t.src)):this.iframesWithPcu.delete(t),this.visibleIframes.has(t))){this.log("Re-sending visibility to newly ready iframe");const e=t.getBoundingClientRect(),i=window.innerHeight,s=window.innerWidth,r=Math.min(e.bottom,i)-Math.max(e.top,0),n=Math.min(e.right,s)-Math.max(e.left,0),a=Math.max(0,r)*Math.max(0,n),o=e.width*e.height,h=o>0?a/o:0;this.sendIframeVisibility(t,!0,h)}})},window.addEventListener("message",this._iframePcuListener))},setupParentVisibilityListener:function(){this.isInIframe()&&(this._messageHandler=e=>{var t,i;if("mgtk-iframe-visibility"===(null===(t=e.data)||void 0===t?void 0:t.type)){const t=null!==(i=e.data.ratio)&&void 0!==i?i:0,s=null===this._parentVisibility;this._parentVisibility={isVisible:e.data.isVisible,ratio:t,visibleRegion:e.data.visibleRegion},this.log("Received parent visibility:",this._parentVisibility),e.data.isVisible&&t>=this.impressionThreshold&&!this._embedImpTracked&&(this._embedImpTracked=!0,this.trackEmbedImpression()),s&&e.data.isVisible&&(this.log("First visibility message, re-scanning links"),this.scanForLinks(!0))}},window.addEventListener("message",this._messageHandler))},trackEmbedImpression:function(){const e=this._iframeReferer||window.location.href,t=this._iframePcuid||this.extractPcuid(window.location.href),i={event_type:"embed_imp",timestamp:Date.now(),link:window.location.href,pcuid:t,page:e,referrer:document.referrer||""};this.queueEvent(i),this.log("Embed impression tracked from iframe")},notifyParentAboutPcuLinks:function(){if(this.isInIframe())try{const e=document.querySelectorAll("a[href]");let t=!1;e.forEach(e=>{const i=e;i.href&&this.isPCULink(i.href)&&(t=!0)}),window.parent.postMessage({type:"mgtk-has-pcu",hasPcuLinks:t},"*"),this.log("Notified parent about PCU links:",t)}catch(e){}},isElementTrulyVisible:function(e){if(!this.isInIframe())return!0;if(!this._parentVisibility)return!1;if(!this._parentVisibility.isVisible)return!1;const t=e.getBoundingClientRect(),{visibleRegion:i}=this._parentVisibility,s=t.top+t.height/2,r=t.left+t.width/2;return s>=i.top&&s<=i.bottom&&r>=i.left&&r<=i.right},extractPcuid:function(e){try{const t=new URL(e),i=t.searchParams.get("pcuid");if(i)return i;const s=t.pathname.match(/\/pr\/([^/?]+)/);return s?s[1]:void 0}catch(e){return}},observeNewElements:function(){if(!("MutationObserver"in window))return;const e=this.isInIframe();this.mutationObserver=new MutationObserver(t=>{if(this.destroyed)return;const i=()=>{t.forEach(t=>{"childList"===t.type&&t.addedNodes.forEach(t=>{try{if(t.nodeType!==Node.ELEMENT_NODE)return;const i=t;if("A"===i.tagName){const e=i;e.href&&this.isPCULink(e.href)&&this.observeLink(e)}if(!e&&"IFRAME"===i.tagName){const e=i;this.isTrackableIframe(e)&&this.observeIframe(e)}if(i.getElementsByTagName){const t=i.getElementsByTagName("a");for(let e=0;e<t.length;e++)t[e].href&&this.isPCULink(t[e].href)&&this.observeLink(t[e]);if(!e){const e=i.getElementsByTagName("iframe");for(let t=0;t<e.length;t++)this.isTrackableIframe(e[t])&&this.observeIframe(e[t])}}}catch(e){}})})};"requestIdleCallback"in window?window.requestIdleCallback(i,{timeout:1e3}):setTimeout(i,0)}),this.mutationObserver.observe(document.body,{childList:!0,subtree:!0})},clearAllTimers:function(){for(const e of this.activeTimerIds)clearTimeout(e);this.activeTimerIds.clear(),this.linkTimers=new WeakMap,this.iframeTimers=new WeakMap},queueEvent:function(e){if(this.destroyed)return;if(!(null==e?void 0:e.event_type)||!(null==e?void 0:e.link)||!(null==e?void 0:e.timestamp))return void console.error("MGTK: Invalid event, skipping");if(this.isDuplicateEvent(e))return void this.log("Duplicate event, skipping:",e.event_type);if(0===this.eventQueue.length&&(this.batchStartTime=Date.now()),this.eventQueue.push(e),this.log("Event queued:",e.event_type,`(queue: ${this.eventQueue.length})`),this.emitDebugEvent("event-queued",{event:e,queueSize:this.eventQueue.length}),this.batchTimer&&clearTimeout(this.batchTimer),this.eventQueue.length>=this.batchSize)return void this.flushBatch();const t=Date.now()-(this.batchStartTime||Date.now()),i=Math.max(0,this.maxBatchWait-t);if(i<=0)return void this.flushBatch();const s=Math.min(this.batchTimeout,i);this.batchTimer=setTimeout(()=>this.flushBatch(),s)},flushBatch:function(e=!1){if(0===this.eventQueue.length)return;this.batchTimer&&(clearTimeout(this.batchTimer),this.batchTimer=null);const t=[...this.eventQueue];this.eventQueue=[],this.batchStartTime=null,this.log("Flushing batch:",t.length,"events"),this.emitDebugEvent("batch-sending",{events:t,count:t.length,force:e}),this.requestQueue.push({events:t,force:e}),this.processRequestQueue()},processRequestQueue:function(){for(;this.requestQueue.length>0&&this.activeRequests<this.maxConcurrentRequests;){const e=this.requestQueue.shift();if(!e)break;this.activeRequests++,this.sendBatchedEvents(e.events,e.force).catch(e=>console.error("MGTK: Failed to send batch:",e)).finally(()=>{this.activeRequests--,this.requestQueue.length>0&&this.processRequestQueue()})}},sendBatchedEvents:async function(e,t=!1,i=!1){if(!(null==e?void 0:e.length))return;const s=e.filter(e=>(null==e?void 0:e.event_type)&&(null==e?void 0:e.link));if(!s.length)return;const r=s.reduce((e,t)=>
1{const i=t.page;return e[i]||(e[i]=[]),e[i].push(t),e},{}),n=[];for(const e of Object.keys(r)){const s=r[e],a=s.map(e=>{let t,i=e.link;try{const s=new URL(e.link);i=s.origin+s.pathname,s.search&&(t=s.search.substring(1))}catch(e){}const s={et:e.event_type,ts:e.timestamp,l:i};return t&&(s.q=t),e.pcuid&&(s.i=e.pcuid),e.pcu_type&&(s.pt=e.pcu_type),e.label&&(s.lb=e.label),e.catk_company&&(s.cc=e.catk_company),e.catk_type&&(s.ct=e.catk_type),e.catk_value&&(s.cv=e.catk_value),s});let o=s[0].referrer||"";if(o)try{const e=new URL(o);o=e.origin+e.pathname}catch(e){}let h,c=e;try{const t=new URL(e);c=t.origin+t.pathname,t.search&&(h=t.search.substring(1))}catch(e){}const l={p:c,r:o,v:this.version,ctx:this.isInIframe()?"i":"p",e:a};h&&(l.pq=h);const u=JSON.stringify(l);try{if(t&&navigator.sendBeacon){const e=new Blob([u],{type:"text/plain"});if(navigator.sendBeacon(this.apiUrl,e)){this.log("Batch sent via sendBeacon:",s.length,"events"),this.emitDebugEvent("batch-success",{events:s,count:s.length,method:"sendBeacon",payload:l}),n.push({success:!0,method:"sendBeacon"});continue}}const e=new AbortController,i=setTimeout(()=>e.abort(),this.fetchTimeout);try{const i=await fetch(this.apiUrl,{method:"POST",headers:{"Content-Type":"text/plain"},body:u,keepalive:t,mode:"cors",credentials:"omit",signal:e.signal});if(!i.ok)throw new Error(`HTTP error! status: ${i.status}`)}finally{clearTimeout(i)}this.log("Batch sent successfully:",s.length,"events"),this.emitDebugEvent("batch-success",{events:s,count:s.length,method:"fetch",payload:l}),n.push({success:!0,method:"fetch"})}catch(e){if(console.error("MGTK: Error sending batch:",e),this.emitDebugEvent("batch-error",{events:s,count:s.length,error:e.message,payload:l}),i||(this.failedQueue.push({events:s,attempts:0}),this.saveFailedEvents()),n.push({success:!1,error:e.message}),i)throw e}}return 1===n.length?n[0]:n},destroy:function(){this.log("Destroying MGTK instance"),this.destroyed=!0,this.flushBatch(!0),this.saveFailedEvents(),this.observer&&(this.observer.disconnect(),this.observer=null),this.mutationObserver&&(this.mutationObserver.disconnect(),this.mutationObserver=null),this._scrollHandler&&(window.removeEventListener("scroll",this._scrollHandler),this._scrollHandler=null),this._resizeHandler&&(window.removeEventListener("resize",this._resizeHandler),this._resizeHandler=null),this._messageHandler&&(window.removeEventListener("message",this._messageHandler),this._messageHandler=null),this._iframePcuListener&&(window.removeEventListener("message",this._iframePcuListener),this._iframePcuListener=null),this.clearAllTimers(),this.batchTimer&&(clearTimeout(this.batchTimer),this.batchTimer=null),this.eventQueue=[],this.requestQueue=[],this.failedQueue=[],this.activeRequests=0,this.batchStartTime=null,this.eventIds.clear(),this.trackedLinks=new WeakSet,this.trackedIframes=new WeakSet,this.iframesWithPcu=new WeakSet,this.visibleIframes.clear(),this._parentVisibility=null,this._embedImpTracked=!1,this.initialized=!1},noConflict:function(){return"undefined"!=typeof window&&window.MGTK===this&&(window.MGTK=this._previousMGTK),this}};if("undefined"!=typeof window&&(e._previousMGTK=window.MGTK),"undefined"!=typeof window){!window.MGTK_NO_AUTO_INIT&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>e.init()):e.init())}return e}();
2//# [email protected]

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.