PageSourceSearch

https://www.nd.nl/components/js/pubble.stats.min.js?app_name=web&version=260910-1

js nd.nl collected 2026-09-24 17:46:43 UTC 5,052 bytes, 1 lines download raw bytes

1"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value)})}return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};class Logger{static getSessionId(){let sessionId=localStorage.getItem("sessionId");if(!sessionId){sessionId=this.generateSessionId();localStorage.setItem("sessionId",sessionId)}return sessionId}static generateSessionId(){return[...Array(30)].map(()=>Math.random().toString(36)[2]).join("")}}const TrafficSourceDetector={searchEngines:[{name:"google",domains:["google.com","google.co.uk","google.","www.google."]},{name:"bing",domains:["bing.com","www.bing."]},{name:"yahoo",domains:["search.yahoo.","yahoo.com"]},{name:"duckduckgo",domains:["duckduckgo.com","www.duckduckgo."]},{name:"baidu",domains:["baidu.com","www.baidu."]},{name:"yandex",domains:["yandex.","www.yandex."]},{name:"kagi",domains:["kagi.com","www.kagi."]}],getTrackingInfo(){const urlParams=new URLSearchParams(window.location.search);const src=urlParams.get("pubble_source");const utmSource=urlParams.get("utm_source");const utmMedium=urlParams.get("utm_medium");const utmCampaign=urlParams.get("utm_campaign");const utmContent=urlParams.get("utm_content");return{src:src,utmSource:utmSource,utmMedium:utmMedium,utmCampaign:utmCampaign,utmContent:utmContent}},identifyReferrerSource(){if(!document.referrer){return"direct"}try{const referrerUrl=new URL(document.referrer);const currentDomain=window.location.hostname;if(referrerUrl.hostname===currentDomain){return"internal"}const domain=referrerUrl.hostname;for(const engine of this.searchEngines){if(engine.domains.some(d=>domain.indexOf(d)!==-1)){return engine.name}}if(domain.indexOf("facebook.com")!==-1||domain.indexOf("fb.com")!==-1)return"facebook";if(domain.indexOf("instagram.com")!==-1)return"instagram";if(domain.indexOf("twitter.com")!==-1||domain.indexOf("t.co")!==-1||domain.indexOf("x.com")!==-1)return"twitter";if(domain.indexOf("linkedin.com")!==-1)return"linkedin";if(domain.indexOf("reddit.com")!==-1)return"reddit";if(domain.indexOf("threads.net")!==-1)return"threads";if(domain.indexOf("bsky.app")!==-1||domain.indexOf("bluesky.social")!==-1)return"bluesky";return domain}catch(e){return"unknown"}},getTrackingData(){const{src:src,utmSource:utmSource,utmMedium:utmMedium,utmCampaign:utmCampaign,utmContent:utmContent}=this.getTrackingInfo();const referrerSource=this.identifyReferrerSource();let source="direct";let medium;let campaign;let content;if(src){const sourceMap={fb:"facebook",ig:"instagram",tw:"twitter",x:"twitter",li:"linkedin",rd:"reddit",th:"threads",bs:"bluesky",push:"push"};source=sourceMap[src]||src}else if(utmSource||utmCampaign){if(utmSource){source=utmSource}else{source=referrerSource}if(utmMedium)medium=utmMedium;if(utmCampaign)campaign=utmCampaign;if(utmContent)content=utmContent}else{source=referrerSource}return{traffic_source:source,traffic_medium:medium,campaign_name:campaign,campaign_content:content}}};const PubbleStats={url:"https://stats.pubble.cloud/ingest",postData:function(){return __awaiter(this,void 0,void 0,function*(){let fullHostname=window.location.hostname;let parts=fullHostname.split(".");let subdomain=parts.length>2?parts.slice(0,-2).join("."):"";let hostname=parts.slice(-2).join(".");let contentType=lureArticle.articleContentType;if(contentType=="null"){contentType=null}const script=document.currentScript;const scriptUrl=new URL(script.src,window.location.href);const appName=scriptUrl.searchParams.get("app_name");const trackingData=TrafficSourceDetector.getTrackingData();let data=Object.assign(Object.assign(Object.assign({subdomain:subdomain,hostname:hostname,user_session_id:Logger.getSessionId(),user_access_level:lureArticle.userAccessLevel,article_id:lureArticle.articleId,page_path:window.location.pathname,user_agent:navigator.userAgent,user_can_access:lureArticle.hasAccess,article_type:lureArticle.articleType,article_c
1ontent_type:contentType,api_key:pubbleEnv.pubbleContentApiHash,author_id:lureArticle.authorIds&&lureArticle.authorIds.length>0?lureArticle.authorIds[0]:null,app_name:appName,traffic_source:trackingData.traffic_source},trackingData.traffic_medium?{traffic_medium:trackingData.traffic_medium}:{}),trackingData.campaign_name?{campaign_name:trackingData.campaign_name}:{}),trackingData.campaign_content?{campaign_content:trackingData.campaign_content}:{});try{const response=yield fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(data)});if(!response.ok){throw new Error("HTTP error, status = "+response.status)}return yield response.json()}catch(error){console.error(error);return null}})}};PubbleStats.postData();

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.